<?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>197108</bug_id>
          
          <creation_ts>2019-04-19 10:56:45 -0700</creation_ts>
          <short_desc>Disable Ad Click Attribution in ephemeral sessions and make sure conversion requests use an ephemeral, stateless session</short_desc>
          <delta_ts>2019-04-19 17:03:48 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1528791</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-04-19 10:56:45 -0700</bug_when>
    <thetext>Ad Click Attribution should be disabled in ephemeral sessions and conversion requests should use an ephemeral, stateless session.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528792</commentid>
    <comment_count>1</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-04-19 10:56:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/49918702&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528881</commentid>
    <comment_count>2</comment_count>
      <attachid>367830</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-04-19 14:42:20 -0700</bug_when>
    <thetext>Created attachment 367830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528913</commentid>
    <comment_count>3</comment_count>
      <attachid>367830</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-04-19 15:19:18 -0700</bug_when>
    <thetext>Comment on attachment 367830
Patch

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

Seems mostly conceptually good to me.

&gt; Source/WebCore/loader/ResourceLoader.cpp:721
&gt; +    if (m_options.storedCredentialsPolicy == StoredCredentialsPolicy::DoNotUse
&gt; +        || m_options.storedCredentialsPolicy == StoredCredentialsPolicy::EphemeralStatelessCookieless)

This could just be if it&apos;s not equal to ::Use.

&gt; Source/WebKit/NetworkProcess/AdClickAttributionManager.cpp:183
&gt; -        return completionHandler(&quot;No stored Ad Click Attribution data.\n&quot;_s);
&gt; +        return completionHandler(&quot;\nNo stored Ad Click Attribution data.\n&quot;_s);

You probably want to put the first newline where this string is used.

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:593
&gt; +            NetworkSession* networkSession;

May as well initialize this to nullptr here, even though we know it will be initialized later.  Ideally we would have C++17&apos;s if-with-initializer.  I sent an email to webkit-dev.

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:366
&gt; +    if (!shouldBlockCookies)

This seems like a good job for the operator ||

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:984
&gt; +    initializeEphemeralStatelessCookielessSession(configuration);

We should probably lazily initialize this.  Hopefully most users will never need to even allocate this.

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1010
&gt; +    configuration.allowsCellularAccess = YES;

This needs to come from NetworkSessionCreationParameters or from the other sessions.  There&apos;s an internal client that needs to disallow cellular access and it should disallow it for this, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528927</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-04-19 15:34:33 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 367830 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=367830&amp;action=review
&gt; 
&gt; Seems mostly conceptually good to me.
&gt; 
&gt; &gt; Source/WebCore/loader/ResourceLoader.cpp:721
&gt; &gt; +    if (m_options.storedCredentialsPolicy == StoredCredentialsPolicy::DoNotUse
&gt; &gt; +        || m_options.storedCredentialsPolicy == StoredCredentialsPolicy::EphemeralStatelessCookieless)
&gt; 
&gt; This could just be if it&apos;s not equal to ::Use.

True. Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/AdClickAttributionManager.cpp:183
&gt; &gt; -        return completionHandler(&quot;No stored Ad Click Attribution data.\n&quot;_s);
&gt; &gt; +        return completionHandler(&quot;\nNo stored Ad Click Attribution data.\n&quot;_s);
&gt; 
&gt; You probably want to put the first newline where this string is used.

The reason I added this is after dumping the /cookies/resources/echo-cookies.php frame, I don&apos;t get a newline. And in the case of empty maps, I only output this line.

&gt; &gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:593
&gt; &gt; +            NetworkSession* networkSession;
&gt; 
&gt; May as well initialize this to nullptr here, even though we know it will be
&gt; initialized later.  Ideally we would have C++17&apos;s if-with-initializer.  I
&gt; sent an email to webkit-dev.

OK, I&apos;ll initialize to nullptr.

&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:366
&gt; &gt; +    if (!shouldBlockCookies)
&gt; 
&gt; This seems like a good job for the operator ||

Ah, yes. Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:984
&gt; &gt; +    initializeEphemeralStatelessCookielessSession(configuration);
&gt; 
&gt; We should probably lazily initialize this.  Hopefully most users will never
&gt; need to even allocate this.

OK, I&apos;ll try to do that. But if Ad Click Attribution is adopted, this session will be used quite a lot.

&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1010
&gt; &gt; +    configuration.allowsCellularAccess = YES;
&gt; 
&gt; This needs to come from NetworkSessionCreationParameters or from the other
&gt; sessions.  There&apos;s an internal client that needs to disallow cellular access
&gt; and it should disallow it for this, too.

OK. Hopefully I can pick it up when I do my lazy initialization.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528932</commentid>
    <comment_count>5</comment_count>
      <attachid>367848</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-04-19 15:55:52 -0700</bug_when>
    <thetext>Created attachment 367848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528934</commentid>
    <comment_count>6</comment_count>
      <attachid>367849</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-04-19 16:02:20 -0700</bug_when>
    <thetext>Created attachment 367849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528935</commentid>
    <comment_count>7</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-04-19 16:04:06 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #4)
&gt; (In reply to Alex Christensen from comment #3)
&gt; &gt; Comment on attachment 367830 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=367830&amp;action=review
&gt; &gt; 
&gt; &gt; Seems mostly conceptually good to me.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/loader/ResourceLoader.cpp:721
&gt; &gt; &gt; +    if (m_options.storedCredentialsPolicy == StoredCredentialsPolicy::DoNotUse
&gt; &gt; &gt; +        || m_options.storedCredentialsPolicy == StoredCredentialsPolicy::EphemeralStatelessCookieless)
&gt; &gt; 
&gt; &gt; This could just be if it&apos;s not equal to ::Use.
&gt; 
&gt; True. Will fix.
&gt; 
&gt; &gt; &gt; Source/WebKit/NetworkProcess/AdClickAttributionManager.cpp:183
&gt; &gt; &gt; -        return completionHandler(&quot;No stored Ad Click Attribution data.\n&quot;_s);
&gt; &gt; &gt; +        return completionHandler(&quot;\nNo stored Ad Click Attribution data.\n&quot;_s);
&gt; &gt; 
&gt; &gt; You probably want to put the first newline where this string is used.
&gt; 
&gt; The reason I added this is after dumping the
&gt; /cookies/resources/echo-cookies.php frame, I don&apos;t get a newline. And in the
&gt; case of empty maps, I only output this line.

I don&apos;t see a way to make the expect file to look nice with out this leading newline. Thoughts?

&gt; &gt; &gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:593
&gt; &gt; &gt; +            NetworkSession* networkSession;
&gt; &gt; 
&gt; &gt; May as well initialize this to nullptr here, even though we know it will be
&gt; &gt; initialized later.  Ideally we would have C++17&apos;s if-with-initializer.  I
&gt; &gt; sent an email to webkit-dev.
&gt; 
&gt; OK, I&apos;ll initialize to nullptr.
&gt; 
&gt; &gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:366
&gt; &gt; &gt; +    if (!shouldBlockCookies)
&gt; &gt; 
&gt; &gt; This seems like a good job for the operator ||
&gt; 
&gt; Ah, yes. Will fix.

I did it with || in both places.

&gt; &gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:984
&gt; &gt; &gt; +    initializeEphemeralStatelessCookielessSession(configuration);
&gt; &gt; 
&gt; &gt; We should probably lazily initialize this.  Hopefully most users will never
&gt; &gt; need to even allocate this.
&gt; 
&gt; OK, I&apos;ll try to do that. But if Ad Click Attribution is adopted, this
&gt; session will be used quite a lot.

Can I really lazy initialize this since I need the configuration parameters that&apos;s sent to the constructor?

&gt; &gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1010
&gt; &gt; &gt; +    configuration.allowsCellularAccess = YES;
&gt; &gt; 
&gt; &gt; This needs to come from NetworkSessionCreationParameters or from the other
&gt; &gt; sessions.  There&apos;s an internal client that needs to disallow cellular access
&gt; &gt; and it should disallow it for this, too.
&gt; 
&gt; OK. Hopefully I can pick it up when I do my lazy initialization.

I&apos;ve changed to set this according to the parameters. But no last initialization yet. Please advise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528936</commentid>
    <comment_count>8</comment_count>
      <attachid>367849</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-04-19 16:10:25 -0700</bug_when>
    <thetext>Comment on attachment 367849
Patch

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

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:218
&gt; +        m_task = [cocoaSession.m_ephemeralStatelessCookielessSession dataTaskWithRequest:nsRequest];

To lazily initialize m_ephemeralStatelessCookielessSession, just put the call to initializeEphemeralStatelessCookielessSession before this line.  Then inside initializeEphemeralStatelessCookielessSession early return if m_ephemeralStatelessCookielessSession is non null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528941</commentid>
    <comment_count>9</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-04-19 16:24:28 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #8)
&gt; Comment on attachment 367849 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=367849&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:218
&gt; &gt; +        m_task = [cocoaSession.m_ephemeralStatelessCookielessSession dataTaskWithRequest:nsRequest];
&gt; 
&gt; To lazily initialize m_ephemeralStatelessCookielessSession, just put the
&gt; call to initializeEphemeralStatelessCookielessSession before this line. 
&gt; Then inside initializeEphemeralStatelessCookielessSession early return if
&gt; m_ephemeralStatelessCookielessSession is non null.

But initializeEphemeralStatelessCookielessSession() takes an NSURLSessionConfiguration.

Do you mean I should instead pick up the configuration from one of the other, already existing sessions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528942</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-04-19 16:25:54 -0700</bug_when>
    <thetext>Right.  From m_statelessSession</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528948</commentid>
    <comment_count>11</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-04-19 16:37:22 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #10)
&gt; Right.  From m_statelessSession

Got it. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528949</commentid>
    <comment_count>12</comment_count>
      <attachid>367852</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-04-19 16:37:57 -0700</bug_when>
    <thetext>Created attachment 367852
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528964</commentid>
    <comment_count>13</comment_count>
      <attachid>367852</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-19 17:00:31 -0700</bug_when>
    <thetext>Comment on attachment 367852
Patch for landing

Clearing flags on attachment: 367852

Committed r244475: &lt;https://trac.webkit.org/changeset/244475&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528965</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-19 17:00:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528967</commentid>
    <comment_count>15</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-04-19 17:03:48 -0700</bug_when>
    <thetext>Thanks for landing it for me, Chris! If there&apos;s any problem with the patch, send it to me, not Chris. He landed it for me because the commit queue is currently broken.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367830</attachid>
            <date>2019-04-19 14:42:20 -0700</date>
            <delta_ts>2019-04-19 15:55:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197108-20190419144219.patch</filename>
            <type>text/plain</type>
            <size>58513</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmUwNDhmYzNkY2E1YzBk
NzZjMmZlNDI1MTM2MTc0NDNlNDE3NzMxYS4uMTM2MjNlYTUwYjgxYmI3MjNiZjc0ZjI3Y2I0NWU4
MDRkODkyYTI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA0LTE5ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIERpc2FibGUgQWQgQ2xp
Y2sgQXR0cmlidXRpb24gaW4gZXBoZW1lcmFsIHNlc3Npb25zIGFuZCBtYWtlIHN1cmUgY29udmVy
c2lvbiByZXF1ZXN0cyB1c2UgYW4gZXBoZW1lcmFsLCBzdGF0ZWxlc3Mgc2Vzc2lvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MTA4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS80OTkxODcwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24v
Y29udmVyc2lvbi1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi5odG1sCisgICAgICAgICAg
ICAgICBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zdG9yZS1kaXNhYmxlZC1pbi1lcGhl
bWVyYWwtc2Vzc2lvbi5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpwYXJzZUFkQ2xpY2tBdHRy
aWJ1dGlvbiBjb25zdCk6CisgICAgICAgICAgICBFYXJseSByZXR1cm4gZm9yIGVwaGVtZXJhbCBz
ZXNzaW9ucy4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKToKKyAg
ICAgICAgICAgIE5vdyByZXR1cm5zIGZhbHNlIGZvciBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTpF
cGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaDoKKyAgICAgICAgICAgIEFkZGVkIGVudW0gdmFsdWUg
RXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzcy4KKwogMjAxOS0wNC0xOCAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvcmluZzogUHVsbCBhbGwgZnVs
bHNjcmVlbiBjb2RlIG91dCBvZiBEb2N1bWVudCBhbmQgaW50byBpdHMgb3duIGhlbHBlciBjbGFz
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBiNzdlM2Y2ZmY4MjYxYzBhNDhhMmVmZjVhMzVmMjJkOTk2N2Y3MjA0Li4w
Zjg0NTQ1YjFhYTY1NGYwYzMxZmEzOThlYTdiMjI4ZjEwOWQ1MjljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ0IEBACisyMDE5LTA0LTE5ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29t
PgorCisgICAgICAgIERpc2FibGUgQWQgQ2xpY2sgQXR0cmlidXRpb24gaW4gZXBoZW1lcmFsIHNl
c3Npb25zIGFuZCBtYWtlIHN1cmUgY29udmVyc2lvbiByZXF1ZXN0cyB1c2UgYW4gZXBoZW1lcmFs
LCBzdGF0ZWxlc3Mgc2Vzc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk3MTA4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80OTkxODcwMj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGludHJvZHVjZXMgYSBuZXcgTlNVUkxTZXNzaW9uIGluIFdlYktpdDo6TmV0d29ya1Nlc3Npb25D
b2NvYSBjYWxsZWQKKyAgICAgICAgbV9lcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzU2Vzc2lv
bi4gQXMgaXRzIG5hbWUgaW1wbGllcywgaXQncyBlcGhlbWVyYWwsIAorICAgICAgICBzdGF0ZWxl
c3MsIGFuZCBoYXMgYSBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lOZXZlciBjb29raWUgcG9saWN5
LgorCisgICAgICAgIFRoZSBuZXcgc2Vzc2lvbiBjYW4gYmUgaW52b2tlZCB3aXRoIHRoZSBuZXcg
ZW51bSB2YWx1ZSBvZgorICAgICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBj
YWxsZWQgRXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzcy4KKworICAgICAgICBXZWJLaXQ6OkFk
Q2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmZpcmVDb252ZXJzaW9uUmVxdWVzdCgpIG1ha2VzIHVz
ZSBvZgorICAgICAgICB0aGUgbmV3IHNlc3Npb24gZm9yIGl0cyBjb252ZXJzaW9uIHJlcXVlc3Rz
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyBzdXJlIHRoYXQgQWQgQ2xpY2sgQXR0
cmlidXRpb25zIGNhbm5vdCBiZSBzdG9yZWQgaW4KKyAgICAgICAgZXBoZW1lcmFsIHNlc3Npb25z
IGFuZCBhbHJlYWR5IHN0b3JlZCBhdHRyaWJ1dGlvbnMgY2Fubm90IGJlIGNvbnZlcnRlZCBpbgor
ICAgICAgICBlcGhlbWVyYWwgc2Vzc2lvbnMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9B
ZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWRDbGlja0F0
dHJpYnV0aW9uTWFuYWdlcjo6ZmlyZUNvbnZlcnNpb25SZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Rh
dGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0RhdGFUYXNrQ29jb2E6On5OZXR3b3JrRGF0YVRhc2tDb2NvYSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjppbml0aWFsaXplRXBoZW1lcmFs
U3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbkNvY29hOjppbnZhbGlkYXRlQW5kQ2FuY2VsKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmg6CisKIDIwMTktMDQtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBJbXByb3ZlIGRldGVjdGlvbiBvZiB3aGVuIHdlYiB2
aWV3cyBnbyB0byBiYWNrZ3JvdW5kIC8gZm9yZWdyb3VuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBbmNob3JFbGVtZW50LmNwcAppbmRleCA1YTFkY2U4YzU1ZGYzOTZjZTRhZjdkNTk0ODExZDY4
N2NkNWUyM2FkLi42NWE1OWIyZGEzM2MwMmVjOWUzNTVkODE0YWE4MDY3NzM0NGM3MGQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtNDA1LDcgKzQwNSw5
IEBAIE9wdGlvbmFsPEFkQ2xpY2tBdHRyaWJ1dGlvbj4gSFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNl
QWRDbGlja0F0dHJpYnV0aW9uKCkgY29uc3QKICAgICB1c2luZyBTb3VyY2UgPSBBZENsaWNrQXR0
cmlidXRpb246OlNvdXJjZTsKICAgICB1c2luZyBEZXN0aW5hdGlvbiA9IEFkQ2xpY2tBdHRyaWJ1
dGlvbjo6RGVzdGluYXRpb247CiAKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuYWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCgpIHx8ICFVc2VyR2VzdHVy
ZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCisgICAgaWYgKGRvY3VtZW50KCku
c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKQorICAgICAgICB8fCAhUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5hZENsaWNrQXR0cmlidXRpb25FbmFibGVkKCkKKyAgICAg
ICAgfHwgIVVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIGlmICghaGFzQXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihhZGNhbXBhaWduaWRBdHRyKSAmJiAhaGFzQXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihhZGRlc3RpbmF0aW9uQXR0cikpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA1NDg5OGVmZTEyNmUyZTUzOWNkMzFjOTRmYzg3YjI1
NTcwNmRmYTNiLi5kMGM5YzNkMjdhYzc0Yjk3ZDg3MmY1ZDRmN2U0MjIzOTgxMWQzMzE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTcxNyw3ICs3MTcsOCBA
QCB2b2lkIFJlc291cmNlTG9hZGVyOjpjYW5ub3RTaG93VVJMKFJlc291cmNlSGFuZGxlKikKIAog
Ym9vbCBSZXNvdXJjZUxvYWRlcjo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKQogewotICAg
IGlmIChtX29wdGlvbnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3k6OkRvTm90VXNlKQorICAgIGlmIChtX29wdGlvbnMuc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgPT0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlCisgICAgICAgIHx8IG1f
b3B0aW9ucy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eTo6RXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kuaAppbmRleCAxMzZjZDcxZTFlYWI5NTBkYzlmY2UyNDEzYjYzODk4MDNhN2M3NjdkLi4x
NDk1YTA4MjE4MTVmMzNiZGZkOWM2NWQ3YjQzNDk0OWE2MjVhYzU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N0b3JlZENyZWRlbnRpYWxzUG9saWN5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TdG9yZWRDcmVkZW50aWFsc1BvbGlj
eS5oCkBAIC0yNyw5ICsyNywxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xh
c3MgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgOiBib29sIHsKK2VudW0gY2xhc3MgU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgOiB1aW50OF90IHsKICAgICBEb05vdFVzZSwKICAgICBVc2UsCisgICAg
RXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzcwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmli
dXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0
dHJpYnV0aW9uTWFuYWdlci5jcHAKaW5kZXggNDUzNThhOTYxMGE0OGNlN2ZkMzBlZjAyODRlYWZl
ZjRlNjdmNWU1ZC4uYzc5OTc5OTBjYjYzMTJlZThjMGZhNTFjNDU4YjQwNzFkZmU4MzhlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25N
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRy
aWJ1dGlvbk1hbmFnZXIuY3BwCkBAIC0xMTksOSArMTE5LDggQEAgdm9pZCBBZENsaWNrQXR0cmli
dXRpb25NYW5hZ2VyOjpmaXJlQ29udmVyc2lvblJlcXVlc3QoY29uc3QgQWRDbGlja0F0dHJpYnV0
aW9uJgogICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QgPSByZXF1ZXN0OwogICAgIGxvYWRQYXJh
bWV0ZXJzLnNvdXJjZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29udmVyc2lvblJl
ZmVycmVyVVJMKTsKICAgICBsb2FkUGFyYW1ldGVycy5wYXJlbnRQSUQgPSBwcmVzZW50aW5nQXBw
bGljYXRpb25QSUQoKTsKLSAgICAvLyBGSVhNRTogU3dpdGNoIHRvIHRoZSB1c2Ugb2YgYW4gZXBo
ZW1lcmFsLCBzdGF0ZWxlc3Mgc2Vzc2lvbi4KICAgICBsb2FkUGFyYW1ldGVycy5zZXNzaW9uSUQg
PSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwotICAgIGxvYWRQYXJhbWV0ZXJz
LnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90
VXNlOworICAgIGxvYWRQYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gU3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3M7CiAgICAgbG9h
ZFBhcmFtZXRlcnMub3B0aW9ucyA9IG9wdGlvbnM7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxk
Q2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCA9IHRydWU7CiAgICAgbG9hZFBhcmFt
ZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MgPSBmYWxzZTsKQEAgLTE4MSw3
ICsxODAsNyBAQCB2b2lkIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmNsZWFyKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZAogdm9pZCBBZENsaWNrQXR0cmlidXRp
b25NYW5hZ2VyOjp0b1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgaWYgKG1fdW5jb252ZXJ0ZWRBZENsaWNrQXR0
cmlidXRpb25NYXAuaXNFbXB0eSgpICYmIG1fY29udmVydGVkQWRDbGlja0F0dHJpYnV0aW9uTWFw
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCJObyBzdG9yZWQg
QWQgQ2xpY2sgQXR0cmlidXRpb24gZGF0YS5cbiJfcyk7CisgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcigiXG5ObyBzdG9yZWQgQWQgQ2xpY2sgQXR0cmlidXRpb24gZGF0YS5cbiJfcyk7
CiAKICAgICB1bnNpZ25lZCB1bmNvbnZlcnRlZEF0dHJpYnV0aW9uTnVtYmVyID0gMDsKICAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZENoZWNrZXIuaAppbmRleCA4MjlmN2MyMDI0ODViNzNhYTZiOTM4NjQ4YmU5
Zjk2ZDc1YjE3ZDVkLi4zMWQxMWMzYThhZWNiMmFhZmQ0OWU1YzMxMDM5OGUwYWMxNmRkZWU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5Owogc3RydWN0
IENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogZW51
bSBjbGFzcyBQcmVmbGlnaHRQb2xpY3kgOiB1aW50OF90OwotZW51bSBjbGFzcyBTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5
IDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNzhjZWJkNGUwZmZlZjAzMmE1YmY5
ZjU4ZjFlNzQ2MGNiYjI5MWY5Mi4uODljMjk4NWQwZTIyZWNhYTZkMGMzMTY1N2M3NDY5Yjc1Yzdj
NDFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aApAQCAtNzcsNyArNzcsNyBAQCBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgU1dTZXJ2ZXI7CiBlbnVtIGNsYXNzIEluY2x1ZGVIdHRwT25s
eUNvb2tpZXMgOiBib29sOwotZW51bSBjbGFzcyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSA6IGJv
b2w7CitlbnVtIGNsYXNzIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IDogdWludDhfdDsKIHN0cnVj
dCBDbGllbnRPcmlnaW47CiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CiBzdHJ1Y3Qg
U2VjdXJpdHlPcmlnaW5EYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggODc2NDY4OGVlZjA1NmE0NmU2
MmExMjcyMjNmMTE3YTUxZjQxMDZkYS4uMWJkZDViZDMwNWRhZTdjMjAzNzMzMWY2YzY1NDY0NWE4
ZDk2NzRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04Miw3ICs4Miw3IEBAIG1lc3NhZ2VzIC0+IE5l
dHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDYW5jZWxQcmVwYXJlVG9TdXNwZW5k
KCkKICAgICBQcm9jZXNzRGlkUmVzdW1lKCkKIAotICAgIFByZWNvbm5lY3RUbyhVUkwgdXJsLCBl
bnVtOmJvb2wgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kpOworICAgIFByZWNvbm5lY3RUbyhVUkwgdXJsLCBlbnVtOnVpbnQ4X3QgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogCiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBDbGVhclByZXZhbGVudFJl
c291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gcmVzb3VyY2VEb21haW4pIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZjE0NTlkN2Rj
MmU3ZjEwMzg1ZWZiYmJiMTk1M2JjZjVkNzVhNmM1ZC4uMTJkMTg3ZmJmZDdiNTgyZWIzMWY4YmU4
NjRkMjRkYTEwNGE1NzUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTg2LDEzICs1ODYsMTUgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICArK21fcmVkaXJlY3RDb3VudDsKIAogICAgIGF1dG8m
IHJlZGlyZWN0VVJMID0gcmVkaXJlY3RSZXF1ZXN0LnVybCgpOwotICAgIGlmIChhdXRvIGFkQ2xp
Y2tDb252ZXJzaW9uID0gQWRDbGlja0F0dHJpYnV0aW9uOjpwYXJzZUNvbnZlcnNpb25SZXF1ZXN0
KHJlZGlyZWN0VVJMKSkgewotICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWRpcmVjdERvbWFp
biB7IHJlZGlyZWN0VVJMIH07Ci0gICAgICAgIGF1dG8mIGZpcnN0UGFydHlVUkwgPSByZWRpcmVj
dFJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKTsKLSAgICAgICAgTmV0d29ya1Nlc3Npb24q
IG5ldHdvcmtTZXNzaW9uOwotICAgICAgICAvLyBUaGUgcmVkaXJlY3QgaGFzIHRvIGJlIGRvbmUg
YnkgdGhlIHNhbWUgcmVnaXN0cmFibGUgZG9tYWluIGFuZCBpdCBoYXMgdG8gYmUgYSB0aGlyZC1w
YXJ0eSByZXF1ZXN0LgotICAgICAgICBpZiAocmVkaXJlY3REb21haW4ubWF0Y2hlcyhyZXF1ZXN0
LnVybCgpKSAmJiAhcmVkaXJlY3REb21haW4ubWF0Y2hlcyhmaXJzdFBhcnR5VVJMKSAmJiAobmV0
d29ya1Nlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKCkpKSkKLSAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jb252ZXJ0QWRD
bGlja0F0dHJpYnV0aW9uKEFkQ2xpY2tBdHRyaWJ1dGlvbjo6U291cmNlIHsgV1RGTW92ZShyZWRp
cmVjdERvbWFpbikgfSwgQWRDbGlja0F0dHJpYnV0aW9uOjpEZXN0aW5hdGlvbiB7IGZpcnN0UGFy
dHlVUkwgfSwgV1RGTW92ZSgqYWRDbGlja0NvbnZlcnNpb24pKTsKKyAgICBpZiAoIXNlc3Npb25J
RCgpLmlzRXBoZW1lcmFsKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gYWRDbGlja0NvbnZlcnNpb24g
PSBBZENsaWNrQXR0cmlidXRpb246OnBhcnNlQ29udmVyc2lvblJlcXVlc3QocmVkaXJlY3RVUkwp
KSB7CisgICAgICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWRpcmVjdERvbWFpbiB7IHJlZGly
ZWN0VVJMIH07CisgICAgICAgICAgICBhdXRvJiBmaXJzdFBhcnR5VVJMID0gcmVkaXJlY3RSZXF1
ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCk7CisgICAgICAgICAgICBOZXR3b3JrU2Vzc2lvbiog
bmV0d29ya1Nlc3Npb247CisgICAgICAgICAgICAvLyBUaGUgcmVkaXJlY3QgaGFzIHRvIGJlIGRv
bmUgYnkgdGhlIHNhbWUgcmVnaXN0cmFibGUgZG9tYWluIGFuZCBpdCBoYXMgdG8gYmUgYSB0aGly
ZC1wYXJ0eSByZXF1ZXN0LgorICAgICAgICAgICAgaWYgKHJlZGlyZWN0RG9tYWluLm1hdGNoZXMo
cmVxdWVzdC51cmwoKSkgJiYgIXJlZGlyZWN0RG9tYWluLm1hdGNoZXMoZmlyc3RQYXJ0eVVSTCkg
JiYgKG5ldHdvcmtTZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCgpKSkpCisgICAgICAgICAgICAgICAgbmV0d29ya1Nlc3Npb24t
PmNvbnZlcnRBZENsaWNrQXR0cmlidXRpb24oQWRDbGlja0F0dHJpYnV0aW9uOjpTb3VyY2UgeyBX
VEZNb3ZlKHJlZGlyZWN0RG9tYWluKSB9LCBBZENsaWNrQXR0cmlidXRpb246OkRlc3RpbmF0aW9u
IHsgZmlyc3RQYXJ0eVVSTCB9LCBXVEZNb3ZlKCphZENsaWNrQ29udmVyc2lvbikpOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgYXV0byBtYXhBZ2VDYXAgPSB2YWxpZGF0ZUNhY2hlRW50cnlGb3JN
YXhBZ2VDYXBWYWxpZGF0aW9uKHJlcXVlc3QsIHJlZGlyZWN0UmVxdWVzdCwgcmVkaXJlY3RSZXNw
b25zZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCAxZDBhNTlmNzhjNjQyM2M0N2U5YTc2MWU4
NTAyMmM4YjgyYzdiYzZkLi4zOThhYzUyMTUzMzQzNDE5Y2ZlNDc0OGU2YTM4OTc5MjhhM2VkZjlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTE5MSw5ICsxOTEsMTAgQEAgTmV0d29ya0RhdGFU
YXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBO
ZXR3b3JrRGF0YVQKICAgICB9CiAjZW5kaWYKIAotICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVz
ID0gZmFsc2U7CisgICAgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMgPSBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3Rh
dGVsZXNzQ29va2llbGVzczsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIHNob3VsZEJsb2NrQ29va2llcyA9IHNlc3Npb24ubmV0d29ya1N0b3JhZ2VTZXNzaW9uKCku
c2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIGZyYW1lSUQsIHBhZ2VJRCk7CisgICAgaWYgKCFz
aG91bGRCbG9ja0Nvb2tpZXMpCisgICAgICAgIHNob3VsZEJsb2NrQ29va2llcyA9IHNlc3Npb24u
bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkuc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIGZyYW1l
SUQsIHBhZ2VJRCk7CiAjZW5kaWYKICAgICByZXN0cmljdFJlcXVlc3RSZWZlcnJlclRvT3JpZ2lu
SWZOZWVkZWQocmVxdWVzdCwgc2hvdWxkQmxvY2tDb29raWVzKTsKIApAQCAtMjAxLDE2ICsyMDIs
MjUgQEAgTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtT
ZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVQKICAgICBhcHBseVNuaWZmaW5nUG9saWNpZXNB
bmRCaW5kUmVxdWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQobnNSZXF1ZXN0LCBzaG91bGRDb250ZW50
U25pZmYgPT0gV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQgJiYg
IXVybC5pc0xvY2FsRmlsZSgpLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiA9PSBXZWJDb3Jl
OjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmYpOwogCiAgICAgYXV0byYgY29j
b2FTZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSY+KG1fc2Vzc2lvbi5n
ZXQoKSk7Ci0gICAgaWYgKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5OjpVc2UpIHsKKyAgICBzd2l0Y2ggKHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5KSB7CisgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNl
OgogICAgICAgICBtX3Rhc2sgPSBbY29jb2FTZXNzaW9uLm1fc2Vzc2lvbldpdGhDcmVkZW50aWFs
U3RvcmFnZSBkYXRhVGFza1dpdGhSZXF1ZXN0Om5zUmVxdWVzdF07CiAgICAgICAgIEFTU0VSVCgh
Y29jb2FTZXNzaW9uLm1fZGF0YVRhc2tNYXBXaXRoQ3JlZGVudGlhbHMuY29udGFpbnMoW21fdGFz
ayB0YXNrSWRlbnRpZmllcl0pKTsKICAgICAgICAgY29jb2FTZXNzaW9uLm1fZGF0YVRhc2tNYXBX
aXRoQ3JlZGVudGlhbHMuYWRkKFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCB0aGlzKTsKICAgICAg
ICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBDcmVhdGluZyBzdGF0ZWZ1bCBOZXR3b3JrRGF0
YVRhc2sgd2l0aCBVUkwgJXMiLCBbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVS
TC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKLSAgICB9IGVsc2UgeworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZToK
ICAgICAgICAgbV90YXNrID0gW2NvY29hU2Vzc2lvbi5tX3N0YXRlbGVzc1Nlc3Npb24gZGF0YVRh
c2tXaXRoUmVxdWVzdDpuc1JlcXVlc3RdOwogICAgICAgICBBU1NFUlQoIWNvY29hU2Vzc2lvbi5t
X2RhdGFUYXNrTWFwV2l0aG91dFN0YXRlLmNvbnRhaW5zKFttX3Rhc2sgdGFza0lkZW50aWZpZXJd
KSk7CiAgICAgICAgIGNvY29hU2Vzc2lvbi5tX2RhdGFUYXNrTWFwV2l0aG91dFN0YXRlLmFkZChb
bV90YXNrIHRhc2tJZGVudGlmaWVyXSwgdGhpcyk7CiAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lv
biwgIiVsbHUgQ3JlYXRpbmcgc3RhdGVsZXNzIE5ldHdvcmtEYXRhVGFzayB3aXRoIFVSTCAlcyIs
IFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBuc1JlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLlVU
RjhTdHJpbmcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzOgorICAgICAgICBtX3Rh
c2sgPSBbY29jb2FTZXNzaW9uLm1fZXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb24g
ZGF0YVRhc2tXaXRoUmVxdWVzdDpuc1JlcXVlc3RdOworICAgICAgICBBU1NFUlQoIWNvY29hU2Vz
c2lvbi5tX2RhdGFUYXNrTWFwRXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzcy5jb250YWlucyhb
bV90YXNrIHRhc2tJZGVudGlmaWVyXSkpOworICAgICAgICBjb2NvYVNlc3Npb24ubV9kYXRhVGFz
a01hcEVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3MuYWRkKFttX3Rhc2sgdGFza0lkZW50aWZp
ZXJdLCB0aGlzKTsKKyAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBDcmVhdGluZyBl
cGhlbWVyYWwsIHN0YXRlbGVzcywgY29va2llbGVzcyBOZXR3b3JrRGF0YVRhc2sgd2l0aCBVUkwg
JXMiLCBbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmlu
Zy5VVEY4U3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKHNob3VsZFBy
ZWNvbm5lY3RPbmx5ID09IFByZWNvbm5lY3RPbmx5OjpZZXMpIHsKQEAgLTI1MCwxMiArMjYwLDE5
IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjp+TmV0d29ya0RhdGFUYXNrQ29jb2EoKQogICAgICAg
ICByZXR1cm47CiAKICAgICBhdXRvJiBjb2NvYVNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3Jr
U2Vzc2lvbkNvY29hJj4obV9zZXNzaW9uLmdldCgpKTsKLSAgICBpZiAobV9zdG9yZWRDcmVkZW50
aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKSB7Cisg
ICAgc3dpdGNoIChtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5KSB7CisgICAgY2FzZSBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOgogICAgICAgICBBU1NFUlQoY29jb2FTZXNz
aW9uLm1fZGF0YVRhc2tNYXBXaXRoQ3JlZGVudGlhbHMuZ2V0KFttX3Rhc2sgdGFza0lkZW50aWZp
ZXJdKSA9PSB0aGlzKTsKICAgICAgICAgY29jb2FTZXNzaW9uLm1fZGF0YVRhc2tNYXBXaXRoQ3Jl
ZGVudGlhbHMucmVtb3ZlKFttX3Rhc2sgdGFza0lkZW50aWZpZXJdKTsKLSAgICB9IGVsc2Ugewor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
OjpEb05vdFVzZToKICAgICAgICAgQVNTRVJUKGNvY29hU2Vzc2lvbi5tX2RhdGFUYXNrTWFwV2l0
aG91dFN0YXRlLmdldChbbV90YXNrIHRhc2tJZGVudGlmaWVyXSkgPT0gdGhpcyk7CiAgICAgICAg
IGNvY29hU2Vzc2lvbi5tX2RhdGFUYXNrTWFwV2l0aG91dFN0YXRlLnJlbW92ZShbbV90YXNrIHRh
c2tJZGVudGlmaWVyXSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3M6CisgICAgICAg
IEFTU0VSVChjb2NvYVNlc3Npb24ubV9kYXRhVGFza01hcEVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tp
ZWxlc3MuZ2V0KFttX3Rhc2sgdGFza0lkZW50aWZpZXJdKSA9PSB0aGlzKTsKKyAgICAgICAgY29j
b2FTZXNzaW9uLm1fZGF0YVRhc2tNYXBFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzLnJlbW92
ZShbbV90YXNrIHRhc2tJZGVudGlmaWVyXSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApA
QCAtMzQ1LDcgKzM2Miw5IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmCiAgICAgICAgIHJlcXVl
c3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMocmVxdWVzdC51cmwoKSk7CiAKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzID0g
bV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS5zaG91bGRCbG9ja0Nvb2tpZXMocmVx
dWVzdCwgbV9mcmFtZUlELCBtX3BhZ2VJRCk7CisgICAgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMg
PSBtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzOworICAgIGlmICghc2hvdWxkQmxv
Y2tDb29raWVzKQorICAgICAgICBzaG91bGRCbG9ja0Nvb2tpZXMgPSBtX3Nlc3Npb24tPm5ldHdv
cmtTdG9yYWdlU2Vzc2lvbigpLnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBtX2ZyYW1lSUQs
IG1fcGFnZUlEKTsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBpZiAobV9zZXNzaW9u
LT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQogICAgICAgICBSRUxFQVNFX0xPR19JRihp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNr
Q29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjog
cGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogJXMgY29va2llcyBm
b3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQsIG1fZnJhbWVJRCwgKHVuc2lnbmVk
IGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIChzaG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxv
Y2tpbmciIDogIk5vdCBibG9ja2luZyIpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EuaAppbmRleCA0YjUwOGNiODA1YWFjM2Q2OWRjNzU5ZmVjZDBl
ZTJiM2IxMDc1ODBkLi5hYmUzZThmODA5ODRjOTVjODZjMjU0ZTEyYmMyNWRlMjU5Mjk0OGQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EuaApAQCAtMjcsNiArMjcsNyBAQAogCiBPQkpDX0NMQVNTIE5TRGF0YTsK
IE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uOworT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25Db25maWd1
cmF0aW9uOwogT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2s7CiBPQkpDX0NMQVNT
IE5TT3BlcmF0aW9uUXVldWU7CiBPQkpDX0NMQVNTIFdLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZTsK
QEAgLTQ3LDYgKzQ4LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8TmV0d29ya1Nlc3Npb24+
IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
JiYpOwogICAgIH5OZXR3b3JrU2Vzc2lvbkNvY29hKCk7CiAKKyAgICB2b2lkIGluaXRpYWxpemVF
cGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzU2Vzc2lvbihOU1VSTFNlc3Npb25Db25maWd1cmF0
aW9uKik7CisKICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRp
ZmllcigpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgc291cmNlQXBwbGljYXRpb25TZWNvbmRh
cnlJZGVudGlmaWVyKCkgY29uc3Q7CiAgICAgLy8gTXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBO
ZXR3b3JrU2Vzc2lvbiBoYXMgYmVlbiBjcmVhdGVkLgpAQCAtNzcsMTIgKzgwLDE1IEBAIHByaXZh
dGU6CiAKICAgICBIYXNoTWFwPE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciwg
TmV0d29ya0RhdGFUYXNrQ29jb2EqPiBtX2RhdGFUYXNrTWFwV2l0aENyZWRlbnRpYWxzOwogICAg
IEhhc2hNYXA8TmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyLCBOZXR3b3JrRGF0
YVRhc2tDb2NvYSo+IG1fZGF0YVRhc2tNYXBXaXRob3V0U3RhdGU7CisgICAgSGFzaE1hcDxOZXR3
b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIE5ldHdvcmtEYXRhVGFza0NvY29hKj4g
bV9kYXRhVGFza01hcEVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3M7CiAgICAgSGFzaE1hcDxO
ZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIERvd25sb2FkSUQ+IG1fZG93bmxv
YWRNYXA7CiAKICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uPiBtX3Nlc3Npb25XaXRoQ3JlZGVu
dGlhbFN0b3JhZ2U7CiAgICAgUmV0YWluUHRyPFdLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZT4gbV9z
ZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlRGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPE5TVVJM
U2Vzc2lvbj4gbV9zdGF0ZWxlc3NTZXNzaW9uOwogICAgIFJldGFpblB0cjxXS05ldHdvcmtTZXNz
aW9uRGVsZWdhdGU+IG1fc3RhdGVsZXNzU2Vzc2lvbkRlbGVnYXRlOworICAgIFJldGFpblB0cjxO
U1VSTFNlc3Npb24+IG1fZXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb247CisgICAg
UmV0YWluUHRyPFdLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZT4gbV9lcGhlbWVyYWxTdGF0ZWxlc3ND
b29raWVsZXNzU2Vzc2lvbkRlbGVnYXRlOwogCiAgICAgU3RyaW5nIG1fYm91bmRJbnRlcmZhY2VJ
ZGVudGlmaWVyOwogICAgIFN0cmluZyBtX3NvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCAyNDc1OGZmYzAzYTM4OTA5MmEwNGRlMWY5NWM1Yjgy
NDg2M2Y2YzU2Li4zYzZjNGMyM2I3ZWViZjk3OWYyMTM3YjdjNzA5YzJhOWRiMTFjYTllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCkBAIC05ODEsNiArOTgxLDggQEAgTmV0d29ya1Nlc3Npb25Db2NvYTo6
TmV0d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdv
cmsKICAgICBtX3N0YXRlbGVzc1Nlc3Npb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS05ldHdvcmtT
ZXNzaW9uRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoTmV0d29ya1Nlc3Npb246KnRoaXMgd2l0aENy
ZWRlbnRpYWxzOmZhbHNlXSk7CiAgICAgbV9zdGF0ZWxlc3NTZXNzaW9uID0gW05TVVJMU2Vzc2lv
biBzZXNzaW9uV2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNf
Y2FzdDxpZD4obV9zdGF0ZWxlc3NTZXNzaW9uRGVsZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6
W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07CiAKKyAgICBpbml0aWFsaXplRXBoZW1lcmFs
U3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb24oY29uZmlndXJhdGlvbik7CisKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSA9IHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAg
ICBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBwYXJh
bWV0ZXJzLnNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgPyBT
aG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgOiBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpObzsK
QEAgLTk5OCwxNCArMTAwMCwzNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjp+TmV0d29ya1Nlc3Np
b25Db2NvYSgpCiB7CiB9CiAKK3ZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6aW5pdGlhbGl6ZUVw
aGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3NTZXNzaW9uKE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRp
b24gKmV4aXN0aW5nQ29uZmlndXJhdGlvbikKK3sKKyAgICBOU1VSTFNlc3Npb25Db25maWd1cmF0
aW9uICpjb25maWd1cmF0aW9uID0gW05TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gZXBoZW1lcmFs
U2Vzc2lvbkNvbmZpZ3VyYXRpb25dOworICAgIAorICAgIGNvbmZpZ3VyYXRpb24uSFRUUENvb2tp
ZUFjY2VwdFBvbGljeSA9IE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyOworICAgIGNvbmZp
Z3VyYXRpb24uVVJMQ3JlZGVudGlhbFN0b3JhZ2UgPSBuaWw7CisgICAgY29uZmlndXJhdGlvbi5V
UkxDYWNoZSA9IG5pbDsKKyAgICBjb25maWd1cmF0aW9uLmFsbG93c0NlbGx1bGFyQWNjZXNzID0g
WUVTOworICAgIGNvbmZpZ3VyYXRpb24uY29ubmVjdGlvblByb3h5RGljdGlvbmFyeSA9IGV4aXN0
aW5nQ29uZmlndXJhdGlvbi5jb25uZWN0aW9uUHJveHlEaWN0aW9uYXJ5OworCisgICAgY29uZmln
dXJhdGlvbi5fc2hvdWxkU2tpcFByZWZlcnJlZENsaWVudENlcnRpZmljYXRlTG9va3VwID0gWUVT
OworICAgIGNvbmZpZ3VyYXRpb24uX3NvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbkRhdGEgPSBl
eGlzdGluZ0NvbmZpZ3VyYXRpb24uX3NvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbkRhdGE7Cisg
ICAgY29uZmlndXJhdGlvbi5fc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyID0g
ZXhpc3RpbmdDb25maWd1cmF0aW9uLl9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZp
ZXI7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBjb25maWd1cmF0aW9uLl9DVERhdGFD
b25uZWN0aW9uU2VydmljZVR5cGUgPSBleGlzdGluZ0NvbmZpZ3VyYXRpb24uX0NURGF0YUNvbm5l
Y3Rpb25TZXJ2aWNlVHlwZTsKKyNlbmRpZgorCisgICAgbV9lcGhlbWVyYWxTdGF0ZWxlc3NDb29r
aWVsZXNzU2Vzc2lvbkRlbGVnYXRlID0gYWRvcHROUyhbW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhOZXR3b3JrU2Vzc2lvbjoqdGhpcyB3aXRoQ3JlZGVudGlhbHM6ZmFs
c2VdKTsKKyAgICBtX2VwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3NTZXNzaW9uID0gW05TVVJM
U2Vzc2lvbiBzZXNzaW9uV2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbiBkZWxlZ2F0ZTpz
dGF0aWNfY2FzdDxpZD4obV9lcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzU2Vzc2lvbkRlbGVn
YXRlLmdldCgpKSBkZWxlZ2F0ZVF1ZXVlOltOU09wZXJhdGlvblF1ZXVlIG1haW5RdWV1ZV1dOwor
fQorCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmludmFsaWRhdGVBbmRDYW5jZWwoKQogewog
ICAgIE5ldHdvcmtTZXNzaW9uOjppbnZhbGlkYXRlQW5kQ2FuY2VsKCk7CiAKICAgICBbbV9zZXNz
aW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlIGludmFsaWRhdGVBbmRDYW5jZWxdOwogICAgIFttX3N0
YXRlbGVzc1Nlc3Npb24gaW52YWxpZGF0ZUFuZENhbmNlbF07CisgICAgW21fZXBoZW1lcmFsU3Rh
dGVsZXNzQ29va2llbGVzc1Nlc3Npb24gaW52YWxpZGF0ZUFuZENhbmNlbF07CiAgICAgW21fc2Vz
c2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZURlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07CiAg
ICAgW21fc3RhdGVsZXNzU2Vzc2lvbkRlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07CisgICAg
W21fZXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb25EZWxlZ2F0ZSBzZXNzaW9uSW52
YWxpZGF0ZWRdOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQ3JlZGVudGlh
bHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRl
eCBlZDAyN2ViMzA0NjYxMTQ3ZTRlZjFmZGI2MDZjYTgxNTEwNzAzMjAyLi5kODgyZmI2OGQ4OTFh
YTJlZWM3MTdjZjRhMmFmM2IwNDNiZjMwMmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtODU0LDYgKzg1NCwxNSBAQCB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpXb3JrZXJUeXBlPiB7CiAgICAgPjsKIH07CiAKK3Rl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3k+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwKKyAgICAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3k6OkRvTm90VXNlLAorICAgICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeTo6VXNlLAorICAgICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBo
ZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzcworICAgID47Cit9OworCiAjaWYgVVNFKENVUkwpCiB0
ZW1wbGF0ZSA8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5nczo6
TW9kZT4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGNiNzZkNTY1
YjYzZWQ3NWZiNDUxY2EzOTUyMzZjZDZkNzRlYzFkMi4uNjhhYmJmYzM3ZjUyZDk1NDg4Y2M0N2Rh
NGM0Njk1YTQ4MzY5NzEyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTA0LTE5ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIERpc2FibGUgQWQgQ2xp
Y2sgQXR0cmlidXRpb24gaW4gZXBoZW1lcmFsIHNlc3Npb25zIGFuZCBtYWtlIHN1cmUgY29udmVy
c2lvbiByZXF1ZXN0cyB1c2UgYW4gZXBoZW1lcmFsLCBzdGF0ZWxlc3Mgc2Vzc2lvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MTA4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS80OTkxODcwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBFeGNlcHQgZm9yIHRoZSBkZXRhaWxzIGJlbG93LCB0aGlzIHBh
dGNoIGludHJvZHVjZXMgdGhlIHV0aWxpdHkgZnVuY3Rpb25zCisgICAgICAgIHByZXBhcmVUZXN0
KCkgYW5kIHRlYXJEb3duQW5kRmluaXNoKCkgYW5kIGFsbCBhcHBsaWNhYmxlIHRlc3RzIG5vdyBt
YWtlIHVzZQorICAgICAgICBvZiB0aGVtLgorCisgICAgICAgICogaHR0cC90ZXN0cy9hZENsaWNr
QXR0cmlidXRpb24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWNyb3NzLXNpdGUtaW1h
Z2UtcmVkaXJlY3QuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlv
bi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0aC1wcmlv
cml0eS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJp
YnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRob3V0LXByaW9yaXR5
Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vY29udmVyc2lv
bi1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2NvbnZlcnNpb24tZGlzYWJsZWQt
aW4tZXBoZW1lcmFsLXNlc3Npb24uaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVl
c3QuaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJj
ZXMvY29udmVyc2lvblJlcG9ydC5waHA6CisgICAgICAgICAgICBOb3cgdHJpZXMgdG8gc2V0IGEg
Y29va2llIGluIHRoZSByZXNwb25zZS4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRy
aWJ1dGlvbi9yZXNvdXJjZXMvdXRpbC5qczogQWRkZWQuCisgICAgICAgIChwcmVwYXJlVGVzdCk6
CisgICAgICAgICh0ZWFyRG93bkFuZEZpbmlzaCk6CisgICAgICAgICogaHR0cC90ZXN0cy9hZENs
aWNrQXR0cmlidXRpb24vc2Vjb25kLWF0dHJpYnV0aW9uLWNvbnZlcnRlZC13aXRoLWhpZ2hlci1w
cmlvcml0eS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Nl
Y29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0ZWQtd2l0aC1sb3dlci1wcmlvcml0eS5odG1sOgorICAg
ICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1jb252ZXJzaW9uLXdp
dGgtaGlnaGVyLXByaW9yaXR5Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9hZENsaWNrQXR0
cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24td2l0aC1sb3dlci1wcmlvcml0eS5odG1sOgorICAg
ICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlbmQtYXR0cmlidXRpb24tY29u
dmVyc2lvbi1yZXF1ZXN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xp
Y2tBdHRyaWJ1dGlvbi9zZW5kLWF0dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVxdWVzdC5odG1sOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWFkLWNsaWNrLWF0
dHJpYnV0aW9uLmh0bWw6CisgICAgICAgICAgICBOb3cgc2V0cyBhIGNvb2tpZSB3aGljaCBpcyBj
aGVja2VkIGZvciBpdCBpbiB0aGUgY29udmVyc2lvbiByZXBvcnQuCisgICAgICAgICogaHR0cC90
ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc3RvcmUtZGlzYWJsZWQtaW4tZXBoZW1lcmFsLXNlc3Np
b24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRy
aWJ1dGlvbi9zdG9yZS1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi5odG1sOiBDb3BpZWQg
ZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zdG9yZS1hZC1j
bGljay1hdHRyaWJ1dGlvbi5odG1sLgorCiAyMDE5LTA0LTE4ICBTaWh1aSBMaXUgIDxzaWh1aV9s
aXVAYXBwbGUuY29tPgogCiAgICAgICAgIEJsb2IgdHlwZSBjYW5ub3QgYmUgc3RvcmVkIGNvcnJl
Y3RseSBpbiBJREIgd2hlbiBJREJPYmplY3RTdG9yZSBoYXMgYXV0b0luY3JlbWVudCBhbmQga2V5
UGF0aCBvcHRpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tB
dHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtY3Jvc3Mtc2l0ZS1pbWFn
ZS1yZWRpcmVjdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRp
b24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWNyb3NzLXNpdGUtaW1hZ2UtcmVkaXJl
Y3QuaHRtbAppbmRleCAzMTI0MDY3MzlmNWE5YjhjODMyODU3OWJjMTZlN2IyOTg4ZTgwZmY0Li40
NDNhZjg3MWUwOWVlMTdjMmNiMjE3N2RiNGNhOWQ5Njc3MWQ4NzFlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJz
aW9uLXRocm91Z2gtY3Jvc3Mtc2l0ZS1pbWFnZS1yZWRpcmVjdC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24t
dGhyb3VnaC1jcm9zcy1zaXRlLWltYWdlLXJlZGlyZWN0Lmh0bWwKQEAgLTQsMTcgKzQsMTQgQEAK
ICAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNv
bnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxl
PW5vIj4KICAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5IG9ubG9hZD0ic2V0VGltZW91dChydW5UZXN0LCAwKSI+CiA8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+VGVzdHMgdGhhdCB0cmlnZ2VyaW5nIG9mIGFkIGNsaWNrIGF0dHJpYnV0
aW9uIGNvbnZlcnNpb25zIHRocm91Z2ggY3Jvc3Mtc2l0ZSByZWRpcmVjdHMgZG8gbm90IHdvcmsu
PC9kaXY+CiA8YSBpZD0idGFyZ2V0TGluayIgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL2Fk
Q2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtY3Jvc3Mtc2l0
ZS1pbWFnZS1yZWRpcmVjdC5odG1sP3N0ZXBUd28iIGFkY2FtcGFpZ25pZD0iMyIgYWRkZXN0aW5h
dGlvbj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwIj5MaW5rPC9hPjxicj4KIDxkaXYgaWQ9Im91dHB1
dCI+PC9kaXY+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUodHJ1
ZSk7Ci0gICAgfQorICAgIHByZXBhcmVUZXN0KCk7CiAKICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVs
ZW1lbnQoZWxlbWVudElEKSB7CiAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoZWxlbWVudElEKTsKQEAgLTI1LDcgKzIyLDcgQEAKICAgICAgICAgICAgIH0sCiAg
ICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIFByb21pc2UgcmVqZWN0ZWQuIjsK
LSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAg
ICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAgICAgICAgICAgfQogICAgICAgICApOwogICAgIH0K
QEAgLTQwLDcgKzM3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQWRD
bGlja0F0dHJpYnV0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVt
b3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInBpeGVsIikpOwotICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKICAgICAgICAg
ICAgICAgICB9OwogICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1h
Z2VFbGVtZW50KTsKICAgICAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRo
cm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0aC1wcmlvcml0eS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdo
LWltYWdlLXJlZGlyZWN0LXdpdGgtcHJpb3JpdHkuaHRtbAppbmRleCBjNWZiNWY1MDNmZGM3ODg2
ZDMxMmMyNWFlNDFlMjhlMWU0Y2EyODJjLi41M2Q4NjZmMGRhNjlmNWE2OWQ1ODBjOTk5YTdmNTVj
MGQ0YTZlMWMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRy
aWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0
aC1wcmlvcml0eS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJp
YnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRo
LXByaW9yaXR5Lmh0bWwKQEAgLTQsMTcgKzQsMTQgQEAKICAgICA8bWV0YSBjaGFyc2V0PSJVVEYt
OCI+CiAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0
aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5vIj4KICAgICA8c2NyaXB0IHNyYz0i
L2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0i
c2V0VGltZW91dChydW5UZXN0LCAwKSI+CiA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGVzdHMgdHJp
Z2dlcmluZyBvZiBhZCBjbGljayBhdHRyaWJ1dGlvbiBjb252ZXJzaW9ucyB3aXRoIHByaW9yaXR5
LjwvZGl2PgogPGEgaWQ9InRhcmdldExpbmsiIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9h
ZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWltYWdlLXJl
ZGlyZWN0LXdpdGgtcHJpb3JpdHkuaHRtbD9zdGVwVHdvIiBhZGNhbXBhaWduaWQ9IjMiIGFkZGVz
dGluYXRpb249Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI+TGluazwvYT48YnI+CiA8ZGl2IGlkPSJv
dXRwdXQiPjwvZGl2PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwotICAgICAgICB0ZXN0UnVubmVyLnNldEFsbG93c0FueVNTTENlcnRpZmljYXRl
KHRydWUpOwotICAgIH0KKyAgICBwcmVwYXJlVGVzdCgpOwogCiAgICAgZnVuY3Rpb24gYWN0aXZh
dGVFbGVtZW50KGVsZW1lbnRJRCkgewogICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKGVsZW1lbnRJRCk7CkBAIC0yNSw3ICsyMiw3IEBACiAgICAgICAgICAgICB9
LAogICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBQcm9taXNlIHJlamVjdGVk
LiI7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgKTsKICAg
ICB9CkBAIC00MCw3ICszNyw3IEBACiAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFkQ2xpY2tBdHRyaWJ1dGlvbigpOwogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5
LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXRMaW5rIikpOwogICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJwaXhlbCIpKTsKLSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CiAgICAg
ICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGltYWdlRWxlbWVudCk7CiAgICAgICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24tY29udmVyc2lv
bi10aHJvdWdoLWltYWdlLXJlZGlyZWN0LXdpdGhvdXQtcHJpb3JpdHkuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24t
dGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRob3V0LXByaW9yaXR5Lmh0bWwKaW5kZXggOTdiYTUy
ZTBmNDJmNzhlZmU0NzMwMTA3N2ZiMGU2ZDEwMzk1NmViYy4uZmIxNzRiMTA1YjRlM2NhZTI4ZTFj
NzYyNDU1NTI1ODk4NjlmN2Q4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
ZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWltYWdlLXJl
ZGlyZWN0LXdpdGhvdXQtcHJpb3JpdHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2Ut
cmVkaXJlY3Qtd2l0aG91dC1wcmlvcml0eS5odG1sCkBAIC00LDE3ICs0LDE0IEBACiAgICAgPG1l
dGEgY2hhcnNldD0iVVRGLTgiPgogICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3
aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdXNlci1zY2FsYWJsZT1ubyI+CiAg
ICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+
CiA8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQocnVuVGVzdCwgMCkiPgogPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPlRlc3RzIHRyaWdnZXJpbmcgb2YgYWQgY2xpY2sgYXR0cmlidXRpb24gY29udmVyc2lv
bnMgd2l0aG91dCBwcmlvcml0eS48L2Rpdj4KIDxhIGlkPSJ0YXJnZXRMaW5rIiBocmVmPSJodHRw
Oi8vbG9jYWxob3N0OjgwMDAvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNp
b24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRob3V0LXByaW9yaXR5Lmh0bWw/c3RlcFR3byIg
YWRjYW1wYWlnbmlkPSIzIiBhZGRlc3RpbmF0aW9uPSJodHRwOi8vbG9jYWxob3N0OjgwMDAiPkxp
bms8L2E+PGJyPgogPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwot
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRB
bGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSh0cnVlKTsKLSAgICB9CisgICAgcHJlcGFyZVRlc3QoKTsK
IAogICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SUQpIHsKICAgICAgICAgdmFy
IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SUQpOwpAQCAtMjUsNyAr
MjIsNyBAQAogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0g
IkZBSUwgUHJvbWlzZSByZWplY3RlZC4iOwotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICk7CiAgICAgfQpAQCAtNDAsNyArMzcsNyBAQAogICAgICAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBZENsaWNrQXR0cmlidXRpb24oKTsKICAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGFyZ2V0TGluayIpKTsKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1v
dmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGl4ZWwiKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgICAgICB0ZWFy
RG93bkFuZEZpbmlzaCgpOwogICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZUVsZW1lbnQpOwogICAgICAgICAgICAgfSBlbHNl
IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9u
L2NvbnZlcnNpb24tZGlzYWJsZWQtaW4tZXBoZW1lcmFsLXNlc3Npb24tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vY29udmVyc2lvbi1kaXNh
YmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzM0YWI1
ZDkxMjU5NDU4MzBhMmI4NDNlNzE3NGUxNTA5ZDJjZDU4MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2NvbnZlcnNpb24tZGlzYWJs
ZWQtaW4tZXBoZW1lcmFsLXNlc3Npb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Rl
c3RzIHRoYXQgc3RvcmVkIGF0dHJpYnV0aW9ucyBjYW5ub3QgYmUgY29udmVydGVkIGluIGFuIGVw
aGVtZXJhbCBzZXNzaW9uLgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lMS0tPicK
Ky0tLS0tLS0tCitDb252ZXJzaW9uIG5vdCByZWNlaXZlZCAtIHRpbWVkIG91dC4KKworVW5jb252
ZXJ0ZWQgQWQgQ2xpY2sgQXR0cmlidXRpb25zOgorV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9u
IDEKK1NvdXJjZTogMTI3LjAuMC4xCitEZXN0aW5hdGlvbjogbG9jYWxob3N0CitDYW1wYWlnbiBJ
RDogMworTm8gY29udmVyc2lvbiBkYXRhLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vY29udmVyc2lvbi1kaXNhYmxlZC1pbi1lcGhlbWVyYWwt
c2Vzc2lvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24v
Y29udmVyc2lvbi1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmMyZjVmZmZhMDg2YWFkNGNjZjc2ZTljMWY5M2Y5OThlMTliMTZhNmEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9jb252ZXJzaW9u
LWRpc2FibGVkLWluLWVwaGVtZXJhbC1zZXNzaW9uLmh0bWwKQEAgLTAsMCArMSw3NiBAQAorPCFE
T0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9y
dD10cnVlIGludGVybmFsOkFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0
bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDxt
ZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwt
c2NhbGU9MSwgdXNlci1zY2FsYWJsZT1ubyI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJl
c291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQo
cnVuVGVzdCwgMCkiPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRlc3RzIHRoYXQgc3RvcmVkIGF0
dHJpYnV0aW9ucyBjYW5ub3QgYmUgY29udmVydGVkIGluIGFuIGVwaGVtZXJhbCBzZXNzaW9uLjwv
ZGl2PgorPGEgaWQ9InRhcmdldExpbmsiIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9hZENs
aWNrQXR0cmlidXRpb24vY29udmVyc2lvbi1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi5o
dG1sP3N0ZXBUd28iIGFkY2FtcGFpZ25pZD0iMyIgYWRkZXN0aW5hdGlvbj0iaHR0cDovL2xvY2Fs
aG9zdDo4MDAwIj5MaW5rPC9hPjxicj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8c2NyaXB0
PgorICAgIGNvbnN0IGN1cnJlbnRUaW1lTWlsbGlzID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTsK
KyAgICBjb25zdCBoaWdoRW50cm9weUJpdHMgPSBjdXJyZW50VGltZU1pbGxpcyAtIChNYXRoLmZs
b29yKGN1cnJlbnRUaW1lTWlsbGlzIC8gMTAwMDAwMCkgKiAxMDAwMDAwKTsKKyAgICBjb25zdCBu
b25jZSA9IGhpZ2hFbnRyb3B5Qml0cyArICIiICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICog
MTAwKTsKKworICAgIHByZXBhcmVUZXN0KCk7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIuc2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZv
clRlc3RpbmcoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9hZENsaWNrQXR0cmlidXRpb24vcmVzb3Vy
Y2VzL2NvbnZlcnNpb25SZXBvcnQucGhwP25vbmNlPSIgKyBub25jZSk7CisKKyAgICBmdW5jdGlv
biBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElEKSB7CisgICAgICAgIHZhciBlbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElEKTsKKyAgICAgICAgdmFyIGNlbnRlclggPSBl
bGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAgICAgdmFy
IGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsK
KyAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVuKAorICAg
ICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0
IikuaW5uZXJUZXh0ID0gIkZBSUwgUHJvbWlzZSByZWplY3RlZC4iOworICAgICAgICAgICAgICAg
IHRlYXJEb3duQW5kRmluaXNoKCk7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gYXBwZW5kSWZyYW1lKHVybCwgb25sb2FkQ2FsbGJhY2spIHsKKyAgICAg
ICAgbGV0IGlmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsK
KyAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMgPSB1cmw7CisgICAgICAgIGlmIChvbmxvYWRDYWxs
YmFjaykKKyAgICAgICAgICAgIGlmcmFtZUVsZW1lbnQub25sb2FkID0gb25sb2FkQ2FsbGJhY2s7
CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVudCk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gYXBwZW5kQ29udmVyc2lvbkRhdGFJZnJhbWVBbmRGaW5pc2goKSB7
CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbigpOworICAgICAgICBk
b2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXRM
aW5rIikpOworICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJwaXhlbCIpKTsKKworICAgICAgICBhcHBlbmRJZnJhbWUoImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2dldENvbnZlcnNpb25EYXRh
LnBocD90aW1lb3V0X21zPTEwMDAmbm9uY2U9IiArIG5vbmNlLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggPT09ICI/c3RlcFR3byIpIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQodHJ1ZSk7
CisgICAgICAgICAgICAgICAgbGV0IGltYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImltZyIpOworICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudC5zcmMgPSAiaHR0cHM6Ly8x
MjcuMC4wLjE6ODQ0My9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL3JlZGlyZWN0VG9Db252
ZXJzaW9uLnBocD9jb252ZXJzaW9uRGF0YT0xMiZub25jZT0iICsgbm9uY2U7CisgICAgICAgICAg
ICAgICAgaW1hZ2VFbGVtZW50LmlkID0gInBpeGVsIjsKKyAgICAgICAgICAgICAgICBpbWFnZUVs
ZW1lbnQub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRD
b252ZXJzaW9uRGF0YUlmcmFtZUFuZEZpbmlzaCgpOworICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZUVsZW1lbnQpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSAiY29v
a2llU2V0QXNGaXJzdFBhcnR5PTE7IHBhdGg9LyI7CisgICAgICAgICAgICAgICAgYWN0aXZhdGVF
bGVtZW50KCJ0YXJnZXRMaW5rIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0g
IkZBSUwgTm8gdGVzdFJ1bm5lci4iOworICAgICAgICB9CisgICAgfQorPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tB
dHRyaWJ1dGlvbi9yZXNvdXJjZXMvY29udmVyc2lvblJlcG9ydC5waHAgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvY29udmVyc2lvblJlcG9ydC5w
aHAKaW5kZXggM2ZiZDhmYjgyM2FkMzg0ODJkZDJiZjI5OWE5MjE0N2UyMDhjZjBkMi4uZTM4NDIx
MjU1YmM1ZDUyMTE4ODYzMmJhNzNhNDg5OTIzMzU0ZWQyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2NvbnZlcnNpb25SZXBv
cnQucGhwCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jl
c291cmNlcy9jb252ZXJzaW9uUmVwb3J0LnBocApAQCAtMjQsNCArMjQsOCBAQCBpZiAoISRjb29r
aWVzRm91bmQpIHsKIH0KIGZjbG9zZSgkY29udmVyc2lvbkZpbGUpOwogcmVuYW1lKCRjb252ZXJz
aW9uRmlsZVBhdGggLiAiLnRtcCIsICRjb252ZXJzaW9uRmlsZVBhdGgpOworCitoZWFkZXIoIkhU
VFAvMS4xIDIwMCBPSyIpOworc2V0Y29va2llKCJjb29raWVTZXRJbkNvbnZlcnNpb25SZXBvcnQi
LCAiMSIsIDAsICIvIik7CisKID8+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvdXRpbC5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy91dGlsLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNm
MzBjOGNhNmZmYzQyZDUxZmI4NTZmMzM1MDUyNzc4Y2E5ODY3ZjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvdXRp
bC5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBwcmVwYXJlVGVzdCgpIHsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLnNldEFsbG93c0FueVNT
TENlcnRpZmljYXRlKHRydWUpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVhckRvd25BbmRGaW5p
c2goKSB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIu
c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoZmFsc2UpOworICAgICAgICB0ZXN0UnVubmVyLnNl
dEFkQ2xpY2tBdHRyaWJ1dGlvbk92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGZhbHNlKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5zZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGlu
ZygiIik7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChmYWxz
ZSk7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fk
Q2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtYXR0cmlidXRpb24tY29udmVydGVkLXdpdGgtaGlnaGVy
LXByaW9yaXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlv
bi9zZWNvbmQtYXR0cmlidXRpb24tY29udmVydGVkLXdpdGgtaGlnaGVyLXByaW9yaXR5Lmh0bWwK
aW5kZXggNDkyMDBmNzNmYmI2Y2ZjNWQyOWQ0YTViOGNkYjkzNDAwMzU4M2ZkMC4uZGQzODNlZDc3
NzIzNGUxMmVmMTA2MWUzNDQ1YjExNjI0ZDliYjJhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWF0dHJpYnV0aW9uLWNvbnZlcnRl
ZC13aXRoLWhpZ2hlci1wcmlvcml0eS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0ZWQtd2l0aC1oaWdo
ZXItcHJpb3JpdHkuaHRtbApAQCAtNCw2ICs0LDcgQEAKICAgICA8bWV0YSBjaGFyc2V0PSJVVEYt
OCI+CiAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0
aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5vIj4KICAgICA8c2NyaXB0IHNyYz0i
L2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0i
c2V0VGltZW91dChydW5UZXN0LCAwKSI+CiA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGVzdHMgdGhh
dCBhIHNlY29uZCBhdHRyaWJ1dGlvbiBjb252ZXJzaW9uIHdpdGggaGlnaGVyIHByaW9yaXR5IHJl
cGxhY2VzIGFuIG9sZGVyIHdpdGggbG93ZXIgcHJpb3JpdHkuPC9kaXY+CkBAIC0yNCw2ICsyNSw4
IEBACiAgICAgICAgIH0KICAgICBdOwogCisgICAgcHJlcGFyZVRlc3QoKTsKKwogICAgIGZ1bmN0
aW9uIGNvbmZpZ3VyZUxpbmsoaW5kZXgpIHsKICAgICAgICAgbGV0IGxpbmtFbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKTsKICAgICAgICAgbGlua0VsZW1lbnQu
c2V0QXR0cmlidXRlKCJocmVmIiwgY29uZmlndXJhdGlvbltpbmRleF0uaHJlZik7CkBAIC0zMSwx
MiArMzQsNiBAQAogICAgICAgICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFkZGVzdGluYXRp
b24iLCBjb25maWd1cmF0aW9uW2luZGV4XS5hZGRlc3RpbmF0aW9uKTsKICAgICB9CiAKLSAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7Ci0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICB0ZXN0UnVubmVy
LnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlKHRydWUpOwotICAgIH0KLQogICAgIGZ1bmN0aW9u
IGFjdGl2YXRlRWxlbWVudChlbGVtZW50SUQpIHsKICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SUQpOwogICAgICAgICB2YXIgY2VudGVyWCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwpAQCAtNDYsNyArNDMs
NyBAQAogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0gIkZB
SUwgUHJvbWlzZSByZWplY3RlZC4iOwotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOworICAgICAgICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICk7CiAgICAgfQpAQCAtNzksMTIgKzc2LDEyIEBACiAgICAgICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbigpOwogICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0YXJnZXRMaW5rIikpOwogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92
ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwaXhlbCIpKTsKLSAgICAgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgICAgIHRlYXJE
b3duQW5kRmluaXNoKCk7CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCk7CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5l
clRleHQgPSAiRkFJTCBVbmtub3duIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggPT0gIiArIHdpbmRv
dy5sb2NhdGlvbi5zZWFyY2ggKyAiLiI7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBObyB0ZXN0UnVubmVyLiI7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtYXR0
cmlidXRpb24tY29udmVydGVkLXdpdGgtbG93ZXItcHJpb3JpdHkuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0
ZWQtd2l0aC1sb3dlci1wcmlvcml0eS5odG1sCmluZGV4IGMzZTE4ODM5MGRlYjgwYjJkNzY5YWZh
NzA3YmVhZjUyNDU3YWM2NmMuLjdlODFhOTc2OWJkYzNlMmIwYmNjMjdkYzhiYmQ0MjFhYmFkNzI1
ZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9u
L3NlY29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0ZWQtd2l0aC1sb3dlci1wcmlvcml0eS5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1hdHRy
aWJ1dGlvbi1jb252ZXJ0ZWQtd2l0aC1sb3dlci1wcmlvcml0eS5odG1sCkBAIC00LDYgKzQsNyBA
QAogICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIg
Y29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFi
bGU9bm8iPgogICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0
PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KHJ1blRlc3QsIDApIj4KIDxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj5UZXN0cyB0aGF0IGEgc2Vjb25kIGF0dHJpYnV0aW9uIGNvbnZlcnNp
b24gd2l0aCBsb3dlciBwcmlvcml0eSBkb2VzIG5vdCByZXBsYWNlIGFuIG9sZGVyIHdpdGggaGln
aGVyIHByaW9yaXR5LjwvZGl2PgpAQCAtMjQsNiArMjUsOCBAQAogICAgICAgICB9CiAgICAgXTsK
IAorICAgIHByZXBhcmVUZXN0KCk7CisKICAgICBmdW5jdGlvbiBjb25maWd1cmVMaW5rKGluZGV4
KSB7CiAgICAgICAgIGxldCBsaW5rRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
YXJnZXRMaW5rIik7CiAgICAgICAgIGxpbmtFbGVtZW50LnNldEF0dHJpYnV0ZSgiaHJlZiIsIGNv
bmZpZ3VyYXRpb25baW5kZXhdLmhyZWYpOwpAQCAtMzEsMTIgKzM0LDYgQEAKICAgICAgICAgbGlu
a0VsZW1lbnQuc2V0QXR0cmlidXRlKCJhZGRlc3RpbmF0aW9uIiwgY29uZmlndXJhdGlvbltpbmRl
eF0uYWRkZXN0aW5hdGlvbik7CiAgICAgfQogCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
Ci0gICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRBbGxvd3NBbnlTU0xDZXJ0aWZp
Y2F0ZSh0cnVlKTsKLSAgICB9Ci0KICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVu
dElEKSB7CiAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxl
bWVudElEKTsKICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVt
ZW50Lm9mZnNldFdpZHRoIC8gMjsKQEAgLTQ2LDcgKzQzLDcgQEAKICAgICAgICAgICAgIH0sCiAg
ICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIFByb21pc2UgcmVqZWN0ZWQuIjsK
LSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAg
ICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAgICAgICAgICAgfQogICAgICAgICApOwogICAgIH0K
QEAgLTc5LDEyICs3NiwxMiBAQAogICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
ZENsaWNrQXR0cmlidXRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5y
ZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0TGluayIpKTsKICAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicGl4ZWwiKSk7Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOworICAgICAgICAgICAgICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAgICAg
ICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChp
bWFnZUVsZW1lbnQpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgVW5rbm93biB3
aW5kb3cubG9jYXRpb24uc2VhcmNoID09ICIgKyB3aW5kb3cubG9jYXRpb24uc2VhcmNoICsgIi4i
OwotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAg
ICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0
ID0gIkZBSUwgTm8gdGVzdFJ1bm5lci4iOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24td2l0aC1oaWdoZXItcHJp
b3JpdHkuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Nl
Y29uZC1jb252ZXJzaW9uLXdpdGgtaGlnaGVyLXByaW9yaXR5Lmh0bWwKaW5kZXggYzhlZmUxNGRm
NTI5ZWE0ZmQ1ZTdjYzg1Y2RlMGZiZWFhOTIxMTc0YS4uZjU5ZTQ0YjZmYjk5NDU3ODJiMWY5MjIy
MDc0OWMwNjM1NjM0YjQ0YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENs
aWNrQXR0cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24td2l0aC1oaWdoZXItcHJpb3JpdHkuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQt
Y29udmVyc2lvbi13aXRoLWhpZ2hlci1wcmlvcml0eS5odG1sCkBAIC00LDYgKzQsNyBAQAogICAg
IDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVu
dD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8i
PgogICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KHJ1blRlc3QsIDApIj4KIDxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj5UZXN0cyB0aGF0IHRoZSBhdHRyaWJ1dGlvbiBpcyB1cGRhdGVkIGlmIGl0IGdl
dHMgYSBzZWNvbmQgY29udmVyc2lvbiB3aXRoIGhpZ2hlciBwcmlvcml0eS48L2Rpdj4KQEAgLTE5
LDYgKzIwLDggQEAKICAgICAgICAgfQogICAgIF07CiAKKyAgICBwcmVwYXJlVGVzdCgpOworCiAg
ICAgZnVuY3Rpb24gY29uZmlndXJlTGluayhpbmRleCkgewogICAgICAgICBsZXQgbGlua0VsZW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0TGluayIpOwogICAgICAgICBsaW5r
RWxlbWVudC5zZXRBdHRyaWJ1dGUoImhyZWYiLCBjb25maWd1cmF0aW9uW2luZGV4XS5ocmVmKTsK
QEAgLTI2LDEyICsyOSw2IEBACiAgICAgICAgIGxpbmtFbGVtZW50LnNldEF0dHJpYnV0ZSgiYWRk
ZXN0aW5hdGlvbiIsIGNvbmZpZ3VyYXRpb25baW5kZXhdLmFkZGVzdGluYXRpb24pOwogICAgIH0K
IAotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIHRl
c3RSdW5uZXIuc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUodHJ1ZSk7Ci0gICAgfQotCiAgICAg
ZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJRCkgewogICAgICAgICB2YXIgZWxlbWVu
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJRCk7CiAgICAgICAgIHZhciBjZW50
ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CkBAIC00
MSw3ICszOCw3IEBACiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRl
eHQgPSAiRkFJTCBQcm9taXNlIHJlamVjdGVkLiI7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgKTsKICAgICB9CkBAIC03MiwxMiArNjksMTIgQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbigpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0TGluayIpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBpeGVs
IikpOwotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAgICAgICAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4
dCA9ICJGQUlMIFVua25vd24gd2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PSAiICsgd2luZG93Lmxv
Y2F0aW9uLnNlYXJjaCArICIuIjsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
Im91dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIE5vIHRlc3RSdW5uZXIuIjsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1jb252ZXJz
aW9uLXdpdGgtbG93ZXItcHJpb3JpdHkuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRD
bGlja0F0dHJpYnV0aW9uL3NlY29uZC1jb252ZXJzaW9uLXdpdGgtbG93ZXItcHJpb3JpdHkuaHRt
bAppbmRleCBiNmVmYmExOTk2MDhkZjhhMWVkMDcwMGQ3NTI3NmI3MmYwOTQ5NWVmLi5kOGE5MTRh
YThmOTQ0M2MxMjAyNjE3ZjMxYzQ0NjE4MTJjOTBlYzVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtY29udmVyc2lvbi13aXRoLWxv
d2VyLXByaW9yaXR5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0
cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24td2l0aC1sb3dlci1wcmlvcml0eS5odG1sCkBAIC00
LDYgKzQsNyBAQAogICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgICA8bWV0YSBuYW1lPSJ2
aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVz
ZXItc2NhbGFibGU9bm8iPgogICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWkt
aGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMi
Pjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KHJ1blRlc3QsIDAp
Ij4KIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0cyB0aGF0IHRoZSBhdHRyaWJ1dGlvbiBpcyBu
b3QgdXBkYXRlZCBpZiBpdCBnZXRzIGEgc2Vjb25kIGNvbnZlcnNpb24gd2l0aCBsb3dlciBwcmlv
cml0eS48L2Rpdj4KQEAgLTE5LDYgKzIwLDggQEAKICAgICAgICAgfQogICAgIF07CiAKKyAgICBw
cmVwYXJlVGVzdCgpOworCiAgICAgZnVuY3Rpb24gY29uZmlndXJlTGluayhpbmRleCkgewogICAg
ICAgICBsZXQgbGlua0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0TGlu
ayIpOwogICAgICAgICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoImhyZWYiLCBjb25maWd1cmF0
aW9uW2luZGV4XS5ocmVmKTsKQEAgLTI2LDEyICsyOSw2IEBACiAgICAgICAgIGxpbmtFbGVtZW50
LnNldEF0dHJpYnV0ZSgiYWRkZXN0aW5hdGlvbiIsIGNvbmZpZ3VyYXRpb25baW5kZXhdLmFkZGVz
dGluYXRpb24pOwogICAgIH0KIAotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUodHJ1
ZSk7Ci0gICAgfQotCiAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJRCkgewog
ICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJRCk7
CiAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZz
ZXRXaWR0aCAvIDI7CkBAIC00MSw3ICszOCw3IEBACiAgICAgICAgICAgICB9LAogICAgICAgICAg
ICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBQcm9taXNlIHJlamVjdGVkLiI7Ci0gICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgdGVhckRv
d25BbmRGaW5pc2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgKTsKICAgICB9CkBAIC03Miw3
ICs2OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBZENsaWNr
QXR0cmlidXRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVt
b3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJwaXhlbCIpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2go
KTsKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNr
QXR0cmlidXRpb24vc2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2VuZC1hdHRy
aWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QtZXhwZWN0ZWQudHh0CmluZGV4IDc3ZTI4YjAxZGFm
NjY1YjIwYThhZWI1MTk4YzdkNTc3ZDU4NDAxZDEuLjQ3N2I0NzEzMDgzOWExNTk2OGYzYmZhMWYy
YTNmOWQ4ZWQ3ZjI5YTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlj
a0F0dHJpYnV0aW9uL3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1yZXF1ZXN0LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZW5k
LWF0dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVxdWVzdC1leHBlY3RlZC50eHQKQEAgLTEsMTMgKzEs
MjQgQEAKLVRlc3RzIHNlbmRpbmcgb2YgYWQgY2xpY2sgYXR0cmlidXRpb24gcmVxdWVzdHMgYWZ0
ZXIgYSBjb252ZXJzaW9uLgorVGVzdHMgc2VuZGluZyBvZiBhZCBjbGljayBhdHRyaWJ1dGlvbiBy
ZXF1ZXN0cyBhZnRlciBhIGNvbnZlcnNpb24uIEFsc28gdGVzdHMgdGhhdCBjb29raWVzIGFyZSBu
b3Qgc2VudCBpbiB0aG9zZSByZXF1ZXN0cyBhbmQgY29va2llcyBhcmUgbm90IGFjY2VwdGVkIGlu
IHRoZSByZXNwb25zZXMuCiAKIAogCiAtLS0tLS0tLQogRnJhbWU6ICc8IS0tZnJhbWUxLS0+Jwog
LS0tLS0tLS0KK0Nvb2tpZXMgYXJlOiBjb29raWVTZXRBc0ZpcnN0UGFydHkgPSAxCisKKy0tLS0t
LS0tCitGcmFtZTogJzwhLS1mcmFtZTItLT4nCistLS0tLS0tLQogQ29udmVyc2lvbiByZWNlaXZl
ZC4KIEhUVFBfSE9TVDogMTI3LjAuMC4xOjgwMDAKIFJFUVVFU1RfVVJJOiAvYWRDbGlja0F0dHJp
YnV0aW9uL3Jlc291cmNlcy9jb252ZXJzaW9uUmVwb3J0LnBocD9jb252ZXJzaW9uPTEyJmNhbXBh
aWduPTMKIE5vIGNvb2tpZXMgaW4gY29udmVyc2lvbiByZXF1ZXN0LgogCisKKy0tLS0tLS0tCitG
cmFtZTogJzwhLS1mcmFtZTMtLT4nCistLS0tLS0tLQorQ29va2llcyBhcmU6IGNvb2tpZVNldEFz
Rmlyc3RQYXJ0eSA9IDEKKwogTm8gc3RvcmVkIEFkIENsaWNrIEF0dHJpYnV0aW9uIGRhdGEuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZW5k
LWF0dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVxdWVzdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVl
c3QuaHRtbAppbmRleCBlYTIyNjk4YjRmOTkyN2Y4ZGYyMDFkMGI3ZTg2OWM1MDQ3NTVmYmQ0Li40
Mzc1NzdjOWY2YWFmNzIxMmViYzEyZmVjMDhlNTJhZDYxNDg3ODcxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZW5kLWF0dHJpYnV0aW9uLWNv
bnZlcnNpb24tcmVxdWVzdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlj
a0F0dHJpYnV0aW9uL3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1yZXF1ZXN0Lmh0bWwKQEAg
LTQsOSArNCwxMCBAQAogICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgICA8bWV0YSBuYW1l
PSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEs
IHVzZXItc2NhbGFibGU9bm8iPgogICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMv
dWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwu
anMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KHJ1blRlc3Qs
IDApIj4KLTxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0cyBzZW5kaW5nIG9mIGFkIGNsaWNrIGF0
dHJpYnV0aW9uIHJlcXVlc3RzIGFmdGVyIGEgY29udmVyc2lvbi48L2Rpdj4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj5UZXN0cyBzZW5kaW5nIG9mIGFkIGNsaWNrIGF0dHJpYnV0aW9uIHJlcXVlc3Rz
IGFmdGVyIGEgY29udmVyc2lvbi4gQWxzbyB0ZXN0cyB0aGF0IGNvb2tpZXMgYXJlIG5vdCBzZW50
IGluIHRob3NlIHJlcXVlc3RzIGFuZCBjb29raWVzIGFyZSBub3QgYWNjZXB0ZWQgaW4gdGhlIHJl
c3BvbnNlcy48L2Rpdj4KIDxhIGlkPSJ0YXJnZXRMaW5rIiBocmVmPSJodHRwOi8vbG9jYWxob3N0
OjgwMDAvYWRDbGlja0F0dHJpYnV0aW9uL3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1yZXF1
ZXN0Lmh0bWw/c3RlcFR3byIgYWRjYW1wYWlnbmlkPSIzIiBhZGRlc3RpbmF0aW9uPSJodHRwOi8v
bG9jYWxob3N0OjgwMDAiPkxpbms8L2E+PGJyPgogPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KIDxz
Y3JpcHQ+CkBAIC0xNCwxMiArMTUsMTEgQEAKICAgICBjb25zdCBoaWdoRW50cm9weUJpdHMgPSBj
dXJyZW50VGltZU1pbGxpcyAtIChNYXRoLmZsb29yKGN1cnJlbnRUaW1lTWlsbGlzIC8gMTAwMDAw
MCkgKiAxMDAwMDAwKTsKICAgICBjb25zdCBub25jZSA9IGhpZ2hFbnRyb3B5Qml0cyArICIiICsg
TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwKTsKIAorICAgIHByZXBhcmVUZXN0KCk7CisK
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7Ci0gICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0g
ICAgICAgIHRlc3RSdW5uZXIuc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUodHJ1ZSk7Ci0gICAg
ICAgIHRlc3RSdW5uZXIuc2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRlc3Rp
bmcoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2Nv
bnZlcnNpb25SZXBvcnQucGhwP25vbmNlPSIgKyBub25jZSk7CiAgICAgICAgIHRlc3RSdW5uZXIu
c2V0QWRDbGlja0F0dHJpYnV0aW9uT3ZlcnJpZGVUaW1lckZvclRlc3RpbmcodHJ1ZSk7CisgICAg
ICAgIHRlc3RSdW5uZXIuc2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRlc3Rp
bmcoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2Nv
bnZlcnNpb25SZXBvcnQucGhwP25vbmNlPSIgKyBub25jZSk7CiAgICAgfQogCiAgICAgZnVuY3Rp
b24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJRCkgewpAQCAtMzEsMTkgKzMxLDMwIEBACiAgICAg
ICAgICAgICB9LAogICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBQcm9taXNl
IHJlamVjdGVkLiI7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgKTsKICAgICB9CiAKKyAgICBmdW5jdGlvbiBhcHBlbmRJZnJhbWUodXJsLCBvbmxvYWRDYWxs
YmFjaykgeworICAgICAgICBsZXQgaWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImlmcmFtZSIpOworICAgICAgICBpZnJhbWVFbGVtZW50LnNyYyA9IHVybDsKKyAgICAgICAg
aWYgKG9ubG9hZENhbGxiYWNrKQorICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5vbmxvYWQgPSBv
bmxvYWRDYWxsYmFjazsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWVF
bGVtZW50KTsKKyAgICB9CisKICAgICBmdW5jdGlvbiBhcHBlbmRDb252ZXJzaW9uRGF0YUlmcmFt
ZUFuZEZpbmlzaCgpIHsKICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQWRDbGlja0F0dHJpYnV0aW9u
KCk7CiAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRhcmdldExpbmsiKSk7CiAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBpeGVsIikpOwogCi0gICAgICAgIGxldCBpZnJhbWVF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Ci0gICAgICAgIGlmcmFt
ZUVsZW1lbnQuc3JjID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9hZENsaWNrQXR0cmlidXRpb24v
cmVzb3VyY2VzL2dldENvbnZlcnNpb25EYXRhLnBocD9lbmRUZXN0PXRydWUmdGltZW91dF9tcz0y
MDAwJm5vbmNlPSIgKyBub25jZTsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChp
ZnJhbWVFbGVtZW50KTsKKyAgICAgICAgYXBwZW5kSWZyYW1lKCJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvY29va2llcy9yZXNvdXJjZXMvZWNoby1jb29raWVzLnBocCIpOworICAgICAgICBhcHBlbmRJ
ZnJhbWUoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2Vz
L2dldENvbnZlcnNpb25EYXRhLnBocD90aW1lb3V0X21zPTIwMDAmbm9uY2U9IiArIG5vbmNlLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFwcGVuZElmcmFtZSgiaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2Nvb2tpZXMvcmVzb3VyY2VzL2VjaG8tY29va2llcy5waHAiLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0pOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CkBAIC01Nyw2ICs2OCw3
IEBACiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGltYWdlRWxlbWVudCk7CiAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmNvb2tpZSA9ICJjb29raWVTZXRBc0ZpcnN0UGFydHk9MTsgcGF0aD0v
IjsKICAgICAgICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoInRhcmdldExpbmsiKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWFkLWNsaWNrLWF0dHJpYnV0aW9uLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zdG9yZS1hZC1jbGlj
ay1hdHRyaWJ1dGlvbi5odG1sCmluZGV4IGY2NjAxZDY3YmEwNTIzYTY0ODI1ZjIzNDllNjA0MTNj
YmRiYjM5MDguLmM3MTQ2ZDAyMDIwMzlkZGFkNDZiNTg4YjYxMGVjYTkxY2JjNDQ1ZTcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWFk
LWNsaWNrLWF0dHJpYnV0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENs
aWNrQXR0cmlidXRpb24vc3RvcmUtYWQtY2xpY2stYXR0cmlidXRpb24uaHRtbApAQCAtNCwxNiAr
NCwxNCBAQAogICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgICA8bWV0YSBuYW1lPSJ2aWV3
cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXIt
c2NhbGFibGU9bm8iPgogICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVs
cGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KHJ1blRlc3QsIDApIj4K
IDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0cyBzdG9yYWdlIG9mIGFkIGNsaWNrIGF0dHJpYnV0
aW9uLjwvZGl2PgogPGEgaWQ9InRhcmdldExpbmsiIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC9hZENsaWNrQXR0cmlidXRpb24vc3RvcmUtYWQtY2xpY2stYXR0cmlidXRpb24uaHRtbD9zdGVw
VHdvIiBhZGNhbXBhaWduaWQ9IjMiIGFkZGVzdGluYXRpb249Imh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MCI+TGluazwvYT48YnI+CiA8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgogPHNjcmlwdD4KLSAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7Ci0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIH0KKyAgICBwcmVwYXJl
VGVzdCgpOwogCiAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJRCkgewogICAg
ICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJRCk7CkBA
IC0yNCw3ICsyMiw3IEBACiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgZnVuY3Rpb24gKCkg
ewogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5l
clRleHQgPSAiRkFJTCBQcm9taXNlIHJlamVjdGVkLiI7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgKTsKICAgICB9CkBAIC0zNCw3ICszMiw3IEBACiAgICAg
ICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PT0gIj9zdGVwVHdvIikgewogICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbigpOwogICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRhcmdldExpbmsiKSk7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CisgICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgYWN0aXZhdGVFbGVtZW50KCJ0YXJnZXRMaW5rIik7CiAg
ICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tB
dHRyaWJ1dGlvbi9zdG9yZS1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zdG9yZS1kaXNh
YmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGUzM2I3
NTcwYjgyYmY0MTc2M2RhZGMxZDUzZGU1NmRlMmMyMDA1MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWRpc2FibGVkLWlu
LWVwaGVtZXJhbC1zZXNzaW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3RzIHRo
YXQgc3RvcmFnZSBvZiBhZCBjbGljayBhdHRyaWJ1dGlvbiBpcyBkaXNhYmxlZCBpbiBlcGhlbWVy
YWwgc2Vzc2lvbnMuCisKKworCitObyBzdG9yZWQgQWQgQ2xpY2sgQXR0cmlidXRpb24gZGF0YS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0
b3JlLWRpc2FibGVkLWluLWVwaGVtZXJhbC1zZXNzaW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zdG9yZS1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vz
c2lvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1NzVlNTFjZmZlZTZiMmI3OWQ4MThkMDQ5NzI3YWNjYjU5
NjNkNGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tB
dHRyaWJ1dGlvbi9zdG9yZS1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi5odG1sCkBAIC0w
LDAgKzEsNDggQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVz
ZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBpbnRlcm5hbDpBZENsaWNrQXR0cmlidXRpb25FbmFibGVk
PXRydWUgXSAtLT4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9
IlVURi04Ij4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNl
LXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgorICAgIDxzY3JpcHQg
c3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJzZXRUaW1lb3V0KHJ1blRlc3QsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0
cyB0aGF0IHN0b3JhZ2Ugb2YgYWQgY2xpY2sgYXR0cmlidXRpb24gaXMgZGlzYWJsZWQgaW4gZXBo
ZW1lcmFsIHNlc3Npb25zLjwvZGl2PgorPGEgaWQ9InRhcmdldExpbmsiIGhyZWY9Imh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9hZENsaWNrQXR0cmlidXRpb24vc3RvcmUtZGlzYWJsZWQtaW4tZXBoZW1l
cmFsLXNlc3Npb24uaHRtbD9zdGVwVHdvIiBhZGNhbXBhaWduaWQ9IjMiIGFkZGVzdGluYXRpb249
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI+TGluazwvYT48YnI+Cis8ZGl2IGlkPSJvdXRwdXQiPjwv
ZGl2PgorPHNjcmlwdD4KKyAgICBwcmVwYXJlVGVzdCgpOworCisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQodHJ1
ZSk7CisKKyAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElEKSB7CisgICAgICAg
IHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElEKTsKKyAgICAg
ICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRo
IC8gMjsKKyAgICAgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQu
b2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBj
ZW50ZXJZKS50aGVuKAorICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgUHJvbWlzZSByZWplY3RlZC4i
OworICAgICAgICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLnNl
YXJjaCA9PT0gIj9zdGVwVHdvIikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFk
Q2xpY2tBdHRyaWJ1dGlvbigpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3Zl
Q2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKSk7CisgICAgICAgICAg
ICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgYWN0aXZhdGVFbGVtZW50KCJ0YXJnZXRMaW5rIik7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0
cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgTm8gdGVzdFJ1bm5lci4iOworICAgICAgICB9CisgICAg
fQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367848</attachid>
            <date>2019-04-19 15:55:52 -0700</date>
            <delta_ts>2019-04-19 16:02:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197108-20190419155551.patch</filename>
            <type>text/plain</type>
            <size>58488</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmUwNDhmYzNkY2E1YzBk
NzZjMmZlNDI1MTM2MTc0NDNlNDE3NzMxYS4uMTM2MjNlYTUwYjgxYmI3MjNiZjc0ZjI3Y2I0NWU4
MDRkODkyYTI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA0LTE5ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIERpc2FibGUgQWQgQ2xp
Y2sgQXR0cmlidXRpb24gaW4gZXBoZW1lcmFsIHNlc3Npb25zIGFuZCBtYWtlIHN1cmUgY29udmVy
c2lvbiByZXF1ZXN0cyB1c2UgYW4gZXBoZW1lcmFsLCBzdGF0ZWxlc3Mgc2Vzc2lvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MTA4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS80OTkxODcwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24v
Y29udmVyc2lvbi1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi5odG1sCisgICAgICAgICAg
ICAgICBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zdG9yZS1kaXNhYmxlZC1pbi1lcGhl
bWVyYWwtc2Vzc2lvbi5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpwYXJzZUFkQ2xpY2tBdHRy
aWJ1dGlvbiBjb25zdCk6CisgICAgICAgICAgICBFYXJseSByZXR1cm4gZm9yIGVwaGVtZXJhbCBz
ZXNzaW9ucy4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKToKKyAg
ICAgICAgICAgIE5vdyByZXR1cm5zIGZhbHNlIGZvciBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTpF
cGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaDoKKyAgICAgICAgICAgIEFkZGVkIGVudW0gdmFsdWUg
RXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzcy4KKwogMjAxOS0wNC0xOCAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvcmluZzogUHVsbCBhbGwgZnVs
bHNjcmVlbiBjb2RlIG91dCBvZiBEb2N1bWVudCBhbmQgaW50byBpdHMgb3duIGhlbHBlciBjbGFz
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBiNzdlM2Y2ZmY4MjYxYzBhNDhhMmVmZjVhMzVmMjJkOTk2N2Y3MjA0Li4w
Zjg0NTQ1YjFhYTY1NGYwYzMxZmEzOThlYTdiMjI4ZjEwOWQ1MjljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ0IEBACisyMDE5LTA0LTE5ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29t
PgorCisgICAgICAgIERpc2FibGUgQWQgQ2xpY2sgQXR0cmlidXRpb24gaW4gZXBoZW1lcmFsIHNl
c3Npb25zIGFuZCBtYWtlIHN1cmUgY29udmVyc2lvbiByZXF1ZXN0cyB1c2UgYW4gZXBoZW1lcmFs
LCBzdGF0ZWxlc3Mgc2Vzc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk3MTA4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80OTkxODcwMj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGludHJvZHVjZXMgYSBuZXcgTlNVUkxTZXNzaW9uIGluIFdlYktpdDo6TmV0d29ya1Nlc3Npb25D
b2NvYSBjYWxsZWQKKyAgICAgICAgbV9lcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzU2Vzc2lv
bi4gQXMgaXRzIG5hbWUgaW1wbGllcywgaXQncyBlcGhlbWVyYWwsIAorICAgICAgICBzdGF0ZWxl
c3MsIGFuZCBoYXMgYSBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lOZXZlciBjb29raWUgcG9saWN5
LgorCisgICAgICAgIFRoZSBuZXcgc2Vzc2lvbiBjYW4gYmUgaW52b2tlZCB3aXRoIHRoZSBuZXcg
ZW51bSB2YWx1ZSBvZgorICAgICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBj
YWxsZWQgRXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzcy4KKworICAgICAgICBXZWJLaXQ6OkFk
Q2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmZpcmVDb252ZXJzaW9uUmVxdWVzdCgpIG1ha2VzIHVz
ZSBvZgorICAgICAgICB0aGUgbmV3IHNlc3Npb24gZm9yIGl0cyBjb252ZXJzaW9uIHJlcXVlc3Rz
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyBzdXJlIHRoYXQgQWQgQ2xpY2sgQXR0
cmlidXRpb25zIGNhbm5vdCBiZSBzdG9yZWQgaW4KKyAgICAgICAgZXBoZW1lcmFsIHNlc3Npb25z
IGFuZCBhbHJlYWR5IHN0b3JlZCBhdHRyaWJ1dGlvbnMgY2Fubm90IGJlIGNvbnZlcnRlZCBpbgor
ICAgICAgICBlcGhlbWVyYWwgc2Vzc2lvbnMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9B
ZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWRDbGlja0F0
dHJpYnV0aW9uTWFuYWdlcjo6ZmlyZUNvbnZlcnNpb25SZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Rh
dGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0RhdGFUYXNrQ29jb2E6On5OZXR3b3JrRGF0YVRhc2tDb2NvYSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjppbml0aWFsaXplRXBoZW1lcmFs
U3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbkNvY29hOjppbnZhbGlkYXRlQW5kQ2FuY2VsKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmg6CisKIDIwMTktMDQtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBJbXByb3ZlIGRldGVjdGlvbiBvZiB3aGVuIHdlYiB2
aWV3cyBnbyB0byBiYWNrZ3JvdW5kIC8gZm9yZWdyb3VuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBbmNob3JFbGVtZW50LmNwcAppbmRleCA1YTFkY2U4YzU1ZGYzOTZjZTRhZjdkNTk0ODExZDY4
N2NkNWUyM2FkLi42NWE1OWIyZGEzM2MwMmVjOWUzNTVkODE0YWE4MDY3NzM0NGM3MGQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtNDA1LDcgKzQwNSw5
IEBAIE9wdGlvbmFsPEFkQ2xpY2tBdHRyaWJ1dGlvbj4gSFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNl
QWRDbGlja0F0dHJpYnV0aW9uKCkgY29uc3QKICAgICB1c2luZyBTb3VyY2UgPSBBZENsaWNrQXR0
cmlidXRpb246OlNvdXJjZTsKICAgICB1c2luZyBEZXN0aW5hdGlvbiA9IEFkQ2xpY2tBdHRyaWJ1
dGlvbjo6RGVzdGluYXRpb247CiAKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuYWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCgpIHx8ICFVc2VyR2VzdHVy
ZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCisgICAgaWYgKGRvY3VtZW50KCku
c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKQorICAgICAgICB8fCAhUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5hZENsaWNrQXR0cmlidXRpb25FbmFibGVkKCkKKyAgICAg
ICAgfHwgIVVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIGlmICghaGFzQXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihhZGNhbXBhaWduaWRBdHRyKSAmJiAhaGFzQXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihhZGRlc3RpbmF0aW9uQXR0cikpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA1NDg5OGVmZTEyNmUyZTUzOWNkMzFjOTRmYzg3YjI1
NTcwNmRmYTNiLi4zMDRiMjE5OWFhZWEwNTI5OGZmMDI3NDExZTFkMDVhNzIxYTZhZjQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTcxNyw3ICs3MTcsNyBA
QCB2b2lkIFJlc291cmNlTG9hZGVyOjpjYW5ub3RTaG93VVJMKFJlc291cmNlSGFuZGxlKikKIAog
Ym9vbCBSZXNvdXJjZUxvYWRlcjo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKQogewotICAg
IGlmIChtX29wdGlvbnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3k6OkRvTm90VXNlKQorICAgIGlmIChtX29wdGlvbnMuc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgIT0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kuaAppbmRleCAxMzZjZDcxZTFlYWI5NTBkYzlmY2UyNDEzYjYzODk4MDNhN2M3
NjdkLi4xNDk1YTA4MjE4MTVmMzNiZGZkOWM2NWQ3YjQzNDk0OWE2MjVhYzU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N0b3JlZENyZWRlbnRpYWxzUG9saWN5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TdG9yZWRDcmVkZW50aWFs
c1BvbGljeS5oCkBAIC0yNyw5ICsyNywxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVu
dW0gY2xhc3MgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgOiBib29sIHsKK2VudW0gY2xhc3MgU3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgOiB1aW50OF90IHsKICAgICBEb05vdFVzZSwKICAgICBVc2Us
CisgICAgRXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzcwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNr
QXR0cmlidXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRD
bGlja0F0dHJpYnV0aW9uTWFuYWdlci5jcHAKaW5kZXggNDUzNThhOTYxMGE0OGNlN2ZkMzBlZjAy
ODRlYWZlZjRlNjdmNWU1ZC4uYzc5OTc5OTBjYjYzMTJlZThjMGZhNTFjNDU4YjQwNzFkZmU4Mzhl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmli
dXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xp
Y2tBdHRyaWJ1dGlvbk1hbmFnZXIuY3BwCkBAIC0xMTksOSArMTE5LDggQEAgdm9pZCBBZENsaWNr
QXR0cmlidXRpb25NYW5hZ2VyOjpmaXJlQ29udmVyc2lvblJlcXVlc3QoY29uc3QgQWRDbGlja0F0
dHJpYnV0aW9uJgogICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QgPSByZXF1ZXN0OwogICAgIGxv
YWRQYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29udmVy
c2lvblJlZmVycmVyVVJMKTsKICAgICBsb2FkUGFyYW1ldGVycy5wYXJlbnRQSUQgPSBwcmVzZW50
aW5nQXBwbGljYXRpb25QSUQoKTsKLSAgICAvLyBGSVhNRTogU3dpdGNoIHRvIHRoZSB1c2Ugb2Yg
YW4gZXBoZW1lcmFsLCBzdGF0ZWxlc3Mgc2Vzc2lvbi4KICAgICBsb2FkUGFyYW1ldGVycy5zZXNz
aW9uSUQgPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwotICAgIGxvYWRQYXJh
bWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6
OkRvTm90VXNlOworICAgIGxvYWRQYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0g
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3M7CiAg
ICAgbG9hZFBhcmFtZXRlcnMub3B0aW9ucyA9IG9wdGlvbnM7CiAgICAgbG9hZFBhcmFtZXRlcnMu
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCA9IHRydWU7CiAgICAgbG9h
ZFBhcmFtZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MgPSBmYWxzZTsKQEAg
LTE4MSw3ICsxODAsNyBAQCB2b2lkIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmNsZWFyKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZAogdm9pZCBBZENsaWNrQXR0
cmlidXRpb25NYW5hZ2VyOjp0b1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgaWYgKG1fdW5jb252ZXJ0ZWRBZENs
aWNrQXR0cmlidXRpb25NYXAuaXNFbXB0eSgpICYmIG1fY29udmVydGVkQWRDbGlja0F0dHJpYnV0
aW9uTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCJObyBz
dG9yZWQgQWQgQ2xpY2sgQXR0cmlidXRpb24gZGF0YS5cbiJfcyk7CisgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcigiXG5ObyBzdG9yZWQgQWQgQ2xpY2sgQXR0cmlidXRpb24gZGF0YS5c
biJfcyk7CiAKICAgICB1bnNpZ25lZCB1bmNvbnZlcnRlZEF0dHJpYnV0aW9uTnVtYmVyID0gMDsK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAppbmRleCA4MjlmN2MyMDI0ODViNzNhYTZiOTM4
NjQ4YmU5Zjk2ZDc1YjE3ZDVkLi4zMWQxMWMzYThhZWNiMmFhZmQ0OWU1YzMxMDM5OGUwYWMxNmRk
ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
aGVja2VyLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5Owog
c3RydWN0IENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OwogZW51bSBjbGFzcyBQcmVmbGlnaHRQb2xpY3kgOiB1aW50OF90OwotZW51bSBjbGFzcyBTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JlZENyZWRlbnRpYWxz
UG9saWN5IDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNzhjZWJkNGUwZmZlZjAz
MmE1YmY5ZjU4ZjFlNzQ2MGNiYjI5MWY5Mi4uODljMjk4NWQwZTIyZWNhYTZkMGMzMTY1N2M3NDY5
Yjc1YzdjNDFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaApAQCAtNzcsNyArNzcsNyBAQCBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBj
bGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgU1dTZXJ2ZXI7CiBlbnVtIGNsYXNzIEluY2x1ZGVI
dHRwT25seUNvb2tpZXMgOiBib29sOwotZW51bSBjbGFzcyBTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IDogdWludDhfdDsK
IHN0cnVjdCBDbGllbnRPcmlnaW47CiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CiBz
dHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggODc2NDY4OGVlZjA1
NmE0NmU2MmExMjcyMjNmMTE3YTUxZjQxMDZkYS4uMWJkZDViZDMwNWRhZTdjMjAzNzMzMWY2YzY1
NDY0NWE4ZDk2NzRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04Miw3ICs4Miw3IEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDYW5jZWxQcmVwYXJlVG9T
dXNwZW5kKCkKICAgICBQcm9jZXNzRGlkUmVzdW1lKCkKIAotICAgIFByZWNvbm5lY3RUbyhVUkwg
dXJsLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kpOworICAgIFByZWNvbm5lY3RUbyhVUkwgdXJsLCBlbnVtOnVpbnQ4X3Qg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kp
OwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBDbGVhclByZXZh
bGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gcmVzb3VyY2VEb21haW4pIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZjE0
NTlkN2RjMmU3ZjEwMzg1ZWZiYmJiMTk1M2JjZjVkNzVhNmM1ZC4uY2IxNzk0ZGUyNzcwYjZiYjlh
ZGJjZTk1MjBiM2ZhODE1OTljMDNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTg2LDEzICs1ODYsMTUg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICArK21fcmVkaXJlY3RDb3VudDsKIAogICAg
IGF1dG8mIHJlZGlyZWN0VVJMID0gcmVkaXJlY3RSZXF1ZXN0LnVybCgpOwotICAgIGlmIChhdXRv
IGFkQ2xpY2tDb252ZXJzaW9uID0gQWRDbGlja0F0dHJpYnV0aW9uOjpwYXJzZUNvbnZlcnNpb25S
ZXF1ZXN0KHJlZGlyZWN0VVJMKSkgewotICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWRpcmVj
dERvbWFpbiB7IHJlZGlyZWN0VVJMIH07Ci0gICAgICAgIGF1dG8mIGZpcnN0UGFydHlVUkwgPSBy
ZWRpcmVjdFJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKTsKLSAgICAgICAgTmV0d29ya1Nl
c3Npb24qIG5ldHdvcmtTZXNzaW9uOwotICAgICAgICAvLyBUaGUgcmVkaXJlY3QgaGFzIHRvIGJl
IGRvbmUgYnkgdGhlIHNhbWUgcmVnaXN0cmFibGUgZG9tYWluIGFuZCBpdCBoYXMgdG8gYmUgYSB0
aGlyZC1wYXJ0eSByZXF1ZXN0LgotICAgICAgICBpZiAocmVkaXJlY3REb21haW4ubWF0Y2hlcyhy
ZXF1ZXN0LnVybCgpKSAmJiAhcmVkaXJlY3REb21haW4ubWF0Y2hlcyhmaXJzdFBhcnR5VVJMKSAm
JiAobmV0d29ya1Nlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKCkpKSkKLSAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jb252
ZXJ0QWRDbGlja0F0dHJpYnV0aW9uKEFkQ2xpY2tBdHRyaWJ1dGlvbjo6U291cmNlIHsgV1RGTW92
ZShyZWRpcmVjdERvbWFpbikgfSwgQWRDbGlja0F0dHJpYnV0aW9uOjpEZXN0aW5hdGlvbiB7IGZp
cnN0UGFydHlVUkwgfSwgV1RGTW92ZSgqYWRDbGlja0NvbnZlcnNpb24pKTsKKyAgICBpZiAoIXNl
c3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gYWRDbGlja0NvbnZl
cnNpb24gPSBBZENsaWNrQXR0cmlidXRpb246OnBhcnNlQ29udmVyc2lvblJlcXVlc3QocmVkaXJl
Y3RVUkwpKSB7CisgICAgICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWRpcmVjdERvbWFpbiB7
IHJlZGlyZWN0VVJMIH07CisgICAgICAgICAgICBhdXRvJiBmaXJzdFBhcnR5VVJMID0gcmVkaXJl
Y3RSZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCk7CisgICAgICAgICAgICBOZXR3b3JrU2Vz
c2lvbiogbmV0d29ya1Nlc3Npb24gPSBudWxscHRyOworICAgICAgICAgICAgLy8gVGhlIHJlZGly
ZWN0IGhhcyB0byBiZSBkb25lIGJ5IHRoZSBzYW1lIHJlZ2lzdHJhYmxlIGRvbWFpbiBhbmQgaXQg
aGFzIHRvIGJlIGEgdGhpcmQtcGFydHkgcmVxdWVzdC4KKyAgICAgICAgICAgIGlmIChyZWRpcmVj
dERvbWFpbi5tYXRjaGVzKHJlcXVlc3QudXJsKCkpICYmICFyZWRpcmVjdERvbWFpbi5tYXRjaGVz
KGZpcnN0UGFydHlVUkwpICYmIChuZXR3b3JrU2Vzc2lvbiA9IG1fY29ubmVjdGlvbi0+bmV0d29y
a1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpKQorICAgICAgICAgICAgICAg
IG5ldHdvcmtTZXNzaW9uLT5jb252ZXJ0QWRDbGlja0F0dHJpYnV0aW9uKEFkQ2xpY2tBdHRyaWJ1
dGlvbjo6U291cmNlIHsgV1RGTW92ZShyZWRpcmVjdERvbWFpbikgfSwgQWRDbGlja0F0dHJpYnV0
aW9uOjpEZXN0aW5hdGlvbiB7IGZpcnN0UGFydHlVUkwgfSwgV1RGTW92ZSgqYWRDbGlja0NvbnZl
cnNpb24pKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGF1dG8gbWF4QWdlQ2FwID0gdmFsaWRh
dGVDYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbihyZXF1ZXN0LCByZWRpcmVjdFJlcXVl
c3QsIHJlZGlyZWN0UmVzcG9uc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggMWQwYTU5Zjc4
YzY0MjNjNDdlOWE3NjFlODUwMjJjOGI4MmM3YmM2ZC4uYzNmZTUwNjA4ZTk5ZjA0Y2Y2MGRjOWQ4
NGU0MGI4ZjI0Zjk2NTU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0xOTEsOSArMTkxLDEw
IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vz
c2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAgICAgfQogI2VuZGlmCiAKLSAgICBib29sIHNo
b3VsZEJsb2NrQ29va2llcyA9IGZhbHNlOworICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzID0g
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3k6OkVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3M7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKLSAgICBzaG91bGRCbG9ja0Nvb2tpZXMgPSBzZXNzaW9uLm5ldHdvcmtT
dG9yYWdlU2Vzc2lvbigpLnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBmcmFtZUlELCBwYWdl
SUQpOworICAgIGlmICghc2hvdWxkQmxvY2tDb29raWVzKQorICAgICAgICBzaG91bGRCbG9ja0Nv
b2tpZXMgPSBzZXNzaW9uLm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLnNob3VsZEJsb2NrQ29va2ll
cyhyZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQpOwogI2VuZGlmCiAgICAgcmVzdHJpY3RSZXF1ZXN0
UmVmZXJyZXJUb09yaWdpbklmTmVlZGVkKHJlcXVlc3QsIHNob3VsZEJsb2NrQ29va2llcyk7CiAK
QEAgLTIwMSwxNiArMjAyLDI1IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRh
c2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAgICAgYXBwbHlT
bmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKG5zUmVxdWVz
dCwgc2hvdWxkQ29udGVudFNuaWZmID09IFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeTo6
U25pZmZDb250ZW50ICYmICF1cmwuaXNMb2NhbEZpbGUoKSwgc2hvdWxkQ29udGVudEVuY29kaW5n
U25pZmYgPT0gV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmKTsK
IAogICAgIGF1dG8mIGNvY29hU2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29j
b2EmPihtX3Nlc3Npb24uZ2V0KCkpOwotICAgIGlmIChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9
PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKSB7CisgICAgc3dpdGNoIChz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSkgeworICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3k6OlVzZToKICAgICAgICAgbV90YXNrID0gW2NvY29hU2Vzc2lvbi5tX3Nlc3Np
b25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UgZGF0YVRhc2tXaXRoUmVxdWVzdDpuc1JlcXVlc3RdOwog
ICAgICAgICBBU1NFUlQoIWNvY29hU2Vzc2lvbi5tX2RhdGFUYXNrTWFwV2l0aENyZWRlbnRpYWxz
LmNvbnRhaW5zKFttX3Rhc2sgdGFza0lkZW50aWZpZXJdKSk7CiAgICAgICAgIGNvY29hU2Vzc2lv
bi5tX2RhdGFUYXNrTWFwV2l0aENyZWRlbnRpYWxzLmFkZChbbV90YXNrIHRhc2tJZGVudGlmaWVy
XSwgdGhpcyk7CiAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgQ3JlYXRpbmcgc3Rh
dGVmdWwgTmV0d29ya0RhdGFUYXNrIHdpdGggVVJMICVzIiwgW21fdGFzayB0YXNrSWRlbnRpZmll
cl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7Ci0gICAgfSBlbHNl
IHsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeTo6RG9Ob3RVc2U6CiAgICAgICAgIG1fdGFzayA9IFtjb2NvYVNlc3Npb24ubV9zdGF0ZWxl
c3NTZXNzaW9uIGRhdGFUYXNrV2l0aFJlcXVlc3Q6bnNSZXF1ZXN0XTsKICAgICAgICAgQVNTRVJU
KCFjb2NvYVNlc3Npb24ubV9kYXRhVGFza01hcFdpdGhvdXRTdGF0ZS5jb250YWlucyhbbV90YXNr
IHRhc2tJZGVudGlmaWVyXSkpOwogICAgICAgICBjb2NvYVNlc3Npb24ubV9kYXRhVGFza01hcFdp
dGhvdXRTdGF0ZS5hZGQoW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIHRoaXMpOwogICAgICAgICBM
T0coTmV0d29ya1Nlc3Npb24sICIlbGx1IENyZWF0aW5nIHN0YXRlbGVzcyBOZXR3b3JrRGF0YVRh
c2sgd2l0aCBVUkwgJXMiLCBbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5h
YnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVz
czoKKyAgICAgICAgbV90YXNrID0gW2NvY29hU2Vzc2lvbi5tX2VwaGVtZXJhbFN0YXRlbGVzc0Nv
b2tpZWxlc3NTZXNzaW9uIGRhdGFUYXNrV2l0aFJlcXVlc3Q6bnNSZXF1ZXN0XTsKKyAgICAgICAg
QVNTRVJUKCFjb2NvYVNlc3Npb24ubV9kYXRhVGFza01hcEVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tp
ZWxlc3MuY29udGFpbnMoW21fdGFzayB0YXNrSWRlbnRpZmllcl0pKTsKKyAgICAgICAgY29jb2FT
ZXNzaW9uLm1fZGF0YVRhc2tNYXBFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzLmFkZChbbV90
YXNrIHRhc2tJZGVudGlmaWVyXSwgdGhpcyk7CisgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwg
IiVsbHUgQ3JlYXRpbmcgZXBoZW1lcmFsLCBzdGF0ZWxlc3MsIGNvb2tpZWxlc3MgTmV0d29ya0Rh
dGFUYXNrIHdpdGggVVJMICVzIiwgW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIG5zUmVxdWVzdC5V
UkwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAog
ICAgIGlmIChzaG91bGRQcmVjb25uZWN0T25seSA9PSBQcmVjb25uZWN0T25seTo6WWVzKSB7CkBA
IC0yNTAsMTIgKzI2MCwxOSBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6fk5ldHdvcmtEYXRhVGFz
a0NvY29hKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgY29jb2FTZXNzaW9uID0gc3Rh
dGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSY+KG1fc2Vzc2lvbi5nZXQoKSk7Ci0gICAgaWYg
KG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3k6OlVzZSkgeworICAgIHN3aXRjaCAobV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSkgewor
ICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZToKICAgICAgICAg
QVNTRVJUKGNvY29hU2Vzc2lvbi5tX2RhdGFUYXNrTWFwV2l0aENyZWRlbnRpYWxzLmdldChbbV90
YXNrIHRhc2tJZGVudGlmaWVyXSkgPT0gdGhpcyk7CiAgICAgICAgIGNvY29hU2Vzc2lvbi5tX2Rh
dGFUYXNrTWFwV2l0aENyZWRlbnRpYWxzLnJlbW92ZShbbV90YXNrIHRhc2tJZGVudGlmaWVyXSk7
Ci0gICAgfSBlbHNlIHsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2U6CiAgICAgICAgIEFTU0VSVChjb2NvYVNlc3Npb24u
bV9kYXRhVGFza01hcFdpdGhvdXRTdGF0ZS5nZXQoW21fdGFzayB0YXNrSWRlbnRpZmllcl0pID09
IHRoaXMpOwogICAgICAgICBjb2NvYVNlc3Npb24ubV9kYXRhVGFza01hcFdpdGhvdXRTdGF0ZS5y
ZW1vdmUoW21fdGFzayB0YXNrSWRlbnRpZmllcl0pOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3NDb29r
aWVsZXNzOgorICAgICAgICBBU1NFUlQoY29jb2FTZXNzaW9uLm1fZGF0YVRhc2tNYXBFcGhlbWVy
YWxTdGF0ZWxlc3NDb29raWVsZXNzLmdldChbbV90YXNrIHRhc2tJZGVudGlmaWVyXSkgPT0gdGhp
cyk7CisgICAgICAgIGNvY29hU2Vzc2lvbi5tX2RhdGFUYXNrTWFwRXBoZW1lcmFsU3RhdGVsZXNz
Q29va2llbGVzcy5yZW1vdmUoW21fdGFzayB0YXNrSWRlbnRpZmllcl0pOworICAgICAgICBicmVh
azsKICAgICB9CiB9CiAKQEAgLTM0NCw4ICszNjEsMTAgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tD
b2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYKICAgICBpZiAoaXNUb3BMZXZlbE5hdmlnYXRpb24oKSkKICAgICAgICAgcmVxdWVzdC5zZXRG
aXJzdFBhcnR5Rm9yQ29va2llcyhyZXF1ZXN0LnVybCgpKTsKIAorICAgIGJvb2wgc2hvdWxkQmxv
Y2tDb29raWVzID0gbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzczsKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVz
ID0gbV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS5zaG91bGRCbG9ja0Nvb2tpZXMo
cmVxdWVzdCwgbV9mcmFtZUlELCBtX3BhZ2VJRCk7CisgICAgaWYgKCFzaG91bGRCbG9ja0Nvb2tp
ZXMpCisgICAgICAgIHNob3VsZEJsb2NrQ29va2llcyA9IG1fc2Vzc2lvbi0+bmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKCkuc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIG1fZnJhbWVJRCwgbV9wYWdl
SUQpOwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmIChtX3Nlc3Npb24tPnNob3Vs
ZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCiAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQg
PSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgdGFza0lEID0gJWx1OiAlcyBjb29raWVzIGZvciByZWRp
cmVjdCBVUkwgJXMiLCB0aGlzLCBtX3BhZ2VJRCwgbV9mcmFtZUlELCAodW5zaWduZWQgbG9uZylb
bV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNob3VsZEJsb2NrQ29va2llcyA/ICJCbG9ja2luZyIg
OiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5oCmluZGV4IDRiNTA4Y2I4MDVhYWMzZDY5ZGM3NTlmZWNkMGVlMmIzYjEw
NzU4MGQuLmFiZTNlOGY4MDk4NGM5NWM4NmMyNTRlMTJiYzI1ZGUyNTkyOTQ4ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKIE9CSkNfQ0xBU1MgTlNEYXRhOwogT0JKQ19D
TEFTUyBOU1VSTFNlc3Npb247CitPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb247
CiBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzazsKIE9CSkNfQ0xBU1MgTlNPcGVy
YXRpb25RdWV1ZTsKIE9CSkNfQ0xBU1MgV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlOwpAQCAtNDcs
NiArNDgsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRl
KE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiAg
ICAgfk5ldHdvcmtTZXNzaW9uQ29jb2EoKTsKIAorICAgIHZvaWQgaW5pdGlhbGl6ZUVwaGVtZXJh
bFN0YXRlbGVzc0Nvb2tpZWxlc3NTZXNzaW9uKE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24qKTsK
KwogICAgIGNvbnN0IFN0cmluZyYgc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkg
Y29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXIoKSBjb25zdDsKICAgICAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IE5ldHdvcmtT
ZXNzaW9uIGhhcyBiZWVuIGNyZWF0ZWQuCkBAIC03NywxMiArODAsMTUgQEAgcHJpdmF0ZToKIAog
ICAgIEhhc2hNYXA8TmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyLCBOZXR3b3Jr
RGF0YVRhc2tDb2NvYSo+IG1fZGF0YVRhc2tNYXBXaXRoQ3JlZGVudGlhbHM7CiAgICAgSGFzaE1h
cDxOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIE5ldHdvcmtEYXRhVGFza0Nv
Y29hKj4gbV9kYXRhVGFza01hcFdpdGhvdXRTdGF0ZTsKKyAgICBIYXNoTWFwPE5ldHdvcmtEYXRh
VGFza0NvY29hOjpUYXNrSWRlbnRpZmllciwgTmV0d29ya0RhdGFUYXNrQ29jb2EqPiBtX2RhdGFU
YXNrTWFwRXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzczsKICAgICBIYXNoTWFwPE5ldHdvcmtE
YXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciwgRG93bmxvYWRJRD4gbV9kb3dubG9hZE1hcDsK
IAogICAgIFJldGFpblB0cjxOU1VSTFNlc3Npb24+IG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3Rv
cmFnZTsKICAgICBSZXRhaW5QdHI8V0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlPiBtX3Nlc3Npb25X
aXRoQ3JlZGVudGlhbFN0b3JhZ2VEZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9u
PiBtX3N0YXRlbGVzc1Nlc3Npb247CiAgICAgUmV0YWluUHRyPFdLTmV0d29ya1Nlc3Npb25EZWxl
Z2F0ZT4gbV9zdGF0ZWxlc3NTZXNzaW9uRGVsZWdhdGU7CisgICAgUmV0YWluUHRyPE5TVVJMU2Vz
c2lvbj4gbV9lcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzU2Vzc2lvbjsKKyAgICBSZXRhaW5Q
dHI8V0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlPiBtX2VwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxl
c3NTZXNzaW9uRGVsZWdhdGU7CiAKICAgICBTdHJpbmcgbV9ib3VuZEludGVyZmFjZUlkZW50aWZp
ZXI7CiAgICAgU3RyaW5nIG1fc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCmluZGV4IDI0NzU4ZmZjMDNhMzg5MDkyYTA0ZGUxZjk1YzViODI0ODYzZjZj
NTYuLjUxMDc3MTU4NTdiMTFmODgzNDZmYTY3ZDUwNWZkMmZmMDE4NzY0OTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0KQEAgLTk4MSw2ICs5ODEsOCBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3Jr
U2Vzc2lvbkNvY29hKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogICAg
IG1fc3RhdGVsZXNzU2Vzc2lvbkRlbGVnYXRlID0gYWRvcHROUyhbW1dLTmV0d29ya1Nlc3Npb25E
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhOZXR3b3JrU2Vzc2lvbjoqdGhpcyB3aXRoQ3JlZGVudGlh
bHM6ZmFsc2VdKTsKICAgICBtX3N0YXRlbGVzc1Nlc3Npb24gPSBbTlNVUkxTZXNzaW9uIHNlc3Np
b25XaXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uIGRlbGVnYXRlOnN0YXRpY19jYXN0PGlk
PihtX3N0YXRlbGVzc1Nlc3Npb25EZWxlZ2F0ZS5nZXQoKSkgZGVsZWdhdGVRdWV1ZTpbTlNPcGVy
YXRpb25RdWV1ZSBtYWluUXVldWVdXTsKIAorICAgIGluaXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxl
c3NDb29raWVsZXNzU2Vzc2lvbihjb25maWd1cmF0aW9uKTsKKwogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
ID0gcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OwogICAgIG1fc2hv
dWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHBhcmFtZXRlcnMu
c2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA/IFNob3VsZElu
Y2x1ZGVMb2NhbGhvc3Q6OlllcyA6IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6Ok5vOwpAQCAtOTk4
LDE0ICsxMDAwLDM3IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6On5OZXR3b3JrU2Vzc2lvbkNvY29h
KCkKIHsKIH0KIAordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbml0aWFsaXplRXBoZW1lcmFs
U3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb24oTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiAqZXhp
c3RpbmdDb25maWd1cmF0aW9uKQoreworICAgIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gKmNv
bmZpZ3VyYXRpb24gPSBbTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiBlcGhlbWVyYWxTZXNzaW9u
Q29uZmlndXJhdGlvbl07CisgICAgCisgICAgY29uZmlndXJhdGlvbi5IVFRQQ29va2llQWNjZXB0
UG9saWN5ID0gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI7CisgICAgY29uZmlndXJhdGlv
bi5VUkxDcmVkZW50aWFsU3RvcmFnZSA9IG5pbDsKKyAgICBjb25maWd1cmF0aW9uLlVSTENhY2hl
ID0gbmlsOworICAgIGNvbmZpZ3VyYXRpb24uYWxsb3dzQ2VsbHVsYXJBY2Nlc3MgPSBleGlzdGlu
Z0NvbmZpZ3VyYXRpb24uYWxsb3dzQ2VsbHVsYXJBY2Nlc3M7CisgICAgY29uZmlndXJhdGlvbi5j
b25uZWN0aW9uUHJveHlEaWN0aW9uYXJ5ID0gZXhpc3RpbmdDb25maWd1cmF0aW9uLmNvbm5lY3Rp
b25Qcm94eURpY3Rpb25hcnk7CisKKyAgICBjb25maWd1cmF0aW9uLl9zaG91bGRTa2lwUHJlZmVy
cmVkQ2xpZW50Q2VydGlmaWNhdGVMb29rdXAgPSBZRVM7CisgICAgY29uZmlndXJhdGlvbi5fc291
cmNlQXBwbGljYXRpb25BdWRpdFRva2VuRGF0YSA9IGV4aXN0aW5nQ29uZmlndXJhdGlvbi5fc291
cmNlQXBwbGljYXRpb25BdWRpdFRva2VuRGF0YTsKKyAgICBjb25maWd1cmF0aW9uLl9zb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgPSBleGlzdGluZ0NvbmZpZ3VyYXRpb24uX3Nv
dXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorICAgIGNvbmZpZ3VyYXRpb24uX0NURGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZSA9IGV4
aXN0aW5nQ29uZmlndXJhdGlvbi5fQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlOworI2VuZGlm
CisKKyAgICBtX2VwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3NTZXNzaW9uRGVsZWdhdGUgPSBh
ZG9wdE5TKFtbV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aE5ldHdvcmtT
ZXNzaW9uOip0aGlzIHdpdGhDcmVkZW50aWFsczpmYWxzZV0pOworICAgIG1fZXBoZW1lcmFsU3Rh
dGVsZXNzQ29va2llbGVzc1Nlc3Npb24gPSBbTlNVUkxTZXNzaW9uIHNlc3Npb25XaXRoQ29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uIGRlbGVnYXRlOnN0YXRpY19jYXN0PGlkPihtX2VwaGVtZXJh
bFN0YXRlbGVzc0Nvb2tpZWxlc3NTZXNzaW9uRGVsZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6
W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07Cit9CisKIHZvaWQgTmV0d29ya1Nlc3Npb25D
b2NvYTo6aW52YWxpZGF0ZUFuZENhbmNlbCgpCiB7CiAgICAgTmV0d29ya1Nlc3Npb246OmludmFs
aWRhdGVBbmRDYW5jZWwoKTsKIAogICAgIFttX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Ug
aW52YWxpZGF0ZUFuZENhbmNlbF07CiAgICAgW21fc3RhdGVsZXNzU2Vzc2lvbiBpbnZhbGlkYXRl
QW5kQ2FuY2VsXTsKKyAgICBbbV9lcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzU2Vzc2lvbiBp
bnZhbGlkYXRlQW5kQ2FuY2VsXTsKICAgICBbbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdl
RGVsZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVkXTsKICAgICBbbV9zdGF0ZWxlc3NTZXNzaW9uRGVs
ZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVkXTsKKyAgICBbbV9lcGhlbWVyYWxTdGF0ZWxlc3NDb29r
aWVsZXNzU2Vzc2lvbkRlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07CiB9CiAKIHZvaWQgTmV0
d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJDcmVkZW50aWFscygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGVkMDI3ZWIzMDQ2NjExNDdlNGVmMWZk
YjYwNmNhODE1MTA3MDMyMDIuLmQ4ODJmYjY4ZDg5MWFhMmVlYzcxN2NmNGEyYWYzYjA0M2JmMzAy
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBA
IC04NTQsNiArODU0LDE1IEBAIHRlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6
OldvcmtlclR5cGU+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeT4geworICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LAor
ICAgICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UsCisgICAg
ICAgIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UsCisgICAgICAgIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNz
CisgICAgPjsKK307CisKICNpZiBVU0UoQ1VSTCkKIHRlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzOjpNb2RlPiB7CiAgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0Y2I3NmQ1NjViNjNlZDc1ZmI0NTFjYTM5NTIzNmNkNmQ3
NGVjMWQyLi42OGFiYmZjMzdmNTJkOTU0ODhjYzQ3ZGE0YzQ2OTVhNDgzNjk3MTJjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTktMDQtMTkgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgRGlzYWJsZSBBZCBDbGljayBBdHRyaWJ1dGlvbiBpbiBlcGhlbWVy
YWwgc2Vzc2lvbnMgYW5kIG1ha2Ugc3VyZSBjb252ZXJzaW9uIHJlcXVlc3RzIHVzZSBhbiBlcGhl
bWVyYWwsIHN0YXRlbGVzcyBzZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTcxMDgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ5OTE4NzAy
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4Y2Vw
dCBmb3IgdGhlIGRldGFpbHMgYmVsb3csIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0aGUgdXRpbGl0
eSBmdW5jdGlvbnMKKyAgICAgICAgcHJlcGFyZVRlc3QoKSBhbmQgdGVhckRvd25BbmRGaW5pc2go
KSBhbmQgYWxsIGFwcGxpY2FibGUgdGVzdHMgbm93IG1ha2UgdXNlCisgICAgICAgIG9mIHRoZW0u
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1j
b252ZXJzaW9uLXRocm91Z2gtY3Jvc3Mtc2l0ZS1pbWFnZS1yZWRpcmVjdC5odG1sOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24t
dGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRoLXByaW9yaXR5Lmh0bWw6CisgICAgICAgICogaHR0
cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdo
LWltYWdlLXJlZGlyZWN0LXdpdGhvdXQtcHJpb3JpdHkuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9jb252ZXJzaW9uLWRpc2FibGVkLWluLWVwaGVtZXJhbC1z
ZXNzaW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hZENsaWNr
QXR0cmlidXRpb24vY29udmVyc2lvbi1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi5odG1s
OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9z
ZW5kLWF0dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVxdWVzdC5odG1sLgorICAgICAgICAqIGh0dHAv
dGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy9jb252ZXJzaW9uUmVwb3J0LnBocDoK
KyAgICAgICAgICAgIE5vdyB0cmllcyB0byBzZXQgYSBjb29raWUgaW4gdGhlIHJlc3BvbnNlLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy91dGlsLmpz
OiBBZGRlZC4KKyAgICAgICAgKHByZXBhcmVUZXN0KToKKyAgICAgICAgKHRlYXJEb3duQW5kRmlu
aXNoKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtYXR0
cmlidXRpb24tY29udmVydGVkLXdpdGgtaGlnaGVyLXByaW9yaXR5Lmh0bWw6CisgICAgICAgICog
aHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWF0dHJpYnV0aW9uLWNvbnZlcnRl
ZC13aXRoLWxvd2VyLXByaW9yaXR5Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9hZENsaWNr
QXR0cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24td2l0aC1oaWdoZXItcHJpb3JpdHkuaHRtbDoK
KyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtY29udmVyc2lv
bi13aXRoLWxvd2VyLXByaW9yaXR5Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9hZENsaWNr
QXR0cmlidXRpb24vc2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlbmQtYXR0cmli
dXRpb24tY29udmVyc2lvbi1yZXF1ZXN0Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9hZENs
aWNrQXR0cmlidXRpb24vc3RvcmUtYWQtY2xpY2stYXR0cmlidXRpb24uaHRtbDoKKyAgICAgICAg
ICAgIE5vdyBzZXRzIGEgY29va2llIHdoaWNoIGlzIGNoZWNrZWQgZm9yIGl0IGluIHRoZSBjb252
ZXJzaW9uIHJlcG9ydC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9z
dG9yZS1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWRpc2FibGVkLWlu
LWVwaGVtZXJhbC1zZXNzaW9uLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWFkLWNsaWNrLWF0dHJpYnV0aW9uLmh0bWwuCisK
IDIwMTktMDQtMTggIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAg
QmxvYiB0eXBlIGNhbm5vdCBiZSBzdG9yZWQgY29ycmVjdGx5IGluIElEQiB3aGVuIElEQk9iamVj
dFN0b3JlIGhhcyBhdXRvSW5jcmVtZW50IGFuZCBrZXlQYXRoIG9wdGlvbnMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNv
bnZlcnNpb24tdGhyb3VnaC1jcm9zcy1zaXRlLWltYWdlLXJlZGlyZWN0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9u
LXRocm91Z2gtY3Jvc3Mtc2l0ZS1pbWFnZS1yZWRpcmVjdC5odG1sCmluZGV4IDMxMjQwNjczOWY1
YTliOGM4MzI4NTc5YmMxNmU3YjI5ODhlODBmZjQuLjQ0M2FmODcxZTA5ZWUxN2MyY2IyMTc3ZGI0
Y2E5ZDk2NzcxZDg3MWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlj
a0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1jcm9zcy1zaXRlLWlt
YWdlLXJlZGlyZWN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0
cmlidXRpb24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWNyb3NzLXNpdGUtaW1hZ2Ut
cmVkaXJlY3QuaHRtbApAQCAtNCwxNyArNCwxNCBAQAogICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04
Ij4KICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRo
LCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgogICAgIDxzY3JpcHQgc3JjPSIv
anMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJz
ZXRUaW1lb3V0KHJ1blRlc3QsIDApIj4KIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0cyB0aGF0
IHRyaWdnZXJpbmcgb2YgYWQgY2xpY2sgYXR0cmlidXRpb24gY29udmVyc2lvbnMgdGhyb3VnaCBj
cm9zcy1zaXRlIHJlZGlyZWN0cyBkbyBub3Qgd29yay48L2Rpdj4KIDxhIGlkPSJ0YXJnZXRMaW5r
IiBocmVmPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0
aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1jcm9zcy1zaXRlLWltYWdlLXJlZGlyZWN0Lmh0bWw/c3Rl
cFR3byIgYWRjYW1wYWlnbmlkPSIzIiBhZGRlc3RpbmF0aW9uPSJodHRwOi8vbG9jYWxob3N0Ojgw
MDAiPkxpbms8L2E+PGJyPgogPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KIDxzY3JpcHQ+Ci0gICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwotICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgdGVzdFJ1bm5l
ci5zZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSh0cnVlKTsKLSAgICB9CisgICAgcHJlcGFyZVRl
c3QoKTsKIAogICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SUQpIHsKICAgICAg
ICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SUQpOwpAQCAt
MjUsNyArMjIsNyBAQAogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJU
ZXh0ID0gIkZBSUwgUHJvbWlzZSByZWplY3RlZC4iOwotICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICk7CiAgICAgfQpAQCAtNDAsNyArMzcsNyBAQAogICAgICAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBZENsaWNrQXR0cmlidXRpb24oKTsKICAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGFyZ2V0TGluayIpKTsKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9k
eS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGl4ZWwiKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgICAg
ICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZUVsZW1lbnQpOwogICAgICAgICAgICAg
fSBlbHNlIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJp
YnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRo
LXByaW9yaXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlv
bi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0aC1wcmlv
cml0eS5odG1sCmluZGV4IGM1ZmI1ZjUwM2ZkYzc4ODZkMzEyYzI1YWU0MWUyOGUxZTRjYTI4MmMu
LjUzZDg2NmYwZGE2OWY1YTY5ZDU4MGM5OTlhN2Y1NWMwZDRhNmUxYzEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZl
cnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRoLXByaW9yaXR5Lmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24tY29udmVy
c2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0LXdpdGgtcHJpb3JpdHkuaHRtbApAQCAtNCwxNyAr
NCwxNCBAQAogICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgICA8bWV0YSBuYW1lPSJ2aWV3
cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXIt
c2NhbGFibGU9bm8iPgogICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVs
cGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KHJ1blRlc3QsIDApIj4K
IDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0cyB0cmlnZ2VyaW5nIG9mIGFkIGNsaWNrIGF0dHJp
YnV0aW9uIGNvbnZlcnNpb25zIHdpdGggcHJpb3JpdHkuPC9kaXY+CiA8YSBpZD0idGFyZ2V0TGlu
ayIgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1
dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0aC1wcmlvcml0eS5odG1s
P3N0ZXBUd28iIGFkY2FtcGFpZ25pZD0iMyIgYWRkZXN0aW5hdGlvbj0iaHR0cDovL2xvY2FsaG9z
dDo4MDAwIj5MaW5rPC9hPjxicj4KIDxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+CiA8c2NyaXB0Pgot
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIHRlc3RS
dW5uZXIuc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUodHJ1ZSk7Ci0gICAgfQorICAgIHByZXBh
cmVUZXN0KCk7CiAKICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElEKSB7CiAg
ICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElEKTsK
QEAgLTI1LDcgKzIyLDcgQEAKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlu
bmVyVGV4dCA9ICJGQUlMIFByb21pc2UgcmVqZWN0ZWQuIjsKLSAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgp
OwogICAgICAgICAgICAgfQogICAgICAgICApOwogICAgIH0KQEAgLTQwLDcgKzM3LDcgQEAKICAg
ICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQWRDbGlja0F0dHJpYnV0aW9uKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKSk7CiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBpeGVsIikpOwotICAg
ICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKICAgICAgICAgICAgICAgICB9OwogICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2VFbGVtZW50KTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tB
dHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qt
d2l0aG91dC1wcmlvcml0eS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0
cmlidXRpb24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0LXdp
dGhvdXQtcHJpb3JpdHkuaHRtbAppbmRleCA5N2JhNTJlMGY0MmY3OGVmZTQ3MzAxMDc3ZmIwZTZk
MTAzOTU2ZWJjLi5mYjE3NGIxMDViNGUzY2FlMjhlMWM3NjI0NTU1MjU4OTg2OWY3ZDhjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1
dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0aG91dC1wcmlvcml0eS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJp
YnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRob3V0LXByaW9yaXR5
Lmh0bWwKQEAgLTQsMTcgKzQsMTQgQEAKICAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICAg
PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlh
bC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5vIj4KICAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3Qt
cmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291
cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0ic2V0VGltZW91
dChydW5UZXN0LCAwKSI+CiA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGVzdHMgdHJpZ2dlcmluZyBv
ZiBhZCBjbGljayBhdHRyaWJ1dGlvbiBjb252ZXJzaW9ucyB3aXRob3V0IHByaW9yaXR5LjwvZGl2
PgogPGEgaWQ9InRhcmdldExpbmsiIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9hZENsaWNr
QXR0cmlidXRpb24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0
LXdpdGhvdXQtcHJpb3JpdHkuaHRtbD9zdGVwVHdvIiBhZGNhbXBhaWduaWQ9IjMiIGFkZGVzdGlu
YXRpb249Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI+TGluazwvYT48YnI+CiA8ZGl2IGlkPSJvdXRw
dXQiPjwvZGl2PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwotICAgICAgICB0ZXN0UnVubmVyLnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlKHRy
dWUpOwotICAgIH0KKyAgICBwcmVwYXJlVGVzdCgpOwogCiAgICAgZnVuY3Rpb24gYWN0aXZhdGVF
bGVtZW50KGVsZW1lbnRJRCkgewogICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKGVsZW1lbnRJRCk7CkBAIC0yNSw3ICsyMiw3IEBACiAgICAgICAgICAgICB9LAog
ICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBQcm9taXNlIHJlamVjdGVkLiI7
Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAg
ICAgdGVhckRvd25BbmRGaW5pc2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgKTsKICAgICB9
CkBAIC00MCw3ICszNyw3IEBACiAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFk
Q2xpY2tBdHRyaWJ1dGlvbigpOwogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJl
bW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXRMaW5rIikpOwogICAgICAg
ICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwaXhlbCIpKTsKLSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CisgICAgICAgICAgICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CiAgICAgICAg
ICAgICAgICAgfTsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlt
YWdlRWxlbWVudCk7CiAgICAgICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vY29udmVyc2lvbi1kaXNhYmxlZC1pbi1l
cGhlbWVyYWwtc2Vzc2lvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fk
Q2xpY2tBdHRyaWJ1dGlvbi9jb252ZXJzaW9uLWRpc2FibGVkLWluLWVwaGVtZXJhbC1zZXNzaW9u
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzRhYjVkOTEyNTk0NTgzMGEyYjg0M2U3MTc0ZTE1
MDlkMmNkNTgwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENs
aWNrQXR0cmlidXRpb24vY29udmVyc2lvbi1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGVzdHMgdGhhdCBzdG9yZWQgYXR0cmlidXRp
b25zIGNhbm5vdCBiZSBjb252ZXJ0ZWQgaW4gYW4gZXBoZW1lcmFsIHNlc3Npb24uCisKKworCist
LS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWUxLS0+JworLS0tLS0tLS0KK0NvbnZlcnNpb24gbm90
IHJlY2VpdmVkIC0gdGltZWQgb3V0LgorCitVbmNvbnZlcnRlZCBBZCBDbGljayBBdHRyaWJ1dGlv
bnM6CitXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24gMQorU291cmNlOiAxMjcuMC4wLjEKK0Rl
c3RpbmF0aW9uOiBsb2NhbGhvc3QKK0NhbXBhaWduIElEOiAzCitObyBjb252ZXJzaW9uIGRhdGEu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9j
b252ZXJzaW9uLWRpc2FibGVkLWluLWVwaGVtZXJhbC1zZXNzaW9uLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9jb252ZXJzaW9uLWRpc2FibGVkLWluLWVw
aGVtZXJhbC1zZXNzaW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJmNWZmZmEwODZhYWQ0Y2NmNzZlOWMx
ZjkzZjk5OGUxOWIxNmE2YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvYWRDbGlja0F0dHJpYnV0aW9uL2NvbnZlcnNpb24tZGlzYWJsZWQtaW4tZXBoZW1lcmFsLXNl
c3Npb24uaHRtbApAQCAtMCwwICsxLDc2IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgaW50ZXJuYWw6QWRDbGlja0F0
dHJpYnV0aW9uRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAg
ICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRl
bnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5v
Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dChydW5UZXN0LCAwKSI+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+VGVzdHMgdGhhdCBzdG9yZWQgYXR0cmlidXRpb25zIGNhbm5vdCBiZSBjb252
ZXJ0ZWQgaW4gYW4gZXBoZW1lcmFsIHNlc3Npb24uPC9kaXY+Cis8YSBpZD0idGFyZ2V0TGluayIg
aHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL2FkQ2xpY2tBdHRyaWJ1dGlvbi9jb252ZXJzaW9u
LWRpc2FibGVkLWluLWVwaGVtZXJhbC1zZXNzaW9uLmh0bWw/c3RlcFR3byIgYWRjYW1wYWlnbmlk
PSIzIiBhZGRlc3RpbmF0aW9uPSJodHRwOi8vbG9jYWxob3N0OjgwMDAiPkxpbms8L2E+PGJyPgor
PGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzxzY3JpcHQ+CisgICAgY29uc3QgY3VycmVudFRpbWVN
aWxsaXMgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpOworICAgIGNvbnN0IGhpZ2hFbnRyb3B5Qml0
cyA9IGN1cnJlbnRUaW1lTWlsbGlzIC0gKE1hdGguZmxvb3IoY3VycmVudFRpbWVNaWxsaXMgLyAx
MDAwMDAwKSAqIDEwMDAwMDApOworICAgIGNvbnN0IG5vbmNlID0gaGlnaEVudHJvcHlCaXRzICsg
IiIgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDApOworCisgICAgcHJlcGFyZVRlc3Qo
KTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRB
ZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZygiaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvY29udmVyc2lvblJlcG9ydC5waHA/
bm9uY2U9IiArIG5vbmNlKTsKKworICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50
SUQpIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVt
ZW50SUQpOworICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1l
bnQub2Zmc2V0V2lkdGggLyAyOworICAgICAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0
VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICBVSUhlbHBlci5hY3RpdmF0
ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4oCisgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBQcm9t
aXNlIHJlamVjdGVkLiI7CisgICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhcHBlbmRJZnJh
bWUodXJsLCBvbmxvYWRDYWxsYmFjaykgeworICAgICAgICBsZXQgaWZyYW1lRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICBpZnJhbWVFbGVtZW50LnNy
YyA9IHVybDsKKyAgICAgICAgaWYgKG9ubG9hZENhbGxiYWNrKQorICAgICAgICAgICAgaWZyYW1l
RWxlbWVudC5vbmxvYWQgPSBvbmxvYWRDYWxsYmFjazsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhcHBlbmRD
b252ZXJzaW9uRGF0YUlmcmFtZUFuZEZpbmlzaCgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QWRDbGlja0F0dHJpYnV0aW9uKCk7CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKSk7CisgICAgICAgIGRvY3VtZW50
LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBpeGVsIikpOworCisg
ICAgICAgIGFwcGVuZElmcmFtZSgiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2FkQ2xpY2tBdHRyaWJ1
dGlvbi9yZXNvdXJjZXMvZ2V0Q29udmVyc2lvbkRhdGEucGhwP3RpbWVvdXRfbXM9MTAwMCZub25j
ZT0iICsgbm9uY2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2go
KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICBpZiAod2luZG93LmxvY2F0
aW9uLnNlYXJjaCA9PT0gIj9zdGVwVHdvIikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgICAgICBsZXQgaW1h
Z2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgICAgICAgICAg
ICAgaW1hZ2VFbGVtZW50LnNyYyA9ICJodHRwczovLzEyNy4wLjAuMTo4NDQzL2FkQ2xpY2tBdHRy
aWJ1dGlvbi9yZXNvdXJjZXMvcmVkaXJlY3RUb0NvbnZlcnNpb24ucGhwP2NvbnZlcnNpb25EYXRh
PTEyJm5vbmNlPSIgKyBub25jZTsKKyAgICAgICAgICAgICAgICBpbWFnZUVsZW1lbnQuaWQgPSAi
cGl4ZWwiOworICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudC5vbmVycm9yID0gZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZENvbnZlcnNpb25EYXRhSWZyYW1lQW5kRmlu
aXNoKCk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9ICJjb29raWVTZXRBc0ZpcnN0UGFydHk9MTsgcGF0
aD0vIjsKKyAgICAgICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoInRhcmdldExpbmsiKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBObyB0ZXN0UnVubmVyLiI7Cisg
ICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy9jb252
ZXJzaW9uUmVwb3J0LnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0
aW9uL3Jlc291cmNlcy9jb252ZXJzaW9uUmVwb3J0LnBocAppbmRleCAzZmJkOGZiODIzYWQzODQ4
MmRkMmJmMjk5YTkyMTQ3ZTIwOGNmMGQyLi5lMzg0MjEyNTViYzVkNTIxMTg4NjMyYmE3M2E0ODk5
MjMzNTRlZDJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRy
aWJ1dGlvbi9yZXNvdXJjZXMvY29udmVyc2lvblJlcG9ydC5waHAKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2NvbnZlcnNpb25SZXBvcnQu
cGhwCkBAIC0yNCw0ICsyNCw4IEBAIGlmICghJGNvb2tpZXNGb3VuZCkgewogfQogZmNsb3NlKCRj
b252ZXJzaW9uRmlsZSk7CiByZW5hbWUoJGNvbnZlcnNpb25GaWxlUGF0aCAuICIudG1wIiwgJGNv
bnZlcnNpb25GaWxlUGF0aCk7CisKK2hlYWRlcigiSFRUUC8xLjEgMjAwIE9LIik7CitzZXRjb29r
aWUoImNvb2tpZVNldEluQ29udmVyc2lvblJlcG9ydCIsICIxIiwgMCwgIi8iKTsKKwogPz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291
cmNlcy91dGlsLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24v
cmVzb3VyY2VzL3V0aWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2YzMGM4Y2E2ZmZjNDJkNTFmYjg1NmYzMzUw
NTI3NzhjYTk4NjdmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy91dGlsLmpzCkBAIC0wLDAgKzEsMTggQEAKK2Z1
bmN0aW9uIHByZXBhcmVUZXN0KCkgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1w
Q2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIuc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUodHJ1ZSk7CisgICAg
fQorfQorCitmdW5jdGlvbiB0ZWFyRG93bkFuZEZpbmlzaCgpIHsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0
ZShmYWxzZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0QWRDbGlja0F0dHJpYnV0aW9uT3ZlcnJp
ZGVUaW1lckZvclRlc3RpbmcoZmFsc2UpOworICAgICAgICB0ZXN0UnVubmVyLnNldEFkQ2xpY2tB
dHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKCIiKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1h
dHRyaWJ1dGlvbi1jb252ZXJ0ZWQtd2l0aC1oaWdoZXItcHJpb3JpdHkuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252
ZXJ0ZWQtd2l0aC1oaWdoZXItcHJpb3JpdHkuaHRtbAppbmRleCA0OTIwMGY3M2ZiYjZjZmM1ZDI5
ZDRhNWI4Y2RiOTM0MDAzNTgzZmQwLi5kZDM4M2VkNzc3MjM0ZTEyZWYxMDYxZTM0NDViMTE2MjRk
OWJiMmE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1
dGlvbi9zZWNvbmQtYXR0cmlidXRpb24tY29udmVydGVkLXdpdGgtaGlnaGVyLXByaW9yaXR5Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25k
LWF0dHJpYnV0aW9uLWNvbnZlcnRlZC13aXRoLWhpZ2hlci1wcmlvcml0eS5odG1sCkBAIC00LDYg
KzQsNyBAQAogICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgICA8bWV0YSBuYW1lPSJ2aWV3
cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXIt
c2NhbGFibGU9bm8iPgogICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVs
cGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KHJ1blRlc3QsIDApIj4K
IDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0cyB0aGF0IGEgc2Vjb25kIGF0dHJpYnV0aW9uIGNv
bnZlcnNpb24gd2l0aCBoaWdoZXIgcHJpb3JpdHkgcmVwbGFjZXMgYW4gb2xkZXIgd2l0aCBsb3dl
ciBwcmlvcml0eS48L2Rpdj4KQEAgLTI0LDYgKzI1LDggQEAKICAgICAgICAgfQogICAgIF07CiAK
KyAgICBwcmVwYXJlVGVzdCgpOworCiAgICAgZnVuY3Rpb24gY29uZmlndXJlTGluayhpbmRleCkg
ewogICAgICAgICBsZXQgbGlua0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFy
Z2V0TGluayIpOwogICAgICAgICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoImhyZWYiLCBjb25m
aWd1cmF0aW9uW2luZGV4XS5ocmVmKTsKQEAgLTMxLDEyICszNCw2IEBACiAgICAgICAgIGxpbmtF
bGVtZW50LnNldEF0dHJpYnV0ZSgiYWRkZXN0aW5hdGlvbiIsIGNvbmZpZ3VyYXRpb25baW5kZXhd
LmFkZGVzdGluYXRpb24pOwogICAgIH0KIAotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewot
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNh
dGUodHJ1ZSk7Ci0gICAgfQotCiAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJ
RCkgewogICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1l
bnRJRCk7CiAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVu
dC5vZmZzZXRXaWR0aCAvIDI7CkBAIC00Niw3ICs0Myw3IEBACiAgICAgICAgICAgICB9LAogICAg
ICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBQcm9taXNlIHJlamVjdGVkLiI7Ci0g
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAg
dGVhckRvd25BbmRGaW5pc2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgKTsKICAgICB9CkBA
IC03OSwxMiArNzYsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQWRD
bGlja0F0dHJpYnV0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVt
b3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInBpeGVsIikpOwotICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKICAgICAgICAg
ICAgICAgICB9OwogICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1h
Z2VFbGVtZW50KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIFVua25vd24gd2lu
ZG93LmxvY2F0aW9uLnNlYXJjaCA9PSAiICsgd2luZG93LmxvY2F0aW9uLnNlYXJjaCArICIuIjsK
LSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAg
ICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9
ICJGQUlMIE5vIHRlc3RSdW5uZXIuIjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0ZWQtd2l0aC1s
b3dlci1wcmlvcml0eS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmli
dXRpb24vc2Vjb25kLWF0dHJpYnV0aW9uLWNvbnZlcnRlZC13aXRoLWxvd2VyLXByaW9yaXR5Lmh0
bWwKaW5kZXggYzNlMTg4MzkwZGViODBiMmQ3NjlhZmE3MDdiZWFmNTI0NTdhYzY2Yy4uN2U4MWE5
NzY5YmRjM2UyYjBiY2MyN2RjOGJiZDQyMWFiYWQ3MjVkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWF0dHJpYnV0aW9uLWNvbnZl
cnRlZC13aXRoLWxvd2VyLXByaW9yaXR5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWF0dHJpYnV0aW9uLWNvbnZlcnRlZC13aXRoLWxv
d2VyLXByaW9yaXR5Lmh0bWwKQEAgLTQsNiArNCw3IEBACiAgICAgPG1ldGEgY2hhcnNldD0iVVRG
LTgiPgogICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lk
dGgsIGluaXRpYWwtc2NhbGU9MSwgdXNlci1zY2FsYWJsZT1ubyI+CiAgICAgPHNjcmlwdCBzcmM9
Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9
InNldFRpbWVvdXQocnVuVGVzdCwgMCkiPgogPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRlc3RzIHRo
YXQgYSBzZWNvbmQgYXR0cmlidXRpb24gY29udmVyc2lvbiB3aXRoIGxvd2VyIHByaW9yaXR5IGRv
ZXMgbm90IHJlcGxhY2UgYW4gb2xkZXIgd2l0aCBoaWdoZXIgcHJpb3JpdHkuPC9kaXY+CkBAIC0y
NCw2ICsyNSw4IEBACiAgICAgICAgIH0KICAgICBdOwogCisgICAgcHJlcGFyZVRlc3QoKTsKKwog
ICAgIGZ1bmN0aW9uIGNvbmZpZ3VyZUxpbmsoaW5kZXgpIHsKICAgICAgICAgbGV0IGxpbmtFbGVt
ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKTsKICAgICAgICAgbGlu
a0VsZW1lbnQuc2V0QXR0cmlidXRlKCJocmVmIiwgY29uZmlndXJhdGlvbltpbmRleF0uaHJlZik7
CkBAIC0zMSwxMiArMzQsNiBAQAogICAgICAgICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFk
ZGVzdGluYXRpb24iLCBjb25maWd1cmF0aW9uW2luZGV4XS5hZGRlc3RpbmF0aW9uKTsKICAgICB9
CiAKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Ci0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICB0
ZXN0UnVubmVyLnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlKHRydWUpOwotICAgIH0KLQogICAg
IGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SUQpIHsKICAgICAgICAgdmFyIGVsZW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SUQpOwogICAgICAgICB2YXIgY2Vu
dGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwpAQCAt
NDYsNyArNDMsNyBAQAogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJU
ZXh0ID0gIkZBSUwgUHJvbWlzZSByZWplY3RlZC4iOwotICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICk7CiAgICAgfQpAQCAtNzksMTIgKzc2LDEyIEBACiAgICAg
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbigpOwogICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0YXJnZXRMaW5rIikpOwogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5i
b2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwaXhlbCIpKTsKLSAgICAg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAg
ICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCk7CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRw
dXQiKS5pbm5lclRleHQgPSAiRkFJTCBVbmtub3duIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggPT0g
IiArIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggKyAiLiI7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBObyB0ZXN0UnVubmVyLiI7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9z
ZWNvbmQtY29udmVyc2lvbi13aXRoLWhpZ2hlci1wcmlvcml0eS5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24td2l0aC1oaWdo
ZXItcHJpb3JpdHkuaHRtbAppbmRleCBjOGVmZTE0ZGY1MjllYTRmZDVlN2NjODVjZGUwZmJlYWE5
MjExNzRhLi5mNTllNDRiNmZiOTk0NTc4MmIxZjkyMjIwNzQ5YzA2MzU2MzRiNDRiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtY29u
dmVyc2lvbi13aXRoLWhpZ2hlci1wcmlvcml0eS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1jb252ZXJzaW9uLXdpdGgtaGlnaGVyLXBy
aW9yaXR5Lmh0bWwKQEAgLTQsNiArNCw3IEBACiAgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgog
ICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGlu
aXRpYWwtc2NhbGU9MSwgdXNlci1zY2FsYWJsZT1ubyI+CiAgICAgPHNjcmlwdCBzcmM9Ii9qcy10
ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InNldFRp
bWVvdXQocnVuVGVzdCwgMCkiPgogPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRlc3RzIHRoYXQgdGhl
IGF0dHJpYnV0aW9uIGlzIHVwZGF0ZWQgaWYgaXQgZ2V0cyBhIHNlY29uZCBjb252ZXJzaW9uIHdp
dGggaGlnaGVyIHByaW9yaXR5LjwvZGl2PgpAQCAtMTksNiArMjAsOCBAQAogICAgICAgICB9CiAg
ICAgXTsKIAorICAgIHByZXBhcmVUZXN0KCk7CisKICAgICBmdW5jdGlvbiBjb25maWd1cmVMaW5r
KGluZGV4KSB7CiAgICAgICAgIGxldCBsaW5rRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0YXJnZXRMaW5rIik7CiAgICAgICAgIGxpbmtFbGVtZW50LnNldEF0dHJpYnV0ZSgiaHJl
ZiIsIGNvbmZpZ3VyYXRpb25baW5kZXhdLmhyZWYpOwpAQCAtMjYsMTIgKzI5LDYgQEAKICAgICAg
ICAgbGlua0VsZW1lbnQuc2V0QXR0cmlidXRlKCJhZGRlc3RpbmF0aW9uIiwgY29uZmlndXJhdGlv
bltpbmRleF0uYWRkZXN0aW5hdGlvbik7CiAgICAgfQogCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRBbGxvd3NBbnlTU0xD
ZXJ0aWZpY2F0ZSh0cnVlKTsKLSAgICB9Ci0KICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQo
ZWxlbWVudElEKSB7CiAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoZWxlbWVudElEKTsKICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQg
KyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKQEAgLTQxLDcgKzM4LDcgQEAKICAgICAgICAgICAg
IH0sCiAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIFByb21pc2UgcmVqZWN0
ZWQuIjsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
ICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAgICAgICAgICAgfQogICAgICAgICApOwog
ICAgIH0KQEAgLTcyLDEyICs2OSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQWRDbGlja0F0dHJpYnV0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXRM
aW5rIikpOwogICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGls
ZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGl4ZWwiKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
YXJEb3duQW5kRmluaXNoKCk7CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgVW5rbm93biB3aW5kb3cu
bG9jYXRpb24uc2VhcmNoID09ICIgKyB3aW5kb3cubG9jYXRpb24uc2VhcmNoICsgIi4iOwotICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIHRl
YXJEb3duQW5kRmluaXNoKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0gIkZB
SUwgTm8gdGVzdFJ1bm5lci4iOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
ZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24td2l0aC1sb3dlci1wcmlvcml0eS5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNv
bnZlcnNpb24td2l0aC1sb3dlci1wcmlvcml0eS5odG1sCmluZGV4IGI2ZWZiYTE5OTYwOGRmOGEx
ZWQwNzAwZDc1Mjc2YjcyZjA5NDk1ZWYuLmQ4YTkxNGFhOGY5NDQzYzEyMDI2MTdmMzFjNDQ2MTgx
MmM5MGVjNWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJp
YnV0aW9uL3NlY29uZC1jb252ZXJzaW9uLXdpdGgtbG93ZXItcHJpb3JpdHkuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtY29udmVyc2lv
bi13aXRoLWxvd2VyLXByaW9yaXR5Lmh0bWwKQEAgLTQsNiArNCw3IEBACiAgICAgPG1ldGEgY2hh
cnNldD0iVVRGLTgiPgogICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1k
ZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdXNlci1zY2FsYWJsZT1ubyI+CiAgICAgPHNj
cmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eSBvbmxvYWQ9InNldFRpbWVvdXQocnVuVGVzdCwgMCkiPgogPGRpdiBpZD0iZGVzY3JpcHRpb24i
PlRlc3RzIHRoYXQgdGhlIGF0dHJpYnV0aW9uIGlzIG5vdCB1cGRhdGVkIGlmIGl0IGdldHMgYSBz
ZWNvbmQgY29udmVyc2lvbiB3aXRoIGxvd2VyIHByaW9yaXR5LjwvZGl2PgpAQCAtMTksNiArMjAs
OCBAQAogICAgICAgICB9CiAgICAgXTsKIAorICAgIHByZXBhcmVUZXN0KCk7CisKICAgICBmdW5j
dGlvbiBjb25maWd1cmVMaW5rKGluZGV4KSB7CiAgICAgICAgIGxldCBsaW5rRWxlbWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXRMaW5rIik7CiAgICAgICAgIGxpbmtFbGVtZW50
LnNldEF0dHJpYnV0ZSgiaHJlZiIsIGNvbmZpZ3VyYXRpb25baW5kZXhdLmhyZWYpOwpAQCAtMjYs
MTIgKzI5LDYgQEAKICAgICAgICAgbGlua0VsZW1lbnQuc2V0QXR0cmlidXRlKCJhZGRlc3RpbmF0
aW9uIiwgY29uZmlndXJhdGlvbltpbmRleF0uYWRkZXN0aW5hdGlvbik7CiAgICAgfQogCi0gICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwotICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgdGVzdFJ1bm5l
ci5zZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSh0cnVlKTsKLSAgICB9Ci0KICAgICBmdW5jdGlv
biBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElEKSB7CiAgICAgICAgIHZhciBlbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElEKTsKICAgICAgICAgdmFyIGNlbnRlclggPSBl
bGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKQEAgLTQxLDcgKzM4
LDcgQEAKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJG
QUlMIFByb21pc2UgcmVqZWN0ZWQuIjsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAgICAgICAg
ICAgfQogICAgICAgICApOwogICAgIH0KQEAgLTcyLDcgKzY5LDcgQEAKICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbigpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGFyZ2V0TGluayIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBpeGVsIikpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAgICAgICAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZW5kLWF0dHJpYnV0
aW9uLWNvbnZlcnNpb24tcmVxdWVzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZW5kLWF0dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVxdWVz
dC1leHBlY3RlZC50eHQKaW5kZXggNzdlMjhiMDFkYWY2NjViMjBhOGFlYjUxOThjN2Q1NzdkNTg0
MDFkMS4uNDc3YjQ3MTMwODM5YTE1OTY4ZjNiZmExZjJhM2Y5ZDhlZDdmMjlhOSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2VuZC1hdHRyaWJ1
dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1y
ZXF1ZXN0LWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSwyNCBAQAotVGVzdHMgc2VuZGluZyBvZiBh
ZCBjbGljayBhdHRyaWJ1dGlvbiByZXF1ZXN0cyBhZnRlciBhIGNvbnZlcnNpb24uCitUZXN0cyBz
ZW5kaW5nIG9mIGFkIGNsaWNrIGF0dHJpYnV0aW9uIHJlcXVlc3RzIGFmdGVyIGEgY29udmVyc2lv
bi4gQWxzbyB0ZXN0cyB0aGF0IGNvb2tpZXMgYXJlIG5vdCBzZW50IGluIHRob3NlIHJlcXVlc3Rz
IGFuZCBjb29raWVzIGFyZSBub3QgYWNjZXB0ZWQgaW4gdGhlIHJlc3BvbnNlcy4KIAogCiAKIC0t
LS0tLS0tCiBGcmFtZTogJzwhLS1mcmFtZTEtLT4nCiAtLS0tLS0tLQorQ29va2llcyBhcmU6IGNv
b2tpZVNldEFzRmlyc3RQYXJ0eSA9IDEKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lMi0t
PicKKy0tLS0tLS0tCiBDb252ZXJzaW9uIHJlY2VpdmVkLgogSFRUUF9IT1NUOiAxMjcuMC4wLjE6
ODAwMAogUkVRVUVTVF9VUkk6IC9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2NvbnZlcnNp
b25SZXBvcnQucGhwP2NvbnZlcnNpb249MTImY2FtcGFpZ249MwogTm8gY29va2llcyBpbiBjb252
ZXJzaW9uIHJlcXVlc3QuCiAKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lMy0tPicKKy0t
LS0tLS0tCitDb29raWVzIGFyZTogY29va2llU2V0QXNGaXJzdFBhcnR5ID0gMQorCiBObyBzdG9y
ZWQgQWQgQ2xpY2sgQXR0cmlidXRpb24gZGF0YS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1y
ZXF1ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9z
ZW5kLWF0dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVxdWVzdC5odG1sCmluZGV4IGVhMjI2OThiNGY5
OTI3ZjhkZjIwMWQwYjdlODY5YzUwNDc1NWZiZDQuLjQzNzU3N2M5ZjZhYWY3MjEyZWJjMTJmZWMw
OGU1MmFkNjE0ODc4NzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlj
a0F0dHJpYnV0aW9uL3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1yZXF1ZXN0Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2VuZC1hdHRyaWJ1
dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QuaHRtbApAQCAtNCw5ICs0LDEwIEBACiAgICAgPG1ldGEg
Y2hhcnNldD0iVVRGLTgiPgogICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0
aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdXNlci1zY2FsYWJsZT1ubyI+CiAgICAg
PHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQocnVuVGVzdCwgMCkiPgotPGRpdiBpZD0iZGVzY3JpcHRp
b24iPlRlc3RzIHNlbmRpbmcgb2YgYWQgY2xpY2sgYXR0cmlidXRpb24gcmVxdWVzdHMgYWZ0ZXIg
YSBjb252ZXJzaW9uLjwvZGl2PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRlc3RzIHNlbmRpbmcg
b2YgYWQgY2xpY2sgYXR0cmlidXRpb24gcmVxdWVzdHMgYWZ0ZXIgYSBjb252ZXJzaW9uLiBBbHNv
IHRlc3RzIHRoYXQgY29va2llcyBhcmUgbm90IHNlbnQgaW4gdGhvc2UgcmVxdWVzdHMgYW5kIGNv
b2tpZXMgYXJlIG5vdCBhY2NlcHRlZCBpbiB0aGUgcmVzcG9uc2VzLjwvZGl2PgogPGEgaWQ9InRh
cmdldExpbmsiIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9hZENsaWNrQXR0cmlidXRpb24v
c2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QuaHRtbD9zdGVwVHdvIiBhZGNhbXBh
aWduaWQ9IjMiIGFkZGVzdGluYXRpb249Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI+TGluazwvYT48
YnI+CiA8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgogPHNjcmlwdD4KQEAgLTE0LDEyICsxNSwxMSBA
QAogICAgIGNvbnN0IGhpZ2hFbnRyb3B5Qml0cyA9IGN1cnJlbnRUaW1lTWlsbGlzIC0gKE1hdGgu
Zmxvb3IoY3VycmVudFRpbWVNaWxsaXMgLyAxMDAwMDAwKSAqIDEwMDAwMDApOwogICAgIGNvbnN0
IG5vbmNlID0gaGlnaEVudHJvcHlCaXRzICsgIiIgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkg
KiAxMDApOwogCisgICAgcHJlcGFyZVRlc3QoKTsKKwogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgewotICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRBbGxv
d3NBbnlTU0xDZXJ0aWZpY2F0ZSh0cnVlKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRBZENsaWNr
QXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZygiaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvY29udmVyc2lvblJlcG9ydC5waHA/bm9uY2U9
IiArIG5vbmNlKTsKICAgICAgICAgdGVzdFJ1bm5lci5zZXRBZENsaWNrQXR0cmlidXRpb25PdmVy
cmlkZVRpbWVyRm9yVGVzdGluZyh0cnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRBZENsaWNr
QXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZygiaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvY29udmVyc2lvblJlcG9ydC5waHA/bm9uY2U9
IiArIG5vbmNlKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVu
dElEKSB7CkBAIC0zMSwxOSArMzEsMzAgQEAKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91
dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIFByb21pc2UgcmVqZWN0ZWQuIjsKLSAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB0ZWFyRG93bkFu
ZEZpbmlzaCgpOwogICAgICAgICAgICAgfQogICAgICAgICApOwogICAgIH0KIAorICAgIGZ1bmN0
aW9uIGFwcGVuZElmcmFtZSh1cmwsIG9ubG9hZENhbGxiYWNrKSB7CisgICAgICAgIGxldCBpZnJh
bWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgIGlm
cmFtZUVsZW1lbnQuc3JjID0gdXJsOworICAgICAgICBpZiAob25sb2FkQ2FsbGJhY2spCisgICAg
ICAgICAgICBpZnJhbWVFbGVtZW50Lm9ubG9hZCA9IG9ubG9hZENhbGxiYWNrOworICAgICAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZUVsZW1lbnQpOworICAgIH0KKwogICAgIGZ1
bmN0aW9uIGFwcGVuZENvbnZlcnNpb25EYXRhSWZyYW1lQW5kRmluaXNoKCkgewogICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBZENsaWNrQXR0cmlidXRpb24oKTsKICAgICAgICAgZG9jdW1lbnQuYm9k
eS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0TGluayIpKTsKICAg
ICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cGl4ZWwiKSk7CiAKLSAgICAgICAgbGV0IGlmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJpZnJhbWUiKTsKLSAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMgPSAiaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvZ2V0Q29udmVyc2lvbkRh
dGEucGhwP2VuZFRlc3Q9dHJ1ZSZ0aW1lb3V0X21zPTIwMDAmbm9uY2U9IiArIG5vbmNlOwotICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZUVsZW1lbnQpOworICAgICAgICBh
cHBlbmRJZnJhbWUoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9jb29raWVzL3Jlc291cmNlcy9lY2hv
LWNvb2tpZXMucGhwIik7CisgICAgICAgIGFwcGVuZElmcmFtZSgiaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvZ2V0Q29udmVyc2lvbkRhdGEucGhwP3Rp
bWVvdXRfbXM9MjAwMCZub25jZT0iICsgbm9uY2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
YXBwZW5kSWZyYW1lKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAvY29va2llcy9yZXNvdXJjZXMvZWNo
by1jb29raWVzLnBocCIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRlYXJEb3duQW5k
RmluaXNoKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKQEAgLTU3LDYgKzY4LDcgQEAKICAgICAgICAgICAgICAgICB9Owog
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2VFbGVtZW50KTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0g
ImNvb2tpZVNldEFzRmlyc3RQYXJ0eT0xOyBwYXRoPS8iOwogICAgICAgICAgICAgICAgIGFjdGl2
YXRlRWxlbWVudCgidGFyZ2V0TGluayIpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ug
ewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24v
c3RvcmUtYWQtY2xpY2stYXR0cmlidXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWFkLWNsaWNrLWF0dHJpYnV0aW9uLmh0bWwKaW5kZXgg
ZjY2MDFkNjdiYTA1MjNhNjQ4MjVmMjM0OWU2MDQxM2NiZGJiMzkwOC4uYzcxNDZkMDIwMjAzOWRk
YWQ0NmI1ODhiNjEwZWNhOTFjYmM0NDVlNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc3RvcmUtYWQtY2xpY2stYXR0cmlidXRpb24uaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zdG9yZS1hZC1j
bGljay1hdHRyaWJ1dGlvbi5odG1sCkBAIC00LDE2ICs0LDE0IEBACiAgICAgPG1ldGEgY2hhcnNl
dD0iVVRGLTgiPgogICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZp
Y2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdXNlci1zY2FsYWJsZT1ubyI+CiAgICAgPHNjcmlw
dCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBv
bmxvYWQ9InNldFRpbWVvdXQocnVuVGVzdCwgMCkiPgogPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRl
c3RzIHN0b3JhZ2Ugb2YgYWQgY2xpY2sgYXR0cmlidXRpb24uPC9kaXY+CiA8YSBpZD0idGFyZ2V0
TGluayIgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zdG9y
ZS1hZC1jbGljay1hdHRyaWJ1dGlvbi5odG1sP3N0ZXBUd28iIGFkY2FtcGFpZ25pZD0iMyIgYWRk
ZXN0aW5hdGlvbj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwIj5MaW5rPC9hPjxicj4KIDxkaXYgaWQ9
Im91dHB1dCI+PC9kaXY+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewot
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7Ci0gICAgfQorICAgIHByZXBhcmVUZXN0KCk7CiAKICAgICBmdW5jdGlvbiBh
Y3RpdmF0ZUVsZW1lbnQoZWxlbWVudElEKSB7CiAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElEKTsKQEAgLTI0LDcgKzIyLDcgQEAKICAgICAgICAg
ICAgIH0sCiAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIFByb21pc2UgcmVq
ZWN0ZWQuIjsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAgICAgICAgICAgfQogICAgICAgICAp
OwogICAgIH0KQEAgLTM0LDcgKzMyLDcgQEAKICAgICAgICAgICAgIGlmICh3aW5kb3cubG9jYXRp
b24uc2VhcmNoID09PSAiP3N0ZXBUd28iKSB7CiAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQWRDbGlja0F0dHJpYnV0aW9uKCk7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5y
ZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0TGluayIpKTsKLSAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB0ZWFy
RG93bkFuZEZpbmlzaCgpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBh
Y3RpdmF0ZUVsZW1lbnQoInRhcmdldExpbmsiKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWRpc2FibGVk
LWluLWVwaGVtZXJhbC1zZXNzaW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWRpc2FibGVkLWluLWVwaGVtZXJhbC1zZXNzaW9u
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTMzYjc1NzBiODJiZjQxNzYzZGFkYzFkNTNkZTU2
ZGUyYzIwMDUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENs
aWNrQXR0cmlidXRpb24vc3RvcmUtZGlzYWJsZWQtaW4tZXBoZW1lcmFsLXNlc3Npb24tZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdHMgdGhhdCBzdG9yYWdlIG9mIGFkIGNsaWNrIGF0
dHJpYnV0aW9uIGlzIGRpc2FibGVkIGluIGVwaGVtZXJhbCBzZXNzaW9ucy4KKworCisKK05vIHN0
b3JlZCBBZCBDbGljayBBdHRyaWJ1dGlvbiBkYXRhLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc3RvcmUtZGlzYWJsZWQtaW4tZXBoZW1lcmFs
LXNlc3Npb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9u
L3N0b3JlLWRpc2FibGVkLWluLWVwaGVtZXJhbC1zZXNzaW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU3
NWU1MWNmZmVlNmIyYjc5ZDgxOGQwNDk3MjdhY2NiNTk2M2Q0YQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWRpc2FibGVk
LWluLWVwaGVtZXJhbC1zZXNzaW9uLmh0bWwKQEAgLTAsMCArMSw0OCBAQAorPCFET0NUWVBFIGh0
bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIGlu
dGVybmFsOkFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWwgbGFuZz0i
ZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDxtZXRhIG5hbWU9
InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwg
dXNlci1zY2FsYWJsZT1ubyI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91
aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQocnVuVGVzdCwg
MCkiPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRlc3RzIHRoYXQgc3RvcmFnZSBvZiBhZCBjbGlj
ayBhdHRyaWJ1dGlvbiBpcyBkaXNhYmxlZCBpbiBlcGhlbWVyYWwgc2Vzc2lvbnMuPC9kaXY+Cis8
YSBpZD0idGFyZ2V0TGluayIgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL2FkQ2xpY2tBdHRy
aWJ1dGlvbi9zdG9yZS1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi5odG1sP3N0ZXBUd28i
IGFkY2FtcGFpZ25pZD0iMyIgYWRkZXN0aW5hdGlvbj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwIj5M
aW5rPC9hPjxicj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8c2NyaXB0PgorICAgIHByZXBh
cmVUZXN0KCk7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIuc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCh0cnVlKTsKKworICAgIGZ1bmN0aW9uIGFjdGl2
YXRlRWxlbWVudChlbGVtZW50SUQpIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChlbGVtZW50SUQpOworICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgICAgICB2YXIgY2VudGVy
WSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAg
ICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4oCisgICAgICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5l
clRleHQgPSAiRkFJTCBQcm9taXNlIHJlamVjdGVkLiI7CisgICAgICAgICAgICAgICAgdGVhckRv
d25BbmRGaW5pc2goKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoID09PSAiP3N0ZXBUd28iKSB7Cisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQWRDbGlja0F0dHJpYnV0aW9uKCk7CisgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGFyZ2V0TGluayIpKTsKKyAgICAgICAgICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQo
InRhcmdldExpbmsiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBO
byB0ZXN0UnVubmVyLiI7CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367849</attachid>
            <date>2019-04-19 16:02:20 -0700</date>
            <delta_ts>2019-04-19 16:37:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197108-20190419160219.patch</filename>
            <type>text/plain</type>
            <size>58317</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmUwNDhmYzNkY2E1YzBk
NzZjMmZlNDI1MTM2MTc0NDNlNDE3NzMxYS4uMTM2MjNlYTUwYjgxYmI3MjNiZjc0ZjI3Y2I0NWU4
MDRkODkyYTI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA0LTE5ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIERpc2FibGUgQWQgQ2xp
Y2sgQXR0cmlidXRpb24gaW4gZXBoZW1lcmFsIHNlc3Npb25zIGFuZCBtYWtlIHN1cmUgY29udmVy
c2lvbiByZXF1ZXN0cyB1c2UgYW4gZXBoZW1lcmFsLCBzdGF0ZWxlc3Mgc2Vzc2lvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MTA4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS80OTkxODcwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24v
Y29udmVyc2lvbi1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi5odG1sCisgICAgICAgICAg
ICAgICBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zdG9yZS1kaXNhYmxlZC1pbi1lcGhl
bWVyYWwtc2Vzc2lvbi5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpwYXJzZUFkQ2xpY2tBdHRy
aWJ1dGlvbiBjb25zdCk6CisgICAgICAgICAgICBFYXJseSByZXR1cm4gZm9yIGVwaGVtZXJhbCBz
ZXNzaW9ucy4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKToKKyAg
ICAgICAgICAgIE5vdyByZXR1cm5zIGZhbHNlIGZvciBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTpF
cGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaDoKKyAgICAgICAgICAgIEFkZGVkIGVudW0gdmFsdWUg
RXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzcy4KKwogMjAxOS0wNC0xOCAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvcmluZzogUHVsbCBhbGwgZnVs
bHNjcmVlbiBjb2RlIG91dCBvZiBEb2N1bWVudCBhbmQgaW50byBpdHMgb3duIGhlbHBlciBjbGFz
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBiNzdlM2Y2ZmY4MjYxYzBhNDhhMmVmZjVhMzVmMjJkOTk2N2Y3MjA0Li4w
Zjg0NTQ1YjFhYTY1NGYwYzMxZmEzOThlYTdiMjI4ZjEwOWQ1MjljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ0IEBACisyMDE5LTA0LTE5ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29t
PgorCisgICAgICAgIERpc2FibGUgQWQgQ2xpY2sgQXR0cmlidXRpb24gaW4gZXBoZW1lcmFsIHNl
c3Npb25zIGFuZCBtYWtlIHN1cmUgY29udmVyc2lvbiByZXF1ZXN0cyB1c2UgYW4gZXBoZW1lcmFs
LCBzdGF0ZWxlc3Mgc2Vzc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk3MTA4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80OTkxODcwMj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGludHJvZHVjZXMgYSBuZXcgTlNVUkxTZXNzaW9uIGluIFdlYktpdDo6TmV0d29ya1Nlc3Npb25D
b2NvYSBjYWxsZWQKKyAgICAgICAgbV9lcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzU2Vzc2lv
bi4gQXMgaXRzIG5hbWUgaW1wbGllcywgaXQncyBlcGhlbWVyYWwsIAorICAgICAgICBzdGF0ZWxl
c3MsIGFuZCBoYXMgYSBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lOZXZlciBjb29raWUgcG9saWN5
LgorCisgICAgICAgIFRoZSBuZXcgc2Vzc2lvbiBjYW4gYmUgaW52b2tlZCB3aXRoIHRoZSBuZXcg
ZW51bSB2YWx1ZSBvZgorICAgICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBj
YWxsZWQgRXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzcy4KKworICAgICAgICBXZWJLaXQ6OkFk
Q2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmZpcmVDb252ZXJzaW9uUmVxdWVzdCgpIG1ha2VzIHVz
ZSBvZgorICAgICAgICB0aGUgbmV3IHNlc3Npb24gZm9yIGl0cyBjb252ZXJzaW9uIHJlcXVlc3Rz
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyBzdXJlIHRoYXQgQWQgQ2xpY2sgQXR0
cmlidXRpb25zIGNhbm5vdCBiZSBzdG9yZWQgaW4KKyAgICAgICAgZXBoZW1lcmFsIHNlc3Npb25z
IGFuZCBhbHJlYWR5IHN0b3JlZCBhdHRyaWJ1dGlvbnMgY2Fubm90IGJlIGNvbnZlcnRlZCBpbgor
ICAgICAgICBlcGhlbWVyYWwgc2Vzc2lvbnMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9B
ZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWRDbGlja0F0
dHJpYnV0aW9uTWFuYWdlcjo6ZmlyZUNvbnZlcnNpb25SZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Rh
dGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0RhdGFUYXNrQ29jb2E6On5OZXR3b3JrRGF0YVRhc2tDb2NvYSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjppbml0aWFsaXplRXBoZW1lcmFs
U3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbkNvY29hOjppbnZhbGlkYXRlQW5kQ2FuY2VsKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmg6CisKIDIwMTktMDQtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBJbXByb3ZlIGRldGVjdGlvbiBvZiB3aGVuIHdlYiB2
aWV3cyBnbyB0byBiYWNrZ3JvdW5kIC8gZm9yZWdyb3VuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBbmNob3JFbGVtZW50LmNwcAppbmRleCA1YTFkY2U4YzU1ZGYzOTZjZTRhZjdkNTk0ODExZDY4
N2NkNWUyM2FkLi42NWE1OWIyZGEzM2MwMmVjOWUzNTVkODE0YWE4MDY3NzM0NGM3MGQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtNDA1LDcgKzQwNSw5
IEBAIE9wdGlvbmFsPEFkQ2xpY2tBdHRyaWJ1dGlvbj4gSFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNl
QWRDbGlja0F0dHJpYnV0aW9uKCkgY29uc3QKICAgICB1c2luZyBTb3VyY2UgPSBBZENsaWNrQXR0
cmlidXRpb246OlNvdXJjZTsKICAgICB1c2luZyBEZXN0aW5hdGlvbiA9IEFkQ2xpY2tBdHRyaWJ1
dGlvbjo6RGVzdGluYXRpb247CiAKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuYWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCgpIHx8ICFVc2VyR2VzdHVy
ZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCisgICAgaWYgKGRvY3VtZW50KCku
c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKQorICAgICAgICB8fCAhUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5hZENsaWNrQXR0cmlidXRpb25FbmFibGVkKCkKKyAgICAg
ICAgfHwgIVVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIGlmICghaGFzQXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihhZGNhbXBhaWduaWRBdHRyKSAmJiAhaGFzQXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihhZGRlc3RpbmF0aW9uQXR0cikpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA1NDg5OGVmZTEyNmUyZTUzOWNkMzFjOTRmYzg3YjI1
NTcwNmRmYTNiLi4zMDRiMjE5OWFhZWEwNTI5OGZmMDI3NDExZTFkMDVhNzIxYTZhZjQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTcxNyw3ICs3MTcsNyBA
QCB2b2lkIFJlc291cmNlTG9hZGVyOjpjYW5ub3RTaG93VVJMKFJlc291cmNlSGFuZGxlKikKIAog
Ym9vbCBSZXNvdXJjZUxvYWRlcjo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKQogewotICAg
IGlmIChtX29wdGlvbnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3k6OkRvTm90VXNlKQorICAgIGlmIChtX29wdGlvbnMuc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgIT0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kuaAppbmRleCAxMzZjZDcxZTFlYWI5NTBkYzlmY2UyNDEzYjYzODk4MDNhN2M3
NjdkLi4xNDk1YTA4MjE4MTVmMzNiZGZkOWM2NWQ3YjQzNDk0OWE2MjVhYzU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N0b3JlZENyZWRlbnRpYWxzUG9saWN5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TdG9yZWRDcmVkZW50aWFs
c1BvbGljeS5oCkBAIC0yNyw5ICsyNywxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVu
dW0gY2xhc3MgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgOiBib29sIHsKK2VudW0gY2xhc3MgU3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgOiB1aW50OF90IHsKICAgICBEb05vdFVzZSwKICAgICBVc2Us
CisgICAgRXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzcwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNr
QXR0cmlidXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRD
bGlja0F0dHJpYnV0aW9uTWFuYWdlci5jcHAKaW5kZXggNDUzNThhOTYxMGE0OGNlN2ZkMzBlZjAy
ODRlYWZlZjRlNjdmNWU1ZC4uYzc5OTc5OTBjYjYzMTJlZThjMGZhNTFjNDU4YjQwNzFkZmU4Mzhl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmli
dXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xp
Y2tBdHRyaWJ1dGlvbk1hbmFnZXIuY3BwCkBAIC0xMTksOSArMTE5LDggQEAgdm9pZCBBZENsaWNr
QXR0cmlidXRpb25NYW5hZ2VyOjpmaXJlQ29udmVyc2lvblJlcXVlc3QoY29uc3QgQWRDbGlja0F0
dHJpYnV0aW9uJgogICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QgPSByZXF1ZXN0OwogICAgIGxv
YWRQYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29udmVy
c2lvblJlZmVycmVyVVJMKTsKICAgICBsb2FkUGFyYW1ldGVycy5wYXJlbnRQSUQgPSBwcmVzZW50
aW5nQXBwbGljYXRpb25QSUQoKTsKLSAgICAvLyBGSVhNRTogU3dpdGNoIHRvIHRoZSB1c2Ugb2Yg
YW4gZXBoZW1lcmFsLCBzdGF0ZWxlc3Mgc2Vzc2lvbi4KICAgICBsb2FkUGFyYW1ldGVycy5zZXNz
aW9uSUQgPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwotICAgIGxvYWRQYXJh
bWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6
OkRvTm90VXNlOworICAgIGxvYWRQYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0g
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3M7CiAg
ICAgbG9hZFBhcmFtZXRlcnMub3B0aW9ucyA9IG9wdGlvbnM7CiAgICAgbG9hZFBhcmFtZXRlcnMu
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCA9IHRydWU7CiAgICAgbG9h
ZFBhcmFtZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MgPSBmYWxzZTsKQEAg
LTE4MSw3ICsxODAsNyBAQCB2b2lkIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmNsZWFyKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZAogdm9pZCBBZENsaWNrQXR0
cmlidXRpb25NYW5hZ2VyOjp0b1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgaWYgKG1fdW5jb252ZXJ0ZWRBZENs
aWNrQXR0cmlidXRpb25NYXAuaXNFbXB0eSgpICYmIG1fY29udmVydGVkQWRDbGlja0F0dHJpYnV0
aW9uTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCJObyBz
dG9yZWQgQWQgQ2xpY2sgQXR0cmlidXRpb24gZGF0YS5cbiJfcyk7CisgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcigiXG5ObyBzdG9yZWQgQWQgQ2xpY2sgQXR0cmlidXRpb24gZGF0YS5c
biJfcyk7CiAKICAgICB1bnNpZ25lZCB1bmNvbnZlcnRlZEF0dHJpYnV0aW9uTnVtYmVyID0gMDsK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAppbmRleCA4MjlmN2MyMDI0ODViNzNhYTZiOTM4
NjQ4YmU5Zjk2ZDc1YjE3ZDVkLi4zMWQxMWMzYThhZWNiMmFhZmQ0OWU1YzMxMDM5OGUwYWMxNmRk
ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
aGVja2VyLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5Owog
c3RydWN0IENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OwogZW51bSBjbGFzcyBQcmVmbGlnaHRQb2xpY3kgOiB1aW50OF90OwotZW51bSBjbGFzcyBTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JlZENyZWRlbnRpYWxz
UG9saWN5IDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNzhjZWJkNGUwZmZlZjAz
MmE1YmY5ZjU4ZjFlNzQ2MGNiYjI5MWY5Mi4uODljMjk4NWQwZTIyZWNhYTZkMGMzMTY1N2M3NDY5
Yjc1YzdjNDFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaApAQCAtNzcsNyArNzcsNyBAQCBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBj
bGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgU1dTZXJ2ZXI7CiBlbnVtIGNsYXNzIEluY2x1ZGVI
dHRwT25seUNvb2tpZXMgOiBib29sOwotZW51bSBjbGFzcyBTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IDogdWludDhfdDsK
IHN0cnVjdCBDbGllbnRPcmlnaW47CiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CiBz
dHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggODc2NDY4OGVlZjA1
NmE0NmU2MmExMjcyMjNmMTE3YTUxZjQxMDZkYS4uMWJkZDViZDMwNWRhZTdjMjAzNzMzMWY2YzY1
NDY0NWE4ZDk2NzRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04Miw3ICs4Miw3IEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDYW5jZWxQcmVwYXJlVG9T
dXNwZW5kKCkKICAgICBQcm9jZXNzRGlkUmVzdW1lKCkKIAotICAgIFByZWNvbm5lY3RUbyhVUkwg
dXJsLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kpOworICAgIFByZWNvbm5lY3RUbyhVUkwgdXJsLCBlbnVtOnVpbnQ4X3Qg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kp
OwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBDbGVhclByZXZh
bGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gcmVzb3VyY2VEb21haW4pIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZjE0
NTlkN2RjMmU3ZjEwMzg1ZWZiYmJiMTk1M2JjZjVkNzVhNmM1ZC4uY2IxNzk0ZGUyNzcwYjZiYjlh
ZGJjZTk1MjBiM2ZhODE1OTljMDNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTg2LDEzICs1ODYsMTUg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICArK21fcmVkaXJlY3RDb3VudDsKIAogICAg
IGF1dG8mIHJlZGlyZWN0VVJMID0gcmVkaXJlY3RSZXF1ZXN0LnVybCgpOwotICAgIGlmIChhdXRv
IGFkQ2xpY2tDb252ZXJzaW9uID0gQWRDbGlja0F0dHJpYnV0aW9uOjpwYXJzZUNvbnZlcnNpb25S
ZXF1ZXN0KHJlZGlyZWN0VVJMKSkgewotICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWRpcmVj
dERvbWFpbiB7IHJlZGlyZWN0VVJMIH07Ci0gICAgICAgIGF1dG8mIGZpcnN0UGFydHlVUkwgPSBy
ZWRpcmVjdFJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKTsKLSAgICAgICAgTmV0d29ya1Nl
c3Npb24qIG5ldHdvcmtTZXNzaW9uOwotICAgICAgICAvLyBUaGUgcmVkaXJlY3QgaGFzIHRvIGJl
IGRvbmUgYnkgdGhlIHNhbWUgcmVnaXN0cmFibGUgZG9tYWluIGFuZCBpdCBoYXMgdG8gYmUgYSB0
aGlyZC1wYXJ0eSByZXF1ZXN0LgotICAgICAgICBpZiAocmVkaXJlY3REb21haW4ubWF0Y2hlcyhy
ZXF1ZXN0LnVybCgpKSAmJiAhcmVkaXJlY3REb21haW4ubWF0Y2hlcyhmaXJzdFBhcnR5VVJMKSAm
JiAobmV0d29ya1Nlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKCkpKSkKLSAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jb252
ZXJ0QWRDbGlja0F0dHJpYnV0aW9uKEFkQ2xpY2tBdHRyaWJ1dGlvbjo6U291cmNlIHsgV1RGTW92
ZShyZWRpcmVjdERvbWFpbikgfSwgQWRDbGlja0F0dHJpYnV0aW9uOjpEZXN0aW5hdGlvbiB7IGZp
cnN0UGFydHlVUkwgfSwgV1RGTW92ZSgqYWRDbGlja0NvbnZlcnNpb24pKTsKKyAgICBpZiAoIXNl
c3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gYWRDbGlja0NvbnZl
cnNpb24gPSBBZENsaWNrQXR0cmlidXRpb246OnBhcnNlQ29udmVyc2lvblJlcXVlc3QocmVkaXJl
Y3RVUkwpKSB7CisgICAgICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWRpcmVjdERvbWFpbiB7
IHJlZGlyZWN0VVJMIH07CisgICAgICAgICAgICBhdXRvJiBmaXJzdFBhcnR5VVJMID0gcmVkaXJl
Y3RSZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCk7CisgICAgICAgICAgICBOZXR3b3JrU2Vz
c2lvbiogbmV0d29ya1Nlc3Npb24gPSBudWxscHRyOworICAgICAgICAgICAgLy8gVGhlIHJlZGly
ZWN0IGhhcyB0byBiZSBkb25lIGJ5IHRoZSBzYW1lIHJlZ2lzdHJhYmxlIGRvbWFpbiBhbmQgaXQg
aGFzIHRvIGJlIGEgdGhpcmQtcGFydHkgcmVxdWVzdC4KKyAgICAgICAgICAgIGlmIChyZWRpcmVj
dERvbWFpbi5tYXRjaGVzKHJlcXVlc3QudXJsKCkpICYmICFyZWRpcmVjdERvbWFpbi5tYXRjaGVz
KGZpcnN0UGFydHlVUkwpICYmIChuZXR3b3JrU2Vzc2lvbiA9IG1fY29ubmVjdGlvbi0+bmV0d29y
a1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpKQorICAgICAgICAgICAgICAg
IG5ldHdvcmtTZXNzaW9uLT5jb252ZXJ0QWRDbGlja0F0dHJpYnV0aW9uKEFkQ2xpY2tBdHRyaWJ1
dGlvbjo6U291cmNlIHsgV1RGTW92ZShyZWRpcmVjdERvbWFpbikgfSwgQWRDbGlja0F0dHJpYnV0
aW9uOjpEZXN0aW5hdGlvbiB7IGZpcnN0UGFydHlVUkwgfSwgV1RGTW92ZSgqYWRDbGlja0NvbnZl
cnNpb24pKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGF1dG8gbWF4QWdlQ2FwID0gdmFsaWRh
dGVDYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbihyZXF1ZXN0LCByZWRpcmVjdFJlcXVl
c3QsIHJlZGlyZWN0UmVzcG9uc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggMWQwYTU5Zjc4
YzY0MjNjNDdlOWE3NjFlODUwMjJjOGI4MmM3YmM2ZC4uZDc2YWExMmI5ZGVhNzc0NGRiYjdkY2I5
MmZiNTJkYWEwZTU5ZDI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0xOTMsNyArMTkzLDcg
QEAgTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNz
aW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVQKIAogICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVz
ID0gZmFsc2U7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBzaG91
bGRCbG9ja0Nvb2tpZXMgPSBzZXNzaW9uLm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLnNob3VsZEJs
b2NrQ29va2llcyhyZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQpOworICAgIHNob3VsZEJsb2NrQ29v
a2llcyA9IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzIHx8IHNlc3Npb24ubmV0d29y
a1N0b3JhZ2VTZXNzaW9uKCkuc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIGZyYW1lSUQsIHBh
Z2VJRCk7CiAjZW5kaWYKICAgICByZXN0cmljdFJlcXVlc3RSZWZlcnJlclRvT3JpZ2luSWZOZWVk
ZWQocmVxdWVzdCwgc2hvdWxkQmxvY2tDb29raWVzKTsKIApAQCAtMjAxLDE2ICsyMDEsMjUgQEAg
TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9u
JiBzZXNzaW9uLCBOZXR3b3JrRGF0YVQKICAgICBhcHBseVNuaWZmaW5nUG9saWNpZXNBbmRCaW5k
UmVxdWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQobnNSZXF1ZXN0LCBzaG91bGRDb250ZW50U25pZmYg
PT0gV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQgJiYgIXVybC5p
c0xvY2FsRmlsZSgpLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiA9PSBXZWJDb3JlOjpDb250
ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmYpOwogCiAgICAgYXV0byYgY29jb2FTZXNz
aW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSY+KG1fc2Vzc2lvbi5nZXQoKSk7
Ci0gICAgaWYgKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5OjpVc2UpIHsKKyAgICBzd2l0Y2ggKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
KSB7CisgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOgogICAg
ICAgICBtX3Rhc2sgPSBbY29jb2FTZXNzaW9uLm1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFn
ZSBkYXRhVGFza1dpdGhSZXF1ZXN0Om5zUmVxdWVzdF07CiAgICAgICAgIEFTU0VSVCghY29jb2FT
ZXNzaW9uLm1fZGF0YVRhc2tNYXBXaXRoQ3JlZGVudGlhbHMuY29udGFpbnMoW21fdGFzayB0YXNr
SWRlbnRpZmllcl0pKTsKICAgICAgICAgY29jb2FTZXNzaW9uLm1fZGF0YVRhc2tNYXBXaXRoQ3Jl
ZGVudGlhbHMuYWRkKFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCB0aGlzKTsKICAgICAgICAgTE9H
KE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBDcmVhdGluZyBzdGF0ZWZ1bCBOZXR3b3JrRGF0YVRhc2sg
d2l0aCBVUkwgJXMiLCBbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNv
bHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKLSAgICB9IGVsc2UgeworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZToKICAgICAg
ICAgbV90YXNrID0gW2NvY29hU2Vzc2lvbi5tX3N0YXRlbGVzc1Nlc3Npb24gZGF0YVRhc2tXaXRo
UmVxdWVzdDpuc1JlcXVlc3RdOwogICAgICAgICBBU1NFUlQoIWNvY29hU2Vzc2lvbi5tX2RhdGFU
YXNrTWFwV2l0aG91dFN0YXRlLmNvbnRhaW5zKFttX3Rhc2sgdGFza0lkZW50aWZpZXJdKSk7CiAg
ICAgICAgIGNvY29hU2Vzc2lvbi5tX2RhdGFUYXNrTWFwV2l0aG91dFN0YXRlLmFkZChbbV90YXNr
IHRhc2tJZGVudGlmaWVyXSwgdGhpcyk7CiAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVs
bHUgQ3JlYXRpbmcgc3RhdGVsZXNzIE5ldHdvcmtEYXRhVGFzayB3aXRoIFVSTCAlcyIsIFttX3Rh
c2sgdGFza0lkZW50aWZpZXJdLCBuc1JlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLlVURjhTdHJp
bmcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzOgorICAgICAgICBtX3Rhc2sgPSBb
Y29jb2FTZXNzaW9uLm1fZXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb24gZGF0YVRh
c2tXaXRoUmVxdWVzdDpuc1JlcXVlc3RdOworICAgICAgICBBU1NFUlQoIWNvY29hU2Vzc2lvbi5t
X2RhdGFUYXNrTWFwRXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzcy5jb250YWlucyhbbV90YXNr
IHRhc2tJZGVudGlmaWVyXSkpOworICAgICAgICBjb2NvYVNlc3Npb24ubV9kYXRhVGFza01hcEVw
aGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3MuYWRkKFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCB0
aGlzKTsKKyAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBDcmVhdGluZyBlcGhlbWVy
YWwsIHN0YXRlbGVzcywgY29va2llbGVzcyBOZXR3b3JrRGF0YVRhc2sgd2l0aCBVUkwgJXMiLCBb
bV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4
U3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKHNob3VsZFByZWNvbm5l
Y3RPbmx5ID09IFByZWNvbm5lY3RPbmx5OjpZZXMpIHsKQEAgLTI1MCwxMiArMjU5LDE5IEBAIE5l
dHdvcmtEYXRhVGFza0NvY29hOjp+TmV0d29ya0RhdGFUYXNrQ29jb2EoKQogICAgICAgICByZXR1
cm47CiAKICAgICBhdXRvJiBjb2NvYVNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lv
bkNvY29hJj4obV9zZXNzaW9uLmdldCgpKTsKLSAgICBpZiAobV9zdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKSB7CisgICAgc3dp
dGNoIChtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5KSB7CisgICAgY2FzZSBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOgogICAgICAgICBBU1NFUlQoY29jb2FTZXNzaW9uLm1f
ZGF0YVRhc2tNYXBXaXRoQ3JlZGVudGlhbHMuZ2V0KFttX3Rhc2sgdGFza0lkZW50aWZpZXJdKSA9
PSB0aGlzKTsKICAgICAgICAgY29jb2FTZXNzaW9uLm1fZGF0YVRhc2tNYXBXaXRoQ3JlZGVudGlh
bHMucmVtb3ZlKFttX3Rhc2sgdGFza0lkZW50aWZpZXJdKTsKLSAgICB9IGVsc2UgeworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05v
dFVzZToKICAgICAgICAgQVNTRVJUKGNvY29hU2Vzc2lvbi5tX2RhdGFUYXNrTWFwV2l0aG91dFN0
YXRlLmdldChbbV90YXNrIHRhc2tJZGVudGlmaWVyXSkgPT0gdGhpcyk7CiAgICAgICAgIGNvY29h
U2Vzc2lvbi5tX2RhdGFUYXNrTWFwV2l0aG91dFN0YXRlLnJlbW92ZShbbV90YXNrIHRhc2tJZGVu
dGlmaWVyXSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3M6CisgICAgICAgIEFTU0VS
VChjb2NvYVNlc3Npb24ubV9kYXRhVGFza01hcEVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3Mu
Z2V0KFttX3Rhc2sgdGFza0lkZW50aWZpZXJdKSA9PSB0aGlzKTsKKyAgICAgICAgY29jb2FTZXNz
aW9uLm1fZGF0YVRhc2tNYXBFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzLnJlbW92ZShbbV90
YXNrIHRhc2tJZGVudGlmaWVyXSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAtMzQ1
LDcgKzM2MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmCiAgICAgICAgIHJlcXVlc3Quc2V0
Rmlyc3RQYXJ0eUZvckNvb2tpZXMocmVxdWVzdC51cmwoKSk7CiAKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzID0gbV9zZXNz
aW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS5zaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwg
bV9mcmFtZUlELCBtX3BhZ2VJRCk7CisgICAgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMgPSBtX3N0
b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
OjpFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzIHx8IG1fc2Vzc2lvbi0+bmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKCkuc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIG1fZnJhbWVJRCwgbV9wYWdl
SUQpOwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmIChtX3Nlc3Npb24tPnNob3Vs
ZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCiAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQg
PSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgdGFza0lEID0gJWx1OiAlcyBjb29raWVzIGZvciByZWRp
cmVjdCBVUkwgJXMiLCB0aGlzLCBtX3BhZ2VJRCwgbV9mcmFtZUlELCAodW5zaWduZWQgbG9uZylb
bV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNob3VsZEJsb2NrQ29va2llcyA/ICJCbG9ja2luZyIg
OiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5oCmluZGV4IDRiNTA4Y2I4MDVhYWMzZDY5ZGM3NTlmZWNkMGVlMmIzYjEw
NzU4MGQuLmFiZTNlOGY4MDk4NGM5NWM4NmMyNTRlMTJiYzI1ZGUyNTkyOTQ4ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKIE9CSkNfQ0xBU1MgTlNEYXRhOwogT0JKQ19D
TEFTUyBOU1VSTFNlc3Npb247CitPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb247
CiBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzazsKIE9CSkNfQ0xBU1MgTlNPcGVy
YXRpb25RdWV1ZTsKIE9CSkNfQ0xBU1MgV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlOwpAQCAtNDcs
NiArNDgsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRl
KE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiAg
ICAgfk5ldHdvcmtTZXNzaW9uQ29jb2EoKTsKIAorICAgIHZvaWQgaW5pdGlhbGl6ZUVwaGVtZXJh
bFN0YXRlbGVzc0Nvb2tpZWxlc3NTZXNzaW9uKE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24qKTsK
KwogICAgIGNvbnN0IFN0cmluZyYgc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkg
Y29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXIoKSBjb25zdDsKICAgICAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IE5ldHdvcmtT
ZXNzaW9uIGhhcyBiZWVuIGNyZWF0ZWQuCkBAIC03NywxMiArODAsMTUgQEAgcHJpdmF0ZToKIAog
ICAgIEhhc2hNYXA8TmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyLCBOZXR3b3Jr
RGF0YVRhc2tDb2NvYSo+IG1fZGF0YVRhc2tNYXBXaXRoQ3JlZGVudGlhbHM7CiAgICAgSGFzaE1h
cDxOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIE5ldHdvcmtEYXRhVGFza0Nv
Y29hKj4gbV9kYXRhVGFza01hcFdpdGhvdXRTdGF0ZTsKKyAgICBIYXNoTWFwPE5ldHdvcmtEYXRh
VGFza0NvY29hOjpUYXNrSWRlbnRpZmllciwgTmV0d29ya0RhdGFUYXNrQ29jb2EqPiBtX2RhdGFU
YXNrTWFwRXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzczsKICAgICBIYXNoTWFwPE5ldHdvcmtE
YXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciwgRG93bmxvYWRJRD4gbV9kb3dubG9hZE1hcDsK
IAogICAgIFJldGFpblB0cjxOU1VSTFNlc3Npb24+IG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3Rv
cmFnZTsKICAgICBSZXRhaW5QdHI8V0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlPiBtX3Nlc3Npb25X
aXRoQ3JlZGVudGlhbFN0b3JhZ2VEZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9u
PiBtX3N0YXRlbGVzc1Nlc3Npb247CiAgICAgUmV0YWluUHRyPFdLTmV0d29ya1Nlc3Npb25EZWxl
Z2F0ZT4gbV9zdGF0ZWxlc3NTZXNzaW9uRGVsZWdhdGU7CisgICAgUmV0YWluUHRyPE5TVVJMU2Vz
c2lvbj4gbV9lcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzU2Vzc2lvbjsKKyAgICBSZXRhaW5Q
dHI8V0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlPiBtX2VwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxl
c3NTZXNzaW9uRGVsZWdhdGU7CiAKICAgICBTdHJpbmcgbV9ib3VuZEludGVyZmFjZUlkZW50aWZp
ZXI7CiAgICAgU3RyaW5nIG1fc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCmluZGV4IDI0NzU4ZmZjMDNhMzg5MDkyYTA0ZGUxZjk1YzViODI0ODYzZjZj
NTYuLjUxMDc3MTU4NTdiMTFmODgzNDZmYTY3ZDUwNWZkMmZmMDE4NzY0OTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0KQEAgLTk4MSw2ICs5ODEsOCBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3Jr
U2Vzc2lvbkNvY29hKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogICAg
IG1fc3RhdGVsZXNzU2Vzc2lvbkRlbGVnYXRlID0gYWRvcHROUyhbW1dLTmV0d29ya1Nlc3Npb25E
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhOZXR3b3JrU2Vzc2lvbjoqdGhpcyB3aXRoQ3JlZGVudGlh
bHM6ZmFsc2VdKTsKICAgICBtX3N0YXRlbGVzc1Nlc3Npb24gPSBbTlNVUkxTZXNzaW9uIHNlc3Np
b25XaXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uIGRlbGVnYXRlOnN0YXRpY19jYXN0PGlk
PihtX3N0YXRlbGVzc1Nlc3Npb25EZWxlZ2F0ZS5nZXQoKSkgZGVsZWdhdGVRdWV1ZTpbTlNPcGVy
YXRpb25RdWV1ZSBtYWluUXVldWVdXTsKIAorICAgIGluaXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxl
c3NDb29raWVsZXNzU2Vzc2lvbihjb25maWd1cmF0aW9uKTsKKwogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
ID0gcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OwogICAgIG1fc2hv
dWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHBhcmFtZXRlcnMu
c2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA/IFNob3VsZElu
Y2x1ZGVMb2NhbGhvc3Q6OlllcyA6IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6Ok5vOwpAQCAtOTk4
LDE0ICsxMDAwLDM3IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6On5OZXR3b3JrU2Vzc2lvbkNvY29h
KCkKIHsKIH0KIAordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbml0aWFsaXplRXBoZW1lcmFs
U3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb24oTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiAqZXhp
c3RpbmdDb25maWd1cmF0aW9uKQoreworICAgIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gKmNv
bmZpZ3VyYXRpb24gPSBbTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiBlcGhlbWVyYWxTZXNzaW9u
Q29uZmlndXJhdGlvbl07CisgICAgCisgICAgY29uZmlndXJhdGlvbi5IVFRQQ29va2llQWNjZXB0
UG9saWN5ID0gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXI7CisgICAgY29uZmlndXJhdGlv
bi5VUkxDcmVkZW50aWFsU3RvcmFnZSA9IG5pbDsKKyAgICBjb25maWd1cmF0aW9uLlVSTENhY2hl
ID0gbmlsOworICAgIGNvbmZpZ3VyYXRpb24uYWxsb3dzQ2VsbHVsYXJBY2Nlc3MgPSBleGlzdGlu
Z0NvbmZpZ3VyYXRpb24uYWxsb3dzQ2VsbHVsYXJBY2Nlc3M7CisgICAgY29uZmlndXJhdGlvbi5j
b25uZWN0aW9uUHJveHlEaWN0aW9uYXJ5ID0gZXhpc3RpbmdDb25maWd1cmF0aW9uLmNvbm5lY3Rp
b25Qcm94eURpY3Rpb25hcnk7CisKKyAgICBjb25maWd1cmF0aW9uLl9zaG91bGRTa2lwUHJlZmVy
cmVkQ2xpZW50Q2VydGlmaWNhdGVMb29rdXAgPSBZRVM7CisgICAgY29uZmlndXJhdGlvbi5fc291
cmNlQXBwbGljYXRpb25BdWRpdFRva2VuRGF0YSA9IGV4aXN0aW5nQ29uZmlndXJhdGlvbi5fc291
cmNlQXBwbGljYXRpb25BdWRpdFRva2VuRGF0YTsKKyAgICBjb25maWd1cmF0aW9uLl9zb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgPSBleGlzdGluZ0NvbmZpZ3VyYXRpb24uX3Nv
dXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorICAgIGNvbmZpZ3VyYXRpb24uX0NURGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZSA9IGV4
aXN0aW5nQ29uZmlndXJhdGlvbi5fQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlOworI2VuZGlm
CisKKyAgICBtX2VwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3NTZXNzaW9uRGVsZWdhdGUgPSBh
ZG9wdE5TKFtbV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aE5ldHdvcmtT
ZXNzaW9uOip0aGlzIHdpdGhDcmVkZW50aWFsczpmYWxzZV0pOworICAgIG1fZXBoZW1lcmFsU3Rh
dGVsZXNzQ29va2llbGVzc1Nlc3Npb24gPSBbTlNVUkxTZXNzaW9uIHNlc3Npb25XaXRoQ29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uIGRlbGVnYXRlOnN0YXRpY19jYXN0PGlkPihtX2VwaGVtZXJh
bFN0YXRlbGVzc0Nvb2tpZWxlc3NTZXNzaW9uRGVsZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6
W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07Cit9CisKIHZvaWQgTmV0d29ya1Nlc3Npb25D
b2NvYTo6aW52YWxpZGF0ZUFuZENhbmNlbCgpCiB7CiAgICAgTmV0d29ya1Nlc3Npb246OmludmFs
aWRhdGVBbmRDYW5jZWwoKTsKIAogICAgIFttX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Ug
aW52YWxpZGF0ZUFuZENhbmNlbF07CiAgICAgW21fc3RhdGVsZXNzU2Vzc2lvbiBpbnZhbGlkYXRl
QW5kQ2FuY2VsXTsKKyAgICBbbV9lcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzU2Vzc2lvbiBp
bnZhbGlkYXRlQW5kQ2FuY2VsXTsKICAgICBbbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdl
RGVsZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVkXTsKICAgICBbbV9zdGF0ZWxlc3NTZXNzaW9uRGVs
ZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVkXTsKKyAgICBbbV9lcGhlbWVyYWxTdGF0ZWxlc3NDb29r
aWVsZXNzU2Vzc2lvbkRlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07CiB9CiAKIHZvaWQgTmV0
d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJDcmVkZW50aWFscygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGVkMDI3ZWIzMDQ2NjExNDdlNGVmMWZk
YjYwNmNhODE1MTA3MDMyMDIuLmQ4ODJmYjY4ZDg5MWFhMmVlYzcxN2NmNGEyYWYzYjA0M2JmMzAy
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBA
IC04NTQsNiArODU0LDE1IEBAIHRlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6
OldvcmtlclR5cGU+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeT4geworICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LAor
ICAgICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UsCisgICAg
ICAgIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UsCisgICAgICAgIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNz
CisgICAgPjsKK307CisKICNpZiBVU0UoQ1VSTCkKIHRlbXBsYXRlIDw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OkN1cmxQcm94eVNldHRpbmdzOjpNb2RlPiB7CiAgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0Y2I3NmQ1NjViNjNlZDc1ZmI0NTFjYTM5NTIzNmNkNmQ3
NGVjMWQyLi42OGFiYmZjMzdmNTJkOTU0ODhjYzQ3ZGE0YzQ2OTVhNDgzNjk3MTJjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTktMDQtMTkgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgRGlzYWJsZSBBZCBDbGljayBBdHRyaWJ1dGlvbiBpbiBlcGhlbWVy
YWwgc2Vzc2lvbnMgYW5kIG1ha2Ugc3VyZSBjb252ZXJzaW9uIHJlcXVlc3RzIHVzZSBhbiBlcGhl
bWVyYWwsIHN0YXRlbGVzcyBzZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTcxMDgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ5OTE4NzAy
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4Y2Vw
dCBmb3IgdGhlIGRldGFpbHMgYmVsb3csIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0aGUgdXRpbGl0
eSBmdW5jdGlvbnMKKyAgICAgICAgcHJlcGFyZVRlc3QoKSBhbmQgdGVhckRvd25BbmRGaW5pc2go
KSBhbmQgYWxsIGFwcGxpY2FibGUgdGVzdHMgbm93IG1ha2UgdXNlCisgICAgICAgIG9mIHRoZW0u
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1j
b252ZXJzaW9uLXRocm91Z2gtY3Jvc3Mtc2l0ZS1pbWFnZS1yZWRpcmVjdC5odG1sOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24t
dGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRoLXByaW9yaXR5Lmh0bWw6CisgICAgICAgICogaHR0
cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdo
LWltYWdlLXJlZGlyZWN0LXdpdGhvdXQtcHJpb3JpdHkuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9jb252ZXJzaW9uLWRpc2FibGVkLWluLWVwaGVtZXJhbC1z
ZXNzaW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hZENsaWNr
QXR0cmlidXRpb24vY29udmVyc2lvbi1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi5odG1s
OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9z
ZW5kLWF0dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVxdWVzdC5odG1sLgorICAgICAgICAqIGh0dHAv
dGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy9jb252ZXJzaW9uUmVwb3J0LnBocDoK
KyAgICAgICAgICAgIE5vdyB0cmllcyB0byBzZXQgYSBjb29raWUgaW4gdGhlIHJlc3BvbnNlLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy91dGlsLmpz
OiBBZGRlZC4KKyAgICAgICAgKHByZXBhcmVUZXN0KToKKyAgICAgICAgKHRlYXJEb3duQW5kRmlu
aXNoKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtYXR0
cmlidXRpb24tY29udmVydGVkLXdpdGgtaGlnaGVyLXByaW9yaXR5Lmh0bWw6CisgICAgICAgICog
aHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWF0dHJpYnV0aW9uLWNvbnZlcnRl
ZC13aXRoLWxvd2VyLXByaW9yaXR5Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9hZENsaWNr
QXR0cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24td2l0aC1oaWdoZXItcHJpb3JpdHkuaHRtbDoK
KyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtY29udmVyc2lv
bi13aXRoLWxvd2VyLXByaW9yaXR5Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9hZENsaWNr
QXR0cmlidXRpb24vc2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlbmQtYXR0cmli
dXRpb24tY29udmVyc2lvbi1yZXF1ZXN0Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9hZENs
aWNrQXR0cmlidXRpb24vc3RvcmUtYWQtY2xpY2stYXR0cmlidXRpb24uaHRtbDoKKyAgICAgICAg
ICAgIE5vdyBzZXRzIGEgY29va2llIHdoaWNoIGlzIGNoZWNrZWQgZm9yIGl0IGluIHRoZSBjb252
ZXJzaW9uIHJlcG9ydC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9z
dG9yZS1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWRpc2FibGVkLWlu
LWVwaGVtZXJhbC1zZXNzaW9uLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWFkLWNsaWNrLWF0dHJpYnV0aW9uLmh0bWwuCisK
IDIwMTktMDQtMTggIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAg
QmxvYiB0eXBlIGNhbm5vdCBiZSBzdG9yZWQgY29ycmVjdGx5IGluIElEQiB3aGVuIElEQk9iamVj
dFN0b3JlIGhhcyBhdXRvSW5jcmVtZW50IGFuZCBrZXlQYXRoIG9wdGlvbnMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNv
bnZlcnNpb24tdGhyb3VnaC1jcm9zcy1zaXRlLWltYWdlLXJlZGlyZWN0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9u
LXRocm91Z2gtY3Jvc3Mtc2l0ZS1pbWFnZS1yZWRpcmVjdC5odG1sCmluZGV4IDMxMjQwNjczOWY1
YTliOGM4MzI4NTc5YmMxNmU3YjI5ODhlODBmZjQuLjQ0M2FmODcxZTA5ZWUxN2MyY2IyMTc3ZGI0
Y2E5ZDk2NzcxZDg3MWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlj
a0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1jcm9zcy1zaXRlLWlt
YWdlLXJlZGlyZWN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0
cmlidXRpb24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWNyb3NzLXNpdGUtaW1hZ2Ut
cmVkaXJlY3QuaHRtbApAQCAtNCwxNyArNCwxNCBAQAogICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04
Ij4KICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRo
LCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgogICAgIDxzY3JpcHQgc3JjPSIv
anMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJz
ZXRUaW1lb3V0KHJ1blRlc3QsIDApIj4KIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0cyB0aGF0
IHRyaWdnZXJpbmcgb2YgYWQgY2xpY2sgYXR0cmlidXRpb24gY29udmVyc2lvbnMgdGhyb3VnaCBj
cm9zcy1zaXRlIHJlZGlyZWN0cyBkbyBub3Qgd29yay48L2Rpdj4KIDxhIGlkPSJ0YXJnZXRMaW5r
IiBocmVmPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0
aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1jcm9zcy1zaXRlLWltYWdlLXJlZGlyZWN0Lmh0bWw/c3Rl
cFR3byIgYWRjYW1wYWlnbmlkPSIzIiBhZGRlc3RpbmF0aW9uPSJodHRwOi8vbG9jYWxob3N0Ojgw
MDAiPkxpbms8L2E+PGJyPgogPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KIDxzY3JpcHQ+Ci0gICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwotICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgdGVzdFJ1bm5l
ci5zZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSh0cnVlKTsKLSAgICB9CisgICAgcHJlcGFyZVRl
c3QoKTsKIAogICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SUQpIHsKICAgICAg
ICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SUQpOwpAQCAt
MjUsNyArMjIsNyBAQAogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJU
ZXh0ID0gIkZBSUwgUHJvbWlzZSByZWplY3RlZC4iOwotICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICk7CiAgICAgfQpAQCAtNDAsNyArMzcsNyBAQAogICAgICAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBZENsaWNrQXR0cmlidXRpb24oKTsKICAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGFyZ2V0TGluayIpKTsKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9k
eS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGl4ZWwiKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgICAg
ICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZUVsZW1lbnQpOwogICAgICAgICAgICAg
fSBlbHNlIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJp
YnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRo
LXByaW9yaXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlv
bi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0aC1wcmlv
cml0eS5odG1sCmluZGV4IGM1ZmI1ZjUwM2ZkYzc4ODZkMzEyYzI1YWU0MWUyOGUxZTRjYTI4MmMu
LjUzZDg2NmYwZGE2OWY1YTY5ZDU4MGM5OTlhN2Y1NWMwZDRhNmUxYzEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZl
cnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRoLXByaW9yaXR5Lmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24tY29udmVy
c2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0LXdpdGgtcHJpb3JpdHkuaHRtbApAQCAtNCwxNyAr
NCwxNCBAQAogICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgICA8bWV0YSBuYW1lPSJ2aWV3
cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXIt
c2NhbGFibGU9bm8iPgogICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVs
cGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KHJ1blRlc3QsIDApIj4K
IDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0cyB0cmlnZ2VyaW5nIG9mIGFkIGNsaWNrIGF0dHJp
YnV0aW9uIGNvbnZlcnNpb25zIHdpdGggcHJpb3JpdHkuPC9kaXY+CiA8YSBpZD0idGFyZ2V0TGlu
ayIgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1
dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0aC1wcmlvcml0eS5odG1s
P3N0ZXBUd28iIGFkY2FtcGFpZ25pZD0iMyIgYWRkZXN0aW5hdGlvbj0iaHR0cDovL2xvY2FsaG9z
dDo4MDAwIj5MaW5rPC9hPjxicj4KIDxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+CiA8c2NyaXB0Pgot
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIHRlc3RS
dW5uZXIuc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUodHJ1ZSk7Ci0gICAgfQorICAgIHByZXBh
cmVUZXN0KCk7CiAKICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElEKSB7CiAg
ICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElEKTsK
QEAgLTI1LDcgKzIyLDcgQEAKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlu
bmVyVGV4dCA9ICJGQUlMIFByb21pc2UgcmVqZWN0ZWQuIjsKLSAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgp
OwogICAgICAgICAgICAgfQogICAgICAgICApOwogICAgIH0KQEAgLTQwLDcgKzM3LDcgQEAKICAg
ICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQWRDbGlja0F0dHJpYnV0aW9uKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKSk7CiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBpeGVsIikpOwotICAg
ICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKICAgICAgICAgICAgICAgICB9OwogICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2VFbGVtZW50KTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tB
dHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qt
d2l0aG91dC1wcmlvcml0eS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0
cmlidXRpb24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0LXdp
dGhvdXQtcHJpb3JpdHkuaHRtbAppbmRleCA5N2JhNTJlMGY0MmY3OGVmZTQ3MzAxMDc3ZmIwZTZk
MTAzOTU2ZWJjLi5mYjE3NGIxMDViNGUzY2FlMjhlMWM3NjI0NTU1MjU4OTg2OWY3ZDhjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1
dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0aG91dC1wcmlvcml0eS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJp
YnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRob3V0LXByaW9yaXR5
Lmh0bWwKQEAgLTQsMTcgKzQsMTQgQEAKICAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICAg
PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlh
bC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5vIj4KICAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3Qt
cmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291
cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0ic2V0VGltZW91
dChydW5UZXN0LCAwKSI+CiA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGVzdHMgdHJpZ2dlcmluZyBv
ZiBhZCBjbGljayBhdHRyaWJ1dGlvbiBjb252ZXJzaW9ucyB3aXRob3V0IHByaW9yaXR5LjwvZGl2
PgogPGEgaWQ9InRhcmdldExpbmsiIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9hZENsaWNr
QXR0cmlidXRpb24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0
LXdpdGhvdXQtcHJpb3JpdHkuaHRtbD9zdGVwVHdvIiBhZGNhbXBhaWduaWQ9IjMiIGFkZGVzdGlu
YXRpb249Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI+TGluazwvYT48YnI+CiA8ZGl2IGlkPSJvdXRw
dXQiPjwvZGl2PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwotICAgICAgICB0ZXN0UnVubmVyLnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlKHRy
dWUpOwotICAgIH0KKyAgICBwcmVwYXJlVGVzdCgpOwogCiAgICAgZnVuY3Rpb24gYWN0aXZhdGVF
bGVtZW50KGVsZW1lbnRJRCkgewogICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKGVsZW1lbnRJRCk7CkBAIC0yNSw3ICsyMiw3IEBACiAgICAgICAgICAgICB9LAog
ICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBQcm9taXNlIHJlamVjdGVkLiI7
Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAg
ICAgdGVhckRvd25BbmRGaW5pc2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgKTsKICAgICB9
CkBAIC00MCw3ICszNyw3IEBACiAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFk
Q2xpY2tBdHRyaWJ1dGlvbigpOwogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJl
bW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXRMaW5rIikpOwogICAgICAg
ICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwaXhlbCIpKTsKLSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CisgICAgICAgICAgICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CiAgICAgICAg
ICAgICAgICAgfTsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlt
YWdlRWxlbWVudCk7CiAgICAgICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vY29udmVyc2lvbi1kaXNhYmxlZC1pbi1l
cGhlbWVyYWwtc2Vzc2lvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fk
Q2xpY2tBdHRyaWJ1dGlvbi9jb252ZXJzaW9uLWRpc2FibGVkLWluLWVwaGVtZXJhbC1zZXNzaW9u
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzRhYjVkOTEyNTk0NTgzMGEyYjg0M2U3MTc0ZTE1
MDlkMmNkNTgwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENs
aWNrQXR0cmlidXRpb24vY29udmVyc2lvbi1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGVzdHMgdGhhdCBzdG9yZWQgYXR0cmlidXRp
b25zIGNhbm5vdCBiZSBjb252ZXJ0ZWQgaW4gYW4gZXBoZW1lcmFsIHNlc3Npb24uCisKKworCist
LS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWUxLS0+JworLS0tLS0tLS0KK0NvbnZlcnNpb24gbm90
IHJlY2VpdmVkIC0gdGltZWQgb3V0LgorCitVbmNvbnZlcnRlZCBBZCBDbGljayBBdHRyaWJ1dGlv
bnM6CitXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24gMQorU291cmNlOiAxMjcuMC4wLjEKK0Rl
c3RpbmF0aW9uOiBsb2NhbGhvc3QKK0NhbXBhaWduIElEOiAzCitObyBjb252ZXJzaW9uIGRhdGEu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9j
b252ZXJzaW9uLWRpc2FibGVkLWluLWVwaGVtZXJhbC1zZXNzaW9uLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9jb252ZXJzaW9uLWRpc2FibGVkLWluLWVw
aGVtZXJhbC1zZXNzaW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJmNWZmZmEwODZhYWQ0Y2NmNzZlOWMx
ZjkzZjk5OGUxOWIxNmE2YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvYWRDbGlja0F0dHJpYnV0aW9uL2NvbnZlcnNpb24tZGlzYWJsZWQtaW4tZXBoZW1lcmFsLXNl
c3Npb24uaHRtbApAQCAtMCwwICsxLDc2IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgaW50ZXJuYWw6QWRDbGlja0F0
dHJpYnV0aW9uRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAg
ICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRl
bnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5v
Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dChydW5UZXN0LCAwKSI+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+VGVzdHMgdGhhdCBzdG9yZWQgYXR0cmlidXRpb25zIGNhbm5vdCBiZSBjb252
ZXJ0ZWQgaW4gYW4gZXBoZW1lcmFsIHNlc3Npb24uPC9kaXY+Cis8YSBpZD0idGFyZ2V0TGluayIg
aHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL2FkQ2xpY2tBdHRyaWJ1dGlvbi9jb252ZXJzaW9u
LWRpc2FibGVkLWluLWVwaGVtZXJhbC1zZXNzaW9uLmh0bWw/c3RlcFR3byIgYWRjYW1wYWlnbmlk
PSIzIiBhZGRlc3RpbmF0aW9uPSJodHRwOi8vbG9jYWxob3N0OjgwMDAiPkxpbms8L2E+PGJyPgor
PGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzxzY3JpcHQ+CisgICAgY29uc3QgY3VycmVudFRpbWVN
aWxsaXMgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpOworICAgIGNvbnN0IGhpZ2hFbnRyb3B5Qml0
cyA9IGN1cnJlbnRUaW1lTWlsbGlzIC0gKE1hdGguZmxvb3IoY3VycmVudFRpbWVNaWxsaXMgLyAx
MDAwMDAwKSAqIDEwMDAwMDApOworICAgIGNvbnN0IG5vbmNlID0gaGlnaEVudHJvcHlCaXRzICsg
IiIgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDApOworCisgICAgcHJlcGFyZVRlc3Qo
KTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRB
ZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZygiaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvY29udmVyc2lvblJlcG9ydC5waHA/
bm9uY2U9IiArIG5vbmNlKTsKKworICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50
SUQpIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVt
ZW50SUQpOworICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1l
bnQub2Zmc2V0V2lkdGggLyAyOworICAgICAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0
VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICBVSUhlbHBlci5hY3RpdmF0
ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4oCisgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBQcm9t
aXNlIHJlamVjdGVkLiI7CisgICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhcHBlbmRJZnJh
bWUodXJsLCBvbmxvYWRDYWxsYmFjaykgeworICAgICAgICBsZXQgaWZyYW1lRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICBpZnJhbWVFbGVtZW50LnNy
YyA9IHVybDsKKyAgICAgICAgaWYgKG9ubG9hZENhbGxiYWNrKQorICAgICAgICAgICAgaWZyYW1l
RWxlbWVudC5vbmxvYWQgPSBvbmxvYWRDYWxsYmFjazsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhcHBlbmRD
b252ZXJzaW9uRGF0YUlmcmFtZUFuZEZpbmlzaCgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QWRDbGlja0F0dHJpYnV0aW9uKCk7CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKSk7CisgICAgICAgIGRvY3VtZW50
LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBpeGVsIikpOworCisg
ICAgICAgIGFwcGVuZElmcmFtZSgiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2FkQ2xpY2tBdHRyaWJ1
dGlvbi9yZXNvdXJjZXMvZ2V0Q29udmVyc2lvbkRhdGEucGhwP3RpbWVvdXRfbXM9MTAwMCZub25j
ZT0iICsgbm9uY2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2go
KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICBpZiAod2luZG93LmxvY2F0
aW9uLnNlYXJjaCA9PT0gIj9zdGVwVHdvIikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgICAgICBsZXQgaW1h
Z2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgICAgICAgICAg
ICAgaW1hZ2VFbGVtZW50LnNyYyA9ICJodHRwczovLzEyNy4wLjAuMTo4NDQzL2FkQ2xpY2tBdHRy
aWJ1dGlvbi9yZXNvdXJjZXMvcmVkaXJlY3RUb0NvbnZlcnNpb24ucGhwP2NvbnZlcnNpb25EYXRh
PTEyJm5vbmNlPSIgKyBub25jZTsKKyAgICAgICAgICAgICAgICBpbWFnZUVsZW1lbnQuaWQgPSAi
cGl4ZWwiOworICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudC5vbmVycm9yID0gZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZENvbnZlcnNpb25EYXRhSWZyYW1lQW5kRmlu
aXNoKCk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9ICJjb29raWVTZXRBc0ZpcnN0UGFydHk9MTsgcGF0
aD0vIjsKKyAgICAgICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQoInRhcmdldExpbmsiKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBObyB0ZXN0UnVubmVyLiI7Cisg
ICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy9jb252
ZXJzaW9uUmVwb3J0LnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0
aW9uL3Jlc291cmNlcy9jb252ZXJzaW9uUmVwb3J0LnBocAppbmRleCAzZmJkOGZiODIzYWQzODQ4
MmRkMmJmMjk5YTkyMTQ3ZTIwOGNmMGQyLi5lMzg0MjEyNTViYzVkNTIxMTg4NjMyYmE3M2E0ODk5
MjMzNTRlZDJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRy
aWJ1dGlvbi9yZXNvdXJjZXMvY29udmVyc2lvblJlcG9ydC5waHAKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2NvbnZlcnNpb25SZXBvcnQu
cGhwCkBAIC0yNCw0ICsyNCw4IEBAIGlmICghJGNvb2tpZXNGb3VuZCkgewogfQogZmNsb3NlKCRj
b252ZXJzaW9uRmlsZSk7CiByZW5hbWUoJGNvbnZlcnNpb25GaWxlUGF0aCAuICIudG1wIiwgJGNv
bnZlcnNpb25GaWxlUGF0aCk7CisKK2hlYWRlcigiSFRUUC8xLjEgMjAwIE9LIik7CitzZXRjb29r
aWUoImNvb2tpZVNldEluQ29udmVyc2lvblJlcG9ydCIsICIxIiwgMCwgIi8iKTsKKwogPz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291
cmNlcy91dGlsLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24v
cmVzb3VyY2VzL3V0aWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2YzMGM4Y2E2ZmZjNDJkNTFmYjg1NmYzMzUw
NTI3NzhjYTk4NjdmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy91dGlsLmpzCkBAIC0wLDAgKzEsMTggQEAKK2Z1
bmN0aW9uIHByZXBhcmVUZXN0KCkgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1w
Q2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIuc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUodHJ1ZSk7CisgICAg
fQorfQorCitmdW5jdGlvbiB0ZWFyRG93bkFuZEZpbmlzaCgpIHsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0
ZShmYWxzZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0QWRDbGlja0F0dHJpYnV0aW9uT3ZlcnJp
ZGVUaW1lckZvclRlc3RpbmcoZmFsc2UpOworICAgICAgICB0ZXN0UnVubmVyLnNldEFkQ2xpY2tB
dHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKCIiKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1h
dHRyaWJ1dGlvbi1jb252ZXJ0ZWQtd2l0aC1oaWdoZXItcHJpb3JpdHkuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252
ZXJ0ZWQtd2l0aC1oaWdoZXItcHJpb3JpdHkuaHRtbAppbmRleCA0OTIwMGY3M2ZiYjZjZmM1ZDI5
ZDRhNWI4Y2RiOTM0MDAzNTgzZmQwLi5kZDM4M2VkNzc3MjM0ZTEyZWYxMDYxZTM0NDViMTE2MjRk
OWJiMmE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1
dGlvbi9zZWNvbmQtYXR0cmlidXRpb24tY29udmVydGVkLXdpdGgtaGlnaGVyLXByaW9yaXR5Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25k
LWF0dHJpYnV0aW9uLWNvbnZlcnRlZC13aXRoLWhpZ2hlci1wcmlvcml0eS5odG1sCkBAIC00LDYg
KzQsNyBAQAogICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgICA8bWV0YSBuYW1lPSJ2aWV3
cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXIt
c2NhbGFibGU9bm8iPgogICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVs
cGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KHJ1blRlc3QsIDApIj4K
IDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0cyB0aGF0IGEgc2Vjb25kIGF0dHJpYnV0aW9uIGNv
bnZlcnNpb24gd2l0aCBoaWdoZXIgcHJpb3JpdHkgcmVwbGFjZXMgYW4gb2xkZXIgd2l0aCBsb3dl
ciBwcmlvcml0eS48L2Rpdj4KQEAgLTI0LDYgKzI1LDggQEAKICAgICAgICAgfQogICAgIF07CiAK
KyAgICBwcmVwYXJlVGVzdCgpOworCiAgICAgZnVuY3Rpb24gY29uZmlndXJlTGluayhpbmRleCkg
ewogICAgICAgICBsZXQgbGlua0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFy
Z2V0TGluayIpOwogICAgICAgICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoImhyZWYiLCBjb25m
aWd1cmF0aW9uW2luZGV4XS5ocmVmKTsKQEAgLTMxLDEyICszNCw2IEBACiAgICAgICAgIGxpbmtF
bGVtZW50LnNldEF0dHJpYnV0ZSgiYWRkZXN0aW5hdGlvbiIsIGNvbmZpZ3VyYXRpb25baW5kZXhd
LmFkZGVzdGluYXRpb24pOwogICAgIH0KIAotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewot
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNh
dGUodHJ1ZSk7Ci0gICAgfQotCiAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJ
RCkgewogICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1l
bnRJRCk7CiAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVu
dC5vZmZzZXRXaWR0aCAvIDI7CkBAIC00Niw3ICs0Myw3IEBACiAgICAgICAgICAgICB9LAogICAg
ICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBQcm9taXNlIHJlamVjdGVkLiI7Ci0g
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAg
dGVhckRvd25BbmRGaW5pc2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgKTsKICAgICB9CkBA
IC03OSwxMiArNzYsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQWRD
bGlja0F0dHJpYnV0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVt
b3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInBpeGVsIikpOwotICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKICAgICAgICAg
ICAgICAgICB9OwogICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1h
Z2VFbGVtZW50KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIFVua25vd24gd2lu
ZG93LmxvY2F0aW9uLnNlYXJjaCA9PSAiICsgd2luZG93LmxvY2F0aW9uLnNlYXJjaCArICIuIjsK
LSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAg
ICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9
ICJGQUlMIE5vIHRlc3RSdW5uZXIuIjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0ZWQtd2l0aC1s
b3dlci1wcmlvcml0eS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmli
dXRpb24vc2Vjb25kLWF0dHJpYnV0aW9uLWNvbnZlcnRlZC13aXRoLWxvd2VyLXByaW9yaXR5Lmh0
bWwKaW5kZXggYzNlMTg4MzkwZGViODBiMmQ3NjlhZmE3MDdiZWFmNTI0NTdhYzY2Yy4uN2U4MWE5
NzY5YmRjM2UyYjBiY2MyN2RjOGJiZDQyMWFiYWQ3MjVkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWF0dHJpYnV0aW9uLWNvbnZl
cnRlZC13aXRoLWxvd2VyLXByaW9yaXR5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWF0dHJpYnV0aW9uLWNvbnZlcnRlZC13aXRoLWxv
d2VyLXByaW9yaXR5Lmh0bWwKQEAgLTQsNiArNCw3IEBACiAgICAgPG1ldGEgY2hhcnNldD0iVVRG
LTgiPgogICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lk
dGgsIGluaXRpYWwtc2NhbGU9MSwgdXNlci1zY2FsYWJsZT1ubyI+CiAgICAgPHNjcmlwdCBzcmM9
Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9
InNldFRpbWVvdXQocnVuVGVzdCwgMCkiPgogPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRlc3RzIHRo
YXQgYSBzZWNvbmQgYXR0cmlidXRpb24gY29udmVyc2lvbiB3aXRoIGxvd2VyIHByaW9yaXR5IGRv
ZXMgbm90IHJlcGxhY2UgYW4gb2xkZXIgd2l0aCBoaWdoZXIgcHJpb3JpdHkuPC9kaXY+CkBAIC0y
NCw2ICsyNSw4IEBACiAgICAgICAgIH0KICAgICBdOwogCisgICAgcHJlcGFyZVRlc3QoKTsKKwog
ICAgIGZ1bmN0aW9uIGNvbmZpZ3VyZUxpbmsoaW5kZXgpIHsKICAgICAgICAgbGV0IGxpbmtFbGVt
ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKTsKICAgICAgICAgbGlu
a0VsZW1lbnQuc2V0QXR0cmlidXRlKCJocmVmIiwgY29uZmlndXJhdGlvbltpbmRleF0uaHJlZik7
CkBAIC0zMSwxMiArMzQsNiBAQAogICAgICAgICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFk
ZGVzdGluYXRpb24iLCBjb25maWd1cmF0aW9uW2luZGV4XS5hZGRlc3RpbmF0aW9uKTsKICAgICB9
CiAKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Ci0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICB0
ZXN0UnVubmVyLnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlKHRydWUpOwotICAgIH0KLQogICAg
IGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SUQpIHsKICAgICAgICAgdmFyIGVsZW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SUQpOwogICAgICAgICB2YXIgY2Vu
dGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwpAQCAt
NDYsNyArNDMsNyBAQAogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJU
ZXh0ID0gIkZBSUwgUHJvbWlzZSByZWplY3RlZC4iOwotICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICk7CiAgICAgfQpAQCAtNzksMTIgKzc2LDEyIEBACiAgICAg
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbigpOwogICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0YXJnZXRMaW5rIikpOwogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5i
b2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwaXhlbCIpKTsKLSAgICAg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAg
ICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CiAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCk7CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRw
dXQiKS5pbm5lclRleHQgPSAiRkFJTCBVbmtub3duIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggPT0g
IiArIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggKyAiLiI7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBObyB0ZXN0UnVubmVyLiI7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9z
ZWNvbmQtY29udmVyc2lvbi13aXRoLWhpZ2hlci1wcmlvcml0eS5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24td2l0aC1oaWdo
ZXItcHJpb3JpdHkuaHRtbAppbmRleCBjOGVmZTE0ZGY1MjllYTRmZDVlN2NjODVjZGUwZmJlYWE5
MjExNzRhLi5mNTllNDRiNmZiOTk0NTc4MmIxZjkyMjIwNzQ5YzA2MzU2MzRiNDRiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtY29u
dmVyc2lvbi13aXRoLWhpZ2hlci1wcmlvcml0eS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1jb252ZXJzaW9uLXdpdGgtaGlnaGVyLXBy
aW9yaXR5Lmh0bWwKQEAgLTQsNiArNCw3IEBACiAgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgog
ICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGlu
aXRpYWwtc2NhbGU9MSwgdXNlci1zY2FsYWJsZT1ubyI+CiAgICAgPHNjcmlwdCBzcmM9Ii9qcy10
ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InNldFRp
bWVvdXQocnVuVGVzdCwgMCkiPgogPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRlc3RzIHRoYXQgdGhl
IGF0dHJpYnV0aW9uIGlzIHVwZGF0ZWQgaWYgaXQgZ2V0cyBhIHNlY29uZCBjb252ZXJzaW9uIHdp
dGggaGlnaGVyIHByaW9yaXR5LjwvZGl2PgpAQCAtMTksNiArMjAsOCBAQAogICAgICAgICB9CiAg
ICAgXTsKIAorICAgIHByZXBhcmVUZXN0KCk7CisKICAgICBmdW5jdGlvbiBjb25maWd1cmVMaW5r
KGluZGV4KSB7CiAgICAgICAgIGxldCBsaW5rRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0YXJnZXRMaW5rIik7CiAgICAgICAgIGxpbmtFbGVtZW50LnNldEF0dHJpYnV0ZSgiaHJl
ZiIsIGNvbmZpZ3VyYXRpb25baW5kZXhdLmhyZWYpOwpAQCAtMjYsMTIgKzI5LDYgQEAKICAgICAg
ICAgbGlua0VsZW1lbnQuc2V0QXR0cmlidXRlKCJhZGRlc3RpbmF0aW9uIiwgY29uZmlndXJhdGlv
bltpbmRleF0uYWRkZXN0aW5hdGlvbik7CiAgICAgfQogCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRBbGxvd3NBbnlTU0xD
ZXJ0aWZpY2F0ZSh0cnVlKTsKLSAgICB9Ci0KICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQo
ZWxlbWVudElEKSB7CiAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoZWxlbWVudElEKTsKICAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQg
KyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKQEAgLTQxLDcgKzM4LDcgQEAKICAgICAgICAgICAg
IH0sCiAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIFByb21pc2UgcmVqZWN0
ZWQuIjsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAg
ICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAgICAgICAgICAgfQogICAgICAgICApOwog
ICAgIH0KQEAgLTcyLDEyICs2OSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQWRDbGlja0F0dHJpYnV0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXRM
aW5rIikpOwogICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGls
ZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGl4ZWwiKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
YXJEb3duQW5kRmluaXNoKCk7CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgVW5rbm93biB3aW5kb3cu
bG9jYXRpb24uc2VhcmNoID09ICIgKyB3aW5kb3cubG9jYXRpb24uc2VhcmNoICsgIi4iOwotICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIHRl
YXJEb3duQW5kRmluaXNoKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0gIkZB
SUwgTm8gdGVzdFJ1bm5lci4iOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
ZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNvbnZlcnNpb24td2l0aC1sb3dlci1wcmlvcml0eS5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNv
bnZlcnNpb24td2l0aC1sb3dlci1wcmlvcml0eS5odG1sCmluZGV4IGI2ZWZiYTE5OTYwOGRmOGEx
ZWQwNzAwZDc1Mjc2YjcyZjA5NDk1ZWYuLmQ4YTkxNGFhOGY5NDQzYzEyMDI2MTdmMzFjNDQ2MTgx
MmM5MGVjNWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJp
YnV0aW9uL3NlY29uZC1jb252ZXJzaW9uLXdpdGgtbG93ZXItcHJpb3JpdHkuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtY29udmVyc2lv
bi13aXRoLWxvd2VyLXByaW9yaXR5Lmh0bWwKQEAgLTQsNiArNCw3IEBACiAgICAgPG1ldGEgY2hh
cnNldD0iVVRGLTgiPgogICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1k
ZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdXNlci1zY2FsYWJsZT1ubyI+CiAgICAgPHNj
cmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eSBvbmxvYWQ9InNldFRpbWVvdXQocnVuVGVzdCwgMCkiPgogPGRpdiBpZD0iZGVzY3JpcHRpb24i
PlRlc3RzIHRoYXQgdGhlIGF0dHJpYnV0aW9uIGlzIG5vdCB1cGRhdGVkIGlmIGl0IGdldHMgYSBz
ZWNvbmQgY29udmVyc2lvbiB3aXRoIGxvd2VyIHByaW9yaXR5LjwvZGl2PgpAQCAtMTksNiArMjAs
OCBAQAogICAgICAgICB9CiAgICAgXTsKIAorICAgIHByZXBhcmVUZXN0KCk7CisKICAgICBmdW5j
dGlvbiBjb25maWd1cmVMaW5rKGluZGV4KSB7CiAgICAgICAgIGxldCBsaW5rRWxlbWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXRMaW5rIik7CiAgICAgICAgIGxpbmtFbGVtZW50
LnNldEF0dHJpYnV0ZSgiaHJlZiIsIGNvbmZpZ3VyYXRpb25baW5kZXhdLmhyZWYpOwpAQCAtMjYs
MTIgKzI5LDYgQEAKICAgICAgICAgbGlua0VsZW1lbnQuc2V0QXR0cmlidXRlKCJhZGRlc3RpbmF0
aW9uIiwgY29uZmlndXJhdGlvbltpbmRleF0uYWRkZXN0aW5hdGlvbik7CiAgICAgfQogCi0gICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwotICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgdGVzdFJ1bm5l
ci5zZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSh0cnVlKTsKLSAgICB9Ci0KICAgICBmdW5jdGlv
biBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElEKSB7CiAgICAgICAgIHZhciBlbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElEKTsKICAgICAgICAgdmFyIGNlbnRlclggPSBl
bGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKQEAgLTQxLDcgKzM4
LDcgQEAKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJG
QUlMIFByb21pc2UgcmVqZWN0ZWQuIjsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAgICAgICAg
ICAgfQogICAgICAgICApOwogICAgIH0KQEAgLTcyLDcgKzY5LDcgQEAKICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbigpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGFyZ2V0TGluayIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBpeGVsIikpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAgICAgICAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZW5kLWF0dHJpYnV0
aW9uLWNvbnZlcnNpb24tcmVxdWVzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZW5kLWF0dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVxdWVz
dC1leHBlY3RlZC50eHQKaW5kZXggNzdlMjhiMDFkYWY2NjViMjBhOGFlYjUxOThjN2Q1NzdkNTg0
MDFkMS4uNDc3YjQ3MTMwODM5YTE1OTY4ZjNiZmExZjJhM2Y5ZDhlZDdmMjlhOSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2VuZC1hdHRyaWJ1
dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1y
ZXF1ZXN0LWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSwyNCBAQAotVGVzdHMgc2VuZGluZyBvZiBh
ZCBjbGljayBhdHRyaWJ1dGlvbiByZXF1ZXN0cyBhZnRlciBhIGNvbnZlcnNpb24uCitUZXN0cyBz
ZW5kaW5nIG9mIGFkIGNsaWNrIGF0dHJpYnV0aW9uIHJlcXVlc3RzIGFmdGVyIGEgY29udmVyc2lv
bi4gQWxzbyB0ZXN0cyB0aGF0IGNvb2tpZXMgYXJlIG5vdCBzZW50IGluIHRob3NlIHJlcXVlc3Rz
IGFuZCBjb29raWVzIGFyZSBub3QgYWNjZXB0ZWQgaW4gdGhlIHJlc3BvbnNlcy4KIAogCiAKIC0t
LS0tLS0tCiBGcmFtZTogJzwhLS1mcmFtZTEtLT4nCiAtLS0tLS0tLQorQ29va2llcyBhcmU6IGNv
b2tpZVNldEFzRmlyc3RQYXJ0eSA9IDEKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lMi0t
PicKKy0tLS0tLS0tCiBDb252ZXJzaW9uIHJlY2VpdmVkLgogSFRUUF9IT1NUOiAxMjcuMC4wLjE6
ODAwMAogUkVRVUVTVF9VUkk6IC9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2NvbnZlcnNp
b25SZXBvcnQucGhwP2NvbnZlcnNpb249MTImY2FtcGFpZ249MwogTm8gY29va2llcyBpbiBjb252
ZXJzaW9uIHJlcXVlc3QuCiAKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lMy0tPicKKy0t
LS0tLS0tCitDb29raWVzIGFyZTogY29va2llU2V0QXNGaXJzdFBhcnR5ID0gMQorCiBObyBzdG9y
ZWQgQWQgQ2xpY2sgQXR0cmlidXRpb24gZGF0YS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1y
ZXF1ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9z
ZW5kLWF0dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVxdWVzdC5odG1sCmluZGV4IGVhMjI2OThiNGY5
OTI3ZjhkZjIwMWQwYjdlODY5YzUwNDc1NWZiZDQuLjQzNzU3N2M5ZjZhYWY3MjEyZWJjMTJmZWMw
OGU1MmFkNjE0ODc4NzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlj
a0F0dHJpYnV0aW9uL3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1yZXF1ZXN0Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2VuZC1hdHRyaWJ1
dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QuaHRtbApAQCAtNCw5ICs0LDEwIEBACiAgICAgPG1ldGEg
Y2hhcnNldD0iVVRGLTgiPgogICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0
aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdXNlci1zY2FsYWJsZT1ubyI+CiAgICAg
PHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQocnVuVGVzdCwgMCkiPgotPGRpdiBpZD0iZGVzY3JpcHRp
b24iPlRlc3RzIHNlbmRpbmcgb2YgYWQgY2xpY2sgYXR0cmlidXRpb24gcmVxdWVzdHMgYWZ0ZXIg
YSBjb252ZXJzaW9uLjwvZGl2PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRlc3RzIHNlbmRpbmcg
b2YgYWQgY2xpY2sgYXR0cmlidXRpb24gcmVxdWVzdHMgYWZ0ZXIgYSBjb252ZXJzaW9uLiBBbHNv
IHRlc3RzIHRoYXQgY29va2llcyBhcmUgbm90IHNlbnQgaW4gdGhvc2UgcmVxdWVzdHMgYW5kIGNv
b2tpZXMgYXJlIG5vdCBhY2NlcHRlZCBpbiB0aGUgcmVzcG9uc2VzLjwvZGl2PgogPGEgaWQ9InRh
cmdldExpbmsiIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9hZENsaWNrQXR0cmlidXRpb24v
c2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QuaHRtbD9zdGVwVHdvIiBhZGNhbXBh
aWduaWQ9IjMiIGFkZGVzdGluYXRpb249Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI+TGluazwvYT48
YnI+CiA8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgogPHNjcmlwdD4KQEAgLTE0LDEyICsxNSwxMSBA
QAogICAgIGNvbnN0IGhpZ2hFbnRyb3B5Qml0cyA9IGN1cnJlbnRUaW1lTWlsbGlzIC0gKE1hdGgu
Zmxvb3IoY3VycmVudFRpbWVNaWxsaXMgLyAxMDAwMDAwKSAqIDEwMDAwMDApOwogICAgIGNvbnN0
IG5vbmNlID0gaGlnaEVudHJvcHlCaXRzICsgIiIgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkg
KiAxMDApOwogCisgICAgcHJlcGFyZVRlc3QoKTsKKwogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgewotICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRBbGxv
d3NBbnlTU0xDZXJ0aWZpY2F0ZSh0cnVlKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRBZENsaWNr
QXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZygiaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvY29udmVyc2lvblJlcG9ydC5waHA/bm9uY2U9
IiArIG5vbmNlKTsKICAgICAgICAgdGVzdFJ1bm5lci5zZXRBZENsaWNrQXR0cmlidXRpb25PdmVy
cmlkZVRpbWVyRm9yVGVzdGluZyh0cnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRBZENsaWNr
QXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZygiaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvY29udmVyc2lvblJlcG9ydC5waHA/bm9uY2U9
IiArIG5vbmNlKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVu
dElEKSB7CkBAIC0zMSwxOSArMzEsMzAgQEAKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91
dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIFByb21pc2UgcmVqZWN0ZWQuIjsKLSAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB0ZWFyRG93bkFu
ZEZpbmlzaCgpOwogICAgICAgICAgICAgfQogICAgICAgICApOwogICAgIH0KIAorICAgIGZ1bmN0
aW9uIGFwcGVuZElmcmFtZSh1cmwsIG9ubG9hZENhbGxiYWNrKSB7CisgICAgICAgIGxldCBpZnJh
bWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgIGlm
cmFtZUVsZW1lbnQuc3JjID0gdXJsOworICAgICAgICBpZiAob25sb2FkQ2FsbGJhY2spCisgICAg
ICAgICAgICBpZnJhbWVFbGVtZW50Lm9ubG9hZCA9IG9ubG9hZENhbGxiYWNrOworICAgICAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZUVsZW1lbnQpOworICAgIH0KKwogICAgIGZ1
bmN0aW9uIGFwcGVuZENvbnZlcnNpb25EYXRhSWZyYW1lQW5kRmluaXNoKCkgewogICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBZENsaWNrQXR0cmlidXRpb24oKTsKICAgICAgICAgZG9jdW1lbnQuYm9k
eS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0TGluayIpKTsKICAg
ICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cGl4ZWwiKSk7CiAKLSAgICAgICAgbGV0IGlmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJpZnJhbWUiKTsKLSAgICAgICAgaWZyYW1lRWxlbWVudC5zcmMgPSAiaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvZ2V0Q29udmVyc2lvbkRh
dGEucGhwP2VuZFRlc3Q9dHJ1ZSZ0aW1lb3V0X21zPTIwMDAmbm9uY2U9IiArIG5vbmNlOwotICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZUVsZW1lbnQpOworICAgICAgICBh
cHBlbmRJZnJhbWUoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9jb29raWVzL3Jlc291cmNlcy9lY2hv
LWNvb2tpZXMucGhwIik7CisgICAgICAgIGFwcGVuZElmcmFtZSgiaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvZ2V0Q29udmVyc2lvbkRhdGEucGhwP3Rp
bWVvdXRfbXM9MjAwMCZub25jZT0iICsgbm9uY2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
YXBwZW5kSWZyYW1lKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAvY29va2llcy9yZXNvdXJjZXMvZWNo
by1jb29raWVzLnBocCIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRlYXJEb3duQW5k
RmluaXNoKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKQEAgLTU3LDYgKzY4LDcgQEAKICAgICAgICAgICAgICAgICB9Owog
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2VFbGVtZW50KTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0g
ImNvb2tpZVNldEFzRmlyc3RQYXJ0eT0xOyBwYXRoPS8iOwogICAgICAgICAgICAgICAgIGFjdGl2
YXRlRWxlbWVudCgidGFyZ2V0TGluayIpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ug
ewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24v
c3RvcmUtYWQtY2xpY2stYXR0cmlidXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWFkLWNsaWNrLWF0dHJpYnV0aW9uLmh0bWwKaW5kZXgg
ZjY2MDFkNjdiYTA1MjNhNjQ4MjVmMjM0OWU2MDQxM2NiZGJiMzkwOC4uYzcxNDZkMDIwMjAzOWRk
YWQ0NmI1ODhiNjEwZWNhOTFjYmM0NDVlNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc3RvcmUtYWQtY2xpY2stYXR0cmlidXRpb24uaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zdG9yZS1hZC1j
bGljay1hdHRyaWJ1dGlvbi5odG1sCkBAIC00LDE2ICs0LDE0IEBACiAgICAgPG1ldGEgY2hhcnNl
dD0iVVRGLTgiPgogICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZp
Y2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdXNlci1zY2FsYWJsZT1ubyI+CiAgICAgPHNjcmlw
dCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBv
bmxvYWQ9InNldFRpbWVvdXQocnVuVGVzdCwgMCkiPgogPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRl
c3RzIHN0b3JhZ2Ugb2YgYWQgY2xpY2sgYXR0cmlidXRpb24uPC9kaXY+CiA8YSBpZD0idGFyZ2V0
TGluayIgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zdG9y
ZS1hZC1jbGljay1hdHRyaWJ1dGlvbi5odG1sP3N0ZXBUd28iIGFkY2FtcGFpZ25pZD0iMyIgYWRk
ZXN0aW5hdGlvbj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwIj5MaW5rPC9hPjxicj4KIDxkaXYgaWQ9
Im91dHB1dCI+PC9kaXY+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewot
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7Ci0gICAgfQorICAgIHByZXBhcmVUZXN0KCk7CiAKICAgICBmdW5jdGlvbiBh
Y3RpdmF0ZUVsZW1lbnQoZWxlbWVudElEKSB7CiAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElEKTsKQEAgLTI0LDcgKzIyLDcgQEAKICAgICAgICAg
ICAgIH0sCiAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIFByb21pc2UgcmVq
ZWN0ZWQuIjsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAgICAgICAgICAgfQogICAgICAgICAp
OwogICAgIH0KQEAgLTM0LDcgKzMyLDcgQEAKICAgICAgICAgICAgIGlmICh3aW5kb3cubG9jYXRp
b24uc2VhcmNoID09PSAiP3N0ZXBUd28iKSB7CiAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQWRDbGlja0F0dHJpYnV0aW9uKCk7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5y
ZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0TGluayIpKTsKLSAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB0ZWFy
RG93bkFuZEZpbmlzaCgpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBh
Y3RpdmF0ZUVsZW1lbnQoInRhcmdldExpbmsiKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWRpc2FibGVk
LWluLWVwaGVtZXJhbC1zZXNzaW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWRpc2FibGVkLWluLWVwaGVtZXJhbC1zZXNzaW9u
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTMzYjc1NzBiODJiZjQxNzYzZGFkYzFkNTNkZTU2
ZGUyYzIwMDUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENs
aWNrQXR0cmlidXRpb24vc3RvcmUtZGlzYWJsZWQtaW4tZXBoZW1lcmFsLXNlc3Npb24tZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdHMgdGhhdCBzdG9yYWdlIG9mIGFkIGNsaWNrIGF0
dHJpYnV0aW9uIGlzIGRpc2FibGVkIGluIGVwaGVtZXJhbCBzZXNzaW9ucy4KKworCisKK05vIHN0
b3JlZCBBZCBDbGljayBBdHRyaWJ1dGlvbiBkYXRhLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc3RvcmUtZGlzYWJsZWQtaW4tZXBoZW1lcmFs
LXNlc3Npb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9u
L3N0b3JlLWRpc2FibGVkLWluLWVwaGVtZXJhbC1zZXNzaW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU3
NWU1MWNmZmVlNmIyYjc5ZDgxOGQwNDk3MjdhY2NiNTk2M2Q0YQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWRpc2FibGVk
LWluLWVwaGVtZXJhbC1zZXNzaW9uLmh0bWwKQEAgLTAsMCArMSw0OCBAQAorPCFET0NUWVBFIGh0
bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIGlu
dGVybmFsOkFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWwgbGFuZz0i
ZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDxtZXRhIG5hbWU9
InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwg
dXNlci1zY2FsYWJsZT1ubyI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91
aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQocnVuVGVzdCwg
MCkiPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRlc3RzIHRoYXQgc3RvcmFnZSBvZiBhZCBjbGlj
ayBhdHRyaWJ1dGlvbiBpcyBkaXNhYmxlZCBpbiBlcGhlbWVyYWwgc2Vzc2lvbnMuPC9kaXY+Cis8
YSBpZD0idGFyZ2V0TGluayIgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL2FkQ2xpY2tBdHRy
aWJ1dGlvbi9zdG9yZS1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi5odG1sP3N0ZXBUd28i
IGFkY2FtcGFpZ25pZD0iMyIgYWRkZXN0aW5hdGlvbj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwIj5M
aW5rPC9hPjxicj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8c2NyaXB0PgorICAgIHByZXBh
cmVUZXN0KCk7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIuc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCh0cnVlKTsKKworICAgIGZ1bmN0aW9uIGFjdGl2
YXRlRWxlbWVudChlbGVtZW50SUQpIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChlbGVtZW50SUQpOworICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgICAgICB2YXIgY2VudGVy
WSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAg
ICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4oCisgICAgICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5l
clRleHQgPSAiRkFJTCBQcm9taXNlIHJlamVjdGVkLiI7CisgICAgICAgICAgICAgICAgdGVhckRv
d25BbmRGaW5pc2goKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoID09PSAiP3N0ZXBUd28iKSB7Cisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQWRDbGlja0F0dHJpYnV0aW9uKCk7CisgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGFyZ2V0TGluayIpKTsKKyAgICAgICAgICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhY3RpdmF0ZUVsZW1lbnQo
InRhcmdldExpbmsiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBO
byB0ZXN0UnVubmVyLiI7CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367852</attachid>
            <date>2019-04-19 16:37:57 -0700</date>
            <delta_ts>2019-04-19 17:00:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-197108-20190419163756.patch</filename>
            <type>text/plain</type>
            <size>57523</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmUwNDhmYzNkY2E1YzBk
NzZjMmZlNDI1MTM2MTc0NDNlNDE3NzMxYS4uNzFjYjZjOWQ3MzY0MDRjZDJjMjYzNzE2Y2Y2ODE1
ZjVhZGQ1ZGRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTA0LTE5ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIERpc2FibGUgQWQgQ2xp
Y2sgQXR0cmlidXRpb24gaW4gZXBoZW1lcmFsIHNlc3Npb25zIGFuZCBtYWtlIHN1cmUgY29udmVy
c2lvbiByZXF1ZXN0cyB1c2UgYW4gZXBoZW1lcmFsLCBzdGF0ZWxlc3Mgc2Vzc2lvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MTA4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS80OTkxODcwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENo
cmlzdGVuc2VuLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlv
bi9jb252ZXJzaW9uLWRpc2FibGVkLWluLWVwaGVtZXJhbC1zZXNzaW9uLmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWRpc2FibGVkLWluLWVw
aGVtZXJhbC1zZXNzaW9uLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNlQWRDbGlja0F0
dHJpYnV0aW9uIGNvbnN0KToKKyAgICAgICAgICAgIEVhcmx5IHJldHVybiBmb3IgZXBoZW1lcmFs
IHNlc3Npb25zLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOgor
ICAgICAgICAgICAgTm93IHJldHVybnMgZmFsc2UgZm9yIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5
OkVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3MuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9TdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oOgorICAgICAgICAgICAgQWRkZWQgZW51bSB2YWx1
ZSBFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzLgorCiAyMDE5LTA0LTE4ICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFjdG9yaW5nOiBQdWxsIGFsbCBm
dWxsc2NyZWVuIGNvZGUgb3V0IG9mIERvY3VtZW50IGFuZCBpbnRvIGl0cyBvd24gaGVscGVyIGNs
YXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGI3N2UzZjZmZjgyNjFjMGE0OGEyZWZmNWEzNWYyMmQ5OTY3ZjcyMDQu
LmFmMDZjZWY2OGIxOWI3ZTAxYWE0OWQ3MmU2ZWFjMDlmODljMGQ2NGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDQgQEAKKzIwMTktMDQtMTkgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5j
b20+CisKKyAgICAgICAgRGlzYWJsZSBBZCBDbGljayBBdHRyaWJ1dGlvbiBpbiBlcGhlbWVyYWwg
c2Vzc2lvbnMgYW5kIG1ha2Ugc3VyZSBjb252ZXJzaW9uIHJlcXVlc3RzIHVzZSBhbiBlcGhlbWVy
YWwsIHN0YXRlbGVzcyBzZXNzaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTcxMDgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ5OTE4NzAyPgor
CisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpbnRyb2R1Y2VzIGEgbmV3IE5TVVJMU2Vzc2lvbiBpbiBXZWJLaXQ6Ok5ldHdvcmtTZXNz
aW9uQ29jb2EgY2FsbGVkCisgICAgICAgIG1fZXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzc1Nl
c3Npb24uIEFzIGl0cyBuYW1lIGltcGxpZXMsIGl0J3MgZXBoZW1lcmFsLCAKKyAgICAgICAgc3Rh
dGVsZXNzLCBhbmQgaGFzIGEgTlNIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXIgY29va2llIHBv
bGljeS4KKworICAgICAgICBUaGUgbmV3IHNlc3Npb24gY2FuIGJlIGludm9rZWQgd2l0aCB0aGUg
bmV3IGVudW0gdmFsdWUgb2YKKyAgICAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgY2FsbGVkIEVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3MuCisKKyAgICAgICAgV2ViS2l0
OjpBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjpmaXJlQ29udmVyc2lvblJlcXVlc3QoKSBtYWtl
cyB1c2Ugb2YKKyAgICAgICAgdGhlIG5ldyBzZXNzaW9uIGZvciBpdHMgY29udmVyc2lvbiByZXF1
ZXN0cy4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gbWFrZXMgc3VyZSB0aGF0IEFkIENsaWNr
IEF0dHJpYnV0aW9ucyBjYW5ub3QgYmUgc3RvcmVkIGluCisgICAgICAgIGVwaGVtZXJhbCBzZXNz
aW9ucyBhbmQgYWxyZWFkeSBzdG9yZWQgYXR0cmlidXRpb25zIGNhbm5vdCBiZSBjb252ZXJ0ZWQg
aW4KKyAgICAgICAgZXBoZW1lcmFsIHNlc3Npb25zLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFkQ2xp
Y2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmZpcmVDb252ZXJzaW9uUmVxdWVzdCk6CisgICAgICAgIChX
ZWJLaXQ6OkFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYSk6CisgICAgICAgICAgICBDYWxs
cyBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzQ29va2ll
bGVzc1Nlc3Npb24oKSBsYXppbHkuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Nv
Y29hOjp+TmV0d29ya0RhdGFUYXNrQ29jb2EpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0
YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbkNvY29hOjppbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVz
c1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjppbnZhbGlk
YXRlQW5kQ2FuY2VsKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6
CisKIDIwMTktMDQtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBbaU9TXSBJbXByb3ZlIGRldGVjdGlvbiBvZiB3aGVuIHdlYiB2aWV3cyBnbyB0byBiYWNrZ3Jv
dW5kIC8gZm9yZWdyb3VuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNw
cAppbmRleCA1YTFkY2U4YzU1ZGYzOTZjZTRhZjdkNTk0ODExZDY4N2NkNWUyM2FkLi42NWE1OWIy
ZGEzM2MwMmVjOWUzNTVkODE0YWE4MDY3NzM0NGM3MGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtNDA1LDcgKzQwNSw5IEBAIE9wdGlvbmFsPEFkQ2xp
Y2tBdHRyaWJ1dGlvbj4gSFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNlQWRDbGlja0F0dHJpYnV0aW9u
KCkgY29uc3QKICAgICB1c2luZyBTb3VyY2UgPSBBZENsaWNrQXR0cmlidXRpb246OlNvdXJjZTsK
ICAgICB1c2luZyBEZXN0aW5hdGlvbiA9IEFkQ2xpY2tBdHRyaWJ1dGlvbjo6RGVzdGluYXRpb247
CiAKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYWRD
bGlja0F0dHJpYnV0aW9uRW5hYmxlZCgpIHx8ICFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKCkpCisgICAgaWYgKGRvY3VtZW50KCkuc2Vzc2lvbklEKCkuaXNFcGhl
bWVyYWwoKQorICAgICAgICB8fCAhUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5hZENsaWNrQXR0cmlidXRpb25FbmFibGVkKCkKKyAgICAgICAgfHwgIVVzZXJHZXN0dXJl
SW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKIAogICAgIGlmICghaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihh
ZGNhbXBhaWduaWRBdHRyKSAmJiAhaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihh
ZGRlc3RpbmF0aW9uQXR0cikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cAppbmRleCA1NDg5OGVmZTEyNmUyZTUzOWNkMzFjOTRmYzg3YjI1NTcwNmRmYTNiLi4zMDRiMjE5
OWFhZWEwNTI5OGZmMDI3NDExZTFkMDVhNzIxYTZhZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTcxNyw3ICs3MTcsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjpjYW5ub3RTaG93VVJMKFJlc291cmNlSGFuZGxlKikKIAogYm9vbCBSZXNvdXJjZUxvYWRl
cjo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKQogewotICAgIGlmIChtX29wdGlvbnMuc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNl
KQorICAgIGlmIChtX29wdGlvbnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgIT0gU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3k6OlVzZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUmVmPFJl
c291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaAppbmRl
eCAxMzZjZDcxZTFlYWI5NTBkYzlmY2UyNDEzYjYzODk4MDNhN2M3NjdkLi4xNDk1YTA4MjE4MTVm
MzNiZGZkOWM2NWQ3YjQzNDk0OWE2MjVhYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1N0b3JlZENyZWRlbnRpYWxzUG9saWN5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9TdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oCkBAIC0yNyw5
ICsyNywxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgOiBib29sIHsKK2VudW0gY2xhc3MgU3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgOiB1aW50OF90IHsKICAgICBEb05vdFVzZSwKICAgICBVc2UsCisgICAgRXBoZW1lcmFsU3Rh
dGVsZXNzQ29va2llbGVzcwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFu
YWdlci5jcHAKaW5kZXggNDUzNThhOTYxMGE0OGNlN2ZkMzBlZjAyODRlYWZlZjRlNjdmNWU1ZC4u
Yzc5OTc5OTBjYjYzMTJlZThjMGZhNTFjNDU4YjQwNzFkZmU4MzhlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFn
ZXIuY3BwCkBAIC0xMTksOSArMTE5LDggQEAgdm9pZCBBZENsaWNrQXR0cmlidXRpb25NYW5hZ2Vy
OjpmaXJlQ29udmVyc2lvblJlcXVlc3QoY29uc3QgQWRDbGlja0F0dHJpYnV0aW9uJgogICAgIGxv
YWRQYXJhbWV0ZXJzLnJlcXVlc3QgPSByZXF1ZXN0OwogICAgIGxvYWRQYXJhbWV0ZXJzLnNvdXJj
ZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29udmVyc2lvblJlZmVycmVyVVJMKTsK
ICAgICBsb2FkUGFyYW1ldGVycy5wYXJlbnRQSUQgPSBwcmVzZW50aW5nQXBwbGljYXRpb25QSUQo
KTsKLSAgICAvLyBGSVhNRTogU3dpdGNoIHRvIHRoZSB1c2Ugb2YgYW4gZXBoZW1lcmFsLCBzdGF0
ZWxlc3Mgc2Vzc2lvbi4KICAgICBsb2FkUGFyYW1ldGVycy5zZXNzaW9uSUQgPSBQQUw6OlNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwotICAgIGxvYWRQYXJhbWV0ZXJzLnN0b3JlZENyZWRl
bnRpYWxzUG9saWN5ID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlOworICAgIGxv
YWRQYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gU3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3M7CiAgICAgbG9hZFBhcmFtZXRlcnMu
b3B0aW9ucyA9IG9wdGlvbnM7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJl
ck9uSFRUUFNUb0hUVFBSZWRpcmVjdCA9IHRydWU7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxk
UmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MgPSBmYWxzZTsKQEAgLTE4MSw3ICsxODAsNyBAQCB2
b2lkIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZAogdm9pZCBBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjp0
b1N0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIGNvbnN0CiB7CiAgICAgaWYgKG1fdW5jb252ZXJ0ZWRBZENsaWNrQXR0cmlidXRpb25NYXAu
aXNFbXB0eSgpICYmIG1fY29udmVydGVkQWRDbGlja0F0dHJpYnV0aW9uTWFwLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCJObyBzdG9yZWQgQWQgQ2xpY2sgQXR0
cmlidXRpb24gZGF0YS5cbiJfcyk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigi
XG5ObyBzdG9yZWQgQWQgQ2xpY2sgQXR0cmlidXRpb24gZGF0YS5cbiJfcyk7CiAKICAgICB1bnNp
Z25lZCB1bmNvbnZlcnRlZEF0dHJpYnV0aW9uTnVtYmVyID0gMDsKICAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENoZWNrZXIuaAppbmRleCA4MjlmN2MyMDI0ODViNzNhYTZiOTM4NjQ4YmU5Zjk2ZDc1YjE3ZDVk
Li4zMWQxMWMzYThhZWNiMmFhZmQ0OWU1YzMxMDM5OGUwYWMxNmRkZWU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKQEAgLTQxLDcg
KzQxLDcgQEAgY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5Owogc3RydWN0IENvbnRlbnRTZWN1
cml0eVBvbGljeUNsaWVudDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogZW51bSBjbGFzcyBQcmVm
bGlnaHRQb2xpY3kgOiB1aW50OF90OwotZW51bSBjbGFzcyBTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSA6IGJvb2w7CitlbnVtIGNsYXNzIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IDogdWludDhfdDsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNzhjZWJkNGUwZmZlZjAzMmE1YmY5ZjU4ZjFlNzQ2MGNi
YjI5MWY5Mi4uODljMjk4NWQwZTIyZWNhYTZkMGMzMTY1N2M3NDY5Yjc1YzdjNDFmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtNzcsNyAr
NzcsNyBAQCBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwogY2xhc3MgU1dTZXJ2ZXI7CiBlbnVtIGNsYXNzIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgOiBi
b29sOwotZW51bSBjbGFzcyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSA6IGJvb2w7CitlbnVtIGNs
YXNzIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5IDogdWludDhfdDsKIHN0cnVjdCBDbGllbnRPcmln
aW47CiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CiBzdHJ1Y3QgU2VjdXJpdHlPcmln
aW5EYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggODc2NDY4OGVlZjA1NmE0NmU2MmExMjcyMjNmMTE3
YTUxZjQxMDZkYS4uMWJkZDViZDMwNWRhZTdjMjAzNzMzMWY2YzY1NDY0NWE4ZDk2NzRiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC04Miw3ICs4Miw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNz
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBDYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCkKICAgICBQcm9j
ZXNzRGlkUmVzdW1lKCkKIAotICAgIFByZWNvbm5lY3RUbyhVUkwgdXJsLCBlbnVtOmJvb2wgV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwor
ICAgIFByZWNvbm5lY3RUbyhVUkwgdXJsLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogCiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBDbGVhclByZXZhbGVudFJlc291cmNlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VE
b21haW4pIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZjE0NTlkN2RjMmU3ZjEwMzg1ZWZi
YmJiMTk1M2JjZjVkNzVhNmM1ZC4uY2IxNzk0ZGUyNzcwYjZiYjlhZGJjZTk1MjBiM2ZhODE1OTlj
MDNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTg2LDEzICs1ODYsMTUgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwKICAgICArK21fcmVkaXJlY3RDb3VudDsKIAogICAgIGF1dG8mIHJlZGlyZWN0VVJM
ID0gcmVkaXJlY3RSZXF1ZXN0LnVybCgpOwotICAgIGlmIChhdXRvIGFkQ2xpY2tDb252ZXJzaW9u
ID0gQWRDbGlja0F0dHJpYnV0aW9uOjpwYXJzZUNvbnZlcnNpb25SZXF1ZXN0KHJlZGlyZWN0VVJM
KSkgewotICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWRpcmVjdERvbWFpbiB7IHJlZGlyZWN0
VVJMIH07Ci0gICAgICAgIGF1dG8mIGZpcnN0UGFydHlVUkwgPSByZWRpcmVjdFJlcXVlc3QuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKTsKLSAgICAgICAgTmV0d29ya1Nlc3Npb24qIG5ldHdvcmtTZXNz
aW9uOwotICAgICAgICAvLyBUaGUgcmVkaXJlY3QgaGFzIHRvIGJlIGRvbmUgYnkgdGhlIHNhbWUg
cmVnaXN0cmFibGUgZG9tYWluIGFuZCBpdCBoYXMgdG8gYmUgYSB0aGlyZC1wYXJ0eSByZXF1ZXN0
LgotICAgICAgICBpZiAocmVkaXJlY3REb21haW4ubWF0Y2hlcyhyZXF1ZXN0LnVybCgpKSAmJiAh
cmVkaXJlY3REb21haW4ubWF0Y2hlcyhmaXJzdFBhcnR5VVJMKSAmJiAobmV0d29ya1Nlc3Npb24g
PSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KCkpKSkKLSAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jb252ZXJ0QWRDbGlja0F0dHJpYnV0
aW9uKEFkQ2xpY2tBdHRyaWJ1dGlvbjo6U291cmNlIHsgV1RGTW92ZShyZWRpcmVjdERvbWFpbikg
fSwgQWRDbGlja0F0dHJpYnV0aW9uOjpEZXN0aW5hdGlvbiB7IGZpcnN0UGFydHlVUkwgfSwgV1RG
TW92ZSgqYWRDbGlja0NvbnZlcnNpb24pKTsKKyAgICBpZiAoIXNlc3Npb25JRCgpLmlzRXBoZW1l
cmFsKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gYWRDbGlja0NvbnZlcnNpb24gPSBBZENsaWNrQXR0
cmlidXRpb246OnBhcnNlQ29udmVyc2lvblJlcXVlc3QocmVkaXJlY3RVUkwpKSB7CisgICAgICAg
ICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWRpcmVjdERvbWFpbiB7IHJlZGlyZWN0VVJMIH07Cisg
ICAgICAgICAgICBhdXRvJiBmaXJzdFBhcnR5VVJMID0gcmVkaXJlY3RSZXF1ZXN0LmZpcnN0UGFy
dHlGb3JDb29raWVzKCk7CisgICAgICAgICAgICBOZXR3b3JrU2Vzc2lvbiogbmV0d29ya1Nlc3Np
b24gPSBudWxscHRyOworICAgICAgICAgICAgLy8gVGhlIHJlZGlyZWN0IGhhcyB0byBiZSBkb25l
IGJ5IHRoZSBzYW1lIHJlZ2lzdHJhYmxlIGRvbWFpbiBhbmQgaXQgaGFzIHRvIGJlIGEgdGhpcmQt
cGFydHkgcmVxdWVzdC4KKyAgICAgICAgICAgIGlmIChyZWRpcmVjdERvbWFpbi5tYXRjaGVzKHJl
cXVlc3QudXJsKCkpICYmICFyZWRpcmVjdERvbWFpbi5tYXRjaGVzKGZpcnN0UGFydHlVUkwpICYm
IChuZXR3b3JrU2Vzc2lvbiA9IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQoKSkpKQorICAgICAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5j
b252ZXJ0QWRDbGlja0F0dHJpYnV0aW9uKEFkQ2xpY2tBdHRyaWJ1dGlvbjo6U291cmNlIHsgV1RG
TW92ZShyZWRpcmVjdERvbWFpbikgfSwgQWRDbGlja0F0dHJpYnV0aW9uOjpEZXN0aW5hdGlvbiB7
IGZpcnN0UGFydHlVUkwgfSwgV1RGTW92ZSgqYWRDbGlja0NvbnZlcnNpb24pKTsKKyAgICAgICAg
fQogICAgIH0KIAogICAgIGF1dG8gbWF4QWdlQ2FwID0gdmFsaWRhdGVDYWNoZUVudHJ5Rm9yTWF4
QWdlQ2FwVmFsaWRhdGlvbihyZXF1ZXN0LCByZWRpcmVjdFJlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggMWQwYTU5Zjc4YzY0MjNjNDdlOWE3NjFlODUw
MjJjOGI4MmM3YmM2ZC4uMzVlNDQzYjllZTkxODA1N2FkMzRkZWYwNjhhODk5YmVhMDY3YWRmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0xOTMsNyArMTkzLDcgQEAgTmV0d29ya0RhdGFUYXNr
Q29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3
b3JrRGF0YVQKIAogICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzID0gZmFsc2U7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBzaG91bGRCbG9ja0Nvb2tpZXMgPSBz
ZXNzaW9uLm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0
LCBmcmFtZUlELCBwYWdlSUQpOworICAgIHNob3VsZEJsb2NrQ29va2llcyA9IHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVy
YWxTdGF0ZWxlc3NDb29raWVsZXNzIHx8IHNlc3Npb24ubmV0d29ya1N0b3JhZ2VTZXNzaW9uKCku
c2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIGZyYW1lSUQsIHBhZ2VJRCk7CiAjZW5kaWYKICAg
ICByZXN0cmljdFJlcXVlc3RSZWZlcnJlclRvT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwgc2hvdWxk
QmxvY2tDb29raWVzKTsKIApAQCAtMjAxLDE2ICsyMDEsMjcgQEAgTmV0d29ya0RhdGFUYXNrQ29j
b2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3Jr
RGF0YVQKICAgICBhcHBseVNuaWZmaW5nUG9saWNpZXNBbmRCaW5kUmVxdWVzdFRvSW5mZXJmYWNl
SWZOZWVkZWQobnNSZXF1ZXN0LCBzaG91bGRDb250ZW50U25pZmYgPT0gV2ViQ29yZTo6Q29udGVu
dFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQgJiYgIXVybC5pc0xvY2FsRmlsZSgpLCBzaG91
bGRDb250ZW50RW5jb2RpbmdTbmlmZiA9PSBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmlu
Z1BvbGljeTo6U25pZmYpOwogCiAgICAgYXV0byYgY29jb2FTZXNzaW9uID0gc3RhdGljX2Nhc3Q8
TmV0d29ya1Nlc3Npb25Db2NvYSY+KG1fc2Vzc2lvbi5nZXQoKSk7Ci0gICAgaWYgKHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2Up
IHsKKyAgICBzd2l0Y2ggKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KSB7CisgICAgY2FzZSBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOgogICAgICAgICBtX3Rhc2sgPSBbY29j
b2FTZXNzaW9uLm1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZSBkYXRhVGFza1dpdGhSZXF1
ZXN0Om5zUmVxdWVzdF07CiAgICAgICAgIEFTU0VSVCghY29jb2FTZXNzaW9uLm1fZGF0YVRhc2tN
YXBXaXRoQ3JlZGVudGlhbHMuY29udGFpbnMoW21fdGFzayB0YXNrSWRlbnRpZmllcl0pKTsKICAg
ICAgICAgY29jb2FTZXNzaW9uLm1fZGF0YVRhc2tNYXBXaXRoQ3JlZGVudGlhbHMuYWRkKFttX3Rh
c2sgdGFza0lkZW50aWZpZXJdLCB0aGlzKTsKICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAi
JWxsdSBDcmVhdGluZyBzdGF0ZWZ1bCBOZXR3b3JrRGF0YVRhc2sgd2l0aCBVUkwgJXMiLCBbbV90
YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3Ry
aW5nKTsKLSAgICB9IGVsc2UgeworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZToKICAgICAgICAgbV90YXNrID0gW2NvY29h
U2Vzc2lvbi5tX3N0YXRlbGVzc1Nlc3Npb24gZGF0YVRhc2tXaXRoUmVxdWVzdDpuc1JlcXVlc3Rd
OwogICAgICAgICBBU1NFUlQoIWNvY29hU2Vzc2lvbi5tX2RhdGFUYXNrTWFwV2l0aG91dFN0YXRl
LmNvbnRhaW5zKFttX3Rhc2sgdGFza0lkZW50aWZpZXJdKSk7CiAgICAgICAgIGNvY29hU2Vzc2lv
bi5tX2RhdGFUYXNrTWFwV2l0aG91dFN0YXRlLmFkZChbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwg
dGhpcyk7CiAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgQ3JlYXRpbmcgc3RhdGVs
ZXNzIE5ldHdvcmtEYXRhVGFzayB3aXRoIFVSTCAlcyIsIFttX3Rhc2sgdGFza0lkZW50aWZpZXJd
LCBuc1JlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxT
dGF0ZWxlc3NDb29raWVsZXNzOgorICAgICAgICBpZiAoIWNvY29hU2Vzc2lvbi5tX2VwaGVtZXJh
bFN0YXRlbGVzc0Nvb2tpZWxlc3NTZXNzaW9uKQorICAgICAgICAgICAgY29jb2FTZXNzaW9uLmlu
aXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzU2Vzc2lvbigpOworICAgICAgICBt
X3Rhc2sgPSBbY29jb2FTZXNzaW9uLm1fZXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Np
b24gZGF0YVRhc2tXaXRoUmVxdWVzdDpuc1JlcXVlc3RdOworICAgICAgICBBU1NFUlQoIWNvY29h
U2Vzc2lvbi5tX2RhdGFUYXNrTWFwRXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzcy5jb250YWlu
cyhbbV90YXNrIHRhc2tJZGVudGlmaWVyXSkpOworICAgICAgICBjb2NvYVNlc3Npb24ubV9kYXRh
VGFza01hcEVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3MuYWRkKFttX3Rhc2sgdGFza0lkZW50
aWZpZXJdLCB0aGlzKTsKKyAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBDcmVhdGlu
ZyBlcGhlbWVyYWwsIHN0YXRlbGVzcywgY29va2llbGVzcyBOZXR3b3JrRGF0YVRhc2sgd2l0aCBV
UkwgJXMiLCBbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0
cmluZy5VVEY4U3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKHNob3Vs
ZFByZWNvbm5lY3RPbmx5ID09IFByZWNvbm5lY3RPbmx5OjpZZXMpIHsKQEAgLTI1MCwxMiArMjYx
LDE5IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjp+TmV0d29ya0RhdGFUYXNrQ29jb2EoKQogICAg
ICAgICByZXR1cm47CiAKICAgICBhdXRvJiBjb2NvYVNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3
b3JrU2Vzc2lvbkNvY29hJj4obV9zZXNzaW9uLmdldCgpKTsKLSAgICBpZiAobV9zdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKSB7
CisgICAgc3dpdGNoIChtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5KSB7CisgICAgY2FzZSBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOgogICAgICAgICBBU1NFUlQoY29jb2FT
ZXNzaW9uLm1fZGF0YVRhc2tNYXBXaXRoQ3JlZGVudGlhbHMuZ2V0KFttX3Rhc2sgdGFza0lkZW50
aWZpZXJdKSA9PSB0aGlzKTsKICAgICAgICAgY29jb2FTZXNzaW9uLm1fZGF0YVRhc2tNYXBXaXRo
Q3JlZGVudGlhbHMucmVtb3ZlKFttX3Rhc2sgdGFza0lkZW50aWZpZXJdKTsKLSAgICB9IGVsc2Ug
eworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5OjpEb05vdFVzZToKICAgICAgICAgQVNTRVJUKGNvY29hU2Vzc2lvbi5tX2RhdGFUYXNrTWFw
V2l0aG91dFN0YXRlLmdldChbbV90YXNrIHRhc2tJZGVudGlmaWVyXSkgPT0gdGhpcyk7CiAgICAg
ICAgIGNvY29hU2Vzc2lvbi5tX2RhdGFUYXNrTWFwV2l0aG91dFN0YXRlLnJlbW92ZShbbV90YXNr
IHRhc2tJZGVudGlmaWVyXSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3M6CisgICAg
ICAgIEFTU0VSVChjb2NvYVNlc3Npb24ubV9kYXRhVGFza01hcEVwaGVtZXJhbFN0YXRlbGVzc0Nv
b2tpZWxlc3MuZ2V0KFttX3Rhc2sgdGFza0lkZW50aWZpZXJdKSA9PSB0aGlzKTsKKyAgICAgICAg
Y29jb2FTZXNzaW9uLm1fZGF0YVRhc2tNYXBFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzLnJl
bW92ZShbbV90YXNrIHRhc2tJZGVudGlmaWVyXSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0K
IApAQCAtMzQ1LDcgKzM2Myw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmCiAgICAgICAgIHJl
cXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMocmVxdWVzdC51cmwoKSk7CiAKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVz
ID0gbV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS5zaG91bGRCbG9ja0Nvb2tpZXMo
cmVxdWVzdCwgbV9mcmFtZUlELCBtX3BhZ2VJRCk7CisgICAgYm9vbCBzaG91bGRCbG9ja0Nvb2tp
ZXMgPSBtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzIHx8IG1fc2Vzc2lvbi0+bmV0
d29ya1N0b3JhZ2VTZXNzaW9uKCkuc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIG1fZnJhbWVJ
RCwgbV9wYWdlSUQpOwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmIChtX3Nlc3Np
b24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCiAgICAgICAgIFJFTEVBU0VfTE9HX0lG
KGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRh
c2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246OmxvZ0Nvb2tpZUluZm9ybWF0aW9u
OiBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgdGFza0lEID0gJWx1OiAlcyBjb29raWVz
IGZvciByZWRpcmVjdCBVUkwgJXMiLCB0aGlzLCBtX3BhZ2VJRCwgbV9mcmFtZUlELCAodW5zaWdu
ZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNob3VsZEJsb2NrQ29va2llcyA/ICJC
bG9ja2luZyIgOiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCmluZGV4IDRiNTA4Y2I4MDVhYWMzZDY5ZGM3NTlmZWNk
MGVlMmIzYjEwNzU4MGQuLjNkMWE0OWYyNzMyNWY0OTY3NTQxMjU0MDA1N2VmMTEwNjYyMTQwYjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB+TmV0d29ya1Nlc3Npb25Db2NvYSgpOwogCisg
ICAgdm9pZCBpbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb24oKTsK
KwogICAgIGNvbnN0IFN0cmluZyYgc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkg
Y29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXIoKSBjb25zdDsKICAgICAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IE5ldHdvcmtT
ZXNzaW9uIGhhcyBiZWVuIGNyZWF0ZWQuCkBAIC03NywxMiArNzksMTUgQEAgcHJpdmF0ZToKIAog
ICAgIEhhc2hNYXA8TmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyLCBOZXR3b3Jr
RGF0YVRhc2tDb2NvYSo+IG1fZGF0YVRhc2tNYXBXaXRoQ3JlZGVudGlhbHM7CiAgICAgSGFzaE1h
cDxOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIE5ldHdvcmtEYXRhVGFza0Nv
Y29hKj4gbV9kYXRhVGFza01hcFdpdGhvdXRTdGF0ZTsKKyAgICBIYXNoTWFwPE5ldHdvcmtEYXRh
VGFza0NvY29hOjpUYXNrSWRlbnRpZmllciwgTmV0d29ya0RhdGFUYXNrQ29jb2EqPiBtX2RhdGFU
YXNrTWFwRXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzczsKICAgICBIYXNoTWFwPE5ldHdvcmtE
YXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciwgRG93bmxvYWRJRD4gbV9kb3dubG9hZE1hcDsK
IAogICAgIFJldGFpblB0cjxOU1VSTFNlc3Npb24+IG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3Rv
cmFnZTsKICAgICBSZXRhaW5QdHI8V0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlPiBtX3Nlc3Npb25X
aXRoQ3JlZGVudGlhbFN0b3JhZ2VEZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9u
PiBtX3N0YXRlbGVzc1Nlc3Npb247CiAgICAgUmV0YWluUHRyPFdLTmV0d29ya1Nlc3Npb25EZWxl
Z2F0ZT4gbV9zdGF0ZWxlc3NTZXNzaW9uRGVsZWdhdGU7CisgICAgUmV0YWluUHRyPE5TVVJMU2Vz
c2lvbj4gbV9lcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzU2Vzc2lvbjsKKyAgICBSZXRhaW5Q
dHI8V0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlPiBtX2VwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxl
c3NTZXNzaW9uRGVsZWdhdGU7CiAKICAgICBTdHJpbmcgbV9ib3VuZEludGVyZmFjZUlkZW50aWZp
ZXI7CiAgICAgU3RyaW5nIG1fc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCmluZGV4IDI0NzU4ZmZjMDNhMzg5MDkyYTA0ZGUxZjk1YzViODI0ODYzZjZj
NTYuLjYwYmNhMGIzZDllY2MzN2ZlZGNjZmM5M2IxMGEzN2FlMDEzNjJmNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0KQEAgLTk5OCwxNCArOTk4LDM4IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6On5OZXR3
b3JrU2Vzc2lvbkNvY29hKCkKIHsKIH0KIAordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbml0
aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb24oKQoreworICAgIE5TVVJM
U2Vzc2lvbkNvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbTlNVUkxTZXNzaW9uQ29uZmln
dXJhdGlvbiBlcGhlbWVyYWxTZXNzaW9uQ29uZmlndXJhdGlvbl07CisgICAgTlNVUkxTZXNzaW9u
Q29uZmlndXJhdGlvbiAqZXhpc3RpbmdDb25maWd1cmF0aW9uID0gbV9zdGF0ZWxlc3NTZXNzaW9u
LmdldCgpLmNvbmZpZ3VyYXRpb247CisKKyAgICBjb25maWd1cmF0aW9uLkhUVFBDb29raWVBY2Nl
cHRQb2xpY3kgPSBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lOZXZlcjsKKyAgICBjb25maWd1cmF0
aW9uLlVSTENyZWRlbnRpYWxTdG9yYWdlID0gbmlsOworICAgIGNvbmZpZ3VyYXRpb24uVVJMQ2Fj
aGUgPSBuaWw7CisgICAgY29uZmlndXJhdGlvbi5hbGxvd3NDZWxsdWxhckFjY2VzcyA9IGV4aXN0
aW5nQ29uZmlndXJhdGlvbi5hbGxvd3NDZWxsdWxhckFjY2VzczsKKyAgICBjb25maWd1cmF0aW9u
LmNvbm5lY3Rpb25Qcm94eURpY3Rpb25hcnkgPSBleGlzdGluZ0NvbmZpZ3VyYXRpb24uY29ubmVj
dGlvblByb3h5RGljdGlvbmFyeTsKKworICAgIGNvbmZpZ3VyYXRpb24uX3Nob3VsZFNraXBQcmVm
ZXJyZWRDbGllbnRDZXJ0aWZpY2F0ZUxvb2t1cCA9IFlFUzsKKyAgICBjb25maWd1cmF0aW9uLl9z
b3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW5EYXRhID0gZXhpc3RpbmdDb25maWd1cmF0aW9uLl9z
b3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW5EYXRhOworICAgIGNvbmZpZ3VyYXRpb24uX3NvdXJj
ZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciA9IGV4aXN0aW5nQ29uZmlndXJhdGlvbi5f
c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOworI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisgICAgY29uZmlndXJhdGlvbi5fQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlID0g
ZXhpc3RpbmdDb25maWd1cmF0aW9uLl9DVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGU7CisjZW5k
aWYKKworICAgIG1fZXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb25EZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoTmV0d29y
a1Nlc3Npb246KnRoaXMgd2l0aENyZWRlbnRpYWxzOmZhbHNlXSk7CisgICAgbV9lcGhlbWVyYWxT
dGF0ZWxlc3NDb29raWVsZXNzU2Vzc2lvbiA9IFtOU1VSTFNlc3Npb24gc2Vzc2lvbldpdGhDb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24gZGVsZWdhdGU6c3RhdGljX2Nhc3Q8aWQ+KG1fZXBoZW1l
cmFsU3RhdGVsZXNzQ29va2llbGVzc1Nlc3Npb25EZWxlZ2F0ZS5nZXQoKSkgZGVsZWdhdGVRdWV1
ZTpbTlNPcGVyYXRpb25RdWV1ZSBtYWluUXVldWVdXTsKK30KKwogdm9pZCBOZXR3b3JrU2Vzc2lv
bkNvY29hOjppbnZhbGlkYXRlQW5kQ2FuY2VsKCkKIHsKICAgICBOZXR3b3JrU2Vzc2lvbjo6aW52
YWxpZGF0ZUFuZENhbmNlbCgpOwogCiAgICAgW21fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFn
ZSBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKICAgICBbbV9zdGF0ZWxlc3NTZXNzaW9uIGludmFsaWRh
dGVBbmRDYW5jZWxdOworICAgIFttX2VwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3NTZXNzaW9u
IGludmFsaWRhdGVBbmRDYW5jZWxdOwogICAgIFttX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3Jh
Z2VEZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRdOwogICAgIFttX3N0YXRlbGVzc1Nlc3Npb25E
ZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRdOworICAgIFttX2VwaGVtZXJhbFN0YXRlbGVzc0Nv
b2tpZWxlc3NTZXNzaW9uRGVsZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVkXTsKIH0KIAogdm9pZCBO
ZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGVhckNyZWRlbnRpYWxzKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZWQwMjdlYjMwNDY2MTE0N2U0ZWYx
ZmRiNjA2Y2E4MTUxMDcwMzIwMi4uZDg4MmZiNjhkODkxYWEyZWVjNzE3Y2Y0YTJhZjNiMDQzYmYz
MDJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
QEAgLTg1NCw2ICs4NTQsMTUgQEAgdGVtcGxhdGUgPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6V29ya2VyVHlwZT4gewogICAgID47CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5PiB7CisgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
CisgICAgICAgIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSwKKyAg
ICAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSwKKyAgICAgICAgV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxl
c3MKKyAgICA+OworfTsKKwogI2lmIFVTRShDVVJMKQogdGVtcGxhdGUgPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6Q3VybFByb3h5U2V0dGluZ3M6Ok1vZGU+IHsKICAgICB1c2luZyB2YWx1
ZXMgPSBFbnVtVmFsdWVzPApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRjYjc2ZDU2NWI2M2VkNzVmYjQ1MWNhMzk1MjM2Y2Q2
ZDc0ZWMxZDIuLjU4Nzk4MzU2Zjc3NzJhZjhlYmEyM2YzZTlkY2E4YzE1MDkxYTVjMTkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNiBAQAorMjAxOS0wNC0xOSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFw
cGxlLmNvbT4KKworICAgICAgICBEaXNhYmxlIEFkIENsaWNrIEF0dHJpYnV0aW9uIGluIGVwaGVt
ZXJhbCBzZXNzaW9ucyBhbmQgbWFrZSBzdXJlIGNvbnZlcnNpb24gcmVxdWVzdHMgdXNlIGFuIGVw
aGVtZXJhbCwgc3RhdGVsZXNzIHNlc3Npb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NzEwOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDk5MTg3
MDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBF
eGNlcHQgZm9yIHRoZSBkZXRhaWxzIGJlbG93LCB0aGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIHV0
aWxpdHkgZnVuY3Rpb25zCisgICAgICAgIHByZXBhcmVUZXN0KCkgYW5kIHRlYXJEb3duQW5kRmlu
aXNoKCkgYW5kIGFsbCBhcHBsaWNhYmxlIHRlc3RzIG5vdyBtYWtlIHVzZQorICAgICAgICBvZiB0
aGVtLgorCisgICAgICAgICogaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRp
b24tY29udmVyc2lvbi10aHJvdWdoLWNyb3NzLXNpdGUtaW1hZ2UtcmVkaXJlY3QuaHRtbDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJz
aW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0aC1wcmlvcml0eS5odG1sOgorICAgICAgICAq
IGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhy
b3VnaC1pbWFnZS1yZWRpcmVjdC13aXRob3V0LXByaW9yaXR5Lmh0bWw6CisgICAgICAgICogaHR0
cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vY29udmVyc2lvbi1kaXNhYmxlZC1pbi1lcGhlbWVy
YWwtc2Vzc2lvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYWRD
bGlja0F0dHJpYnV0aW9uL2NvbnZlcnNpb24tZGlzYWJsZWQtaW4tZXBoZW1lcmFsLXNlc3Npb24u
aHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRp
b24vc2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QuaHRtbC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvY29udmVyc2lvblJlcG9ydC5w
aHA6CisgICAgICAgICAgICBOb3cgdHJpZXMgdG8gc2V0IGEgY29va2llIGluIHRoZSByZXNwb25z
ZS4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvdXRp
bC5qczogQWRkZWQuCisgICAgICAgIChwcmVwYXJlVGVzdCk6CisgICAgICAgICh0ZWFyRG93bkFu
ZEZpbmlzaCk6CisgICAgICAgICogaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25k
LWF0dHJpYnV0aW9uLWNvbnZlcnRlZC13aXRoLWhpZ2hlci1wcmlvcml0eS5odG1sOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252
ZXJ0ZWQtd2l0aC1sb3dlci1wcmlvcml0eS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvYWRD
bGlja0F0dHJpYnV0aW9uL3NlY29uZC1jb252ZXJzaW9uLXdpdGgtaGlnaGVyLXByaW9yaXR5Lmh0
bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNvbnZl
cnNpb24td2l0aC1sb3dlci1wcmlvcml0eS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvYWRD
bGlja0F0dHJpYnV0aW9uL3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1yZXF1ZXN0LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZW5kLWF0
dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVxdWVzdC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMv
YWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWFkLWNsaWNrLWF0dHJpYnV0aW9uLmh0bWw6CisgICAg
ICAgICAgICBOb3cgc2V0cyBhIGNvb2tpZSB3aGljaCBpcyBjaGVja2VkIGZvciBpdCBpbiB0aGUg
Y29udmVyc2lvbiByZXBvcnQuCisgICAgICAgICogaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRp
b24vc3RvcmUtZGlzYWJsZWQtaW4tZXBoZW1lcmFsLXNlc3Npb24tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zdG9yZS1kaXNhYmxl
ZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zdG9yZS1hZC1jbGljay1hdHRyaWJ1dGlvbi5odG1s
LgorCiAyMDE5LTA0LTE4ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAg
ICAgIEJsb2IgdHlwZSBjYW5ub3QgYmUgc3RvcmVkIGNvcnJlY3RseSBpbiBJREIgd2hlbiBJREJP
YmplY3RTdG9yZSBoYXMgYXV0b0luY3JlbWVudCBhbmQga2V5UGF0aCBvcHRpb25zCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlv
bi1jb252ZXJzaW9uLXRocm91Z2gtY3Jvc3Mtc2l0ZS1pbWFnZS1yZWRpcmVjdC5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24tY29udmVy
c2lvbi10aHJvdWdoLWNyb3NzLXNpdGUtaW1hZ2UtcmVkaXJlY3QuaHRtbAppbmRleCAzMTI0MDY3
MzlmNWE5YjhjODMyODU3OWJjMTZlN2IyOTg4ZTgwZmY0Li40NDNhZjg3MWUwOWVlMTdjMmNiMjE3
N2RiNGNhOWQ5Njc3MWQ4NzFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fk
Q2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtY3Jvc3Mtc2l0
ZS1pbWFnZS1yZWRpcmVjdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlj
a0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1jcm9zcy1zaXRlLWlt
YWdlLXJlZGlyZWN0Lmh0bWwKQEAgLTQsMTcgKzQsMTQgQEAKICAgICA8bWV0YSBjaGFyc2V0PSJV
VEYtOCI+CiAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13
aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5vIj4KICAgICA8c2NyaXB0IHNy
Yz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9h
ZD0ic2V0VGltZW91dChydW5UZXN0LCAwKSI+CiA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGVzdHMg
dGhhdCB0cmlnZ2VyaW5nIG9mIGFkIGNsaWNrIGF0dHJpYnV0aW9uIGNvbnZlcnNpb25zIHRocm91
Z2ggY3Jvc3Mtc2l0ZSByZWRpcmVjdHMgZG8gbm90IHdvcmsuPC9kaXY+CiA8YSBpZD0idGFyZ2V0
TGluayIgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRy
aWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtY3Jvc3Mtc2l0ZS1pbWFnZS1yZWRpcmVjdC5odG1s
P3N0ZXBUd28iIGFkY2FtcGFpZ25pZD0iMyIgYWRkZXN0aW5hdGlvbj0iaHR0cDovL2xvY2FsaG9z
dDo4MDAwIj5MaW5rPC9hPjxicj4KIDxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+CiA8c2NyaXB0Pgot
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIHRlc3RS
dW5uZXIuc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUodHJ1ZSk7Ci0gICAgfQorICAgIHByZXBh
cmVUZXN0KCk7CiAKICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElEKSB7CiAg
ICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElEKTsK
QEAgLTI1LDcgKzIyLDcgQEAKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlu
bmVyVGV4dCA9ICJGQUlMIFByb21pc2UgcmVqZWN0ZWQuIjsKLSAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgp
OwogICAgICAgICAgICAgfQogICAgICAgICApOwogICAgIH0KQEAgLTQwLDcgKzM3LDcgQEAKICAg
ICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQWRDbGlja0F0dHJpYnV0aW9uKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKSk7CiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBpeGVsIikpOwotICAg
ICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKICAgICAgICAgICAgICAgICB9OwogICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2VFbGVtZW50KTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tB
dHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qt
d2l0aC1wcmlvcml0eS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmli
dXRpb24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0LXdpdGgt
cHJpb3JpdHkuaHRtbAppbmRleCBjNWZiNWY1MDNmZGM3ODg2ZDMxMmMyNWFlNDFlMjhlMWU0Y2Ey
ODJjLi41M2Q4NjZmMGRhNjlmNWE2OWQ1ODBjOTk5YTdmNTVjMGQ0YTZlMWMxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1j
b252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0aC1wcmlvcml0eS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNv
bnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC13aXRoLXByaW9yaXR5Lmh0bWwKQEAgLTQs
MTcgKzQsMTQgQEAKICAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICAgPG1ldGEgbmFtZT0i
dmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1
c2VyLXNjYWxhYmxlPW5vIj4KICAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3Vp
LWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpz
Ij48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0ic2V0VGltZW91dChydW5UZXN0LCAw
KSI+CiA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGVzdHMgdHJpZ2dlcmluZyBvZiBhZCBjbGljayBh
dHRyaWJ1dGlvbiBjb252ZXJzaW9ucyB3aXRoIHByaW9yaXR5LjwvZGl2PgogPGEgaWQ9InRhcmdl
dExpbmsiIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9hZENsaWNrQXR0cmlidXRpb24vYXR0
cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0LXdpdGgtcHJpb3JpdHku
aHRtbD9zdGVwVHdvIiBhZGNhbXBhaWduaWQ9IjMiIGFkZGVzdGluYXRpb249Imh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMCI+TGluazwvYT48YnI+CiA8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgogPHNjcmlw
dD4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Ci0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICB0
ZXN0UnVubmVyLnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlKHRydWUpOwotICAgIH0KKyAgICBw
cmVwYXJlVGVzdCgpOwogCiAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJRCkg
ewogICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJ
RCk7CkBAIC0yNSw3ICsyMiw3IEBACiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgZnVuY3Rp
b24gKCkgewogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQi
KS5pbm5lclRleHQgPSAiRkFJTCBQcm9taXNlIHJlamVjdGVkLiI7Ci0gICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5p
c2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgKTsKICAgICB9CkBAIC00MCw3ICszNyw3IEBA
CiAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbigp
OwogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXRMaW5rIikpOwogICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwaXhlbCIpKTsK
LSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CiAgICAgICAgICAgICAgICAgfTsKICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCk7CiAgICAg
ICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENs
aWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWltYWdlLXJlZGly
ZWN0LXdpdGhvdXQtcHJpb3JpdHkuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlj
a0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVj
dC13aXRob3V0LXByaW9yaXR5Lmh0bWwKaW5kZXggOTdiYTUyZTBmNDJmNzhlZmU0NzMwMTA3N2Zi
MGU2ZDEwMzk1NmViYy4uZmIxNzRiMTA1YjRlM2NhZTI4ZTFjNzYyNDU1NTI1ODk4NjlmN2Q4YyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0
cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0LXdpdGhvdXQtcHJpb3Jp
dHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9h
dHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3Qtd2l0aG91dC1wcmlv
cml0eS5odG1sCkBAIC00LDE3ICs0LDE0IEBACiAgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgog
ICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGlu
aXRpYWwtc2NhbGU9MSwgdXNlci1zY2FsYWJsZT1ubyI+CiAgICAgPHNjcmlwdCBzcmM9Ii9qcy10
ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InNldFRp
bWVvdXQocnVuVGVzdCwgMCkiPgogPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRlc3RzIHRyaWdnZXJp
bmcgb2YgYWQgY2xpY2sgYXR0cmlidXRpb24gY29udmVyc2lvbnMgd2l0aG91dCBwcmlvcml0eS48
L2Rpdj4KIDxhIGlkPSJ0YXJnZXRMaW5rIiBocmVmPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvYWRD
bGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRp
cmVjdC13aXRob3V0LXByaW9yaXR5Lmh0bWw/c3RlcFR3byIgYWRjYW1wYWlnbmlkPSIzIiBhZGRl
c3RpbmF0aW9uPSJodHRwOi8vbG9jYWxob3N0OjgwMDAiPkxpbms8L2E+PGJyPgogPGRpdiBpZD0i
b3V0cHV0Ij48L2Rpdj4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0g
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0
ZSh0cnVlKTsKLSAgICB9CisgICAgcHJlcGFyZVRlc3QoKTsKIAogICAgIGZ1bmN0aW9uIGFjdGl2
YXRlRWxlbWVudChlbGVtZW50SUQpIHsKICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChlbGVtZW50SUQpOwpAQCAtMjUsNyArMjIsNyBAQAogICAgICAgICAgICAg
fSwKICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgUHJvbWlzZSByZWplY3Rl
ZC4iOwotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAg
ICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICk7CiAg
ICAgfQpAQCAtNDAsNyArMzcsNyBAQAogICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBZENsaWNrQXR0cmlidXRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9k
eS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0TGluayIpKTsKICAg
ICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicGl4ZWwiKSk7Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAg
ICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChpbWFnZUVsZW1lbnQpOwogICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2NvbnZlcnNpb24tZGlzYWJsZWQt
aW4tZXBoZW1lcmFsLXNlc3Npb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hZENsaWNrQXR0cmlidXRpb24vY29udmVyc2lvbi1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vz
c2lvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzM0YWI1ZDkxMjU5NDU4MzBhMmI4NDNlNzE3
NGUxNTA5ZDJjZDU4MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YWRDbGlja0F0dHJpYnV0aW9uL2NvbnZlcnNpb24tZGlzYWJsZWQtaW4tZXBoZW1lcmFsLXNlc3Np
b24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3RzIHRoYXQgc3RvcmVkIGF0dHJp
YnV0aW9ucyBjYW5ub3QgYmUgY29udmVydGVkIGluIGFuIGVwaGVtZXJhbCBzZXNzaW9uLgorCisK
KworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lMS0tPicKKy0tLS0tLS0tCitDb252ZXJzaW9u
IG5vdCByZWNlaXZlZCAtIHRpbWVkIG91dC4KKworVW5jb252ZXJ0ZWQgQWQgQ2xpY2sgQXR0cmli
dXRpb25zOgorV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uIDEKK1NvdXJjZTogMTI3LjAuMC4x
CitEZXN0aW5hdGlvbjogbG9jYWxob3N0CitDYW1wYWlnbiBJRDogMworTm8gY29udmVyc2lvbiBk
YXRhLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRp
b24vY29udmVyc2lvbi1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vY29udmVyc2lvbi1kaXNhYmxlZC1p
bi1lcGhlbWVyYWwtc2Vzc2lvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyZjVmZmZhMDg2YWFkNGNjZjc2
ZTljMWY5M2Y5OThlMTliMTZhNmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9jb252ZXJzaW9uLWRpc2FibGVkLWluLWVwaGVtZXJh
bC1zZXNzaW9uLmh0bWwKQEAgLTAsMCArMSw3NiBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Vi
a2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIGludGVybmFsOkFkQ2xp
Y2tBdHRyaWJ1dGlvbkVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+
CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBj
b250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdXNlci1zY2FsYWJs
ZT1ubyI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQocnVuVGVzdCwgMCkiPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPlRlc3RzIHRoYXQgc3RvcmVkIGF0dHJpYnV0aW9ucyBjYW5ub3QgYmUg
Y29udmVydGVkIGluIGFuIGVwaGVtZXJhbCBzZXNzaW9uLjwvZGl2PgorPGEgaWQ9InRhcmdldExp
bmsiIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9hZENsaWNrQXR0cmlidXRpb24vY29udmVy
c2lvbi1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi5odG1sP3N0ZXBUd28iIGFkY2FtcGFp
Z25pZD0iMyIgYWRkZXN0aW5hdGlvbj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwIj5MaW5rPC9hPjxi
cj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGNvbnN0IGN1cnJlbnRU
aW1lTWlsbGlzID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTsKKyAgICBjb25zdCBoaWdoRW50cm9w
eUJpdHMgPSBjdXJyZW50VGltZU1pbGxpcyAtIChNYXRoLmZsb29yKGN1cnJlbnRUaW1lTWlsbGlz
IC8gMTAwMDAwMCkgKiAxMDAwMDAwKTsKKyAgICBjb25zdCBub25jZSA9IGhpZ2hFbnRyb3B5Qml0
cyArICIiICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwKTsKKworICAgIHByZXBhcmVU
ZXN0KCk7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
c2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRlc3RpbmcoImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2NvbnZlcnNpb25SZXBvcnQu
cGhwP25vbmNlPSIgKyBub25jZSk7CisKKyAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxl
bWVudElEKSB7CisgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ZWxlbWVudElEKTsKKyAgICAgICAgdmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBl
bGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9m
ZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgVUlIZWxwZXIuYWN0
aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVuKAorICAgICAgICAgICAgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwg
UHJvbWlzZSByZWplY3RlZC4iOworICAgICAgICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7
CisgICAgICAgICAgICB9CisgICAgICAgICk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYXBwZW5k
SWZyYW1lKHVybCwgb25sb2FkQ2FsbGJhY2spIHsKKyAgICAgICAgbGV0IGlmcmFtZUVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICAgICAgaWZyYW1lRWxlbWVu
dC5zcmMgPSB1cmw7CisgICAgICAgIGlmIChvbmxvYWRDYWxsYmFjaykKKyAgICAgICAgICAgIGlm
cmFtZUVsZW1lbnQub25sb2FkID0gb25sb2FkQ2FsbGJhY2s7CisgICAgICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYXBw
ZW5kQ29udmVyc2lvbkRhdGFJZnJhbWVBbmRGaW5pc2goKSB7CisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbigpOworICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNo
aWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXRMaW5rIikpOworICAgICAgICBkb2N1
bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwaXhlbCIpKTsK
KworICAgICAgICBhcHBlbmRJZnJhbWUoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9hZENsaWNrQXR0
cmlidXRpb24vcmVzb3VyY2VzL2dldENvbnZlcnNpb25EYXRhLnBocD90aW1lb3V0X21zPTEwMDAm
bm9uY2U9IiArIG5vbmNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlYXJEb3duQW5kRmlu
aXNoKCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5s
b2NhdGlvbi5zZWFyY2ggPT09ICI/c3RlcFR3byIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAgbGV0
IGltYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgICAgICAg
ICAgICAgIGltYWdlRWxlbWVudC5zcmMgPSAiaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0My9hZENsaWNr
QXR0cmlidXRpb24vcmVzb3VyY2VzL3JlZGlyZWN0VG9Db252ZXJzaW9uLnBocD9jb252ZXJzaW9u
RGF0YT0xMiZub25jZT0iICsgbm9uY2U7CisgICAgICAgICAgICAgICAgaW1hZ2VFbGVtZW50Lmlk
ID0gInBpeGVsIjsKKyAgICAgICAgICAgICAgICBpbWFnZUVsZW1lbnQub25lcnJvciA9IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRDb252ZXJzaW9uRGF0YUlmcmFtZUFu
ZEZpbmlzaCgpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChpbWFnZUVsZW1lbnQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSAiY29va2llU2V0QXNGaXJzdFBhcnR5PTE7
IHBhdGg9LyI7CisgICAgICAgICAgICAgICAgYWN0aXZhdGVFbGVtZW50KCJ0YXJnZXRMaW5rIik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgTm8gdGVzdFJ1bm5lci4i
OworICAgICAgICB9CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMv
Y29udmVyc2lvblJlcG9ydC5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRy
aWJ1dGlvbi9yZXNvdXJjZXMvY29udmVyc2lvblJlcG9ydC5waHAKaW5kZXggM2ZiZDhmYjgyM2Fk
Mzg0ODJkZDJiZjI5OWE5MjE0N2UyMDhjZjBkMi4uZTM4NDIxMjU1YmM1ZDUyMTE4ODYzMmJhNzNh
NDg5OTIzMzU0ZWQyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNr
QXR0cmlidXRpb24vcmVzb3VyY2VzL2NvbnZlcnNpb25SZXBvcnQucGhwCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy9jb252ZXJzaW9uUmVw
b3J0LnBocApAQCAtMjQsNCArMjQsOCBAQCBpZiAoISRjb29raWVzRm91bmQpIHsKIH0KIGZjbG9z
ZSgkY29udmVyc2lvbkZpbGUpOwogcmVuYW1lKCRjb252ZXJzaW9uRmlsZVBhdGggLiAiLnRtcCIs
ICRjb252ZXJzaW9uRmlsZVBhdGgpOworCitoZWFkZXIoIkhUVFAvMS4xIDIwMCBPSyIpOworc2V0
Y29va2llKCJjb29raWVTZXRJbkNvbnZlcnNpb25SZXBvcnQiLCAiMSIsIDAsICIvIik7CisKID8+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9y
ZXNvdXJjZXMvdXRpbC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0
aW9uL3Jlc291cmNlcy91dGlsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmMzBjOGNhNmZmYzQyZDUxZmI4NTZm
MzM1MDUyNzc4Y2E5ODY3ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvdXRpbC5qcwpAQCAtMCwwICsxLDE4IEBA
CitmdW5jdGlvbiBwcmVwYXJlVGVzdCgpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICB0ZXN0UnVubmVyLnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlKHRydWUpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gdGVhckRvd25BbmRGaW5pc2goKSB7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0QWxsb3dzQW55U1NMQ2VydGlm
aWNhdGUoZmFsc2UpOworICAgICAgICB0ZXN0UnVubmVyLnNldEFkQ2xpY2tBdHRyaWJ1dGlvbk92
ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGZhbHNlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRBZENs
aWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZygiIik7CisgICAgICAgIHRlc3RS
dW5uZXIuc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChmYWxzZSk7CisgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNv
bmQtYXR0cmlidXRpb24tY29udmVydGVkLXdpdGgtaGlnaGVyLXByaW9yaXR5Lmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtYXR0cmlidXRpb24t
Y29udmVydGVkLXdpdGgtaGlnaGVyLXByaW9yaXR5Lmh0bWwKaW5kZXggNDkyMDBmNzNmYmI2Y2Zj
NWQyOWQ0YTViOGNkYjkzNDAwMzU4M2ZkMC4uZGQzODNlZDc3NzIzNGUxMmVmMTA2MWUzNDQ1YjEx
NjI0ZDliYjJhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0
cmlidXRpb24vc2Vjb25kLWF0dHJpYnV0aW9uLWNvbnZlcnRlZC13aXRoLWhpZ2hlci1wcmlvcml0
eS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Nl
Y29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0ZWQtd2l0aC1oaWdoZXItcHJpb3JpdHkuaHRtbApAQCAt
NCw2ICs0LDcgQEAKICAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICAgPG1ldGEgbmFtZT0i
dmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1
c2VyLXNjYWxhYmxlPW5vIj4KICAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3Vp
LWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpz
Ij48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0ic2V0VGltZW91dChydW5UZXN0LCAw
KSI+CiA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGVzdHMgdGhhdCBhIHNlY29uZCBhdHRyaWJ1dGlv
biBjb252ZXJzaW9uIHdpdGggaGlnaGVyIHByaW9yaXR5IHJlcGxhY2VzIGFuIG9sZGVyIHdpdGgg
bG93ZXIgcHJpb3JpdHkuPC9kaXY+CkBAIC0yNCw2ICsyNSw4IEBACiAgICAgICAgIH0KICAgICBd
OwogCisgICAgcHJlcGFyZVRlc3QoKTsKKwogICAgIGZ1bmN0aW9uIGNvbmZpZ3VyZUxpbmsoaW5k
ZXgpIHsKICAgICAgICAgbGV0IGxpbmtFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRhcmdldExpbmsiKTsKICAgICAgICAgbGlua0VsZW1lbnQuc2V0QXR0cmlidXRlKCJocmVmIiwg
Y29uZmlndXJhdGlvbltpbmRleF0uaHJlZik7CkBAIC0zMSwxMiArMzQsNiBAQAogICAgICAgICBs
aW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFkZGVzdGluYXRpb24iLCBjb25maWd1cmF0aW9uW2lu
ZGV4XS5hZGRlc3RpbmF0aW9uKTsKICAgICB9CiAKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKLSAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICB0ZXN0UnVubmVyLnNldEFsbG93c0FueVNTTENlcnRp
ZmljYXRlKHRydWUpOwotICAgIH0KLQogICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVt
ZW50SUQpIHsKICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChl
bGVtZW50SUQpOwogICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVs
ZW1lbnQub2Zmc2V0V2lkdGggLyAyOwpAQCAtNDYsNyArNDMsNyBAQAogICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgUHJvbWlzZSByZWplY3RlZC4i
OwotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAg
ICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICk7CiAgICAg
fQpAQCAtNzksMTIgKzc2LDEyIEBACiAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFkQ2xpY2tBdHRyaWJ1dGlvbigpOwogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5
LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXRMaW5rIikpOwogICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJwaXhlbCIpKTsKLSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CiAgICAg
ICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGltYWdlRWxlbWVudCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBVbmtub3du
IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggPT0gIiArIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggKyAi
LiI7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRl
eHQgPSAiRkFJTCBObyB0ZXN0UnVubmVyLiI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtYXR0cmlidXRpb24tY29udmVydGVkLXdp
dGgtbG93ZXItcHJpb3JpdHkuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0
dHJpYnV0aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0ZWQtd2l0aC1sb3dlci1wcmlvcml0
eS5odG1sCmluZGV4IGMzZTE4ODM5MGRlYjgwYjJkNzY5YWZhNzA3YmVhZjUyNDU3YWM2NmMuLjdl
ODFhOTc2OWJkYzNlMmIwYmNjMjdkYzhiYmQ0MjFhYmFkNzI1ZDIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1j
b252ZXJ0ZWQtd2l0aC1sb3dlci1wcmlvcml0eS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1hdHRyaWJ1dGlvbi1jb252ZXJ0ZWQtd2l0
aC1sb3dlci1wcmlvcml0eS5odG1sCkBAIC00LDYgKzQsNyBAQAogICAgIDxtZXRhIGNoYXJzZXQ9
IlVURi04Ij4KICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNl
LXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgogICAgIDxzY3JpcHQg
c3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25s
b2FkPSJzZXRUaW1lb3V0KHJ1blRlc3QsIDApIj4KIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0
cyB0aGF0IGEgc2Vjb25kIGF0dHJpYnV0aW9uIGNvbnZlcnNpb24gd2l0aCBsb3dlciBwcmlvcml0
eSBkb2VzIG5vdCByZXBsYWNlIGFuIG9sZGVyIHdpdGggaGlnaGVyIHByaW9yaXR5LjwvZGl2PgpA
QCAtMjQsNiArMjUsOCBAQAogICAgICAgICB9CiAgICAgXTsKIAorICAgIHByZXBhcmVUZXN0KCk7
CisKICAgICBmdW5jdGlvbiBjb25maWd1cmVMaW5rKGluZGV4KSB7CiAgICAgICAgIGxldCBsaW5r
RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXRMaW5rIik7CiAgICAgICAg
IGxpbmtFbGVtZW50LnNldEF0dHJpYnV0ZSgiaHJlZiIsIGNvbmZpZ3VyYXRpb25baW5kZXhdLmhy
ZWYpOwpAQCAtMzEsMTIgKzM0LDYgQEAKICAgICAgICAgbGlua0VsZW1lbnQuc2V0QXR0cmlidXRl
KCJhZGRlc3RpbmF0aW9uIiwgY29uZmlndXJhdGlvbltpbmRleF0uYWRkZXN0aW5hdGlvbik7CiAg
ICAgfQogCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOwotICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAg
ICAgdGVzdFJ1bm5lci5zZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSh0cnVlKTsKLSAgICB9Ci0K
ICAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElEKSB7CiAgICAgICAgIHZhciBl
bGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElEKTsKICAgICAgICAgdmFy
IGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsK
QEAgLTQ2LDcgKzQzLDcgQEAKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlu
bmVyVGV4dCA9ICJGQUlMIFByb21pc2UgcmVqZWN0ZWQuIjsKLSAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgp
OwogICAgICAgICAgICAgfQogICAgICAgICApOwogICAgIH0KQEAgLTc5LDEyICs3NiwxMiBAQAog
ICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBZENsaWNrQXR0cmlidXRpb24oKTsK
ICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGFyZ2V0TGluayIpKTsKICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGl4ZWwiKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAg
ICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAgICAgICAgICAgICAgIH07CiAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZUVsZW1lbnQpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
b3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgVW5rbm93biB3aW5kb3cubG9jYXRpb24uc2VhcmNo
ID09ICIgKyB3aW5kb3cubG9jYXRpb24uc2VhcmNoICsgIi4iOwotICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNo
KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgTm8gdGVzdFJ1bm5l
ci4iOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRp
b24vc2Vjb25kLWNvbnZlcnNpb24td2l0aC1oaWdoZXItcHJpb3JpdHkuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1jb252ZXJzaW9uLXdpdGgt
aGlnaGVyLXByaW9yaXR5Lmh0bWwKaW5kZXggYzhlZmUxNGRmNTI5ZWE0ZmQ1ZTdjYzg1Y2RlMGZi
ZWFhOTIxMTc0YS4uZjU5ZTQ0YjZmYjk5NDU3ODJiMWY5MjIyMDc0OWMwNjM1NjM0YjQ0YiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25k
LWNvbnZlcnNpb24td2l0aC1oaWdoZXItcHJpb3JpdHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZWNvbmQtY29udmVyc2lvbi13aXRoLWhpZ2hl
ci1wcmlvcml0eS5odG1sCkBAIC00LDYgKzQsNyBAQAogICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04
Ij4KICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRo
LCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgogICAgIDxzY3JpcHQgc3JjPSIv
anMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJz
ZXRUaW1lb3V0KHJ1blRlc3QsIDApIj4KIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0cyB0aGF0
IHRoZSBhdHRyaWJ1dGlvbiBpcyB1cGRhdGVkIGlmIGl0IGdldHMgYSBzZWNvbmQgY29udmVyc2lv
biB3aXRoIGhpZ2hlciBwcmlvcml0eS48L2Rpdj4KQEAgLTE5LDYgKzIwLDggQEAKICAgICAgICAg
fQogICAgIF07CiAKKyAgICBwcmVwYXJlVGVzdCgpOworCiAgICAgZnVuY3Rpb24gY29uZmlndXJl
TGluayhpbmRleCkgewogICAgICAgICBsZXQgbGlua0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGFyZ2V0TGluayIpOwogICAgICAgICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUo
ImhyZWYiLCBjb25maWd1cmF0aW9uW2luZGV4XS5ocmVmKTsKQEAgLTI2LDEyICsyOSw2IEBACiAg
ICAgICAgIGxpbmtFbGVtZW50LnNldEF0dHJpYnV0ZSgiYWRkZXN0aW5hdGlvbiIsIGNvbmZpZ3Vy
YXRpb25baW5kZXhdLmFkZGVzdGluYXRpb24pOwogICAgIH0KIAotICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgewotICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0QWxsb3dzQW55
U1NMQ2VydGlmaWNhdGUodHJ1ZSk7Ci0gICAgfQotCiAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVt
ZW50KGVsZW1lbnRJRCkgewogICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKGVsZW1lbnRJRCk7CiAgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRM
ZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CkBAIC00MSw3ICszOCw3IEBACiAgICAgICAg
ICAgICB9LAogICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBQcm9taXNlIHJl
amVjdGVkLiI7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAg
ICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
KTsKICAgICB9CkBAIC03MiwxMiArNjksMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbigpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFy
Z2V0TGluayIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3Zl
Q2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBpeGVsIikpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIFVua25vd24gd2lu
ZG93LmxvY2F0aW9uLnNlYXJjaCA9PSAiICsgd2luZG93LmxvY2F0aW9uLnNlYXJjaCArICIuIjsK
LSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAg
ICB0ZWFyRG93bkFuZEZpbmlzaCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9
ICJGQUlMIE5vIHRlc3RSdW5uZXIuIjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29uZC1jb252ZXJzaW9uLXdpdGgtbG93ZXItcHJpb3Jp
dHkuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlY29u
ZC1jb252ZXJzaW9uLXdpdGgtbG93ZXItcHJpb3JpdHkuaHRtbAppbmRleCBiNmVmYmExOTk2MDhk
ZjhhMWVkMDcwMGQ3NTI3NmI3MmYwOTQ5NWVmLi5kOGE5MTRhYThmOTQ0M2MxMjAyNjE3ZjMxYzQ0
NjE4MTJjOTBlYzVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tB
dHRyaWJ1dGlvbi9zZWNvbmQtY29udmVyc2lvbi13aXRoLWxvd2VyLXByaW9yaXR5Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2Vjb25kLWNvbnZl
cnNpb24td2l0aC1sb3dlci1wcmlvcml0eS5odG1sCkBAIC00LDYgKzQsNyBAQAogICAgIDxtZXRh
IGNoYXJzZXQ9IlVURi04Ij4KICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lk
dGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgogICAg
IDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPC9oZWFkPgog
PGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KHJ1blRlc3QsIDApIj4KIDxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj5UZXN0cyB0aGF0IHRoZSBhdHRyaWJ1dGlvbiBpcyBub3QgdXBkYXRlZCBpZiBpdCBnZXRz
IGEgc2Vjb25kIGNvbnZlcnNpb24gd2l0aCBsb3dlciBwcmlvcml0eS48L2Rpdj4KQEAgLTE5LDYg
KzIwLDggQEAKICAgICAgICAgfQogICAgIF07CiAKKyAgICBwcmVwYXJlVGVzdCgpOworCiAgICAg
ZnVuY3Rpb24gY29uZmlndXJlTGluayhpbmRleCkgewogICAgICAgICBsZXQgbGlua0VsZW1lbnQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0TGluayIpOwogICAgICAgICBsaW5rRWxl
bWVudC5zZXRBdHRyaWJ1dGUoImhyZWYiLCBjb25maWd1cmF0aW9uW2luZGV4XS5ocmVmKTsKQEAg
LTI2LDEyICsyOSw2IEBACiAgICAgICAgIGxpbmtFbGVtZW50LnNldEF0dHJpYnV0ZSgiYWRkZXN0
aW5hdGlvbiIsIGNvbmZpZ3VyYXRpb25baW5kZXhdLmFkZGVzdGluYXRpb24pOwogICAgIH0KIAot
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIHRlc3RS
dW5uZXIuc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUodHJ1ZSk7Ci0gICAgfQotCiAgICAgZnVu
Y3Rpb24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJRCkgewogICAgICAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJRCk7CiAgICAgICAgIHZhciBjZW50ZXJY
ID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CkBAIC00MSw3
ICszOCw3IEBACiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQg
PSAiRkFJTCBQcm9taXNlIHJlamVjdGVkLiI7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgKTsKICAgICB9CkBAIC03Miw3ICs2OSw3IEBACiAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBZENsaWNrQXR0cmlidXRpb24oKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwaXhlbCIpKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKICAgICAgICAgICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2VuZC1hdHRy
aWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJl
cXVlc3QtZXhwZWN0ZWQudHh0CmluZGV4IDc3ZTI4YjAxZGFmNjY1YjIwYThhZWI1MTk4YzdkNTc3
ZDU4NDAxZDEuLjQ3N2I0NzEzMDgzOWExNTk2OGYzYmZhMWYyYTNmOWQ4ZWQ3ZjI5YTkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlbmQtYXR0
cmlidXRpb24tY29udmVyc2lvbi1yZXF1ZXN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZW5kLWF0dHJpYnV0aW9uLWNvbnZlcnNp
b24tcmVxdWVzdC1leHBlY3RlZC50eHQKQEAgLTEsMTMgKzEsMjQgQEAKLVRlc3RzIHNlbmRpbmcg
b2YgYWQgY2xpY2sgYXR0cmlidXRpb24gcmVxdWVzdHMgYWZ0ZXIgYSBjb252ZXJzaW9uLgorVGVz
dHMgc2VuZGluZyBvZiBhZCBjbGljayBhdHRyaWJ1dGlvbiByZXF1ZXN0cyBhZnRlciBhIGNvbnZl
cnNpb24uIEFsc28gdGVzdHMgdGhhdCBjb29raWVzIGFyZSBub3Qgc2VudCBpbiB0aG9zZSByZXF1
ZXN0cyBhbmQgY29va2llcyBhcmUgbm90IGFjY2VwdGVkIGluIHRoZSByZXNwb25zZXMuCiAKIAog
CiAtLS0tLS0tLQogRnJhbWU6ICc8IS0tZnJhbWUxLS0+JwogLS0tLS0tLS0KK0Nvb2tpZXMgYXJl
OiBjb29raWVTZXRBc0ZpcnN0UGFydHkgPSAxCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFt
ZTItLT4nCistLS0tLS0tLQogQ29udmVyc2lvbiByZWNlaXZlZC4KIEhUVFBfSE9TVDogMTI3LjAu
MC4xOjgwMDAKIFJFUVVFU1RfVVJJOiAvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy9jb252
ZXJzaW9uUmVwb3J0LnBocD9jb252ZXJzaW9uPTEyJmNhbXBhaWduPTMKIE5vIGNvb2tpZXMgaW4g
Y29udmVyc2lvbiByZXF1ZXN0LgogCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZTMtLT4n
CistLS0tLS0tLQorQ29va2llcyBhcmU6IGNvb2tpZVNldEFzRmlyc3RQYXJ0eSA9IDEKKwogTm8g
c3RvcmVkIEFkIENsaWNrIEF0dHJpYnV0aW9uIGRhdGEuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zZW5kLWF0dHJpYnV0aW9uLWNvbnZlcnNp
b24tcmVxdWVzdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRp
b24vc2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QuaHRtbAppbmRleCBlYTIyNjk4
YjRmOTkyN2Y4ZGYyMDFkMGI3ZTg2OWM1MDQ3NTVmYmQ0Li40Mzc1NzdjOWY2YWFmNzIxMmViYzEy
ZmVjMDhlNTJhZDYxNDg3ODcxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fk
Q2xpY2tBdHRyaWJ1dGlvbi9zZW5kLWF0dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVxdWVzdC5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3NlbmQtYXR0
cmlidXRpb24tY29udmVyc2lvbi1yZXF1ZXN0Lmh0bWwKQEAgLTQsOSArNCwxMCBAQAogICAgIDxt
ZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0i
d2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgog
ICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KHJ1blRlc3QsIDApIj4KLTxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj5UZXN0cyBzZW5kaW5nIG9mIGFkIGNsaWNrIGF0dHJpYnV0aW9uIHJlcXVlc3RzIGFm
dGVyIGEgY29udmVyc2lvbi48L2Rpdj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0cyBzZW5k
aW5nIG9mIGFkIGNsaWNrIGF0dHJpYnV0aW9uIHJlcXVlc3RzIGFmdGVyIGEgY29udmVyc2lvbi4g
QWxzbyB0ZXN0cyB0aGF0IGNvb2tpZXMgYXJlIG5vdCBzZW50IGluIHRob3NlIHJlcXVlc3RzIGFu
ZCBjb29raWVzIGFyZSBub3QgYWNjZXB0ZWQgaW4gdGhlIHJlc3BvbnNlcy48L2Rpdj4KIDxhIGlk
PSJ0YXJnZXRMaW5rIiBocmVmPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvYWRDbGlja0F0dHJpYnV0
aW9uL3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1yZXF1ZXN0Lmh0bWw/c3RlcFR3byIgYWRj
YW1wYWlnbmlkPSIzIiBhZGRlc3RpbmF0aW9uPSJodHRwOi8vbG9jYWxob3N0OjgwMDAiPkxpbms8
L2E+PGJyPgogPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KIDxzY3JpcHQ+CkBAIC0xNCwxMiArMTUs
MTEgQEAKICAgICBjb25zdCBoaWdoRW50cm9weUJpdHMgPSBjdXJyZW50VGltZU1pbGxpcyAtIChN
YXRoLmZsb29yKGN1cnJlbnRUaW1lTWlsbGlzIC8gMTAwMDAwMCkgKiAxMDAwMDAwKTsKICAgICBj
b25zdCBub25jZSA9IGhpZ2hFbnRyb3B5Qml0cyArICIiICsgTWF0aC5mbG9vcihNYXRoLnJhbmRv
bSgpICogMTAwKTsKIAorICAgIHByZXBhcmVUZXN0KCk7CisKICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIHRl
c3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0
QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUodHJ1ZSk7Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0QWRD
bGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRlc3RpbmcoImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2NvbnZlcnNpb25SZXBvcnQucGhwP25v
bmNlPSIgKyBub25jZSk7CiAgICAgICAgIHRlc3RSdW5uZXIuc2V0QWRDbGlja0F0dHJpYnV0aW9u
T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcodHJ1ZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0QWRD
bGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRlc3RpbmcoImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2NvbnZlcnNpb25SZXBvcnQucGhwP25v
bmNlPSIgKyBub25jZSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gYWN0aXZhdGVFbGVtZW50KGVs
ZW1lbnRJRCkgewpAQCAtMzEsMTkgKzMxLDMwIEBACiAgICAgICAgICAgICB9LAogICAgICAgICAg
ICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBQcm9taXNlIHJlamVjdGVkLiI7Ci0gICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgdGVhckRv
d25BbmRGaW5pc2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgKTsKICAgICB9CiAKKyAgICBm
dW5jdGlvbiBhcHBlbmRJZnJhbWUodXJsLCBvbmxvYWRDYWxsYmFjaykgeworICAgICAgICBsZXQg
aWZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAg
ICBpZnJhbWVFbGVtZW50LnNyYyA9IHVybDsKKyAgICAgICAgaWYgKG9ubG9hZENhbGxiYWNrKQor
ICAgICAgICAgICAgaWZyYW1lRWxlbWVudC5vbmxvYWQgPSBvbmxvYWRDYWxsYmFjazsKKyAgICAg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsKKyAgICB9CisKICAg
ICBmdW5jdGlvbiBhcHBlbmRDb252ZXJzaW9uRGF0YUlmcmFtZUFuZEZpbmlzaCgpIHsKICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQWRDbGlja0F0dHJpYnV0aW9uKCk7CiAgICAgICAgIGRvY3VtZW50
LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKSk7
CiAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInBpeGVsIikpOwogCi0gICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaWZyYW1lIik7Ci0gICAgICAgIGlmcmFtZUVsZW1lbnQuc3JjID0gImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2dldENvbnZlcnNp
b25EYXRhLnBocD9lbmRUZXN0PXRydWUmdGltZW91dF9tcz0yMDAwJm5vbmNlPSIgKyBub25jZTsK
LSAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWVFbGVtZW50KTsKKyAgICAg
ICAgYXBwZW5kSWZyYW1lKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAvY29va2llcy9yZXNvdXJjZXMv
ZWNoby1jb29raWVzLnBocCIpOworICAgICAgICBhcHBlbmRJZnJhbWUoImh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2dldENvbnZlcnNpb25EYXRhLnBo
cD90aW1lb3V0X21zPTIwMDAmbm9uY2U9IiArIG5vbmNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGFwcGVuZElmcmFtZSgiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2Nvb2tpZXMvcmVzb3VyY2Vz
L2VjaG8tY29va2llcy5waHAiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0ZWFyRG93
bkFuZEZpbmlzaCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogICAgIH0KIAogICAg
IGZ1bmN0aW9uIHJ1blRlc3QoKSB7CkBAIC01Nyw2ICs2OCw3IEBACiAgICAgICAgICAgICAgICAg
fTsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlRWxlbWVu
dCk7CiAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LmNvb2tp
ZSA9ICJjb29raWVTZXRBc0ZpcnN0UGFydHk9MTsgcGF0aD0vIjsKICAgICAgICAgICAgICAgICBh
Y3RpdmF0ZUVsZW1lbnQoInRhcmdldExpbmsiKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0
aW9uL3N0b3JlLWFkLWNsaWNrLWF0dHJpYnV0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zdG9yZS1hZC1jbGljay1hdHRyaWJ1dGlvbi5odG1sCmlu
ZGV4IGY2NjAxZDY3YmEwNTIzYTY0ODI1ZjIzNDllNjA0MTNjYmRiYjM5MDguLmM3MTQ2ZDAyMDIw
MzlkZGFkNDZiNTg4YjYxMGVjYTkxY2JjNDQ1ZTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWFkLWNsaWNrLWF0dHJpYnV0aW9uLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vc3RvcmUt
YWQtY2xpY2stYXR0cmlidXRpb24uaHRtbApAQCAtNCwxNiArNCwxNCBAQAogICAgIDxtZXRhIGNo
YXJzZXQ9IlVURi04Ij4KICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9
ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgogICAgIDxz
Y3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHkgb25sb2FkPSJzZXRUaW1lb3V0KHJ1blRlc3QsIDApIj4KIDxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij5UZXN0cyBzdG9yYWdlIG9mIGFkIGNsaWNrIGF0dHJpYnV0aW9uLjwvZGl2PgogPGEgaWQ9InRh
cmdldExpbmsiIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9hZENsaWNrQXR0cmlidXRpb24v
c3RvcmUtYWQtY2xpY2stYXR0cmlidXRpb24uaHRtbD9zdGVwVHdvIiBhZGNhbXBhaWduaWQ9IjMi
IGFkZGVzdGluYXRpb249Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI+TGluazwvYT48YnI+CiA8ZGl2
IGlkPSJvdXRwdXQiPjwvZGl2PgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKLSAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwotICAgIH0KKyAgICBwcmVwYXJlVGVzdCgpOwogCiAgICAgZnVuY3Rp
b24gYWN0aXZhdGVFbGVtZW50KGVsZW1lbnRJRCkgewogICAgICAgICB2YXIgZWxlbWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJRCk7CkBAIC0yNCw3ICsyMiw3IEBACiAgICAg
ICAgICAgICB9LAogICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBQcm9taXNl
IHJlamVjdGVkLiI7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgKTsKICAgICB9CkBAIC0zNCw3ICszMiw3IEBACiAgICAgICAgICAgICBpZiAod2luZG93Lmxv
Y2F0aW9uLnNlYXJjaCA9PT0gIj9zdGVwVHdvIikgewogICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbigpOwogICAgICAgICAgICAgICAgIGRvY3VtZW50LmJv
ZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKSk7Ci0g
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAg
dGVhckRvd25BbmRGaW5pc2goKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgYWN0aXZhdGVFbGVtZW50KCJ0YXJnZXRMaW5rIik7CiAgICAgICAgICAgICB9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zdG9yZS1kaXNh
YmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zdG9yZS1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vz
c2lvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGUzM2I3NTcwYjgyYmY0MTc2M2RhZGMxZDUz
ZGU1NmRlMmMyMDA1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWRpc2FibGVkLWluLWVwaGVtZXJhbC1zZXNzaW9uLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3RzIHRoYXQgc3RvcmFnZSBvZiBhZCBjbGlj
ayBhdHRyaWJ1dGlvbiBpcyBkaXNhYmxlZCBpbiBlcGhlbWVyYWwgc2Vzc2lvbnMuCisKKworCitO
byBzdG9yZWQgQWQgQ2xpY2sgQXR0cmlidXRpb24gZGF0YS4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3N0b3JlLWRpc2FibGVkLWluLWVwaGVt
ZXJhbC1zZXNzaW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1
dGlvbi9zdG9yZS1kaXNhYmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY1NzVlNTFjZmZlZTZiMmI3OWQ4MThkMDQ5NzI3YWNjYjU5NjNkNGEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9zdG9yZS1kaXNh
YmxlZC1pbi1lcGhlbWVyYWwtc2Vzc2lvbi5odG1sCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQ
RSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1
ZSBpbnRlcm5hbDpBZENsaWNrQXR0cmlidXRpb25FbmFibGVkPXRydWUgXSAtLT4KKzxodG1sIGxh
bmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8bWV0YSBu
YW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxl
PTEsIHVzZXItc2NhbGFibGU9bm8iPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJj
ZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0
aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KHJ1blRl
c3QsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0cyB0aGF0IHN0b3JhZ2Ugb2YgYWQg
Y2xpY2sgYXR0cmlidXRpb24gaXMgZGlzYWJsZWQgaW4gZXBoZW1lcmFsIHNlc3Npb25zLjwvZGl2
PgorPGEgaWQ9InRhcmdldExpbmsiIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9hZENsaWNr
QXR0cmlidXRpb24vc3RvcmUtZGlzYWJsZWQtaW4tZXBoZW1lcmFsLXNlc3Npb24uaHRtbD9zdGVw
VHdvIiBhZGNhbXBhaWduaWQ9IjMiIGFkZGVzdGluYXRpb249Imh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MCI+TGluazwvYT48YnI+Cis8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgorPHNjcmlwdD4KKyAgICBw
cmVwYXJlVGVzdCgpOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQodHJ1ZSk7CisKKyAgICBmdW5jdGlvbiBh
Y3RpdmF0ZUVsZW1lbnQoZWxlbWVudElEKSB7CisgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElEKTsKKyAgICAgICAgdmFyIGNlbnRlclggPSBlbGVt
ZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAgICAgdmFyIGNl
bnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAg
ICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVuKAorICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0Iiku
aW5uZXJUZXh0ID0gIkZBSUwgUHJvbWlzZSByZWplY3RlZC4iOworICAgICAgICAgICAgICAgIHRl
YXJEb3duQW5kRmluaXNoKCk7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PT0gIj9zdGVwVHdvIikg
eworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbigpOwor
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRhcmdldExpbmsiKSk7CisgICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5p
c2goKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYWN0aXZhdGVFbGVt
ZW50KCJ0YXJnZXRMaW5rIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0gIkZB
SUwgTm8gdGVzdFJ1bm5lci4iOworICAgICAgICB9CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>