<?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>136878</bug_id>
          
          <creation_ts>2014-09-16 18:35:22 -0700</creation_ts>
          <short_desc>Introduce Promise A+ tests into WebKit</short_desc>
          <delta_ts>2014-10-03 19:41:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1035657</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2014-09-16 18:35:22 -0700</bug_when>
    <thetext>To ensure WebKit Promise stability, introducing Promise A+ tests[1] into WebKit.
It&apos;s also used to test V8 Promise[2].
So the tests guarantee that WebKit Promise&apos;s spec validity and interchangeability to the other browser&apos;s Promise implementation.

[1]: https://github.com/promises-aplus/promises-tests
[2]: https://code.google.com/p/v8/source/browse#svn%2Ftrunk%2Ftest%2Fpromises-aplus</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035904</commentid>
    <comment_count>1</comment_count>
      <attachid>238306</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2014-09-18 04:41:50 -0700</bug_when>
    <thetext>Created attachment 238306
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035905</commentid>
    <comment_count>2</comment_count>
      <attachid>238306</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2014-09-18 04:46:00 -0700</bug_when>
    <thetext>Comment on attachment 238306
Patch

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

&gt; LayoutTests/ChangeLog:23
&gt; +        So marked the test as a SLOW test.

I&apos;m not sure how to introduce the external code into WebKit. Added license files.
Sam, could you tell me the mannar to do it? I&apos;ll fix it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035979</commentid>
    <comment_count>3</comment_count>
      <attachid>238306</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2014-09-18 13:21:55 -0700</bug_when>
    <thetext>Comment on attachment 238306
Patch

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

&gt; LayoutTests/ChangeLog:17
&gt; +        So added SinonJS[4] and browserify&apos;s license files into the test directory.

As mentioned here, it uses browserify to transform Node.js style code into browser style code (using sync `require`).
Is it OK? I&apos;d like to hear your opinion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038406</commentid>
    <comment_count>4</comment_count>
      <attachid>238306</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-09-30 17:13:52 -0700</bug_when>
    <thetext>Comment on attachment 238306
Patch

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

&gt;&gt; LayoutTests/ChangeLog:23
&gt;&gt; +        So marked the test as a SLOW test.
&gt; 
&gt; I&apos;m not sure how to introduce the external code into WebKit. Added license files.
&gt; Sam, could you tell me the mannar to do it? I&apos;ll fix it :)

How slow is it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038614</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-10-01 12:35:26 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 238306 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238306&amp;action=review
&gt; 
&gt; &gt;&gt; LayoutTests/ChangeLog:23
&gt; &gt;&gt; +        So marked the test as a SLOW test.
&gt; &gt; 
&gt; &gt; I&apos;m not sure how to introduce the external code into WebKit. Added license files.
&gt; &gt; Sam, could you tell me the mannar to do it? I&apos;ll fix it :)
&gt; 
&gt; How slow is it?

Actually, can we split this into multiple tests so that each is not that slow? Otherwise, this all looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038615</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2014-10-01 12:36:28 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 238306 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238306&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; LayoutTests/ChangeLog:23
&gt; &gt; &gt;&gt; +        So marked the test as a SLOW test.
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;m not sure how to introduce the external code into WebKit. Added license files.
&gt; &gt; &gt; Sam, could you tell me the mannar to do it? I&apos;ll fix it :)
&gt; &gt; 
&gt; &gt; How slow is it?
&gt; 
&gt; Actually, can we split this into multiple tests so that each is not that slow? Otherwise, this all looks good.

Thank you for your review!
Maybe I think we can split it into several files. So I&apos;ll do so :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038861</commentid>
    <comment_count>7</comment_count>
      <attachid>239108</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2014-10-02 07:59:24 -0700</bug_when>
    <thetext>Created attachment 239108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038862</commentid>
    <comment_count>8</comment_count>
      <attachid>239108</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2014-10-02 08:03:26 -0700</bug_when>
    <thetext>Comment on attachment 239108
Patch

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

I&apos;ve updated the patch. In this patch, I&apos;ve splitted the whole test into per-file tests.

&gt; LayoutTests/ChangeLog:23
&gt; +        So mark it as a Slow test.

I&apos;ve splitted the whole tests into per file tests. So almost all tests become fast.
However, only tests-2-3-3 has a lot of test cases and it sometimes exceeds the time limit.
For example, in my environment (GTK debug build on Ubuntu 14.04), it takes about 13s.
So marked it as a Slow test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039432</commentid>
    <comment_count>9</comment_count>
      <attachid>239108</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-03 19:41:49 -0700</bug_when>
    <thetext>Comment on attachment 239108
Patch

Clearing flags on attachment: 239108

Committed r174307: &lt;http://trac.webkit.org/changeset/174307&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039433</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-03 19:41:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238306</attachid>
            <date>2014-09-18 04:41:50 -0700</date>
            <delta_ts>2014-10-02 07:59:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136878-20140918204220.patch</filename>
            <type>text/plain</type>
            <size>849708</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNzE3CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTdlYmI4NzEyZTM3NDVkNmExYTQ2
YTc3MWMyNTFmZmY4MmVkN2MxZi4uZmJmYzEwMmQwOTNhOTY3YmQwZDk3ZTc2Y2IxYWMzNjNiMDIw
NmYxMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxNC0wOS0xOCAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgUHJvbWlzZSBBKyB0
ZXN0cyBpbnRvIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM2ODc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVG8gZW5zdXJlIFdlYktpdCBQcm9taXNlIHN0YWJpbGl0eSwgaW50cm9kdWNpbmcg
UHJvbWlzZSBBKyB0ZXN0c1sxXSBpbnRvIFdlYktpdC4KKyAgICAgICAgSXQncyBhbHNvIHVzZWQg
dG8gdGVzdCBWOCBQcm9taXNlWzJdLgorICAgICAgICBTbyB0aGUgdGVzdHMgZ3VhcmFudGVlIHRo
YXQgV2ViS2l0IFByb21pc2UncyBzcGVjIHZhbGlkaXR5IGFuZCBpbnRlcmNoYW5nZWFiaWxpdHkK
KyAgICAgICAgdG8gdGhlIG90aGVyIGJyb3dzZXIncyBQcm9taXNlIGltcGxlbWVudGF0aW9uLgor
CisgICAgICAgIFByb21pc2UgQSsgdGVzdHMgYXNzdW1lIHRoYXQgaXQgd29ya3Mgb24gdGhlIE5v
ZGUuanMgZW52aXJvbm1lbnQuIFRvIHdvcmsgaXQgb24KKyAgICAgICAgTGF5b3V0VGVzdHMgY29y
cmVjdGx5LCB3ZSBuZWVkIHRvIHRyYW5zZm9ybSBOb2RlLmpzIHN0eWxlZCBKYXZhU2NyaXB0IGNv
ZGUgaW50bworICAgICAgICBicm93c2VyIHN0eWxlZCBjb2RlLiBJbiB0aGlzIHBhdGNoLCB3ZSB1
c2UgYnJvd3NlcmlmeVszXSB0byB0cmFuc2Zvcm0gdGhlIHRlc3QgY29kZS4KKyAgICAgICAgVGhy
b3VnaCB0cmFuc2Zvcm1pbmcgcGlwZWxpbmUsIHNvbWUgZGVwZW5kZW50IEpTIGNvZGUgaXMgYnVu
ZGxlZCBpbnRvIHRoZSBwcm9kdWNlZCBjb2RlLgorICAgICAgICBTbyBhZGRlZCBTaW5vbkpTWzRd
IGFuZCBicm93c2VyaWZ5J3MgbGljZW5zZSBmaWxlcyBpbnRvIHRoZSB0ZXN0IGRpcmVjdG9yeS4K
KworICAgICAgICBBbmQgdGVzdHMgYXNzdW1lIHRoYXQgaXQgaXMgdXNlZCB3aXRoIE1vY2hhWzVd
IHRlc3QgcnVubmVyLiBTbyBpbnRyb2R1Y2luZyBtb2NoYS5qcyBhbmQKKyAgICAgICAgYWRkZWQg
TElDRU5TRSBmaWxlIGludG8gdGhpcyBkaXJlY3RvcnkuCisKKyAgICAgICAgQW5kIHNpbmNlIHBy
b21pc2VzLXRlc3RzLmh0bWwgZXhlY3V0ZXMgYWxsIHByb21pc2VzIHRlc3RzLCBpdCBjb25zdW1l
cyBtdWNoIHRpbWUuCisgICAgICAgIFNvIG1hcmtlZCB0aGUgdGVzdCBhcyBhIFNMT1cgdGVzdC4K
KworICAgICAgICBbMV06IGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9taXNlcy1hcGx1cy9wcm9taXNl
cy10ZXN0cworICAgICAgICBbMl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3Avdjgvc291cmNl
L2Jyb3dzZSNzdm4lMkZ0cnVuayUyRnRlc3QlMkZwcm9taXNlcy1hcGx1cworICAgICAgICBbM106
IGh0dHA6Ly9icm93c2VyaWZ5Lm9yZy8KKyAgICAgICAgWzRdOiBodHRwOi8vc2lub25qcy5vcmcv
CisgICAgICAgIFs1XTogaHR0cDovL3Zpc2lvbm1lZGlhLmdpdGh1Yi5pby9tb2NoYS8KKworICAg
ICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICoganMvcHJvbWlzZXMtdGVzdHMvUkVB
RE1FOiBBZGRlZC4KKyAgICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9icm93c2VyaWZ5LWVudHJ5
LXBvaW50LmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9icm93c2VyaWZ5
LkxJQ0VOU0U6IEFkZGVkLgorICAgICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL21vY2hhLkxJQ0VO
U0U6IEFkZGVkLgorICAgICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMt
dGVzdHMuTElDRU5TRTogQWRkZWQuCisgICAgICAgICoganMvcHJvbWlzZXMtdGVzdHMvcHJvbWlz
ZXMtdGVzdHMuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcHJvbWlzZXMtdGVzdHMvcHJvbWlz
ZXMtdGVzdHMuanM6IEFkZGVkLgorICAgICAgICAoLik6CisgICAgICAgICoganMvcHJvbWlzZXMt
dGVzdHMvcHJvbWlzZXMtdGVzdHMvLmdpdGlnbm9yZTogQWRkZWQuCisgICAgICAgICoganMvcHJv
bWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvLmpzaGludHJjOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy8ubnBtaWdub3JlOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9MSUNFTlNFLnR4dDogQWRkZWQu
CisgICAgICAgICoganMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvUkVBRE1FLm1kOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvY2xp
LmpzOiBBZGRlZC4KKyAgICAgICAgKGdldEFkYXB0ZXJGaWxlUGF0aCk6CisgICAgICAgIChhZGFw
dGVyT2JqZWN0RnJvbUZpbGVQYXRoKToKKyAgICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9t
aXNlcy10ZXN0cy9saWIvZ2V0TW9jaGFPcHRzLmpzOiBBZGRlZC4KKyAgICAgICAgKG1vZHVsZS5l
eHBvcnRzKToKKyAgICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIv
cHJvZ3JhbW1hdGljUnVubmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKG5vcm1hbGl6ZUFkYXB0ZXIu
YWRhcHRlci5yZXNvbHZlZCk6CisgICAgICAgIChub3JtYWxpemVBZGFwdGVyLmFkYXB0ZXIucmVq
ZWN0ZWQpOgorICAgICAgICAobm9ybWFsaXplQWRhcHRlcik6CisgICAgICAgICguY2IpOgorICAg
ICAgICAoLik6CisgICAgICAgIChtb2R1bGUuZXhwb3J0cyk6CisgICAgICAgIChtb2R1bGUuZXhw
b3J0cy5tb2NoYSk6CisgICAgICAgICoganMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMv
bGliL3Rlc3RzLzIuMS4yLmpzOiBBZGRlZC4KKyAgICAgICAgKC4pOgorICAgICAgICAqIGpzL3By
b21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjEuMy5qczogQWRkZWQuCisg
ICAgICAgICguKToKKyAgICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9s
aWIvdGVzdHMvMi4yLjEuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL3By
b21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjIuMi5qczogQWRkZWQuCisgICAgICAgICguKToKKyAg
ICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4yLjMu
anM6IEFkZGVkLgorICAgICAgICAoLik6CisgICAgICAgICoganMvcHJvbWlzZXMtdGVzdHMvcHJv
bWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi40LmpzOiBBZGRlZC4KKyAgICAgICAgKC4pOgorICAg
ICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjIuNS5q
czogQWRkZWQuCisgICAgICAgICoganMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGli
L3Rlc3RzLzIuMi42LmpzOiBBZGRlZC4KKyAgICAgICAgKC5yZXR1cm4uaWYpOgorICAgICAgICAo
Y2FsbGJhY2tBZ2dyZWdhdG9yKToKKyAgICAgICAgKC4pOgorICAgICAgICAqIGpzL3Byb21pc2Vz
LXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjIuNy5qczogQWRkZWQuCisgICAgICAg
ICguKToKKyAgICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVz
dHMvMi4zLjEuanM6IEFkZGVkLgorICAgICAgICAoLik6CisgICAgICAgICoganMvcHJvbWlzZXMt
dGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMy4yLmpzOiBBZGRlZC4KKyAgICAgICAg
KC4pOgorICAgICAgICAodGVzdFByb21pc2VSZXNvbHV0aW9uKToKKyAgICAgICAgKiBqcy9wcm9t
aXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4zLjMuanM6IEFkZGVkLgorICAg
ICAgICAoLik6CisgICAgICAgICh0ZXN0UHJvbWlzZVJlc29sdXRpb24pOgorICAgICAgICAodGVz
dENhbGxpbmdSZXNvbHZlUHJvbWlzZVJlamVjdHNXaXRoKToKKyAgICAgICAgKHRlc3RDYWxsaW5n
UmVqZWN0UHJvbWlzZVJlamVjdHNXaXRoKToKKyAgICAgICAgKGRlc2NyaWJlKToKKyAgICAgICAg
KiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4zLjQuanM6IEFk
ZGVkLgorICAgICAgICAoLik6CisgICAgICAgICoganMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMt
dGVzdHMvbGliL3Rlc3RzL2hlbHBlcnMvcmVhc29ucy5qczogQWRkZWQuCisgICAgICAgIChleHBv
cnRzLnN0cmluZ19hcHBlYXJlZF9oZXJlKToKKyAgICAgICAgKGV4cG9ydHMuc3RyaW5nX2FwcGVh
cmVkX2hlcmUucmV0dXJuLnRoZW4pOgorICAgICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL3Byb21p
c2VzLXRlc3RzL2xpYi90ZXN0cy9oZWxwZXJzL3Rlc3RUaHJlZUNhc2VzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKC5zcGVjaWZ5KToKKyAgICAgICAgKC4pOgorICAgICAgICAoZXhwb3J0cy50ZXN0RnVs
ZmlsbGVkKToKKyAgICAgICAgKGV4cG9ydHMudGVzdFJlamVjdGVkKToKKyAgICAgICAgKiBqcy9w
cm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvaGVscGVycy90aGVuYWJsZXMu
anM6IEFkZGVkLgorICAgICAgICAoZXhwb3J0cy5mdWxmaWxsZWQuc3RyaW5nX2FwcGVhcmVkX2hl
cmUucmV0dXJuLnRoZW4pOgorICAgICAgICAoZXhwb3J0cy5mdWxmaWxsZWQuc3RyaW5nX2FwcGVh
cmVkX2hlcmUpOgorICAgICAgICAoZXhwb3J0cy5mdWxmaWxsZWQuc3RyaW5nX2FwcGVhcmVkX2hl
cmUuKToKKyAgICAgICAgKGV4cG9ydHMuZnVsZmlsbGVkLmdldCBzdHJpbmdfYXBwZWFyZWRfaGVy
ZS5yZXR1cm4udGhlbik6CisgICAgICAgIChleHBvcnRzLmZ1bGZpbGxlZC5nZXQgc3RyaW5nX2Fw
cGVhcmVkX2hlcmUpOgorICAgICAgICAoZXhwb3J0cy5yZWplY3RlZC5zdHJpbmdfYXBwZWFyZWRf
aGVyZS5yZXR1cm4udGhlbik6CisgICAgICAgIChleHBvcnRzLnJlamVjdGVkLnN0cmluZ19hcHBl
YXJlZF9oZXJlKToKKyAgICAgICAgKGV4cG9ydHMucmVqZWN0ZWQuc3RyaW5nX2FwcGVhcmVkX2hl
cmUuKToKKyAgICAgICAgKGV4cG9ydHMucmVqZWN0ZWQuZ2V0IHN0cmluZ19hcHBlYXJlZF9oZXJl
LnJldHVybi50aGVuKToKKyAgICAgICAgKGV4cG9ydHMucmVqZWN0ZWQuZ2V0IHN0cmluZ19hcHBl
YXJlZF9oZXJlKToKKyAgICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9w
YWNrYWdlLmpzb246IEFkZGVkLgorICAgICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL3Byb21pc2Vz
LXRlc3RzL3Rlc3QvZ2V0TW9jaGFPcHRzVGVzdC5qczogQWRkZWQuCisgICAgICAgICoganMvcHJv
bWlzZXMtdGVzdHMvcmVzb3VyY2VzL21vY2hhLmpzOiBBZGRlZC4KKyAgICAgICAgKC4pOgorICAg
ICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL3Npbm9uanMuTElDRU5TRTogQWRkZWQuCisKIDIwMTQt
MDktMTcgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2lu
ZG93c10gVW5yZXZpZXdlZCByZWJhc2VsaW5pbmcgb2Ygc29tZSBmYWlsaW5nIEpTIHRlc3RzLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggZDU5NjY0MDM0OTNlOGNhNDg1ZmZlZTc4YTAwNGMwZjg3NGIw
NTM2Ni4uMzYzNDI4ZGY3YzU1YjE4NGYwZmE2NDcyYzc3N2VjMjVjZjFmYzU3ZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCkBAIC0xOTYsMyArMTk2LDYgQEAgd2Via2l0Lm9yZy9iLzEzNjc1NCBjc3MzL2Zs
ZXhib3gvY3Nzd2cvdHR3Zi1yZWZ0ZXN0LWZsZXgtaW5saW5lLmh0bWwgWyBJbWFnZU9ubHkKIHdl
YmtpdC5vcmcvYi8xMzY3NTQgY3NzMy9mbGV4Ym94L2Nzc3dnL3R0d2YtcmVmdGVzdC1mbGV4LW9y
ZGVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMzY3NTQgY3NzMy9m
bGV4Ym94L2Nzc3dnL3R0d2YtcmVmdGVzdC1mbGV4LXdyYXAtcmV2ZXJzZS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTM2NzU0IGNzczMvZmxleGJveC9jc3N3Zy90dHdm
LXJlZnRlc3QtZmxleC13cmFwLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KKworIyBQcm9taXNl
IFN1aXRlIGlzIGxhcmdlIGFuZCBzbG93Cit3ZWJraXQub3JnL2IvMTM2ODc4IGpzL3Byb21pc2Vz
LXRlc3RzL3Byb21pc2VzLXRlc3RzLmh0bWwgWyBTbG93IF0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL3Byb21pc2VzLXRlc3RzL1JFQURNRSBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRl
c3RzL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDMyODM0MDQwMjNhY2ZkYjRkYzJkZmQ0YmJhNGEzYjYw
NjEzNDNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMv
UkVBRE1FCkBAIC0wLDAgKzEsMjggQEAKK1RoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBjb250
ZW50cyBvZiBQcm9taXNlIEErIHRlc3RzIDIuMC41WzFdIHBvcnRlZCBpbnRvIFdlYktpdC4KK1Rv
IHVzZSB0aGlzIHRlc3RzIGluc2lkZSBXZWJLaXQgTGF5b3V0VGVzdHMsIHdlIHN1ZSBicm93c2Vy
aWZ5IHRvIGdlbmVyYXRlIGBwcm9taXNlLXRlc3RzLmpzYC4KKworQWRkaXRpb25hbGx5LCB0aGlz
IGRpcmVjdG9yeSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbnRlbnRzLgorCistIHByb21pc2Vz
LXRlc3RzCisKK3Byb21pc2VzLXRlc3RzIGlzIFByb21pc2UgQSsgdGVzdCBzdWl0ZS4gSXQgYXNz
dW1lcyB0aGF0IGl0IHdvcmtzIG9uIHRoZSBOb2RlLmpzIGVudmlyb25tZW50LgorVG8gdXNlIGl0
IGluIExheW91dFRlc3RzLCB3ZSB1c2UgYnJvd3NlcmlmeSB0byB0cmFuc2Zvcm0gTm9kZS5qcyBz
dHlsZWQgSlMgY29kZSB0bworYnJvd3NlciBzdHlsZWQgSlMgY29kZS4KKworLSBtb2NoYQorCitN
b2NoYVsyXSBpcyBhIHRlc3QgcnVubmVyIHVzZWQgaW4gdGhlIHByb21pc2UtdGVzdHMuIFRoaXMg
ZGlyZWN0b3J5IGNvbnRhaW5zIG1vY2hhLmpzCitmb3IgYnJvd3NlciBlbnZpcm9ubWVudCBpbiBy
ZXNvdXJjZS9tb2NoYS5qcyAodmVyc2lvbiAxLjIxLjQpLgorCistIGJyb3dzZXJpZnkKKworcHJv
bWlzZS10ZXN0cy5qcyBpcyBnZW5lcmF0ZWQgYnkgYnJvd3NlcmlmeVszXSwgZm9sbG93aW5nIGlu
c3RydWN0aW9ucy4KKworMS4gY2QgcHJvbWlzZS10ZXN0cworMi4gbnBtIGluc3RhbGwKKzMuIGNk
IC4uLworNC4gYnJvd3NlcmlmeSBicm93c2VyaWZ5LWVudHJ5LXBvaW50LmpzIC1vIHByb21pc2Vz
LXRlc3RzLmpzCisKK1sxXTogaHR0cHM6Ly9naXRodWIuY29tL3Byb21pc2VzLWFwbHVzL3Byb21p
c2VzLXRlc3RzCitbMl06IGh0dHA6Ly92aXNpb25tZWRpYS5naXRodWIuaW8vbW9jaGEvCitbM106
IGh0dHA6Ly9icm93c2VyaWZ5Lm9yZy8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Byb21p
c2VzLXRlc3RzL2Jyb3dzZXJpZnktZW50cnktcG9pbnQuanMgYi9MYXlvdXRUZXN0cy9qcy9wcm9t
aXNlcy10ZXN0cy9icm93c2VyaWZ5LWVudHJ5LXBvaW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyMGE4NGQy
YWQ1N2RkYjg5YmJhZjM3OTNiM2RkNWQ2YzM0ZGQxNDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9icm93c2VyaWZ5LWVudHJ5LXBvaW50LmpzCkBAIC0w
LDAgKzEsNDAgQEAKKy8qCisgIENvcHlyaWdodCAoQykgMjAxNCBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Ogor
CisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisKKyAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIDxDT1BZUklHSFQgSE9MREVSPiBCRSBMSUFCTEUgRk9SIEFOWQorICBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisK
KyhmdW5jdGlvbiAoKSB7CisgICAgJ3VzZSBzdHJpY3QnOworICAgIHJlcXVpcmUoJy4vcHJvbWlz
ZXMtdGVzdHMvbGliL3Rlc3RzLzIuMS4yJyk7CisgICAgcmVxdWlyZSgnLi9wcm9taXNlcy10ZXN0
cy9saWIvdGVzdHMvMi4xLjMnKTsKKyAgICByZXF1aXJlKCcuL3Byb21pc2VzLXRlc3RzL2xpYi90
ZXN0cy8yLjIuMScpOworICAgIHJlcXVpcmUoJy4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIu
Mi4yJyk7CisgICAgcmVxdWlyZSgnLi9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4yLjMnKTsK
KyAgICByZXF1aXJlKCcuL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjIuNCcpOworICAgIHJl
cXVpcmUoJy4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi41Jyk7CisgICAgcmVxdWlyZSgn
Li9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4yLjYnKTsKKyAgICByZXF1aXJlKCcuL3Byb21p
c2VzLXRlc3RzL2xpYi90ZXN0cy8yLjIuNycpOworICAgIHJlcXVpcmUoJy4vcHJvbWlzZXMtdGVz
dHMvbGliL3Rlc3RzLzIuMy4xJyk7CisgICAgcmVxdWlyZSgnLi9wcm9taXNlcy10ZXN0cy9saWIv
dGVzdHMvMi4zLjInKTsKKyAgICByZXF1aXJlKCcuL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8y
LjMuMycpOworICAgIHJlcXVpcmUoJy4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMy40Jyk7
Cit9KCkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvYnJvd3Nl
cmlmeS5MSUNFTlNFIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvYnJvd3NlcmlmeS5M
SUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQwMzI4MzQwNDAyM2FjZmRiNGRjMmRmZDRiYmE0YTNiNjA2MTM0
M2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9icm93
c2VyaWZ5LkxJQ0VOU0UKQEAgLTAsMCArMSwyOCBAQAorVGhpcyBkaXJlY3RvcnkgY29udGFpbnMg
dGhlIGNvbnRlbnRzIG9mIFByb21pc2UgQSsgdGVzdHMgMi4wLjVbMV0gcG9ydGVkIGludG8gV2Vi
S2l0LgorVG8gdXNlIHRoaXMgdGVzdHMgaW5zaWRlIFdlYktpdCBMYXlvdXRUZXN0cywgd2Ugc3Vl
IGJyb3dzZXJpZnkgdG8gZ2VuZXJhdGUgYHByb21pc2UtdGVzdHMuanNgLgorCitBZGRpdGlvbmFs
bHksIHRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgY29udGVudHMuCisKKy0g
cHJvbWlzZXMtdGVzdHMKKworcHJvbWlzZXMtdGVzdHMgaXMgUHJvbWlzZSBBKyB0ZXN0IHN1aXRl
LiBJdCBhc3N1bWVzIHRoYXQgaXQgd29ya3Mgb24gdGhlIE5vZGUuanMgZW52aXJvbm1lbnQuCitU
byB1c2UgaXQgaW4gTGF5b3V0VGVzdHMsIHdlIHVzZSBicm93c2VyaWZ5IHRvIHRyYW5zZm9ybSBO
b2RlLmpzIHN0eWxlZCBKUyBjb2RlIHRvCiticm93c2VyIHN0eWxlZCBKUyBjb2RlLgorCistIG1v
Y2hhCisKK01vY2hhWzJdIGlzIGEgdGVzdCBydW5uZXIgdXNlZCBpbiB0aGUgcHJvbWlzZS10ZXN0
cy4gVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgbW9jaGEuanMKK2ZvciBicm93c2VyIGVudmlyb25t
ZW50IGluIHJlc291cmNlL21vY2hhLmpzICh2ZXJzaW9uIDEuMjEuNCkuCisKKy0gYnJvd3Nlcmlm
eQorCitwcm9taXNlLXRlc3RzLmpzIGlzIGdlbmVyYXRlZCBieSBicm93c2VyaWZ5WzNdLCBmb2xs
b3dpbmcgaW5zdHJ1Y3Rpb25zLgorCisxLiBjZCBwcm9taXNlLXRlc3RzCisyLiBucG0gaW5zdGFs
bAorMy4gY2QgLi4vCis0LiBicm93c2VyaWZ5IGJyb3dzZXJpZnktZW50cnktcG9pbnQuanMgLW8g
cHJvbWlzZXMtdGVzdHMuanMKKworWzFdOiBodHRwczovL2dpdGh1Yi5jb20vcHJvbWlzZXMtYXBs
dXMvcHJvbWlzZXMtdGVzdHMKK1syXTogaHR0cDovL3Zpc2lvbm1lZGlhLmdpdGh1Yi5pby9tb2No
YS8KK1szXTogaHR0cDovL2Jyb3dzZXJpZnkub3JnLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvcHJvbWlzZXMtdGVzdHMvbW9jaGEuTElDRU5TRSBiL0xheW91dFRlc3RzL2pzL3Byb21pc2Vz
LXRlc3RzL21vY2hhLkxJQ0VOU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWM1ZDdmYTg3MzY2N2ZjNTM2YzliNWJh
NzFkZTYyNzY3NGUxNGViZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21p
c2VzLXRlc3RzL21vY2hhLkxJQ0VOU0UKQEAgLTAsMCArMSwyMiBAQAorKFRoZSBNSVQgTGljZW5z
ZSkKKworQ29weXJpZ2h0IChjKSAyMDExLTIwMTQgVEogSG9sb3dheWNodWsgPHRqQHZpc2lvbi1t
ZWRpYS5jYT4KKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us
IHRvIGFueSBwZXJzb24gb2J0YWluaW5nCithIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz
b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKydTb2Z0d2FyZScpLCB0byBkZWFsIGlu
IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKK3dpdGhvdXQgbGlt
aXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwK
K2Rpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh
cmUsIGFuZCB0bworcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlz
aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCit0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1Ro
ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxs
IGJlCitpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo
ZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICdBUyBJUycsIFdJVEhPVVQg
V0FSUkFOVFkgT0YgQU5ZIEtJTkQsCitFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQg
Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKK01FUkNIQU5UQUJJTElUWSwgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KK0lOIE5PIEVW
RU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1Ig
QU5ZCitDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU
SU9OIE9GIENPTlRSQUNULAorVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9G
IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKK1NPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg
REVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJv
bWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMv
cHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZi
NTg1ZTk1OTBhOTYyNjQ0MTQzZmI2ZGRjZjQzMTQ2MTkxZWJlNmQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw4ODAgQEAKK1Rlc3QgUHJvbWlzZSB3aXRoIFByb21pc2UgQSsgdGVzdCBz
dWl0ZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIDIuMS4yLjE6IFdoZW4g
ZnVsZmlsbGVkLCBhIHByb21pc2U6IG11c3Qgbm90IHRyYW5zaXRpb24gdG8gYW55IG90aGVyIHN0
YXRlLiBhbHJlYWR5LWZ1bGZpbGxlZAorUEFTUyAyLjEuMi4xOiBXaGVuIGZ1bGZpbGxlZCwgYSBw
cm9taXNlOiBtdXN0IG5vdCB0cmFuc2l0aW9uIHRvIGFueSBvdGhlciBzdGF0ZS4gaW1tZWRpYXRl
bHktZnVsZmlsbGVkCitQQVNTIDIuMS4yLjE6IFdoZW4gZnVsZmlsbGVkLCBhIHByb21pc2U6IG11
c3Qgbm90IHRyYW5zaXRpb24gdG8gYW55IG90aGVyIHN0YXRlLiBldmVudHVhbGx5LWZ1bGZpbGxl
ZAorUEFTUyAyLjEuMi4xOiBXaGVuIGZ1bGZpbGxlZCwgYSBwcm9taXNlOiBtdXN0IG5vdCB0cmFu
c2l0aW9uIHRvIGFueSBvdGhlciBzdGF0ZS4gdHJ5aW5nIHRvIGZ1bGZpbGwgdGhlbiBpbW1lZGlh
dGVseSByZWplY3QKK1BBU1MgMi4xLjIuMTogV2hlbiBmdWxmaWxsZWQsIGEgcHJvbWlzZTogbXVz
dCBub3QgdHJhbnNpdGlvbiB0byBhbnkgb3RoZXIgc3RhdGUuIHRyeWluZyB0byBmdWxmaWxsIHRo
ZW4gcmVqZWN0LCBkZWxheWVkCitQQVNTIDIuMS4yLjE6IFdoZW4gZnVsZmlsbGVkLCBhIHByb21p
c2U6IG11c3Qgbm90IHRyYW5zaXRpb24gdG8gYW55IG90aGVyIHN0YXRlLiB0cnlpbmcgdG8gZnVs
ZmlsbCBpbW1lZGlhdGVseSB0aGVuIHJlamVjdCBkZWxheWVkCitQQVNTIDIuMS4zLjE6IFdoZW4g
cmVqZWN0ZWQsIGEgcHJvbWlzZTogbXVzdCBub3QgdHJhbnNpdGlvbiB0byBhbnkgb3RoZXIgc3Rh
dGUuIGFscmVhZHktcmVqZWN0ZWQKK1BBU1MgMi4xLjMuMTogV2hlbiByZWplY3RlZCwgYSBwcm9t
aXNlOiBtdXN0IG5vdCB0cmFuc2l0aW9uIHRvIGFueSBvdGhlciBzdGF0ZS4gaW1tZWRpYXRlbHkt
cmVqZWN0ZWQKK1BBU1MgMi4xLjMuMTogV2hlbiByZWplY3RlZCwgYSBwcm9taXNlOiBtdXN0IG5v
dCB0cmFuc2l0aW9uIHRvIGFueSBvdGhlciBzdGF0ZS4gZXZlbnR1YWxseS1yZWplY3RlZAorUEFT
UyAyLjEuMy4xOiBXaGVuIHJlamVjdGVkLCBhIHByb21pc2U6IG11c3Qgbm90IHRyYW5zaXRpb24g
dG8gYW55IG90aGVyIHN0YXRlLiB0cnlpbmcgdG8gcmVqZWN0IHRoZW4gaW1tZWRpYXRlbHkgZnVs
ZmlsbAorUEFTUyAyLjEuMy4xOiBXaGVuIHJlamVjdGVkLCBhIHByb21pc2U6IG11c3Qgbm90IHRy
YW5zaXRpb24gdG8gYW55IG90aGVyIHN0YXRlLiB0cnlpbmcgdG8gcmVqZWN0IHRoZW4gZnVsZmls
bCwgZGVsYXllZAorUEFTUyAyLjEuMy4xOiBXaGVuIHJlamVjdGVkLCBhIHByb21pc2U6IG11c3Qg
bm90IHRyYW5zaXRpb24gdG8gYW55IG90aGVyIHN0YXRlLiB0cnlpbmcgdG8gcmVqZWN0IGltbWVk
aWF0ZWx5IHRoZW4gZnVsZmlsbCBkZWxheWVkCitQQVNTIDIuMi4xOiBCb3RoIGBvbkZ1bGZpbGxl
ZGAgYW5kIGBvblJlamVjdGVkYCBhcmUgb3B0aW9uYWwgYXJndW1lbnRzLiAyLjIuMS4xOiBJZiBg
b25GdWxmaWxsZWRgIGlzIG5vdCBhIGZ1bmN0aW9uLCBpdCBtdXN0IGJlIGlnbm9yZWQuIGFwcGxp
ZWQgdG8gYSBkaXJlY3RseS1yZWplY3RlZCBwcm9taXNlIGBvbkZ1bGZpbGxlZGAgaXMgYHVuZGVm
aW5lZGAKK1BBU1MgMi4yLjE6IEJvdGggYG9uRnVsZmlsbGVkYCBhbmQgYG9uUmVqZWN0ZWRgIGFy
ZSBvcHRpb25hbCBhcmd1bWVudHMuIDIuMi4xLjE6IElmIGBvbkZ1bGZpbGxlZGAgaXMgbm90IGEg
ZnVuY3Rpb24sIGl0IG11c3QgYmUgaWdub3JlZC4gYXBwbGllZCB0byBhIGRpcmVjdGx5LXJlamVj
dGVkIHByb21pc2UgYG9uRnVsZmlsbGVkYCBpcyBgbnVsbGAKK1BBU1MgMi4yLjE6IEJvdGggYG9u
RnVsZmlsbGVkYCBhbmQgYG9uUmVqZWN0ZWRgIGFyZSBvcHRpb25hbCBhcmd1bWVudHMuIDIuMi4x
LjE6IElmIGBvbkZ1bGZpbGxlZGAgaXMgbm90IGEgZnVuY3Rpb24sIGl0IG11c3QgYmUgaWdub3Jl
ZC4gYXBwbGllZCB0byBhIGRpcmVjdGx5LXJlamVjdGVkIHByb21pc2UgYG9uRnVsZmlsbGVkYCBp
cyBgZmFsc2VgCitQQVNTIDIuMi4xOiBCb3RoIGBvbkZ1bGZpbGxlZGAgYW5kIGBvblJlamVjdGVk
YCBhcmUgb3B0aW9uYWwgYXJndW1lbnRzLiAyLjIuMS4xOiBJZiBgb25GdWxmaWxsZWRgIGlzIG5v
dCBhIGZ1bmN0aW9uLCBpdCBtdXN0IGJlIGlnbm9yZWQuIGFwcGxpZWQgdG8gYSBkaXJlY3RseS1y
ZWplY3RlZCBwcm9taXNlIGBvbkZ1bGZpbGxlZGAgaXMgYDVgCitQQVNTIDIuMi4xOiBCb3RoIGBv
bkZ1bGZpbGxlZGAgYW5kIGBvblJlamVjdGVkYCBhcmUgb3B0aW9uYWwgYXJndW1lbnRzLiAyLjIu
MS4xOiBJZiBgb25GdWxmaWxsZWRgIGlzIG5vdCBhIGZ1bmN0aW9uLCBpdCBtdXN0IGJlIGlnbm9y
ZWQuIGFwcGxpZWQgdG8gYSBkaXJlY3RseS1yZWplY3RlZCBwcm9taXNlIGBvbkZ1bGZpbGxlZGAg
aXMgYW4gb2JqZWN0CitQQVNTIDIuMi4xOiBCb3RoIGBvbkZ1bGZpbGxlZGAgYW5kIGBvblJlamVj
dGVkYCBhcmUgb3B0aW9uYWwgYXJndW1lbnRzLiAyLjIuMS4xOiBJZiBgb25GdWxmaWxsZWRgIGlz
IG5vdCBhIGZ1bmN0aW9uLCBpdCBtdXN0IGJlIGlnbm9yZWQuIGFwcGxpZWQgdG8gYSBwcm9taXNl
IHJlamVjdGVkIGFuZCB0aGVuIGNoYWluZWQgb2ZmIG9mIGBvbkZ1bGZpbGxlZGAgaXMgYHVuZGVm
aW5lZGAKK1BBU1MgMi4yLjE6IEJvdGggYG9uRnVsZmlsbGVkYCBhbmQgYG9uUmVqZWN0ZWRgIGFy
ZSBvcHRpb25hbCBhcmd1bWVudHMuIDIuMi4xLjE6IElmIGBvbkZ1bGZpbGxlZGAgaXMgbm90IGEg
ZnVuY3Rpb24sIGl0IG11c3QgYmUgaWdub3JlZC4gYXBwbGllZCB0byBhIHByb21pc2UgcmVqZWN0
ZWQgYW5kIHRoZW4gY2hhaW5lZCBvZmYgb2YgYG9uRnVsZmlsbGVkYCBpcyBgbnVsbGAKK1BBU1Mg
Mi4yLjE6IEJvdGggYG9uRnVsZmlsbGVkYCBhbmQgYG9uUmVqZWN0ZWRgIGFyZSBvcHRpb25hbCBh
cmd1bWVudHMuIDIuMi4xLjE6IElmIGBvbkZ1bGZpbGxlZGAgaXMgbm90IGEgZnVuY3Rpb24sIGl0
IG11c3QgYmUgaWdub3JlZC4gYXBwbGllZCB0byBhIHByb21pc2UgcmVqZWN0ZWQgYW5kIHRoZW4g
Y2hhaW5lZCBvZmYgb2YgYG9uRnVsZmlsbGVkYCBpcyBgZmFsc2VgCitQQVNTIDIuMi4xOiBCb3Ro
IGBvbkZ1bGZpbGxlZGAgYW5kIGBvblJlamVjdGVkYCBhcmUgb3B0aW9uYWwgYXJndW1lbnRzLiAy
LjIuMS4xOiBJZiBgb25GdWxmaWxsZWRgIGlzIG5vdCBhIGZ1bmN0aW9uLCBpdCBtdXN0IGJlIGln
bm9yZWQuIGFwcGxpZWQgdG8gYSBwcm9taXNlIHJlamVjdGVkIGFuZCB0aGVuIGNoYWluZWQgb2Zm
IG9mIGBvbkZ1bGZpbGxlZGAgaXMgYDVgCitQQVNTIDIuMi4xOiBCb3RoIGBvbkZ1bGZpbGxlZGAg
YW5kIGBvblJlamVjdGVkYCBhcmUgb3B0aW9uYWwgYXJndW1lbnRzLiAyLjIuMS4xOiBJZiBgb25G
dWxmaWxsZWRgIGlzIG5vdCBhIGZ1bmN0aW9uLCBpdCBtdXN0IGJlIGlnbm9yZWQuIGFwcGxpZWQg
dG8gYSBwcm9taXNlIHJlamVjdGVkIGFuZCB0aGVuIGNoYWluZWQgb2ZmIG9mIGBvbkZ1bGZpbGxl
ZGAgaXMgYW4gb2JqZWN0CitQQVNTIDIuMi4xOiBCb3RoIGBvbkZ1bGZpbGxlZGAgYW5kIGBvblJl
amVjdGVkYCBhcmUgb3B0aW9uYWwgYXJndW1lbnRzLiAyLjIuMS4yOiBJZiBgb25SZWplY3RlZGAg
aXMgbm90IGEgZnVuY3Rpb24sIGl0IG11c3QgYmUgaWdub3JlZC4gYXBwbGllZCB0byBhIGRpcmVj
dGx5LWZ1bGZpbGxlZCBwcm9taXNlIGBvblJlamVjdGVkYCBpcyBgdW5kZWZpbmVkYAorUEFTUyAy
LjIuMTogQm90aCBgb25GdWxmaWxsZWRgIGFuZCBgb25SZWplY3RlZGAgYXJlIG9wdGlvbmFsIGFy
Z3VtZW50cy4gMi4yLjEuMjogSWYgYG9uUmVqZWN0ZWRgIGlzIG5vdCBhIGZ1bmN0aW9uLCBpdCBt
dXN0IGJlIGlnbm9yZWQuIGFwcGxpZWQgdG8gYSBkaXJlY3RseS1mdWxmaWxsZWQgcHJvbWlzZSBg
b25SZWplY3RlZGAgaXMgYG51bGxgCitQQVNTIDIuMi4xOiBCb3RoIGBvbkZ1bGZpbGxlZGAgYW5k
IGBvblJlamVjdGVkYCBhcmUgb3B0aW9uYWwgYXJndW1lbnRzLiAyLjIuMS4yOiBJZiBgb25SZWpl
Y3RlZGAgaXMgbm90IGEgZnVuY3Rpb24sIGl0IG11c3QgYmUgaWdub3JlZC4gYXBwbGllZCB0byBh
IGRpcmVjdGx5LWZ1bGZpbGxlZCBwcm9taXNlIGBvblJlamVjdGVkYCBpcyBgZmFsc2VgCitQQVNT
IDIuMi4xOiBCb3RoIGBvbkZ1bGZpbGxlZGAgYW5kIGBvblJlamVjdGVkYCBhcmUgb3B0aW9uYWwg
YXJndW1lbnRzLiAyLjIuMS4yOiBJZiBgb25SZWplY3RlZGAgaXMgbm90IGEgZnVuY3Rpb24sIGl0
IG11c3QgYmUgaWdub3JlZC4gYXBwbGllZCB0byBhIGRpcmVjdGx5LWZ1bGZpbGxlZCBwcm9taXNl
IGBvblJlamVjdGVkYCBpcyBgNWAKK1BBU1MgMi4yLjE6IEJvdGggYG9uRnVsZmlsbGVkYCBhbmQg
YG9uUmVqZWN0ZWRgIGFyZSBvcHRpb25hbCBhcmd1bWVudHMuIDIuMi4xLjI6IElmIGBvblJlamVj
dGVkYCBpcyBub3QgYSBmdW5jdGlvbiwgaXQgbXVzdCBiZSBpZ25vcmVkLiBhcHBsaWVkIHRvIGEg
ZGlyZWN0bHktZnVsZmlsbGVkIHByb21pc2UgYG9uUmVqZWN0ZWRgIGlzIGFuIG9iamVjdAorUEFT
UyAyLjIuMTogQm90aCBgb25GdWxmaWxsZWRgIGFuZCBgb25SZWplY3RlZGAgYXJlIG9wdGlvbmFs
IGFyZ3VtZW50cy4gMi4yLjEuMjogSWYgYG9uUmVqZWN0ZWRgIGlzIG5vdCBhIGZ1bmN0aW9uLCBp
dCBtdXN0IGJlIGlnbm9yZWQuIGFwcGxpZWQgdG8gYSBwcm9taXNlIGZ1bGZpbGxlZCBhbmQgdGhl
biBjaGFpbmVkIG9mZiBvZiBgb25GdWxmaWxsZWRgIGlzIGB1bmRlZmluZWRgCitQQVNTIDIuMi4x
OiBCb3RoIGBvbkZ1bGZpbGxlZGAgYW5kIGBvblJlamVjdGVkYCBhcmUgb3B0aW9uYWwgYXJndW1l
bnRzLiAyLjIuMS4yOiBJZiBgb25SZWplY3RlZGAgaXMgbm90IGEgZnVuY3Rpb24sIGl0IG11c3Qg
YmUgaWdub3JlZC4gYXBwbGllZCB0byBhIHByb21pc2UgZnVsZmlsbGVkIGFuZCB0aGVuIGNoYWlu
ZWQgb2ZmIG9mIGBvbkZ1bGZpbGxlZGAgaXMgYG51bGxgCitQQVNTIDIuMi4xOiBCb3RoIGBvbkZ1
bGZpbGxlZGAgYW5kIGBvblJlamVjdGVkYCBhcmUgb3B0aW9uYWwgYXJndW1lbnRzLiAyLjIuMS4y
OiBJZiBgb25SZWplY3RlZGAgaXMgbm90IGEgZnVuY3Rpb24sIGl0IG11c3QgYmUgaWdub3JlZC4g
YXBwbGllZCB0byBhIHByb21pc2UgZnVsZmlsbGVkIGFuZCB0aGVuIGNoYWluZWQgb2ZmIG9mIGBv
bkZ1bGZpbGxlZGAgaXMgYGZhbHNlYAorUEFTUyAyLjIuMTogQm90aCBgb25GdWxmaWxsZWRgIGFu
ZCBgb25SZWplY3RlZGAgYXJlIG9wdGlvbmFsIGFyZ3VtZW50cy4gMi4yLjEuMjogSWYgYG9uUmVq
ZWN0ZWRgIGlzIG5vdCBhIGZ1bmN0aW9uLCBpdCBtdXN0IGJlIGlnbm9yZWQuIGFwcGxpZWQgdG8g
YSBwcm9taXNlIGZ1bGZpbGxlZCBhbmQgdGhlbiBjaGFpbmVkIG9mZiBvZiBgb25GdWxmaWxsZWRg
IGlzIGA1YAorUEFTUyAyLjIuMTogQm90aCBgb25GdWxmaWxsZWRgIGFuZCBgb25SZWplY3RlZGAg
YXJlIG9wdGlvbmFsIGFyZ3VtZW50cy4gMi4yLjEuMjogSWYgYG9uUmVqZWN0ZWRgIGlzIG5vdCBh
IGZ1bmN0aW9uLCBpdCBtdXN0IGJlIGlnbm9yZWQuIGFwcGxpZWQgdG8gYSBwcm9taXNlIGZ1bGZp
bGxlZCBhbmQgdGhlbiBjaGFpbmVkIG9mZiBvZiBgb25GdWxmaWxsZWRgIGlzIGFuIG9iamVjdAor
UEFTUyAyLjIuMjogSWYgYG9uRnVsZmlsbGVkYCBpcyBhIGZ1bmN0aW9uLCAyLjIuMi4xOiBpdCBt
dXN0IGJlIGNhbGxlZCBhZnRlciBgcHJvbWlzZWAgaXMgZnVsZmlsbGVkLCB3aXRoIGBwcm9taXNl
YMOi4oKs4oSicyBmdWxmaWxsbWVudCB2YWx1ZSBhcyBpdHMgZmlyc3QgYXJndW1lbnQuIGFscmVh
ZHktZnVsZmlsbGVkCitQQVNTIDIuMi4yOiBJZiBgb25GdWxmaWxsZWRgIGlzIGEgZnVuY3Rpb24s
IDIuMi4yLjE6IGl0IG11c3QgYmUgY2FsbGVkIGFmdGVyIGBwcm9taXNlYCBpcyBmdWxmaWxsZWQs
IHdpdGggYHByb21pc2Vgw6LigqzihKJzIGZ1bGZpbGxtZW50IHZhbHVlIGFzIGl0cyBmaXJzdCBh
cmd1bWVudC4gaW1tZWRpYXRlbHktZnVsZmlsbGVkCitQQVNTIDIuMi4yOiBJZiBgb25GdWxmaWxs
ZWRgIGlzIGEgZnVuY3Rpb24sIDIuMi4yLjE6IGl0IG11c3QgYmUgY2FsbGVkIGFmdGVyIGBwcm9t
aXNlYCBpcyBmdWxmaWxsZWQsIHdpdGggYHByb21pc2Vgw6LigqzihKJzIGZ1bGZpbGxtZW50IHZh
bHVlIGFzIGl0cyBmaXJzdCBhcmd1bWVudC4gZXZlbnR1YWxseS1mdWxmaWxsZWQKK1BBU1MgMi4y
LjI6IElmIGBvbkZ1bGZpbGxlZGAgaXMgYSBmdW5jdGlvbiwgMi4yLjIuMjogaXQgbXVzdCBub3Qg
YmUgY2FsbGVkIGJlZm9yZSBgcHJvbWlzZWAgaXMgZnVsZmlsbGVkIGZ1bGZpbGxlZCBhZnRlciBh
IGRlbGF5CitQQVNTIDIuMi4yOiBJZiBgb25GdWxmaWxsZWRgIGlzIGEgZnVuY3Rpb24sIDIuMi4y
LjI6IGl0IG11c3Qgbm90IGJlIGNhbGxlZCBiZWZvcmUgYHByb21pc2VgIGlzIGZ1bGZpbGxlZCBu
ZXZlciBmdWxmaWxsZWQKK1BBU1MgMi4yLjI6IElmIGBvbkZ1bGZpbGxlZGAgaXMgYSBmdW5jdGlv
biwgMi4yLjIuMzogaXQgbXVzdCBub3QgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLiBhbHJlYWR5
LWZ1bGZpbGxlZAorUEFTUyAyLjIuMjogSWYgYG9uRnVsZmlsbGVkYCBpcyBhIGZ1bmN0aW9uLCAy
LjIuMi4zOiBpdCBtdXN0IG5vdCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuIHRyeWluZyB0byBm
dWxmaWxsIGEgcGVuZGluZyBwcm9taXNlIG1vcmUgdGhhbiBvbmNlLCBpbW1lZGlhdGVseQorUEFT
UyAyLjIuMjogSWYgYG9uRnVsZmlsbGVkYCBpcyBhIGZ1bmN0aW9uLCAyLjIuMi4zOiBpdCBtdXN0
IG5vdCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuIHRyeWluZyB0byBmdWxmaWxsIGEgcGVuZGlu
ZyBwcm9taXNlIG1vcmUgdGhhbiBvbmNlLCBkZWxheWVkCitQQVNTIDIuMi4yOiBJZiBgb25GdWxm
aWxsZWRgIGlzIGEgZnVuY3Rpb24sIDIuMi4yLjM6IGl0IG11c3Qgbm90IGJlIGNhbGxlZCBtb3Jl
IHRoYW4gb25jZS4gdHJ5aW5nIHRvIGZ1bGZpbGwgYSBwZW5kaW5nIHByb21pc2UgbW9yZSB0aGFu
IG9uY2UsIGltbWVkaWF0ZWx5IHRoZW4gZGVsYXllZAorUEFTUyAyLjIuMjogSWYgYG9uRnVsZmls
bGVkYCBpcyBhIGZ1bmN0aW9uLCAyLjIuMi4zOiBpdCBtdXN0IG5vdCBiZSBjYWxsZWQgbW9yZSB0
aGFuIG9uY2UuIHdoZW4gbXVsdGlwbGUgYHRoZW5gIGNhbGxzIGFyZSBtYWRlLCBzcGFjZWQgYXBh
cnQgaW4gdGltZQorUEFTUyAyLjIuMjogSWYgYG9uRnVsZmlsbGVkYCBpcyBhIGZ1bmN0aW9uLCAy
LjIuMi4zOiBpdCBtdXN0IG5vdCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuIHdoZW4gYHRoZW5g
IGlzIGludGVybGVhdmVkIHdpdGggZnVsZmlsbG1lbnQKK1BBU1MgMi4yLjM6IElmIGBvblJlamVj
dGVkYCBpcyBhIGZ1bmN0aW9uLCAyLjIuMy4xOiBpdCBtdXN0IGJlIGNhbGxlZCBhZnRlciBgcHJv
bWlzZWAgaXMgcmVqZWN0ZWQsIHdpdGggYHByb21pc2Vgw6LigqzihKJzIHJlamVjdGlvbiByZWFz
b24gYXMgaXRzIGZpcnN0IGFyZ3VtZW50LiBhbHJlYWR5LXJlamVjdGVkCitQQVNTIDIuMi4zOiBJ
ZiBgb25SZWplY3RlZGAgaXMgYSBmdW5jdGlvbiwgMi4yLjMuMTogaXQgbXVzdCBiZSBjYWxsZWQg
YWZ0ZXIgYHByb21pc2VgIGlzIHJlamVjdGVkLCB3aXRoIGBwcm9taXNlYMOi4oKs4oSicyByZWpl
Y3Rpb24gcmVhc29uIGFzIGl0cyBmaXJzdCBhcmd1bWVudC4gaW1tZWRpYXRlbHktcmVqZWN0ZWQK
K1BBU1MgMi4yLjM6IElmIGBvblJlamVjdGVkYCBpcyBhIGZ1bmN0aW9uLCAyLjIuMy4xOiBpdCBt
dXN0IGJlIGNhbGxlZCBhZnRlciBgcHJvbWlzZWAgaXMgcmVqZWN0ZWQsIHdpdGggYHByb21pc2Vg
w6LigqzihKJzIHJlamVjdGlvbiByZWFzb24gYXMgaXRzIGZpcnN0IGFyZ3VtZW50LiBldmVudHVh
bGx5LXJlamVjdGVkCitQQVNTIDIuMi4zOiBJZiBgb25SZWplY3RlZGAgaXMgYSBmdW5jdGlvbiwg
Mi4yLjMuMjogaXQgbXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBgcHJvbWlzZWAgaXMgcmVqZWN0
ZWQgcmVqZWN0ZWQgYWZ0ZXIgYSBkZWxheQorUEFTUyAyLjIuMzogSWYgYG9uUmVqZWN0ZWRgIGlz
IGEgZnVuY3Rpb24sIDIuMi4zLjI6IGl0IG11c3Qgbm90IGJlIGNhbGxlZCBiZWZvcmUgYHByb21p
c2VgIGlzIHJlamVjdGVkIG5ldmVyIHJlamVjdGVkCitQQVNTIDIuMi4zOiBJZiBgb25SZWplY3Rl
ZGAgaXMgYSBmdW5jdGlvbiwgMi4yLjMuMzogaXQgbXVzdCBub3QgYmUgY2FsbGVkIG1vcmUgdGhh
biBvbmNlLiBhbHJlYWR5LXJlamVjdGVkCitQQVNTIDIuMi4zOiBJZiBgb25SZWplY3RlZGAgaXMg
YSBmdW5jdGlvbiwgMi4yLjMuMzogaXQgbXVzdCBub3QgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNl
LiB0cnlpbmcgdG8gcmVqZWN0IGEgcGVuZGluZyBwcm9taXNlIG1vcmUgdGhhbiBvbmNlLCBpbW1l
ZGlhdGVseQorUEFTUyAyLjIuMzogSWYgYG9uUmVqZWN0ZWRgIGlzIGEgZnVuY3Rpb24sIDIuMi4z
LjM6IGl0IG11c3Qgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZS4gdHJ5aW5nIHRvIHJlamVj
dCBhIHBlbmRpbmcgcHJvbWlzZSBtb3JlIHRoYW4gb25jZSwgZGVsYXllZAorUEFTUyAyLjIuMzog
SWYgYG9uUmVqZWN0ZWRgIGlzIGEgZnVuY3Rpb24sIDIuMi4zLjM6IGl0IG11c3Qgbm90IGJlIGNh
bGxlZCBtb3JlIHRoYW4gb25jZS4gdHJ5aW5nIHRvIHJlamVjdCBhIHBlbmRpbmcgcHJvbWlzZSBt
b3JlIHRoYW4gb25jZSwgaW1tZWRpYXRlbHkgdGhlbiBkZWxheWVkCitQQVNTIDIuMi4zOiBJZiBg
b25SZWplY3RlZGAgaXMgYSBmdW5jdGlvbiwgMi4yLjMuMzogaXQgbXVzdCBub3QgYmUgY2FsbGVk
IG1vcmUgdGhhbiBvbmNlLiB3aGVuIG11bHRpcGxlIGB0aGVuYCBjYWxscyBhcmUgbWFkZSwgc3Bh
Y2VkIGFwYXJ0IGluIHRpbWUKK1BBU1MgMi4yLjM6IElmIGBvblJlamVjdGVkYCBpcyBhIGZ1bmN0
aW9uLCAyLjIuMy4zOiBpdCBtdXN0IG5vdCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuIHdoZW4g
YHRoZW5gIGlzIGludGVybGVhdmVkIHdpdGggcmVqZWN0aW9uCitQQVNTIDIuMi40OiBgb25GdWxm
aWxsZWRgIG9yIGBvblJlamVjdGVkYCBtdXN0IG5vdCBiZSBjYWxsZWQgdW50aWwgdGhlIGV4ZWN1
dGlvbiBjb250ZXh0IHN0YWNrIGNvbnRhaW5zIG9ubHkgcGxhdGZvcm0gY29kZS4gYHRoZW5gIHJl
dHVybnMgYmVmb3JlIHRoZSBwcm9taXNlIGJlY29tZXMgZnVsZmlsbGVkIG9yIHJlamVjdGVkIGFs
cmVhZHktZnVsZmlsbGVkCitQQVNTIDIuMi40OiBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVk
YCBtdXN0IG5vdCBiZSBjYWxsZWQgdW50aWwgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHN0YWNrIGNv
bnRhaW5zIG9ubHkgcGxhdGZvcm0gY29kZS4gYHRoZW5gIHJldHVybnMgYmVmb3JlIHRoZSBwcm9t
aXNlIGJlY29tZXMgZnVsZmlsbGVkIG9yIHJlamVjdGVkIGltbWVkaWF0ZWx5LWZ1bGZpbGxlZAor
UEFTUyAyLjIuNDogYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgbXVzdCBub3QgYmUgY2Fs
bGVkIHVudGlsIHRoZSBleGVjdXRpb24gY29udGV4dCBzdGFjayBjb250YWlucyBvbmx5IHBsYXRm
b3JtIGNvZGUuIGB0aGVuYCByZXR1cm5zIGJlZm9yZSB0aGUgcHJvbWlzZSBiZWNvbWVzIGZ1bGZp
bGxlZCBvciByZWplY3RlZCBldmVudHVhbGx5LWZ1bGZpbGxlZAorUEFTUyAyLjIuNDogYG9uRnVs
ZmlsbGVkYCBvciBgb25SZWplY3RlZGAgbXVzdCBub3QgYmUgY2FsbGVkIHVudGlsIHRoZSBleGVj
dXRpb24gY29udGV4dCBzdGFjayBjb250YWlucyBvbmx5IHBsYXRmb3JtIGNvZGUuIGB0aGVuYCBy
ZXR1cm5zIGJlZm9yZSB0aGUgcHJvbWlzZSBiZWNvbWVzIGZ1bGZpbGxlZCBvciByZWplY3RlZCBh
bHJlYWR5LXJlamVjdGVkCitQQVNTIDIuMi40OiBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVk
YCBtdXN0IG5vdCBiZSBjYWxsZWQgdW50aWwgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHN0YWNrIGNv
bnRhaW5zIG9ubHkgcGxhdGZvcm0gY29kZS4gYHRoZW5gIHJldHVybnMgYmVmb3JlIHRoZSBwcm9t
aXNlIGJlY29tZXMgZnVsZmlsbGVkIG9yIHJlamVjdGVkIGltbWVkaWF0ZWx5LXJlamVjdGVkCitQ
QVNTIDIuMi40OiBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCBtdXN0IG5vdCBiZSBjYWxs
ZWQgdW50aWwgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHN0YWNrIGNvbnRhaW5zIG9ubHkgcGxhdGZv
cm0gY29kZS4gYHRoZW5gIHJldHVybnMgYmVmb3JlIHRoZSBwcm9taXNlIGJlY29tZXMgZnVsZmls
bGVkIG9yIHJlamVjdGVkIGV2ZW50dWFsbHktcmVqZWN0ZWQKK1BBU1MgMi4yLjQ6IGBvbkZ1bGZp
bGxlZGAgb3IgYG9uUmVqZWN0ZWRgIG11c3Qgbm90IGJlIGNhbGxlZCB1bnRpbCB0aGUgZXhlY3V0
aW9uIGNvbnRleHQgc3RhY2sgY29udGFpbnMgb25seSBwbGF0Zm9ybSBjb2RlLiBDbGVhbi1zdGFj
ayBleGVjdXRpb24gb3JkZXJpbmcgdGVzdHMgKGZ1bGZpbGxtZW50IGNhc2UpIHdoZW4gYG9uRnVs
ZmlsbGVkYCBpcyBhZGRlZCBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIHByb21pc2UgaXMgZnVsZmls
bGVkCitQQVNTIDIuMi40OiBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCBtdXN0IG5vdCBi
ZSBjYWxsZWQgdW50aWwgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHN0YWNrIGNvbnRhaW5zIG9ubHkg
cGxhdGZvcm0gY29kZS4gQ2xlYW4tc3RhY2sgZXhlY3V0aW9uIG9yZGVyaW5nIHRlc3RzIChmdWxm
aWxsbWVudCBjYXNlKSB3aGVuIGBvbkZ1bGZpbGxlZGAgaXMgYWRkZWQgaW1tZWRpYXRlbHkgYWZ0
ZXIgdGhlIHByb21pc2UgaXMgZnVsZmlsbGVkCitQQVNTIDIuMi40OiBgb25GdWxmaWxsZWRgIG9y
IGBvblJlamVjdGVkYCBtdXN0IG5vdCBiZSBjYWxsZWQgdW50aWwgdGhlIGV4ZWN1dGlvbiBjb250
ZXh0IHN0YWNrIGNvbnRhaW5zIG9ubHkgcGxhdGZvcm0gY29kZS4gQ2xlYW4tc3RhY2sgZXhlY3V0
aW9uIG9yZGVyaW5nIHRlc3RzIChmdWxmaWxsbWVudCBjYXNlKSB3aGVuIG9uZSBgb25GdWxmaWxs
ZWRgIGlzIGFkZGVkIGluc2lkZSBhbm90aGVyIGBvbkZ1bGZpbGxlZGAKK1BBU1MgMi4yLjQ6IGBv
bkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIG11c3Qgbm90IGJlIGNhbGxlZCB1bnRpbCB0aGUg
ZXhlY3V0aW9uIGNvbnRleHQgc3RhY2sgY29udGFpbnMgb25seSBwbGF0Zm9ybSBjb2RlLiBDbGVh
bi1zdGFjayBleGVjdXRpb24gb3JkZXJpbmcgdGVzdHMgKGZ1bGZpbGxtZW50IGNhc2UpIHdoZW4g
YG9uRnVsZmlsbGVkYCBpcyBhZGRlZCBpbnNpZGUgYW4gYG9uUmVqZWN0ZWRgCitQQVNTIDIuMi40
OiBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCBtdXN0IG5vdCBiZSBjYWxsZWQgdW50aWwg
dGhlIGV4ZWN1dGlvbiBjb250ZXh0IHN0YWNrIGNvbnRhaW5zIG9ubHkgcGxhdGZvcm0gY29kZS4g
Q2xlYW4tc3RhY2sgZXhlY3V0aW9uIG9yZGVyaW5nIHRlc3RzIChmdWxmaWxsbWVudCBjYXNlKSB3
aGVuIHRoZSBwcm9taXNlIGlzIGZ1bGZpbGxlZCBhc3luY2hyb25vdXNseQorUEFTUyAyLjIuNDog
YG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgbXVzdCBub3QgYmUgY2FsbGVkIHVudGlsIHRo
ZSBleGVjdXRpb24gY29udGV4dCBzdGFjayBjb250YWlucyBvbmx5IHBsYXRmb3JtIGNvZGUuIENs
ZWFuLXN0YWNrIGV4ZWN1dGlvbiBvcmRlcmluZyB0ZXN0cyAocmVqZWN0aW9uIGNhc2UpIHdoZW4g
YG9uUmVqZWN0ZWRgIGlzIGFkZGVkIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgcHJvbWlzZSBpcyBy
ZWplY3RlZAorUEFTUyAyLjIuNDogYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgbXVzdCBu
b3QgYmUgY2FsbGVkIHVudGlsIHRoZSBleGVjdXRpb24gY29udGV4dCBzdGFjayBjb250YWlucyBv
bmx5IHBsYXRmb3JtIGNvZGUuIENsZWFuLXN0YWNrIGV4ZWN1dGlvbiBvcmRlcmluZyB0ZXN0cyAo
cmVqZWN0aW9uIGNhc2UpIHdoZW4gYG9uUmVqZWN0ZWRgIGlzIGFkZGVkIGltbWVkaWF0ZWx5IGFm
dGVyIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkCitQQVNTIDIuMi40OiBgb25GdWxmaWxsZWRgIG9y
IGBvblJlamVjdGVkYCBtdXN0IG5vdCBiZSBjYWxsZWQgdW50aWwgdGhlIGV4ZWN1dGlvbiBjb250
ZXh0IHN0YWNrIGNvbnRhaW5zIG9ubHkgcGxhdGZvcm0gY29kZS4gQ2xlYW4tc3RhY2sgZXhlY3V0
aW9uIG9yZGVyaW5nIHRlc3RzIChyZWplY3Rpb24gY2FzZSkgd2hlbiBgb25SZWplY3RlZGAgaXMg
YWRkZWQgaW5zaWRlIGFuIGBvbkZ1bGZpbGxlZGAKK1BBU1MgMi4yLjQ6IGBvbkZ1bGZpbGxlZGAg
b3IgYG9uUmVqZWN0ZWRgIG11c3Qgbm90IGJlIGNhbGxlZCB1bnRpbCB0aGUgZXhlY3V0aW9uIGNv
bnRleHQgc3RhY2sgY29udGFpbnMgb25seSBwbGF0Zm9ybSBjb2RlLiBDbGVhbi1zdGFjayBleGVj
dXRpb24gb3JkZXJpbmcgdGVzdHMgKHJlamVjdGlvbiBjYXNlKSB3aGVuIG9uZSBgb25SZWplY3Rl
ZGAgaXMgYWRkZWQgaW5zaWRlIGFub3RoZXIgYG9uUmVqZWN0ZWRgCitQQVNTIDIuMi40OiBgb25G
dWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCBtdXN0IG5vdCBiZSBjYWxsZWQgdW50aWwgdGhlIGV4
ZWN1dGlvbiBjb250ZXh0IHN0YWNrIGNvbnRhaW5zIG9ubHkgcGxhdGZvcm0gY29kZS4gQ2xlYW4t
c3RhY2sgZXhlY3V0aW9uIG9yZGVyaW5nIHRlc3RzIChyZWplY3Rpb24gY2FzZSkgd2hlbiB0aGUg
cHJvbWlzZSBpcyByZWplY3RlZCBhc3luY2hyb25vdXNseQorUEFTUyAyLjIuNSBgb25GdWxmaWxs
ZWRgIGFuZCBgb25SZWplY3RlZGAgbXVzdCBiZSBjYWxsZWQgYXMgZnVuY3Rpb25zIChpLmUuIHdp
dGggbm8gYHRoaXNgIHZhbHVlKS4gc3RyaWN0IG1vZGUgZnVsZmlsbGVkCitQQVNTIDIuMi41IGBv
bkZ1bGZpbGxlZGAgYW5kIGBvblJlamVjdGVkYCBtdXN0IGJlIGNhbGxlZCBhcyBmdW5jdGlvbnMg
KGkuZS4gd2l0aCBubyBgdGhpc2AgdmFsdWUpLiBzdHJpY3QgbW9kZSByZWplY3RlZAorUEFTUyAy
LjIuNSBgb25GdWxmaWxsZWRgIGFuZCBgb25SZWplY3RlZGAgbXVzdCBiZSBjYWxsZWQgYXMgZnVu
Y3Rpb25zIChpLmUuIHdpdGggbm8gYHRoaXNgIHZhbHVlKS4gc2xvcHB5IG1vZGUgZnVsZmlsbGVk
CitQQVNTIDIuMi41IGBvbkZ1bGZpbGxlZGAgYW5kIGBvblJlamVjdGVkYCBtdXN0IGJlIGNhbGxl
ZCBhcyBmdW5jdGlvbnMgKGkuZS4gd2l0aCBubyBgdGhpc2AgdmFsdWUpLiBzbG9wcHkgbW9kZSBy
ZWplY3RlZAorUEFTUyAyLjIuNjogYHRoZW5gIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMg
b24gdGhlIHNhbWUgcHJvbWlzZS4gMi4yLjYuMTogSWYvd2hlbiBgcHJvbWlzZWAgaXMgZnVsZmls
bGVkLCBhbGwgcmVzcGVjdGl2ZSBgb25GdWxmaWxsZWRgIGNhbGxiYWNrcyBtdXN0IGV4ZWN1dGUg
aW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5nIGNhbGxzIHRvIGB0aGVuYC4gbXVsdGlw
bGUgYm9yaW5nIGZ1bGZpbGxtZW50IGhhbmRsZXJzIGFscmVhZHktZnVsZmlsbGVkCitQQVNTIDIu
Mi42OiBgdGhlbmAgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9t
aXNlLiAyLjIuNi4xOiBJZi93aGVuIGBwcm9taXNlYCBpcyBmdWxmaWxsZWQsIGFsbCByZXNwZWN0
aXZlIGBvbkZ1bGZpbGxlZGAgY2FsbGJhY2tzIG11c3QgZXhlY3V0ZSBpbiB0aGUgb3JkZXIgb2Yg
dGhlaXIgb3JpZ2luYXRpbmcgY2FsbHMgdG8gYHRoZW5gLiBtdWx0aXBsZSBib3JpbmcgZnVsZmls
bG1lbnQgaGFuZGxlcnMgaW1tZWRpYXRlbHktZnVsZmlsbGVkCitQQVNTIDIuMi42OiBgdGhlbmAg
bWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4x
OiBJZi93aGVuIGBwcm9taXNlYCBpcyBmdWxmaWxsZWQsIGFsbCByZXNwZWN0aXZlIGBvbkZ1bGZp
bGxlZGAgY2FsbGJhY2tzIG11c3QgZXhlY3V0ZSBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgb3JpZ2lu
YXRpbmcgY2FsbHMgdG8gYHRoZW5gLiBtdWx0aXBsZSBib3JpbmcgZnVsZmlsbG1lbnQgaGFuZGxl
cnMgZXZlbnR1YWxseS1mdWxmaWxsZWQKK1BBU1MgMi4yLjY6IGB0aGVuYCBtYXkgYmUgY2FsbGVk
IG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHByb21pc2UuIDIuMi42LjE6IElmL3doZW4gYHBy
b21pc2VgIGlzIGZ1bGZpbGxlZCwgYWxsIHJlc3BlY3RpdmUgYG9uRnVsZmlsbGVkYCBjYWxsYmFj
a3MgbXVzdCBleGVjdXRlIGluIHRoZSBvcmRlciBvZiB0aGVpciBvcmlnaW5hdGluZyBjYWxscyB0
byBgdGhlbmAuIG11bHRpcGxlIGZ1bGZpbGxtZW50IGhhbmRsZXJzLCBvbmUgb2Ygd2hpY2ggdGhy
b3dzIGFscmVhZHktZnVsZmlsbGVkCitQQVNTIDIuMi42OiBgdGhlbmAgbWF5IGJlIGNhbGxlZCBt
dWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4xOiBJZi93aGVuIGBwcm9t
aXNlYCBpcyBmdWxmaWxsZWQsIGFsbCByZXNwZWN0aXZlIGBvbkZ1bGZpbGxlZGAgY2FsbGJhY2tz
IG11c3QgZXhlY3V0ZSBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgb3JpZ2luYXRpbmcgY2FsbHMgdG8g
YHRoZW5gLiBtdWx0aXBsZSBmdWxmaWxsbWVudCBoYW5kbGVycywgb25lIG9mIHdoaWNoIHRocm93
cyBpbW1lZGlhdGVseS1mdWxmaWxsZWQKK1BBU1MgMi4yLjY6IGB0aGVuYCBtYXkgYmUgY2FsbGVk
IG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHByb21pc2UuIDIuMi42LjE6IElmL3doZW4gYHBy
b21pc2VgIGlzIGZ1bGZpbGxlZCwgYWxsIHJlc3BlY3RpdmUgYG9uRnVsZmlsbGVkYCBjYWxsYmFj
a3MgbXVzdCBleGVjdXRlIGluIHRoZSBvcmRlciBvZiB0aGVpciBvcmlnaW5hdGluZyBjYWxscyB0
byBgdGhlbmAuIG11bHRpcGxlIGZ1bGZpbGxtZW50IGhhbmRsZXJzLCBvbmUgb2Ygd2hpY2ggdGhy
b3dzIGV2ZW50dWFsbHktZnVsZmlsbGVkCitQQVNTIDIuMi42OiBgdGhlbmAgbWF5IGJlIGNhbGxl
ZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4xOiBJZi93aGVuIGBw
cm9taXNlYCBpcyBmdWxmaWxsZWQsIGFsbCByZXNwZWN0aXZlIGBvbkZ1bGZpbGxlZGAgY2FsbGJh
Y2tzIG11c3QgZXhlY3V0ZSBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgb3JpZ2luYXRpbmcgY2FsbHMg
dG8gYHRoZW5gLiByZXN1bHRzIGluIG11bHRpcGxlIGJyYW5jaGluZyBjaGFpbnMgd2l0aCB0aGVp
ciBvd24gZnVsZmlsbG1lbnQgdmFsdWVzIGFscmVhZHktZnVsZmlsbGVkCitQQVNTIDIuMi42OiBg
dGhlbmAgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAy
LjIuNi4xOiBJZi93aGVuIGBwcm9taXNlYCBpcyBmdWxmaWxsZWQsIGFsbCByZXNwZWN0aXZlIGBv
bkZ1bGZpbGxlZGAgY2FsbGJhY2tzIG11c3QgZXhlY3V0ZSBpbiB0aGUgb3JkZXIgb2YgdGhlaXIg
b3JpZ2luYXRpbmcgY2FsbHMgdG8gYHRoZW5gLiByZXN1bHRzIGluIG11bHRpcGxlIGJyYW5jaGlu
ZyBjaGFpbnMgd2l0aCB0aGVpciBvd24gZnVsZmlsbG1lbnQgdmFsdWVzIGltbWVkaWF0ZWx5LWZ1
bGZpbGxlZAorUEFTUyAyLjIuNjogYHRoZW5gIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMg
b24gdGhlIHNhbWUgcHJvbWlzZS4gMi4yLjYuMTogSWYvd2hlbiBgcHJvbWlzZWAgaXMgZnVsZmls
bGVkLCBhbGwgcmVzcGVjdGl2ZSBgb25GdWxmaWxsZWRgIGNhbGxiYWNrcyBtdXN0IGV4ZWN1dGUg
aW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5nIGNhbGxzIHRvIGB0aGVuYC4gcmVzdWx0
cyBpbiBtdWx0aXBsZSBicmFuY2hpbmcgY2hhaW5zIHdpdGggdGhlaXIgb3duIGZ1bGZpbGxtZW50
IHZhbHVlcyBldmVudHVhbGx5LWZ1bGZpbGxlZAorUEFTUyAyLjIuNjogYHRoZW5gIG1heSBiZSBj
YWxsZWQgbXVsdGlwbGUgdGltZXMgb24gdGhlIHNhbWUgcHJvbWlzZS4gMi4yLjYuMTogSWYvd2hl
biBgcHJvbWlzZWAgaXMgZnVsZmlsbGVkLCBhbGwgcmVzcGVjdGl2ZSBgb25GdWxmaWxsZWRgIGNh
bGxiYWNrcyBtdXN0IGV4ZWN1dGUgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5nIGNh
bGxzIHRvIGB0aGVuYC4gYG9uRnVsZmlsbGVkYCBoYW5kbGVycyBhcmUgY2FsbGVkIGluIHRoZSBv
cmlnaW5hbCBvcmRlciBhbHJlYWR5LWZ1bGZpbGxlZAorUEFTUyAyLjIuNjogYHRoZW5gIG1heSBi
ZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgb24gdGhlIHNhbWUgcHJvbWlzZS4gMi4yLjYuMTogSWYv
d2hlbiBgcHJvbWlzZWAgaXMgZnVsZmlsbGVkLCBhbGwgcmVzcGVjdGl2ZSBgb25GdWxmaWxsZWRg
IGNhbGxiYWNrcyBtdXN0IGV4ZWN1dGUgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5n
IGNhbGxzIHRvIGB0aGVuYC4gYG9uRnVsZmlsbGVkYCBoYW5kbGVycyBhcmUgY2FsbGVkIGluIHRo
ZSBvcmlnaW5hbCBvcmRlciBpbW1lZGlhdGVseS1mdWxmaWxsZWQKK1BBU1MgMi4yLjY6IGB0aGVu
YCBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHByb21pc2UuIDIuMi42
LjE6IElmL3doZW4gYHByb21pc2VgIGlzIGZ1bGZpbGxlZCwgYWxsIHJlc3BlY3RpdmUgYG9uRnVs
ZmlsbGVkYCBjYWxsYmFja3MgbXVzdCBleGVjdXRlIGluIHRoZSBvcmRlciBvZiB0aGVpciBvcmln
aW5hdGluZyBjYWxscyB0byBgdGhlbmAuIGBvbkZ1bGZpbGxlZGAgaGFuZGxlcnMgYXJlIGNhbGxl
ZCBpbiB0aGUgb3JpZ2luYWwgb3JkZXIgZXZlbnR1YWxseS1mdWxmaWxsZWQKK1BBU1MgMi4yLjY6
IGB0aGVuYCBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHByb21pc2Uu
IDIuMi42LjE6IElmL3doZW4gYHByb21pc2VgIGlzIGZ1bGZpbGxlZCwgYWxsIHJlc3BlY3RpdmUg
YG9uRnVsZmlsbGVkYCBjYWxsYmFja3MgbXVzdCBleGVjdXRlIGluIHRoZSBvcmRlciBvZiB0aGVp
ciBvcmlnaW5hdGluZyBjYWxscyB0byBgdGhlbmAuIGBvbkZ1bGZpbGxlZGAgaGFuZGxlcnMgYXJl
IGNhbGxlZCBpbiB0aGUgb3JpZ2luYWwgb3JkZXIgZXZlbiB3aGVuIG9uZSBoYW5kbGVyIGlzIGFk
ZGVkIGluc2lkZSBhbm90aGVyIGhhbmRsZXIgYWxyZWFkeS1mdWxmaWxsZWQKK1BBU1MgMi4yLjY6
IGB0aGVuYCBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHByb21pc2Uu
IDIuMi42LjE6IElmL3doZW4gYHByb21pc2VgIGlzIGZ1bGZpbGxlZCwgYWxsIHJlc3BlY3RpdmUg
YG9uRnVsZmlsbGVkYCBjYWxsYmFja3MgbXVzdCBleGVjdXRlIGluIHRoZSBvcmRlciBvZiB0aGVp
ciBvcmlnaW5hdGluZyBjYWxscyB0byBgdGhlbmAuIGBvbkZ1bGZpbGxlZGAgaGFuZGxlcnMgYXJl
IGNhbGxlZCBpbiB0aGUgb3JpZ2luYWwgb3JkZXIgZXZlbiB3aGVuIG9uZSBoYW5kbGVyIGlzIGFk
ZGVkIGluc2lkZSBhbm90aGVyIGhhbmRsZXIgaW1tZWRpYXRlbHktZnVsZmlsbGVkCitQQVNTIDIu
Mi42OiBgdGhlbmAgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9t
aXNlLiAyLjIuNi4xOiBJZi93aGVuIGBwcm9taXNlYCBpcyBmdWxmaWxsZWQsIGFsbCByZXNwZWN0
aXZlIGBvbkZ1bGZpbGxlZGAgY2FsbGJhY2tzIG11c3QgZXhlY3V0ZSBpbiB0aGUgb3JkZXIgb2Yg
dGhlaXIgb3JpZ2luYXRpbmcgY2FsbHMgdG8gYHRoZW5gLiBgb25GdWxmaWxsZWRgIGhhbmRsZXJz
IGFyZSBjYWxsZWQgaW4gdGhlIG9yaWdpbmFsIG9yZGVyIGV2ZW4gd2hlbiBvbmUgaGFuZGxlciBp
cyBhZGRlZCBpbnNpZGUgYW5vdGhlciBoYW5kbGVyIGV2ZW50dWFsbHktZnVsZmlsbGVkCitQQVNT
IDIuMi42OiBgdGhlbmAgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBw
cm9taXNlLiAyLjIuNi4yOiBJZi93aGVuIGBwcm9taXNlYCBpcyByZWplY3RlZCwgYWxsIHJlc3Bl
Y3RpdmUgYG9uUmVqZWN0ZWRgIGNhbGxiYWNrcyBtdXN0IGV4ZWN1dGUgaW4gdGhlIG9yZGVyIG9m
IHRoZWlyIG9yaWdpbmF0aW5nIGNhbGxzIHRvIGB0aGVuYC4gbXVsdGlwbGUgYm9yaW5nIHJlamVj
dGlvbiBoYW5kbGVycyBhbHJlYWR5LXJlamVjdGVkCitQQVNTIDIuMi42OiBgdGhlbmAgbWF5IGJl
IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4yOiBJZi93
aGVuIGBwcm9taXNlYCBpcyByZWplY3RlZCwgYWxsIHJlc3BlY3RpdmUgYG9uUmVqZWN0ZWRgIGNh
bGxiYWNrcyBtdXN0IGV4ZWN1dGUgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5nIGNh
bGxzIHRvIGB0aGVuYC4gbXVsdGlwbGUgYm9yaW5nIHJlamVjdGlvbiBoYW5kbGVycyBpbW1lZGlh
dGVseS1yZWplY3RlZAorUEFTUyAyLjIuNjogYHRoZW5gIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUg
dGltZXMgb24gdGhlIHNhbWUgcHJvbWlzZS4gMi4yLjYuMjogSWYvd2hlbiBgcHJvbWlzZWAgaXMg
cmVqZWN0ZWQsIGFsbCByZXNwZWN0aXZlIGBvblJlamVjdGVkYCBjYWxsYmFja3MgbXVzdCBleGVj
dXRlIGluIHRoZSBvcmRlciBvZiB0aGVpciBvcmlnaW5hdGluZyBjYWxscyB0byBgdGhlbmAuIG11
bHRpcGxlIGJvcmluZyByZWplY3Rpb24gaGFuZGxlcnMgZXZlbnR1YWxseS1yZWplY3RlZAorUEFT
UyAyLjIuNjogYHRoZW5gIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgb24gdGhlIHNhbWUg
cHJvbWlzZS4gMi4yLjYuMjogSWYvd2hlbiBgcHJvbWlzZWAgaXMgcmVqZWN0ZWQsIGFsbCByZXNw
ZWN0aXZlIGBvblJlamVjdGVkYCBjYWxsYmFja3MgbXVzdCBleGVjdXRlIGluIHRoZSBvcmRlciBv
ZiB0aGVpciBvcmlnaW5hdGluZyBjYWxscyB0byBgdGhlbmAuIG11bHRpcGxlIHJlamVjdGlvbiBo
YW5kbGVycywgb25lIG9mIHdoaWNoIHRocm93cyBhbHJlYWR5LXJlamVjdGVkCitQQVNTIDIuMi42
OiBgdGhlbmAgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNl
LiAyLjIuNi4yOiBJZi93aGVuIGBwcm9taXNlYCBpcyByZWplY3RlZCwgYWxsIHJlc3BlY3RpdmUg
YG9uUmVqZWN0ZWRgIGNhbGxiYWNrcyBtdXN0IGV4ZWN1dGUgaW4gdGhlIG9yZGVyIG9mIHRoZWly
IG9yaWdpbmF0aW5nIGNhbGxzIHRvIGB0aGVuYC4gbXVsdGlwbGUgcmVqZWN0aW9uIGhhbmRsZXJz
LCBvbmUgb2Ygd2hpY2ggdGhyb3dzIGltbWVkaWF0ZWx5LXJlamVjdGVkCitQQVNTIDIuMi42OiBg
dGhlbmAgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAy
LjIuNi4yOiBJZi93aGVuIGBwcm9taXNlYCBpcyByZWplY3RlZCwgYWxsIHJlc3BlY3RpdmUgYG9u
UmVqZWN0ZWRgIGNhbGxiYWNrcyBtdXN0IGV4ZWN1dGUgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9y
aWdpbmF0aW5nIGNhbGxzIHRvIGB0aGVuYC4gbXVsdGlwbGUgcmVqZWN0aW9uIGhhbmRsZXJzLCBv
bmUgb2Ygd2hpY2ggdGhyb3dzIGV2ZW50dWFsbHktcmVqZWN0ZWQKK1BBU1MgMi4yLjY6IGB0aGVu
YCBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHByb21pc2UuIDIuMi42
LjI6IElmL3doZW4gYHByb21pc2VgIGlzIHJlamVjdGVkLCBhbGwgcmVzcGVjdGl2ZSBgb25SZWpl
Y3RlZGAgY2FsbGJhY2tzIG11c3QgZXhlY3V0ZSBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgb3JpZ2lu
YXRpbmcgY2FsbHMgdG8gYHRoZW5gLiByZXN1bHRzIGluIG11bHRpcGxlIGJyYW5jaGluZyBjaGFp
bnMgd2l0aCB0aGVpciBvd24gZnVsZmlsbG1lbnQgdmFsdWVzIGFscmVhZHktcmVqZWN0ZWQKK1BB
U1MgMi4yLjY6IGB0aGVuYCBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1l
IHByb21pc2UuIDIuMi42LjI6IElmL3doZW4gYHByb21pc2VgIGlzIHJlamVjdGVkLCBhbGwgcmVz
cGVjdGl2ZSBgb25SZWplY3RlZGAgY2FsbGJhY2tzIG11c3QgZXhlY3V0ZSBpbiB0aGUgb3JkZXIg
b2YgdGhlaXIgb3JpZ2luYXRpbmcgY2FsbHMgdG8gYHRoZW5gLiByZXN1bHRzIGluIG11bHRpcGxl
IGJyYW5jaGluZyBjaGFpbnMgd2l0aCB0aGVpciBvd24gZnVsZmlsbG1lbnQgdmFsdWVzIGltbWVk
aWF0ZWx5LXJlamVjdGVkCitQQVNTIDIuMi42OiBgdGhlbmAgbWF5IGJlIGNhbGxlZCBtdWx0aXBs
ZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4yOiBJZi93aGVuIGBwcm9taXNlYCBp
cyByZWplY3RlZCwgYWxsIHJlc3BlY3RpdmUgYG9uUmVqZWN0ZWRgIGNhbGxiYWNrcyBtdXN0IGV4
ZWN1dGUgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5nIGNhbGxzIHRvIGB0aGVuYC4g
cmVzdWx0cyBpbiBtdWx0aXBsZSBicmFuY2hpbmcgY2hhaW5zIHdpdGggdGhlaXIgb3duIGZ1bGZp
bGxtZW50IHZhbHVlcyBldmVudHVhbGx5LXJlamVjdGVkCitQQVNTIDIuMi42OiBgdGhlbmAgbWF5
IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4yOiBJ
Zi93aGVuIGBwcm9taXNlYCBpcyByZWplY3RlZCwgYWxsIHJlc3BlY3RpdmUgYG9uUmVqZWN0ZWRg
IGNhbGxiYWNrcyBtdXN0IGV4ZWN1dGUgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5n
IGNhbGxzIHRvIGB0aGVuYC4gYG9uUmVqZWN0ZWRgIGhhbmRsZXJzIGFyZSBjYWxsZWQgaW4gdGhl
IG9yaWdpbmFsIG9yZGVyIGFscmVhZHktcmVqZWN0ZWQKK1BBU1MgMi4yLjY6IGB0aGVuYCBtYXkg
YmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHByb21pc2UuIDIuMi42LjI6IElm
L3doZW4gYHByb21pc2VgIGlzIHJlamVjdGVkLCBhbGwgcmVzcGVjdGl2ZSBgb25SZWplY3RlZGAg
Y2FsbGJhY2tzIG11c3QgZXhlY3V0ZSBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgb3JpZ2luYXRpbmcg
Y2FsbHMgdG8gYHRoZW5gLiBgb25SZWplY3RlZGAgaGFuZGxlcnMgYXJlIGNhbGxlZCBpbiB0aGUg
b3JpZ2luYWwgb3JkZXIgaW1tZWRpYXRlbHktcmVqZWN0ZWQKK1BBU1MgMi4yLjY6IGB0aGVuYCBt
YXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHByb21pc2UuIDIuMi42LjI6
IElmL3doZW4gYHByb21pc2VgIGlzIHJlamVjdGVkLCBhbGwgcmVzcGVjdGl2ZSBgb25SZWplY3Rl
ZGAgY2FsbGJhY2tzIG11c3QgZXhlY3V0ZSBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgb3JpZ2luYXRp
bmcgY2FsbHMgdG8gYHRoZW5gLiBgb25SZWplY3RlZGAgaGFuZGxlcnMgYXJlIGNhbGxlZCBpbiB0
aGUgb3JpZ2luYWwgb3JkZXIgZXZlbnR1YWxseS1yZWplY3RlZAorUEFTUyAyLjIuNjogYHRoZW5g
IG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgb24gdGhlIHNhbWUgcHJvbWlzZS4gMi4yLjYu
MjogSWYvd2hlbiBgcHJvbWlzZWAgaXMgcmVqZWN0ZWQsIGFsbCByZXNwZWN0aXZlIGBvblJlamVj
dGVkYCBjYWxsYmFja3MgbXVzdCBleGVjdXRlIGluIHRoZSBvcmRlciBvZiB0aGVpciBvcmlnaW5h
dGluZyBjYWxscyB0byBgdGhlbmAuIGBvblJlamVjdGVkYCBoYW5kbGVycyBhcmUgY2FsbGVkIGlu
IHRoZSBvcmlnaW5hbCBvcmRlciBldmVuIHdoZW4gb25lIGhhbmRsZXIgaXMgYWRkZWQgaW5zaWRl
IGFub3RoZXIgaGFuZGxlciBhbHJlYWR5LXJlamVjdGVkCitQQVNTIDIuMi42OiBgdGhlbmAgbWF5
IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4yOiBJ
Zi93aGVuIGBwcm9taXNlYCBpcyByZWplY3RlZCwgYWxsIHJlc3BlY3RpdmUgYG9uUmVqZWN0ZWRg
IGNhbGxiYWNrcyBtdXN0IGV4ZWN1dGUgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5n
IGNhbGxzIHRvIGB0aGVuYC4gYG9uUmVqZWN0ZWRgIGhhbmRsZXJzIGFyZSBjYWxsZWQgaW4gdGhl
IG9yaWdpbmFsIG9yZGVyIGV2ZW4gd2hlbiBvbmUgaGFuZGxlciBpcyBhZGRlZCBpbnNpZGUgYW5v
dGhlciBoYW5kbGVyIGltbWVkaWF0ZWx5LXJlamVjdGVkCitQQVNTIDIuMi42OiBgdGhlbmAgbWF5
IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4yOiBJ
Zi93aGVuIGBwcm9taXNlYCBpcyByZWplY3RlZCwgYWxsIHJlc3BlY3RpdmUgYG9uUmVqZWN0ZWRg
IGNhbGxiYWNrcyBtdXN0IGV4ZWN1dGUgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5n
IGNhbGxzIHRvIGB0aGVuYC4gYG9uUmVqZWN0ZWRgIGhhbmRsZXJzIGFyZSBjYWxsZWQgaW4gdGhl
IG9yaWdpbmFsIG9yZGVyIGV2ZW4gd2hlbiBvbmUgaGFuZGxlciBpcyBhZGRlZCBpbnNpZGUgYW5v
dGhlciBoYW5kbGVyIGV2ZW50dWFsbHktcmVqZWN0ZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0
IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQs
IG9uUmVqZWN0ZWQpYCBpcyBhIHByb21pc2UKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVy
biBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVq
ZWN0ZWQpYCAyLjIuNy4xOiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAg
cmV0dXJucyBhIHZhbHVlIGB4YCwgcnVuIHRoZSBQcm9taXNlIFJlc29sdXRpb24gUHJvY2VkdXJl
IGBbW1Jlc29sdmVdXShwcm9taXNlMiwgeClgIHNlZSBzZXBhcmF0ZSAzLjMgdGVzdHMKK1BBU1Mg
Mi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2Ux
LnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVs
ZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNl
MmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29uIGlz
IGB1bmRlZmluZWRgIGFscmVhZHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCBy
ZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBv
blJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0
ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQg
d2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBgdW5kZWZpbmVkYCBpbW1lZGlh
dGVseS1mdWxmaWxsZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6
IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIu
Ny4yOiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4
Y2VwdGlvbiBgZWAsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUg
cmVhc29uLiBUaGUgcmVhc29uIGlzIGB1bmRlZmluZWRgIGV2ZW50dWFsbHktZnVsZmlsbGVkCitQ
QVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9t
aXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBv
bkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJv
bWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNv
biBpcyBgdW5kZWZpbmVkYCBhbHJlYWR5LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVz
dCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVk
LCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVq
ZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0
ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBgdW5kZWZpbmVkYCBpbW1l
ZGlhdGVseS1yZWplY3RlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlz
ZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIu
Mi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4g
ZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRo
ZSByZWFzb24uIFRoZSByZWFzb24gaXMgYHVuZGVmaW5lZGAgZXZlbnR1YWxseS1yZWplY3RlZAor
UEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJv
bWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhlciBg
b25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHBy
b21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSByZWFz
b24gaXMgYG51bGxgIGFscmVhZHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCBy
ZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBv
blJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0
ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQg
d2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBgbnVsbGAgaW1tZWRpYXRlbHkt
ZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJv
bWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjog
SWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRp
b24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNv
bi4gVGhlIHJlYXNvbiBpcyBgbnVsbGAgZXZlbnR1YWxseS1mdWxmaWxsZWQKK1BBU1MgMi4yLjc6
IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4o
b25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVk
YCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNlMmAgbXVz
dCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29uIGlzIGBudWxs
YCBhbHJlYWR5LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9t
aXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAg
Mi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBh
biBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMg
dGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBgbnVsbGAgaW1tZWRpYXRlbHktcmVqZWN0ZWQKK1BB
U1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21p
c2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9u
RnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9t
aXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29u
IGlzIGBudWxsYCBldmVudHVhbGx5LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCBy
ZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBv
blJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0
ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQg
d2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBgZmFsc2VgIGFscmVhZHktZnVs
ZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlz
ZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYg
ZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24g
YGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4g
VGhlIHJlYXNvbiBpcyBgZmFsc2VgIGltbWVkaWF0ZWx5LWZ1bGZpbGxlZAorUEFTUyAyLjIuNzog
YHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihv
bkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRg
IG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0
IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSByZWFzb24gaXMgYGZhbHNl
YCBldmVudHVhbGx5LWZ1bGZpbGxlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEg
cHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3Rl
ZClgIDIuMi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJv
d3MgYW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVg
IGFzIHRoZSByZWFzb24uIFRoZSByZWFzb24gaXMgYGZhbHNlYCBhbHJlYWR5LXJlamVjdGVkCitQ
QVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9t
aXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBv
bkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJv
bWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNv
biBpcyBgZmFsc2VgIGltbWVkaWF0ZWx5LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVz
dCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVk
LCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVq
ZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0
ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBgZmFsc2VgIGV2ZW50dWFs
bHktcmVqZWN0ZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBw
cm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4y
OiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2Vw
dGlvbiBgZWAsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVh
c29uLiBUaGUgcmVhc29uIGlzIGAwYCBhbHJlYWR5LWZ1bGZpbGxlZAorUEFTUyAyLjIuNzogYHRo
ZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1
bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRgIG9y
IGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0IGJl
IHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSByZWFzb24gaXMgYDBgIGltbWVk
aWF0ZWx5LWZ1bGZpbGxlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlz
ZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIu
Mi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4g
ZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRo
ZSByZWFzb24uIFRoZSByZWFzb24gaXMgYDBgIGV2ZW50dWFsbHktZnVsZmlsbGVkCitQQVNTIDIu
Mi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50
aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZp
bGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJg
IG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBg
MGAgYWxyZWFkeS1yZWplY3RlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJv
bWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClg
IDIuMi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3Mg
YW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFz
IHRoZSByZWFzb24uIFRoZSByZWFzb24gaXMgYDBgIGltbWVkaWF0ZWx5LXJlamVjdGVkCitQQVNT
IDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNl
MS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1
bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlz
ZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBp
cyBgMGAgZXZlbnR1YWxseS1yZWplY3RlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJu
IGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWpl
Y3RlZClgIDIuMi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0
aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGgg
YGVgIGFzIHRoZSByZWFzb24uIFRoZSByZWFzb24gaXMgYW4gZXJyb3IgYWxyZWFkeS1mdWxmaWxs
ZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9
IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRo
ZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAs
IGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUg
cmVhc29uIGlzIGFuIGVycm9yIGltbWVkaWF0ZWx5LWZ1bGZpbGxlZAorUEFTUyAyLjIuNzogYHRo
ZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1
bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRgIG9y
IGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0IGJl
IHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSByZWFzb24gaXMgYW4gZXJyb3Ig
ZXZlbnR1YWxseS1mdWxmaWxsZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHBy
b21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQp
YCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dz
IGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBh
cyB0aGUgcmVhc29uLiBUaGUgcmVhc29uIGlzIGFuIGVycm9yIGFscmVhZHktcmVqZWN0ZWQKK1BB
U1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21p
c2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9u
RnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9t
aXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29u
IGlzIGFuIGVycm9yIGltbWVkaWF0ZWx5LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVz
dCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVk
LCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVq
ZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0
ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBhbiBlcnJvciBldmVudHVh
bGx5LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBg
cHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcu
MjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNl
cHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJl
YXNvbi4gVGhlIHJlYXNvbiBpcyBhbiBlcnJvciB3aXRob3V0IGEgc3RhY2sgYWxyZWFkeS1mdWxm
aWxsZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNl
MiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBl
aXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBg
ZWAsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBU
aGUgcmVhc29uIGlzIGFuIGVycm9yIHdpdGhvdXQgYSBzdGFjayBpbW1lZGlhdGVseS1mdWxmaWxs
ZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9
IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRo
ZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAs
IGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUg
cmVhc29uIGlzIGFuIGVycm9yIHdpdGhvdXQgYSBzdGFjayBldmVudHVhbGx5LWZ1bGZpbGxlZAor
UEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJv
bWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhlciBg
b25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHBy
b21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSByZWFz
b24gaXMgYW4gZXJyb3Igd2l0aG91dCBhIHN0YWNrIGFscmVhZHktcmVqZWN0ZWQKK1BBU1MgMi4y
Ljc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRo
ZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVsZmls
bGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNlMmAg
bXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29uIGlzIGFu
IGVycm9yIHdpdGhvdXQgYSBzdGFjayBpbW1lZGlhdGVseS1yZWplY3RlZAorUEFTUyAyLjIuNzog
YHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihv
bkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRg
IG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0
IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSByZWFzb24gaXMgYW4gZXJy
b3Igd2l0aG91dCBhIHN0YWNrIGV2ZW50dWFsbHktcmVqZWN0ZWQKK1BBU1MgMi4yLjc6IGB0aGVu
YCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxm
aWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBvciBg
b25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNlMmAgbXVzdCBiZSBy
ZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29uIGlzIGEgZGF0ZSBhbHJl
YWR5LWZ1bGZpbGxlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTog
YHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43
LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhj
ZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSBy
ZWFzb24uIFRoZSByZWFzb24gaXMgYSBkYXRlIGltbWVkaWF0ZWx5LWZ1bGZpbGxlZAorUEFTUyAy
LjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEu
dGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhlciBgb25GdWxm
aWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2Uy
YCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSByZWFzb24gaXMg
YSBkYXRlIGV2ZW50dWFsbHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1
cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJl
amVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRg
IHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0
aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBhIGRhdGUgYWxyZWFkeS1yZWplY3Rl
ZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0g
cHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhl
ciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwg
YHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSBy
ZWFzb24gaXMgYSBkYXRlIGltbWVkaWF0ZWx5LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAg
bXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmls
bGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9u
UmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVq
ZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBhIGRhdGUgZXZlbnR1
YWxseS1yZWplY3RlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTog
YHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43
LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhj
ZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSBy
ZWFzb24uIFRoZSByZWFzb24gaXMgYW4gb2JqZWN0IGFscmVhZHktZnVsZmlsbGVkCitQQVNTIDIu
Mi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50
aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZp
bGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJg
IG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBh
biBvYmplY3QgaW1tZWRpYXRlbHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCBy
ZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBv
blJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0
ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQg
d2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBhbiBvYmplY3QgZXZlbnR1YWxs
eS1mdWxmaWxsZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBw
cm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4y
OiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2Vw
dGlvbiBgZWAsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVh
c29uLiBUaGUgcmVhc29uIGlzIGFuIG9iamVjdCBhbHJlYWR5LXJlamVjdGVkCitQQVNTIDIuMi43
OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVu
KG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxl
ZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11
c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBhbiBv
YmplY3QgaW1tZWRpYXRlbHktcmVqZWN0ZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVy
biBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVq
ZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAg
dGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRo
IGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29uIGlzIGFuIG9iamVjdCBldmVudHVhbGx5LXJl
amVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlz
ZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYg
ZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24g
YGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4g
VGhlIHJlYXNvbiBpcyBhbiBhbHdheXMtcGVuZGluZyB0aGVuYWJsZSBhbHJlYWR5LWZ1bGZpbGxl
ZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0g
cHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhl
ciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwg
YHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSBy
ZWFzb24gaXMgYW4gYWx3YXlzLXBlbmRpbmcgdGhlbmFibGUgaW1tZWRpYXRlbHktZnVsZmlsbGVk
CitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBw
cm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVy
IGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBg
cHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJl
YXNvbiBpcyBhbiBhbHdheXMtcGVuZGluZyB0aGVuYWJsZSBldmVudHVhbGx5LWZ1bGZpbGxlZAor
UEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJv
bWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhlciBg
b25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHBy
b21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSByZWFz
b24gaXMgYW4gYWx3YXlzLXBlbmRpbmcgdGhlbmFibGUgYWxyZWFkeS1yZWplY3RlZAorUEFTUyAy
LjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEu
dGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhlciBgb25GdWxm
aWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2Uy
YCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSByZWFzb24gaXMg
YW4gYWx3YXlzLXBlbmRpbmcgdGhlbmFibGUgaW1tZWRpYXRlbHktcmVqZWN0ZWQKK1BBU1MgMi4y
Ljc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRo
ZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVsZmls
bGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNlMmAg
bXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29uIGlzIGFu
IGFsd2F5cy1wZW5kaW5nIHRoZW5hYmxlIGV2ZW50dWFsbHktcmVqZWN0ZWQKK1BBU1MgMi4yLjc6
IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4o
b25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVk
YCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNlMmAgbXVz
dCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29uIGlzIGEgZnVs
ZmlsbGVkIHByb21pc2UgYWxyZWFkeS1mdWxmaWxsZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0
IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQs
IG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWpl
Y3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3Rl
ZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29uIGlzIGEgZnVsZmlsbGVkIHByb21p
c2UgaW1tZWRpYXRlbHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4g
YSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVj
dGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRo
cm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBg
ZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBhIGZ1bGZpbGxlZCBwcm9taXNlIGV2ZW50
dWFsbHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNl
OiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4y
LjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBl
eGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhl
IHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBhIGZ1bGZpbGxlZCBwcm9taXNlIGFscmVhZHktcmVqZWN0
ZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9
IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRo
ZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAs
IGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUg
cmVhc29uIGlzIGEgZnVsZmlsbGVkIHByb21pc2UgaW1tZWRpYXRlbHktcmVqZWN0ZWQKK1BBU1Mg
Mi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2Ux
LnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVs
ZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNl
MmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29uIGlz
IGEgZnVsZmlsbGVkIHByb21pc2UgZXZlbnR1YWxseS1yZWplY3RlZAorUEFTUyAyLjIuNzogYHRo
ZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1
bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRgIG9y
IGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0IGJl
IHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSByZWFzb24gaXMgYSByZWplY3Rl
ZCBwcm9taXNlIGFscmVhZHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1
cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJl
amVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRg
IHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0
aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBhIHJlamVjdGVkIHByb21pc2UgaW1t
ZWRpYXRlbHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9t
aXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAg
Mi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBh
biBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMg
dGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBhIHJlamVjdGVkIHByb21pc2UgZXZlbnR1YWxseS1m
dWxmaWxsZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9t
aXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJ
ZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlv
biBgZWAsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29u
LiBUaGUgcmVhc29uIGlzIGEgcmVqZWN0ZWQgcHJvbWlzZSBhbHJlYWR5LXJlamVjdGVkCitQQVNT
IDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNl
MS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1
bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlz
ZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBp
cyBhIHJlamVjdGVkIHByb21pc2UgaW1tZWRpYXRlbHktcmVqZWN0ZWQKK1BBU1MgMi4yLjc6IGB0
aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25G
dWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBv
ciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNlMmAgbXVzdCBi
ZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29uIGlzIGEgcmVqZWN0
ZWQgcHJvbWlzZSBldmVudHVhbGx5LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCBy
ZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBv
blJlamVjdGVkKWAgMi4yLjcuMzogSWYgYG9uRnVsZmlsbGVkYCBpcyBub3QgYSBmdW5jdGlvbiBh
bmQgYHByb21pc2UxYCBpcyBmdWxmaWxsZWQsIGBwcm9taXNlMmAgbXVzdCBiZSBmdWxmaWxsZWQg
d2l0aCB0aGUgc2FtZSB2YWx1ZS4gYG9uRnVsZmlsbGVkYCBpcyBgdW5kZWZpbmVkYCBhbHJlYWR5
LWZ1bGZpbGxlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHBy
b21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjM6
IElmIGBvbkZ1bGZpbGxlZGAgaXMgbm90IGEgZnVuY3Rpb24gYW5kIGBwcm9taXNlMWAgaXMgZnVs
ZmlsbGVkLCBgcHJvbWlzZTJgIG11c3QgYmUgZnVsZmlsbGVkIHdpdGggdGhlIHNhbWUgdmFsdWUu
IGBvbkZ1bGZpbGxlZGAgaXMgYHVuZGVmaW5lZGAgaW1tZWRpYXRlbHktZnVsZmlsbGVkCitQQVNT
IDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNl
MS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMzogSWYgYG9uRnVsZmlsbGVk
YCBpcyBub3QgYSBmdW5jdGlvbiBhbmQgYHByb21pc2UxYCBpcyBmdWxmaWxsZWQsIGBwcm9taXNl
MmAgbXVzdCBiZSBmdWxmaWxsZWQgd2l0aCB0aGUgc2FtZSB2YWx1ZS4gYG9uRnVsZmlsbGVkYCBp
cyBgdW5kZWZpbmVkYCBldmVudHVhbGx5LWZ1bGZpbGxlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11
c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxl
ZCwgb25SZWplY3RlZClgIDIuMi43LjM6IElmIGBvbkZ1bGZpbGxlZGAgaXMgbm90IGEgZnVuY3Rp
b24gYW5kIGBwcm9taXNlMWAgaXMgZnVsZmlsbGVkLCBgcHJvbWlzZTJgIG11c3QgYmUgZnVsZmls
bGVkIHdpdGggdGhlIHNhbWUgdmFsdWUuIGBvbkZ1bGZpbGxlZGAgaXMgYG51bGxgIGFscmVhZHkt
ZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJv
bWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMzog
SWYgYG9uRnVsZmlsbGVkYCBpcyBub3QgYSBmdW5jdGlvbiBhbmQgYHByb21pc2UxYCBpcyBmdWxm
aWxsZWQsIGBwcm9taXNlMmAgbXVzdCBiZSBmdWxmaWxsZWQgd2l0aCB0aGUgc2FtZSB2YWx1ZS4g
YG9uRnVsZmlsbGVkYCBpcyBgbnVsbGAgaW1tZWRpYXRlbHktZnVsZmlsbGVkCitQQVNTIDIuMi43
OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVu
KG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMzogSWYgYG9uRnVsZmlsbGVkYCBpcyBu
b3QgYSBmdW5jdGlvbiBhbmQgYHByb21pc2UxYCBpcyBmdWxmaWxsZWQsIGBwcm9taXNlMmAgbXVz
dCBiZSBmdWxmaWxsZWQgd2l0aCB0aGUgc2FtZSB2YWx1ZS4gYG9uRnVsZmlsbGVkYCBpcyBgbnVs
bGAgZXZlbnR1YWxseS1mdWxmaWxsZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBh
IHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0
ZWQpYCAyLjIuNy4zOiBJZiBgb25GdWxmaWxsZWRgIGlzIG5vdCBhIGZ1bmN0aW9uIGFuZCBgcHJv
bWlzZTFgIGlzIGZ1bGZpbGxlZCwgYHByb21pc2UyYCBtdXN0IGJlIGZ1bGZpbGxlZCB3aXRoIHRo
ZSBzYW1lIHZhbHVlLiBgb25GdWxmaWxsZWRgIGlzIGBmYWxzZWAgYWxyZWFkeS1mdWxmaWxsZWQK
K1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHBy
b21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4zOiBJZiBgb25GdWxm
aWxsZWRgIGlzIG5vdCBhIGZ1bmN0aW9uIGFuZCBgcHJvbWlzZTFgIGlzIGZ1bGZpbGxlZCwgYHBy
b21pc2UyYCBtdXN0IGJlIGZ1bGZpbGxlZCB3aXRoIHRoZSBzYW1lIHZhbHVlLiBgb25GdWxmaWxs
ZWRgIGlzIGBmYWxzZWAgaW1tZWRpYXRlbHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAg
bXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmls
bGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMzogSWYgYG9uRnVsZmlsbGVkYCBpcyBub3QgYSBmdW5j
dGlvbiBhbmQgYHByb21pc2UxYCBpcyBmdWxmaWxsZWQsIGBwcm9taXNlMmAgbXVzdCBiZSBmdWxm
aWxsZWQgd2l0aCB0aGUgc2FtZSB2YWx1ZS4gYG9uRnVsZmlsbGVkYCBpcyBgZmFsc2VgIGV2ZW50
dWFsbHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNl
OiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4y
LjcuMzogSWYgYG9uRnVsZmlsbGVkYCBpcyBub3QgYSBmdW5jdGlvbiBhbmQgYHByb21pc2UxYCBp
cyBmdWxmaWxsZWQsIGBwcm9taXNlMmAgbXVzdCBiZSBmdWxmaWxsZWQgd2l0aCB0aGUgc2FtZSB2
YWx1ZS4gYG9uRnVsZmlsbGVkYCBpcyBgNWAgYWxyZWFkeS1mdWxmaWxsZWQKK1BBU1MgMi4yLjc6
IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4o
b25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4zOiBJZiBgb25GdWxmaWxsZWRgIGlzIG5v
dCBhIGZ1bmN0aW9uIGFuZCBgcHJvbWlzZTFgIGlzIGZ1bGZpbGxlZCwgYHByb21pc2UyYCBtdXN0
IGJlIGZ1bGZpbGxlZCB3aXRoIHRoZSBzYW1lIHZhbHVlLiBgb25GdWxmaWxsZWRgIGlzIGA1YCBp
bW1lZGlhdGVseS1mdWxmaWxsZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHBy
b21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQp
YCAyLjIuNy4zOiBJZiBgb25GdWxmaWxsZWRgIGlzIG5vdCBhIGZ1bmN0aW9uIGFuZCBgcHJvbWlz
ZTFgIGlzIGZ1bGZpbGxlZCwgYHByb21pc2UyYCBtdXN0IGJlIGZ1bGZpbGxlZCB3aXRoIHRoZSBz
YW1lIHZhbHVlLiBgb25GdWxmaWxsZWRgIGlzIGA1YCBldmVudHVhbGx5LWZ1bGZpbGxlZAorUEFT
UyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlz
ZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjM6IElmIGBvbkZ1bGZpbGxl
ZGAgaXMgbm90IGEgZnVuY3Rpb24gYW5kIGBwcm9taXNlMWAgaXMgZnVsZmlsbGVkLCBgcHJvbWlz
ZTJgIG11c3QgYmUgZnVsZmlsbGVkIHdpdGggdGhlIHNhbWUgdmFsdWUuIGBvbkZ1bGZpbGxlZGAg
aXMgYW4gb2JqZWN0IGFscmVhZHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCBy
ZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBv
blJlamVjdGVkKWAgMi4yLjcuMzogSWYgYG9uRnVsZmlsbGVkYCBpcyBub3QgYSBmdW5jdGlvbiBh
bmQgYHByb21pc2UxYCBpcyBmdWxmaWxsZWQsIGBwcm9taXNlMmAgbXVzdCBiZSBmdWxmaWxsZWQg
d2l0aCB0aGUgc2FtZSB2YWx1ZS4gYG9uRnVsZmlsbGVkYCBpcyBhbiBvYmplY3QgaW1tZWRpYXRl
bHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBg
cHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcu
MzogSWYgYG9uRnVsZmlsbGVkYCBpcyBub3QgYSBmdW5jdGlvbiBhbmQgYHByb21pc2UxYCBpcyBm
dWxmaWxsZWQsIGBwcm9taXNlMmAgbXVzdCBiZSBmdWxmaWxsZWQgd2l0aCB0aGUgc2FtZSB2YWx1
ZS4gYG9uRnVsZmlsbGVkYCBpcyBhbiBvYmplY3QgZXZlbnR1YWxseS1mdWxmaWxsZWQKK1BBU1Mg
Mi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2Ux
LnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4zOiBJZiBgb25GdWxmaWxsZWRg
IGlzIG5vdCBhIGZ1bmN0aW9uIGFuZCBgcHJvbWlzZTFgIGlzIGZ1bGZpbGxlZCwgYHByb21pc2Uy
YCBtdXN0IGJlIGZ1bGZpbGxlZCB3aXRoIHRoZSBzYW1lIHZhbHVlLiBgb25GdWxmaWxsZWRgIGlz
IGFuIGFycmF5IGNvbnRhaW5pbmcgYSBmdW5jdGlvbiBhbHJlYWR5LWZ1bGZpbGxlZAorUEFTUyAy
LjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEu
dGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjM6IElmIGBvbkZ1bGZpbGxlZGAg
aXMgbm90IGEgZnVuY3Rpb24gYW5kIGBwcm9taXNlMWAgaXMgZnVsZmlsbGVkLCBgcHJvbWlzZTJg
IG11c3QgYmUgZnVsZmlsbGVkIHdpdGggdGhlIHNhbWUgdmFsdWUuIGBvbkZ1bGZpbGxlZGAgaXMg
YW4gYXJyYXkgY29udGFpbmluZyBhIGZ1bmN0aW9uIGltbWVkaWF0ZWx5LWZ1bGZpbGxlZAorUEFT
UyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlz
ZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjM6IElmIGBvbkZ1bGZpbGxl
ZGAgaXMgbm90IGEgZnVuY3Rpb24gYW5kIGBwcm9taXNlMWAgaXMgZnVsZmlsbGVkLCBgcHJvbWlz
ZTJgIG11c3QgYmUgZnVsZmlsbGVkIHdpdGggdGhlIHNhbWUgdmFsdWUuIGBvbkZ1bGZpbGxlZGAg
aXMgYW4gYXJyYXkgY29udGFpbmluZyBhIGZ1bmN0aW9uIGV2ZW50dWFsbHktZnVsZmlsbGVkCitQ
QVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9t
aXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuNDogSWYgYG9uUmVqZWN0
ZWRgIGlzIG5vdCBhIGZ1bmN0aW9uIGFuZCBgcHJvbWlzZTFgIGlzIHJlamVjdGVkLCBgcHJvbWlz
ZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZSByZWFzb24uIGBvblJlamVjdGVkYCBp
cyBgdW5kZWZpbmVkYCBhbHJlYWR5LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCBy
ZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBv
blJlamVjdGVkKWAgMi4yLjcuNDogSWYgYG9uUmVqZWN0ZWRgIGlzIG5vdCBhIGZ1bmN0aW9uIGFu
ZCBgcHJvbWlzZTFgIGlzIHJlamVjdGVkLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0
aCB0aGUgc2FtZSByZWFzb24uIGBvblJlamVjdGVkYCBpcyBgdW5kZWZpbmVkYCBpbW1lZGlhdGVs
eS1yZWplY3RlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHBy
b21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjQ6
IElmIGBvblJlamVjdGVkYCBpcyBub3QgYSBmdW5jdGlvbiBhbmQgYHByb21pc2UxYCBpcyByZWpl
Y3RlZCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggdGhlIHNhbWUgcmVhc29uLiBg
b25SZWplY3RlZGAgaXMgYHVuZGVmaW5lZGAgZXZlbnR1YWxseS1yZWplY3RlZAorUEFTUyAyLjIu
NzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhl
bihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjQ6IElmIGBvblJlamVjdGVkYCBpcyBu
b3QgYSBmdW5jdGlvbiBhbmQgYHByb21pc2UxYCBpcyByZWplY3RlZCwgYHByb21pc2UyYCBtdXN0
IGJlIHJlamVjdGVkIHdpdGggdGhlIHNhbWUgcmVhc29uLiBgb25SZWplY3RlZGAgaXMgYG51bGxg
IGFscmVhZHktcmVqZWN0ZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21p
c2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAy
LjIuNy40OiBJZiBgb25SZWplY3RlZGAgaXMgbm90IGEgZnVuY3Rpb24gYW5kIGBwcm9taXNlMWAg
aXMgcmVqZWN0ZWQsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIHRoZSBzYW1lIHJl
YXNvbi4gYG9uUmVqZWN0ZWRgIGlzIGBudWxsYCBpbW1lZGlhdGVseS1yZWplY3RlZAorUEFTUyAy
LjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEu
dGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjQ6IElmIGBvblJlamVjdGVkYCBp
cyBub3QgYSBmdW5jdGlvbiBhbmQgYHByb21pc2UxYCBpcyByZWplY3RlZCwgYHByb21pc2UyYCBt
dXN0IGJlIHJlamVjdGVkIHdpdGggdGhlIHNhbWUgcmVhc29uLiBgb25SZWplY3RlZGAgaXMgYG51
bGxgIGV2ZW50dWFsbHktcmVqZWN0ZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBh
IHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0
ZWQpYCAyLjIuNy40OiBJZiBgb25SZWplY3RlZGAgaXMgbm90IGEgZnVuY3Rpb24gYW5kIGBwcm9t
aXNlMWAgaXMgcmVqZWN0ZWQsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIHRoZSBz
YW1lIHJlYXNvbi4gYG9uUmVqZWN0ZWRgIGlzIGBmYWxzZWAgYWxyZWFkeS1yZWplY3RlZAorUEFT
UyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlz
ZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjQ6IElmIGBvblJlamVjdGVk
YCBpcyBub3QgYSBmdW5jdGlvbiBhbmQgYHByb21pc2UxYCBpcyByZWplY3RlZCwgYHByb21pc2Uy
YCBtdXN0IGJlIHJlamVjdGVkIHdpdGggdGhlIHNhbWUgcmVhc29uLiBgb25SZWplY3RlZGAgaXMg
YGZhbHNlYCBpbW1lZGlhdGVseS1yZWplY3RlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0
dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25S
ZWplY3RlZClgIDIuMi43LjQ6IElmIGBvblJlamVjdGVkYCBpcyBub3QgYSBmdW5jdGlvbiBhbmQg
YHByb21pc2UxYCBpcyByZWplY3RlZCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGgg
dGhlIHNhbWUgcmVhc29uLiBgb25SZWplY3RlZGAgaXMgYGZhbHNlYCBldmVudHVhbGx5LXJlamVj
dGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIg
PSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuNDogSWYgYG9u
UmVqZWN0ZWRgIGlzIG5vdCBhIGZ1bmN0aW9uIGFuZCBgcHJvbWlzZTFgIGlzIHJlamVjdGVkLCBg
cHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZSByZWFzb24uIGBvblJlamVj
dGVkYCBpcyBgNWAgYWxyZWFkeS1yZWplY3RlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0
dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25S
ZWplY3RlZClgIDIuMi43LjQ6IElmIGBvblJlamVjdGVkYCBpcyBub3QgYSBmdW5jdGlvbiBhbmQg
YHByb21pc2UxYCBpcyByZWplY3RlZCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGgg
dGhlIHNhbWUgcmVhc29uLiBgb25SZWplY3RlZGAgaXMgYDVgIGltbWVkaWF0ZWx5LXJlamVjdGVk
CitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBw
cm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuNDogSWYgYG9uUmVq
ZWN0ZWRgIGlzIG5vdCBhIGZ1bmN0aW9uIGFuZCBgcHJvbWlzZTFgIGlzIHJlamVjdGVkLCBgcHJv
bWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZSByZWFzb24uIGBvblJlamVjdGVk
YCBpcyBgNWAgZXZlbnR1YWxseS1yZWplY3RlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0
dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25S
ZWplY3RlZClgIDIuMi43LjQ6IElmIGBvblJlamVjdGVkYCBpcyBub3QgYSBmdW5jdGlvbiBhbmQg
YHByb21pc2UxYCBpcyByZWplY3RlZCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGgg
dGhlIHNhbWUgcmVhc29uLiBgb25SZWplY3RlZGAgaXMgYW4gb2JqZWN0IGFscmVhZHktcmVqZWN0
ZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9
IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy40OiBJZiBgb25S
ZWplY3RlZGAgaXMgbm90IGEgZnVuY3Rpb24gYW5kIGBwcm9taXNlMWAgaXMgcmVqZWN0ZWQsIGBw
cm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIHRoZSBzYW1lIHJlYXNvbi4gYG9uUmVqZWN0
ZWRgIGlzIGFuIG9iamVjdCBpbW1lZGlhdGVseS1yZWplY3RlZAorUEFTUyAyLjIuNzogYHRoZW5g
IG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZp
bGxlZCwgb25SZWplY3RlZClgIDIuMi43LjQ6IElmIGBvblJlamVjdGVkYCBpcyBub3QgYSBmdW5j
dGlvbiBhbmQgYHByb21pc2UxYCBpcyByZWplY3RlZCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVj
dGVkIHdpdGggdGhlIHNhbWUgcmVhc29uLiBgb25SZWplY3RlZGAgaXMgYW4gb2JqZWN0IGV2ZW50
dWFsbHktcmVqZWN0ZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6
IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIu
Ny40OiBJZiBgb25SZWplY3RlZGAgaXMgbm90IGEgZnVuY3Rpb24gYW5kIGBwcm9taXNlMWAgaXMg
cmVqZWN0ZWQsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIHRoZSBzYW1lIHJlYXNv
bi4gYG9uUmVqZWN0ZWRgIGlzIGFuIGFycmF5IGNvbnRhaW5pbmcgYSBmdW5jdGlvbiBhbHJlYWR5
LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJv
bWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuNDog
SWYgYG9uUmVqZWN0ZWRgIGlzIG5vdCBhIGZ1bmN0aW9uIGFuZCBgcHJvbWlzZTFgIGlzIHJlamVj
dGVkLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZSByZWFzb24uIGBv
blJlamVjdGVkYCBpcyBhbiBhcnJheSBjb250YWluaW5nIGEgZnVuY3Rpb24gaW1tZWRpYXRlbHkt
cmVqZWN0ZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9t
aXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy40OiBJ
ZiBgb25SZWplY3RlZGAgaXMgbm90IGEgZnVuY3Rpb24gYW5kIGBwcm9taXNlMWAgaXMgcmVqZWN0
ZWQsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIHRoZSBzYW1lIHJlYXNvbi4gYG9u
UmVqZWN0ZWRgIGlzIGFuIGFycmF5IGNvbnRhaW5pbmcgYSBmdW5jdGlvbiBldmVudHVhbGx5LXJl
amVjdGVkCitQQVNTIDIuMy4xOiBJZiBgcHJvbWlzZWAgYW5kIGB4YCByZWZlciB0byB0aGUgc2Ft
ZSBvYmplY3QsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBhIGBUeXBlRXJyb3InIGFzIHRoZSByZWFz
b24uIHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4xOiBJZiBg
cHJvbWlzZWAgYW5kIGB4YCByZWZlciB0byB0aGUgc2FtZSBvYmplY3QsIHJlamVjdCBgcHJvbWlz
ZWAgd2l0aCBhIGBUeXBlRXJyb3InIGFzIHRoZSByZWFzb24uIHZpYSByZXR1cm4gZnJvbSBhIHJl
amVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjI6IElmIGB4YCBpcyBhIHByb21pc2UsIGFkb3B0IGl0
cyBzdGF0ZSAyLjMuMi4xOiBJZiBgeGAgaXMgcGVuZGluZywgYHByb21pc2VgIG11c3QgcmVtYWlu
IHBlbmRpbmcgdW50aWwgYHhgIGlzIGZ1bGZpbGxlZCBvciByZWplY3RlZC4gdmlhIHJldHVybiBm
cm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjI6IElmIGB4YCBpcyBhIHByb21pc2Us
IGFkb3B0IGl0cyBzdGF0ZSAyLjMuMi4xOiBJZiBgeGAgaXMgcGVuZGluZywgYHByb21pc2VgIG11
c3QgcmVtYWluIHBlbmRpbmcgdW50aWwgYHhgIGlzIGZ1bGZpbGxlZCBvciByZWplY3RlZC4gdmlh
IHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMjogSWYgYHhgIGlzIGEg
cHJvbWlzZSwgYWRvcHQgaXRzIHN0YXRlIDIuMy4yLjI6IElmL3doZW4gYHhgIGlzIGZ1bGZpbGxl
ZCwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCB0aGUgc2FtZSB2YWx1ZS4gYHhgIGlzIGFscmVhZHkt
ZnVsZmlsbGVkIHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4y
OiBJZiBgeGAgaXMgYSBwcm9taXNlLCBhZG9wdCBpdHMgc3RhdGUgMi4zLjIuMjogSWYvd2hlbiBg
eGAgaXMgZnVsZmlsbGVkLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIHRoZSBzYW1lIHZhbHVlLiBg
eGAgaXMgYWxyZWFkeS1mdWxmaWxsZWQgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMjogSWYgYHhgIGlzIGEgcHJvbWlzZSwgYWRvcHQgaXRzIHN0YXRlIDIuMy4y
LjI6IElmL3doZW4gYHhgIGlzIGZ1bGZpbGxlZCwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCB0aGUg
c2FtZSB2YWx1ZS4gYHhgIGlzIGV2ZW50dWFsbHktZnVsZmlsbGVkIHZpYSByZXR1cm4gZnJvbSBh
IGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4yOiBJZiBgeGAgaXMgYSBwcm9taXNlLCBhZG9w
dCBpdHMgc3RhdGUgMi4zLjIuMjogSWYvd2hlbiBgeGAgaXMgZnVsZmlsbGVkLCBmdWxmaWxsIGBw
cm9taXNlYCB3aXRoIHRoZSBzYW1lIHZhbHVlLiBgeGAgaXMgZXZlbnR1YWxseS1mdWxmaWxsZWQg
dmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMjogSWYgYHhgIGlz
IGEgcHJvbWlzZSwgYWRvcHQgaXRzIHN0YXRlIDIuMy4yLjM6IElmL3doZW4gYHhgIGlzIHJlamVj
dGVkLCByZWplY3QgYHByb21pc2VgIHdpdGggdGhlIHNhbWUgcmVhc29uLiBgeGAgaXMgYWxyZWFk
eS1yZWplY3RlZCB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMu
MjogSWYgYHhgIGlzIGEgcHJvbWlzZSwgYWRvcHQgaXRzIHN0YXRlIDIuMy4yLjM6IElmL3doZW4g
YHhgIGlzIHJlamVjdGVkLCByZWplY3QgYHByb21pc2VgIHdpdGggdGhlIHNhbWUgcmVhc29uLiBg
eGAgaXMgYWxyZWFkeS1yZWplY3RlZCB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNl
CitQQVNTIDIuMy4yOiBJZiBgeGAgaXMgYSBwcm9taXNlLCBhZG9wdCBpdHMgc3RhdGUgMi4zLjIu
MzogSWYvd2hlbiBgeGAgaXMgcmVqZWN0ZWQsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCB0aGUgc2Ft
ZSByZWFzb24uIGB4YCBpcyBldmVudHVhbGx5LXJlamVjdGVkIHZpYSByZXR1cm4gZnJvbSBhIGZ1
bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4yOiBJZiBgeGAgaXMgYSBwcm9taXNlLCBhZG9wdCBp
dHMgc3RhdGUgMi4zLjIuMzogSWYvd2hlbiBgeGAgaXMgcmVqZWN0ZWQsIHJlamVjdCBgcHJvbWlz
ZWAgd2l0aCB0aGUgc2FtZSByZWFzb24uIGB4YCBpcyBldmVudHVhbGx5LXJlamVjdGVkIHZpYSBy
ZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYg
YHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMTogTGV0IGB0aGVuYCBiZSBgeC50
aGVuYCBgeGAgaXMgYW4gb2JqZWN0IHdpdGggbnVsbCBwcm90b3R5cGUgdmlhIHJldHVybiBmcm9t
IGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFu
IG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMTogTGV0IGB0aGVuYCBiZSBgeC50aGVuYCBgeGAg
aXMgYW4gb2JqZWN0IHdpdGggbnVsbCBwcm90b3R5cGUgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4xOiBMZXQgYHRoZW5gIGJlIGB4LnRoZW5gIGB4YCBpcyBhbiBvYmpl
Y3Qgd2l0aCBub3JtYWwgT2JqZWN0LnByb3RvdHlwZSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxs
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4xOiBMZXQgYHRoZW5gIGJlIGB4LnRoZW5gIGB4YCBpcyBhbiBvYmpl
Y3Qgd2l0aCBub3JtYWwgT2JqZWN0LnByb3RvdHlwZSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3Rl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjE6IExldCBgdGhlbmAgYmUgYHgudGhlbmAgYHhgIGlzIGEgZnVuY3Rp
b24gdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMTogTGV0IGB0aGVu
YCBiZSBgeC50aGVuYCBgeGAgaXMgYSBmdW5jdGlvbiB2aWEgcmV0dXJuIGZyb20gYSByZWplY3Rl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjI6IElmIHJldHJpZXZpbmcgdGhlIHByb3BlcnR5IGB4LnRoZW5gIHJl
c3VsdHMgaW4gYSB0aHJvd24gZXhjZXB0aW9uIGBlYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGBl
YCBhcyB0aGUgcmVhc29uLiBgZWAgaXMgYHVuZGVmaW5lZGAgdmlhIHJldHVybiBmcm9tIGEgZnVs
ZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMjogSWYgcmV0cmlldmluZyB0aGUgcHJvcGVydHkgYHgudGhl
bmAgcmVzdWx0cyBpbiBhIHRocm93biBleGNlcHRpb24gYGVgLCByZWplY3QgYHByb21pc2VgIHdp
dGggYGVgIGFzIHRoZSByZWFzb24uIGBlYCBpcyBgdW5kZWZpbmVkYCB2aWEgcmV0dXJuIGZyb20g
YSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjI6IElmIHJldHJpZXZpbmcgdGhlIHByb3BlcnR5IGB4
LnRoZW5gIHJlc3VsdHMgaW4gYSB0aHJvd24gZXhjZXB0aW9uIGBlYCwgcmVqZWN0IGBwcm9taXNl
YCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBgZWAgaXMgYG51bGxgIHZpYSByZXR1cm4gZnJvbSBh
IGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjI6IElmIHJldHJpZXZpbmcgdGhlIHByb3BlcnR5IGB4
LnRoZW5gIHJlc3VsdHMgaW4gYSB0aHJvd24gZXhjZXB0aW9uIGBlYCwgcmVqZWN0IGBwcm9taXNl
YCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBgZWAgaXMgYG51bGxgIHZpYSByZXR1cm4gZnJvbSBh
IHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMjogSWYgcmV0cmlldmluZyB0aGUgcHJvcGVydHkgYHgu
dGhlbmAgcmVzdWx0cyBpbiBhIHRocm93biBleGNlcHRpb24gYGVgLCByZWplY3QgYHByb21pc2Vg
IHdpdGggYGVgIGFzIHRoZSByZWFzb24uIGBlYCBpcyBgZmFsc2VgIHZpYSByZXR1cm4gZnJvbSBh
IGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjI6IElmIHJldHJpZXZpbmcgdGhlIHByb3BlcnR5IGB4
LnRoZW5gIHJlc3VsdHMgaW4gYSB0aHJvd24gZXhjZXB0aW9uIGBlYCwgcmVqZWN0IGBwcm9taXNl
YCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBgZWAgaXMgYGZhbHNlYCB2aWEgcmV0dXJuIGZyb20g
YSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjI6IElmIHJldHJpZXZpbmcgdGhlIHByb3BlcnR5IGB4
LnRoZW5gIHJlc3VsdHMgaW4gYSB0aHJvd24gZXhjZXB0aW9uIGBlYCwgcmVqZWN0IGBwcm9taXNl
YCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBgZWAgaXMgYDBgIHZpYSByZXR1cm4gZnJvbSBhIGZ1
bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjI6IElmIHJldHJpZXZpbmcgdGhlIHByb3BlcnR5IGB4LnRo
ZW5gIHJlc3VsdHMgaW4gYSB0aHJvd24gZXhjZXB0aW9uIGBlYCwgcmVqZWN0IGBwcm9taXNlYCB3
aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBgZWAgaXMgYDBgIHZpYSByZXR1cm4gZnJvbSBhIHJlamVj
dGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMjogSWYgcmV0cmlldmluZyB0aGUgcHJvcGVydHkgYHgudGhlbmAg
cmVzdWx0cyBpbiBhIHRocm93biBleGNlcHRpb24gYGVgLCByZWplY3QgYHByb21pc2VgIHdpdGgg
YGVgIGFzIHRoZSByZWFzb24uIGBlYCBpcyBhbiBlcnJvciB2aWEgcmV0dXJuIGZyb20gYSBmdWxm
aWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0
IG9yIGZ1bmN0aW9uLCAyLjMuMy4yOiBJZiByZXRyaWV2aW5nIHRoZSBwcm9wZXJ0eSBgeC50aGVu
YCByZXN1bHRzIGluIGEgdGhyb3duIGV4Y2VwdGlvbiBgZWAsIHJlamVjdCBgcHJvbWlzZWAgd2l0
aCBgZWAgYXMgdGhlIHJlYXNvbi4gYGVgIGlzIGFuIGVycm9yIHZpYSByZXR1cm4gZnJvbSBhIHJl
amVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMjogSWYgcmV0cmlldmluZyB0aGUgcHJvcGVydHkgYHgudGhl
bmAgcmVzdWx0cyBpbiBhIHRocm93biBleGNlcHRpb24gYGVgLCByZWplY3QgYHByb21pc2VgIHdp
dGggYGVgIGFzIHRoZSByZWFzb24uIGBlYCBpcyBhbiBlcnJvciB3aXRob3V0IGEgc3RhY2sgdmlh
IHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMjogSWYgcmV0cmlldmluZyB0
aGUgcHJvcGVydHkgYHgudGhlbmAgcmVzdWx0cyBpbiBhIHRocm93biBleGNlcHRpb24gYGVgLCBy
ZWplY3QgYHByb21pc2VgIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIGBlYCBpcyBhbiBlcnJvciB3
aXRob3V0IGEgc3RhY2sgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4y
OiBJZiByZXRyaWV2aW5nIHRoZSBwcm9wZXJ0eSBgeC50aGVuYCByZXN1bHRzIGluIGEgdGhyb3du
IGV4Y2VwdGlvbiBgZWAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4g
YGVgIGlzIGEgZGF0ZSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4y
OiBJZiByZXRyaWV2aW5nIHRoZSBwcm9wZXJ0eSBgeC50aGVuYCByZXN1bHRzIGluIGEgdGhyb3du
IGV4Y2VwdGlvbiBgZWAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4g
YGVgIGlzIGEgZGF0ZSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjI6
IElmIHJldHJpZXZpbmcgdGhlIHByb3BlcnR5IGB4LnRoZW5gIHJlc3VsdHMgaW4gYSB0aHJvd24g
ZXhjZXB0aW9uIGBlYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBg
ZWAgaXMgYW4gb2JqZWN0IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjI6IElmIHJldHJpZXZpbmcgdGhlIHByb3BlcnR5IGB4LnRoZW5gIHJlc3VsdHMgaW4gYSB0aHJv
d24gZXhjZXB0aW9uIGBlYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGBlYCBhcyB0aGUgcmVhc29u
LiBgZWAgaXMgYW4gb2JqZWN0IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMjogSWYgcmV0cmlldmluZyB0aGUgcHJvcGVydHkgYHgudGhlbmAgcmVzdWx0cyBpbiBhIHRo
cm93biBleGNlcHRpb24gYGVgLCByZWplY3QgYHByb21pc2VgIHdpdGggYGVgIGFzIHRoZSByZWFz
b24uIGBlYCBpcyBhbiBhbHdheXMtcGVuZGluZyB0aGVuYWJsZSB2aWEgcmV0dXJuIGZyb20gYSBm
dWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4yOiBJZiByZXRyaWV2aW5nIHRoZSBwcm9wZXJ0eSBgeC50
aGVuYCByZXN1bHRzIGluIGEgdGhyb3duIGV4Y2VwdGlvbiBgZWAsIHJlamVjdCBgcHJvbWlzZWAg
d2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gYGVgIGlzIGFuIGFsd2F5cy1wZW5kaW5nIHRoZW5hYmxl
IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMjogSWYgcmV0cmlldmlu
ZyB0aGUgcHJvcGVydHkgYHgudGhlbmAgcmVzdWx0cyBpbiBhIHRocm93biBleGNlcHRpb24gYGVg
LCByZWplY3QgYHByb21pc2VgIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIGBlYCBpcyBhIGZ1bGZp
bGxlZCBwcm9taXNlIHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjI6
IElmIHJldHJpZXZpbmcgdGhlIHByb3BlcnR5IGB4LnRoZW5gIHJlc3VsdHMgaW4gYSB0aHJvd24g
ZXhjZXB0aW9uIGBlYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBg
ZWAgaXMgYSBmdWxmaWxsZWQgcHJvbWlzZSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjI6IElmIHJldHJpZXZpbmcgdGhlIHByb3BlcnR5IGB4LnRoZW5gIHJlc3VsdHMg
aW4gYSB0aHJvd24gZXhjZXB0aW9uIGBlYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGBlYCBhcyB0
aGUgcmVhc29uLiBgZWAgaXMgYSByZWplY3RlZCBwcm9taXNlIHZpYSByZXR1cm4gZnJvbSBhIGZ1
bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjI6IElmIHJldHJpZXZpbmcgdGhlIHByb3BlcnR5IGB4LnRo
ZW5gIHJlc3VsdHMgaW4gYSB0aHJvd24gZXhjZXB0aW9uIGBlYCwgcmVqZWN0IGBwcm9taXNlYCB3
aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBgZWAgaXMgYSByZWplY3RlZCBwcm9taXNlIHZpYSByZXR1
cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCBDYWxscyB3aXRoIGB4
YCBhcyBgdGhpc2AgYW5kIHR3byBmdW5jdGlvbiBhcmd1bWVudHMgdmlhIHJldHVybiBmcm9tIGEg
ZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCBDYWxscyB3aXRoIGB4YCBhcyBgdGhp
c2AgYW5kIHR3byBmdW5jdGlvbiBhcmd1bWVudHMgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQg
cHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1
bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4
YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQg
YXJndW1lbnQgYHJlamVjdFByb21pc2VgIFVzZXMgdGhlIG9yaWdpbmFsIHZhbHVlIG9mIGB0aGVu
YCB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIFVz
ZXMgdGhlIG9yaWdpbmFsIHZhbHVlIG9mIGB0aGVuYCB2aWEgcmV0dXJuIGZyb20gYSByZWplY3Rl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2Us
IHkpYCBgeWAgaXMgbm90IGEgdGhlbmFibGUgYHlgIGlzIGB1bmRlZmluZWRgIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmls
bGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQ
cm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlz
ZSwgeSlgIGB5YCBpcyBub3QgYSB0aGVuYWJsZSBgeWAgaXMgYHVuZGVmaW5lZGAgYHRoZW5gIGNh
bGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWpl
Y3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qg
b3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdp
dGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNl
Y29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZl
UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21p
c2UsIHkpYCBgeWAgaXMgbm90IGEgdGhlbmFibGUgYHlgIGlzIGB1bmRlZmluZWRgIGB0aGVuYCBj
YWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1
bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNv
bHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHBy
b21pc2UsIHkpYCBgeWAgaXMgbm90IGEgdGhlbmFibGUgYHlgIGlzIGB1bmRlZmluZWRgIGB0aGVu
YCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJl
c29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0o
cHJvbWlzZSwgeSlgIGB5YCBpcyBub3QgYSB0aGVuYWJsZSBgeWAgaXMgYG51bGxgIGB0aGVuYCBj
YWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVs
ZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQg
d2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQg
c2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29s
dmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJv
bWlzZSwgeSlgIGB5YCBpcyBub3QgYSB0aGVuYWJsZSBgeWAgaXMgYG51bGxgIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRo
IGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNv
bmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVBy
b21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNl
LCB5KWAgYHlgIGlzIG5vdCBhIHRoZW5hYmxlIGB5YCBpcyBgbnVsbGAgYHRoZW5gIGNhbGxzIGBy
ZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9t
aXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwg
eSlgIGB5YCBpcyBub3QgYSB0aGVuYWJsZSBgeWAgaXMgYG51bGxgIGB0aGVuYCBjYWxscyBgcmVz
b2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlg
IGB5YCBpcyBub3QgYSB0aGVuYWJsZSBgeWAgaXMgYGZhbHNlYCBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAg
aXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBg
eWAgaXMgbm90IGEgdGhlbmFibGUgYHlgIGlzIGBmYWxzZWAgYHRoZW5gIGNhbGxzIGByZXNvbHZl
UHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNl
CitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24s
IDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0
aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVu
dCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMg
Y2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAg
aXMgbm90IGEgdGhlbmFibGUgYHlgIGlzIGBmYWxzZWAgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJv
bWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBp
cyBub3QgYSB0aGVuYWJsZSBgeWAgaXMgYGZhbHNlYCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9t
aXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQ
QVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIu
My4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlz
YCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBg
cmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2Fs
bGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMg
bm90IGEgdGhlbmFibGUgYHlgIGlzIGA1YCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBz
eW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6
IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmly
c3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0
UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdp
dGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgbm90IGEg
dGhlbmFibGUgYHlgIGlzIGA1YCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJv
bm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90
aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRo
ZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1
bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNl
YCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1
ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBub3QgYSB0aGVuYWJs
ZSBgeWAgaXMgYDVgIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4z
LjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlg
LCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgbm90IGEgdGhlbmFibGUgYHlg
IGlzIGA1YCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgbm90IGEgdGhlbmFibGUgYHlgIGlzIGFu
IG9iamVjdCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSBy
ZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgbm90IGEgdGhlbmFibGUgYHlgIGlzIGFu
IG9iamVjdCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSBy
ZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYg
YHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVu
Y3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2
ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6
IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBg
W1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBub3QgYSB0aGVuYWJsZSBgeWAgaXMgYW4g
b2JqZWN0IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSBy
ZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgbm90IGEgdGhlbmFibGUgYHlgIGlzIGFu
IG9iamVjdCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgbm90IGEgdGhlbmFibGUgYHlgIGlzIGFu
IGFycmF5IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJl
dHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYg
YHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVu
Y3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2
ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6
IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBg
W1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBub3QgYSB0aGVuYWJsZSBgeWAgaXMgYW4g
YXJyYXkgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0
dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4
YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0
aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQ
cm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJ
Zi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtb
UmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgbm90IGEgdGhlbmFibGUgYHlgIGlzIGFuIGFy
cmF5IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4
YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0
aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQ
cm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJ
Zi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtb
UmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgbm90IGEgdGhlbmFibGUgYHlgIGlzIGFuIGFy
cmF5IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9u
b3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9t
aXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQ
QVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIu
My4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlz
YCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBg
cmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2Fs
bGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMg
YSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFi
bGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJu
IGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93
aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVz
b2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91
c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlz
ZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxs
ZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBh
IHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJs
ZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJu
IGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93
aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVz
b2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9u
b3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9t
aXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQ
QVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIu
My4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlz
YCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBg
cmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2Fs
bGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMg
YSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVu
YWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hy
b25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVBy
b21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNl
CitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24s
IDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0
aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVu
dCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMg
Y2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAg
aXMgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0
aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5j
aHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAg
aXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBg
eWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGlt
ZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5
bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVz
b2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlz
ZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkp
YCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUt
dGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNs
eSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4z
LjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlg
LCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMg
YSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgYHRoZW5gIGNhbGxzIGByZXNv
bHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxs
IHR3aWNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJl
dHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTog
SWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBb
W1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFi
bGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21p
c2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQ
QVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIu
My4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlz
YCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBg
cmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2Fs
bGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMg
YSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2Ug
YHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBm
cm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMg
YW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwg
Y2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlz
ZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hl
biBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29s
dmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhh
dCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAg
c3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4z
OiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZp
cnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVj
dFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3
aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhl
bmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgYHRo
ZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20g
YSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxs
IGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwg
YW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGBy
ZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1d
KHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1
bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3lu
Y2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMu
MzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJ
ZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0
IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFBy
b21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRo
IHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFi
bGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgYHRoZW5g
IGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEg
cmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBp
dCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFu
ZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVz
b2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShw
cm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVk
IHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBp
ZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBm
dW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNv
bHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMu
MTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVu
IGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFs
cmVhZHktZnVsZmlsbGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3lu
Y2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4z
OiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElm
IGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3Qg
YXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJv
bWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGgg
dmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJs
ZSBgeWAgaXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgYHRo
ZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9t
IGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4g
b2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2Fs
bCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAs
IGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBg
cmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVd
XShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVs
ZmlsbGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNs
eSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5
YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlz
IGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJv
bWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQ
QVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIu
My4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlz
YCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBg
cmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2Fs
bGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMg
YSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAg
Y2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBm
dWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBp
dCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFu
ZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVz
b2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShw
cm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmls
bGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkg
dmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNl
LCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMg
YSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGBy
ZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4z
LjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwg
cnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGEg
c3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNv
bHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20g
dGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5j
aHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlg
IGlzIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhl
bmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJl
dHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTog
SWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBb
W1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5j
aHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNl
CitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24s
IDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0
aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVu
dCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMg
Y2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAg
aXMgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRo
ZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJl
dHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTog
SWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBb
W1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5j
aHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlg
IGlzIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0
aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5j
aHJvbm91c2x5LXJlamVjdGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2
ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBp
cyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5
YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgb25lLXRpbWUg
dGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5j
aHJvbm91c2x5LXJlamVjdGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2
ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAg
aXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBg
eWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIG9uZS10aW1l
IHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBhIHRo
ZW5hYmxlIHRoYXQgaW1tZWRpYXRlbHkgdGhyb3dzIGluIGB0aGVuYCBgdGhlbmAgY2FsbHMgYHJl
c29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlz
ZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkp
YCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGltbWVkaWF0ZWx5IHRo
cm93cyBpbiBgdGhlbmAgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNs
eSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4z
LjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlg
LCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMg
YSB0aGVuYWJsZSB0aGF0IGltbWVkaWF0ZWx5IHRocm93cyBpbiBgdGhlbmAgYHRoZW5gIGNhbGxz
IGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmls
bGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQ
cm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlz
ZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgaW1tZWRpYXRl
bHkgdGhyb3dzIGluIGB0aGVuYCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hy
b25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFs
dWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBg
eWAgaXMgYW4gb2JqZWN0IHdpdGggYSB0aHJvd2luZyBgdGhlbmAgYWNjZXNzb3IgYHRoZW5gIGNh
bGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxm
aWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0
IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3
aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBz
ZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2
ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9t
aXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGFuIG9iamVjdCB3aXRoIGEgdGhyb3dp
bmcgYHRoZW5gIGFjY2Vzc29yIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9u
b3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3Ro
ZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhl
bmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3Vt
ZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2Vg
IDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVl
IGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlg
IGlzIGFuIG9iamVjdCB3aXRoIGEgdGhyb3dpbmcgYHRoZW5gIGFjY2Vzc29yIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZp
bGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qg
b3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdp
dGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNl
Y29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZl
UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21p
c2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMgYW4gb2JqZWN0IHdpdGggYSB0aHJvd2lu
ZyBgdGhlbmAgYWNjZXNzb3IgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9u
b3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3Ro
ZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhl
bmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3Vt
ZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2Vg
IDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVl
IGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlg
IGlzIGFuIGFscmVhZHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9t
aXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQ
QVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIu
My4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlz
YCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBg
cmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2Fs
bGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMg
YSB0aGVuYWJsZSBgeWAgaXMgYW4gYWxyZWFkeS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRo
IGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNv
bmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVBy
b21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNl
LCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktcmVqZWN0ZWQgcHJvbWlz
ZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJu
IGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlv
biwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJv
bWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYv
d2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jl
c29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHkt
cmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVu
YCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1l
bnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAg
Mi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUg
YHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAg
aXMgYW4gZXZlbnR1YWxseS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVBy
b21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBp
cyBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LXJlamVjdGVkIHByb21pc2UgYHRoZW5g
IGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBy
ZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNv
bHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHBy
b21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1yZWplY3Rl
ZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMgYW4g
ZXZlbnR1YWxseS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2Vg
IGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1Mg
Mi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMu
MzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBm
aXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWpl
Y3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQg
d2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRo
ZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1
c3RvbSB0aGVuYWJsZSBmb3IgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFi
bGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJu
IGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlv
biwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJv
bWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYv
d2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jl
c29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlg
IGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHN5bmNo
cm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBp
cyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmls
bGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20g
dGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlh
IHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5h
YmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3Ig
YSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGBy
ZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQg
cHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1
bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4
YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQg
YXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21p
c2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5
KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNs
eS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxs
ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9u
b3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90
aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRo
ZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1
bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNl
YCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1
ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZv
ciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVu
YWJsZSBmb3IgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJl
c29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0o
cHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5
bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gYXN5bmNocm9ub3Vz
bHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNl
YCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFT
UyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMu
My4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2As
IGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJl
amVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxl
ZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEg
dGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQg
Y3VzdG9tIHRoZW5hYmxlIGZvciBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRo
ZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSBy
ZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYg
YHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVu
Y3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2
ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6
IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBg
W1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxl
IGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYSBz
eW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJl
c29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlz
ZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkp
YCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5
LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQg
b25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVu
YCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1l
bnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAg
Mi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUg
YHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3Ig
YSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFi
bGUgZm9yIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5g
IGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEg
ZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJl
c29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0o
cHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5
bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYSBzeW5jaHJvbm91c2x5
LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNl
YCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVk
IHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBj
dXN0b20gdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNl
IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBm
cm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3do
ZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNv
bHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBp
cyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJs
ZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlz
ZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVk
IHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBj
dXN0b20gdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNl
IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4g
ZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93
aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVz
b2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAg
aXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgdGhlbmFi
bGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21p
c2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxs
ZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBh
IHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVk
IGN1c3RvbSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRo
cm93cyBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4
YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0
aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQ
cm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJ
Zi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtb
UmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBg
eWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgdGhl
bmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgYHRoZW5gIGNhbGxzIGByZXNvbHZl
UHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNl
CitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24s
IDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0
aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVu
dCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMg
Y2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAg
aXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZp
bGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhl
biB0aHJvd3MgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlh
IHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5h
YmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3Ig
YSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBgdGhlbmAgY2FsbHMgYHJl
c29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlz
ZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkp
YCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5
LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21p
c2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJu
IGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlv
biwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJv
bWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYv
d2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jl
c29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlg
IGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhbiBhbHJl
YWR5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzog
T3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBg
dGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFy
Z3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21p
c2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZh
bHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUg
Zm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRo
ZW5hYmxlIGZvciBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVz
b2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlz
ZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkp
YCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5
LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21p
c2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVy
biBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlv
biwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJv
bWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYv
d2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jl
c29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlg
IGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhbiBldmVu
dHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5
bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4z
LjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzog
SWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJz
dCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQ
cm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5h
YmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3Rv
bSB0aGVuYWJsZSBmb3IgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2Fs
bHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVj
dGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQ
cm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlz
ZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9u
b3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gZXZlbnR1YWxseS1mdWxmaWxs
ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNl
LCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMg
YSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGBy
ZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4z
LjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwg
cnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhl
bmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZv
ciBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVBy
b21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBp
cyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmls
bGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0
aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSBy
ZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJs
ZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEg
c3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNv
bHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAg
aXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBg
eWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1
bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0
b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkg
dmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBm
b3IgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMg
YHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3Rl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2Us
IHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91
c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGFuIGFzeW5jaHJvbm91c2x5LXJlamVj
dGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJv
bm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFs
dWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBm
b3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhl
bmFibGUgZm9yIGFuIGFzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJl
c29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0o
cHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5
bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gYXN5bmNocm9ub3Vz
bHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2Vg
IGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVk
IHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBj
dXN0b20gdGhlbmFibGUgZm9yIGFuIGFzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVu
YWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0
dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4
YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0
aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQ
cm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJ
Zi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtb
UmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBg
eWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgc3lu
Y2hyb25vdXNseS1yZWplY3RlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAg
aXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBg
eWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1
bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBvbmUt
dGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBm
b3IgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZp
bGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qg
b3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdp
dGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNl
Y29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZl
UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21p
c2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJv
bm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgc3luY2hyb25vdXNseS1yZWpl
Y3RlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3lu
Y2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4z
OiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElm
IGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3Qg
YXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJv
bWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGgg
dmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJs
ZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20g
dGhlbmFibGUgZm9yIGEgdGhlbmFibGUgdGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgaW4gYHRoZW5g
IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBm
cm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3do
ZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNv
bHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBp
cyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJs
ZSB0aGF0IGltbWVkaWF0ZWx5IHRocm93cyBpbiBgdGhlbmAgYHRoZW5gIGNhbGxzIGByZXNvbHZl
UHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNl
CitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24s
IDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0
aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVu
dCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMg
Y2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAg
aXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZp
bGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgdGhhdCBpbW1lZGlhdGVseSB0aHJv
d3MgaW4gYHRoZW5gIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4z
LjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlg
LCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0
aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUg
Zm9yIGEgdGhlbmFibGUgdGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgaW4gYHRoZW5gIGB0aGVuYCBj
YWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJl
amVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQg
d2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQg
c2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29s
dmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJv
bWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNo
cm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gb2JqZWN0IHdpdGggYSB0
aHJvd2luZyBgdGhlbmAgYWNjZXNzb3IgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3lu
Y2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMu
MzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJ
ZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0
IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFBy
b21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRo
IHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFi
bGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9t
IHRoZW5hYmxlIGZvciBhbiBvYmplY3Qgd2l0aCBhIHRocm93aW5nIGB0aGVuYCBhY2Nlc3NvciBg
dGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJv
bSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFu
IG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNh
bGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2Vg
LCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4g
YHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZl
XV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBh
IHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gb2JqZWN0IHdp
dGggYSB0aHJvd2luZyBgdGhlbmAgYWNjZXNzb3IgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlz
ZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxs
ZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBh
IHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVk
IGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gb2JqZWN0IHdpdGggYSB0aHJvd2luZyBgdGhlbmAgYWNj
ZXNzb3IgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJl
dHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTog
SWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBb
W1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUg
YHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhbiBh
bHJlYWR5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3lu
Y2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMu
MzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJ
ZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0
IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFBy
b21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRo
IHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFi
bGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9t
IHRoZW5hYmxlIGZvciBhbiBhbHJlYWR5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGBy
ZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlz
ZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkp
YCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5
LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGFuIGFscmVhZHktcmVqZWN0ZWQgcHJvbWlz
ZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJu
IGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlv
biwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJv
bWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYv
d2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jl
c29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlg
IGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhbiBhbHJl
YWR5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzog
T3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBg
dGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFy
Z3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21p
c2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZh
bHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUg
Zm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRo
ZW5hYmxlIGZvciBhbiBldmVudHVhbGx5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGBy
ZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQg
cHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1
bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4
YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQg
YXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21p
c2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5
KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNs
eS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhbiBldmVudHVhbGx5LXJlamVjdGVkIHBy
b21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0
dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4
YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0
aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQ
cm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJ
Zi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtb
UmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBg
eWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGFuIGV2
ZW50dWFsbHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBh
c3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4z
OiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZp
cnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVj
dFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3
aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhl
bmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3Vz
dG9tIHRoZW5hYmxlIGZvciBhbiBldmVudHVhbGx5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNh
bGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVq
ZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0
IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3
aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBz
ZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2
ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9t
aXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5j
aHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgc3luY2hyb25vdXNseS1m
dWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5
bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4z
LjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzog
SWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJz
dCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQ
cm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5h
YmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3Vz
dG9tIHRoZW5hYmxlIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJs
ZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4g
ZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3do
ZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNv
bHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBp
cyBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHN5bmNo
cm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlg
IGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1
bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3Vz
dG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxl
IGZvciBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBj
YWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVs
ZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQg
d2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQg
c2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29s
dmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJv
bWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3lu
Y2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhbiBhc3luY2hyb25vdXNs
eS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2Vg
IHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4z
OiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZp
cnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVj
dFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3
aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhl
bmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBj
dXN0b20gdGhlbmFibGUgZm9yIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhl
bmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJl
dHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYg
YHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVu
Y3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2
ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6
IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBg
W1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxl
IGB5YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBh
biBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBg
cmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9t
aXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwg
eSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25v
dXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmls
bGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6
IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYg
YHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBh
cmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9t
aXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2
YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxl
IGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9t
IHRoZW5hYmxlIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxl
IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBm
cm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMg
YW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwg
Y2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlz
ZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hl
biBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29s
dmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlz
IGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgc3luY2hy
b25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZl
UHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBp
cyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5
YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25vdXNseS1m
dWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9u
ZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91
c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5g
IGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVu
dCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAy
LjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBg
eWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBh
IHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5h
YmxlIGZvciBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBgdGhlbmAgY2Fs
bHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZp
bGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qg
b3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdp
dGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNl
Y29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZl
UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21p
c2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNo
cm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSB0aGF0IHRy
aWVzIHRvIGZ1bGZpbGwgdHdpY2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hy
b25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFs
dWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBm
b3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgYHRoZW5g
IGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEg
ZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJl
c29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0o
cHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBh
c3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIHRo
YXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBh
c3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6
IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmly
c3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0
UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdp
dGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVu
YWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1
c3RvbSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93
cyBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4g
ZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93
aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVz
b2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAg
aXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBp
cyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxm
aWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRo
ZW4gdGhyb3dzIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBm
b3IgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBgdGhlbmAgY2FsbHMg
YHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3Rl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2Us
IHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9u
b3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gYWxyZWFkeS1mdWxmaWxsZWQg
cHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSBy
ZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJs
ZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3Ig
YW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNl
YCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1Mg
Mi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMu
MzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBm
aXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWpl
Y3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQg
d2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRo
ZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQg
Y3VzdG9tIHRoZW5hYmxlIGZvciBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBj
YWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1
bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNv
bHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHBy
b21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5
bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gYWxyZWFkeS1mdWxm
aWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNs
eSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4z
LjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlg
LCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0
aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJs
ZSBmb3IgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAg
aXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBg
eWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHkt
ZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJv
bWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhbiBl
dmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2Vg
IGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVk
IHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVk
IGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20g
YSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxs
IGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwg
YW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGBy
ZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1d
KHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4g
YXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYSBzeW5jaHJvbm91
c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNl
YCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVk
IHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVk
IGN1c3RvbSB0aGVuYWJsZSBmb3IgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVu
YWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHN5
bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2
ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAg
aXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBg
eWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHkt
ZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1
c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNs
eSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4z
LjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlg
LCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0
aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJs
ZSBmb3IgYW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBj
YWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVs
ZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQg
d2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQg
c2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29s
dmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJv
bWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3lu
Y2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhbiBhc3luY2hyb25vdXNs
eS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAg
c3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6
IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmly
c3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0
UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdp
dGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVu
YWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1
c3RvbSB0aGVuYWJsZSBmb3IgYW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5h
YmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4
YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0
aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQ
cm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJ
Zi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtb
UmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBg
eWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4g
YXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVz
b2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlg
IGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25vdXNs
eS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQg
b25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3Ro
ZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhl
bmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3Vt
ZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2Vg
IDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVl
IGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9y
IGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhl
bmFibGUgZm9yIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJl
c29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0o
cHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBh
c3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHN5bmNocm9ub3Vz
bHktcmVqZWN0ZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlz
ZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxs
ZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBh
IHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxs
ZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgb25lLXRpbWUg
dGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlh
IHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBp
ZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBm
dW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNv
bHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMu
MTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVu
IGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFi
bGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9y
IGEgdGhlbmFibGUgdGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgaW4gYHRoZW5gIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmls
bGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQ
cm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlz
ZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hy
b25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIHRoYXQgaW1t
ZWRpYXRlbHkgdGhyb3dzIGluIGB0aGVuYCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBz
eW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4z
LjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzog
SWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJz
dCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQ
cm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5h
YmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3Vz
dG9tIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIHRoYXQgaW1tZWRpYXRlbHkgdGhyb3dzIGluIGB0
aGVuYCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0
dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTog
SWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBb
W1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUg
YHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEg
dGhlbmFibGUgdGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgaW4gYHRoZW5gIGB0aGVuYCBjYWxscyBg
cmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9t
aXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwg
eSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25v
dXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhbiBvYmplY3Qgd2l0aCBhIHRocm93
aW5nIGB0aGVuYCBhY2Nlc3NvciBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJv
bm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFs
dWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBm
b3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0
aGVuYWJsZSBmb3IgYW4gb2JqZWN0IHdpdGggYSB0aHJvd2luZyBgdGhlbmAgYWNjZXNzb3IgYHRo
ZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20g
YSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxs
IGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwg
YW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGBy
ZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1d
KHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4g
YXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gb2JqZWN0IHdp
dGggYSB0aHJvd2luZyBgdGhlbmAgYWNjZXNzb3IgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlz
ZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxs
ZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBh
IHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxs
ZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhbiBvYmplY3Qgd2l0aCBhIHRocm93aW5nIGB0aGVuYCBh
Y2Nlc3NvciBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJs
ZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3Ig
YW4gYWxyZWFkeS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2Vg
IHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1Mg
Mi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMu
MzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBm
aXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWpl
Y3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQg
d2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRo
ZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQg
Y3VzdG9tIHRoZW5hYmxlIGZvciBhbiBhbHJlYWR5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNh
bGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWpl
Y3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qg
b3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdp
dGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNl
Y29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZl
UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21p
c2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNo
cm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gYWxyZWFkeS1yZWplY3Rl
ZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBm
b3IgYW4gYWxyZWFkeS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21p
c2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxs
ZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBh
IHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxs
ZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhbiBldmVudHVhbGx5LXJlamVjdGVkIHByb21pc2UgYHRo
ZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20g
YSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4g
b2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2Fs
bCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAs
IGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBg
cmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVd
XShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFu
IGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGFuIGV2ZW50dWFs
bHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJv
bm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90
aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRo
ZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1
bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNl
YCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1
ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZv
ciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRo
ZW5hYmxlIGZvciBhbiBldmVudHVhbGx5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGBy
ZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9t
aXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwg
eSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25v
dXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhbiBldmVudHVhbGx5LXJlamVjdGVk
IHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlh
IHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBp
ZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBm
dW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNv
bHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMu
MTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVu
IGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFi
bGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgZm9y
IGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBg
cmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9t
aXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwg
eSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3Vz
bHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmls
bGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJv
bm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90
aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRo
ZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1
bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNl
YCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1
ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZv
ciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRo
ZW5hYmxlIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20g
YSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4g
b2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2Fs
bCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAs
IGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBg
cmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVd
XShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEg
c3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgZm9yIGEgc3luY2hyb25v
dXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21p
c2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxs
ZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBh
IHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVk
IG9uZS10aW1lIHRoZW5hYmxlIGZvciBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9t
IHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlh
IHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5h
YmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZv
ciBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRo
IGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNv
bmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVBy
b21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNl
LCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25v
dXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgZm9yIGFuIGFzeW5jaHJvbm91c2x5LWZ1
bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5
bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4z
LjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzog
SWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJz
dCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQ
cm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5h
YmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10
aW1lIHRoZW5hYmxlIGZvciBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5h
YmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBhIHN5
bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVz
b2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlg
IGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHkt
ZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVk
IG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9u
b3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3Ro
ZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhl
bmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3Vt
ZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2Vg
IDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVl
IGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9y
IGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhl
bmFibGUgZm9yIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgYHRo
ZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9t
IGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFu
IG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNh
bGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2Vg
LCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4g
YHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZl
XV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBh
IHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBhIHN5bmNocm9u
b3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVBy
b21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBp
cyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmls
bGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmls
bCB0d2ljZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSBy
ZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJs
ZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3Ig
YSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgYHRoZW5gIGNhbGxzIGByZXNv
bHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAg
aXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBg
eWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1
bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1
bGZpbGwgdHdpY2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkg
dmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxl
IGZvciBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBgdGhlbmAgY2FsbHMg
YHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3Rl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2Us
IHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91
c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSB0aGF0IGZ1bGZp
bGxzIGJ1dCB0aGVuIHRocm93cyBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJv
bm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFs
dWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBm
b3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJl
c29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0o
cHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5
bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIHRo
YXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2Vg
IGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVk
IHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBv
bmUtdGltZSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRo
cm93cyBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0
dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4
YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0
aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQ
cm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJ
Zi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtb
UmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBg
eWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYW4g
YWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBz
eW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6
IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmly
c3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0
UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdp
dGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVu
YWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUt
dGltZSB0aGVuYWJsZSBmb3IgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2Fs
bHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVj
dGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQ
cm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlz
ZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9u
b3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBhbiBhbHJlYWR5LWZ1bGZpbGxl
ZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBm
b3IgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9t
aXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQ
QVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIu
My4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlz
YCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBg
cmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2Fs
bGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMg
YSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxl
ZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBg
dGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJv
bSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVu
IGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2
ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMg
YSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYW4gZXZlbnR1
YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5j
aHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6
IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYg
YHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBh
cmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9t
aXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2
YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxl
IGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1l
IHRoZW5hYmxlIGZvciBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZp
bGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qg
b3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdp
dGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNl
Y29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZl
UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21p
c2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJv
bm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYW4gZXZlbnR1YWxseS1mdWxm
aWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNs
eSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4z
LjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlg
LCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0
aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJs
ZSBmb3IgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2Fs
bHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZp
bGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qg
b3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdp
dGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNl
Y29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZl
UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21p
c2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJv
bm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYSBzeW5jaHJvbm91c2x5LXJl
amVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5j
aHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6
IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYg
YHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBh
cmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9t
aXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2
YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxl
IGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1l
IHRoZW5hYmxlIGZvciBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0
aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJv
bSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVu
IGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2
ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMg
YSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYSBzeW5jaHJv
bm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9t
aXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQ
QVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIu
My4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlz
YCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBg
cmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2Fs
bGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMg
YSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxl
ZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9t
IHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlh
IHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5h
YmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZv
ciBhbiBhc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxz
IGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3Rl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2Us
IHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91
c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYW4gYXN5bmNocm9ub3VzbHktcmVq
ZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5j
aHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4z
OiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElm
IGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3Qg
YXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJv
bWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGgg
dmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJs
ZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGlt
ZSB0aGVuYWJsZSBmb3IgYW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxl
IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4g
ZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3do
ZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNv
bHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBp
cyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBhIHN5bmNo
cm9ub3VzbHktcmVqZWN0ZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZl
UHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlg
IGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxm
aWxsZWQgb25lLXRpbWUgdGhlbmFibGUgZm9yIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBvbmUt
dGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxl
IGZvciBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNh
bGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVs
ZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQg
d2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQg
c2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29s
dmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJv
bWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNo
cm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBhIHN5bmNocm9ub3VzbHkt
cmVqZWN0ZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAg
YXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4z
OiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZp
cnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVj
dFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3
aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhl
bmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25l
LXRpbWUgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgdGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgaW4g
YHRoZW5gIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJl
dHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYg
YHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVu
Y3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2
ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6
IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBg
W1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxl
IGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBh
IHRoZW5hYmxlIHRoYXQgaW1tZWRpYXRlbHkgdGhyb3dzIGluIGB0aGVuYCBgdGhlbmAgY2FsbHMg
YHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9t
aXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwg
eSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3Vz
bHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIHRoYXQgaW1tZWRp
YXRlbHkgdGhyb3dzIGluIGB0aGVuYCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3lu
Y2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMu
MzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJ
ZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0
IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFBy
b21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRo
IHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFi
bGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRp
bWUgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgdGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgaW4gYHRo
ZW5gIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBhbiBv
YmplY3Qgd2l0aCBhIHRocm93aW5nIGB0aGVuYCBhY2Nlc3NvciBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAg
aXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBg
eWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1
bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYW4gb2JqZWN0IHdpdGggYSB0aHJvd2luZyBg
dGhlbmAgYWNjZXNzb3IgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNs
eSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4z
LjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlg
LCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0
aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJs
ZSBmb3IgYW4gb2JqZWN0IHdpdGggYSB0aHJvd2luZyBgdGhlbmAgYWNjZXNzb3IgYHRoZW5gIGNh
bGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVs
ZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQg
d2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQg
c2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29s
dmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJv
bWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNo
cm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBhbiBvYmplY3Qgd2l0aCBh
IHRocm93aW5nIGB0aGVuYCBhY2Nlc3NvciBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBh
c3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6
IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmly
c3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0
UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdp
dGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVu
YWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUt
dGltZSB0aGVuYWJsZSBmb3IgYW4gYWxyZWFkeS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmls
bGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQ
cm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlz
ZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9u
b3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBhbiBhbHJlYWR5LXJlamVjdGVk
IHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJs
ZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3Ig
YW4gYWxyZWFkeS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2Vg
IGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVk
IHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBv
bmUtdGltZSB0aGVuYWJsZSBmb3IgYW4gYWxyZWFkeS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBj
YWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJl
amVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQg
d2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQg
c2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29s
dmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJv
bWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNo
cm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBhbiBldmVudHVhbGx5LXJl
amVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNs
eSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5
YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEg
dGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFi
bGUgZm9yIGFuIGV2ZW50dWFsbHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBp
cyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5
YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVs
ZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBhbiBldmVudHVhbGx5LXJlamVjdGVkIHByb21p
c2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVy
biBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBhbiBl
dmVudHVhbGx5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAg
YXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4z
OiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZp
cnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVj
dFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3
aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhl
bmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxm
aWxsIHR3aWNlIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBg
dGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJv
bSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVu
IGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2
ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMg
YSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGEgc3luY2hyb25vdXNs
eS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2Vg
IHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4z
OiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZp
cnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVj
dFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3
aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhl
bmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxm
aWxsIHR3aWNlIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBg
dGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZy
b20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMg
YW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwg
Y2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlz
ZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hl
biBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29s
dmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlz
IGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBhIHN5bmNocm9ub3Vz
bHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNl
YCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVk
IHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1
bGZpbGwgdHdpY2UgZm9yIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFi
bGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJu
IGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlv
biwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJv
bWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYv
d2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jl
c29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlg
IGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBhbiBhc3luY2hy
b25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVBy
b21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNh
bGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlz
IGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0
byBmdWxmaWxsIHR3aWNlIGZvciBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRo
ZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSBy
ZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJs
ZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGFuIGFz
eW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNv
bHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0
cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10
aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkg
dmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3Ig
YSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMg
YHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9t
aXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwg
eSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRo
YXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBv
bmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3Ro
ZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhl
bmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3Vt
ZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2Vg
IDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVl
IGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9y
IGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNl
IGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBj
YWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJl
amVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQg
d2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQg
c2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29s
dmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJv
bWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5h
YmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYSB0aGVuYWJsZSB0aGF0IHRyaWVz
IHRvIGZ1bGZpbGwgdHdpY2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3Ro
ZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhl
bmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3Vt
ZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2Vg
IDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVl
IGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9y
IGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNl
IGZvciBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBgdGhlbmAgY2FsbHMg
YHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9t
aXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwg
eSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRo
YXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1
bGZpbGwgdHdpY2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkg
dmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3Ig
YSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgYHRoZW5gIGNhbGxzIGByZXNv
bHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0
cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRo
ZW4gdGhyb3dzIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlh
IHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5h
YmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYSB0
aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBp
cyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5
YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJp
ZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVu
IHRocm93cyBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBp
ZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBm
dW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNv
bHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMu
MTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVu
IGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFi
bGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBhIHRo
ZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGB0aGVuYCBjYWxscyBgcmVzb2x2
ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBp
cyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5
YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJp
ZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxs
IGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwg
YW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGBy
ZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1d
KHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0
aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGFuIGFscmVhZHktZnVsZmls
bGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGFu
IGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAg
YXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1Mg
Mi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMu
MzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBm
aXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWpl
Y3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQg
d2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRo
ZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVs
ZmlsbCB0d2ljZSBmb3IgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMg
YHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3Rl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2Us
IHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0
aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHBy
b21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0
dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTog
SWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBb
W1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUg
YHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBhbiBldmVu
dHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5
bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMu
MzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJ
ZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0
IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFBy
b21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRo
IHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFi
bGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxs
IHR3aWNlIGZvciBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBg
cmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2Us
IHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0
aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHBy
b21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJl
dHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTog
SWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBb
W1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUg
YHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBhIHN5bmNo
cm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVBy
b21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBp
cyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMg
dG8gZnVsZmlsbCB0d2ljZSBmb3IgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVu
YWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYSBzeW5jaHJv
bm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9t
aXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNh
bGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlz
IGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0
byBmdWxmaWxsIHR3aWNlIGZvciBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5h
YmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYW4gYXN5bmNo
cm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVBy
b21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBp
cyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMg
dG8gZnVsZmlsbCB0d2ljZSBmb3IgYW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRo
ZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJl
dHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTog
SWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBb
W1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUg
YHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBhbiBhc3lu
Y2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZl
UHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBp
cyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5
YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJp
ZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9t
IHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5h
YmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYSBz
eW5jaHJvbm91c2x5LXJlamVjdGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVz
b2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlg
IGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQg
dHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIG9uZS10
aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkg
dmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNl
LCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMg
YSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGBy
ZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4z
LjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwg
cnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhl
bmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBh
IHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGBy
ZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9t
aXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwg
eSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRo
YXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIG9u
ZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91
c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5g
IGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVu
dCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAy
LjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBg
eWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBh
IHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBm
b3IgYSB0aGVuYWJsZSB0aGF0IGltbWVkaWF0ZWx5IHRocm93cyBpbiBgdGhlbmAgYHRoZW5gIGNh
bGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxm
aWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0
IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3
aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBz
ZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2
ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9t
aXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFi
bGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBhIHRoZW5hYmxlIHRoYXQgaW1tZWRp
YXRlbHkgdGhyb3dzIGluIGB0aGVuYCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5j
aHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6
IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYg
YHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBh
cmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9t
aXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2
YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxl
IGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0
d2ljZSBmb3IgYSB0aGVuYWJsZSB0aGF0IGltbWVkaWF0ZWx5IHRocm93cyBpbiBgdGhlbmAgYHRo
ZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9t
IGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFu
IG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNh
bGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2Vg
LCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4g
YHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZl
XV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBh
IHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYSB0aGVuYWJsZSB0aGF0
IGltbWVkaWF0ZWx5IHRocm93cyBpbiBgdGhlbmAgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlz
ZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFT
UyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMu
My4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2As
IGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJl
amVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxl
ZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEg
dGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBm
dWxmaWxsIHR3aWNlIGZvciBhbiBvYmplY3Qgd2l0aCBhIHRocm93aW5nIGB0aGVuYCBhY2Nlc3Nv
ciBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4g
ZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93
aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVz
b2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAg
aXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGFuIG9iamVjdCB3
aXRoIGEgdGhyb3dpbmcgYHRoZW5gIGFjY2Vzc29yIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21p
c2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFT
UyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMu
My4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2As
IGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJl
amVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxl
ZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEg
dGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBm
dWxmaWxsIHR3aWNlIGZvciBhbiBvYmplY3Qgd2l0aCBhIHRocm93aW5nIGB0aGVuYCBhY2Nlc3Nv
ciBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJu
IGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlv
biwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJv
bWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYv
d2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jl
c29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlg
IGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBhbiBvYmplY3Qg
d2l0aCBhIHRocm93aW5nIGB0aGVuYCBhY2Nlc3NvciBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9t
aXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQ
QVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIu
My4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlz
YCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBg
cmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2Fs
bGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMg
YSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRv
IGZ1bGZpbGwgdHdpY2UgZm9yIGFuIGFscmVhZHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2Fs
bHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZp
bGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qg
b3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdp
dGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNl
Y29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZl
UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21p
c2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJs
ZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGFuIGFscmVhZHktcmVqZWN0ZWQgcHJv
bWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYW4gYWxyZWFk
eS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJv
bm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFs
dWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBm
b3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdp
Y2UgZm9yIGFuIGFscmVhZHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNl
CitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24s
IDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0
aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVu
dCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMg
Y2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAg
aXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVz
IHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGFuIGV2ZW50dWFsbHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxs
IGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwg
YW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGBy
ZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1d
KHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0
aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGFuIGV2ZW50dWFsbHktcmVq
ZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3Ig
YW4gZXZlbnR1YWxseS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21p
c2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQ
QVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIu
My4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlz
YCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBg
cmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2Fs
bGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMg
YSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRv
IGZ1bGZpbGwgdHdpY2UgZm9yIGFuIGV2ZW50dWFsbHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAg
Y2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBy
ZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNv
bHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHBy
b21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVu
YWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBmb3IgYSBzeW5jaHJvbm91c2x5LWZ1
bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3lu
Y2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMu
MzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJ
ZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0
IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFBy
b21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRo
IHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFi
bGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhl
biB0aHJvd3MgZm9yIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0
aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9t
IGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4g
b2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2Fs
bCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAs
IGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBg
cmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVd
XShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEg
dGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGEgc3luY2hyb25vdXNs
eS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2Vg
IGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVk
IHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1
dCB0aGVuIHRocm93cyBmb3IgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFi
bGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVy
biBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlv
biwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJv
bWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYv
d2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jl
c29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlg
IGlzIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGFuIGFzeW5j
aHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZl
UHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlg
IGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxm
aWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0
b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBmb3Ig
YW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMg
YHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxs
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRo
IGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNv
bmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVBy
b21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNl
LCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUg
dGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZp
bGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzog
T3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBg
dGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFy
Z3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21p
c2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZh
bHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUg
Zm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0
aHJvd3MgZm9yIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgYHRo
ZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20g
YSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4g
b2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2Fs
bCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAs
IGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBg
cmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVd
XShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEg
dGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGEgc3luY2hyb25vdXNs
eS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlz
ZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVk
IHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1
dCB0aGVuIHRocm93cyBmb3IgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVu
YWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0
dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTog
SWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBb
W1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUg
YHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGEgc3lu
Y2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNv
bHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBm
dWxmaWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxm
aWxsIHR3aWNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlh
IHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5h
YmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBh
IHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBp
cyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5
YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVs
ZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmls
bCB0d2ljZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBp
ZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBm
dW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNv
bHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMu
MTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVu
IGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFi
bGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGEg
dGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGB0aGVuYCBjYWxscyBgcmVzb2x2
ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBp
cyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5
YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVs
ZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRo
ZW4gdGhyb3dzIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlh
IHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5h
YmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBh
IHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGB0aGVuYCBjYWxscyBgcmVz
b2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBm
dWxmaWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQg
dGhlbiB0aHJvd3MgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkg
dmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZv
ciBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGB0aGVuYCBjYWxscyBg
cmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9t
aXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwg
eSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRo
YXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9t
aXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVy
biBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhbiBhbHJl
YWR5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzog
T3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBg
dGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFy
Z3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21p
c2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZh
bHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUg
Zm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0
aHJvd3MgZm9yIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNv
bHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlg
IGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQg
ZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNl
IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4g
ZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3do
ZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNv
bHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBp
cyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhbiBldmVudHVh
bGx5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6
IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYg
YHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBh
cmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9t
aXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2
YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxl
IGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4g
dGhyb3dzIGZvciBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBg
cmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQg
cHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1
bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4
YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQg
YXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21p
c2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5
KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhh
dCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHBy
b21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJl
dHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYg
YHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVu
Y3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2
ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6
IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBg
W1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxl
IGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhbiBl
dmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2Vg
IGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1Mg
Mi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMu
MzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBm
aXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWpl
Y3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQg
d2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRo
ZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0
IHRoZW4gdGhyb3dzIGZvciBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxl
IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBm
cm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3do
ZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNv
bHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBp
cyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhIHN5bmNocm9u
b3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21p
c2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFT
UyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMu
My4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2As
IGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJl
amVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxl
ZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEg
dGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBi
dXQgdGhlbiB0aHJvd3MgZm9yIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFi
bGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVy
biBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhIHN5bmNo
cm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVBy
b21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBp
cyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmls
bHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhbiBhc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20g
dGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBp
ZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBm
dW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNv
bHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMu
MTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVu
IGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFi
bGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGFu
IGFzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJl
c29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlg
IGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQg
ZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhbiBhc3luY2hyb25vdXNseS1yZWplY3RlZCBj
dXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5g
IGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVu
dCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAy
LjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBg
eWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBh
IHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dz
IGZvciBhbiBhc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNh
bGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVq
ZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0
IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3
aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBz
ZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2
ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9t
aXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFi
bGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGEgc3luY2hyb25vdXNseS1yZWpl
Y3RlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5j
aHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4z
OiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElm
IGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3Qg
YXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJv
bWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGgg
dmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJs
ZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVu
IHRocm93cyBmb3IgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0
aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9t
IGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4g
b2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2Fs
bCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAs
IGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBg
cmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVd
XShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEg
dGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGEgc3luY2hyb25vdXNs
eS1yZWplY3RlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNl
YCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFT
UyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMu
My4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2As
IGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJl
amVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxl
ZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEg
dGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBi
dXQgdGhlbiB0aHJvd3MgZm9yIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBvbmUtdGltZSB0aGVu
YWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0
dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4
YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0
aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQ
cm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJ
Zi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtb
UmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBg
eWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBmb3IgYSB0aGVu
YWJsZSB0aGF0IGltbWVkaWF0ZWx5IHRocm93cyBpbiBgdGhlbmAgYHRoZW5gIGNhbGxzIGByZXNv
bHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBm
dWxmaWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGEgdGhlbmFibGUgdGhhdCBpbW1lZGlhdGVseSB0
aHJvd3MgaW4gYHRoZW5gIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5
YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEg
dGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3Mg
Zm9yIGEgdGhlbmFibGUgdGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgaW4gYHRoZW5gIGB0aGVuYCBj
YWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1
bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNv
bHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHBy
b21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVu
YWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBmb3IgYSB0aGVuYWJsZSB0aGF0IGlt
bWVkaWF0ZWx5IHRocm93cyBpbiBgdGhlbmAgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAg
YXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4z
OiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZp
cnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVj
dFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3
aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhl
bmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQg
dGhlbiB0aHJvd3MgZm9yIGFuIG9iamVjdCB3aXRoIGEgdGhyb3dpbmcgYHRoZW5gIGFjY2Vzc29y
IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBm
cm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3do
ZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNv
bHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBp
cyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhbiBvYmplY3Qg
d2l0aCBhIHRocm93aW5nIGB0aGVuYCBhY2Nlc3NvciBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9t
aXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxs
ZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBh
IHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMg
YnV0IHRoZW4gdGhyb3dzIGZvciBhbiBvYmplY3Qgd2l0aCBhIHRocm93aW5nIGB0aGVuYCBhY2Nl
c3NvciBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0
dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTog
SWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBb
W1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUg
YHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGFuIG9i
amVjdCB3aXRoIGEgdGhyb3dpbmcgYHRoZW5gIGFjY2Vzc29yIGB0aGVuYCBjYWxscyBgcmVzb2x2
ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBp
cyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5
YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVs
ZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhbiBhbHJlYWR5LXJlamVjdGVkIHByb21pc2UgYHRo
ZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20g
YSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4g
b2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2Fs
bCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAs
IGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBg
cmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVd
XShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEg
dGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGFuIGFscmVhZHktcmVq
ZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZv
ciBhbiBhbHJlYWR5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlz
ZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxs
ZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBh
IHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMg
YnV0IHRoZW4gdGhyb3dzIGZvciBhbiBhbHJlYWR5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNh
bGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVq
ZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0
IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3
aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBz
ZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2
ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9t
aXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFi
bGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGFuIGV2ZW50dWFsbHktcmVqZWN0
ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBmb3Ig
YW4gZXZlbnR1YWxseS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21p
c2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFT
UyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMu
My4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2As
IGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJl
amVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxl
ZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEg
dGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBi
dXQgdGhlbiB0aHJvd3MgZm9yIGFuIGV2ZW50dWFsbHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAg
Y2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBm
dWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBp
dCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFu
ZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVz
b2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShw
cm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhl
bmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGFuIGV2ZW50dWFsbHktcmVq
ZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNs
eSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4z
LjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlg
LCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0
aGVuYWJsZSBgeWAgaXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYSBzeW5jaHJv
bm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJv
bWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNh
bGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlz
IGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHBy
b21pc2UgZm9yIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVu
YCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEg
cmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBp
dCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFu
ZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVz
b2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShw
cm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFs
cmVhZHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3Vz
dG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4z
LjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlg
LCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0
aGVuYWJsZSBgeWAgaXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYSBzeW5jaHJv
bm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJv
bWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNh
bGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlz
IGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHBy
b21pc2UgZm9yIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgYHRo
ZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20g
YSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4g
b2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2Fs
bCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAs
IGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBg
cmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVd
XShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFu
IGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxl
ZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVu
YCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1l
bnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAg
Mi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUg
YHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3Ig
YSB0aGVuYWJsZSBgeWAgaXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4gYXN5
bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmls
bGVkIHByb21pc2UgZm9yIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFi
bGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVy
biBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlv
biwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJv
bWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYv
d2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jl
c29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlg
IGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgc3luY2hyb25vdXNseS1mdWxm
aWxsZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3lu
Y2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMu
MzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJ
ZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0
IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFBy
b21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRo
IHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFi
bGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgZm9y
IGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxz
IGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3Rl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2Us
IHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYWxyZWFkeS1m
dWxmaWxsZWQgcHJvbWlzZSBmb3IgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0
aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBp
ZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBm
dW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNv
bHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMu
MTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVu
IGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFi
bGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgc3luY2hyb25vdXNs
eS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlz
ZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFT
UyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMu
My4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2As
IGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJl
amVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxl
ZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEg
dGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21p
c2UgZm9yIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmls
bGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQ
cm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlz
ZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5
LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0
d2ljZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHRoZW5hYmxlIHRoYXQgdHJp
ZXMgdG8gZnVsZmlsbCB0d2ljZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hy
b25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzog
T3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBg
dGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFy
Z3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21p
c2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZh
bHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUg
Zm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEg
dGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGB0aGVuYCBjYWxscyBgcmVzb2x2
ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBp
cyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5
YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxl
ZCBwcm9taXNlIGZvciBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGB0
aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9t
IGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFu
IG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNh
bGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2Vg
LCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4g
YHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZl
XV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBh
biBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMg
YnV0IHRoZW4gdGhyb3dzIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5
YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEg
dGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgdGhlbmFi
bGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJv
bWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBp
cyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBw
cm9taXNlIGZvciBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGB0aGVu
YCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJl
c29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0o
cHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBh
bHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNl
IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBm
cm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3do
ZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNv
bHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBp
cyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBw
cm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJl
dHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTog
SWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBb
W1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUg
YHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGFuIGFscmVhZHktZnVsZmls
bGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkg
dmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhbHJlYWR5
LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJv
bm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90
aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRo
ZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1
bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNl
YCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1
ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZv
ciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBl
dmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2Vg
IHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1Mg
Mi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMu
MzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBm
aXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWpl
Y3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQg
d2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRo
ZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNl
IGZvciBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2
ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlg
IGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVk
IHByb21pc2UgZm9yIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgYHRoZW5gIGNhbGxz
IGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmls
bGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQ
cm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlz
ZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5
LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGB0
aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJv
bSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFu
IG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNh
bGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2Vg
LCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4g
YHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZl
XV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBh
biBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQg
Y3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5g
IGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVu
dCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAy
LjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBg
eWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBh
IHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHN5bmNo
cm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVBy
b21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNh
bGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlz
IGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHBy
b21pc2UgZm9yIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5g
IGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEg
ZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJl
c29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0o
cHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBh
bHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3Vz
dG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhc3luY2hy
b25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJv
bWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNh
bGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlz
IGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHBy
b21pc2UgZm9yIGFuIGFzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJl
c29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0o
cHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBh
bHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhc3luY2hyb25vdXNseS1yZWplY3RlZCBj
dXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5g
IGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVu
dCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAy
LjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBg
eWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBh
IHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhc3lu
Y2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZl
UHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlg
IGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVk
IHByb21pc2UgZm9yIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBvbmUtdGltZSB0aGVuYWJsZSBg
dGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJv
bSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVu
IGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2
ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMg
YW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVk
IG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9u
b3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3Ro
ZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhl
bmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3Vt
ZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2Vg
IDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVl
IGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9y
IGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgc3lu
Y2hyb25vdXNseS1yZWplY3RlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmls
bGVkIHByb21pc2UgZm9yIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBvbmUtdGltZSB0aGVuYWJs
ZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJu
IGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93
aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVz
b2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAg
aXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYSB0aGVuYWJsZSB0aGF0IGltbWVk
aWF0ZWx5IHRocm93cyBpbiBgdGhlbmAgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3lu
Y2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMu
MzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJ
ZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0
IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFBy
b21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRo
IHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFi
bGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgZm9y
IGEgdGhlbmFibGUgdGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgaW4gYHRoZW5gIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRo
IGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNv
bmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVBy
b21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNl
LCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHkt
ZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgdGhlbmFibGUgdGhhdCBpbW1lZGlhdGVseSB0aHJvd3Mg
aW4gYHRoZW5gIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYSB0aGVuYWJsZSB0
aGF0IGltbWVkaWF0ZWx5IHRocm93cyBpbiBgdGhlbmAgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJv
bWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNh
bGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlz
IGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHBy
b21pc2UgZm9yIGFuIG9iamVjdCB3aXRoIGEgdGhyb3dpbmcgYHRoZW5gIGFjY2Vzc29yIGB0aGVu
YCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEg
ZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJl
c29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0o
cHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBh
bHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBvYmplY3Qgd2l0aCBhIHRocm93aW5nIGB0
aGVuYCBhY2Nlc3NvciBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBvYmplY3Qg
d2l0aCBhIHRocm93aW5nIGB0aGVuYCBhY2Nlc3NvciBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9t
aXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNh
bGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlz
IGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHBy
b21pc2UgZm9yIGFuIG9iamVjdCB3aXRoIGEgdGhyb3dpbmcgYHRoZW5gIGFjY2Vzc29yIGB0aGVu
YCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJl
c29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0o
cHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBh
bHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhbHJlYWR5LXJlamVjdGVkIHByb21pc2Ug
YHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZy
b20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMg
YW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwg
Y2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlz
ZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hl
biBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29s
dmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlz
IGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGFuIGFscmVhZHktcmVqZWN0ZWQgcHJv
bWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhbHJlYWR5LXJlamVjdGVk
IHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlh
IHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5h
YmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhbHJlYWR5LXJl
amVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5
YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEg
dGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGFuIGV2ZW50
dWFsbHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5j
aHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4z
OiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElm
IGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3Qg
YXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJv
bWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGgg
dmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJs
ZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3Ig
YW4gZXZlbnR1YWxseS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21p
c2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFT
UyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMu
My4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2As
IGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJl
amVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxl
ZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEg
dGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21p
c2UgZm9yIGFuIGV2ZW50dWFsbHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmls
bGVkIHByb21pc2UgZm9yIGFuIGV2ZW50dWFsbHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2Fs
bHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWpl
Y3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qg
b3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdp
dGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNl
Y29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZl
UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21p
c2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1
YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0
b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNl
LCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMg
YSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGBy
ZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4z
LjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwg
cnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhl
bmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgc3luY2hy
b25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVBy
b21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNh
bGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlz
IGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVk
IHByb21pc2UgZm9yIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0
aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJv
bSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVu
IGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2
ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMg
YW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYSBzeW5jaHJvbm91c2x5LWZ1bGZp
bGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzog
T3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBg
dGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFy
Z3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21p
c2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZh
bHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUg
Zm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgZm9y
IGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxz
IGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxs
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRo
IGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNv
bmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVBy
b21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNl
LCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFs
bHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0
b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4gYXN5bmNo
cm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlg
IGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmls
bGVkIHByb21pc2UgZm9yIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFi
bGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVy
biBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlv
biwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJv
bWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYv
d2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jl
c29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlg
IGlzIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgc3luY2hyb25vdXNseS1m
dWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAg
c3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4z
OiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZp
cnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVj
dFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3
aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhl
bmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21p
c2UgZm9yIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5g
IGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBy
ZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNv
bHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHBy
b21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZl
bnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBv
bmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3Ro
ZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhl
bmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3Vt
ZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2Vg
IDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVl
IGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9y
IGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEg
c3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGBy
ZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQg
cHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1
bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4
YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQg
YXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21p
c2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5
KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHkt
ZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3
aWNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVy
biBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHRoZW5hYmxlIHRoYXQg
dHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5j
aHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6
IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYg
YHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBh
cmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9t
aXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2
YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxl
IGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZv
ciBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBgdGhlbmAgY2FsbHMgYHJl
c29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQg
cHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1
bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4
YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQg
YXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21p
c2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5
KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHkt
ZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3
aWNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHRoZW5hYmxlIHRoYXQg
ZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5
bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4z
LjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzog
SWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJz
dCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQ
cm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5h
YmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNl
IGZvciBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRo
IGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNv
bmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVBy
b21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNl
LCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFs
bHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhl
biB0aHJvd3MgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlh
IHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5h
YmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHRoZW5hYmxl
IHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21p
c2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxs
ZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBh
IHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBw
cm9taXNlIGZvciBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVz
b2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlg
IGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1
bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBj
YWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVq
ZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0
IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3
aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBz
ZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2
ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9t
aXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50
dWFsbHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2Ug
YHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBm
cm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3do
ZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNv
bHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBp
cyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhbHJlYWR5LWZ1bGZpbGxl
ZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5h
YmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBldmVudHVh
bGx5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6
IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYg
YHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBh
cmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9t
aXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2
YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxl
IGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZv
ciBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVBy
b21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNh
bGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlz
IGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVk
IHByb21pc2UgZm9yIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgYHRoZW5gIGNhbGxz
IGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmls
bGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQ
cm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlz
ZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVh
bGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNl
IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4g
ZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3do
ZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNv
bHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBp
cyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHN5bmNocm9ub3VzbHktcmVq
ZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6
IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYg
YHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBh
cmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9t
aXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2
YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxl
IGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZv
ciBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBg
cmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQg
cHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1
bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4
YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQg
YXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21p
c2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5
KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHkt
ZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhl
bmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJl
dHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYg
YHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVu
Y3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2
ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6
IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBg
W1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxl
IGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHN5bmNocm9ub3Vz
bHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2Vg
IGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1Mg
Mi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMu
MzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBm
aXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWpl
Y3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQg
d2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRo
ZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9t
aXNlIGZvciBhbiBhc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5g
IGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBm
dWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBp
dCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFu
ZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVz
b2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShw
cm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2
ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGFuIGFzeW5jaHJvbm91c2x5LXJlamVjdGVk
IGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91
c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5g
IGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVu
dCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAy
LjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBg
eWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBh
IHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBh
c3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNv
bHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlg
IGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1
bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhl
bmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJl
dHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTog
SWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBb
W1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUg
YHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgc3luY2hyb25vdXNs
eS1yZWplY3RlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNl
YCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVk
IHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJv
bWlzZSBmb3IgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVu
YCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEg
cmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBp
dCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFu
ZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVz
b2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShw
cm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2
ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBv
bmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3Ro
ZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhl
bmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3Vt
ZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2Vg
IDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVl
IGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9y
IGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEg
c3luY2hyb25vdXNseS1yZWplY3RlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJl
c29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlz
ZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkp
YCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1m
dWxmaWxsZWQgcHJvbWlzZSBmb3IgYSB0aGVuYWJsZSB0aGF0IGltbWVkaWF0ZWx5IHRocm93cyBp
biBgdGhlbmAgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBp
ZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBm
dW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNv
bHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMu
MTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVu
IGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFi
bGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgdGhlbmFibGUg
dGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgaW4gYHRoZW5gIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVBy
b21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNh
bGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlz
IGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVk
IHByb21pc2UgZm9yIGEgdGhlbmFibGUgdGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgaW4gYHRoZW5g
IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4g
ZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93
aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVz
b2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAg
aXMgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYSB0aGVuYWJsZSB0aGF0IGlt
bWVkaWF0ZWx5IHRocm93cyBpbiBgdGhlbmAgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAg
YXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4z
OiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZp
cnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVj
dFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3
aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhl
bmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21p
c2UgZm9yIGFuIG9iamVjdCB3aXRoIGEgdGhyb3dpbmcgYHRoZW5gIGFjY2Vzc29yIGB0aGVuYCBj
YWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVs
ZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQg
d2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQg
c2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29s
dmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJv
bWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVu
dHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBvYmplY3Qgd2l0aCBhIHRocm93aW5nIGB0
aGVuYCBhY2Nlc3NvciBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBvYmpl
Y3Qgd2l0aCBhIHRocm93aW5nIGB0aGVuYCBhY2Nlc3NvciBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlg
IGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmls
bGVkIHByb21pc2UgZm9yIGFuIG9iamVjdCB3aXRoIGEgdGhyb3dpbmcgYHRoZW5gIGFjY2Vzc29y
IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4g
ZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3do
ZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNv
bHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBp
cyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhbHJlYWR5LXJlamVjdGVk
IHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBp
ZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBm
dW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNv
bHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMu
MTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVu
IGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFi
bGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGFuIGFscmVhZHkt
cmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91
c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5g
IGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVu
dCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAy
LjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBg
eWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBh
IHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBh
bHJlYWR5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5
bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4z
LjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzog
SWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJz
dCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQ
cm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5h
YmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNl
IGZvciBhbiBhbHJlYWR5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJv
bWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNh
bGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlz
IGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVk
IHByb21pc2UgZm9yIGFuIGV2ZW50dWFsbHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMg
YHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2Us
IHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxs
eS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4gZXZlbnR1YWxseS1yZWplY3RlZCBwcm9taXNlIGB0
aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9t
IGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4g
b2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2Fs
bCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAs
IGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBg
cmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVd
XShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFu
IGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGFuIGV2ZW50dWFsbHktcmVqZWN0ZWQg
cHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBp
ZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBm
dW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNv
bHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMu
MTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVu
IGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFi
bGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGFuIGV2ZW50dWFs
bHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hy
b25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4yOiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFz
b24gYHJgLCByZWplY3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBgdW5kZWZpbmVkYCBgdGhl
bmAgY2FsbHMgYHJlamVjdFByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEg
ZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3doZW4gYHJl
amVjdFByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJvbWlzZWAg
d2l0aCBgcmAgYHJgIGlzIGB1bmRlZmluZWRgIGB0aGVuYCBjYWxscyBgcmVqZWN0UHJvbWlzZWAg
c3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6
IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmly
c3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0
UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCByZWFzb24gYHJgLCByZWplY3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBgdW5kZWZpbmVk
YCBgdGhlbmAgY2FsbHMgYHJlamVjdFByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4g
ZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93
aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3QgYHBy
b21pc2VgIHdpdGggYHJgIGByYCBpcyBgdW5kZWZpbmVkYCBgdGhlbmAgY2FsbHMgYHJlamVjdFBy
b21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3doZW4gYHJlamVjdFByb21pc2VgIGlzIGNh
bGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgcmAgYHJgIGlzIGBu
dWxsYCBgdGhlbmAgY2FsbHMgYHJlamVjdFByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVy
biBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6IElm
L3doZW4gYHJlamVjdFByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBg
cHJvbWlzZWAgd2l0aCBgcmAgYHJgIGlzIGBudWxsYCBgdGhlbmAgY2FsbHMgYHJlamVjdFByb21p
c2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFT
UyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMu
My4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2As
IGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJl
amVjdFByb21pc2VgIDIuMy4zLjMuMjogSWYvd2hlbiBgcmVqZWN0UHJvbWlzZWAgaXMgY2FsbGVk
IHdpdGggcmVhc29uIGByYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGByYCBgcmAgaXMgYG51bGxg
IGB0aGVuYCBjYWxscyBgcmVqZWN0UHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBm
cm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3do
ZW4gYHJlamVjdFByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJv
bWlzZWAgd2l0aCBgcmAgYHJgIGlzIGBudWxsYCBgdGhlbmAgY2FsbHMgYHJlamVjdFByb21pc2Vg
IGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1Mg
Mi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMu
MzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBm
aXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWpl
Y3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3doZW4gYHJlamVjdFByb21pc2VgIGlzIGNhbGxlZCB3
aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgcmAgYHJgIGlzIGBmYWxzZWAg
YHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJv
bSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVu
IGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3QgYHByb21p
c2VgIHdpdGggYHJgIGByYCBpcyBgZmFsc2VgIGB0aGVuYCBjYWxscyBgcmVqZWN0UHJvbWlzZWAg
c3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6
IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmly
c3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0
UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCByZWFzb24gYHJgLCByZWplY3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBgZmFsc2VgIGB0
aGVuYCBjYWxscyBgcmVqZWN0UHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9t
IGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFu
IG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNh
bGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2Vg
LCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3doZW4g
YHJlamVjdFByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJvbWlz
ZWAgd2l0aCBgcmAgYHJgIGlzIGBmYWxzZWAgYHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBh
c3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6
IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmly
c3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0
UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCByZWFzb24gYHJgLCByZWplY3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBgMGAgYHRoZW5g
IGNhbGxzIGByZWplY3RQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1
bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGByZWpl
Y3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3QgYHByb21pc2VgIHdp
dGggYHJgIGByYCBpcyBgMGAgYHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBzeW5jaHJvbm91
c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5g
IGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVu
dCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAy
LjMuMy4zLjI6IElmL3doZW4gYHJlamVjdFByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBg
cmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgcmAgYHJgIGlzIGAwYCBgdGhlbmAgY2FsbHMgYHJl
amVjdFByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGByZWplY3RQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3QgYHByb21pc2VgIHdpdGggYHJgIGBy
YCBpcyBgMGAgYHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4y
OiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWpl
Y3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBhbiBlcnJvciBgdGhlbmAgY2FsbHMgYHJlamVj
dFByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3doZW4gYHJlamVjdFByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgcmAgYHJgIGlz
IGFuIGVycm9yIGB0aGVuYCBjYWxscyBgcmVqZWN0UHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4y
OiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWpl
Y3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBhbiBlcnJvciBgdGhlbmAgY2FsbHMgYHJlamVj
dFByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBp
cyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBp
cyBhbiBlcnJvciBgdGhlbmAgY2FsbHMgYHJlamVjdFByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjI6IElmL3doZW4gYHJlamVjdFByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJl
amVjdCBgcHJvbWlzZWAgd2l0aCBgcmAgYHJgIGlzIGFuIGVycm9yIHdpdGhvdXQgYSBzdGFjayBg
dGhlbmAgY2FsbHMgYHJlamVjdFByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9t
IGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFu
IG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNh
bGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2Vg
LCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3doZW4g
YHJlamVjdFByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJvbWlz
ZWAgd2l0aCBgcmAgYHJgIGlzIGFuIGVycm9yIHdpdGhvdXQgYSBzdGFjayBgdGhlbmAgY2FsbHMg
YHJlamVjdFByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQg
cHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1
bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4
YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQg
YXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMjogSWYvd2hlbiBgcmVqZWN0UHJvbWlz
ZWAgaXMgY2FsbGVkIHdpdGggcmVhc29uIGByYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGByYCBg
cmAgaXMgYW4gZXJyb3Igd2l0aG91dCBhIHN0YWNrIGB0aGVuYCBjYWxscyBgcmVqZWN0UHJvbWlz
ZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3doZW4gYHJlamVjdFByb21pc2VgIGlzIGNhbGxl
ZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgcmAgYHJgIGlzIGFuIGVy
cm9yIHdpdGhvdXQgYSBzdGFjayBgdGhlbmAgY2FsbHMgYHJlamVjdFByb21pc2VgIGFzeW5jaHJv
bm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90
aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRo
ZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1
bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNl
YCAyLjMuMy4zLjI6IElmL3doZW4gYHJlamVjdFByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNv
biBgcmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgcmAgYHJgIGlzIGEgZGF0ZSBgdGhlbmAgY2Fs
bHMgYHJlamVjdFByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmls
bGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3doZW4gYHJlamVjdFBy
b21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBg
cmAgYHJgIGlzIGEgZGF0ZSBgdGhlbmAgY2FsbHMgYHJlamVjdFByb21pc2VgIHN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMjogSWYvd2hlbiBgcmVqZWN0UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggcmVhc29uIGBy
YCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGByYCBgcmAgaXMgYSBkYXRlIGB0aGVuYCBjYWxscyBg
cmVqZWN0UHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3doZW4gYHJlamVjdFByb21p
c2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgcmAg
YHJgIGlzIGEgZGF0ZSBgdGhlbmAgY2FsbHMgYHJlamVjdFByb21pc2VgIGFzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjI6IElmL3doZW4gYHJlamVjdFByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAs
IHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgcmAgYHJgIGlzIGFuIG9iamVjdCBgdGhlbmAgY2FsbHMg
YHJlamVjdFByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3doZW4gYHJlamVjdFByb21p
c2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgcmAg
YHJgIGlzIGFuIG9iamVjdCBgdGhlbmAgY2FsbHMgYHJlamVjdFByb21pc2VgIHN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMjogSWYvd2hlbiBgcmVqZWN0UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggcmVhc29uIGBy
YCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGByYCBgcmAgaXMgYW4gb2JqZWN0IGB0aGVuYCBjYWxs
cyBgcmVqZWN0UHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmls
bGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3doZW4gYHJlamVjdFBy
b21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBg
cmAgYHJgIGlzIGFuIG9iamVjdCBgdGhlbmAgY2FsbHMgYHJlamVjdFByb21pc2VgIGFzeW5jaHJv
bm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90
aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRo
ZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1
bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNl
YCAyLjMuMy4zLjI6IElmL3doZW4gYHJlamVjdFByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNv
biBgcmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgcmAgYHJgIGlzIGFuIGFsd2F5cy1wZW5kaW5n
IHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVqZWN0UHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBp
ZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBm
dW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNv
bHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMu
MjogSWYvd2hlbiBgcmVqZWN0UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggcmVhc29uIGByYCwgcmVq
ZWN0IGBwcm9taXNlYCB3aXRoIGByYCBgcmAgaXMgYW4gYWx3YXlzLXBlbmRpbmcgdGhlbmFibGUg
YHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJv
bSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFu
IG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNh
bGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2Vg
LCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3doZW4g
YHJlamVjdFByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJvbWlz
ZWAgd2l0aCBgcmAgYHJgIGlzIGFuIGFsd2F5cy1wZW5kaW5nIHRoZW5hYmxlIGB0aGVuYCBjYWxs
cyBgcmVqZWN0UHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmls
bGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3doZW4gYHJlamVjdFBy
b21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBg
cmAgYHJgIGlzIGFuIGFsd2F5cy1wZW5kaW5nIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVqZWN0
UHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMjogSWYvd2hlbiBgcmVqZWN0UHJvbWlzZWAgaXMg
Y2FsbGVkIHdpdGggcmVhc29uIGByYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGByYCBgcmAgaXMg
YSBmdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlamVjdFByb21pc2VgIHN5bmNocm9u
b3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90
aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRo
ZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1
bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNl
YCAyLjMuMy4zLjI6IElmL3doZW4gYHJlamVjdFByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNv
biBgcmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgcmAgYHJgIGlzIGEgZnVsZmlsbGVkIHByb21p
c2UgYHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4g
ZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3do
ZW4gYHJlamVjdFByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJv
bWlzZWAgd2l0aCBgcmAgYHJgIGlzIGEgZnVsZmlsbGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGBy
ZWplY3RQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQg
cHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1
bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4
YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQg
YXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMjogSWYvd2hlbiBgcmVqZWN0UHJvbWlz
ZWAgaXMgY2FsbGVkIHdpdGggcmVhc29uIGByYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGByYCBg
cmAgaXMgYSBmdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlamVjdFByb21pc2VgIGFz
eW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4z
LjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzog
SWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJz
dCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQ
cm9taXNlYCAyLjMuMy4zLjI6IElmL3doZW4gYHJlamVjdFByb21pc2VgIGlzIGNhbGxlZCB3aXRo
IHJlYXNvbiBgcmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgcmAgYHJgIGlzIGEgcmVqZWN0ZWQg
cHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlamVjdFByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJl
dHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYg
YHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVu
Y3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2
ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6
IElmL3doZW4gYHJlamVjdFByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVj
dCBgcHJvbWlzZWAgd2l0aCBgcmAgYHJgIGlzIGEgcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2Fs
bHMgYHJlamVjdFByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRo
IGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNv
bmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMjogSWYvd2hlbiBgcmVqZWN0UHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggcmVhc29uIGByYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGBy
YCBgcmAgaXMgYSByZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVqZWN0UHJvbWlzZWAg
YXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1Mg
Mi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMu
MzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBm
aXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWpl
Y3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3doZW4gYHJlamVjdFByb21pc2VgIGlzIGNhbGxlZCB3
aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgcmAgYHJgIGlzIGEgcmVqZWN0
ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlamVjdFByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjM6IElmIGJvdGggYHJlc29sdmVQcm9taXNlYCBhbmQgYHJlamVjdFByb21pc2VgIGFyZSBjYWxs
ZWQsIG9yIG11bHRpcGxlIGNhbGxzIHRvIHRoZSBzYW1lIGFyZ3VtZW50IGFyZSBtYWRlLCB0aGUg
Zmlyc3QgY2FsbCB0YWtlcyBwcmVjZWRlbmNlLCBhbmQgYW55IGZ1cnRoZXIgY2FsbHMgYXJlIGln
bm9yZWQuIGNhbGxpbmcgYHJlc29sdmVQcm9taXNlYCB0aGVuIGByZWplY3RQcm9taXNlYCwgYm90
aCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4zOiBJZiBib3RoIGByZXNvbHZlUHJvbWlzZWAgYW5kIGByZWpl
Y3RQcm9taXNlYCBhcmUgY2FsbGVkLCBvciBtdWx0aXBsZSBjYWxscyB0byB0aGUgc2FtZSBhcmd1
bWVudCBhcmUgbWFkZSwgdGhlIGZpcnN0IGNhbGwgdGFrZXMgcHJlY2VkZW5jZSwgYW5kIGFueSBm
dXJ0aGVyIGNhbGxzIGFyZSBpZ25vcmVkLiBjYWxsaW5nIGByZXNvbHZlUHJvbWlzZWAgdGhlbiBg
cmVqZWN0UHJvbWlzZWAsIGJvdGggc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWpl
Y3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qg
b3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdp
dGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNl
Y29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4zOiBJZiBib3RoIGByZXNvbHZl
UHJvbWlzZWAgYW5kIGByZWplY3RQcm9taXNlYCBhcmUgY2FsbGVkLCBvciBtdWx0aXBsZSBjYWxs
cyB0byB0aGUgc2FtZSBhcmd1bWVudCBhcmUgbWFkZSwgdGhlIGZpcnN0IGNhbGwgdGFrZXMgcHJl
Y2VkZW5jZSwgYW5kIGFueSBmdXJ0aGVyIGNhbGxzIGFyZSBpZ25vcmVkLiBjYWxsaW5nIGByZXNv
bHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB0aGVuIGByZWplY3RQcm9taXNlYCBhc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3Ro
ZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhl
bmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3Vt
ZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2Vg
IDIuMy4zLjMuMzogSWYgYm90aCBgcmVzb2x2ZVByb21pc2VgIGFuZCBgcmVqZWN0UHJvbWlzZWAg
YXJlIGNhbGxlZCwgb3IgbXVsdGlwbGUgY2FsbHMgdG8gdGhlIHNhbWUgYXJndW1lbnQgYXJlIG1h
ZGUsIHRoZSBmaXJzdCBjYWxsIHRha2VzIHByZWNlZGVuY2UsIGFuZCBhbnkgZnVydGhlciBjYWxs
cyBhcmUgaWdub3JlZC4gY2FsbGluZyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdGhl
biBgcmVqZWN0UHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRo
IGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNv
bmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMzogSWYgYm90aCBgcmVzb2x2ZVBy
b21pc2VgIGFuZCBgcmVqZWN0UHJvbWlzZWAgYXJlIGNhbGxlZCwgb3IgbXVsdGlwbGUgY2FsbHMg
dG8gdGhlIHNhbWUgYXJndW1lbnQgYXJlIG1hZGUsIHRoZSBmaXJzdCBjYWxsIHRha2VzIHByZWNl
ZGVuY2UsIGFuZCBhbnkgZnVydGhlciBjYWxscyBhcmUgaWdub3JlZC4gY2FsbGluZyBgcmVzb2x2
ZVByb21pc2VgIHRoZW4gYHJlamVjdFByb21pc2VgLCBib3RoIGFzeW5jaHJvbm91c2x5IHZpYSBy
ZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4z
OiBJZiBib3RoIGByZXNvbHZlUHJvbWlzZWAgYW5kIGByZWplY3RQcm9taXNlYCBhcmUgY2FsbGVk
LCBvciBtdWx0aXBsZSBjYWxscyB0byB0aGUgc2FtZSBhcmd1bWVudCBhcmUgbWFkZSwgdGhlIGZp
cnN0IGNhbGwgdGFrZXMgcHJlY2VkZW5jZSwgYW5kIGFueSBmdXJ0aGVyIGNhbGxzIGFyZSBpZ25v
cmVkLiBjYWxsaW5nIGByZXNvbHZlUHJvbWlzZWAgdGhlbiBgcmVqZWN0UHJvbWlzZWAsIGJvdGgg
YXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4z
OiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZp
cnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVj
dFByb21pc2VgIDIuMy4zLjMuMzogSWYgYm90aCBgcmVzb2x2ZVByb21pc2VgIGFuZCBgcmVqZWN0
UHJvbWlzZWAgYXJlIGNhbGxlZCwgb3IgbXVsdGlwbGUgY2FsbHMgdG8gdGhlIHNhbWUgYXJndW1l
bnQgYXJlIG1hZGUsIHRoZSBmaXJzdCBjYWxsIHRha2VzIHByZWNlZGVuY2UsIGFuZCBhbnkgZnVy
dGhlciBjYWxscyBhcmUgaWdub3JlZC4gY2FsbGluZyBgcmVzb2x2ZVByb21pc2VgIHdpdGggYW4g
YXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIHByb21pc2UsIHRoZW4gY2FsbGluZyBgcmVqZWN0UHJv
bWlzZWAsIGJvdGggc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMzogSWYgYm90aCBgcmVzb2x2ZVByb21pc2Vg
IGFuZCBgcmVqZWN0UHJvbWlzZWAgYXJlIGNhbGxlZCwgb3IgbXVsdGlwbGUgY2FsbHMgdG8gdGhl
IHNhbWUgYXJndW1lbnQgYXJlIG1hZGUsIHRoZSBmaXJzdCBjYWxsIHRha2VzIHByZWNlZGVuY2Us
IGFuZCBhbnkgZnVydGhlciBjYWxscyBhcmUgaWdub3JlZC4gY2FsbGluZyBgcmVzb2x2ZVByb21p
c2VgIHdpdGggYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIHByb21pc2UsIHRoZW4gY2FsbGlu
ZyBgcmVqZWN0UHJvbWlzZWAsIGJvdGggc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBy
ZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4zOiBJZiBib3RoIGByZXNv
bHZlUHJvbWlzZWAgYW5kIGByZWplY3RQcm9taXNlYCBhcmUgY2FsbGVkLCBvciBtdWx0aXBsZSBj
YWxscyB0byB0aGUgc2FtZSBhcmd1bWVudCBhcmUgbWFkZSwgdGhlIGZpcnN0IGNhbGwgdGFrZXMg
cHJlY2VkZW5jZSwgYW5kIGFueSBmdXJ0aGVyIGNhbGxzIGFyZSBpZ25vcmVkLiBjYWxsaW5nIGBy
ZXNvbHZlUHJvbWlzZWAgd2l0aCBhbiBhc3luY2hyb25vdXNseS1yZWplY3RlZCBwcm9taXNlLCB0
aGVuIGNhbGxpbmcgYHJlamVjdFByb21pc2VgLCBib3RoIHN5bmNocm9ub3VzbHkgdmlhIHJldHVy
biBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjM6IElm
IGJvdGggYHJlc29sdmVQcm9taXNlYCBhbmQgYHJlamVjdFByb21pc2VgIGFyZSBjYWxsZWQsIG9y
IG11bHRpcGxlIGNhbGxzIHRvIHRoZSBzYW1lIGFyZ3VtZW50IGFyZSBtYWRlLCB0aGUgZmlyc3Qg
Y2FsbCB0YWtlcyBwcmVjZWRlbmNlLCBhbmQgYW55IGZ1cnRoZXIgY2FsbHMgYXJlIGlnbm9yZWQu
IGNhbGxpbmcgYHJlc29sdmVQcm9taXNlYCB3aXRoIGFuIGFzeW5jaHJvbm91c2x5LXJlamVjdGVk
IHByb21pc2UsIHRoZW4gY2FsbGluZyBgcmVqZWN0UHJvbWlzZWAsIGJvdGggc3luY2hyb25vdXNs
eSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4z
LjMuMy4zOiBJZiBib3RoIGByZXNvbHZlUHJvbWlzZWAgYW5kIGByZWplY3RQcm9taXNlYCBhcmUg
Y2FsbGVkLCBvciBtdWx0aXBsZSBjYWxscyB0byB0aGUgc2FtZSBhcmd1bWVudCBhcmUgbWFkZSwg
dGhlIGZpcnN0IGNhbGwgdGFrZXMgcHJlY2VkZW5jZSwgYW5kIGFueSBmdXJ0aGVyIGNhbGxzIGFy
ZSBpZ25vcmVkLiBjYWxsaW5nIGByZWplY3RQcm9taXNlYCB0aGVuIGByZXNvbHZlUHJvbWlzZWAs
IGJvdGggc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMzogSWYgYm90aCBgcmVzb2x2ZVByb21pc2VgIGFuZCBg
cmVqZWN0UHJvbWlzZWAgYXJlIGNhbGxlZCwgb3IgbXVsdGlwbGUgY2FsbHMgdG8gdGhlIHNhbWUg
YXJndW1lbnQgYXJlIG1hZGUsIHRoZSBmaXJzdCBjYWxsIHRha2VzIHByZWNlZGVuY2UsIGFuZCBh
bnkgZnVydGhlciBjYWxscyBhcmUgaWdub3JlZC4gY2FsbGluZyBgcmVqZWN0UHJvbWlzZWAgdGhl
biBgcmVzb2x2ZVByb21pc2VgLCBib3RoIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEg
cmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBp
dCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFu
ZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMzogSWYgYm90aCBgcmVz
b2x2ZVByb21pc2VgIGFuZCBgcmVqZWN0UHJvbWlzZWAgYXJlIGNhbGxlZCwgb3IgbXVsdGlwbGUg
Y2FsbHMgdG8gdGhlIHNhbWUgYXJndW1lbnQgYXJlIG1hZGUsIHRoZSBmaXJzdCBjYWxsIHRha2Vz
IHByZWNlZGVuY2UsIGFuZCBhbnkgZnVydGhlciBjYWxscyBhcmUgaWdub3JlZC4gY2FsbGluZyBg
cmVqZWN0UHJvbWlzZWAgc3luY2hyb25vdXNseSB0aGVuIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6
IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYg
YHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBh
cmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9t
aXNlYCAyLjMuMy4zLjM6IElmIGJvdGggYHJlc29sdmVQcm9taXNlYCBhbmQgYHJlamVjdFByb21p
c2VgIGFyZSBjYWxsZWQsIG9yIG11bHRpcGxlIGNhbGxzIHRvIHRoZSBzYW1lIGFyZ3VtZW50IGFy
ZSBtYWRlLCB0aGUgZmlyc3QgY2FsbCB0YWtlcyBwcmVjZWRlbmNlLCBhbmQgYW55IGZ1cnRoZXIg
Y2FsbHMgYXJlIGlnbm9yZWQuIGNhbGxpbmcgYHJlamVjdFByb21pc2VgIHN5bmNocm9ub3VzbHkg
dGhlbiBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJl
amVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQg
d2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQg
c2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjM6IElmIGJvdGggYHJlc29s
dmVQcm9taXNlYCBhbmQgYHJlamVjdFByb21pc2VgIGFyZSBjYWxsZWQsIG9yIG11bHRpcGxlIGNh
bGxzIHRvIHRoZSBzYW1lIGFyZ3VtZW50IGFyZSBtYWRlLCB0aGUgZmlyc3QgY2FsbCB0YWtlcyBw
cmVjZWRlbmNlLCBhbmQgYW55IGZ1cnRoZXIgY2FsbHMgYXJlIGlnbm9yZWQuIGNhbGxpbmcgYHJl
amVjdFByb21pc2VgIHRoZW4gYHJlc29sdmVQcm9taXNlYCwgYm90aCBhc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNl
LCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMg
YSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGBy
ZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4z
LjMuMzogSWYgYm90aCBgcmVzb2x2ZVByb21pc2VgIGFuZCBgcmVqZWN0UHJvbWlzZWAgYXJlIGNh
bGxlZCwgb3IgbXVsdGlwbGUgY2FsbHMgdG8gdGhlIHNhbWUgYXJndW1lbnQgYXJlIG1hZGUsIHRo
ZSBmaXJzdCBjYWxsIHRha2VzIHByZWNlZGVuY2UsIGFuZCBhbnkgZnVydGhlciBjYWxscyBhcmUg
aWdub3JlZC4gY2FsbGluZyBgcmVqZWN0UHJvbWlzZWAgdGhlbiBgcmVzb2x2ZVByb21pc2VgLCBi
b3RoIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjM6IElmIGJvdGggYHJlc29sdmVQcm9taXNlYCBhbmQgYHJl
amVjdFByb21pc2VgIGFyZSBjYWxsZWQsIG9yIG11bHRpcGxlIGNhbGxzIHRvIHRoZSBzYW1lIGFy
Z3VtZW50IGFyZSBtYWRlLCB0aGUgZmlyc3QgY2FsbCB0YWtlcyBwcmVjZWRlbmNlLCBhbmQgYW55
IGZ1cnRoZXIgY2FsbHMgYXJlIGlnbm9yZWQuIGNhbGxpbmcgYHJlc29sdmVQcm9taXNlYCB0d2lj
ZSBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4zOiBJZiBib3RoIGByZXNvbHZlUHJvbWlzZWAgYW5kIGByZWpl
Y3RQcm9taXNlYCBhcmUgY2FsbGVkLCBvciBtdWx0aXBsZSBjYWxscyB0byB0aGUgc2FtZSBhcmd1
bWVudCBhcmUgbWFkZSwgdGhlIGZpcnN0IGNhbGwgdGFrZXMgcHJlY2VkZW5jZSwgYW5kIGFueSBm
dXJ0aGVyIGNhbGxzIGFyZSBpZ25vcmVkLiBjYWxsaW5nIGByZXNvbHZlUHJvbWlzZWAgdHdpY2Ug
c3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6
IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmly
c3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0
UHJvbWlzZWAgMi4zLjMuMy4zOiBJZiBib3RoIGByZXNvbHZlUHJvbWlzZWAgYW5kIGByZWplY3RQ
cm9taXNlYCBhcmUgY2FsbGVkLCBvciBtdWx0aXBsZSBjYWxscyB0byB0aGUgc2FtZSBhcmd1bWVu
dCBhcmUgbWFkZSwgdGhlIGZpcnN0IGNhbGwgdGFrZXMgcHJlY2VkZW5jZSwgYW5kIGFueSBmdXJ0
aGVyIGNhbGxzIGFyZSBpZ25vcmVkLiBjYWxsaW5nIGByZXNvbHZlUHJvbWlzZWAgdHdpY2UsIGZp
cnN0IHN5bmNocm9ub3VzbHkgdGhlbiBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBm
dWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBp
dCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFu
ZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMzogSWYgYm90aCBgcmVz
b2x2ZVByb21pc2VgIGFuZCBgcmVqZWN0UHJvbWlzZWAgYXJlIGNhbGxlZCwgb3IgbXVsdGlwbGUg
Y2FsbHMgdG8gdGhlIHNhbWUgYXJndW1lbnQgYXJlIG1hZGUsIHRoZSBmaXJzdCBjYWxsIHRha2Vz
IHByZWNlZGVuY2UsIGFuZCBhbnkgZnVydGhlciBjYWxscyBhcmUgaWdub3JlZC4gY2FsbGluZyBg
cmVzb2x2ZVByb21pc2VgIHR3aWNlLCBmaXJzdCBzeW5jaHJvbm91c2x5IHRoZW4gYXN5bmNocm9u
b3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3Ro
ZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhl
bmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3Vt
ZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2Vg
IDIuMy4zLjMuMzogSWYgYm90aCBgcmVzb2x2ZVByb21pc2VgIGFuZCBgcmVqZWN0UHJvbWlzZWAg
YXJlIGNhbGxlZCwgb3IgbXVsdGlwbGUgY2FsbHMgdG8gdGhlIHNhbWUgYXJndW1lbnQgYXJlIG1h
ZGUsIHRoZSBmaXJzdCBjYWxsIHRha2VzIHByZWNlZGVuY2UsIGFuZCBhbnkgZnVydGhlciBjYWxs
cyBhcmUgaWdub3JlZC4gY2FsbGluZyBgcmVzb2x2ZVByb21pc2VgIHR3aWNlLCBib3RoIHRpbWVz
IGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4zOiBJZiBib3RoIGByZXNvbHZlUHJvbWlzZWAgYW5kIGByZWpl
Y3RQcm9taXNlYCBhcmUgY2FsbGVkLCBvciBtdWx0aXBsZSBjYWxscyB0byB0aGUgc2FtZSBhcmd1
bWVudCBhcmUgbWFkZSwgdGhlIGZpcnN0IGNhbGwgdGFrZXMgcHJlY2VkZW5jZSwgYW5kIGFueSBm
dXJ0aGVyIGNhbGxzIGFyZSBpZ25vcmVkLiBjYWxsaW5nIGByZXNvbHZlUHJvbWlzZWAgdHdpY2Us
IGJvdGggdGltZXMgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMzogSWYgYm90aCBgcmVzb2x2ZVByb21pc2Vg
IGFuZCBgcmVqZWN0UHJvbWlzZWAgYXJlIGNhbGxlZCwgb3IgbXVsdGlwbGUgY2FsbHMgdG8gdGhl
IHNhbWUgYXJndW1lbnQgYXJlIG1hZGUsIHRoZSBmaXJzdCBjYWxsIHRha2VzIHByZWNlZGVuY2Us
IGFuZCBhbnkgZnVydGhlciBjYWxscyBhcmUgaWdub3JlZC4gY2FsbGluZyBgcmVzb2x2ZVByb21p
c2VgIHdpdGggYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIHByb21pc2UsIHRoZW4gY2FsbGlu
ZyBpdCBhZ2FpbiwgYm90aCB0aW1lcyBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1
bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4zOiBJZiBib3RoIGByZXNv
bHZlUHJvbWlzZWAgYW5kIGByZWplY3RQcm9taXNlYCBhcmUgY2FsbGVkLCBvciBtdWx0aXBsZSBj
YWxscyB0byB0aGUgc2FtZSBhcmd1bWVudCBhcmUgbWFkZSwgdGhlIGZpcnN0IGNhbGwgdGFrZXMg
cHJlY2VkZW5jZSwgYW5kIGFueSBmdXJ0aGVyIGNhbGxzIGFyZSBpZ25vcmVkLiBjYWxsaW5nIGBy
ZXNvbHZlUHJvbWlzZWAgd2l0aCBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgcHJvbWlzZSwg
dGhlbiBjYWxsaW5nIGl0IGFnYWluLCBib3RoIHRpbWVzIHN5bmNocm9ub3VzbHkgdmlhIHJldHVy
biBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlv
biwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJv
bWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMzogSWYg
Ym90aCBgcmVzb2x2ZVByb21pc2VgIGFuZCBgcmVqZWN0UHJvbWlzZWAgYXJlIGNhbGxlZCwgb3Ig
bXVsdGlwbGUgY2FsbHMgdG8gdGhlIHNhbWUgYXJndW1lbnQgYXJlIG1hZGUsIHRoZSBmaXJzdCBj
YWxsIHRha2VzIHByZWNlZGVuY2UsIGFuZCBhbnkgZnVydGhlciBjYWxscyBhcmUgaWdub3JlZC4g
Y2FsbGluZyBgcmVzb2x2ZVByb21pc2VgIHdpdGggYW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQg
cHJvbWlzZSwgdGhlbiBjYWxsaW5nIGl0IGFnYWluLCBib3RoIHRpbWVzIHN5bmNocm9ub3VzbHkg
dmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjM6IElmIGJvdGggYHJlc29sdmVQcm9taXNlYCBhbmQgYHJlamVjdFByb21pc2VgIGFyZSBj
YWxsZWQsIG9yIG11bHRpcGxlIGNhbGxzIHRvIHRoZSBzYW1lIGFyZ3VtZW50IGFyZSBtYWRlLCB0
aGUgZmlyc3QgY2FsbCB0YWtlcyBwcmVjZWRlbmNlLCBhbmQgYW55IGZ1cnRoZXIgY2FsbHMgYXJl
IGlnbm9yZWQuIGNhbGxpbmcgYHJlc29sdmVQcm9taXNlYCB3aXRoIGFuIGFzeW5jaHJvbm91c2x5
LXJlamVjdGVkIHByb21pc2UsIHRoZW4gY2FsbGluZyBpdCBhZ2FpbiwgYm90aCB0aW1lcyBzeW5j
aHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6
IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYg
YHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBh
cmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9t
aXNlYCAyLjMuMy4zLjM6IElmIGJvdGggYHJlc29sdmVQcm9taXNlYCBhbmQgYHJlamVjdFByb21p
c2VgIGFyZSBjYWxsZWQsIG9yIG11bHRpcGxlIGNhbGxzIHRvIHRoZSBzYW1lIGFyZ3VtZW50IGFy
ZSBtYWRlLCB0aGUgZmlyc3QgY2FsbCB0YWtlcyBwcmVjZWRlbmNlLCBhbmQgYW55IGZ1cnRoZXIg
Y2FsbHMgYXJlIGlnbm9yZWQuIGNhbGxpbmcgYHJlamVjdFByb21pc2VgIHR3aWNlIHN5bmNocm9u
b3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90
aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRo
ZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1
bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNl
YCAyLjMuMy4zLjM6IElmIGJvdGggYHJlc29sdmVQcm9taXNlYCBhbmQgYHJlamVjdFByb21pc2Vg
IGFyZSBjYWxsZWQsIG9yIG11bHRpcGxlIGNhbGxzIHRvIHRoZSBzYW1lIGFyZ3VtZW50IGFyZSBt
YWRlLCB0aGUgZmlyc3QgY2FsbCB0YWtlcyBwcmVjZWRlbmNlLCBhbmQgYW55IGZ1cnRoZXIgY2Fs
bHMgYXJlIGlnbm9yZWQuIGNhbGxpbmcgYHJlamVjdFByb21pc2VgIHR3aWNlIHN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMzogSWYgYm90aCBgcmVzb2x2ZVByb21pc2VgIGFuZCBgcmVqZWN0UHJvbWlzZWAgYXJl
IGNhbGxlZCwgb3IgbXVsdGlwbGUgY2FsbHMgdG8gdGhlIHNhbWUgYXJndW1lbnQgYXJlIG1hZGUs
IHRoZSBmaXJzdCBjYWxsIHRha2VzIHByZWNlZGVuY2UsIGFuZCBhbnkgZnVydGhlciBjYWxscyBh
cmUgaWdub3JlZC4gY2FsbGluZyBgcmVqZWN0UHJvbWlzZWAgdHdpY2UsIGZpcnN0IHN5bmNocm9u
b3VzbHkgdGhlbiBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMzogSWYgYm90aCBgcmVzb2x2ZVByb21pc2Vg
IGFuZCBgcmVqZWN0UHJvbWlzZWAgYXJlIGNhbGxlZCwgb3IgbXVsdGlwbGUgY2FsbHMgdG8gdGhl
IHNhbWUgYXJndW1lbnQgYXJlIG1hZGUsIHRoZSBmaXJzdCBjYWxsIHRha2VzIHByZWNlZGVuY2Us
IGFuZCBhbnkgZnVydGhlciBjYWxscyBhcmUgaWdub3JlZC4gY2FsbGluZyBgcmVqZWN0UHJvbWlz
ZWAgdHdpY2UsIGZpcnN0IHN5bmNocm9ub3VzbHkgdGhlbiBhc3luY2hyb25vdXNseSB2aWEgcmV0
dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4
YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0
aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQ
cm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4zOiBJ
ZiBib3RoIGByZXNvbHZlUHJvbWlzZWAgYW5kIGByZWplY3RQcm9taXNlYCBhcmUgY2FsbGVkLCBv
ciBtdWx0aXBsZSBjYWxscyB0byB0aGUgc2FtZSBhcmd1bWVudCBhcmUgbWFkZSwgdGhlIGZpcnN0
IGNhbGwgdGFrZXMgcHJlY2VkZW5jZSwgYW5kIGFueSBmdXJ0aGVyIGNhbGxzIGFyZSBpZ25vcmVk
LiBjYWxsaW5nIGByZWplY3RQcm9taXNlYCB0d2ljZSwgYm90aCB0aW1lcyBhc3luY2hyb25vdXNs
eSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMzogSWYgYm90aCBgcmVzb2x2ZVByb21pc2VgIGFuZCBgcmVqZWN0UHJvbWlzZWAgYXJl
IGNhbGxlZCwgb3IgbXVsdGlwbGUgY2FsbHMgdG8gdGhlIHNhbWUgYXJndW1lbnQgYXJlIG1hZGUs
IHRoZSBmaXJzdCBjYWxsIHRha2VzIHByZWNlZGVuY2UsIGFuZCBhbnkgZnVydGhlciBjYWxscyBh
cmUgaWdub3JlZC4gY2FsbGluZyBgcmVqZWN0UHJvbWlzZWAgdHdpY2UsIGJvdGggdGltZXMgYXN5
bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMu
MzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJ
ZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0
IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFBy
b21pc2VgIDIuMy4zLjMuMzogSWYgYm90aCBgcmVzb2x2ZVByb21pc2VgIGFuZCBgcmVqZWN0UHJv
bWlzZWAgYXJlIGNhbGxlZCwgb3IgbXVsdGlwbGUgY2FsbHMgdG8gdGhlIHNhbWUgYXJndW1lbnQg
YXJlIG1hZGUsIHRoZSBmaXJzdCBjYWxsIHRha2VzIHByZWNlZGVuY2UsIGFuZCBhbnkgZnVydGhl
ciBjYWxscyBhcmUgaWdub3JlZC4gc2F2aW5nIGFuZCBhYnVzaW5nIGByZXNvbHZlUHJvbWlzZWAg
YW5kIGByZWplY3RQcm9taXNlYCB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMzogSWYgYm90aCBgcmVzb2x2ZVByb21pc2VgIGFuZCBg
cmVqZWN0UHJvbWlzZWAgYXJlIGNhbGxlZCwgb3IgbXVsdGlwbGUgY2FsbHMgdG8gdGhlIHNhbWUg
YXJndW1lbnQgYXJlIG1hZGUsIHRoZSBmaXJzdCBjYWxsIHRha2VzIHByZWNlZGVuY2UsIGFuZCBh
bnkgZnVydGhlciBjYWxscyBhcmUgaWdub3JlZC4gc2F2aW5nIGFuZCBhYnVzaW5nIGByZXNvbHZl
UHJvbWlzZWAgYW5kIGByZWplY3RQcm9taXNlYCB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy40OiBJZiBjYWxsaW5nIGB0aGVuYCB0aHJv
d3MgYW4gZXhjZXB0aW9uIGBlYCwgMi4zLjMuMy40LjE6IElmIGByZXNvbHZlUHJvbWlzZWAgb3Ig
YHJlamVjdFByb21pc2VgIGhhdmUgYmVlbiBjYWxsZWQsIGlnbm9yZSBpdC4gYHJlc29sdmVQcm9t
aXNlYCB3YXMgY2FsbGVkIHdpdGggYSBub24tdGhlbmFibGUgdmlhIHJldHVybiBmcm9tIGEgZnVs
ZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQg
d2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQg
c2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjQ6IElmIGNhbGxpbmcgYHRo
ZW5gIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCAyLjMuMy4zLjQuMTogSWYgYHJlc29sdmVQcm9t
aXNlYCBvciBgcmVqZWN0UHJvbWlzZWAgaGF2ZSBiZWVuIGNhbGxlZCwgaWdub3JlIGl0LiBgcmVz
b2x2ZVByb21pc2VgIHdhcyBjYWxsZWQgd2l0aCBhIG5vbi10aGVuYWJsZSB2aWEgcmV0dXJuIGZy
b20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy40OiBJZiBjYWxs
aW5nIGB0aGVuYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgMi4zLjMuMy40LjE6IElmIGByZXNv
bHZlUHJvbWlzZWAgb3IgYHJlamVjdFByb21pc2VgIGhhdmUgYmVlbiBjYWxsZWQsIGlnbm9yZSBp
dC4gYHJlc29sdmVQcm9taXNlYCB3YXMgY2FsbGVkIHdpdGggYW4gYXN5bmNocm9ub3VzbHktZnVs
ZmlsbGVkIHByb21pc2UgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1Mg
Mi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMu
MzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBm
aXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWpl
Y3RQcm9taXNlYCAyLjMuMy4zLjQ6IElmIGNhbGxpbmcgYHRoZW5gIHRocm93cyBhbiBleGNlcHRp
b24gYGVgLCAyLjMuMy4zLjQuMTogSWYgYHJlc29sdmVQcm9taXNlYCBvciBgcmVqZWN0UHJvbWlz
ZWAgaGF2ZSBiZWVuIGNhbGxlZCwgaWdub3JlIGl0LiBgcmVzb2x2ZVByb21pc2VgIHdhcyBjYWxs
ZWQgd2l0aCBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgcHJvbWlzZSB2aWEgcmV0dXJuIGZy
b20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy40OiBJZiBjYWxs
aW5nIGB0aGVuYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgMi4zLjMuMy40LjE6IElmIGByZXNv
bHZlUHJvbWlzZWAgb3IgYHJlamVjdFByb21pc2VgIGhhdmUgYmVlbiBjYWxsZWQsIGlnbm9yZSBp
dC4gYHJlc29sdmVQcm9taXNlYCB3YXMgY2FsbGVkIHdpdGggYW4gYXN5bmNocm9ub3VzbHktcmVq
ZWN0ZWQgcHJvbWlzZSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4z
OiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZp
cnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVj
dFByb21pc2VgIDIuMy4zLjMuNDogSWYgY2FsbGluZyBgdGhlbmAgdGhyb3dzIGFuIGV4Y2VwdGlv
biBgZWAsIDIuMy4zLjMuNC4xOiBJZiBgcmVzb2x2ZVByb21pc2VgIG9yIGByZWplY3RQcm9taXNl
YCBoYXZlIGJlZW4gY2FsbGVkLCBpZ25vcmUgaXQuIGByZXNvbHZlUHJvbWlzZWAgd2FzIGNhbGxl
ZCB3aXRoIGFuIGFzeW5jaHJvbm91c2x5LXJlamVjdGVkIHByb21pc2UgdmlhIHJldHVybiBmcm9t
IGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4g
b2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2Fs
bCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAs
IGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuNDogSWYgY2FsbGlu
ZyBgdGhlbmAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIDIuMy4zLjMuNC4xOiBJZiBgcmVzb2x2
ZVByb21pc2VgIG9yIGByZWplY3RQcm9taXNlYCBoYXZlIGJlZW4gY2FsbGVkLCBpZ25vcmUgaXQu
IGByZWplY3RQcm9taXNlYCB3YXMgY2FsbGVkIHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy40OiBJZiBjYWxsaW5nIGB0aGVuYCB0aHJv
d3MgYW4gZXhjZXB0aW9uIGBlYCwgMi4zLjMuMy40LjE6IElmIGByZXNvbHZlUHJvbWlzZWAgb3Ig
YHJlamVjdFByb21pc2VgIGhhdmUgYmVlbiBjYWxsZWQsIGlnbm9yZSBpdC4gYHJlamVjdFByb21p
c2VgIHdhcyBjYWxsZWQgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4z
OiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZp
cnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVj
dFByb21pc2VgIDIuMy4zLjMuNDogSWYgY2FsbGluZyBgdGhlbmAgdGhyb3dzIGFuIGV4Y2VwdGlv
biBgZWAsIDIuMy4zLjMuNC4xOiBJZiBgcmVzb2x2ZVByb21pc2VgIG9yIGByZWplY3RQcm9taXNl
YCBoYXZlIGJlZW4gY2FsbGVkLCBpZ25vcmUgaXQuIGByZXNvbHZlUHJvbWlzZWAgdGhlbiBgcmVq
ZWN0UHJvbWlzZWAgd2VyZSBjYWxsZWQgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjQ6IElmIGNhbGxpbmcgYHRoZW5gIHRocm93cyBh
biBleGNlcHRpb24gYGVgLCAyLjMuMy4zLjQuMTogSWYgYHJlc29sdmVQcm9taXNlYCBvciBgcmVq
ZWN0UHJvbWlzZWAgaGF2ZSBiZWVuIGNhbGxlZCwgaWdub3JlIGl0LiBgcmVzb2x2ZVByb21pc2Vg
IHRoZW4gYHJlamVjdFByb21pc2VgIHdlcmUgY2FsbGVkIHZpYSByZXR1cm4gZnJvbSBhIHJlamVj
dGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjQ6IElmIGNhbGxpbmcgYHRoZW5g
IHRocm93cyBhbiBleGNlcHRpb24gYGVgLCAyLjMuMy4zLjQuMTogSWYgYHJlc29sdmVQcm9taXNl
YCBvciBgcmVqZWN0UHJvbWlzZWAgaGF2ZSBiZWVuIGNhbGxlZCwgaWdub3JlIGl0LiBgcmVqZWN0
UHJvbWlzZWAgdGhlbiBgcmVzb2x2ZVByb21pc2VgIHdlcmUgY2FsbGVkIHZpYSByZXR1cm4gZnJv
bSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy40OiBJZiBjYWxs
aW5nIGB0aGVuYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgMi4zLjMuMy40LjE6IElmIGByZXNv
bHZlUHJvbWlzZWAgb3IgYHJlamVjdFByb21pc2VgIGhhdmUgYmVlbiBjYWxsZWQsIGlnbm9yZSBp
dC4gYHJlamVjdFByb21pc2VgIHRoZW4gYHJlc29sdmVQcm9taXNlYCB3ZXJlIGNhbGxlZCB2aWEg
cmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy40
OiBJZiBjYWxsaW5nIGB0aGVuYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgMi4zLjMuMy40LjI6
IE90aGVyd2lzZSwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBzdHJh
aWdodGZvcndhcmQgY2FzZSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFT
UyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMu
My4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2As
IGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJl
amVjdFByb21pc2VgIDIuMy4zLjMuNDogSWYgY2FsbGluZyBgdGhlbmAgdGhyb3dzIGFuIGV4Y2Vw
dGlvbiBgZWAsIDIuMy4zLjMuNC4yOiBPdGhlcndpc2UsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBg
ZWAgYXMgdGhlIHJlYXNvbi4gc3RyYWlnaHRmb3J3YXJkIGNhc2UgdmlhIHJldHVybiBmcm9tIGEg
cmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBp
dCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFu
ZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuNDogSWYgY2FsbGluZyBg
dGhlbmAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIDIuMy4zLjMuNC4yOiBPdGhlcndpc2UsIHJl
amVjdCBgcHJvbWlzZWAgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gYHJlc29sdmVQcm9taXNlYCBp
cyBjYWxsZWQgYXN5bmNocm9ub3VzbHkgYmVmb3JlIHRoZSBgdGhyb3dgIHZpYSByZXR1cm4gZnJv
bSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy40OiBJZiBjYWxs
aW5nIGB0aGVuYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgMi4zLjMuMy40LjI6IE90aGVyd2lz
ZSwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBgcmVzb2x2ZVByb21p
c2VgIGlzIGNhbGxlZCBhc3luY2hyb25vdXNseSBiZWZvcmUgdGhlIGB0aHJvd2AgdmlhIHJldHVy
biBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlv
biwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJv
bWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuNDogSWYg
Y2FsbGluZyBgdGhlbmAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIDIuMy4zLjMuNC4yOiBPdGhl
cndpc2UsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gYHJlamVjdFBy
b21pc2VgIGlzIGNhbGxlZCBhc3luY2hyb25vdXNseSBiZWZvcmUgdGhlIGB0aHJvd2AgdmlhIHJl
dHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYg
YHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVu
Y3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2
ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjQ6
IElmIGNhbGxpbmcgYHRoZW5gIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCAyLjMuMy4zLjQuMjog
T3RoZXJ3aXNlLCByZWplY3QgYHByb21pc2VgIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIGByZWpl
Y3RQcm9taXNlYCBpcyBjYWxsZWQgYXN5bmNocm9ub3VzbHkgYmVmb3JlIHRoZSBgdGhyb3dgIHZp
YSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuNDogSWYgYHRoZW5gIGlzIG5v
dCBhIGZ1bmN0aW9uLCBmdWxmaWxsIHByb21pc2Ugd2l0aCBgeGAgYHRoZW5gIGlzIGA1YCB2aWEg
cmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBp
ZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy40OiBJZiBgdGhlbmAgaXMgbm90
IGEgZnVuY3Rpb24sIGZ1bGZpbGwgcHJvbWlzZSB3aXRoIGB4YCBgdGhlbmAgaXMgYDVgIHZpYSBy
ZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYg
YHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuNDogSWYgYHRoZW5gIGlzIG5vdCBh
IGZ1bmN0aW9uLCBmdWxmaWxsIHByb21pc2Ugd2l0aCBgeGAgYHRoZW5gIGlzIGFuIG9iamVjdCB2
aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNl
LCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy40OiBJZiBgdGhlbmAgaXMg
bm90IGEgZnVuY3Rpb24sIGZ1bGZpbGwgcHJvbWlzZSB3aXRoIGB4YCBgdGhlbmAgaXMgYW4gb2Jq
ZWN0IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuNDogSWYgYHRoZW5g
IGlzIG5vdCBhIGZ1bmN0aW9uLCBmdWxmaWxsIHByb21pc2Ugd2l0aCBgeGAgYHRoZW5gIGlzIGFu
IGFycmF5IGNvbnRhaW5pbmcgYSBmdW5jdGlvbiB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQg
cHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1
bmN0aW9uLCAyLjMuMy40OiBJZiBgdGhlbmAgaXMgbm90IGEgZnVuY3Rpb24sIGZ1bGZpbGwgcHJv
bWlzZSB3aXRoIGB4YCBgdGhlbmAgaXMgYW4gYXJyYXkgY29udGFpbmluZyBhIGZ1bmN0aW9uIHZp
YSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuNDogSWYgYHRoZW5gIGlzIG5v
dCBhIGZ1bmN0aW9uLCBmdWxmaWxsIHByb21pc2Ugd2l0aCBgeGAgYHRoZW5gIGlzIGEgcmVndWxh
ciBleHByZXNzaW9uIHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjQ6
IElmIGB0aGVuYCBpcyBub3QgYSBmdW5jdGlvbiwgZnVsZmlsbCBwcm9taXNlIHdpdGggYHhgIGB0
aGVuYCBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjQ6IElmIGB0aGVuYCBpcyBub3QgYSBmdW5jdGlvbiwgZnVsZmlsbCBwcm9t
aXNlIHdpdGggYHhgIGB0aGVuYCBpcyBhbiBvYmplY3QgaW5oZXJpdGluZyBmcm9tIGBGdW5jdGlv
bi5wcm90b3R5cGVgIHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjQ6
IElmIGB0aGVuYCBpcyBub3QgYSBmdW5jdGlvbiwgZnVsZmlsbCBwcm9taXNlIHdpdGggYHhgIGB0
aGVuYCBpcyBhbiBvYmplY3QgaW5oZXJpdGluZyBmcm9tIGBGdW5jdGlvbi5wcm90b3R5cGVgIHZp
YSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBu
b3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUg
dmFsdWUgaXMgYHVuZGVmaW5lZGAgYWxyZWFkeS1mdWxmaWxsZWQKK1BBU1MgMi4zLjQ6IElmIGB4
YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4
YCBUaGUgdmFsdWUgaXMgYHVuZGVmaW5lZGAgaW1tZWRpYXRlbHktZnVsZmlsbGVkCitQQVNTIDIu
My40OiBJZiBgeGAgaXMgbm90IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgZnVsZmlsbCBgcHJvbWlz
ZWAgd2l0aCBgeGAgVGhlIHZhbHVlIGlzIGB1bmRlZmluZWRgIGV2ZW50dWFsbHktZnVsZmlsbGVk
CitQQVNTIDIuMy40OiBJZiBgeGAgaXMgbm90IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgZnVsZmls
bCBgcHJvbWlzZWAgd2l0aCBgeGAgVGhlIHZhbHVlIGlzIGB1bmRlZmluZWRgIGFscmVhZHktcmVq
ZWN0ZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBm
dWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYHVuZGVmaW5lZGAgaW1tZWRp
YXRlbHktcmVqZWN0ZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1
bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYHVuZGVmaW5l
ZGAgZXZlbnR1YWxseS1yZWplY3RlZAorUEFTUyAyLjMuNDogSWYgYHhgIGlzIG5vdCBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIGZ1bGZpbGwgYHByb21pc2VgIHdpdGggYHhgIFRoZSB2YWx1ZSBpcyBg
bnVsbGAgYWxyZWFkeS1mdWxmaWxsZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMg
YG51bGxgIGltbWVkaWF0ZWx5LWZ1bGZpbGxlZAorUEFTUyAyLjMuNDogSWYgYHhgIGlzIG5vdCBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIGZ1bGZpbGwgYHByb21pc2VgIHdpdGggYHhgIFRoZSB2YWx1
ZSBpcyBgbnVsbGAgZXZlbnR1YWxseS1mdWxmaWxsZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBu
b3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUg
dmFsdWUgaXMgYG51bGxgIGFscmVhZHktcmVqZWN0ZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBu
b3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUg
dmFsdWUgaXMgYG51bGxgIGltbWVkaWF0ZWx5LXJlamVjdGVkCitQQVNTIDIuMy40OiBJZiBgeGAg
aXMgbm90IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCBgeGAg
VGhlIHZhbHVlIGlzIGBudWxsYCBldmVudHVhbGx5LXJlamVjdGVkCitQQVNTIDIuMy40OiBJZiBg
eGAgaXMgbm90IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCBg
eGAgVGhlIHZhbHVlIGlzIGBmYWxzZWAgYWxyZWFkeS1mdWxmaWxsZWQKK1BBU1MgMi4zLjQ6IElm
IGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRo
IGB4YCBUaGUgdmFsdWUgaXMgYGZhbHNlYCBpbW1lZGlhdGVseS1mdWxmaWxsZWQKK1BBU1MgMi4z
LjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNl
YCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYGZhbHNlYCBldmVudHVhbGx5LWZ1bGZpbGxlZAorUEFT
UyAyLjMuNDogSWYgYHhgIGlzIG5vdCBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIGZ1bGZpbGwgYHBy
b21pc2VgIHdpdGggYHhgIFRoZSB2YWx1ZSBpcyBgZmFsc2VgIGFscmVhZHktcmVqZWN0ZWQKK1BB
U1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBw
cm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYGZhbHNlYCBpbW1lZGlhdGVseS1yZWplY3Rl
ZAorUEFTUyAyLjMuNDogSWYgYHhgIGlzIG5vdCBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIGZ1bGZp
bGwgYHByb21pc2VgIHdpdGggYHhgIFRoZSB2YWx1ZSBpcyBgZmFsc2VgIGV2ZW50dWFsbHktcmVq
ZWN0ZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBm
dWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYHRydWVgIGFscmVhZHktZnVs
ZmlsbGVkCitQQVNTIDIuMy40OiBJZiBgeGAgaXMgbm90IGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
ZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCBgeGAgVGhlIHZhbHVlIGlzIGB0cnVlYCBpbW1lZGlhdGVs
eS1mdWxmaWxsZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYHRydWVgIGV2ZW50
dWFsbHktZnVsZmlsbGVkCitQQVNTIDIuMy40OiBJZiBgeGAgaXMgbm90IGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCBgeGAgVGhlIHZhbHVlIGlzIGB0cnVlYCBh
bHJlYWR5LXJlamVjdGVkCitQQVNTIDIuMy40OiBJZiBgeGAgaXMgbm90IGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCBgeGAgVGhlIHZhbHVlIGlzIGB0cnVlYCBp
bW1lZGlhdGVseS1yZWplY3RlZAorUEFTUyAyLjMuNDogSWYgYHhgIGlzIG5vdCBhbiBvYmplY3Qg
b3IgZnVuY3Rpb24sIGZ1bGZpbGwgYHByb21pc2VgIHdpdGggYHhgIFRoZSB2YWx1ZSBpcyBgdHJ1
ZWAgZXZlbnR1YWxseS1yZWplY3RlZAorUEFTUyAyLjMuNDogSWYgYHhgIGlzIG5vdCBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIGZ1bGZpbGwgYHByb21pc2VgIHdpdGggYHhgIFRoZSB2YWx1ZSBpcyBg
MGAgYWxyZWFkeS1mdWxmaWxsZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0
IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYDBg
IGltbWVkaWF0ZWx5LWZ1bGZpbGxlZAorUEFTUyAyLjMuNDogSWYgYHhgIGlzIG5vdCBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIGZ1bGZpbGwgYHByb21pc2VgIHdpdGggYHhgIFRoZSB2YWx1ZSBpcyBg
MGAgZXZlbnR1YWxseS1mdWxmaWxsZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMg
YDBgIGFscmVhZHktcmVqZWN0ZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0
IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYDBg
IGltbWVkaWF0ZWx5LXJlamVjdGVkCitQQVNTIDIuMy40OiBJZiBgeGAgaXMgbm90IGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCBgeGAgVGhlIHZhbHVlIGlzIGAw
YCBldmVudHVhbGx5LXJlamVjdGVkCitQQVNTIDIuMy40OiBJZiBgeGAgaXMgbm90IGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCBgeGAgVGhlIHZhbHVlIGlzIGB0
cnVlYCB3aXRoIGBCb29sZWFuLnByb3RvdHlwZWAgbW9kaWZpZWQgdG8gaGF2ZSBhIGB0aGVuYCBt
ZXRob2QgYWxyZWFkeS1mdWxmaWxsZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMg
YHRydWVgIHdpdGggYEJvb2xlYW4ucHJvdG90eXBlYCBtb2RpZmllZCB0byBoYXZlIGEgYHRoZW5g
IG1ldGhvZCBpbW1lZGlhdGVseS1mdWxmaWxsZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3Qg
YW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFs
dWUgaXMgYHRydWVgIHdpdGggYEJvb2xlYW4ucHJvdG90eXBlYCBtb2RpZmllZCB0byBoYXZlIGEg
YHRoZW5gIG1ldGhvZCBldmVudHVhbGx5LWZ1bGZpbGxlZAorUEFTUyAyLjMuNDogSWYgYHhgIGlz
IG5vdCBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIGZ1bGZpbGwgYHByb21pc2VgIHdpdGggYHhgIFRo
ZSB2YWx1ZSBpcyBgdHJ1ZWAgd2l0aCBgQm9vbGVhbi5wcm90b3R5cGVgIG1vZGlmaWVkIHRvIGhh
dmUgYSBgdGhlbmAgbWV0aG9kIGFscmVhZHktcmVqZWN0ZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBp
cyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBU
aGUgdmFsdWUgaXMgYHRydWVgIHdpdGggYEJvb2xlYW4ucHJvdG90eXBlYCBtb2RpZmllZCB0byBo
YXZlIGEgYHRoZW5gIG1ldGhvZCBpbW1lZGlhdGVseS1yZWplY3RlZAorUEFTUyAyLjMuNDogSWYg
YHhgIGlzIG5vdCBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIGZ1bGZpbGwgYHByb21pc2VgIHdpdGgg
YHhgIFRoZSB2YWx1ZSBpcyBgdHJ1ZWAgd2l0aCBgQm9vbGVhbi5wcm90b3R5cGVgIG1vZGlmaWVk
IHRvIGhhdmUgYSBgdGhlbmAgbWV0aG9kIGV2ZW50dWFsbHktcmVqZWN0ZWQKK1BBU1MgMi4zLjQ6
IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3
aXRoIGB4YCBUaGUgdmFsdWUgaXMgYDFgIHdpdGggYE51bWJlci5wcm90b3R5cGVgIG1vZGlmaWVk
IHRvIGhhdmUgYSBgdGhlbmAgbWV0aG9kIGFscmVhZHktZnVsZmlsbGVkCitQQVNTIDIuMy40OiBJ
ZiBgeGAgaXMgbm90IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0
aCBgeGAgVGhlIHZhbHVlIGlzIGAxYCB3aXRoIGBOdW1iZXIucHJvdG90eXBlYCBtb2RpZmllZCB0
byBoYXZlIGEgYHRoZW5gIG1ldGhvZCBpbW1lZGlhdGVseS1mdWxmaWxsZWQKK1BBU1MgMi4zLjQ6
IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3
aXRoIGB4YCBUaGUgdmFsdWUgaXMgYDFgIHdpdGggYE51bWJlci5wcm90b3R5cGVgIG1vZGlmaWVk
IHRvIGhhdmUgYSBgdGhlbmAgbWV0aG9kIGV2ZW50dWFsbHktZnVsZmlsbGVkCitQQVNTIDIuMy40
OiBJZiBgeGAgaXMgbm90IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgZnVsZmlsbCBgcHJvbWlzZWAg
d2l0aCBgeGAgVGhlIHZhbHVlIGlzIGAxYCB3aXRoIGBOdW1iZXIucHJvdG90eXBlYCBtb2RpZmll
ZCB0byBoYXZlIGEgYHRoZW5gIG1ldGhvZCBhbHJlYWR5LXJlamVjdGVkCitQQVNTIDIuMy40OiBJ
ZiBgeGAgaXMgbm90IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0
aCBgeGAgVGhlIHZhbHVlIGlzIGAxYCB3aXRoIGBOdW1iZXIucHJvdG90eXBlYCBtb2RpZmllZCB0
byBoYXZlIGEgYHRoZW5gIG1ldGhvZCBpbW1lZGlhdGVseS1yZWplY3RlZAorUEFTUyAyLjMuNDog
SWYgYHhgIGlzIG5vdCBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIGZ1bGZpbGwgYHByb21pc2VgIHdp
dGggYHhgIFRoZSB2YWx1ZSBpcyBgMWAgd2l0aCBgTnVtYmVyLnByb3RvdHlwZWAgbW9kaWZpZWQg
dG8gaGF2ZSBhIGB0aGVuYCBtZXRob2QgZXZlbnR1YWxseS1yZWplY3RlZAorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLkxJQ0VOU0UgYi9MYXlvdXRU
ZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy5MSUNFTlNFCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA4N2MzMTJiMWVmY2U2MTAwYjJkMWNkMzU0ZWU0OGFmN2MzNjI2MzAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy5MSUNFTlNF
CkBAIC0wLDAgKzEsMTQgQEAKKyAgICAgICAgICAgIERPIFdIQVQgVEhFIEZVQ0sgWU9VIFdBTlQg
VE8gUFVCTElDIExJQ0VOU0UKKyAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLCBEZWNlbWJl
ciAyMDA0CisKKyBDb3B5cmlnaHQgKEMpIDIwMTIgRG9tZW5pYyBEZW5pY29sYSA8ZG9tZW5pY0Bk
b21lbmljZGVuaWNvbGEuY29tPgorCisgRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5k
IGRpc3RyaWJ1dGUgdmVyYmF0aW0gb3IgbW9kaWZpZWQKKyBjb3BpZXMgb2YgdGhpcyBsaWNlbnNl
IGRvY3VtZW50LCBhbmQgY2hhbmdpbmcgaXQgaXMgYWxsb3dlZCBhcyBsb25nCisgYXMgdGhlIG5h
bWUgaXMgY2hhbmdlZC4KKworICAgICAgICAgICAgRE8gV0hBVCBUSEUgRlVDSyBZT1UgV0FOVCBU
TyBQVUJMSUMgTElDRU5TRQorICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJ
U1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCisKKyAgMC4gWW91IGp1c3QgRE8gV0hBVCBUSEUg
RlVDSyBZT1UgV0FOVCBUTy4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMt
dGVzdHMvcHJvbWlzZXMtdGVzdHMuaHRtbCBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3Rz
L3Byb21pc2VzLXRlc3RzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGIxOTg0OGU3N2NhZDAzNDEyMjFmNTFk
Yjk2ZWNiZDg2N2Y5NTVlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21p
c2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLmh0bWwKQEAgLTAsMCArMSw2MiBAQAorPCFET0NUWVBF
IEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCdUZXN0IFByb21pc2Ugd2l0aCBQcm9taXNlIEErIHRlc3Qgc3VpdGUuJyk7CisKK3dpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gTGF5b3V0VGVzdHNSZXBvcnRlcihy
dW5uZXIpIHsKKyAgICBydW5uZXIub24oJ3Bhc3MnLCBmdW5jdGlvbiAodGVzdCkgeworICAgICAg
ICB0ZXN0UGFzc2VkKHRlc3QuZnVsbFRpdGxlKCkpOworICAgIH0pOworCisgICAgcnVubmVyLm9u
KCdmYWlsJywgZnVuY3Rpb24gKHRlc3QsIGVycikgeworICAgICAgICB0ZXN0RmFpbGVkKHRlc3Qu
ZnVsbFRpdGxlKCkgKyAnICcgKyBlcnIubWVzc2FnZSk7CisgICAgfSk7CisKKyAgICBydW5uZXIu
b24oJ2VuZCcsIGZpbmlzaEpTVGVzdCk7Cit9CisKK3dpbmRvdy5hZGFwdGVyID0geworICAgIHJl
c29sdmVkOiBmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2
ZSh2YWx1ZSk7CisgICAgfSwKKworICAgIHJlamVjdGVkOiBmdW5jdGlvbiAocmVhc29uKSB7Cisg
ICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChyZWFzb24pOworICAgIH0sCisKKyAgICBkZWZl
cnJlZDogZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgZXhwb3J0ZWRSZXNvbHZlLCBleHBvcnRl
ZFJlamVjdDsKKyAgICAgICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVz
b2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBleHBvcnRlZFJlc29sdmUgPSByZXNvbHZlOwor
ICAgICAgICAgICAgZXhwb3J0ZWRSZWplY3QgPSByZWplY3Q7CisgICAgICAgIH0pOworICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgcHJvbWlzZTogcHJvbWlzZSwKKyAgICAgICAgICAgIHJl
c29sdmU6IGV4cG9ydGVkUmVzb2x2ZSwKKyAgICAgICAgICAgIHJlamVjdDogZXhwb3J0ZWRSZWpl
Y3QKKyAgICAgICAgfTsKKyAgICB9Cit9OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL21vY2hhLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cittb2NoYS5zZXR1cCh7CisgICAgdWk6
ICdiZGQnLAorICAgIHJlcG9ydGVyOiBMYXlvdXRUZXN0c1JlcG9ydGVyCit9KTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InByb21pc2VzLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citt
b2NoYS5ydW4oKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMuanMgYi9MYXlvdXRUZXN0
cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZmY3MGU5
YjJlMzg0NGU0NDExYTliOGY4YjQ5MTE2OWY2MWI2ZjgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMuanMKQEAgLTAsMCArMSw3
NjI4IEBACisoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZigh
dFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PSJmdW5jdGlvbiImJnJlcXVpcmU7aWYoIXUmJmEp
cmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoIkNhbm5v
dCBmaW5kIG1vZHVsZSAnIitvKyInIik7dGhyb3cgZi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixm
fXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24o
ZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIp
fXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PSJmdW5jdGlvbiImJnJl
cXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pKHsxOltm
dW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8vIGh0dHA6Ly93aWtpLmNvbW1vbmpz
Lm9yZy93aWtpL1VuaXRfVGVzdGluZy8xLjAKKy8vCisvLyBUSElTIElTIE5PVCBURVNURUQgTk9S
IExJS0VMWSBUTyBXT1JLIE9VVFNJREUgVjghCisvLworLy8gT3JpZ2luYWxseSBmcm9tIG5hcndo
YWwuanMgKGh0dHA6Ly9uYXJ3aGFsanMub3JnKQorLy8gQ29weXJpZ2h0IChjKSAyMDA5IFRob21h
cyBSb2JpbnNvbiA8Mjgwbm9ydGguY29tPgorLy8KKy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy
YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKy8v
IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl
ICdTb2Z0d2FyZScpLCB0bworLy8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj
dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKy8vIHJpZ2h0cyB0byB1c2Us
IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFu
ZC9vcgorLy8gc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv
bnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj
dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLworLy8gVGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4K
Ky8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgor
Ly8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAnQVMgSVMnLCBXSVRIT1VUIFdBUlJBTlRZ
IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisvLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM
SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKy8vIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRQorLy8gQVVUSE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP
UiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4KKy8vIEFDVElPTiBPRiBDT05UUkFDVCwg
VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04K
Ky8vIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhF
IFNPRlRXQVJFLgorCisvLyB3aGVuIHVzZWQgaW4gbm9kZSwgdGhpcyB3aWxsIGFjdHVhbGx5IGxv
YWQgdGhlIHV0aWwgbW9kdWxlIHdlIGRlcGVuZCBvbgorLy8gdmVyc3VzIGxvYWRpbmcgdGhlIGJ1
aWx0aW4gdXRpbCBtb2R1bGUgYXMgaGFwcGVucyBvdGhlcndpc2UKKy8vIHRoaXMgaXMgYSBidWcg
aW4gbm9kZSBtb2R1bGUgbG9hZGluZyBhcyBmYXIgYXMgSSBhbSBjb25jZXJuZWQKK3ZhciB1dGls
ID0gcmVxdWlyZSgndXRpbC8nKTsKKwordmFyIHBTbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGlj
ZTsKK3ZhciBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5OworCisvLyAx
LiBUaGUgYXNzZXJ0IG1vZHVsZSBwcm92aWRlcyBmdW5jdGlvbnMgdGhhdCB0aHJvdworLy8gQXNz
ZXJ0aW9uRXJyb3IncyB3aGVuIHBhcnRpY3VsYXIgY29uZGl0aW9ucyBhcmUgbm90IG1ldC4gVGhl
CisvLyBhc3NlcnQgbW9kdWxlIG11c3QgY29uZm9ybSB0byB0aGUgZm9sbG93aW5nIGludGVyZmFj
ZS4KKwordmFyIGFzc2VydCA9IG1vZHVsZS5leHBvcnRzID0gb2s7CisKKy8vIDIuIFRoZSBBc3Nl
cnRpb25FcnJvciBpcyBkZWZpbmVkIGluIGFzc2VydC4KKy8vIG5ldyBhc3NlcnQuQXNzZXJ0aW9u
RXJyb3IoeyBtZXNzYWdlOiBtZXNzYWdlLAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFjdHVhbDogYWN0dWFsLAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
OiBleHBlY3RlZCB9KQorCithc3NlcnQuQXNzZXJ0aW9uRXJyb3IgPSBmdW5jdGlvbiBBc3NlcnRp
b25FcnJvcihvcHRpb25zKSB7CisgIHRoaXMubmFtZSA9ICdBc3NlcnRpb25FcnJvcic7CisgIHRo
aXMuYWN0dWFsID0gb3B0aW9ucy5hY3R1YWw7CisgIHRoaXMuZXhwZWN0ZWQgPSBvcHRpb25zLmV4
cGVjdGVkOworICB0aGlzLm9wZXJhdG9yID0gb3B0aW9ucy5vcGVyYXRvcjsKKyAgaWYgKG9wdGlv
bnMubWVzc2FnZSkgeworICAgIHRoaXMubWVzc2FnZSA9IG9wdGlvbnMubWVzc2FnZTsKKyAgICB0
aGlzLmdlbmVyYXRlZE1lc3NhZ2UgPSBmYWxzZTsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLm1lc3Nh
Z2UgPSBnZXRNZXNzYWdlKHRoaXMpOworICAgIHRoaXMuZ2VuZXJhdGVkTWVzc2FnZSA9IHRydWU7
CisgIH0KKyAgdmFyIHN0YWNrU3RhcnRGdW5jdGlvbiA9IG9wdGlvbnMuc3RhY2tTdGFydEZ1bmN0
aW9uIHx8IGZhaWw7CisKKyAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7CisgICAgRXJy
b3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgc3RhY2tTdGFydEZ1bmN0aW9uKTsKKyAgfQorICBl
bHNlIHsKKyAgICAvLyBub24gdjggYnJvd3NlcnMgc28gd2UgY2FuIGhhdmUgYSBzdGFja3RyYWNl
CisgICAgdmFyIGVyciA9IG5ldyBFcnJvcigpOworICAgIGlmIChlcnIuc3RhY2spIHsKKyAgICAg
IHZhciBvdXQgPSBlcnIuc3RhY2s7CisKKyAgICAgIC8vIHRyeSB0byBzdHJpcCB1c2VsZXNzIGZy
YW1lcworICAgICAgdmFyIGZuX25hbWUgPSBzdGFja1N0YXJ0RnVuY3Rpb24ubmFtZTsKKyAgICAg
IHZhciBpZHggPSBvdXQuaW5kZXhPZignXG4nICsgZm5fbmFtZSk7CisgICAgICBpZiAoaWR4ID49
IDApIHsKKyAgICAgICAgLy8gb25jZSB3ZSBoYXZlIGxvY2F0ZWQgdGhlIGZ1bmN0aW9uIGZyYW1l
CisgICAgICAgIC8vIHdlIG5lZWQgdG8gc3RyaXAgb3V0IGV2ZXJ5dGhpbmcgYmVmb3JlIGl0IChh
bmQgaXRzIGxpbmUpCisgICAgICAgIHZhciBuZXh0X2xpbmUgPSBvdXQuaW5kZXhPZignXG4nLCBp
ZHggKyAxKTsKKyAgICAgICAgb3V0ID0gb3V0LnN1YnN0cmluZyhuZXh0X2xpbmUgKyAxKTsKKyAg
ICAgIH0KKworICAgICAgdGhpcy5zdGFjayA9IG91dDsKKyAgICB9CisgIH0KK307CisKKy8vIGFz
c2VydC5Bc3NlcnRpb25FcnJvciBpbnN0YW5jZW9mIEVycm9yCit1dGlsLmluaGVyaXRzKGFzc2Vy
dC5Bc3NlcnRpb25FcnJvciwgRXJyb3IpOworCitmdW5jdGlvbiByZXBsYWNlcihrZXksIHZhbHVl
KSB7CisgIGlmICh1dGlsLmlzVW5kZWZpbmVkKHZhbHVlKSkgeworICAgIHJldHVybiAnJyArIHZh
bHVlOworICB9CisgIGlmICh1dGlsLmlzTnVtYmVyKHZhbHVlKSAmJiAoaXNOYU4odmFsdWUpIHx8
ICFpc0Zpbml0ZSh2YWx1ZSkpKSB7CisgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7CisgIH0K
KyAgaWYgKHV0aWwuaXNGdW5jdGlvbih2YWx1ZSkgfHwgdXRpbC5pc1JlZ0V4cCh2YWx1ZSkpIHsK
KyAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTsKKyAgfQorICByZXR1cm4gdmFsdWU7Cit9CisK
K2Z1bmN0aW9uIHRydW5jYXRlKHMsIG4pIHsKKyAgaWYgKHV0aWwuaXNTdHJpbmcocykpIHsKKyAg
ICByZXR1cm4gcy5sZW5ndGggPCBuID8gcyA6IHMuc2xpY2UoMCwgbik7CisgIH0gZWxzZSB7Cisg
ICAgcmV0dXJuIHM7CisgIH0KK30KKworZnVuY3Rpb24gZ2V0TWVzc2FnZShzZWxmKSB7CisgIHJl
dHVybiB0cnVuY2F0ZShKU09OLnN0cmluZ2lmeShzZWxmLmFjdHVhbCwgcmVwbGFjZXIpLCAxMjgp
ICsgJyAnICsKKyAgICAgICAgIHNlbGYub3BlcmF0b3IgKyAnICcgKworICAgICAgICAgdHJ1bmNh
dGUoSlNPTi5zdHJpbmdpZnkoc2VsZi5leHBlY3RlZCwgcmVwbGFjZXIpLCAxMjgpOworfQorCisv
LyBBdCBwcmVzZW50IG9ubHkgdGhlIHRocmVlIGtleXMgbWVudGlvbmVkIGFib3ZlIGFyZSB1c2Vk
IGFuZAorLy8gdW5kZXJzdG9vZCBieSB0aGUgc3BlYy4gSW1wbGVtZW50YXRpb25zIG9yIHN1YiBt
b2R1bGVzIGNhbiBwYXNzCisvLyBvdGhlciBrZXlzIHRvIHRoZSBBc3NlcnRpb25FcnJvcidzIGNv
bnN0cnVjdG9yIC0gdGhleSB3aWxsIGJlCisvLyBpZ25vcmVkLgorCisvLyAzLiBBbGwgb2YgdGhl
IGZvbGxvd2luZyBmdW5jdGlvbnMgbXVzdCB0aHJvdyBhbiBBc3NlcnRpb25FcnJvcgorLy8gd2hl
biBhIGNvcnJlc3BvbmRpbmcgY29uZGl0aW9uIGlzIG5vdCBtZXQsIHdpdGggYSBtZXNzYWdlIHRo
YXQKKy8vIG1heSBiZSB1bmRlZmluZWQgaWYgbm90IHByb3ZpZGVkLiAgQWxsIGFzc2VydGlvbiBt
ZXRob2RzIHByb3ZpZGUKKy8vIGJvdGggdGhlIGFjdHVhbCBhbmQgZXhwZWN0ZWQgdmFsdWVzIHRv
IHRoZSBhc3NlcnRpb24gZXJyb3IgZm9yCisvLyBkaXNwbGF5IHB1cnBvc2VzLgorCitmdW5jdGlv
biBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsIG9wZXJhdG9yLCBzdGFja1N0YXJ0RnVu
Y3Rpb24pIHsKKyAgdGhyb3cgbmV3IGFzc2VydC5Bc3NlcnRpb25FcnJvcih7CisgICAgbWVzc2Fn
ZTogbWVzc2FnZSwKKyAgICBhY3R1YWw6IGFjdHVhbCwKKyAgICBleHBlY3RlZDogZXhwZWN0ZWQs
CisgICAgb3BlcmF0b3I6IG9wZXJhdG9yLAorICAgIHN0YWNrU3RhcnRGdW5jdGlvbjogc3RhY2tT
dGFydEZ1bmN0aW9uCisgIH0pOworfQorCisvLyBFWFRFTlNJT04hIGFsbG93cyBmb3Igd2VsbCBi
ZWhhdmVkIGVycm9ycyBkZWZpbmVkIGVsc2V3aGVyZS4KK2Fzc2VydC5mYWlsID0gZmFpbDsKKwor
Ly8gNC4gUHVyZSBhc3NlcnRpb24gdGVzdHMgd2hldGhlciBhIHZhbHVlIGlzIHRydXRoeSwgYXMg
ZGV0ZXJtaW5lZAorLy8gYnkgISFndWFyZC4KKy8vIGFzc2VydC5vayhndWFyZCwgbWVzc2FnZV9v
cHQpOworLy8gVGhpcyBzdGF0ZW1lbnQgaXMgZXF1aXZhbGVudCB0byBhc3NlcnQuZXF1YWwodHJ1
ZSwgISFndWFyZCwKKy8vIG1lc3NhZ2Vfb3B0KTsuIFRvIHRlc3Qgc3RyaWN0bHkgZm9yIHRoZSB2
YWx1ZSB0cnVlLCB1c2UKKy8vIGFzc2VydC5zdHJpY3RFcXVhbCh0cnVlLCBndWFyZCwgbWVzc2Fn
ZV9vcHQpOy4KKworZnVuY3Rpb24gb2sodmFsdWUsIG1lc3NhZ2UpIHsKKyAgaWYgKCF2YWx1ZSkg
ZmFpbCh2YWx1ZSwgdHJ1ZSwgbWVzc2FnZSwgJz09JywgYXNzZXJ0Lm9rKTsKK30KK2Fzc2VydC5v
ayA9IG9rOworCisvLyA1LiBUaGUgZXF1YWxpdHkgYXNzZXJ0aW9uIHRlc3RzIHNoYWxsb3csIGNv
ZXJjaXZlIGVxdWFsaXR5IHdpdGgKKy8vID09LgorLy8gYXNzZXJ0LmVxdWFsKGFjdHVhbCwgZXhw
ZWN0ZWQsIG1lc3NhZ2Vfb3B0KTsKKworYXNzZXJ0LmVxdWFsID0gZnVuY3Rpb24gZXF1YWwoYWN0
dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsICE9IGV4cGVjdGVkKSBmYWls
KGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICc9PScsIGFzc2VydC5lcXVhbCk7Cit9OworCisv
LyA2LiBUaGUgbm9uLWVxdWFsaXR5IGFzc2VydGlvbiB0ZXN0cyBmb3Igd2hldGhlciB0d28gb2Jq
ZWN0cyBhcmUgbm90IGVxdWFsCisvLyB3aXRoICE9IGFzc2VydC5ub3RFcXVhbChhY3R1YWwsIGV4
cGVjdGVkLCBtZXNzYWdlX29wdCk7CisKK2Fzc2VydC5ub3RFcXVhbCA9IGZ1bmN0aW9uIG5vdEVx
dWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCA9PSBleHBlY3Rl
ZCkgeworICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJyE9JywgYXNzZXJ0Lm5v
dEVxdWFsKTsKKyAgfQorfTsKKworLy8gNy4gVGhlIGVxdWl2YWxlbmNlIGFzc2VydGlvbiB0ZXN0
cyBhIGRlZXAgZXF1YWxpdHkgcmVsYXRpb24uCisvLyBhc3NlcnQuZGVlcEVxdWFsKGFjdHVhbCwg
ZXhwZWN0ZWQsIG1lc3NhZ2Vfb3B0KTsKKworYXNzZXJ0LmRlZXBFcXVhbCA9IGZ1bmN0aW9uIGRl
ZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmICghX2RlZXBFcXVhbChh
Y3R1YWwsIGV4cGVjdGVkKSkgeworICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwg
J2RlZXBFcXVhbCcsIGFzc2VydC5kZWVwRXF1YWwpOworICB9Cit9OworCitmdW5jdGlvbiBfZGVl
cEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgLy8gNy4xLiBBbGwgaWRlbnRpY2FsIHZhbHVl
cyBhcmUgZXF1aXZhbGVudCwgYXMgZGV0ZXJtaW5lZCBieSA9PT0uCisgIGlmIChhY3R1YWwgPT09
IGV4cGVjdGVkKSB7CisgICAgcmV0dXJuIHRydWU7CisKKyAgfSBlbHNlIGlmICh1dGlsLmlzQnVm
ZmVyKGFjdHVhbCkgJiYgdXRpbC5pc0J1ZmZlcihleHBlY3RlZCkpIHsKKyAgICBpZiAoYWN0dWFs
Lmxlbmd0aCAhPSBleHBlY3RlZC5sZW5ndGgpIHJldHVybiBmYWxzZTsKKworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgYWN0dWFsLmxlbmd0aDsgaSsrKSB7CisgICAgICBpZiAoYWN0dWFsW2ldICE9
PSBleHBlY3RlZFtpXSkgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
CisgIC8vIDcuMi4gSWYgdGhlIGV4cGVjdGVkIHZhbHVlIGlzIGEgRGF0ZSBvYmplY3QsIHRoZSBh
Y3R1YWwgdmFsdWUgaXMKKyAgLy8gZXF1aXZhbGVudCBpZiBpdCBpcyBhbHNvIGEgRGF0ZSBvYmpl
Y3QgdGhhdCByZWZlcnMgdG8gdGhlIHNhbWUgdGltZS4KKyAgfSBlbHNlIGlmICh1dGlsLmlzRGF0
ZShhY3R1YWwpICYmIHV0aWwuaXNEYXRlKGV4cGVjdGVkKSkgeworICAgIHJldHVybiBhY3R1YWwu
Z2V0VGltZSgpID09PSBleHBlY3RlZC5nZXRUaW1lKCk7CisKKyAgLy8gNy4zIElmIHRoZSBleHBl
Y3RlZCB2YWx1ZSBpcyBhIFJlZ0V4cCBvYmplY3QsIHRoZSBhY3R1YWwgdmFsdWUgaXMKKyAgLy8g
ZXF1aXZhbGVudCBpZiBpdCBpcyBhbHNvIGEgUmVnRXhwIG9iamVjdCB3aXRoIHRoZSBzYW1lIHNv
dXJjZSBhbmQKKyAgLy8gcHJvcGVydGllcyAoYGdsb2JhbGAsIGBtdWx0aWxpbmVgLCBgbGFzdElu
ZGV4YCwgYGlnbm9yZUNhc2VgKS4KKyAgfSBlbHNlIGlmICh1dGlsLmlzUmVnRXhwKGFjdHVhbCkg
JiYgdXRpbC5pc1JlZ0V4cChleHBlY3RlZCkpIHsKKyAgICByZXR1cm4gYWN0dWFsLnNvdXJjZSA9
PT0gZXhwZWN0ZWQuc291cmNlICYmCisgICAgICAgICAgIGFjdHVhbC5nbG9iYWwgPT09IGV4cGVj
dGVkLmdsb2JhbCAmJgorICAgICAgICAgICBhY3R1YWwubXVsdGlsaW5lID09PSBleHBlY3RlZC5t
dWx0aWxpbmUgJiYKKyAgICAgICAgICAgYWN0dWFsLmxhc3RJbmRleCA9PT0gZXhwZWN0ZWQubGFz
dEluZGV4ICYmCisgICAgICAgICAgIGFjdHVhbC5pZ25vcmVDYXNlID09PSBleHBlY3RlZC5pZ25v
cmVDYXNlOworCisgIC8vIDcuNC4gT3RoZXIgcGFpcnMgdGhhdCBkbyBub3QgYm90aCBwYXNzIHR5
cGVvZiB2YWx1ZSA9PSAnb2JqZWN0JywKKyAgLy8gZXF1aXZhbGVuY2UgaXMgZGV0ZXJtaW5lZCBi
eSA9PS4KKyAgfSBlbHNlIGlmICghdXRpbC5pc09iamVjdChhY3R1YWwpICYmICF1dGlsLmlzT2Jq
ZWN0KGV4cGVjdGVkKSkgeworICAgIHJldHVybiBhY3R1YWwgPT0gZXhwZWN0ZWQ7CisKKyAgLy8g
Ny41IEZvciBhbGwgb3RoZXIgT2JqZWN0IHBhaXJzLCBpbmNsdWRpbmcgQXJyYXkgb2JqZWN0cywg
ZXF1aXZhbGVuY2UgaXMKKyAgLy8gZGV0ZXJtaW5lZCBieSBoYXZpbmcgdGhlIHNhbWUgbnVtYmVy
IG9mIG93bmVkIHByb3BlcnRpZXMgKGFzIHZlcmlmaWVkCisgIC8vIHdpdGggT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKSwgdGhlIHNhbWUgc2V0IG9mIGtleXMKKyAgLy8gKGFs
dGhvdWdoIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBvcmRlciksIGVxdWl2YWxlbnQgdmFsdWVz
IGZvciBldmVyeQorICAvLyBjb3JyZXNwb25kaW5nIGtleSwgYW5kIGFuIGlkZW50aWNhbCAncHJv
dG90eXBlJyBwcm9wZXJ0eS4gTm90ZTogdGhpcworICAvLyBhY2NvdW50cyBmb3IgYm90aCBuYW1l
ZCBhbmQgaW5kZXhlZCBwcm9wZXJ0aWVzIG9uIEFycmF5cy4KKyAgfSBlbHNlIHsKKyAgICByZXR1
cm4gb2JqRXF1aXYoYWN0dWFsLCBleHBlY3RlZCk7CisgIH0KK30KKworZnVuY3Rpb24gaXNBcmd1
bWVudHMob2JqZWN0KSB7CisgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwo
b2JqZWN0KSA9PSAnW29iamVjdCBBcmd1bWVudHNdJzsKK30KKworZnVuY3Rpb24gb2JqRXF1aXYo
YSwgYikgeworICBpZiAodXRpbC5pc051bGxPclVuZGVmaW5lZChhKSB8fCB1dGlsLmlzTnVsbE9y
VW5kZWZpbmVkKGIpKQorICAgIHJldHVybiBmYWxzZTsKKyAgLy8gYW4gaWRlbnRpY2FsICdwcm90
b3R5cGUnIHByb3BlcnR5LgorICBpZiAoYS5wcm90b3R5cGUgIT09IGIucHJvdG90eXBlKSByZXR1
cm4gZmFsc2U7CisgIC8vfn5+SSd2ZSBtYW5hZ2VkIHRvIGJyZWFrIE9iamVjdC5rZXlzIHRocm91
Z2ggc2NyZXd5IGFyZ3VtZW50cyBwYXNzaW5nLgorICAvLyAgIENvbnZlcnRpbmcgdG8gYXJyYXkg
c29sdmVzIHRoZSBwcm9ibGVtLgorICBpZiAoaXNBcmd1bWVudHMoYSkpIHsKKyAgICBpZiAoIWlz
QXJndW1lbnRzKGIpKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGEgPSBwU2xp
Y2UuY2FsbChhKTsKKyAgICBiID0gcFNsaWNlLmNhbGwoYik7CisgICAgcmV0dXJuIF9kZWVwRXF1
YWwoYSwgYik7CisgIH0KKyAgdHJ5IHsKKyAgICB2YXIga2EgPSBvYmplY3RLZXlzKGEpLAorICAg
ICAgICBrYiA9IG9iamVjdEtleXMoYiksCisgICAgICAgIGtleSwgaTsKKyAgfSBjYXRjaCAoZSkg
ey8vaGFwcGVucyB3aGVuIG9uZSBpcyBhIHN0cmluZyBsaXRlcmFsIGFuZCB0aGUgb3RoZXIgaXNu
J3QKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgLy8gaGF2aW5nIHRoZSBzYW1lIG51bWJlciBv
ZiBvd25lZCBwcm9wZXJ0aWVzIChrZXlzIGluY29ycG9yYXRlcworICAvLyBoYXNPd25Qcm9wZXJ0
eSkKKyAgaWYgKGthLmxlbmd0aCAhPSBrYi5sZW5ndGgpCisgICAgcmV0dXJuIGZhbHNlOworICAv
L3RoZSBzYW1lIHNldCBvZiBrZXlzIChhbHRob3VnaCBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUg
b3JkZXIpLAorICBrYS5zb3J0KCk7CisgIGtiLnNvcnQoKTsKKyAgLy9+fn5jaGVhcCBrZXkgdGVz
dAorICBmb3IgKGkgPSBrYS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgeworICAgIGlmIChrYVtp
XSAhPSBrYltpXSkKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgfQorICAvL2VxdWl2YWxlbnQgdmFs
dWVzIGZvciBldmVyeSBjb3JyZXNwb25kaW5nIGtleSwgYW5kCisgIC8vfn5+cG9zc2libHkgZXhw
ZW5zaXZlIGRlZXAgdGVzdAorICBmb3IgKGkgPSBrYS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkg
eworICAgIGtleSA9IGthW2ldOworICAgIGlmICghX2RlZXBFcXVhbChhW2tleV0sIGJba2V5XSkp
IHJldHVybiBmYWxzZTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworLy8gOC4gVGhlIG5vbi1l
cXVpdmFsZW5jZSBhc3NlcnRpb24gdGVzdHMgZm9yIGFueSBkZWVwIGluZXF1YWxpdHkuCisvLyBh
c3NlcnQubm90RGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Vfb3B0KTsKKworYXNz
ZXJ0Lm5vdERlZXBFcXVhbCA9IGZ1bmN0aW9uIG5vdERlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVk
LCBtZXNzYWdlKSB7CisgIGlmIChfZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpKSB7CisgICAg
ZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnbm90RGVlcEVxdWFsJywgYXNzZXJ0Lm5v
dERlZXBFcXVhbCk7CisgIH0KK307CisKKy8vIDkuIFRoZSBzdHJpY3QgZXF1YWxpdHkgYXNzZXJ0
aW9uIHRlc3RzIHN0cmljdCBlcXVhbGl0eSwgYXMgZGV0ZXJtaW5lZCBieSA9PT0uCisvLyBhc3Nl
cnQuc3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpOworCithc3NlcnQu
c3RyaWN0RXF1YWwgPSBmdW5jdGlvbiBzdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNz
YWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgZmFpbChhY3R1YWwsIGV4
cGVjdGVkLCBtZXNzYWdlLCAnPT09JywgYXNzZXJ0LnN0cmljdEVxdWFsKTsKKyAgfQorfTsKKwor
Ly8gMTAuIFRoZSBzdHJpY3Qgbm9uLWVxdWFsaXR5IGFzc2VydGlvbiB0ZXN0cyBmb3Igc3RyaWN0
IGluZXF1YWxpdHksIGFzCisvLyBkZXRlcm1pbmVkIGJ5ICE9PS4gIGFzc2VydC5ub3RTdHJpY3RF
cXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlX29wdCk7CisKK2Fzc2VydC5ub3RTdHJpY3RF
cXVhbCA9IGZ1bmN0aW9uIG5vdFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Up
IHsKKyAgaWYgKGFjdHVhbCA9PT0gZXhwZWN0ZWQpIHsKKyAgICBmYWlsKGFjdHVhbCwgZXhwZWN0
ZWQsIG1lc3NhZ2UsICchPT0nLCBhc3NlcnQubm90U3RyaWN0RXF1YWwpOworICB9Cit9OworCitm
dW5jdGlvbiBleHBlY3RlZEV4Y2VwdGlvbihhY3R1YWwsIGV4cGVjdGVkKSB7CisgIGlmICghYWN0
dWFsIHx8ICFleHBlY3RlZCkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIGlmIChPYmpl
Y3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZXhwZWN0ZWQpID09ICdbb2JqZWN0IFJlZ0V4cF0n
KSB7CisgICAgcmV0dXJuIGV4cGVjdGVkLnRlc3QoYWN0dWFsKTsKKyAgfSBlbHNlIGlmIChhY3R1
YWwgaW5zdGFuY2VvZiBleHBlY3RlZCkgeworICAgIHJldHVybiB0cnVlOworICB9IGVsc2UgaWYg
KGV4cGVjdGVkLmNhbGwoe30sIGFjdHVhbCkgPT09IHRydWUpIHsKKyAgICByZXR1cm4gdHJ1ZTsK
KyAgfQorCisgIHJldHVybiBmYWxzZTsKK30KKworZnVuY3Rpb24gX3Rocm93cyhzaG91bGRUaHJv
dywgYmxvY2ssIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIHZhciBhY3R1YWw7CisKKyAgaWYgKHV0
aWwuaXNTdHJpbmcoZXhwZWN0ZWQpKSB7CisgICAgbWVzc2FnZSA9IGV4cGVjdGVkOworICAgIGV4
cGVjdGVkID0gbnVsbDsKKyAgfQorCisgIHRyeSB7CisgICAgYmxvY2soKTsKKyAgfSBjYXRjaCAo
ZSkgeworICAgIGFjdHVhbCA9IGU7CisgIH0KKworICBtZXNzYWdlID0gKGV4cGVjdGVkICYmIGV4
cGVjdGVkLm5hbWUgPyAnICgnICsgZXhwZWN0ZWQubmFtZSArICcpLicgOiAnLicpICsKKyAgICAg
ICAgICAgIChtZXNzYWdlID8gJyAnICsgbWVzc2FnZSA6ICcuJyk7CisKKyAgaWYgKHNob3VsZFRo
cm93ICYmICFhY3R1YWwpIHsKKyAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsICdNaXNzaW5nIGV4
cGVjdGVkIGV4Y2VwdGlvbicgKyBtZXNzYWdlKTsKKyAgfQorCisgIGlmICghc2hvdWxkVGhyb3cg
JiYgZXhwZWN0ZWRFeGNlcHRpb24oYWN0dWFsLCBleHBlY3RlZCkpIHsKKyAgICBmYWlsKGFjdHVh
bCwgZXhwZWN0ZWQsICdHb3QgdW53YW50ZWQgZXhjZXB0aW9uJyArIG1lc3NhZ2UpOworICB9CisK
KyAgaWYgKChzaG91bGRUaHJvdyAmJiBhY3R1YWwgJiYgZXhwZWN0ZWQgJiYKKyAgICAgICFleHBl
Y3RlZEV4Y2VwdGlvbihhY3R1YWwsIGV4cGVjdGVkKSkgfHwgKCFzaG91bGRUaHJvdyAmJiBhY3R1
YWwpKSB7CisgICAgdGhyb3cgYWN0dWFsOworICB9Cit9CisKKy8vIDExLiBFeHBlY3RlZCB0byB0
aHJvdyBhbiBlcnJvcjoKKy8vIGFzc2VydC50aHJvd3MoYmxvY2ssIEVycm9yX29wdCwgbWVzc2Fn
ZV9vcHQpOworCithc3NlcnQudGhyb3dzID0gZnVuY3Rpb24oYmxvY2ssIC8qb3B0aW9uYWwqL2Vy
cm9yLCAvKm9wdGlvbmFsKi9tZXNzYWdlKSB7CisgIF90aHJvd3MuYXBwbHkodGhpcywgW3RydWVd
LmNvbmNhdChwU2xpY2UuY2FsbChhcmd1bWVudHMpKSk7Cit9OworCisvLyBFWFRFTlNJT04hIFRo
aXMgaXMgYW5ub3lpbmcgdG8gd3JpdGUgb3V0c2lkZSB0aGlzIG1vZHVsZS4KK2Fzc2VydC5kb2Vz
Tm90VGhyb3cgPSBmdW5jdGlvbihibG9jaywgLypvcHRpb25hbCovbWVzc2FnZSkgeworICBfdGhy
b3dzLmFwcGx5KHRoaXMsIFtmYWxzZV0uY29uY2F0KHBTbGljZS5jYWxsKGFyZ3VtZW50cykpKTsK
K307CisKK2Fzc2VydC5pZkVycm9yID0gZnVuY3Rpb24oZXJyKSB7IGlmIChlcnIpIHt0aHJvdyBl
cnI7fX07CisKK3ZhciBvYmplY3RLZXlzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24gKG9iaikg
eworICB2YXIga2V5cyA9IFtdOworICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7CisgICAgaWYgKGhh
c093bi5jYWxsKG9iaiwga2V5KSkga2V5cy5wdXNoKGtleSk7CisgIH0KKyAgcmV0dXJuIGtleXM7
Cit9OworCit9LHsidXRpbC8iOjV9XSwyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRz
KXsKK2lmICh0eXBlb2YgT2JqZWN0LmNyZWF0ZSA9PT0gJ2Z1bmN0aW9uJykgeworICAvLyBpbXBs
ZW1lbnRhdGlvbiBmcm9tIHN0YW5kYXJkIG5vZGUuanMgJ3V0aWwnIG1vZHVsZQorICBtb2R1bGUu
ZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3RvcikgeworICAgIGN0b3Iu
c3VwZXJfID0gc3VwZXJDdG9yCisgICAgY3Rvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1
cGVyQ3Rvci5wcm90b3R5cGUsIHsKKyAgICAgIGNvbnN0cnVjdG9yOiB7CisgICAgICAgIHZhbHVl
OiBjdG9yLAorICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSwKKyAgICAgICAgd3JpdGFibGU6IHRy
dWUsCisgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQorICAgICAgfQorICAgIH0pOworICB9Owor
fSBlbHNlIHsKKyAgLy8gb2xkIHNjaG9vbCBzaGltIGZvciBvbGQgYnJvd3NlcnMKKyAgbW9kdWxl
LmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHsKKyAgICBjdG9y
LnN1cGVyXyA9IHN1cGVyQ3RvcgorICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9Cisg
ICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZQorICAgIGN0b3IucHJv
dG90eXBlID0gbmV3IFRlbXBDdG9yKCkKKyAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IGN0b3IKKyAgfQorfQorCit9LHt9XSwzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRz
KXsKKy8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlcgorCit2YXIgcHJvY2VzcyA9
IG1vZHVsZS5leHBvcnRzID0ge307CisKK3Byb2Nlc3MubmV4dFRpY2sgPSAoZnVuY3Rpb24gKCkg
eworICAgIHZhciBjYW5TZXRJbW1lZGlhdGUgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVk
JworICAgICYmIHdpbmRvdy5zZXRJbW1lZGlhdGU7CisgICAgdmFyIGNhblBvc3QgPSB0eXBlb2Yg
d2luZG93ICE9PSAndW5kZWZpbmVkJworICAgICYmIHdpbmRvdy5wb3N0TWVzc2FnZSAmJiB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcgorICAgIDsKKworICAgIGlmIChjYW5TZXRJbW1lZGlhdGUpIHsK
KyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChmKSB7IHJldHVybiB3aW5kb3cuc2V0SW1tZWRpYXRl
KGYpIH07CisgICAgfQorCisgICAgaWYgKGNhblBvc3QpIHsKKyAgICAgICAgdmFyIHF1ZXVlID0g
W107CisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZnVuY3Rpb24g
KGV2KSB7CisgICAgICAgICAgICB2YXIgc291cmNlID0gZXYuc291cmNlOworICAgICAgICAgICAg
aWYgKChzb3VyY2UgPT09IHdpbmRvdyB8fCBzb3VyY2UgPT09IG51bGwpICYmIGV2LmRhdGEgPT09
ICdwcm9jZXNzLXRpY2snKSB7CisgICAgICAgICAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7
CisgICAgICAgICAgICAgICAgaWYgKHF1ZXVlLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIGZuID0gcXVldWUuc2hpZnQoKTsKKyAgICAgICAgICAgICAgICAgICAgZm4oKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0sIHRydWUpOworCisg
ICAgICAgIHJldHVybiBmdW5jdGlvbiBuZXh0VGljayhmbikgeworICAgICAgICAgICAgcXVldWUu
cHVzaChmbik7CisgICAgICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoJ3Byb2Nlc3MtdGljaycs
ICcqJyk7CisgICAgICAgIH07CisgICAgfQorCisgICAgcmV0dXJuIGZ1bmN0aW9uIG5leHRUaWNr
KGZuKSB7CisgICAgICAgIHNldFRpbWVvdXQoZm4sIDApOworICAgIH07Cit9KSgpOworCitwcm9j
ZXNzLnRpdGxlID0gJ2Jyb3dzZXInOworcHJvY2Vzcy5icm93c2VyID0gdHJ1ZTsKK3Byb2Nlc3Mu
ZW52ID0ge307Citwcm9jZXNzLmFyZ3YgPSBbXTsKKworZnVuY3Rpb24gbm9vcCgpIHt9CisKK3By
b2Nlc3Mub24gPSBub29wOworcHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7Citwcm9jZXNzLm9u
Y2UgPSBub29wOworcHJvY2Vzcy5vZmYgPSBub29wOworcHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9
IG5vb3A7Citwcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7Citwcm9jZXNzLmVtaXQg
PSBub29wOworCitwcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkgeworICAgIHRocm93
IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTsKK30KKworLy8g
VE9ETyhzaHR5bG1hbikKK3Byb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07
Citwcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikgeworICAgIHRocm93IG5ldyBFcnJvcign
cHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7Cit9OworCit9LHt9XSw0OltmdW5jdGlv
bihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK21vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNC
dWZmZXIoYXJnKSB7CisgIHJldHVybiBhcmcgJiYgdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcKKyAg
ICAmJiB0eXBlb2YgYXJnLmNvcHkgPT09ICdmdW5jdGlvbicKKyAgICAmJiB0eXBlb2YgYXJnLmZp
bGwgPT09ICdmdW5jdGlvbicKKyAgICAmJiB0eXBlb2YgYXJnLnJlYWRVSW50OCA9PT0gJ2Z1bmN0
aW9uJzsKK30KK30se31dLDU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworKGZ1
bmN0aW9uIChwcm9jZXNzLGdsb2JhbCl7CisvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBv
dGhlciBOb2RlIGNvbnRyaWJ1dG9ycy4KKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu
dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorLy8gY29weSBv
ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQor
Ly8gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp
b24sIGluY2x1ZGluZworLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBj
b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwg
YW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAorLy8gcGVy
c29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg
dG8gdGhlCisvLyBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJp
Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAor
Ly8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUu
CisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO
VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKKy8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U
IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKy8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4KKy8vIE5P
IEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBG
T1IgQU5ZIENMQUlNLAorLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
QU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SCisvLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJP
TSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCisvLyBV
U0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorCit2YXIgZm9ybWF0UmVnRXhw
ID0gLyVbc2RqJV0vZzsKK2V4cG9ydHMuZm9ybWF0ID0gZnVuY3Rpb24oZikgeworICBpZiAoIWlz
U3RyaW5nKGYpKSB7CisgICAgdmFyIG9iamVjdHMgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeworICAgICAgb2JqZWN0cy5wdXNoKGluc3BlY3Qo
YXJndW1lbnRzW2ldKSk7CisgICAgfQorICAgIHJldHVybiBvYmplY3RzLmpvaW4oJyAnKTsKKyAg
fQorCisgIHZhciBpID0gMTsKKyAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7CisgIHZhciBsZW4gPSBh
cmdzLmxlbmd0aDsKKyAgdmFyIHN0ciA9IFN0cmluZyhmKS5yZXBsYWNlKGZvcm1hdFJlZ0V4cCwg
ZnVuY3Rpb24oeCkgeworICAgIGlmICh4ID09PSAnJSUnKSByZXR1cm4gJyUnOworICAgIGlmIChp
ID49IGxlbikgcmV0dXJuIHg7CisgICAgc3dpdGNoICh4KSB7CisgICAgICBjYXNlICclcyc6IHJl
dHVybiBTdHJpbmcoYXJnc1tpKytdKTsKKyAgICAgIGNhc2UgJyVkJzogcmV0dXJuIE51bWJlcihh
cmdzW2krK10pOworICAgICAgY2FzZSAnJWonOgorICAgICAgICB0cnkgeworICAgICAgICAgIHJl
dHVybiBKU09OLnN0cmluZ2lmeShhcmdzW2krK10pOworICAgICAgICB9IGNhdGNoIChfKSB7Cisg
ICAgICAgICAgcmV0dXJuICdbQ2lyY3VsYXJdJzsKKyAgICAgICAgfQorICAgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIHg7CisgICAgfQorICB9KTsKKyAgZm9yICh2YXIgeCA9IGFyZ3NbaV07
IGkgPCBsZW47IHggPSBhcmdzWysraV0pIHsKKyAgICBpZiAoaXNOdWxsKHgpIHx8ICFpc09iamVj
dCh4KSkgeworICAgICAgc3RyICs9ICcgJyArIHg7CisgICAgfSBlbHNlIHsKKyAgICAgIHN0ciAr
PSAnICcgKyBpbnNwZWN0KHgpOworICAgIH0KKyAgfQorICByZXR1cm4gc3RyOworfTsKKworCisv
LyBNYXJrIHRoYXQgYSBtZXRob2Qgc2hvdWxkIG5vdCBiZSB1c2VkLgorLy8gUmV0dXJucyBhIG1v
ZGlmaWVkIGZ1bmN0aW9uIHdoaWNoIHdhcm5zIG9uY2UgYnkgZGVmYXVsdC4KKy8vIElmIC0tbm8t
ZGVwcmVjYXRpb24gaXMgc2V0LCB0aGVuIGl0IGlzIGEgbm8tb3AuCitleHBvcnRzLmRlcHJlY2F0
ZSA9IGZ1bmN0aW9uKGZuLCBtc2cpIHsKKyAgLy8gQWxsb3cgZm9yIGRlcHJlY2F0aW5nIHRoaW5n
cyBpbiB0aGUgcHJvY2VzcyBvZiBzdGFydGluZyB1cC4KKyAgaWYgKGlzVW5kZWZpbmVkKGdsb2Jh
bC5wcm9jZXNzKSkgeworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiBleHBv
cnRzLmRlcHJlY2F0ZShmbiwgbXNnKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgIH07Cisg
IH0KKworICBpZiAocHJvY2Vzcy5ub0RlcHJlY2F0aW9uID09PSB0cnVlKSB7CisgICAgcmV0dXJu
IGZuOworICB9CisKKyAgdmFyIHdhcm5lZCA9IGZhbHNlOworICBmdW5jdGlvbiBkZXByZWNhdGVk
KCkgeworICAgIGlmICghd2FybmVkKSB7CisgICAgICBpZiAocHJvY2Vzcy50aHJvd0RlcHJlY2F0
aW9uKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpOworICAgICAgfSBlbHNlIGlmIChw
cm9jZXNzLnRyYWNlRGVwcmVjYXRpb24pIHsKKyAgICAgICAgY29uc29sZS50cmFjZShtc2cpOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc29sZS5lcnJvcihtc2cpOworICAgICAgfQorICAg
ICAgd2FybmVkID0gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3Vt
ZW50cyk7CisgIH0KKworICByZXR1cm4gZGVwcmVjYXRlZDsKK307CisKKwordmFyIGRlYnVncyA9
IHt9OwordmFyIGRlYnVnRW52aXJvbjsKK2V4cG9ydHMuZGVidWdsb2cgPSBmdW5jdGlvbihzZXQp
IHsKKyAgaWYgKGlzVW5kZWZpbmVkKGRlYnVnRW52aXJvbikpCisgICAgZGVidWdFbnZpcm9uID0g
cHJvY2Vzcy5lbnYuTk9ERV9ERUJVRyB8fCAnJzsKKyAgc2V0ID0gc2V0LnRvVXBwZXJDYXNlKCk7
CisgIGlmICghZGVidWdzW3NldF0pIHsKKyAgICBpZiAobmV3IFJlZ0V4cCgnXFxiJyArIHNldCAr
ICdcXGInLCAnaScpLnRlc3QoZGVidWdFbnZpcm9uKSkgeworICAgICAgdmFyIHBpZCA9IHByb2Nl
c3MucGlkOworICAgICAgZGVidWdzW3NldF0gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIG1z
ZyA9IGV4cG9ydHMuZm9ybWF0LmFwcGx5KGV4cG9ydHMsIGFyZ3VtZW50cyk7CisgICAgICAgIGNv
bnNvbGUuZXJyb3IoJyVzICVkOiAlcycsIHNldCwgcGlkLCBtc2cpOworICAgICAgfTsKKyAgICB9
IGVsc2UgeworICAgICAgZGVidWdzW3NldF0gPSBmdW5jdGlvbigpIHt9OworICAgIH0KKyAgfQor
ICByZXR1cm4gZGVidWdzW3NldF07Cit9OworCisKKy8qKgorICogRWNob3MgdGhlIHZhbHVlIG9m
IGEgdmFsdWUuIFRyeXMgdG8gcHJpbnQgdGhlIHZhbHVlIG91dAorICogaW4gdGhlIGJlc3Qgd2F5
IHBvc3NpYmxlIGdpdmVuIHRoZSBkaWZmZXJlbnQgdHlwZXMuCisgKgorICogQHBhcmFtIHtPYmpl
Y3R9IG9iaiBUaGUgb2JqZWN0IHRvIHByaW50IG91dC4KKyAqIEBwYXJhbSB7T2JqZWN0fSBvcHRz
IE9wdGlvbmFsIG9wdGlvbnMgb2JqZWN0IHRoYXQgYWx0ZXJzIHRoZSBvdXRwdXQuCisgKi8KKy8q
IGxlZ2FjeTogb2JqLCBzaG93SGlkZGVuLCBkZXB0aCwgY29sb3JzKi8KK2Z1bmN0aW9uIGluc3Bl
Y3Qob2JqLCBvcHRzKSB7CisgIC8vIGRlZmF1bHQgb3B0aW9ucworICB2YXIgY3R4ID0geworICAg
IHNlZW46IFtdLAorICAgIHN0eWxpemU6IHN0eWxpemVOb0NvbG9yCisgIH07CisgIC8vIGxlZ2Fj
eS4uLgorICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+PSAzKSBjdHguZGVwdGggPSBhcmd1bWVudHNb
Ml07CisgIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDQpIGN0eC5jb2xvcnMgPSBhcmd1bWVudHNb
M107CisgIGlmIChpc0Jvb2xlYW4ob3B0cykpIHsKKyAgICAvLyBsZWdhY3kuLi4KKyAgICBjdHgu
c2hvd0hpZGRlbiA9IG9wdHM7CisgIH0gZWxzZSBpZiAob3B0cykgeworICAgIC8vIGdvdCBhbiAi
b3B0aW9ucyIgb2JqZWN0CisgICAgZXhwb3J0cy5fZXh0ZW5kKGN0eCwgb3B0cyk7CisgIH0KKyAg
Ly8gc2V0IGRlZmF1bHQgb3B0aW9ucworICBpZiAoaXNVbmRlZmluZWQoY3R4LnNob3dIaWRkZW4p
KSBjdHguc2hvd0hpZGRlbiA9IGZhbHNlOworICBpZiAoaXNVbmRlZmluZWQoY3R4LmRlcHRoKSkg
Y3R4LmRlcHRoID0gMjsKKyAgaWYgKGlzVW5kZWZpbmVkKGN0eC5jb2xvcnMpKSBjdHguY29sb3Jz
ID0gZmFsc2U7CisgIGlmIChpc1VuZGVmaW5lZChjdHguY3VzdG9tSW5zcGVjdCkpIGN0eC5jdXN0
b21JbnNwZWN0ID0gdHJ1ZTsKKyAgaWYgKGN0eC5jb2xvcnMpIGN0eC5zdHlsaXplID0gc3R5bGl6
ZVdpdGhDb2xvcjsKKyAgcmV0dXJuIGZvcm1hdFZhbHVlKGN0eCwgb2JqLCBjdHguZGVwdGgpOwor
fQorZXhwb3J0cy5pbnNwZWN0ID0gaW5zcGVjdDsKKworCisvLyBodHRwOi8vZW4ud2lraXBlZGlh
Lm9yZy93aWtpL0FOU0lfZXNjYXBlX2NvZGUjZ3JhcGhpY3MKK2luc3BlY3QuY29sb3JzID0gewor
ICAnYm9sZCcgOiBbMSwgMjJdLAorICAnaXRhbGljJyA6IFszLCAyM10sCisgICd1bmRlcmxpbmUn
IDogWzQsIDI0XSwKKyAgJ2ludmVyc2UnIDogWzcsIDI3XSwKKyAgJ3doaXRlJyA6IFszNywgMzld
LAorICAnZ3JleScgOiBbOTAsIDM5XSwKKyAgJ2JsYWNrJyA6IFszMCwgMzldLAorICAnYmx1ZScg
OiBbMzQsIDM5XSwKKyAgJ2N5YW4nIDogWzM2LCAzOV0sCisgICdncmVlbicgOiBbMzIsIDM5XSwK
KyAgJ21hZ2VudGEnIDogWzM1LCAzOV0sCisgICdyZWQnIDogWzMxLCAzOV0sCisgICd5ZWxsb3cn
IDogWzMzLCAzOV0KK307CisKKy8vIERvbid0IHVzZSAnYmx1ZScgbm90IHZpc2libGUgb24gY21k
LmV4ZQoraW5zcGVjdC5zdHlsZXMgPSB7CisgICdzcGVjaWFsJzogJ2N5YW4nLAorICAnbnVtYmVy
JzogJ3llbGxvdycsCisgICdib29sZWFuJzogJ3llbGxvdycsCisgICd1bmRlZmluZWQnOiAnZ3Jl
eScsCisgICdudWxsJzogJ2JvbGQnLAorICAnc3RyaW5nJzogJ2dyZWVuJywKKyAgJ2RhdGUnOiAn
bWFnZW50YScsCisgIC8vICJuYW1lIjogaW50ZW50aW9uYWxseSBub3Qgc3R5bGluZworICAncmVn
ZXhwJzogJ3JlZCcKK307CisKKworZnVuY3Rpb24gc3R5bGl6ZVdpdGhDb2xvcihzdHIsIHN0eWxl
VHlwZSkgeworICB2YXIgc3R5bGUgPSBpbnNwZWN0LnN0eWxlc1tzdHlsZVR5cGVdOworCisgIGlm
IChzdHlsZSkgeworICAgIHJldHVybiAnXHUwMDFiWycgKyBpbnNwZWN0LmNvbG9yc1tzdHlsZV1b
MF0gKyAnbScgKyBzdHIgKworICAgICAgICAgICAnXHUwMDFiWycgKyBpbnNwZWN0LmNvbG9yc1tz
dHlsZV1bMV0gKyAnbSc7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIHN0cjsKKyAgfQorfQorCisK
K2Z1bmN0aW9uIHN0eWxpemVOb0NvbG9yKHN0ciwgc3R5bGVUeXBlKSB7CisgIHJldHVybiBzdHI7
Cit9CisKKworZnVuY3Rpb24gYXJyYXlUb0hhc2goYXJyYXkpIHsKKyAgdmFyIGhhc2ggPSB7fTsK
KworICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uKHZhbCwgaWR4KSB7CisgICAgaGFzaFt2YWxdID0g
dHJ1ZTsKKyAgfSk7CisKKyAgcmV0dXJuIGhhc2g7Cit9CisKKworZnVuY3Rpb24gZm9ybWF0VmFs
dWUoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzKSB7CisgIC8vIFByb3ZpZGUgYSBob29rIGZvciB1
c2VyLXNwZWNpZmllZCBpbnNwZWN0IGZ1bmN0aW9ucy4KKyAgLy8gQ2hlY2sgdGhhdCB2YWx1ZSBp
cyBhbiBvYmplY3Qgd2l0aCBhbiBpbnNwZWN0IGZ1bmN0aW9uIG9uIGl0CisgIGlmIChjdHguY3Vz
dG9tSW5zcGVjdCAmJgorICAgICAgdmFsdWUgJiYKKyAgICAgIGlzRnVuY3Rpb24odmFsdWUuaW5z
cGVjdCkgJiYKKyAgICAgIC8vIEZpbHRlciBvdXQgdGhlIHV0aWwgbW9kdWxlLCBpdCdzIGluc3Bl
Y3QgZnVuY3Rpb24gaXMgc3BlY2lhbAorICAgICAgdmFsdWUuaW5zcGVjdCAhPT0gZXhwb3J0cy5p
bnNwZWN0ICYmCisgICAgICAvLyBBbHNvIGZpbHRlciBvdXQgYW55IHByb3RvdHlwZSBvYmplY3Rz
IHVzaW5nIHRoZSBjaXJjdWxhciBjaGVjay4KKyAgICAgICEodmFsdWUuY29uc3RydWN0b3IgJiYg
dmFsdWUuY29uc3RydWN0b3IucHJvdG90eXBlID09PSB2YWx1ZSkpIHsKKyAgICB2YXIgcmV0ID0g
dmFsdWUuaW5zcGVjdChyZWN1cnNlVGltZXMsIGN0eCk7CisgICAgaWYgKCFpc1N0cmluZyhyZXQp
KSB7CisgICAgICByZXQgPSBmb3JtYXRWYWx1ZShjdHgsIHJldCwgcmVjdXJzZVRpbWVzKTsKKyAg
ICB9CisgICAgcmV0dXJuIHJldDsKKyAgfQorCisgIC8vIFByaW1pdGl2ZSB0eXBlcyBjYW5ub3Qg
aGF2ZSBwcm9wZXJ0aWVzCisgIHZhciBwcmltaXRpdmUgPSBmb3JtYXRQcmltaXRpdmUoY3R4LCB2
YWx1ZSk7CisgIGlmIChwcmltaXRpdmUpIHsKKyAgICByZXR1cm4gcHJpbWl0aXZlOworICB9CisK
KyAgLy8gTG9vayB1cCB0aGUga2V5cyBvZiB0aGUgb2JqZWN0LgorICB2YXIga2V5cyA9IE9iamVj
dC5rZXlzKHZhbHVlKTsKKyAgdmFyIHZpc2libGVLZXlzID0gYXJyYXlUb0hhc2goa2V5cyk7CisK
KyAgaWYgKGN0eC5zaG93SGlkZGVuKSB7CisgICAga2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eU5hbWVzKHZhbHVlKTsKKyAgfQorCisgIC8vIElFIGRvZXNuJ3QgbWFrZSBlcnJvciBmaWVsZHMg
bm9uLWVudW1lcmFibGUKKyAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJy
YXJ5L2llL2R3dzUyc2J0KHY9dnMuOTQpLmFzcHgKKyAgaWYgKGlzRXJyb3IodmFsdWUpCisgICAg
ICAmJiAoa2V5cy5pbmRleE9mKCdtZXNzYWdlJykgPj0gMCB8fCBrZXlzLmluZGV4T2YoJ2Rlc2Ny
aXB0aW9uJykgPj0gMCkpIHsKKyAgICByZXR1cm4gZm9ybWF0RXJyb3IodmFsdWUpOworICB9CisK
KyAgLy8gU29tZSB0eXBlIG9mIG9iamVjdCB3aXRob3V0IHByb3BlcnRpZXMgY2FuIGJlIHNob3J0
Y3V0dGVkLgorICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHsKKyAgICBpZiAoaXNGdW5jdGlvbih2
YWx1ZSkpIHsKKyAgICAgIHZhciBuYW1lID0gdmFsdWUubmFtZSA/ICc6ICcgKyB2YWx1ZS5uYW1l
IDogJyc7CisgICAgICByZXR1cm4gY3R4LnN0eWxpemUoJ1tGdW5jdGlvbicgKyBuYW1lICsgJ10n
LCAnc3BlY2lhbCcpOworICAgIH0KKyAgICBpZiAoaXNSZWdFeHAodmFsdWUpKSB7CisgICAgICBy
ZXR1cm4gY3R4LnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSwg
J3JlZ2V4cCcpOworICAgIH0KKyAgICBpZiAoaXNEYXRlKHZhbHVlKSkgeworICAgICAgcmV0dXJu
IGN0eC5zdHlsaXplKERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLCAnZGF0ZScp
OworICAgIH0KKyAgICBpZiAoaXNFcnJvcih2YWx1ZSkpIHsKKyAgICAgIHJldHVybiBmb3JtYXRF
cnJvcih2YWx1ZSk7CisgICAgfQorICB9CisKKyAgdmFyIGJhc2UgPSAnJywgYXJyYXkgPSBmYWxz
ZSwgYnJhY2VzID0gWyd7JywgJ30nXTsKKworICAvLyBNYWtlIEFycmF5IHNheSB0aGF0IHRoZXkg
YXJlIEFycmF5CisgIGlmIChpc0FycmF5KHZhbHVlKSkgeworICAgIGFycmF5ID0gdHJ1ZTsKKyAg
ICBicmFjZXMgPSBbJ1snLCAnXSddOworICB9CisKKyAgLy8gTWFrZSBmdW5jdGlvbnMgc2F5IHRo
YXQgdGhleSBhcmUgZnVuY3Rpb25zCisgIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkgeworICAgIHZh
ciBuID0gdmFsdWUubmFtZSA/ICc6ICcgKyB2YWx1ZS5uYW1lIDogJyc7CisgICAgYmFzZSA9ICcg
W0Z1bmN0aW9uJyArIG4gKyAnXSc7CisgIH0KKworICAvLyBNYWtlIFJlZ0V4cHMgc2F5IHRoYXQg
dGhleSBhcmUgUmVnRXhwcworICBpZiAoaXNSZWdFeHAodmFsdWUpKSB7CisgICAgYmFzZSA9ICcg
JyArIFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSk7CisgIH0KKworICAvLyBN
YWtlIGRhdGVzIHdpdGggcHJvcGVydGllcyBmaXJzdCBzYXkgdGhlIGRhdGUKKyAgaWYgKGlzRGF0
ZSh2YWx1ZSkpIHsKKyAgICBiYXNlID0gJyAnICsgRGF0ZS5wcm90b3R5cGUudG9VVENTdHJpbmcu
Y2FsbCh2YWx1ZSk7CisgIH0KKworICAvLyBNYWtlIGVycm9yIHdpdGggbWVzc2FnZSBmaXJzdCBz
YXkgdGhlIGVycm9yCisgIGlmIChpc0Vycm9yKHZhbHVlKSkgeworICAgIGJhc2UgPSAnICcgKyBm
b3JtYXRFcnJvcih2YWx1ZSk7CisgIH0KKworICBpZiAoa2V5cy5sZW5ndGggPT09IDAgJiYgKCFh
cnJheSB8fCB2YWx1ZS5sZW5ndGggPT0gMCkpIHsKKyAgICByZXR1cm4gYnJhY2VzWzBdICsgYmFz
ZSArIGJyYWNlc1sxXTsKKyAgfQorCisgIGlmIChyZWN1cnNlVGltZXMgPCAwKSB7CisgICAgaWYg
KGlzUmVnRXhwKHZhbHVlKSkgeworICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKFJlZ0V4cC5wcm90
b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdyZWdleHAnKTsKKyAgICB9IGVsc2UgeworICAg
ICAgcmV0dXJuIGN0eC5zdHlsaXplKCdbT2JqZWN0XScsICdzcGVjaWFsJyk7CisgICAgfQorICB9
CisKKyAgY3R4LnNlZW4ucHVzaCh2YWx1ZSk7CisKKyAgdmFyIG91dHB1dDsKKyAgaWYgKGFycmF5
KSB7CisgICAgb3V0cHV0ID0gZm9ybWF0QXJyYXkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2
aXNpYmxlS2V5cywga2V5cyk7CisgIH0gZWxzZSB7CisgICAgb3V0cHV0ID0ga2V5cy5tYXAoZnVu
Y3Rpb24oa2V5KSB7CisgICAgICByZXR1cm4gZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVj
dXJzZVRpbWVzLCB2aXNpYmxlS2V5cywga2V5LCBhcnJheSk7CisgICAgfSk7CisgIH0KKworICBj
dHguc2Vlbi5wb3AoKTsKKworICByZXR1cm4gcmVkdWNlVG9TaW5nbGVTdHJpbmcob3V0cHV0LCBi
YXNlLCBicmFjZXMpOworfQorCisKK2Z1bmN0aW9uIGZvcm1hdFByaW1pdGl2ZShjdHgsIHZhbHVl
KSB7CisgIGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpCisgICAgcmV0dXJuIGN0eC5zdHlsaXplKCd1
bmRlZmluZWQnLCAndW5kZWZpbmVkJyk7CisgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHsKKyAgICB2
YXIgc2ltcGxlID0gJ1wnJyArIEpTT04uc3RyaW5naWZ5KHZhbHVlKS5yZXBsYWNlKC9eInwiJC9n
LCAnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBs
YWNlKC8nL2csICJcXCciKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLnJlcGxhY2UoL1xcIi9nLCAnIicpICsgJ1wnJzsKKyAgICByZXR1cm4gY3R4LnN0eWxp
emUoc2ltcGxlLCAnc3RyaW5nJyk7CisgIH0KKyAgaWYgKGlzTnVtYmVyKHZhbHVlKSkKKyAgICBy
ZXR1cm4gY3R4LnN0eWxpemUoJycgKyB2YWx1ZSwgJ251bWJlcicpOworICBpZiAoaXNCb29sZWFu
KHZhbHVlKSkKKyAgICByZXR1cm4gY3R4LnN0eWxpemUoJycgKyB2YWx1ZSwgJ2Jvb2xlYW4nKTsK
KyAgLy8gRm9yIHNvbWUgcmVhc29uIHR5cGVvZiBudWxsIGlzICJvYmplY3QiLCBzbyBzcGVjaWFs
IGNhc2UgaGVyZS4KKyAgaWYgKGlzTnVsbCh2YWx1ZSkpCisgICAgcmV0dXJuIGN0eC5zdHlsaXpl
KCdudWxsJywgJ251bGwnKTsKK30KKworCitmdW5jdGlvbiBmb3JtYXRFcnJvcih2YWx1ZSkgewor
ICByZXR1cm4gJ1snICsgRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpICsgJ10n
OworfQorCisKK2Z1bmN0aW9uIGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywg
dmlzaWJsZUtleXMsIGtleXMpIHsKKyAgdmFyIG91dHB1dCA9IFtdOworICBmb3IgKHZhciBpID0g
MCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7ICsraSkgeworICAgIGlmIChoYXNPd25Qcm9wZXJ0
eSh2YWx1ZSwgU3RyaW5nKGkpKSkgeworICAgICAgb3V0cHV0LnB1c2goZm9ybWF0UHJvcGVydHko
Y3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywKKyAgICAgICAgICBTdHJpbmco
aSksIHRydWUpKTsKKyAgICB9IGVsc2UgeworICAgICAgb3V0cHV0LnB1c2goJycpOworICAgIH0K
KyAgfQorICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7CisgICAgaWYgKCFrZXkubWF0Y2go
L15cZCskLykpIHsKKyAgICAgIG91dHB1dC5wdXNoKGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUs
IHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsCisgICAgICAgICAga2V5LCB0cnVlKSk7CisgICAg
fQorICB9KTsKKyAgcmV0dXJuIG91dHB1dDsKK30KKworCitmdW5jdGlvbiBmb3JtYXRQcm9wZXJ0
eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLCBrZXksIGFycmF5KSB7Cisg
IHZhciBuYW1lLCBzdHIsIGRlc2M7CisgIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKHZhbHVlLCBrZXkpIHx8IHsgdmFsdWU6IHZhbHVlW2tleV0gfTsKKyAgaWYgKGRlc2Mu
Z2V0KSB7CisgICAgaWYgKGRlc2Muc2V0KSB7CisgICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW0dl
dHRlci9TZXR0ZXJdJywgJ3NwZWNpYWwnKTsKKyAgICB9IGVsc2UgeworICAgICAgc3RyID0gY3R4
LnN0eWxpemUoJ1tHZXR0ZXJdJywgJ3NwZWNpYWwnKTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAg
aWYgKGRlc2Muc2V0KSB7CisgICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW1NldHRlcl0nLCAnc3Bl
Y2lhbCcpOworICAgIH0KKyAgfQorICBpZiAoIWhhc093blByb3BlcnR5KHZpc2libGVLZXlzLCBr
ZXkpKSB7CisgICAgbmFtZSA9ICdbJyArIGtleSArICddJzsKKyAgfQorICBpZiAoIXN0cikgewor
ICAgIGlmIChjdHguc2Vlbi5pbmRleE9mKGRlc2MudmFsdWUpIDwgMCkgeworICAgICAgaWYgKGlz
TnVsbChyZWN1cnNlVGltZXMpKSB7CisgICAgICAgIHN0ciA9IGZvcm1hdFZhbHVlKGN0eCwgZGVz
Yy52YWx1ZSwgbnVsbCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBzdHIgPSBmb3JtYXRWYWx1
ZShjdHgsIGRlc2MudmFsdWUsIHJlY3Vyc2VUaW1lcyAtIDEpOworICAgICAgfQorICAgICAgaWYg
KHN0ci5pbmRleE9mKCdcbicpID4gLTEpIHsKKyAgICAgICAgaWYgKGFycmF5KSB7CisgICAgICAg
ICAgc3RyID0gc3RyLnNwbGl0KCdcbicpLm1hcChmdW5jdGlvbihsaW5lKSB7CisgICAgICAgICAg
ICByZXR1cm4gJyAgJyArIGxpbmU7CisgICAgICAgICAgfSkuam9pbignXG4nKS5zdWJzdHIoMik7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgc3RyID0gJ1xuJyArIHN0ci5zcGxpdCgnXG4n
KS5tYXAoZnVuY3Rpb24obGluZSkgeworICAgICAgICAgICAgcmV0dXJuICcgICAnICsgbGluZTsK
KyAgICAgICAgICB9KS5qb2luKCdcbicpOworICAgICAgICB9CisgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbQ2lyY3VsYXJdJywgJ3NwZWNpYWwnKTsKKyAg
ICB9CisgIH0KKyAgaWYgKGlzVW5kZWZpbmVkKG5hbWUpKSB7CisgICAgaWYgKGFycmF5ICYmIGtl
eS5tYXRjaCgvXlxkKyQvKSkgeworICAgICAgcmV0dXJuIHN0cjsKKyAgICB9CisgICAgbmFtZSA9
IEpTT04uc3RyaW5naWZ5KCcnICsga2V5KTsKKyAgICBpZiAobmFtZS5tYXRjaCgvXiIoW2EtekEt
Wl9dW2EtekEtWl8wLTldKikiJC8pKSB7CisgICAgICBuYW1lID0gbmFtZS5zdWJzdHIoMSwgbmFt
ZS5sZW5ndGggLSAyKTsKKyAgICAgIG5hbWUgPSBjdHguc3R5bGl6ZShuYW1lLCAnbmFtZScpOwor
ICAgIH0gZWxzZSB7CisgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKC8nL2csICJcXCciKQorICAg
ICAgICAgICAgICAgICAucmVwbGFjZSgvXFwiL2csICciJykKKyAgICAgICAgICAgICAgICAgLnJl
cGxhY2UoLyheInwiJCkvZywgIiciKTsKKyAgICAgIG5hbWUgPSBjdHguc3R5bGl6ZShuYW1lLCAn
c3RyaW5nJyk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIG5hbWUgKyAnOiAnICsgc3RyOworfQor
CisKK2Z1bmN0aW9uIHJlZHVjZVRvU2luZ2xlU3RyaW5nKG91dHB1dCwgYmFzZSwgYnJhY2VzKSB7
CisgIHZhciBudW1MaW5lc0VzdCA9IDA7CisgIHZhciBsZW5ndGggPSBvdXRwdXQucmVkdWNlKGZ1
bmN0aW9uKHByZXYsIGN1cikgeworICAgIG51bUxpbmVzRXN0Kys7CisgICAgaWYgKGN1ci5pbmRl
eE9mKCdcbicpID49IDApIG51bUxpbmVzRXN0Kys7CisgICAgcmV0dXJuIHByZXYgKyBjdXIucmVw
bGFjZSgvXHUwMDFiXFtcZFxkP20vZywgJycpLmxlbmd0aCArIDE7CisgIH0sIDApOworCisgIGlm
IChsZW5ndGggPiA2MCkgeworICAgIHJldHVybiBicmFjZXNbMF0gKworICAgICAgICAgICAoYmFz
ZSA9PT0gJycgPyAnJyA6IGJhc2UgKyAnXG4gJykgKworICAgICAgICAgICAnICcgKworICAgICAg
ICAgICBvdXRwdXQuam9pbignLFxuICAnKSArCisgICAgICAgICAgICcgJyArCisgICAgICAgICAg
IGJyYWNlc1sxXTsKKyAgfQorCisgIHJldHVybiBicmFjZXNbMF0gKyBiYXNlICsgJyAnICsgb3V0
cHV0LmpvaW4oJywgJykgKyAnICcgKyBicmFjZXNbMV07Cit9CisKKworLy8gTk9URTogVGhlc2Ug
dHlwZSBjaGVja2luZyBmdW5jdGlvbnMgaW50ZW50aW9uYWxseSBkb24ndCB1c2UgYGluc3RhbmNl
b2ZgCisvLyBiZWNhdXNlIGl0IGlzIGZyYWdpbGUgYW5kIGNhbiBiZSBlYXNpbHkgZmFrZWQgd2l0
aCBgT2JqZWN0LmNyZWF0ZSgpYC4KK2Z1bmN0aW9uIGlzQXJyYXkoYXIpIHsKKyAgcmV0dXJuIEFy
cmF5LmlzQXJyYXkoYXIpOworfQorZXhwb3J0cy5pc0FycmF5ID0gaXNBcnJheTsKKworZnVuY3Rp
b24gaXNCb29sZWFuKGFyZykgeworICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nOwor
fQorZXhwb3J0cy5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47CisKK2Z1bmN0aW9uIGlzTnVsbChhcmcp
IHsKKyAgcmV0dXJuIGFyZyA9PT0gbnVsbDsKK30KK2V4cG9ydHMuaXNOdWxsID0gaXNOdWxsOwor
CitmdW5jdGlvbiBpc051bGxPclVuZGVmaW5lZChhcmcpIHsKKyAgcmV0dXJuIGFyZyA9PSBudWxs
OworfQorZXhwb3J0cy5pc051bGxPclVuZGVmaW5lZCA9IGlzTnVsbE9yVW5kZWZpbmVkOworCitm
dW5jdGlvbiBpc051bWJlcihhcmcpIHsKKyAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdudW1iZXIn
OworfQorZXhwb3J0cy5pc051bWJlciA9IGlzTnVtYmVyOworCitmdW5jdGlvbiBpc1N0cmluZyhh
cmcpIHsKKyAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnOworfQorZXhwb3J0cy5pc1N0
cmluZyA9IGlzU3RyaW5nOworCitmdW5jdGlvbiBpc1N5bWJvbChhcmcpIHsKKyAgcmV0dXJuIHR5
cGVvZiBhcmcgPT09ICdzeW1ib2wnOworfQorZXhwb3J0cy5pc1N5bWJvbCA9IGlzU3ltYm9sOwor
CitmdW5jdGlvbiBpc1VuZGVmaW5lZChhcmcpIHsKKyAgcmV0dXJuIGFyZyA9PT0gdm9pZCAwOwor
fQorZXhwb3J0cy5pc1VuZGVmaW5lZCA9IGlzVW5kZWZpbmVkOworCitmdW5jdGlvbiBpc1JlZ0V4
cChyZSkgeworICByZXR1cm4gaXNPYmplY3QocmUpICYmIG9iamVjdFRvU3RyaW5nKHJlKSA9PT0g
J1tvYmplY3QgUmVnRXhwXSc7Cit9CitleHBvcnRzLmlzUmVnRXhwID0gaXNSZWdFeHA7CisKK2Z1
bmN0aW9uIGlzT2JqZWN0KGFyZykgeworICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcg
JiYgYXJnICE9PSBudWxsOworfQorZXhwb3J0cy5pc09iamVjdCA9IGlzT2JqZWN0OworCitmdW5j
dGlvbiBpc0RhdGUoZCkgeworICByZXR1cm4gaXNPYmplY3QoZCkgJiYgb2JqZWN0VG9TdHJpbmco
ZCkgPT09ICdbb2JqZWN0IERhdGVdJzsKK30KK2V4cG9ydHMuaXNEYXRlID0gaXNEYXRlOworCitm
dW5jdGlvbiBpc0Vycm9yKGUpIHsKKyAgcmV0dXJuIGlzT2JqZWN0KGUpICYmCisgICAgICAob2Jq
ZWN0VG9TdHJpbmcoZSkgPT09ICdbb2JqZWN0IEVycm9yXScgfHwgZSBpbnN0YW5jZW9mIEVycm9y
KTsKK30KK2V4cG9ydHMuaXNFcnJvciA9IGlzRXJyb3I7CisKK2Z1bmN0aW9uIGlzRnVuY3Rpb24o
YXJnKSB7CisgIHJldHVybiB0eXBlb2YgYXJnID09PSAnZnVuY3Rpb24nOworfQorZXhwb3J0cy5p
c0Z1bmN0aW9uID0gaXNGdW5jdGlvbjsKKworZnVuY3Rpb24gaXNQcmltaXRpdmUoYXJnKSB7Cisg
IHJldHVybiBhcmcgPT09IG51bGwgfHwKKyAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdib29sZWFu
JyB8fAorICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ251bWJlcicgfHwKKyAgICAgICAgIHR5cGVv
ZiBhcmcgPT09ICdzdHJpbmcnIHx8CisgICAgICAgICB0eXBlb2YgYXJnID09PSAnc3ltYm9sJyB8
fCAgLy8gRVM2IHN5bWJvbAorICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3VuZGVmaW5lZCc7Cit9
CitleHBvcnRzLmlzUHJpbWl0aXZlID0gaXNQcmltaXRpdmU7CisKK2V4cG9ydHMuaXNCdWZmZXIg
PSByZXF1aXJlKCcuL3N1cHBvcnQvaXNCdWZmZXInKTsKKworZnVuY3Rpb24gb2JqZWN0VG9TdHJp
bmcobykgeworICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pOworfQor
CisKK2Z1bmN0aW9uIHBhZChuKSB7CisgIHJldHVybiBuIDwgMTAgPyAnMCcgKyBuLnRvU3RyaW5n
KDEwKSA6IG4udG9TdHJpbmcoMTApOworfQorCisKK3ZhciBtb250aHMgPSBbJ0phbicsICdGZWIn
LCAnTWFyJywgJ0FwcicsICdNYXknLCAnSnVuJywgJ0p1bCcsICdBdWcnLCAnU2VwJywKKyAgICAg
ICAgICAgICAgJ09jdCcsICdOb3YnLCAnRGVjJ107CisKKy8vIDI2IEZlYiAxNjoxOTozNAorZnVu
Y3Rpb24gdGltZXN0YW1wKCkgeworICB2YXIgZCA9IG5ldyBEYXRlKCk7CisgIHZhciB0aW1lID0g
W3BhZChkLmdldEhvdXJzKCkpLAorICAgICAgICAgICAgICBwYWQoZC5nZXRNaW51dGVzKCkpLAor
ICAgICAgICAgICAgICBwYWQoZC5nZXRTZWNvbmRzKCkpXS5qb2luKCc6Jyk7CisgIHJldHVybiBb
ZC5nZXREYXRlKCksIG1vbnRoc1tkLmdldE1vbnRoKCldLCB0aW1lXS5qb2luKCcgJyk7Cit9CisK
KworLy8gbG9nIGlzIGp1c3QgYSB0aGluIHdyYXBwZXIgdG8gY29uc29sZS5sb2cgdGhhdCBwcmVw
ZW5kcyBhIHRpbWVzdGFtcAorZXhwb3J0cy5sb2cgPSBmdW5jdGlvbigpIHsKKyAgY29uc29sZS5s
b2coJyVzIC0gJXMnLCB0aW1lc3RhbXAoKSwgZXhwb3J0cy5mb3JtYXQuYXBwbHkoZXhwb3J0cywg
YXJndW1lbnRzKSk7Cit9OworCisKKy8qKgorICogSW5oZXJpdCB0aGUgcHJvdG90eXBlIG1ldGhv
ZHMgZnJvbSBvbmUgY29uc3RydWN0b3IgaW50byBhbm90aGVyLgorICoKKyAqIFRoZSBGdW5jdGlv
bi5wcm90b3R5cGUuaW5oZXJpdHMgZnJvbSBsYW5nLmpzIHJld3JpdHRlbiBhcyBhIHN0YW5kYWxv
bmUKKyAqIGZ1bmN0aW9uIChub3Qgb24gRnVuY3Rpb24ucHJvdG90eXBlKS4gTk9URTogSWYgdGhp
cyBmaWxlIGlzIHRvIGJlIGxvYWRlZAorICogZHVyaW5nIGJvb3RzdHJhcHBpbmcgdGhpcyBmdW5j
dGlvbiBuZWVkcyB0byBiZSByZXdyaXR0ZW4gdXNpbmcgc29tZSBuYXRpdmUKKyAqIGZ1bmN0aW9u
cyBhcyBwcm90b3R5cGUgc2V0dXAgdXNpbmcgbm9ybWFsIEphdmFTY3JpcHQgZG9lcyBub3Qgd29y
ayBhcworICogZXhwZWN0ZWQgZHVyaW5nIGJvb3RzdHJhcHBpbmcgKHNlZSBtaXJyb3IuanMgaW4g
cjExNDkwMykuCisgKgorICogQHBhcmFtIHtmdW5jdGlvbn0gY3RvciBDb25zdHJ1Y3RvciBmdW5j
dGlvbiB3aGljaCBuZWVkcyB0byBpbmhlcml0IHRoZQorICogICAgIHByb3RvdHlwZS4KKyAqIEBw
YXJhbSB7ZnVuY3Rpb259IHN1cGVyQ3RvciBDb25zdHJ1Y3RvciBmdW5jdGlvbiB0byBpbmhlcml0
IHByb3RvdHlwZSBmcm9tLgorICovCitleHBvcnRzLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJp
dHMnKTsKKworZXhwb3J0cy5fZXh0ZW5kID0gZnVuY3Rpb24ob3JpZ2luLCBhZGQpIHsKKyAgLy8g
RG9uJ3QgZG8gYW55dGhpbmcgaWYgYWRkIGlzbid0IGFuIG9iamVjdAorICBpZiAoIWFkZCB8fCAh
aXNPYmplY3QoYWRkKSkgcmV0dXJuIG9yaWdpbjsKKworICB2YXIga2V5cyA9IE9iamVjdC5rZXlz
KGFkZCk7CisgIHZhciBpID0ga2V5cy5sZW5ndGg7CisgIHdoaWxlIChpLS0pIHsKKyAgICBvcmln
aW5ba2V5c1tpXV0gPSBhZGRba2V5c1tpXV07CisgIH0KKyAgcmV0dXJuIG9yaWdpbjsKK307CisK
K2Z1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkgeworICByZXR1cm4gT2JqZWN0LnBy
b3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7Cit9CisKK30pLmNhbGwodGhp
cyxyZXF1aXJlKCdfcHJvY2VzcycpLHR5cGVvZiBnbG9iYWwgIT09ICJ1bmRlZmluZWQiID8gZ2xv
YmFsIDogdHlwZW9mIHNlbGYgIT09ICJ1bmRlZmluZWQiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cg
IT09ICJ1bmRlZmluZWQiID8gd2luZG93IDoge30pCit9LHsiLi9zdXBwb3J0L2lzQnVmZmVyIjo0
LCJfcHJvY2VzcyI6MywiaW5oZXJpdHMiOjJ9XSw2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxl
eHBvcnRzKXsKKy8qCisgIENvcHlyaWdodCAoQykgMjAxNCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisKKyAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorCisg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisKKyAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIDxDT1BZUklHSFQgSE9MREVSPiBCRSBMSUFCTEUgRk9SIEFOWQorICBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyhm
dW5jdGlvbiAoKSB7CisgICAgJ3VzZSBzdHJpY3QnOworICAgIHJlcXVpcmUoJy4vcHJvbWlzZXMt
dGVzdHMvbGliL3Rlc3RzLzIuMS4yJyk7CisgICAgcmVxdWlyZSgnLi9wcm9taXNlcy10ZXN0cy9s
aWIvdGVzdHMvMi4xLjMnKTsKKyAgICByZXF1aXJlKCcuL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0
cy8yLjIuMScpOworICAgIHJlcXVpcmUoJy4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi4y
Jyk7CisgICAgcmVxdWlyZSgnLi9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4yLjMnKTsKKyAg
ICByZXF1aXJlKCcuL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjIuNCcpOworICAgIHJlcXVp
cmUoJy4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi41Jyk7CisgICAgcmVxdWlyZSgnLi9w
cm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4yLjYnKTsKKyAgICByZXF1aXJlKCcuL3Byb21pc2Vz
LXRlc3RzL2xpYi90ZXN0cy8yLjIuNycpOworICAgIHJlcXVpcmUoJy4vcHJvbWlzZXMtdGVzdHMv
bGliL3Rlc3RzLzIuMy4xJyk7CisgICAgcmVxdWlyZSgnLi9wcm9taXNlcy10ZXN0cy9saWIvdGVz
dHMvMi4zLjInKTsKKyAgICByZXF1aXJlKCcuL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjMu
MycpOworICAgIHJlcXVpcmUoJy4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMy40Jyk7Cit9
KCkpOworCit9LHsiLi9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4xLjIiOjcsIi4vcHJvbWlz
ZXMtdGVzdHMvbGliL3Rlc3RzLzIuMS4zIjo4LCIuL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8y
LjIuMSI6OSwiLi9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4yLjIiOjEwLCIuL3Byb21pc2Vz
LXRlc3RzL2xpYi90ZXN0cy8yLjIuMyI6MTEsIi4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIu
Mi40IjoxMiwiLi9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4yLjUiOjEzLCIuL3Byb21pc2Vz
LXRlc3RzL2xpYi90ZXN0cy8yLjIuNiI6MTQsIi4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIu
Mi43IjoxNSwiLi9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4zLjEiOjE2LCIuL3Byb21pc2Vz
LXRlc3RzL2xpYi90ZXN0cy8yLjMuMiI6MTcsIi4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIu
My4zIjoxOCwiLi9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4zLjQiOjE5fV0sNzpbZnVuY3Rp
b24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24gKGdsb2JhbCl7CisidXNlIHN0
cmljdCI7CisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCJhc3NlcnQiKTsKK3ZhciB0ZXN0RnVsZmls
bGVkID0gcmVxdWlyZSgiLi9oZWxwZXJzL3Rlc3RUaHJlZUNhc2VzIikudGVzdEZ1bGZpbGxlZDsK
KwordmFyIGFkYXB0ZXIgPSBnbG9iYWwuYWRhcHRlcjsKK3ZhciBkZWZlcnJlZCA9IGFkYXB0ZXIu
ZGVmZXJyZWQ7CisKK3ZhciBkdW1teSA9IHsgZHVtbXk6ICJkdW1teSIgfTsgLy8gd2UgZnVsZmls
bCBvciByZWplY3Qgd2l0aCB0aGlzIHdoZW4gd2UgZG9uJ3QgaW50ZW5kIHRvIHRlc3QgYWdhaW5z
dCBpdAorCitkZXNjcmliZSgiMi4xLjIuMTogV2hlbiBmdWxmaWxsZWQsIGEgcHJvbWlzZTogbXVz
dCBub3QgdHJhbnNpdGlvbiB0byBhbnkgb3RoZXIgc3RhdGUuIiwgZnVuY3Rpb24gKCkgeworICAg
IHRlc3RGdWxmaWxsZWQoZHVtbXksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAg
IHZhciBvbkZ1bGZpbGxlZENhbGxlZCA9IGZhbHNlOworCisgICAgICAgIHByb21pc2UudGhlbihm
dW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgIG9uRnVsZmlsbGVkQ2FsbGVkID0g
dHJ1ZTsKKyAgICAgICAgfSwgZnVuY3Rpb24gb25SZWplY3RlZCgpIHsKKyAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChvbkZ1bGZpbGxlZENhbGxlZCwgZmFsc2UpOworICAgICAgICAgICAg
ZG9uZSgpOworICAgICAgICB9KTsKKworICAgICAgICBzZXRUaW1lb3V0KGRvbmUsIDEwMCk7Cisg
ICAgfSk7CisKKyAgICBzcGVjaWZ5KCJ0cnlpbmcgdG8gZnVsZmlsbCB0aGVuIGltbWVkaWF0ZWx5
IHJlamVjdCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsK
KyAgICAgICAgdmFyIG9uRnVsZmlsbGVkQ2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgZC5wcm9t
aXNlLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxsZWQoKSB7CisgICAgICAgICAgICBvbkZ1bGZpbGxl
ZENhbGxlZCA9IHRydWU7CisgICAgICAgIH0sIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwob25GdWxmaWxsZWRDYWxsZWQsIGZhbHNlKTsKKyAg
ICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZC5yZXNvbHZlKGR1bW15
KTsKKyAgICAgICAgZC5yZWplY3QoZHVtbXkpOworICAgICAgICBzZXRUaW1lb3V0KGRvbmUsIDEw
MCk7CisgICAgfSk7CisKKyAgICBzcGVjaWZ5KCJ0cnlpbmcgdG8gZnVsZmlsbCB0aGVuIHJlamVj
dCwgZGVsYXllZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIHZhciBkID0gZGVmZXJyZWQo
KTsKKyAgICAgICAgdmFyIG9uRnVsZmlsbGVkQ2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgZC5w
cm9taXNlLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxsZWQoKSB7CisgICAgICAgICAgICBvbkZ1bGZp
bGxlZENhbGxlZCA9IHRydWU7CisgICAgICAgIH0sIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7Cisg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwob25GdWxmaWxsZWRDYWxsZWQsIGZhbHNlKTsK
KyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICBkLnJlc29sdmUoZHVtbXkpOworICAgICAgICAgICAg
ZC5yZWplY3QoZHVtbXkpOworICAgICAgICB9LCA1MCk7CisgICAgICAgIHNldFRpbWVvdXQoZG9u
ZSwgMTAwKTsKKyAgICB9KTsKKworICAgIHNwZWNpZnkoInRyeWluZyB0byBmdWxmaWxsIGltbWVk
aWF0ZWx5IHRoZW4gcmVqZWN0IGRlbGF5ZWQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICB2
YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgIHZhciBvbkZ1bGZpbGxlZENhbGxlZCA9IGZhbHNl
OworCisgICAgICAgIGQucHJvbWlzZS50aGVuKGZ1bmN0aW9uIG9uRnVsZmlsbGVkKCkgeworICAg
ICAgICAgICAgb25GdWxmaWxsZWRDYWxsZWQgPSB0cnVlOworICAgICAgICB9LCBmdW5jdGlvbiBv
blJlamVjdGVkKCkgeworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9uRnVsZmlsbGVk
Q2FsbGVkLCBmYWxzZSk7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0pOworCisgICAg
ICAgIGQucmVzb2x2ZShkdW1teSk7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgZC5yZWplY3QoZHVtbXkpOworICAgICAgICB9LCA1MCk7CisgICAgICAgIHNl
dFRpbWVvdXQoZG9uZSwgMTAwKTsKKyAgICB9KTsKK30pOworCit9KS5jYWxsKHRoaXMsdHlwZW9m
IGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gInVuZGVm
aW5lZCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgPyB3aW5kb3cgOiB7
fSkKK30seyIuL2hlbHBlcnMvdGVzdFRocmVlQ2FzZXMiOjIxLCJhc3NlcnQiOjF9XSw4OltmdW5j
dGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyhmdW5jdGlvbiAoZ2xvYmFsKXsKKyJ1c2Ug
c3RyaWN0IjsKKwordmFyIGFzc2VydCA9IHJlcXVpcmUoImFzc2VydCIpOwordmFyIHRlc3RSZWpl
Y3RlZCA9IHJlcXVpcmUoIi4vaGVscGVycy90ZXN0VGhyZWVDYXNlcyIpLnRlc3RSZWplY3RlZDsK
KwordmFyIGFkYXB0ZXIgPSBnbG9iYWwuYWRhcHRlcjsKK3ZhciBkZWZlcnJlZCA9IGFkYXB0ZXIu
ZGVmZXJyZWQ7CisKK3ZhciBkdW1teSA9IHsgZHVtbXk6ICJkdW1teSIgfTsgLy8gd2UgZnVsZmls
bCBvciByZWplY3Qgd2l0aCB0aGlzIHdoZW4gd2UgZG9uJ3QgaW50ZW5kIHRvIHRlc3QgYWdhaW5z
dCBpdAorCitkZXNjcmliZSgiMi4xLjMuMTogV2hlbiByZWplY3RlZCwgYSBwcm9taXNlOiBtdXN0
IG5vdCB0cmFuc2l0aW9uIHRvIGFueSBvdGhlciBzdGF0ZS4iLCBmdW5jdGlvbiAoKSB7CisgICAg
dGVzdFJlamVjdGVkKGR1bW15LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICB2
YXIgb25SZWplY3RlZENhbGxlZCA9IGZhbHNlOworCisgICAgICAgIHByb21pc2UudGhlbihmdW5j
dGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChvblJl
amVjdGVkQ2FsbGVkLCBmYWxzZSk7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0sIGZ1
bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICBvblJlamVjdGVkQ2FsbGVkID0gdHJ1
ZTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc2V0VGltZW91dChkb25lLCAxMDApOworICAgIH0p
OworCisgICAgc3BlY2lmeSgidHJ5aW5nIHRvIHJlamVjdCB0aGVuIGltbWVkaWF0ZWx5IGZ1bGZp
bGwiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAg
ICAgIHZhciBvblJlamVjdGVkQ2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgZC5wcm9taXNlLnRo
ZW4oZnVuY3Rpb24gb25GdWxmaWxsZWQoKSB7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwob25SZWplY3RlZENhbGxlZCwgZmFsc2UpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAg
ICB9LCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAgICAgICAgICAgb25SZWplY3RlZENhbGxl
ZCA9IHRydWU7CisgICAgICAgIH0pOworCisgICAgICAgIGQucmVqZWN0KGR1bW15KTsKKyAgICAg
ICAgZC5yZXNvbHZlKGR1bW15KTsKKyAgICAgICAgc2V0VGltZW91dChkb25lLCAxMDApOworICAg
IH0pOworCisgICAgc3BlY2lmeSgidHJ5aW5nIHRvIHJlamVjdCB0aGVuIGZ1bGZpbGwsIGRlbGF5
ZWQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAg
ICAgIHZhciBvblJlamVjdGVkQ2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgZC5wcm9taXNlLnRo
ZW4oZnVuY3Rpb24gb25GdWxmaWxsZWQoKSB7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwob25SZWplY3RlZENhbGxlZCwgZmFsc2UpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAg
ICB9LCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAgICAgICAgICAgb25SZWplY3RlZENhbGxl
ZCA9IHRydWU7CisgICAgICAgIH0pOworCisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgZC5yZWplY3QoZHVtbXkpOworICAgICAgICAgICAgZC5yZXNvbHZlKGR1
bW15KTsKKyAgICAgICAgfSwgNTApOworICAgICAgICBzZXRUaW1lb3V0KGRvbmUsIDEwMCk7Cisg
ICAgfSk7CisKKyAgICBzcGVjaWZ5KCJ0cnlpbmcgdG8gcmVqZWN0IGltbWVkaWF0ZWx5IHRoZW4g
ZnVsZmlsbCBkZWxheWVkIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgdmFyIGQgPSBkZWZl
cnJlZCgpOworICAgICAgICB2YXIgb25SZWplY3RlZENhbGxlZCA9IGZhbHNlOworCisgICAgICAg
IGQucHJvbWlzZS50aGVuKGZ1bmN0aW9uIG9uRnVsZmlsbGVkKCkgeworICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKG9uUmVqZWN0ZWRDYWxsZWQsIGZhbHNlKTsKKyAgICAgICAgICAgIGRv
bmUoKTsKKyAgICAgICAgfSwgZnVuY3Rpb24gb25SZWplY3RlZCgpIHsKKyAgICAgICAgICAgIG9u
UmVqZWN0ZWRDYWxsZWQgPSB0cnVlOworICAgICAgICB9KTsKKworICAgICAgICBkLnJlamVjdChk
dW1teSk7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZC5y
ZXNvbHZlKGR1bW15KTsKKyAgICAgICAgfSwgNTApOworICAgICAgICBzZXRUaW1lb3V0KGRvbmUs
IDEwMCk7CisgICAgfSk7Cit9KTsKKworfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09ICJ1
bmRlZmluZWQiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICJ1bmRlZmluZWQiID8gc2VsZiA6
IHR5cGVvZiB3aW5kb3cgIT09ICJ1bmRlZmluZWQiID8gd2luZG93IDoge30pCit9LHsiLi9oZWxw
ZXJzL3Rlc3RUaHJlZUNhc2VzIjoyMSwiYXNzZXJ0IjoxfV0sOTpbZnVuY3Rpb24ocmVxdWlyZSxt
b2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24gKGdsb2JhbCl7CisidXNlIHN0cmljdCI7CisKK3Zh
ciBhZGFwdGVyID0gZ2xvYmFsLmFkYXB0ZXI7Cit2YXIgcmVzb2x2ZWQgPSBhZGFwdGVyLnJlc29s
dmVkOwordmFyIHJlamVjdGVkID0gYWRhcHRlci5yZWplY3RlZDsKKwordmFyIGR1bW15ID0geyBk
dW1teTogImR1bW15IiB9OyAvLyB3ZSBmdWxmaWxsIG9yIHJlamVjdCB3aXRoIHRoaXMgd2hlbiB3
ZSBkb24ndCBpbnRlbmQgdG8gdGVzdCBhZ2FpbnN0IGl0CisKK2Rlc2NyaWJlKCIyLjIuMTogQm90
aCBgb25GdWxmaWxsZWRgIGFuZCBgb25SZWplY3RlZGAgYXJlIG9wdGlvbmFsIGFyZ3VtZW50cy4i
LCBmdW5jdGlvbiAoKSB7CisgICAgZGVzY3JpYmUoIjIuMi4xLjE6IElmIGBvbkZ1bGZpbGxlZGAg
aXMgbm90IGEgZnVuY3Rpb24sIGl0IG11c3QgYmUgaWdub3JlZC4iLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgIGRlc2NyaWJlKCJhcHBsaWVkIHRvIGEgZGlyZWN0bHktcmVqZWN0ZWQgcHJvbWlzZSIs
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3ROb25GdW5jdGlvbihub25G
dW5jdGlvbiwgc3RyaW5nUmVwcmVzZW50YXRpb24pIHsKKyAgICAgICAgICAgICAgICBzcGVjaWZ5
KCJgb25GdWxmaWxsZWRgIGlzICIgKyBzdHJpbmdSZXByZXNlbnRhdGlvbiwgZnVuY3Rpb24gKGRv
bmUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVqZWN0ZWQoZHVtbXkpLnRoZW4obm9uRnVuY3Rp
b24sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHRlc3ROb25GdW5jdGlvbih1bmRlZmluZWQsICJgdW5kZWZpbmVkYCIpOwor
ICAgICAgICAgICAgdGVzdE5vbkZ1bmN0aW9uKG51bGwsICJgbnVsbGAiKTsKKyAgICAgICAgICAg
IHRlc3ROb25GdW5jdGlvbihmYWxzZSwgImBmYWxzZWAiKTsKKyAgICAgICAgICAgIHRlc3ROb25G
dW5jdGlvbig1LCAiYDVgIik7CisgICAgICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24oe30sICJhbiBv
YmplY3QiKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3JpYmUoImFwcGxpZWQgdG8gYSBw
cm9taXNlIHJlamVjdGVkIGFuZCB0aGVuIGNoYWluZWQgb2ZmIG9mIiwgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgZnVuY3Rpb24gdGVzdE5vbkZ1bmN0aW9uKG5vbkZ1bmN0aW9uLCBzdHJpbmdS
ZXByZXNlbnRhdGlvbikgeworICAgICAgICAgICAgICAgIHNwZWNpZnkoImBvbkZ1bGZpbGxlZGAg
aXMgIiArIHN0cmluZ1JlcHJlc2VudGF0aW9uLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAg
ICAgICAgICAgICByZWplY3RlZChkdW1teSkudGhlbihmdW5jdGlvbiAoKSB7IH0sIHVuZGVmaW5l
ZCkudGhlbihub25GdW5jdGlvbiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGVzdE5vbkZ1bmN0aW9uKHVuZGVmaW5lZCwg
ImB1bmRlZmluZWRgIik7CisgICAgICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24obnVsbCwgImBudWxs
YCIpOworICAgICAgICAgICAgdGVzdE5vbkZ1bmN0aW9uKGZhbHNlLCAiYGZhbHNlYCIpOworICAg
ICAgICAgICAgdGVzdE5vbkZ1bmN0aW9uKDUsICJgNWAiKTsKKyAgICAgICAgICAgIHRlc3ROb25G
dW5jdGlvbih7fSwgImFuIG9iamVjdCIpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRl
c2NyaWJlKCIyLjIuMS4yOiBJZiBgb25SZWplY3RlZGAgaXMgbm90IGEgZnVuY3Rpb24sIGl0IG11
c3QgYmUgaWdub3JlZC4iLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRlc2NyaWJlKCJhcHBsaWVk
IHRvIGEgZGlyZWN0bHktZnVsZmlsbGVkIHByb21pc2UiLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICBmdW5jdGlvbiB0ZXN0Tm9uRnVuY3Rpb24obm9uRnVuY3Rpb24sIHN0cmluZ1JlcHJlc2Vu
dGF0aW9uKSB7CisgICAgICAgICAgICAgICAgc3BlY2lmeSgiYG9uUmVqZWN0ZWRgIGlzICIgKyBz
dHJpbmdSZXByZXNlbnRhdGlvbiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmVzb2x2ZWQoZHVtbXkpLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9LCBub25GdW5jdGlvbik7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRlc3ROb25GdW5j
dGlvbih1bmRlZmluZWQsICJgdW5kZWZpbmVkYCIpOworICAgICAgICAgICAgdGVzdE5vbkZ1bmN0
aW9uKG51bGwsICJgbnVsbGAiKTsKKyAgICAgICAgICAgIHRlc3ROb25GdW5jdGlvbihmYWxzZSwg
ImBmYWxzZWAiKTsKKyAgICAgICAgICAgIHRlc3ROb25GdW5jdGlvbig1LCAiYDVgIik7CisgICAg
ICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24oe30sICJhbiBvYmplY3QiKTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgZGVzY3JpYmUoImFwcGxpZWQgdG8gYSBwcm9taXNlIGZ1bGZpbGxlZCBhbmQgdGhl
biBjaGFpbmVkIG9mZiBvZiIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRl
c3ROb25GdW5jdGlvbihub25GdW5jdGlvbiwgc3RyaW5nUmVwcmVzZW50YXRpb24pIHsKKyAgICAg
ICAgICAgICAgICBzcGVjaWZ5KCJgb25GdWxmaWxsZWRgIGlzICIgKyBzdHJpbmdSZXByZXNlbnRh
dGlvbiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWQoZHVt
bXkpLnRoZW4odW5kZWZpbmVkLCBmdW5jdGlvbiAoKSB7IH0pLnRoZW4oZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9LCBu
b25GdW5jdGlvbik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHRlc3ROb25GdW5jdGlvbih1bmRlZmluZWQsICJgdW5kZWZpbmVkYCIpOworICAgICAg
ICAgICAgdGVzdE5vbkZ1bmN0aW9uKG51bGwsICJgbnVsbGAiKTsKKyAgICAgICAgICAgIHRlc3RO
b25GdW5jdGlvbihmYWxzZSwgImBmYWxzZWAiKTsKKyAgICAgICAgICAgIHRlc3ROb25GdW5jdGlv
big1LCAiYDVgIik7CisgICAgICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24oe30sICJhbiBvYmplY3Qi
KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9KTsKKworfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9i
YWwgIT09ICJ1bmRlZmluZWQiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICJ1bmRlZmluZWQi
ID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09ICJ1bmRlZmluZWQiID8gd2luZG93IDoge30pCit9
LHt9XSwxMDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24gKGds
b2JhbCl7CisidXNlIHN0cmljdCI7CisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCJhc3NlcnQiKTsK
K3ZhciB0ZXN0RnVsZmlsbGVkID0gcmVxdWlyZSgiLi9oZWxwZXJzL3Rlc3RUaHJlZUNhc2VzIiku
dGVzdEZ1bGZpbGxlZDsKKwordmFyIGFkYXB0ZXIgPSBnbG9iYWwuYWRhcHRlcjsKK3ZhciByZXNv
bHZlZCA9IGFkYXB0ZXIucmVzb2x2ZWQ7Cit2YXIgZGVmZXJyZWQgPSBhZGFwdGVyLmRlZmVycmVk
OworCit2YXIgZHVtbXkgPSB7IGR1bW15OiAiZHVtbXkiIH07IC8vIHdlIGZ1bGZpbGwgb3IgcmVq
ZWN0IHdpdGggdGhpcyB3aGVuIHdlIGRvbid0IGludGVuZCB0byB0ZXN0IGFnYWluc3QgaXQKK3Zh
ciBzZW50aW5lbCA9IHsgc2VudGluZWw6ICJzZW50aW5lbCIgfTsgLy8gYSBzZW50aW5lbCBmdWxm
aWxsbWVudCB2YWx1ZSB0byB0ZXN0IGZvciB3aXRoIHN0cmljdCBlcXVhbGl0eQorCitkZXNjcmli
ZSgiMi4yLjI6IElmIGBvbkZ1bGZpbGxlZGAgaXMgYSBmdW5jdGlvbiwiLCBmdW5jdGlvbiAoKSB7
CisgICAgZGVzY3JpYmUoIjIuMi4yLjE6IGl0IG11c3QgYmUgY2FsbGVkIGFmdGVyIGBwcm9taXNl
YCBpcyBmdWxmaWxsZWQsIHdpdGggYHByb21pc2Vg4oCZcyBmdWxmaWxsbWVudCB2YWx1ZSBhcyBp
dHMgIiArCisgICAgICAgICAgICAgImZpcnN0IGFyZ3VtZW50LiIsIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgdGVzdEZ1bGZpbGxlZChzZW50aW5lbCwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsK
KyAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCh2YWx1ZSkgewor
ICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWx1ZSwgc2VudGluZWwpOworICAg
ICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9
KTsKKworICAgIGRlc2NyaWJlKCIyLjIuMi4yOiBpdCBtdXN0IG5vdCBiZSBjYWxsZWQgYmVmb3Jl
IGBwcm9taXNlYCBpcyBmdWxmaWxsZWQiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHNwZWNpZnko
ImZ1bGZpbGxlZCBhZnRlciBhIGRlbGF5IiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAg
IHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgICAgIHZhciBpc0Z1bGZpbGxlZCA9IGZhbHNl
OworCisgICAgICAgICAgICBkLnByb21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsK
KyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNGdWxmaWxsZWQsIHRydWUpOwor
ICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBkLnJlc29sdmUoZHVtbXkp
OworICAgICAgICAgICAgICAgIGlzRnVsZmlsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0sIDUw
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc3BlY2lmeSgibmV2ZXIgZnVsZmlsbGVkIiwgZnVu
Y3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAg
ICAgIHZhciBvbkZ1bGZpbGxlZENhbGxlZCA9IGZhbHNlOworCisgICAgICAgICAgICBkLnByb21p
c2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgICAgICBvbkZ1bGZp
bGxlZENhbGxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChvbkZ1bGZpbGxlZENhbGxlZCwgZmFsc2UpOworICAgICAg
ICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0sIDE1MCk7CisgICAgICAgIH0pOworICAg
IH0pOworCisgICAgZGVzY3JpYmUoIjIuMi4yLjM6IGl0IG11c3Qgbm90IGJlIGNhbGxlZCBtb3Jl
IHRoYW4gb25jZS4iLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHNwZWNpZnkoImFscmVhZHktZnVs
ZmlsbGVkIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgIHZhciB0aW1lc0NhbGxlZCA9
IDA7CisKKyAgICAgICAgICAgIHJlc29sdmVkKGR1bW15KS50aGVuKGZ1bmN0aW9uIG9uRnVsZmls
bGVkKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVk
LCAxKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgc3BlY2lmeSgidHJ5aW5nIHRvIGZ1bGZpbGwgYSBwZW5kaW5nIHByb21p
c2UgbW9yZSB0aGFuIG9uY2UsIGltbWVkaWF0ZWx5IiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAg
ICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgICAgIHZhciB0aW1lc0NhbGxlZCA9
IDA7CisKKyAgICAgICAgICAgIGQucHJvbWlzZS50aGVuKGZ1bmN0aW9uIG9uRnVsZmlsbGVkKCkg
eworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkLCAxKTsK
KyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
ZC5yZXNvbHZlKGR1bW15KTsKKyAgICAgICAgICAgIGQucmVzb2x2ZShkdW1teSk7CisgICAgICAg
IH0pOworCisgICAgICAgIHNwZWNpZnkoInRyeWluZyB0byBmdWxmaWxsIGEgcGVuZGluZyBwcm9t
aXNlIG1vcmUgdGhhbiBvbmNlLCBkZWxheWVkIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAg
ICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgICAgIHZhciB0aW1lc0NhbGxlZCA9IDA7
CisKKyAgICAgICAgICAgIGQucHJvbWlzZS50aGVuKGZ1bmN0aW9uIG9uRnVsZmlsbGVkKCkgewor
ICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkLCAxKTsKKyAg
ICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZC5yZXNvbHZlKGR1bW15KTsK
KyAgICAgICAgICAgICAgICBkLnJlc29sdmUoZHVtbXkpOworICAgICAgICAgICAgfSwgNTApOwor
ICAgICAgICB9KTsKKworICAgICAgICBzcGVjaWZ5KCJ0cnlpbmcgdG8gZnVsZmlsbCBhIHBlbmRp
bmcgcHJvbWlzZSBtb3JlIHRoYW4gb25jZSwgaW1tZWRpYXRlbHkgdGhlbiBkZWxheWVkIiwgZnVu
Y3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAg
ICAgIHZhciB0aW1lc0NhbGxlZCA9IDA7CisKKyAgICAgICAgICAgIGQucHJvbWlzZS50aGVuKGZ1
bmN0aW9uIG9uRnVsZmlsbGVkKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bCgrK3RpbWVzQ2FsbGVkLCAxKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgZC5yZXNvbHZlKGR1bW15KTsKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGQucmVzb2x2ZShkdW1teSk7Cisg
ICAgICAgICAgICB9LCA1MCk7CisgICAgICAgIH0pOworCisgICAgICAgIHNwZWNpZnkoIndoZW4g
bXVsdGlwbGUgYHRoZW5gIGNhbGxzIGFyZSBtYWRlLCBzcGFjZWQgYXBhcnQgaW4gdGltZSIsIGZ1
bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAg
ICAgICB2YXIgdGltZXNDYWxsZWQgPSBbMCwgMCwgMF07CisKKyAgICAgICAgICAgIGQucHJvbWlz
ZS50aGVuKGZ1bmN0aW9uIG9uRnVsZmlsbGVkKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkWzBdLCAxKTsKKyAgICAgICAgICAgIH0pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBkLnByb21p
c2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKCsrdGltZXNDYWxsZWRbMV0sIDEpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSwgNTApOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICBkLnByb21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxl
ZCgpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCsrdGltZXNDYWxs
ZWRbMl0sIDEpOworICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9LCAxMDApOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICBkLnJlc29sdmUoZHVtbXkpOworICAgICAgICAgICAg
fSwgMTUwKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc3BlY2lmeSgid2hlbiBgdGhlbmAgaXMg
aW50ZXJsZWF2ZWQgd2l0aCBmdWxmaWxsbWVudCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAg
ICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICB2YXIgdGltZXNDYWxsZWQgPSBb
MCwgMF07CisKKyAgICAgICAgICAgIGQucHJvbWlzZS50aGVuKGZ1bmN0aW9uIG9uRnVsZmlsbGVk
KCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkWzBd
LCAxKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBkLnJlc29sdmUoZHVtbXkpOwor
CisgICAgICAgICAgICBkLnByb21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAg
ICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoKyt0aW1lc0NhbGxlZFsxXSwgMSk7Cisg
ICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAg
IH0pOworfSk7CisKK30pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSAidW5kZWZpbmVkIiA/
IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSAidW5kZWZpbmVkIiA/IHNlbGYgOiB0eXBlb2Ygd2lu
ZG93ICE9PSAidW5kZWZpbmVkIiA/IHdpbmRvdyA6IHt9KQorfSx7Ii4vaGVscGVycy90ZXN0VGhy
ZWVDYXNlcyI6MjEsImFzc2VydCI6MX1dLDExOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBv
cnRzKXsKKyhmdW5jdGlvbiAoZ2xvYmFsKXsKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIGFzc2VydCA9
IHJlcXVpcmUoImFzc2VydCIpOwordmFyIHRlc3RSZWplY3RlZCA9IHJlcXVpcmUoIi4vaGVscGVy
cy90ZXN0VGhyZWVDYXNlcyIpLnRlc3RSZWplY3RlZDsKKwordmFyIGFkYXB0ZXIgPSBnbG9iYWwu
YWRhcHRlcjsKK3ZhciByZWplY3RlZCA9IGFkYXB0ZXIucmVqZWN0ZWQ7Cit2YXIgZGVmZXJyZWQg
PSBhZGFwdGVyLmRlZmVycmVkOworCit2YXIgZHVtbXkgPSB7IGR1bW15OiAiZHVtbXkiIH07IC8v
IHdlIGZ1bGZpbGwgb3IgcmVqZWN0IHdpdGggdGhpcyB3aGVuIHdlIGRvbid0IGludGVuZCB0byB0
ZXN0IGFnYWluc3QgaXQKK3ZhciBzZW50aW5lbCA9IHsgc2VudGluZWw6ICJzZW50aW5lbCIgfTsg
Ly8gYSBzZW50aW5lbCBmdWxmaWxsbWVudCB2YWx1ZSB0byB0ZXN0IGZvciB3aXRoIHN0cmljdCBl
cXVhbGl0eQorCitkZXNjcmliZSgiMi4yLjM6IElmIGBvblJlamVjdGVkYCBpcyBhIGZ1bmN0aW9u
LCIsIGZ1bmN0aW9uICgpIHsKKyAgICBkZXNjcmliZSgiMi4yLjMuMTogaXQgbXVzdCBiZSBjYWxs
ZWQgYWZ0ZXIgYHByb21pc2VgIGlzIHJlamVjdGVkLCB3aXRoIGBwcm9taXNlYOKAmXMgcmVqZWN0
aW9uIHJlYXNvbiBhcyBpdHMgIiArCisgICAgICAgICAgICAgImZpcnN0IGFyZ3VtZW50LiIsIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgdGVzdFJlamVjdGVkKHNlbnRpbmVsLCBmdW5jdGlvbiAocHJv
bWlzZSwgZG9uZSkgeworICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIG9u
UmVqZWN0ZWQocmVhc29uKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJl
YXNvbiwgc2VudGluZWwpOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCIyLjIuMy4yOiBpdCBtdXN0
IG5vdCBiZSBjYWxsZWQgYmVmb3JlIGBwcm9taXNlYCBpcyByZWplY3RlZCIsIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgc3BlY2lmeSgicmVqZWN0ZWQgYWZ0ZXIgYSBkZWxheSIsIGZ1bmN0aW9uIChk
b25lKSB7CisgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICB2YXIg
aXNSZWplY3RlZCA9IGZhbHNlOworCisgICAgICAgICAgICBkLnByb21pc2UudGhlbihudWxsLCBm
dW5jdGlvbiBvblJlamVjdGVkKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChpc1JlamVjdGVkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgZC5yZWplY3QoZHVtbXkpOworICAgICAgICAgICAgICAgIGlzUmVqZWN0ZWQgPSB0cnVl
OworICAgICAgICAgICAgfSwgNTApOworICAgICAgICB9KTsKKworICAgICAgICBzcGVjaWZ5KCJu
ZXZlciByZWplY3RlZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICB2YXIgZCA9IGRl
ZmVycmVkKCk7CisgICAgICAgICAgICB2YXIgb25SZWplY3RlZENhbGxlZCA9IGZhbHNlOworCisg
ICAgICAgICAgICBkLnByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBvblJlamVjdGVkKCkgewor
ICAgICAgICAgICAgICAgIG9uUmVqZWN0ZWRDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgICAg
IGRvbmUoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwob25SZWplY3RlZENh
bGxlZCwgZmFsc2UpOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0sIDE1
MCk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoIjIuMi4zLjM6IGl0IG11
c3Qgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZS4iLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
IHNwZWNpZnkoImFscmVhZHktcmVqZWN0ZWQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAg
ICAgdmFyIHRpbWVzQ2FsbGVkID0gMDsKKworICAgICAgICAgICAgcmVqZWN0ZWQoZHVtbXkpLnRo
ZW4obnVsbCwgZnVuY3Rpb24gb25SZWplY3RlZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoKyt0aW1lc0NhbGxlZCwgMSk7CisgICAgICAgICAgICAgICAgZG9uZSgpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIHNwZWNpZnkoInRyeWluZyB0
byByZWplY3QgYSBwZW5kaW5nIHByb21pc2UgbW9yZSB0aGFuIG9uY2UsIGltbWVkaWF0ZWx5Iiwg
ZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAg
ICAgICAgIHZhciB0aW1lc0NhbGxlZCA9IDA7CisKKyAgICAgICAgICAgIGQucHJvbWlzZS50aGVu
KG51bGwsIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKCsrdGltZXNDYWxsZWQsIDEpOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICBkLnJlamVjdChkdW1teSk7CisgICAgICAgICAg
ICBkLnJlamVjdChkdW1teSk7CisgICAgICAgIH0pOworCisgICAgICAgIHNwZWNpZnkoInRyeWlu
ZyB0byByZWplY3QgYSBwZW5kaW5nIHByb21pc2UgbW9yZSB0aGFuIG9uY2UsIGRlbGF5ZWQiLCBm
dW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAg
ICAgICAgdmFyIHRpbWVzQ2FsbGVkID0gMDsKKworICAgICAgICAgICAgZC5wcm9taXNlLnRoZW4o
bnVsbCwgZnVuY3Rpb24gb25SZWplY3RlZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoKyt0aW1lc0NhbGxlZCwgMSk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgIGQucmVqZWN0KGR1bW15KTsKKyAgICAgICAgICAgICAgICBkLnJlamVjdChk
dW1teSk7CisgICAgICAgICAgICB9LCA1MCk7CisgICAgICAgIH0pOworCisgICAgICAgIHNwZWNp
ZnkoInRyeWluZyB0byByZWplY3QgYSBwZW5kaW5nIHByb21pc2UgbW9yZSB0aGFuIG9uY2UsIGlt
bWVkaWF0ZWx5IHRoZW4gZGVsYXllZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICB2
YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICB2YXIgdGltZXNDYWxsZWQgPSAwOworCisg
ICAgICAgICAgICBkLnByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBvblJlamVjdGVkKCkgewor
ICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkLCAxKTsKKyAg
ICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZC5y
ZWplY3QoZHVtbXkpOworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgZC5yZWplY3QoZHVtbXkpOworICAgICAgICAgICAgfSwgNTApOworICAgICAg
ICB9KTsKKworICAgICAgICBzcGVjaWZ5KCJ3aGVuIG11bHRpcGxlIGB0aGVuYCBjYWxscyBhcmUg
bWFkZSwgc3BhY2VkIGFwYXJ0IGluIHRpbWUiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAg
ICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAgICAgdmFyIHRpbWVzQ2FsbGVkID0gWzAs
IDAsIDBdOworCisgICAgICAgICAgICBkLnByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBvblJl
amVjdGVkKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2Fs
bGVkWzBdLCAxKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBkLnByb21pc2UudGhlbihudWxsLCBmdW5jdGlv
biBvblJlamVjdGVkKCkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
Kyt0aW1lc0NhbGxlZFsxXSwgMSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
LCA1MCk7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgIGQucHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAg
ICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkWzJdLCAxKTsK
KyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfSwgMTAwKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgZC5yZWplY3QoZHVtbXkpOworICAgICAgICAgICAgfSwgMTUwKTsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgc3BlY2lmeSgid2hlbiBgdGhlbmAgaXMgaW50ZXJsZWF2ZWQg
d2l0aCByZWplY3Rpb24iLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFyIGQgPSBk
ZWZlcnJlZCgpOworICAgICAgICAgICAgdmFyIHRpbWVzQ2FsbGVkID0gWzAsIDBdOworCisgICAg
ICAgICAgICBkLnByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAg
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkWzBdLCAxKTsKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICBkLnJlamVjdChkdW1teSk7CisKKyAgICAgICAg
ICAgIGQucHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCsrdGltZXNDYWxsZWRbMV0sIDEpOworICAgICAg
ICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsK
K30pOworCit9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgPyBnbG9i
YWwgOiB0eXBlb2Ygc2VsZiAhPT0gInVuZGVmaW5lZCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAh
PT0gInVuZGVmaW5lZCIgPyB3aW5kb3cgOiB7fSkKK30seyIuL2hlbHBlcnMvdGVzdFRocmVlQ2Fz
ZXMiOjIxLCJhc3NlcnQiOjF9XSwxMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7
CisoZnVuY3Rpb24gKGdsb2JhbCl7CisidXNlIHN0cmljdCI7CisKK3ZhciBhc3NlcnQgPSByZXF1
aXJlKCJhc3NlcnQiKTsKK3ZhciB0ZXN0RnVsZmlsbGVkID0gcmVxdWlyZSgiLi9oZWxwZXJzL3Rl
c3RUaHJlZUNhc2VzIikudGVzdEZ1bGZpbGxlZDsKK3ZhciB0ZXN0UmVqZWN0ZWQgPSByZXF1aXJl
KCIuL2hlbHBlcnMvdGVzdFRocmVlQ2FzZXMiKS50ZXN0UmVqZWN0ZWQ7CisKK3ZhciBhZGFwdGVy
ID0gZ2xvYmFsLmFkYXB0ZXI7Cit2YXIgcmVzb2x2ZWQgPSBhZGFwdGVyLnJlc29sdmVkOwordmFy
IHJlamVjdGVkID0gYWRhcHRlci5yZWplY3RlZDsKK3ZhciBkZWZlcnJlZCA9IGFkYXB0ZXIuZGVm
ZXJyZWQ7CisKK3ZhciBkdW1teSA9IHsgZHVtbXk6ICJkdW1teSIgfTsgLy8gd2UgZnVsZmlsbCBv
ciByZWplY3Qgd2l0aCB0aGlzIHdoZW4gd2UgZG9uJ3QgaW50ZW5kIHRvIHRlc3QgYWdhaW5zdCBp
dAorCitkZXNjcmliZSgiMi4yLjQ6IGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIG11c3Qg
bm90IGJlIGNhbGxlZCB1bnRpbCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgc3RhY2sgY29udGFpbnMg
b25seSAiICsKKyAgICAgICAgICJwbGF0Zm9ybSBjb2RlLiIsIGZ1bmN0aW9uICgpIHsKKyAgICBk
ZXNjcmliZSgiYHRoZW5gIHJldHVybnMgYmVmb3JlIHRoZSBwcm9taXNlIGJlY29tZXMgZnVsZmls
bGVkIG9yIHJlamVjdGVkIiwgZnVuY3Rpb24gKCkgeworICAgICAgICB0ZXN0RnVsZmlsbGVkKGR1
bW15LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgdmFyIHRoZW5IYXNS
ZXR1cm5lZCA9IGZhbHNlOworCisgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gb25G
dWxmaWxsZWQoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRoZW5IYXNS
ZXR1cm5lZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgIHRoZW5IYXNSZXR1cm5lZCA9IHRydWU7CisgICAgICAgIH0pOworICAg
ICAgICB0ZXN0UmVqZWN0ZWQoZHVtbXksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAg
ICAgICAgICB2YXIgdGhlbkhhc1JldHVybmVkID0gZmFsc2U7CisKKyAgICAgICAgICAgIHByb21p
c2UudGhlbihudWxsLCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAgICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbCh0aGVuSGFzUmV0dXJuZWQsIHRydWUpOworICAgICAgICAgICAgICAg
IGRvbmUoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICB0aGVuSGFzUmV0dXJuZWQg
PSB0cnVlOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCJDbGVhbi1zdGFj
ayBleGVjdXRpb24gb3JkZXJpbmcgdGVzdHMgKGZ1bGZpbGxtZW50IGNhc2UpIiwgZnVuY3Rpb24g
KCkgeworICAgICAgICBzcGVjaWZ5KCJ3aGVuIGBvbkZ1bGZpbGxlZGAgaXMgYWRkZWQgaW1tZWRp
YXRlbHkgYmVmb3JlIHRoZSBwcm9taXNlIGlzIGZ1bGZpbGxlZCIsCisgICAgICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAg
ICAgdmFyIG9uRnVsZmlsbGVkQ2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgICAgIGQucHJvbWlz
ZS50aGVuKGZ1bmN0aW9uIG9uRnVsZmlsbGVkKCkgeworICAgICAgICAgICAgICAgIG9uRnVsZmls
bGVkQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBkLnJlc29s
dmUoZHVtbXkpOworCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwob25GdWxmaWxsZWRD
YWxsZWQsIGZhbHNlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc3BlY2lmeSgid2hlbiBgb25G
dWxmaWxsZWRgIGlzIGFkZGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBwcm9taXNlIGlzIGZ1bGZp
bGxlZCIsCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdmFyIGQg
PSBkZWZlcnJlZCgpOworICAgICAgICAgICAgdmFyIG9uRnVsZmlsbGVkQ2FsbGVkID0gZmFsc2U7
CisKKyAgICAgICAgICAgIGQucmVzb2x2ZShkdW1teSk7CisKKyAgICAgICAgICAgIGQucHJvbWlz
ZS50aGVuKGZ1bmN0aW9uIG9uRnVsZmlsbGVkKCkgeworICAgICAgICAgICAgICAgIG9uRnVsZmls
bGVkQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwob25GdWxmaWxsZWRDYWxsZWQsIGZhbHNlKTsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgc3BlY2lmeSgid2hlbiBvbmUgYG9uRnVsZmlsbGVkYCBpcyBhZGRlZCBpbnNpZGUgYW5v
dGhlciBgb25GdWxmaWxsZWRgIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgIHZhciBw
cm9taXNlID0gcmVzb2x2ZWQoKTsKKyAgICAgICAgICAgIHZhciBmaXJzdE9uRnVsZmlsbGVkRmlu
aXNoZWQgPSBmYWxzZTsKKworICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZmlyc3RPbkZ1bGZpbGxlZEZpbmlzaGVkLCB0cnVl
KTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgICAgIGZpcnN0T25GdWxmaWxsZWRGaW5pc2hlZCA9IHRydWU7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc3BlY2lmeSgid2hlbiBgb25GdWxmaWxsZWRg
IGlzIGFkZGVkIGluc2lkZSBhbiBgb25SZWplY3RlZGAiLCBmdW5jdGlvbiAoZG9uZSkgeworICAg
ICAgICAgICAgdmFyIHByb21pc2UgPSByZWplY3RlZCgpOworICAgICAgICAgICAgdmFyIHByb21p
c2UyID0gcmVzb2x2ZWQoKTsKKyAgICAgICAgICAgIHZhciBmaXJzdE9uUmVqZWN0ZWRGaW5pc2hl
ZCA9IGZhbHNlOworCisgICAgICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgIHByb21pc2UyLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZmlyc3RPblJlamVjdGVkRmluaXNoZWQsIHRy
dWUpOworICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICAgICAgZmlyc3RPblJlamVjdGVkRmluaXNoZWQgPSB0cnVlOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIHNwZWNpZnkoIndoZW4gdGhlIHByb21pc2Ug
aXMgZnVsZmlsbGVkIGFzeW5jaHJvbm91c2x5IiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAg
ICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgICAgIHZhciBmaXJzdFN0YWNrRmluaXNo
ZWQgPSBmYWxzZTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgZC5yZXNvbHZlKGR1bW15KTsKKyAgICAgICAgICAgICAgICBmaXJzdFN0YWNr
RmluaXNoZWQgPSB0cnVlOworICAgICAgICAgICAgfSwgMCk7CisKKyAgICAgICAgICAgIGQucHJv
bWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZmlyc3RTdGFja0ZpbmlzaGVkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgiQ2xl
YW4tc3RhY2sgZXhlY3V0aW9uIG9yZGVyaW5nIHRlc3RzIChyZWplY3Rpb24gY2FzZSkiLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgIHNwZWNpZnkoIndoZW4gYG9uUmVqZWN0ZWRgIGlzIGFkZGVkIGlt
bWVkaWF0ZWx5IGJlZm9yZSB0aGUgcHJvbWlzZSBpcyByZWplY3RlZCIsCisgICAgICAgICAgICAg
ICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAg
ICAgICAgdmFyIG9uUmVqZWN0ZWRDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICAgICAgZC5wcm9t
aXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gb25SZWplY3RlZCgpIHsKKyAgICAgICAgICAgICAgICBv
blJlamVjdGVkQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBk
LnJlamVjdChkdW1teSk7CisKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChvblJlamVj
dGVkQ2FsbGVkLCBmYWxzZSk7CisgICAgICAgIH0pOworCisgICAgICAgIHNwZWNpZnkoIndoZW4g
YG9uUmVqZWN0ZWRgIGlzIGFkZGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBwcm9taXNlIGlzIHJl
amVjdGVkIiwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIg
ZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICB2YXIgb25SZWplY3RlZENhbGxlZCA9IGZhbHNl
OworCisgICAgICAgICAgICBkLnJlamVjdChkdW1teSk7CisKKyAgICAgICAgICAgIGQucHJvbWlz
ZS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICAgICAgb25S
ZWplY3RlZENhbGxlZCA9IHRydWU7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKG9uUmVqZWN0ZWRDYWxsZWQsIGZhbHNlKTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgc3BlY2lmeSgid2hlbiBgb25SZWplY3RlZGAgaXMgYWRkZWQgaW5zaWRlIGFuIGBv
bkZ1bGZpbGxlZGAiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFyIHByb21pc2Ug
PSByZXNvbHZlZCgpOworICAgICAgICAgICAgdmFyIHByb21pc2UyID0gcmVqZWN0ZWQoKTsKKyAg
ICAgICAgICAgIHZhciBmaXJzdE9uRnVsZmlsbGVkRmluaXNoZWQgPSBmYWxzZTsKKworICAgICAg
ICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBwcm9taXNl
Mi50aGVuKG51bGwsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKGZpcnN0T25GdWxmaWxsZWRGaW5pc2hlZCwgdHJ1ZSk7CisgICAgICAgICAgICAg
ICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBmaXJz
dE9uRnVsZmlsbGVkRmluaXNoZWQgPSB0cnVlOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OworCisgICAgICAgIHNwZWNpZnkoIndoZW4gb25lIGBvblJlamVjdGVkYCBpcyBhZGRlZCBpbnNp
ZGUgYW5vdGhlciBgb25SZWplY3RlZGAiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAg
dmFyIHByb21pc2UgPSByZWplY3RlZCgpOworICAgICAgICAgICAgdmFyIGZpcnN0T25SZWplY3Rl
ZEZpbmlzaGVkID0gZmFsc2U7CisKKyAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGZpcnN0T25SZWplY3Rl
ZEZpbmlzaGVkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIGZpcnN0T25SZWplY3RlZEZpbmlzaGVkID0gdHJ1
ZTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBzcGVjaWZ5KCJ3aGVu
IHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIGFzeW5jaHJvbm91c2x5IiwgZnVuY3Rpb24gKGRvbmUp
IHsKKyAgICAgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgICAgIHZhciBmaXJz
dFN0YWNrRmluaXNoZWQgPSBmYWxzZTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgZC5yZWplY3QoZHVtbXkpOworICAgICAgICAgICAgICAg
IGZpcnN0U3RhY2tGaW5pc2hlZCA9IHRydWU7CisgICAgICAgICAgICB9LCAwKTsKKworICAgICAg
ICAgICAgZC5wcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChmaXJzdFN0YWNrRmluaXNoZWQsIHRydWUpOworICAgICAgICAg
ICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30p
OworCit9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgPyBnbG9iYWwg
OiB0eXBlb2Ygc2VsZiAhPT0gInVuZGVmaW5lZCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0g
InVuZGVmaW5lZCIgPyB3aW5kb3cgOiB7fSkKK30seyIuL2hlbHBlcnMvdGVzdFRocmVlQ2FzZXMi
OjIxLCJhc3NlcnQiOjF9XSwxMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ciso
ZnVuY3Rpb24gKGdsb2JhbCl7CisvKmpzaGludCBzdHJpY3Q6IGZhbHNlICovCisKK3ZhciBhc3Nl
cnQgPSByZXF1aXJlKCJhc3NlcnQiKTsKKwordmFyIGFkYXB0ZXIgPSBnbG9iYWwuYWRhcHRlcjsK
K3ZhciByZXNvbHZlZCA9IGFkYXB0ZXIucmVzb2x2ZWQ7Cit2YXIgcmVqZWN0ZWQgPSBhZGFwdGVy
LnJlamVjdGVkOworCit2YXIgZHVtbXkgPSB7IGR1bW15OiAiZHVtbXkiIH07IC8vIHdlIGZ1bGZp
bGwgb3IgcmVqZWN0IHdpdGggdGhpcyB3aGVuIHdlIGRvbid0IGludGVuZCB0byB0ZXN0IGFnYWlu
c3QgaXQKKworZGVzY3JpYmUoIjIuMi41IGBvbkZ1bGZpbGxlZGAgYW5kIGBvblJlamVjdGVkYCBt
dXN0IGJlIGNhbGxlZCBhcyBmdW5jdGlvbnMgKGkuZS4gd2l0aCBubyBgdGhpc2AgdmFsdWUpLiIs
IGZ1bmN0aW9uICgpIHsKKyAgICBkZXNjcmliZSgic3RyaWN0IG1vZGUiLCBmdW5jdGlvbiAoKSB7
CisgICAgICAgIHNwZWNpZnkoImZ1bGZpbGxlZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAg
ICAgICByZXNvbHZlZChkdW1teSkudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAg
ICAgICAgICAgICAidXNlIHN0cmljdCI7CisKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwodGhpcywgdW5kZWZpbmVkKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc3BlY2lmeSgicmVqZWN0ZWQiLCBmdW5j
dGlvbiAoZG9uZSkgeworICAgICAgICAgICAgcmVqZWN0ZWQoZHVtbXkpLnRoZW4obnVsbCwgZnVu
Y3Rpb24gb25SZWplY3RlZCgpIHsKKyAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CisKKyAg
ICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGhpcywgdW5kZWZpbmVkKTsKKyAgICAg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7
CisKKyAgICBkZXNjcmliZSgic2xvcHB5IG1vZGUiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHNw
ZWNpZnkoImZ1bGZpbGxlZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICByZXNvbHZl
ZChkdW1teSkudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwodGhpcywgZ2xvYmFsKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc3BlY2lmeSgicmVqZWN0
ZWQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgcmVqZWN0ZWQoZHVtbXkpLnRoZW4o
bnVsbCwgZnVuY3Rpb24gb25SZWplY3RlZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwodGhpcywgZ2xvYmFsKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9KTsKKworfSkuY2FsbCh0aGlzLHR5cGVv
ZiBnbG9iYWwgIT09ICJ1bmRlZmluZWQiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICJ1bmRl
ZmluZWQiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09ICJ1bmRlZmluZWQiID8gd2luZG93IDog
e30pCit9LHsiYXNzZXJ0IjoxfV0sMTQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMp
eworInVzZSBzdHJpY3QiOworCit2YXIgYXNzZXJ0ID0gcmVxdWlyZSgiYXNzZXJ0Iik7Cit2YXIg
c2lub24gPSByZXF1aXJlKCJzaW5vbiIpOwordmFyIHRlc3RGdWxmaWxsZWQgPSByZXF1aXJlKCIu
L2hlbHBlcnMvdGVzdFRocmVlQ2FzZXMiKS50ZXN0RnVsZmlsbGVkOwordmFyIHRlc3RSZWplY3Rl
ZCA9IHJlcXVpcmUoIi4vaGVscGVycy90ZXN0VGhyZWVDYXNlcyIpLnRlc3RSZWplY3RlZDsKKwor
dmFyIGR1bW15ID0geyBkdW1teTogImR1bW15IiB9OyAvLyB3ZSBmdWxmaWxsIG9yIHJlamVjdCB3
aXRoIHRoaXMgd2hlbiB3ZSBkb24ndCBpbnRlbmQgdG8gdGVzdCBhZ2FpbnN0IGl0Cit2YXIgb3Ro
ZXIgPSB7IG90aGVyOiAib3RoZXIiIH07IC8vIGEgdmFsdWUgd2UgZG9uJ3Qgd2FudCB0byBiZSBz
dHJpY3QgZXF1YWwgdG8KK3ZhciBzZW50aW5lbCA9IHsgc2VudGluZWw6ICJzZW50aW5lbCIgfTsg
Ly8gYSBzZW50aW5lbCBmdWxmaWxsbWVudCB2YWx1ZSB0byB0ZXN0IGZvciB3aXRoIHN0cmljdCBl
cXVhbGl0eQordmFyIHNlbnRpbmVsMiA9IHsgc2VudGluZWwyOiAic2VudGluZWwyIiB9OwordmFy
IHNlbnRpbmVsMyA9IHsgc2VudGluZWwzOiAic2VudGluZWwzIiB9OworCitmdW5jdGlvbiBjYWxs
YmFja0FnZ3JlZ2F0b3IodGltZXMsIHVsdGltYXRlQ2FsbGJhY2spIHsKKyAgICB2YXIgc29GYXIg
PSAwOworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgIGlmICgrK3NvRmFyID09PSB0
aW1lcykgeworICAgICAgICAgICAgdWx0aW1hdGVDYWxsYmFjaygpOworICAgICAgICB9CisgICAg
fTsKK30KKworZGVzY3JpYmUoIjIuMi42OiBgdGhlbmAgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0
aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiIsIGZ1bmN0aW9uICgpIHsKKyAgICBkZXNjcmliZSgi
Mi4yLjYuMTogSWYvd2hlbiBgcHJvbWlzZWAgaXMgZnVsZmlsbGVkLCBhbGwgcmVzcGVjdGl2ZSBg
b25GdWxmaWxsZWRgIGNhbGxiYWNrcyBtdXN0IGV4ZWN1dGUgaW4gdGhlICIgKworICAgICAgICAg
ICAgICJvcmRlciBvZiB0aGVpciBvcmlnaW5hdGluZyBjYWxscyB0byBgdGhlbmAuIiwgZnVuY3Rp
b24gKCkgeworICAgICAgICBkZXNjcmliZSgibXVsdGlwbGUgYm9yaW5nIGZ1bGZpbGxtZW50IGhh
bmRsZXJzIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGVzdEZ1bGZpbGxlZChzZW50aW5l
bCwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICB2YXIgaGFuZGxl
cjEgPSBzaW5vbi5zdHViKCkucmV0dXJucyhvdGhlcik7CisgICAgICAgICAgICAgICAgdmFyIGhh
bmRsZXIyID0gc2lub24uc3R1YigpLnJldHVybnMob3RoZXIpOworICAgICAgICAgICAgICAgIHZh
ciBoYW5kbGVyMyA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG90aGVyKTsKKworICAgICAgICAgICAg
ICAgIHZhciBzcHkgPSBzaW5vbi5zcHkoKTsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4o
aGFuZGxlcjEsIHNweSk7CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGhhbmRsZXIyLCBz
cHkpOworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihoYW5kbGVyMywgc3B5KTsKKworICAg
ICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbHVlLCBzZW50aW5lbCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgoaGFuZGxlcjEsIHNpbm9uLm1hdGNo
LnNhbWUoc2VudGluZWwpKTsKKyAgICAgICAgICAgICAgICAgICAgc2lub24uYXNzZXJ0LmNhbGxl
ZFdpdGgoaGFuZGxlcjIsIHNpbm9uLm1hdGNoLnNhbWUoc2VudGluZWwpKTsKKyAgICAgICAgICAg
ICAgICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgoaGFuZGxlcjMsIHNpbm9uLm1hdGNoLnNh
bWUoc2VudGluZWwpKTsKKyAgICAgICAgICAgICAgICAgICAgc2lub24uYXNzZXJ0Lm5vdENhbGxl
ZChzcHkpOworCisgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBkZXNjcmliZSgibXVs
dGlwbGUgZnVsZmlsbG1lbnQgaGFuZGxlcnMsIG9uZSBvZiB3aGljaCB0aHJvd3MiLCBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICB0ZXN0RnVsZmlsbGVkKHNlbnRpbmVsLCBmdW5jdGlvbiAocHJv
bWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgIHZhciBoYW5kbGVyMSA9IHNpbm9uLnN0dWIo
KS5yZXR1cm5zKG90aGVyKTsKKyAgICAgICAgICAgICAgICB2YXIgaGFuZGxlcjIgPSBzaW5vbi5z
dHViKCkudGhyb3dzKG90aGVyKTsKKyAgICAgICAgICAgICAgICB2YXIgaGFuZGxlcjMgPSBzaW5v
bi5zdHViKCkucmV0dXJucyhvdGhlcik7CisKKyAgICAgICAgICAgICAgICB2YXIgc3B5ID0gc2lu
b24uc3B5KCk7CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGhhbmRsZXIxLCBzcHkpOwor
ICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihoYW5kbGVyMiwgc3B5KTsKKyAgICAgICAgICAg
ICAgICBwcm9taXNlLnRoZW4oaGFuZGxlcjMsIHNweSk7CisKKyAgICAgICAgICAgICAgICBwcm9t
aXNlLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbCh2YWx1ZSwgc2VudGluZWwpOworCisgICAgICAgICAgICAgICAgICAgIHNpbm9u
LmFzc2VydC5jYWxsZWRXaXRoKGhhbmRsZXIxLCBzaW5vbi5tYXRjaC5zYW1lKHNlbnRpbmVsKSk7
CisgICAgICAgICAgICAgICAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKGhhbmRsZXIyLCBz
aW5vbi5tYXRjaC5zYW1lKHNlbnRpbmVsKSk7CisgICAgICAgICAgICAgICAgICAgIHNpbm9uLmFz
c2VydC5jYWxsZWRXaXRoKGhhbmRsZXIzLCBzaW5vbi5tYXRjaC5zYW1lKHNlbnRpbmVsKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHNpbm9uLmFzc2VydC5ub3RDYWxsZWQoc3B5KTsKKworICAgICAg
ICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3JpYmUoInJlc3VsdHMgaW4gbXVsdGlwbGUg
YnJhbmNoaW5nIGNoYWlucyB3aXRoIHRoZWlyIG93biBmdWxmaWxsbWVudCB2YWx1ZXMiLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0RnVsZmlsbGVkKGR1bW15LCBmdW5jdGlvbiAocHJv
bWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgIHZhciBzZW1pRG9uZSA9IGNhbGxiYWNrQWdn
cmVnYXRvcigzLCBkb25lKTsKKworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW50aW5lbDsKKyAgICAgICAgICAg
ICAgICB9KS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwodmFsdWUsIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgc2Vt
aURvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIHByb21pc2Uu
dGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IHNlbnRpbmVsMjsK
KyAgICAgICAgICAgICAgICB9KS50aGVuKG51bGwsIGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICAg
ICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgc2VudGluZWwyKTsKKyAg
ICAgICAgICAgICAgICAgICAgc2VtaURvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBzZW50aW5lbDM7CisgICAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
dmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbHVlLCBz
ZW50aW5lbDMpOworICAgICAgICAgICAgICAgICAgICBzZW1pRG9uZSgpOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGRlc2NyaWJl
KCJgb25GdWxmaWxsZWRgIGhhbmRsZXJzIGFyZSBjYWxsZWQgaW4gdGhlIG9yaWdpbmFsIG9yZGVy
IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGVzdEZ1bGZpbGxlZChkdW1teSwgZnVuY3Rp
b24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICB2YXIgaGFuZGxlcjEgPSBzaW5v
bi5zcHkoZnVuY3Rpb24gaGFuZGxlcjEoKSB7fSk7CisgICAgICAgICAgICAgICAgdmFyIGhhbmRs
ZXIyID0gc2lub24uc3B5KGZ1bmN0aW9uIGhhbmRsZXIyKCkge30pOworICAgICAgICAgICAgICAg
IHZhciBoYW5kbGVyMyA9IHNpbm9uLnNweShmdW5jdGlvbiBoYW5kbGVyMygpIHt9KTsKKworICAg
ICAgICAgICAgICAgIHByb21pc2UudGhlbihoYW5kbGVyMSk7CisgICAgICAgICAgICAgICAgcHJv
bWlzZS50aGVuKGhhbmRsZXIyKTsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oaGFuZGxl
cjMpOworCisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgc2lub24uYXNzZXJ0LmNhbGxPcmRlcihoYW5kbGVyMSwgaGFuZGxlcjIs
IGhhbmRsZXIzKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJldmVuIHdoZW4g
b25lIGhhbmRsZXIgaXMgYWRkZWQgaW5zaWRlIGFub3RoZXIgaGFuZGxlciIsIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICB0ZXN0RnVsZmlsbGVkKGR1bW15LCBmdW5jdGlvbiAocHJvbWlz
ZSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgaGFuZGxlcjEgPSBzaW5vbi5zcHko
ZnVuY3Rpb24gaGFuZGxlcjEoKSB7fSk7CisgICAgICAgICAgICAgICAgICAgIHZhciBoYW5kbGVy
MiA9IHNpbm9uLnNweShmdW5jdGlvbiBoYW5kbGVyMigpIHt9KTsKKyAgICAgICAgICAgICAgICAg
ICAgdmFyIGhhbmRsZXIzID0gc2lub24uc3B5KGZ1bmN0aW9uIGhhbmRsZXIzKCkge30pOworCisg
ICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBoYW5kbGVyMSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlz
ZS50aGVuKGhhbmRsZXIzKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgICAgIHByb21pc2UudGhlbihoYW5kbGVyMik7CisKKyAgICAgICAgICAgICAgICAgICAgcHJv
bWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdpdmUg
aW1wbGVtZW50YXRpb25zIGEgYml0IG9mIGV4dHJhIHRpbWUgdG8gZmx1c2ggdGhlaXIgaW50ZXJu
YWwgcXVldWUsIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbm9uLmFzc2Vy
dC5jYWxsT3JkZXIoaGFuZGxlcjEsIGhhbmRsZXIyLCBoYW5kbGVyMyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTUpOwor
ICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCIyLjIuNi4yOiBJZi93
aGVuIGBwcm9taXNlYCBpcyByZWplY3RlZCwgYWxsIHJlc3BlY3RpdmUgYG9uUmVqZWN0ZWRgIGNh
bGxiYWNrcyBtdXN0IGV4ZWN1dGUgaW4gdGhlICIgKworICAgICAgICAgICAgICJvcmRlciBvZiB0
aGVpciBvcmlnaW5hdGluZyBjYWxscyB0byBgdGhlbmAuIiwgZnVuY3Rpb24gKCkgeworICAgICAg
ICBkZXNjcmliZSgibXVsdGlwbGUgYm9yaW5nIHJlamVjdGlvbiBoYW5kbGVycyIsIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIHRlc3RSZWplY3RlZChzZW50aW5lbCwgZnVuY3Rpb24gKHByb21p
c2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICB2YXIgaGFuZGxlcjEgPSBzaW5vbi5zdHViKCku
cmV0dXJucyhvdGhlcik7CisgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIyID0gc2lub24uc3R1
YigpLnJldHVybnMob3RoZXIpOworICAgICAgICAgICAgICAgIHZhciBoYW5kbGVyMyA9IHNpbm9u
LnN0dWIoKS5yZXR1cm5zKG90aGVyKTsKKworICAgICAgICAgICAgICAgIHZhciBzcHkgPSBzaW5v
bi5zcHkoKTsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oc3B5LCBoYW5kbGVyMSk7Cisg
ICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKHNweSwgaGFuZGxlcjIpOworICAgICAgICAgICAg
ICAgIHByb21pc2UudGhlbihzcHksIGhhbmRsZXIzKTsKKworICAgICAgICAgICAgICAgIHByb21p
c2UudGhlbihudWxsLCBmdW5jdGlvbiAocmVhc29uKSB7CisgICAgICAgICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChyZWFzb24sIHNlbnRpbmVsKTsKKworICAgICAgICAgICAgICAgICAg
ICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChoYW5kbGVyMSwgc2lub24ubWF0Y2guc2FtZShzZW50
aW5lbCkpOworICAgICAgICAgICAgICAgICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChoYW5k
bGVyMiwgc2lub24ubWF0Y2guc2FtZShzZW50aW5lbCkpOworICAgICAgICAgICAgICAgICAgICBz
aW5vbi5hc3NlcnQuY2FsbGVkV2l0aChoYW5kbGVyMywgc2lub24ubWF0Y2guc2FtZShzZW50aW5l
bCkpOworICAgICAgICAgICAgICAgICAgICBzaW5vbi5hc3NlcnQubm90Q2FsbGVkKHNweSk7CisK
KyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGRlc2NyaWJlKCJtdWx0aXBsZSByZWpl
Y3Rpb24gaGFuZGxlcnMsIG9uZSBvZiB3aGljaCB0aHJvd3MiLCBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICB0ZXN0UmVqZWN0ZWQoc2VudGluZWwsIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7
CisgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIxID0gc2lub24uc3R1YigpLnJldHVybnMob3Ro
ZXIpOworICAgICAgICAgICAgICAgIHZhciBoYW5kbGVyMiA9IHNpbm9uLnN0dWIoKS50aHJvd3Mo
b3RoZXIpOworICAgICAgICAgICAgICAgIHZhciBoYW5kbGVyMyA9IHNpbm9uLnN0dWIoKS5yZXR1
cm5zKG90aGVyKTsKKworICAgICAgICAgICAgICAgIHZhciBzcHkgPSBzaW5vbi5zcHkoKTsKKyAg
ICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oc3B5LCBoYW5kbGVyMSk7CisgICAgICAgICAgICAg
ICAgcHJvbWlzZS50aGVuKHNweSwgaGFuZGxlcjIpOworICAgICAgICAgICAgICAgIHByb21pc2Uu
dGhlbihzcHksIGhhbmRsZXIzKTsKKworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxs
LCBmdW5jdGlvbiAocmVhc29uKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChyZWFzb24sIHNlbnRpbmVsKTsKKworICAgICAgICAgICAgICAgICAgICBzaW5vbi5hc3Nl
cnQuY2FsbGVkV2l0aChoYW5kbGVyMSwgc2lub24ubWF0Y2guc2FtZShzZW50aW5lbCkpOworICAg
ICAgICAgICAgICAgICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChoYW5kbGVyMiwgc2lub24u
bWF0Y2guc2FtZShzZW50aW5lbCkpOworICAgICAgICAgICAgICAgICAgICBzaW5vbi5hc3NlcnQu
Y2FsbGVkV2l0aChoYW5kbGVyMywgc2lub24ubWF0Y2guc2FtZShzZW50aW5lbCkpOworICAgICAg
ICAgICAgICAgICAgICBzaW5vbi5hc3NlcnQubm90Q2FsbGVkKHNweSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0pOworCisgICAgICAgIGRlc2NyaWJlKCJyZXN1bHRzIGluIG11bHRpcGxlIGJyYW5j
aGluZyBjaGFpbnMgd2l0aCB0aGVpciBvd24gZnVsZmlsbG1lbnQgdmFsdWVzIiwgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgdGVzdFJlamVjdGVkKHNlbnRpbmVsLCBmdW5jdGlvbiAocHJvbWlz
ZSwgZG9uZSkgeworICAgICAgICAgICAgICAgIHZhciBzZW1pRG9uZSA9IGNhbGxiYWNrQWdncmVn
YXRvcigzLCBkb25lKTsKKworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW50aW5lbDsKKyAgICAgICAg
ICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwodmFsdWUsIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAg
c2VtaURvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIHByb21p
c2UudGhlbihudWxsLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IHNl
bnRpbmVsMjsKKyAgICAgICAgICAgICAgICB9KS50aGVuKG51bGwsIGZ1bmN0aW9uIChyZWFzb24p
IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgc2VudGlu
ZWwyKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtaURvbmUoKTsKKyAgICAgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW50aW5lbDM7CisgICAgICAgICAgICAgICAgfSku
dGhlbihmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHZhbHVlLCBzZW50aW5lbDMpOworICAgICAgICAgICAgICAgICAgICBzZW1pRG9uZSgp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisg
ICAgICAgIGRlc2NyaWJlKCJgb25SZWplY3RlZGAgaGFuZGxlcnMgYXJlIGNhbGxlZCBpbiB0aGUg
b3JpZ2luYWwgb3JkZXIiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0UmVqZWN0ZWQo
ZHVtbXksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgdmFyIGhh
bmRsZXIxID0gc2lub24uc3B5KGZ1bmN0aW9uIGhhbmRsZXIxKCkge30pOworICAgICAgICAgICAg
ICAgIHZhciBoYW5kbGVyMiA9IHNpbm9uLnNweShmdW5jdGlvbiBoYW5kbGVyMigpIHt9KTsKKyAg
ICAgICAgICAgICAgICB2YXIgaGFuZGxlcjMgPSBzaW5vbi5zcHkoZnVuY3Rpb24gaGFuZGxlcjMo
KSB7fSk7CisKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgaGFuZGxlcjEpOwor
ICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBoYW5kbGVyMik7CisgICAgICAgICAg
ICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGhhbmRsZXIzKTsKKworICAgICAgICAgICAgICAgIHBy
b21pc2UudGhlbihudWxsLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHNpbm9u
LmFzc2VydC5jYWxsT3JkZXIoaGFuZGxlcjEsIGhhbmRsZXIyLCBoYW5kbGVyMyk7CisgICAgICAg
ICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICBkZXNjcmliZSgiZXZlbiB3aGVuIG9uZSBoYW5kbGVyIGlzIGFkZGVk
IGluc2lkZSBhbm90aGVyIGhhbmRsZXIiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
dGVzdFJlamVjdGVkKGR1bW15LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAg
ICAgICAgICAgICB2YXIgaGFuZGxlcjEgPSBzaW5vbi5zcHkoZnVuY3Rpb24gaGFuZGxlcjEoKSB7
fSk7CisgICAgICAgICAgICAgICAgICAgIHZhciBoYW5kbGVyMiA9IHNpbm9uLnNweShmdW5jdGlv
biBoYW5kbGVyMigpIHt9KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIzID0gc2lu
b24uc3B5KGZ1bmN0aW9uIGhhbmRsZXIzKCkge30pOworCisgICAgICAgICAgICAgICAgICAgIHBy
b21pc2UudGhlbihudWxsLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBo
YW5kbGVyMSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGhh
bmRsZXIzKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIHBy
b21pc2UudGhlbihudWxsLCBoYW5kbGVyMik7CisKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlz
ZS50aGVuKG51bGwsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdp
dmUgaW1wbGVtZW50YXRpb25zIGEgYml0IG9mIGV4dHJhIHRpbWUgdG8gZmx1c2ggdGhlaXIgaW50
ZXJuYWwgcXVldWUsIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbm9uLmFz
c2VydC5jYWxsT3JkZXIoaGFuZGxlcjEsIGhhbmRsZXIyLCBoYW5kbGVyMyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTUp
OworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30pOworCit9LHsiLi9oZWxwZXJzL3Rlc3RU
aHJlZUNhc2VzIjoyMSwiYXNzZXJ0IjoxLCJzaW5vbiI6MjN9XSwxNTpbZnVuY3Rpb24ocmVxdWly
ZSxtb2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24gKGdsb2JhbCl7CisidXNlIHN0cmljdCI7CisK
K3ZhciBhc3NlcnQgPSByZXF1aXJlKCJhc3NlcnQiKTsKK3ZhciB0ZXN0RnVsZmlsbGVkID0gcmVx
dWlyZSgiLi9oZWxwZXJzL3Rlc3RUaHJlZUNhc2VzIikudGVzdEZ1bGZpbGxlZDsKK3ZhciB0ZXN0
UmVqZWN0ZWQgPSByZXF1aXJlKCIuL2hlbHBlcnMvdGVzdFRocmVlQ2FzZXMiKS50ZXN0UmVqZWN0
ZWQ7Cit2YXIgcmVhc29ucyA9IHJlcXVpcmUoIi4vaGVscGVycy9yZWFzb25zIik7CisKK3ZhciBh
ZGFwdGVyID0gZ2xvYmFsLmFkYXB0ZXI7Cit2YXIgZGVmZXJyZWQgPSBhZGFwdGVyLmRlZmVycmVk
OworCit2YXIgZHVtbXkgPSB7IGR1bW15OiAiZHVtbXkiIH07IC8vIHdlIGZ1bGZpbGwgb3IgcmVq
ZWN0IHdpdGggdGhpcyB3aGVuIHdlIGRvbid0IGludGVuZCB0byB0ZXN0IGFnYWluc3QgaXQKK3Zh
ciBzZW50aW5lbCA9IHsgc2VudGluZWw6ICJzZW50aW5lbCIgfTsgLy8gYSBzZW50aW5lbCBmdWxm
aWxsbWVudCB2YWx1ZSB0byB0ZXN0IGZvciB3aXRoIHN0cmljdCBlcXVhbGl0eQordmFyIG90aGVy
ID0geyBvdGhlcjogIm90aGVyIiB9OyAvLyBhIHZhbHVlIHdlIGRvbid0IHdhbnQgdG8gYmUgc3Ry
aWN0IGVxdWFsIHRvCisKK2Rlc2NyaWJlKCIyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJv
bWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClg
IiwgZnVuY3Rpb24gKCkgeworICAgIHNwZWNpZnkoImlzIGEgcHJvbWlzZSIsIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgdmFyIHByb21pc2UxID0gZGVmZXJyZWQoKS5wcm9taXNlOworICAgICAgICB2
YXIgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKCk7CisKKyAgICAgICAgYXNzZXJ0KHR5cGVvZiBw
cm9taXNlMiA9PT0gIm9iamVjdCIgfHwgdHlwZW9mIHByb21pc2UyID09PSAiZnVuY3Rpb24iKTsK
KyAgICAgICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKHByb21pc2UyLCBudWxsKTsKKyAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHR5cGVvZiBwcm9taXNlMi50aGVuLCAiZnVuY3Rpb24iKTsKKyAg
ICB9KTsKKworICAgIGRlc2NyaWJlKCIyLjIuNy4xOiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBv
ciBgb25SZWplY3RlZGAgcmV0dXJucyBhIHZhbHVlIGB4YCwgcnVuIHRoZSBQcm9taXNlIFJlc29s
dXRpb24gIiArCisgICAgICAgICAgICAgIlByb2NlZHVyZSBgW1tSZXNvbHZlXV0ocHJvbWlzZTIs
IHgpYCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgc3BlY2lmeSgic2VlIHNlcGFyYXRlIDMuMyB0
ZXN0cyIsIGZ1bmN0aW9uICgpIHsgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgiMi4yLjcu
MjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNl
cHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgIiArCisgICAgICAgICAgICAg
IndpdGggYGVgIGFzIHRoZSByZWFzb24uIiwgZnVuY3Rpb24gKCkgeworICAgICAgICBmdW5jdGlv
biB0ZXN0UmVhc29uKGV4cGVjdGVkUmVhc29uLCBzdHJpbmdSZXByZXNlbnRhdGlvbikgeworICAg
ICAgICAgICAgZGVzY3JpYmUoIlRoZSByZWFzb24gaXMgIiArIHN0cmluZ1JlcHJlc2VudGF0aW9u
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdGVzdEZ1bGZpbGxlZChkdW1teSwgZnVu
Y3Rpb24gKHByb21pc2UxLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBwcm9taXNl
MiA9IHByb21pc2UxLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxsZWQoKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB0aHJvdyBleHBlY3RlZFJlYXNvbjsKKyAgICAgICAgICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZTIudGhlbihudWxsLCBmdW5jdGlvbiBvblBy
b21pc2UyUmVqZWN0ZWQoYWN0dWFsUmVhc29uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoYWN0dWFsUmVhc29uLCBleHBlY3RlZFJlYXNvbik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHRlc3RSZWplY3RlZChkdW1teSwgZnVuY3Rp
b24gKHByb21pc2UxLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBwcm9taXNlMiA9
IHByb21pc2UxLnRoZW4obnVsbCwgZnVuY3Rpb24gb25SZWplY3RlZCgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRocm93IGV4cGVjdGVkUmVhc29uOworICAgICAgICAgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgICAgICAgICBwcm9taXNlMi50aGVuKG51bGwsIGZ1bmN0aW9uIG9u
UHJvbWlzZTJSZWplY3RlZChhY3R1YWxSZWFzb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChhY3R1YWxSZWFzb24sIGV4cGVjdGVkUmVhc29uKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIE9i
amVjdC5rZXlzKHJlYXNvbnMpLmZvckVhY2goZnVuY3Rpb24gKHN0cmluZ1JlcHJlc2VudGF0aW9u
KSB7CisgICAgICAgICAgICB0ZXN0UmVhc29uKHJlYXNvbnNbc3RyaW5nUmVwcmVzZW50YXRpb25d
LCBzdHJpbmdSZXByZXNlbnRhdGlvbik7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZGVz
Y3JpYmUoIjIuMi43LjM6IElmIGBvbkZ1bGZpbGxlZGAgaXMgbm90IGEgZnVuY3Rpb24gYW5kIGBw
cm9taXNlMWAgaXMgZnVsZmlsbGVkLCBgcHJvbWlzZTJgIG11c3QgYmUgZnVsZmlsbGVkICIgKwor
ICAgICAgICAgICAgICJ3aXRoIHRoZSBzYW1lIHZhbHVlLiIsIGZ1bmN0aW9uICgpIHsKKworICAg
ICAgICBmdW5jdGlvbiB0ZXN0Tm9uRnVuY3Rpb24obm9uRnVuY3Rpb24sIHN0cmluZ1JlcHJlc2Vu
dGF0aW9uKSB7CisgICAgICAgICAgICBkZXNjcmliZSgiYG9uRnVsZmlsbGVkYCBpcyAiICsgc3Ry
aW5nUmVwcmVzZW50YXRpb24sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0RnVs
ZmlsbGVkKHNlbnRpbmVsLCBmdW5jdGlvbiAocHJvbWlzZTEsIGRvbmUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdmFyIHByb21pc2UyID0gcHJvbWlzZTEudGhlbihub25GdW5jdGlvbik7CisKKyAg
ICAgICAgICAgICAgICAgICAgcHJvbWlzZTIudGhlbihmdW5jdGlvbiBvblByb21pc2UyRnVsZmls
bGVkKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
dmFsdWUsIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIHRlc3ROb25GdW5jdGlvbih1bmRlZmluZWQsICJgdW5kZWZp
bmVkYCIpOworICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24obnVsbCwgImBudWxsYCIpOworICAgICAg
ICB0ZXN0Tm9uRnVuY3Rpb24oZmFsc2UsICJgZmFsc2VgIik7CisgICAgICAgIHRlc3ROb25GdW5j
dGlvbig1LCAiYDVgIik7CisgICAgICAgIHRlc3ROb25GdW5jdGlvbih7fSwgImFuIG9iamVjdCIp
OworICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24oW2Z1bmN0aW9uICgpIHsgcmV0dXJuIG90aGVyOyB9
XSwgImFuIGFycmF5IGNvbnRhaW5pbmcgYSBmdW5jdGlvbiIpOworICAgIH0pOworCisgICAgZGVz
Y3JpYmUoIjIuMi43LjQ6IElmIGBvblJlamVjdGVkYCBpcyBub3QgYSBmdW5jdGlvbiBhbmQgYHBy
b21pc2UxYCBpcyByZWplY3RlZCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkICIgKworICAg
ICAgICAgICAgICJ3aXRoIHRoZSBzYW1lIHJlYXNvbi4iLCBmdW5jdGlvbiAoKSB7CisKKyAgICAg
ICAgZnVuY3Rpb24gdGVzdE5vbkZ1bmN0aW9uKG5vbkZ1bmN0aW9uLCBzdHJpbmdSZXByZXNlbnRh
dGlvbikgeworICAgICAgICAgICAgZGVzY3JpYmUoImBvblJlamVjdGVkYCBpcyAiICsgc3RyaW5n
UmVwcmVzZW50YXRpb24sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UmVqZWN0
ZWQoc2VudGluZWwsIGZ1bmN0aW9uIChwcm9taXNlMSwgZG9uZSkgeworICAgICAgICAgICAgICAg
ICAgICB2YXIgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG51bGwsIG5vbkZ1bmN0aW9uKTsKKwor
ICAgICAgICAgICAgICAgICAgICBwcm9taXNlMi50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUHJvbWlz
ZTJSZWplY3RlZChyZWFzb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChyZWFzb24sIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUo
KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIHRlc3ROb25GdW5jdGlvbih1bmRlZmluZWQs
ICJgdW5kZWZpbmVkYCIpOworICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24obnVsbCwgImBudWxsYCIp
OworICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24oZmFsc2UsICJgZmFsc2VgIik7CisgICAgICAgIHRl
c3ROb25GdW5jdGlvbig1LCAiYDVgIik7CisgICAgICAgIHRlc3ROb25GdW5jdGlvbih7fSwgImFu
IG9iamVjdCIpOworICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24oW2Z1bmN0aW9uICgpIHsgcmV0dXJu
IG90aGVyOyB9XSwgImFuIGFycmF5IGNvbnRhaW5pbmcgYSBmdW5jdGlvbiIpOworICAgIH0pOwor
fSk7CisKK30pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSAidW5kZWZpbmVkIiA/IGdsb2Jh
bCA6IHR5cGVvZiBzZWxmICE9PSAidW5kZWZpbmVkIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9
PSAidW5kZWZpbmVkIiA/IHdpbmRvdyA6IHt9KQorfSx7Ii4vaGVscGVycy9yZWFzb25zIjoyMCwi
Li9oZWxwZXJzL3Rlc3RUaHJlZUNhc2VzIjoyMSwiYXNzZXJ0IjoxfV0sMTY6W2Z1bmN0aW9uKHJl
cXVpcmUsbW9kdWxlLGV4cG9ydHMpeworKGZ1bmN0aW9uIChnbG9iYWwpeworInVzZSBzdHJpY3Qi
OworCit2YXIgYXNzZXJ0ID0gcmVxdWlyZSgiYXNzZXJ0Iik7CisKK3ZhciBhZGFwdGVyID0gZ2xv
YmFsLmFkYXB0ZXI7Cit2YXIgcmVzb2x2ZWQgPSBhZGFwdGVyLnJlc29sdmVkOwordmFyIHJlamVj
dGVkID0gYWRhcHRlci5yZWplY3RlZDsKKwordmFyIGR1bW15ID0geyBkdW1teTogImR1bW15IiB9
OyAvLyB3ZSBmdWxmaWxsIG9yIHJlamVjdCB3aXRoIHRoaXMgd2hlbiB3ZSBkb24ndCBpbnRlbmQg
dG8gdGVzdCBhZ2FpbnN0IGl0CisKK2Rlc2NyaWJlKCIyLjMuMTogSWYgYHByb21pc2VgIGFuZCBg
eGAgcmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0LCByZWplY3QgYHByb21pc2VgIHdpdGggYSBgVHlw
ZUVycm9yJyBhcyB0aGUgcmVhc29uLiIsCisgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgc3Bl
Y2lmeSgidmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UiLCBmdW5jdGlvbiAoZG9u
ZSkgeworICAgICAgICB2YXIgcHJvbWlzZSA9IHJlc29sdmVkKGR1bW15KS50aGVuKGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIHJldHVybiBwcm9taXNlOworICAgICAgICB9KTsKKworICAgICAg
ICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAgICAgYXNz
ZXJ0KHJlYXNvbiBpbnN0YW5jZW9mIFR5cGVFcnJvcik7CisgICAgICAgICAgICBkb25lKCk7Cisg
ICAgICAgIH0pOworICAgIH0pOworCisgICAgc3BlY2lmeSgidmlhIHJldHVybiBmcm9tIGEgcmVq
ZWN0ZWQgcHJvbWlzZSIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIHZhciBwcm9taXNlID0g
cmVqZWN0ZWQoZHVtbXkpLnRoZW4obnVsbCwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0
dXJuIHByb21pc2U7CisgICAgICAgIH0pOworCisgICAgICAgIHByb21pc2UudGhlbihudWxsLCBm
dW5jdGlvbiAocmVhc29uKSB7CisgICAgICAgICAgICBhc3NlcnQocmVhc29uIGluc3RhbmNlb2Yg
VHlwZUVycm9yKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9
KTsKKworfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09ICJ1bmRlZmluZWQiID8gZ2xvYmFs
IDogdHlwZW9mIHNlbGYgIT09ICJ1bmRlZmluZWQiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09
ICJ1bmRlZmluZWQiID8gd2luZG93IDoge30pCit9LHsiYXNzZXJ0IjoxfV0sMTc6W2Z1bmN0aW9u
KHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworKGZ1bmN0aW9uIChnbG9iYWwpeworInVzZSBzdHJp
Y3QiOworCit2YXIgYXNzZXJ0ID0gcmVxdWlyZSgiYXNzZXJ0Iik7CisKK3ZhciBhZGFwdGVyID0g
Z2xvYmFsLmFkYXB0ZXI7Cit2YXIgcmVzb2x2ZWQgPSBhZGFwdGVyLnJlc29sdmVkOwordmFyIHJl
amVjdGVkID0gYWRhcHRlci5yZWplY3RlZDsKK3ZhciBkZWZlcnJlZCA9IGFkYXB0ZXIuZGVmZXJy
ZWQ7CisKK3ZhciBkdW1teSA9IHsgZHVtbXk6ICJkdW1teSIgfTsgLy8gd2UgZnVsZmlsbCBvciBy
ZWplY3Qgd2l0aCB0aGlzIHdoZW4gd2UgZG9uJ3QgaW50ZW5kIHRvIHRlc3QgYWdhaW5zdCBpdAor
dmFyIHNlbnRpbmVsID0geyBzZW50aW5lbDogInNlbnRpbmVsIiB9OyAvLyBhIHNlbnRpbmVsIGZ1
bGZpbGxtZW50IHZhbHVlIHRvIHRlc3QgZm9yIHdpdGggc3RyaWN0IGVxdWFsaXR5CisKK2Z1bmN0
aW9uIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgdGVzdCkgeworICAgIHNwZWNpZnko
InZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlIiwgZnVuY3Rpb24gKGRvbmUpIHsK
KyAgICAgICAgdmFyIHByb21pc2UgPSByZXNvbHZlZChkdW1teSkudGhlbihmdW5jdGlvbiBvbkJh
c2VQcm9taXNlRnVsZmlsbGVkKCkgeworICAgICAgICAgICAgcmV0dXJuIHhGYWN0b3J5KCk7Cisg
ICAgICAgIH0pOworCisgICAgICAgIHRlc3QocHJvbWlzZSwgZG9uZSk7CisgICAgfSk7CisKKyAg
ICBzcGVjaWZ5KCJ2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlIiwgZnVuY3Rpb24g
KGRvbmUpIHsKKyAgICAgICAgdmFyIHByb21pc2UgPSByZWplY3RlZChkdW1teSkudGhlbihudWxs
LCBmdW5jdGlvbiBvbkJhc2VQcm9taXNlUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICByZXR1cm4g
eEZhY3RvcnkoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgdGVzdChwcm9taXNlLCBkb25lKTsK
KyAgICB9KTsKK30KKworZGVzY3JpYmUoIjIuMy4yOiBJZiBgeGAgaXMgYSBwcm9taXNlLCBhZG9w
dCBpdHMgc3RhdGUiLCBmdW5jdGlvbiAoKSB7CisgICAgZGVzY3JpYmUoIjIuMy4yLjE6IElmIGB4
YCBpcyBwZW5kaW5nLCBgcHJvbWlzZWAgbXVzdCByZW1haW4gcGVuZGluZyB1bnRpbCBgeGAgaXMg
ZnVsZmlsbGVkIG9yIHJlamVjdGVkLiIsCisgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAg
ICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZCgp
LnByb21pc2U7CisgICAgICAgIH0KKworICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZh
Y3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICB2YXIgd2FzRnVs
ZmlsbGVkID0gZmFsc2U7CisgICAgICAgICAgICB2YXIgd2FzUmVqZWN0ZWQgPSBmYWxzZTsKKwor
ICAgICAgICAgICAgcHJvbWlzZS50aGVuKAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG9uUHJv
bWlzZUZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgICAgICAgICAgd2FzRnVsZmlsbGVkID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG9uUHJvbWlz
ZVJlamVjdGVkKCkgeworICAgICAgICAgICAgICAgICAgICB3YXNSZWplY3RlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHdhc0Z1
bGZpbGxlZCwgZmFsc2UpOworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh3YXNS
ZWplY3RlZCwgZmFsc2UpOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0s
IDEwMCk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoIjIuMy4yLjI6IElm
L3doZW4gYHhgIGlzIGZ1bGZpbGxlZCwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCB0aGUgc2FtZSB2
YWx1ZS4iLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRlc2NyaWJlKCJgeGAgaXMgYWxyZWFkeS1m
dWxmaWxsZWQiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgp
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWQoc2VudGluZWwpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0
aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0
aW9uIG9uUHJvbWlzZUZ1bGZpbGxlZCh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwodmFsdWUsIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgZG9u
ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor
CisgICAgICAgIGRlc2NyaWJlKCJgeGAgaXMgZXZlbnR1YWxseS1mdWxmaWxsZWQiLCBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICB2YXIgZCA9IG51bGw7CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBkLnJl
c29sdmUoc2VudGluZWwpOworICAgICAgICAgICAgICAgIH0sIDUwKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZC5wcm9taXNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZXN0UHJv
bWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAg
ICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uIG9uUHJvbWlzZUZ1bGZpbGxlZCh2YWx1
ZSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFsdWUsIHNlbnRp
bmVsKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoIjIu
My4yLjM6IElmL3doZW4gYHhgIGlzIHJlamVjdGVkLCByZWplY3QgYHByb21pc2VgIHdpdGggdGhl
IHNhbWUgcmVhc29uLiIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZGVzY3JpYmUoImB4YCBpcyBh
bHJlYWR5LXJlamVjdGVkIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZnVuY3Rpb24geEZh
Y3RvcnkoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdGVkKHNlbnRpbmVsKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5
LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgIHByb21pc2UudGhl
bihudWxsLCBmdW5jdGlvbiBvblByb21pc2VSZWplY3RlZChyZWFzb24pIHsKKyAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgc2VudGluZWwpOworICAgICAgICAg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3JpYmUoImB4YCBpcyBldmVudHVhbGx5LXJlamVj
dGVkIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdmFyIGQgPSBudWxsOworCisgICAgICAg
ICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICBkID0gZGVmZXJyZWQo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZC5yZWplY3Qoc2VudGluZWwpOworICAgICAgICAgICAgICAgIH0sIDUwKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZC5wcm9taXNlOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBk
b25lKSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUHJv
bWlzZVJlamVjdGVkKHJlYXNvbikgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwocmVhc29uLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsK
K30pOworCit9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgPyBnbG9i
YWwgOiB0eXBlb2Ygc2VsZiAhPT0gInVuZGVmaW5lZCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAh
PT0gInVuZGVmaW5lZCIgPyB3aW5kb3cgOiB7fSkKK30seyJhc3NlcnQiOjF9XSwxODpbZnVuY3Rp
b24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24gKGdsb2JhbCl7CisidXNlIHN0
cmljdCI7CisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCJhc3NlcnQiKTsKK3ZhciB0aGVuYWJsZXMg
PSByZXF1aXJlKCIuL2hlbHBlcnMvdGhlbmFibGVzIik7Cit2YXIgcmVhc29ucyA9IHJlcXVpcmUo
Ii4vaGVscGVycy9yZWFzb25zIik7CisKK3ZhciBhZGFwdGVyID0gZ2xvYmFsLmFkYXB0ZXI7Cit2
YXIgcmVzb2x2ZWQgPSBhZGFwdGVyLnJlc29sdmVkOwordmFyIHJlamVjdGVkID0gYWRhcHRlci5y
ZWplY3RlZDsKK3ZhciBkZWZlcnJlZCA9IGFkYXB0ZXIuZGVmZXJyZWQ7CisKK3ZhciBkdW1teSA9
IHsgZHVtbXk6ICJkdW1teSIgfTsgLy8gd2UgZnVsZmlsbCBvciByZWplY3Qgd2l0aCB0aGlzIHdo
ZW4gd2UgZG9uJ3QgaW50ZW5kIHRvIHRlc3QgYWdhaW5zdCBpdAordmFyIHNlbnRpbmVsID0geyBz
ZW50aW5lbDogInNlbnRpbmVsIiB9OyAvLyBhIHNlbnRpbmVsIGZ1bGZpbGxtZW50IHZhbHVlIHRv
IHRlc3QgZm9yIHdpdGggc3RyaWN0IGVxdWFsaXR5Cit2YXIgb3RoZXIgPSB7IG90aGVyOiAib3Ro
ZXIiIH07IC8vIGEgdmFsdWUgd2UgZG9uJ3Qgd2FudCB0byBiZSBzdHJpY3QgZXF1YWwgdG8KK3Zh
ciBzZW50aW5lbEFycmF5ID0gW3NlbnRpbmVsXTsgLy8gYSBzZW50aW5lbCBmdWxmaWxsbWVudCB2
YWx1ZSB0byB0ZXN0IHdoZW4gd2UgbmVlZCBhbiBhcnJheQorCitmdW5jdGlvbiB0ZXN0UHJvbWlz
ZVJlc29sdXRpb24oeEZhY3RvcnksIHRlc3QpIHsKKyAgICBzcGVjaWZ5KCJ2aWEgcmV0dXJuIGZy
b20gYSBmdWxmaWxsZWQgcHJvbWlzZSIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIHZhciBw
cm9taXNlID0gcmVzb2x2ZWQoZHVtbXkpLnRoZW4oZnVuY3Rpb24gb25CYXNlUHJvbWlzZUZ1bGZp
bGxlZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB4RmFjdG9yeSgpOworICAgICAgICB9KTsKKwor
ICAgICAgICB0ZXN0KHByb21pc2UsIGRvbmUpOworICAgIH0pOworCisgICAgc3BlY2lmeSgidmlh
IHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZSIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAg
ICAgIHZhciBwcm9taXNlID0gcmVqZWN0ZWQoZHVtbXkpLnRoZW4obnVsbCwgZnVuY3Rpb24gb25C
YXNlUHJvbWlzZVJlamVjdGVkKCkgeworICAgICAgICAgICAgcmV0dXJuIHhGYWN0b3J5KCk7Cisg
ICAgICAgIH0pOworCisgICAgICAgIHRlc3QocHJvbWlzZSwgZG9uZSk7CisgICAgfSk7Cit9CisK
K2Z1bmN0aW9uIHRlc3RDYWxsaW5nUmVzb2x2ZVByb21pc2UoeUZhY3RvcnksIHN0cmluZ1JlcHJl
c2VudGF0aW9uLCB0ZXN0KSB7CisgICAgZGVzY3JpYmUoImB5YCBpcyAiICsgc3RyaW5nUmVwcmVz
ZW50YXRpb24sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZGVzY3JpYmUoImB0aGVuYCBjYWxscyBg
cmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAg
ICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKHlGYWN0b3J5KCkpOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCB0ZXN0KTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgZGVzY3JpYmUoImB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJv
bm91c2x5IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVu
Y3Rpb24gKHJlc29sdmVQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlUHJv
bWlzZSh5RmFjdG9yeSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sIDApOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCB0ZXN0KTsKKyAgICAgICAg
fSk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RDYWxsaW5nUmVqZWN0UHJvbWlzZShyLCBz
dHJpbmdSZXByZXNlbnRhdGlvbiwgdGVzdCkgeworICAgIGRlc2NyaWJlKCJgcmAgaXMgIiArIHN0
cmluZ1JlcHJlc2VudGF0aW9uLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRlc2NyaWJlKCJgdGhl
bmAgY2FsbHMgYHJlamVjdFByb21pc2VgIHN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
eworICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UsIHJl
amVjdFByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdFByb21pc2Uocik7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIHRlc3QpOwor
ICAgICAgICB9KTsKKworICAgICAgICBkZXNjcmliZSgiYHRoZW5gIGNhbGxzIGByZWplY3RQcm9t
aXNlYCBhc3luY2hyb25vdXNseSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9u
IHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAg
ICAgIHRoZW46IGZ1bmN0aW9uIChyZXNvbHZlUHJvbWlzZSwgcmVqZWN0UHJvbWlzZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVqZWN0UHJvbWlzZShyKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0sIDApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5
LCB0ZXN0KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RDYWxsaW5n
UmVzb2x2ZVByb21pc2VGdWxmaWxsc1dpdGgoeUZhY3RvcnksIHN0cmluZ1JlcHJlc2VudGF0aW9u
LCBmdWxmaWxsbWVudFZhbHVlKSB7CisgICAgdGVzdENhbGxpbmdSZXNvbHZlUHJvbWlzZSh5RmFj
dG9yeSwgc3RyaW5nUmVwcmVzZW50YXRpb24sIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7Cisg
ICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiBvblByb21pc2VGdWxmaWxsZWQodmFsdWUpIHsK
KyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWx1ZSwgZnVsZmlsbG1lbnRWYWx1ZSk7
CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitmdW5jdGlv
biB0ZXN0Q2FsbGluZ1Jlc29sdmVQcm9taXNlUmVqZWN0c1dpdGgoeUZhY3RvcnksIHN0cmluZ1Jl
cHJlc2VudGF0aW9uLCByZWplY3Rpb25SZWFzb24pIHsKKyAgICB0ZXN0Q2FsbGluZ1Jlc29sdmVQ
cm9taXNlKHlGYWN0b3J5LCBzdHJpbmdSZXByZXNlbnRhdGlvbiwgZnVuY3Rpb24gKHByb21pc2Us
IGRvbmUpIHsKKyAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUHJvbWlzZVJl
amVjdGVkKHJlYXNvbikgeworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwg
cmVqZWN0aW9uUmVhc29uKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfSk7CisgICAg
fSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RDYWxsaW5nUmVqZWN0UHJvbWlzZVJlamVjdHNXaXRoKHJl
YXNvbiwgc3RyaW5nUmVwcmVzZW50YXRpb24pIHsKKyAgICB0ZXN0Q2FsbGluZ1JlamVjdFByb21p
c2UocmVhc29uLCBzdHJpbmdSZXByZXNlbnRhdGlvbiwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUp
IHsKKyAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUHJvbWlzZVJlamVjdGVk
KHJlamVjdGlvblJlYXNvbikgeworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlamVj
dGlvblJlYXNvbiwgcmVhc29uKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7Cit9CisKK2Rlc2NyaWJlKCIyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCIsIGZ1bmN0aW9uICgpIHsKKyAgICBkZXNjcmliZSgiMi4zLjMuMTog
TGV0IGB0aGVuYCBiZSBgeC50aGVuYCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZGVzY3JpYmUo
ImB4YCBpcyBhbiBvYmplY3Qgd2l0aCBudWxsIHByb3RvdHlwZSIsIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgIHZhciBudW1iZXJPZlRpbWVzVGhlbldhc1JldHJpZXZlZCA9IG51bGw7CisKKyAg
ICAgICAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIG51bWJl
ck9mVGltZXNUaGVuV2FzUmV0cmlldmVkID0gMDsKKyAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0
LmNyZWF0ZShudWxsLCB7CisgICAgICAgICAgICAgICAgICAgIHRoZW46IHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICsrbnVtYmVyT2ZUaW1lc1RoZW5XYXNSZXRyaWV2ZWQ7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIHRoZW5NZXRob2RGb3JYKG9uRnVsZmlsbGVkKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRnVsZmlsbGVkKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNl
LCBkb25lKSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKG51bWJlck9mVGltZXNUaGVuV2Fz
UmV0cmlldmVkLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGRlc2NyaWJl
KCJgeGAgaXMgYW4gb2JqZWN0IHdpdGggbm9ybWFsIE9iamVjdC5wcm90b3R5cGUiLCBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICB2YXIgbnVtYmVyT2ZUaW1lc1RoZW5XYXNSZXRyaWV2ZWQgPSBu
dWxsOworCisgICAgICAgICAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICBudW1iZXJPZlRpbWVzVGhlbldhc1JldHJpZXZlZCA9IDA7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIE9iamVjdC5jcmVhdGUoT2JqZWN0LnByb3RvdHlwZSwgeworICAgICAgICAgICAgICAgICAg
ICB0aGVuOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICArK251bWJlck9mVGltZXNUaGVuV2FzUmV0cmlldmVk
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiB0aGVuTWV0aG9k
Rm9yWChvbkZ1bGZpbGxlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZ1
bGZpbGxlZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0
b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgIHByb21pc2Uu
dGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChudW1iZXJPZlRpbWVzVGhlbldhc1JldHJpZXZlZCwgMSk7CisgICAgICAgICAgICAgICAgICAg
IGRvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKworICAgICAgICBkZXNjcmliZSgiYHhgIGlzIGEgZnVuY3Rpb24iLCBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICB2YXIgbnVtYmVyT2ZUaW1lc1RoZW5XYXNSZXRyaWV2ZWQgPSBudWxsOwor
CisgICAgICAgICAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBu
dW1iZXJPZlRpbWVzVGhlbldhc1JldHJpZXZlZCA9IDA7CisgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24g
eCgpIHsgfQorCisgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHgsICJ0aGVu
IiwgeworICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICsrbnVtYmVyT2ZUaW1lc1RoZW5XYXNSZXRyaWV2ZWQ7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gdGhlbk1ldGhvZEZvclgob25GdWxmaWxsZWQp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZ1bGZpbGxlZCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2Us
IGRvbmUpIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwobnVtYmVyT2ZUaW1lc1RoZW5XYXNS
ZXRyaWV2ZWQsIDEpOworICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNj
cmliZSgiMi4zLjMuMjogSWYgcmV0cmlldmluZyB0aGUgcHJvcGVydHkgYHgudGhlbmAgcmVzdWx0
cyBpbiBhIHRocm93biBleGNlcHRpb24gYGVgLCByZWplY3QgYHByb21pc2VgIHdpdGggIiArCisg
ICAgICAgICAgICAgImBlYCBhcyB0aGUgcmVhc29uLiIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ZnVuY3Rpb24gdGVzdFJlamVjdGlvblZpYVRocm93aW5nR2V0dGVyKGUsIHN0cmluZ1JlcHJlc2Vu
dGF0aW9uKSB7CisgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gT2JqZWN0LmNyZWF0ZShPYmplY3QucHJvdG90eXBlLCB7CisgICAgICAgICAg
ICAgICAgICAgIHRoZW46IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGVzY3JpYmUoImBlYCBpcyAiICsgc3RyaW5n
UmVwcmVzZW50YXRpb24sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlz
ZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAg
ICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiAocmVhc29uKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29uLCBlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIE9i
amVjdC5rZXlzKHJlYXNvbnMpLmZvckVhY2goZnVuY3Rpb24gKHN0cmluZ1JlcHJlc2VudGF0aW9u
KSB7CisgICAgICAgICAgICB0ZXN0UmVqZWN0aW9uVmlhVGhyb3dpbmdHZXR0ZXIocmVhc29uc1tz
dHJpbmdSZXByZXNlbnRhdGlvbl0sIHN0cmluZ1JlcHJlc2VudGF0aW9uKTsKKyAgICAgICAgfSk7
CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgiMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgIiArCisgICAgICAgICAgICAgInNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJv
bWlzZWAiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRlc2NyaWJlKCJDYWxscyB3aXRoIGB4YCBh
cyBgdGhpc2AgYW5kIHR3byBmdW5jdGlvbiBhcmd1bWVudHMiLCBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICB2YXIgeCA9IHsK
KyAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKG9uRnVsZmlsbGVkLCBvblJlamVj
dGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGhpcywg
eCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHlwZW9mIG9u
RnVsZmlsbGVkLCAiZnVuY3Rpb24iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbCh0eXBlb2Ygb25SZWplY3RlZCwgImZ1bmN0aW9uIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBvbkZ1bGZpbGxlZCgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJv
bWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBkZXNjcmliZSgiVXNlcyB0aGUgb3Jp
Z2luYWwgdmFsdWUgb2YgYHRoZW5gIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdmFyIG51
bWJlck9mVGltZXNUaGVuV2FzUmV0cmlldmVkID0gbnVsbDsKKworICAgICAgICAgICAgYmVmb3Jl
RWFjaChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgbnVtYmVyT2ZUaW1lc1RoZW5XYXNS
ZXRyaWV2ZWQgPSAwOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHhG
YWN0b3J5KCkgeworICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuY3JlYXRlKE9iamVjdC5w
cm90b3R5cGUsIHsKKyAgICAgICAgICAgICAgICAgICAgdGhlbjogeworICAgICAgICAgICAgICAg
ICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG51bWJlck9mVGltZXNUaGVuV2FzUmV0cmlldmVkID09PSAwKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAob25GdWxmaWxsZWQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRnVsZmlsbGVkKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9y
eSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRo
ZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3Jp
YmUoIjIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZh
bHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAiLAorICAgICAgICAgICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBkZXNjcmliZSgiYHlgIGlzIG5vdCBhIHRoZW5h
YmxlIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHRlc3RDYWxsaW5nUmVzb2x2ZVBy
b21pc2VGdWxmaWxsc1dpdGgoZnVuY3Rpb24gKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9LCAiYHVu
ZGVmaW5lZGAiLCB1bmRlZmluZWQpOworICAgICAgICAgICAgICAgIHRlc3RDYWxsaW5nUmVzb2x2
ZVByb21pc2VGdWxmaWxsc1dpdGgoZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVsbDsgfSwgImBudWxs
YCIsIG51bGwpOworICAgICAgICAgICAgICAgIHRlc3RDYWxsaW5nUmVzb2x2ZVByb21pc2VGdWxm
aWxsc1dpdGgoZnVuY3Rpb24gKCkgeyByZXR1cm4gZmFsc2U7IH0sICJgZmFsc2VgIiwgZmFsc2Up
OworICAgICAgICAgICAgICAgIHRlc3RDYWxsaW5nUmVzb2x2ZVByb21pc2VGdWxmaWxsc1dpdGgo
ZnVuY3Rpb24gKCkgeyByZXR1cm4gNTsgfSwgImA1YCIsIDUpOworICAgICAgICAgICAgICAgIHRl
c3RDYWxsaW5nUmVzb2x2ZVByb21pc2VGdWxmaWxsc1dpdGgoZnVuY3Rpb24gKCkgeyByZXR1cm4g
c2VudGluZWw7IH0sICJhbiBvYmplY3QiLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgdGVz
dENhbGxpbmdSZXNvbHZlUHJvbWlzZUZ1bGZpbGxzV2l0aChmdW5jdGlvbiAoKSB7IHJldHVybiBz
ZW50aW5lbEFycmF5OyB9LCAiYW4gYXJyYXkiLCBzZW50aW5lbEFycmF5KTsKKyAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICBkZXNjcmliZSgiYHlgIGlzIGEgdGhlbmFibGUiLCBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgT2JqZWN0LmtleXModGhlbmFibGVzLmZ1bGZpbGxlZCku
Zm9yRWFjaChmdW5jdGlvbiAoc3RyaW5nUmVwcmVzZW50YXRpb24pIHsKKyAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24geUZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdGhlbmFibGVzLmZ1bGZpbGxlZFtzdHJpbmdSZXByZXNlbnRhdGlvbl0oc2VudGluZWwpOwor
ICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgdGVzdENhbGxpbmdS
ZXNvbHZlUHJvbWlzZUZ1bGZpbGxzV2l0aCh5RmFjdG9yeSwgc3RyaW5nUmVwcmVzZW50YXRpb24s
IHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIE9iamVj
dC5rZXlzKHRoZW5hYmxlcy5yZWplY3RlZCkuZm9yRWFjaChmdW5jdGlvbiAoc3RyaW5nUmVwcmVz
ZW50YXRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24geUZhY3RvcnkoKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhlbmFibGVzLnJlamVjdGVkW3N0cmluZ1Jl
cHJlc2VudGF0aW9uXShzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICAgICB0ZXN0Q2FsbGluZ1Jlc29sdmVQcm9taXNlUmVqZWN0c1dpdGgoeUZhY3Rv
cnksIHN0cmluZ1JlcHJlc2VudGF0aW9uLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZGVzY3JpYmUoImB5YCBpcyBhIHRoZW5h
YmxlIGZvciBhIHRoZW5hYmxlIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIE9iamVj
dC5rZXlzKHRoZW5hYmxlcy5mdWxmaWxsZWQpLmZvckVhY2goZnVuY3Rpb24gKG91dGVyU3RyaW5n
UmVwcmVzZW50YXRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG91dGVyVGhlbmFibGVG
YWN0b3J5ID0gdGhlbmFibGVzLmZ1bGZpbGxlZFtvdXRlclN0cmluZ1JlcHJlc2VudGF0aW9uXTsK
KworICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh0aGVuYWJsZXMuZnVsZmlsbGVkKS5m
b3JFYWNoKGZ1bmN0aW9uIChpbm5lclN0cmluZ1JlcHJlc2VudGF0aW9uKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgaW5uZXJUaGVuYWJsZUZhY3RvcnkgPSB0aGVuYWJsZXMuZnVsZmls
bGVkW2lubmVyU3RyaW5nUmVwcmVzZW50YXRpb25dOworCisgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgc3RyaW5nUmVwcmVzZW50YXRpb24gPSBvdXRlclN0cmluZ1JlcHJlc2VudGF0aW9uICsg
IiBmb3IgIiArIGlubmVyU3RyaW5nUmVwcmVzZW50YXRpb247CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uIHlGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBvdXRlclRoZW5hYmxlRmFjdG9yeShpbm5lclRoZW5hYmxlRmFjdG9yeShzZW50aW5l
bCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0Q2FsbGluZ1Jlc29sdmVQcm9taXNlRnVsZmlsbHNXaXRoKHlGYWN0b3J5LCBzdHJpbmdS
ZXByZXNlbnRhdGlvbiwgc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh0aGVuYWJsZXMucmVqZWN0ZWQpLmZvckVhY2go
ZnVuY3Rpb24gKGlubmVyU3RyaW5nUmVwcmVzZW50YXRpb24pIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBpbm5lclRoZW5hYmxlRmFjdG9yeSA9IHRoZW5hYmxlcy5yZWplY3RlZFtpbm5l
clN0cmluZ1JlcHJlc2VudGF0aW9uXTsKKworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0
cmluZ1JlcHJlc2VudGF0aW9uID0gb3V0ZXJTdHJpbmdSZXByZXNlbnRhdGlvbiArICIgZm9yICIg
KyBpbm5lclN0cmluZ1JlcHJlc2VudGF0aW9uOworCisgICAgICAgICAgICAgICAgICAgICAgICBm
dW5jdGlvbiB5RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
b3V0ZXJUaGVuYWJsZUZhY3RvcnkoaW5uZXJUaGVuYWJsZUZhY3Rvcnkoc2VudGluZWwpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdENh
bGxpbmdSZXNvbHZlUHJvbWlzZVJlamVjdHNXaXRoKHlGYWN0b3J5LCBzdHJpbmdSZXByZXNlbnRh
dGlvbiwgc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBkZXNjcmliZSgi
Mi4zLjMuMy4yOiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24g
YHJgLCByZWplY3QgYHByb21pc2VgIHdpdGggYHJgIiwKKyAgICAgICAgICAgICAgICAgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgT2JqZWN0LmtleXMocmVhc29ucykuZm9yRWFjaChmdW5jdGlv
biAoc3RyaW5nUmVwcmVzZW50YXRpb24pIHsKKyAgICAgICAgICAgICAgICB0ZXN0Q2FsbGluZ1Jl
amVjdFByb21pc2VSZWplY3RzV2l0aChyZWFzb25zW3N0cmluZ1JlcHJlc2VudGF0aW9uXSwgc3Ry
aW5nUmVwcmVzZW50YXRpb24pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAg
ICAgIGRlc2NyaWJlKCIyLjMuMy4zLjM6IElmIGJvdGggYHJlc29sdmVQcm9taXNlYCBhbmQgYHJl
amVjdFByb21pc2VgIGFyZSBjYWxsZWQsIG9yIG11bHRpcGxlIGNhbGxzIHRvIHRoZSBzYW1lICIg
KworICAgICAgICAgICAgICAgICAiYXJndW1lbnQgYXJlIG1hZGUsIHRoZSBmaXJzdCBjYWxsIHRh
a2VzIHByZWNlZGVuY2UsIGFuZCBhbnkgZnVydGhlciBjYWxscyBhcmUgaWdub3JlZC4iLAorICAg
ICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBkZXNjcmliZSgiY2FsbGlu
ZyBgcmVzb2x2ZVByb21pc2VgIHRoZW4gYHJlamVjdFByb21pc2VgLCBib3RoIHN5bmNocm9ub3Vz
bHkiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgICAgICB0
aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UsIHJlamVjdFByb21pc2UpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXNvbHZlUHJvbWlzZShzZW50aW5lbCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVqZWN0UHJvbWlzZShvdGhlcik7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAo
cHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rp
b24gKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
dmFsdWUsIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgZGVzY3JpYmUoImNhbGxpbmcgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJv
bm91c2x5IHRoZW4gYHJlamVjdFByb21pc2VgIGFzeW5jaHJvbm91c2x5IiwgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJl
c29sdmVQcm9taXNlLCByZWplY3RQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzb2x2ZVByb21pc2Uoc2VudGluZWwpOworCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlamVjdFByb21pc2Uob3RoZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0s
IDApOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlv
bih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbHVlLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJjYWxsaW5nIGBy
ZXNvbHZlUHJvbWlzZWAgdGhlbiBgcmVqZWN0UHJvbWlzZWAsIGJvdGggYXN5bmNocm9ub3VzbHki
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGVu
OiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UsIHJlamVjdFByb21pc2UpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzb2x2ZVByb21pc2Uoc2VudGluZWwpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sIDApOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
amVjdFByb21pc2Uob3RoZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFj
dG9yeSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJv
bWlzZS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHZhbHVlLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJjYWxsaW5nIGByZXNvbHZl
UHJvbWlzZWAgd2l0aCBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgcHJvbWlzZSwgdGhlbiBj
YWxsaW5nICIgKworICAgICAgICAgICAgICAgICAgICAgImByZWplY3RQcm9taXNlYCwgYm90aCBz
eW5jaHJvbm91c2x5IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhG
YWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAg
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgZC5yZXNvbHZlKHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgfSwgNTAp
OworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgICAg
ICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UsIHJlamVjdFByb21pc2UpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlUHJvbWlzZShkLnByb21pc2UpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlamVjdFByb21pc2Uob3RoZXIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rp
b24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1
bmN0aW9uICh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKHZhbHVlLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7Cisg
ICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJjYWxsaW5nIGByZXNvbHZlUHJvbWlzZWAgd2l0
aCBhbiBhc3luY2hyb25vdXNseS1yZWplY3RlZCBwcm9taXNlLCB0aGVuIGNhbGxpbmcgIiArCisg
ICAgICAgICAgICAgICAgICAgICAiYHJlamVjdFByb21pc2VgLCBib3RoIHN5bmNocm9ub3VzbHki
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkLnJl
amVjdChzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgIH0sIDUwKTsKKworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rp
b24gKHJlc29sdmVQcm9taXNlLCByZWplY3RQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzb2x2ZVByb21pc2UoZC5wcm9taXNlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWplY3RQcm9taXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBk
b25lKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiAo
cmVhc29uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVh
c29uLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgIGRlc2NyaWJlKCJjYWxsaW5nIGByZWplY3RQcm9taXNlYCB0aGVuIGByZXNv
bHZlUHJvbWlzZWAsIGJvdGggc3luY2hyb25vdXNseSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChyZXNvbHZlUHJvbWlz
ZSwgcmVqZWN0UHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdFBy
b21pc2Uoc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVQcm9t
aXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJl
c29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAg
ICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiAocmVhc29uKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29uLCBzZW50aW5lbCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlc2Ny
aWJlKCJjYWxsaW5nIGByZWplY3RQcm9taXNlYCBzeW5jaHJvbm91c2x5IHRoZW4gYHJlc29sdmVQ
cm9taXNlYCBhc3luY2hyb25vdXNseSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBm
dW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChyZXNvbHZlUHJvbWlzZSwgcmVqZWN0
UHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdFByb21pc2Uoc2Vu
dGluZWwpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKG90
aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9u
IChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxs
LCBmdW5jdGlvbiAocmVhc29uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwocmVhc29uLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25l
KCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJjYWxsaW5nIGByZWplY3RQcm9taXNl
YCB0aGVuIGByZXNvbHZlUHJvbWlzZWAsIGJvdGggYXN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAo
cmVzb2x2ZVByb21pc2UsIHJlamVjdFByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVqZWN0UHJvbWlzZShzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSwgMCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVByb21pc2Uo
b3RoZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rp
b24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51
bGwsIGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChyZWFzb24sIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRv
bmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9KTsKKworICAgICAgICAgICAgZGVzY3JpYmUoImNhbGxpbmcgYHJlc29sdmVQcm9t
aXNlYCB0d2ljZSBzeW5jaHJvbm91c2x5IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
IGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4geworICAg
ICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVByb21pc2Uoc2VudGluZWwpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKG90aGVyKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1
bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhl
bihmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbCh2YWx1ZSwgc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgp
OworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICBkZXNjcmliZSgiY2FsbGluZyBgcmVzb2x2ZVByb21pc2Vg
IHR3aWNlLCBmaXJzdCBzeW5jaHJvbm91c2x5IHRoZW4gYXN5bmNocm9ub3VzbHkiLCBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlv
biAocmVzb2x2ZVByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZl
UHJvbWlzZShzZW50aW5lbCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2
ZVByb21pc2Uob3RoZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDApOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9y
eSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlz
ZS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHZhbHVlLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBk
b25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJjYWxsaW5nIGByZXNvbHZlUHJv
bWlzZWAgdHdpY2UsIGJvdGggdGltZXMgYXN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2
ZVByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVByb21pc2Uo
c2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDApOworCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKG90aGVyKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0
ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7
CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAodmFsdWUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWx1ZSwgc2VudGluZWwp
OworICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBk
ZXNjcmliZSgiY2FsbGluZyBgcmVzb2x2ZVByb21pc2VgIHdpdGggYW4gYXN5bmNocm9ub3VzbHkt
ZnVsZmlsbGVkIHByb21pc2UsIHRoZW4gY2FsbGluZyBpdCBhZ2FpbiwgYm90aCAiICsKKyAgICAg
ICAgICAgICAgICAgICAgICJ0aW1lcyBzeW5jaHJvbm91c2x5IiwgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAgICB2
YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZC5yZXNvbHZlKHNlbnRpbmVsKTsKKyAg
ICAgICAgICAgICAgICAgICAgfSwgNTApOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7
CisgICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2Up
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlUHJvbWlzZShkLnByb21pc2Up
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKG90aGVyKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3Rv
cnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21p
c2UudGhlbihmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCh2YWx1ZSwgc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAg
ZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICBkZXNjcmliZSgiY2FsbGluZyBgcmVzb2x2ZVBy
b21pc2VgIHdpdGggYW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgcHJvbWlzZSwgdGhlbiBjYWxs
aW5nIGl0IGFnYWluLCBib3RoICIgKworICAgICAgICAgICAgICAgICAgICAgInRpbWVzIHN5bmNo
cm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3Rv
cnkoKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBkLnJlamVjdChzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgIH0sIDUwKTsKKwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgdGhl
bjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzb2x2ZVByb21pc2UoZC5wcm9taXNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXNvbHZlUHJvbWlzZShvdGhlcik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
dGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkg
eworICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNv
bikgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwg
c2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAg
ICAgICAgICBkZXNjcmliZSgiY2FsbGluZyBgcmVqZWN0UHJvbWlzZWAgdHdpY2Ugc3luY2hyb25v
dXNseSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRoZW46IGZ1bmN0aW9uIChyZXNvbHZlUHJvbWlzZSwgcmVqZWN0UHJvbWlzZSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlamVjdFByb21pc2Uoc2VudGluZWwpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlamVjdFByb21pc2Uob3RoZXIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24g
KHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGws
IGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChyZWFzb24sIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUo
KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICB9KTsKKworICAgICAgICAgICAgZGVzY3JpYmUoImNhbGxpbmcgYHJlamVjdFByb21pc2Vg
IHR3aWNlLCBmaXJzdCBzeW5jaHJvbm91c2x5IHRoZW4gYXN5bmNocm9ub3VzbHkiLCBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlv
biAocmVzb2x2ZVByb21pc2UsIHJlamVjdFByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWplY3RQcm9taXNlKHNlbnRpbmVsKTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWplY3RQcm9taXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29s
dXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAg
ICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiAocmVhc29uKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29uLCBzZW50aW5lbCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJl
KCJjYWxsaW5nIGByZWplY3RQcm9taXNlYCB0d2ljZSwgYm90aCB0aW1lcyBhc3luY2hyb25vdXNs
eSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRo
ZW46IGZ1bmN0aW9uIChyZXNvbHZlUHJvbWlzZSwgcmVqZWN0UHJvbWlzZSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWplY3RQcm9taXNlKHNlbnRpbmVsKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9LCAwKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWplY3RQcm9taXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAwKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZh
Y3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHBy
b21pc2UudGhlbihudWxsLCBmdW5jdGlvbiAocmVhc29uKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29uLCBzZW50aW5lbCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJzYXZpbmcg
YW5kIGFidXNpbmcgYHJlc29sdmVQcm9taXNlYCBhbmQgYHJlamVjdFByb21pc2VgIiwgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIHZhciBzYXZlZFJlc29sdmVQcm9taXNlLCBzYXZlZFJl
amVjdFByb21pc2U7CisKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46
IGZ1bmN0aW9uIChyZXNvbHZlUHJvbWlzZSwgcmVqZWN0UHJvbWlzZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNhdmVkUmVzb2x2ZVByb21pc2UgPSByZXNvbHZlUHJvbWlzZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlZFJlamVjdFByb21pc2UgPSByZWplY3RQcm9t
aXNlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICBzYXZlZFJlc29sdmVQcm9taXNlID0gbnVsbDsKKyAg
ICAgICAgICAgICAgICAgICAgc2F2ZWRSZWplY3RQcm9taXNlID0gbnVsbDsKKyAgICAgICAgICAg
ICAgICB9KTsKKworICAgICAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9y
eSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHRp
bWVzRnVsZmlsbGVkID0gMDsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHRpbWVzUmVqZWN0ZWQg
PSAwOworCisgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbigKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3Rp
bWVzRnVsZmlsbGVkOworICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3Rp
bWVzUmVqZWN0ZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNhdmVkUmVzb2x2ZVByb21pc2UgJiYg
c2F2ZWRSZWplY3RQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzYXZlZFJlc29s
dmVQcm9taXNlKGR1bW15KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVkUmVzb2x2ZVBy
b21pc2UoZHVtbXkpOworICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZWRSZWplY3RQcm9taXNl
KGR1bW15KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVkUmVqZWN0UHJvbWlzZShkdW1t
eSk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVkUmVzb2x2ZVBy
b21pc2UoZHVtbXkpOworICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZWRSZXNvbHZlUHJvbWlz
ZShkdW1teSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzYXZlZFJlamVjdFByb21pc2UoZHVt
bXkpOworICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZWRSZWplY3RQcm9taXNlKGR1bW15KTsK
KyAgICAgICAgICAgICAgICAgICAgfSwgNTApOworCisgICAgICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHRpbWVzRnVsZmlsbGVkLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCh0aW1lc1JlamVjdGVkLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBkZXNjcmliZSgiMi4z
LjMuMy40OiBJZiBjYWxsaW5nIGB0aGVuYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwiLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICBkZXNjcmliZSgiMi4zLjMuMy40LjE6IElmIGByZXNvbHZl
UHJvbWlzZWAgb3IgYHJlamVjdFByb21pc2VgIGhhdmUgYmVlbiBjYWxsZWQsIGlnbm9yZSBpdC4i
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZGVzY3JpYmUoImByZXNvbHZlUHJvbWlz
ZWAgd2FzIGNhbGxlZCB3aXRoIGEgbm9uLXRoZW5hYmxlIiwgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24g
KHJlc29sdmVQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29s
dmVQcm9taXNlKHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhy
b3cgb3RoZXI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAg
IHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAodmFsdWUp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFsdWUs
IHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBkZXNjcmliZSgiYHJlc29sdmVQcm9taXNlYCB3
YXMgY2FsbGVkIHdpdGggYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIHByb21pc2UiLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZC5yZXNvbHZlKHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sIDUw
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVByb21pc2UoZC5wcm9taXNlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgb3RoZXI7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9y
eSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBy
b21pc2UudGhlbihmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwodmFsdWUsIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBk
ZXNjcmliZSgiYHJlc29sdmVQcm9taXNlYCB3YXMgY2FsbGVkIHdpdGggYW4gYXN5bmNocm9ub3Vz
bHktcmVqZWN0ZWQgcHJvbWlzZSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAg
ZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGRl
ZmVycmVkKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnJlamVjdChzZW50aW5lbCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9LCA1MCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29s
dmVQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVQcm9t
aXNlKGQucHJvbWlzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG90
aGVyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIH07CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB0ZXN0
UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNv
bikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZWFz
b24sIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBkZXNjcmliZSgiYHJlamVjdFByb21pc2Vg
IHdhcyBjYWxsZWQiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u
IHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UsIHJlamVj
dFByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0UHJvbWlz
ZShzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG90aGVy
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
IH07CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB0ZXN0UHJv
bWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNvbikg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZWFzb24s
IHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBkZXNjcmliZSgiYHJlc29sdmVQcm9taXNlYCB0
aGVuIGByZWplY3RQcm9taXNlYCB3ZXJlIGNhbGxlZCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChy
ZXNvbHZlUHJvbWlzZSwgcmVqZWN0UHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXNvbHZlUHJvbWlzZShzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlamVjdFByb21pc2Uob3RoZXIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aHJvdyBvdGhlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJv
bWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0
aW9uICh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbCh2YWx1ZSwgc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGRlc2NyaWJlKCJgcmVqZWN0
UHJvbWlzZWAgdGhlbiBgcmVzb2x2ZVByb21pc2VgIHdlcmUgY2FsbGVkIiwgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjog
ZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlLCByZWplY3RQcm9taXNlKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlamVjdFByb21pc2Uoc2VudGluZWwpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXNvbHZlUHJvbWlzZShvdGhlcik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRocm93IG90aGVyOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1
bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNl
LnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZWFzb24sIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgZGVzY3JpYmUoIjIuMy4zLjMuNC4yOiBPdGhlcndpc2UsIHJlamVjdCBg
cHJvbWlzZWAgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4iLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgZGVzY3JpYmUoInN0cmFpZ2h0Zm9yd2FyZCBjYXNlIiwgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBzZW50aW5l
bDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICB9OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBy
b21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIChyZWFzb24p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29u
LCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgZGVzY3JpYmUoImByZXNvbHZlUHJvbWlzZWAg
aXMgY2FsbGVkIGFzeW5jaHJvbm91c2x5IGJlZm9yZSB0aGUgYHRocm93YCIsIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46
IGZ1bmN0aW9uIChyZXNvbHZlUHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc29sdmVQcm9taXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHNl
bnRpbmVsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB0
ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJl
YXNvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChy
ZWFzb24sIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBkZXNjcmliZSgiYHJlamVjdFByb21p
c2VgIGlzIGNhbGxlZCBhc3luY2hyb25vdXNseSBiZWZvcmUgdGhlIGB0aHJvd2AiLCBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UsIHJlamVjdFByb21pc2UpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3RQcm9taXNlKG90aGVyKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRocm93IHNlbnRpbmVsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9u
IChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4o
bnVsbCwgZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbChyZWFzb24sIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgiMi4zLjMuNDogSWYgYHRoZW5gIGlzIG5v
dCBhIGZ1bmN0aW9uLCBmdWxmaWxsIHByb21pc2Ugd2l0aCBgeGAiLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgIGZ1bmN0aW9uIHRlc3RGdWxmaWxsVmlhTm9uRnVuY3Rpb24odGhlbiwgc3RyaW5nUmVw
cmVzZW50YXRpb24pIHsKKyAgICAgICAgICAgIHZhciB4ID0gbnVsbDsKKworICAgICAgICAgICAg
YmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgeCA9IHsgdGhlbjogdGhl
biB9OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkg
eworICAgICAgICAgICAgICAgIHJldHVybiB4OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBkZXNjcmliZSgiYHRoZW5gIGlzICIgKyBzdHJpbmdSZXByZXNlbnRhdGlvbiwgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVu
Y3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVu
KGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHZhbHVlLCB4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIHRlc3RGdWxmaWxsVmlhTm9uRnVuY3Rpb24oNSwgImA1YCIp
OworICAgICAgICB0ZXN0RnVsZmlsbFZpYU5vbkZ1bmN0aW9uKHt9LCAiYW4gb2JqZWN0Iik7Cisg
ICAgICAgIHRlc3RGdWxmaWxsVmlhTm9uRnVuY3Rpb24oW2Z1bmN0aW9uICgpIHsgfV0sICJhbiBh
cnJheSBjb250YWluaW5nIGEgZnVuY3Rpb24iKTsKKyAgICAgICAgdGVzdEZ1bGZpbGxWaWFOb25G
dW5jdGlvbigvYS1iL2ksICJhIHJlZ3VsYXIgZXhwcmVzc2lvbiIpOworICAgICAgICB0ZXN0RnVs
ZmlsbFZpYU5vbkZ1bmN0aW9uKE9iamVjdC5jcmVhdGUoRnVuY3Rpb24ucHJvdG90eXBlKSwgImFu
IG9iamVjdCBpbmhlcml0aW5nIGZyb20gYEZ1bmN0aW9uLnByb3RvdHlwZWAiKTsKKyAgICB9KTsK
K30pOworCit9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgPyBnbG9i
YWwgOiB0eXBlb2Ygc2VsZiAhPT0gInVuZGVmaW5lZCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAh
PT0gInVuZGVmaW5lZCIgPyB3aW5kb3cgOiB7fSkKK30seyIuL2hlbHBlcnMvcmVhc29ucyI6MjAs
Ii4vaGVscGVycy90aGVuYWJsZXMiOjIyLCJhc3NlcnQiOjF9XSwxOTpbZnVuY3Rpb24ocmVxdWly
ZSxtb2R1bGUsZXhwb3J0cyl7CisidXNlIHN0cmljdCI7CisKK3ZhciBhc3NlcnQgPSByZXF1aXJl
KCJhc3NlcnQiKTsKK3ZhciB0ZXN0RnVsZmlsbGVkID0gcmVxdWlyZSgiLi9oZWxwZXJzL3Rlc3RU
aHJlZUNhc2VzIikudGVzdEZ1bGZpbGxlZDsKK3ZhciB0ZXN0UmVqZWN0ZWQgPSByZXF1aXJlKCIu
L2hlbHBlcnMvdGVzdFRocmVlQ2FzZXMiKS50ZXN0UmVqZWN0ZWQ7CisKK3ZhciBkdW1teSA9IHsg
ZHVtbXk6ICJkdW1teSIgfTsgLy8gd2UgZnVsZmlsbCBvciByZWplY3Qgd2l0aCB0aGlzIHdoZW4g
d2UgZG9uJ3QgaW50ZW5kIHRvIHRlc3QgYWdhaW5zdCBpdAorCitkZXNjcmliZSgiMi4zLjQ6IElm
IGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRo
IGB4YCIsIGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0ZXN0VmFsdWUoZXhwZWN0ZWRWYWx1
ZSwgc3RyaW5nUmVwcmVzZW50YXRpb24sIGJlZm9yZUVhY2hIb29rLCBhZnRlckVhY2hIb29rKSB7
CisgICAgICAgIGRlc2NyaWJlKCJUaGUgdmFsdWUgaXMgIiArIHN0cmluZ1JlcHJlc2VudGF0aW9u
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBpZiAodHlwZW9mIGJlZm9yZUVhY2hIb29rID09
PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICAgICAgYmVmb3JlRWFjaChiZWZvcmVFYWNoSG9v
ayk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodHlwZW9mIGFmdGVyRWFjaEhvb2sg
PT09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgICAgICAgICBhZnRlckVhY2goYWZ0ZXJFYWNoSG9v
ayk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRlc3RGdWxmaWxsZWQoZHVtbXksIGZ1
bmN0aW9uIChwcm9taXNlMSwgZG9uZSkgeworICAgICAgICAgICAgICAgIHZhciBwcm9taXNlMiA9
IHByb21pc2UxLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxsZWQoKSB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBleHBlY3RlZFZhbHVlOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICAgICAgcHJvbWlzZTIudGhlbihmdW5jdGlvbiBvblByb21pc2UyRnVsZmlsbGVkKGFjdHVh
bFZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhY3R1YWxW
YWx1ZSwgZXhwZWN0ZWRWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgdGVzdFJlamVjdGVk
KGR1bW15LCBmdW5jdGlvbiAocHJvbWlzZTEsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICB2YXIg
cHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBleHBlY3RlZFZhbHVlOworICAgICAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICAgICAgcHJvbWlzZTIudGhlbihmdW5jdGlvbiBvblByb21pc2Uy
RnVsZmlsbGVkKGFjdHVhbFZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbChhY3R1YWxWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAg
IGRvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKyAgICB9CisKKyAgICB0ZXN0VmFsdWUodW5kZWZpbmVkLCAiYHVuZGVmaW5lZGAiKTsKKyAg
ICB0ZXN0VmFsdWUobnVsbCwgImBudWxsYCIpOworICAgIHRlc3RWYWx1ZShmYWxzZSwgImBmYWxz
ZWAiKTsKKyAgICB0ZXN0VmFsdWUodHJ1ZSwgImB0cnVlYCIpOworICAgIHRlc3RWYWx1ZSgwLCAi
YDBgIik7CisKKyAgICB0ZXN0VmFsdWUoCisgICAgICAgIHRydWUsCisgICAgICAgICJgdHJ1ZWAg
d2l0aCBgQm9vbGVhbi5wcm90b3R5cGVgIG1vZGlmaWVkIHRvIGhhdmUgYSBgdGhlbmAgbWV0aG9k
IiwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgQm9vbGVhbi5wcm90b3R5cGUu
dGhlbiA9IGZ1bmN0aW9uICgpIHt9OworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICBkZWxldGUgQm9vbGVhbi5wcm90b3R5cGUudGhlbjsKKyAgICAgICAgfQor
ICAgICk7CisKKyAgICB0ZXN0VmFsdWUoCisgICAgICAgIDEsCisgICAgICAgICJgMWAgd2l0aCBg
TnVtYmVyLnByb3RvdHlwZWAgbW9kaWZpZWQgdG8gaGF2ZSBhIGB0aGVuYCBtZXRob2QiLAorICAg
ICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBOdW1iZXIucHJvdG90eXBlLnRoZW4gPSBm
dW5jdGlvbiAoKSB7fTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgZGVsZXRlIE51bWJlci5wcm90b3R5cGUudGhlbjsKKyAgICAgICAgfQorICAgICk7Cit9
KTsKKworfSx7Ii4vaGVscGVycy90ZXN0VGhyZWVDYXNlcyI6MjEsImFzc2VydCI6MX1dLDIwOltm
dW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyhmdW5jdGlvbiAoZ2xvYmFsKXsKKyJ1
c2Ugc3RyaWN0IjsKKworLy8gVGhpcyBtb2R1bGUgZXhwb3J0cyBzb21lIHZhbGlkIHJlamVjdGlv
biByZWFzb24gZmFjdG9yaWVzLCBrZXllZCBieSBodW1hbi1yZWFkYWJsZSB2ZXJzaW9ucyBvZiB0
aGVpciBuYW1lcy4KKwordmFyIGFkYXB0ZXIgPSBnbG9iYWwuYWRhcHRlcjsKK3ZhciByZXNvbHZl
ZCA9IGFkYXB0ZXIucmVzb2x2ZWQ7Cit2YXIgcmVqZWN0ZWQgPSBhZGFwdGVyLnJlamVjdGVkOwor
Cit2YXIgZHVtbXkgPSB7IGR1bW15OiAiZHVtbXkiIH07CisKK2V4cG9ydHNbImB1bmRlZmluZWRg
Il0gPSBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIHVuZGVmaW5lZDsKK307CisKK2V4cG9ydHNb
ImBudWxsYCJdID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBudWxsOworfTsKKworZXhwb3J0
c1siYGZhbHNlYCJdID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBmYWxzZTsKK307CisKK2V4
cG9ydHNbImAwYCJdID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiAwOworfTsKKworZXhwb3J0
c1siYW4gZXJyb3IiXSA9IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gbmV3IEVycm9yKCk7Cit9
OworCitleHBvcnRzWyJhbiBlcnJvciB3aXRob3V0IGEgc3RhY2siXSA9IGZ1bmN0aW9uICgpIHsK
KyAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoKTsKKyAgICBkZWxldGUgZXJyb3Iuc3RhY2s7CisK
KyAgICByZXR1cm4gZXJyb3I7Cit9OworCitleHBvcnRzWyJhIGRhdGUiXSA9IGZ1bmN0aW9uICgp
IHsKKyAgICByZXR1cm4gbmV3IERhdGUoKTsKK307CisKK2V4cG9ydHNbImFuIG9iamVjdCJdID0g
ZnVuY3Rpb24gKCkgeworICAgIHJldHVybiB7fTsKK307CisKK2V4cG9ydHNbImFuIGFsd2F5cy1w
ZW5kaW5nIHRoZW5hYmxlIl0gPSBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIHsgdGhlbjogZnVu
Y3Rpb24gKCkgeyB9IH07Cit9OworCitleHBvcnRzWyJhIGZ1bGZpbGxlZCBwcm9taXNlIl0gPSBm
dW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIHJlc29sdmVkKGR1bW15KTsKK307CisKK2V4cG9ydHNb
ImEgcmVqZWN0ZWQgcHJvbWlzZSJdID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiByZWplY3Rl
ZChkdW1teSk7Cit9OworCit9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5l
ZCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gInVuZGVmaW5lZCIgPyBzZWxmIDogdHlwZW9m
IHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgPyB3aW5kb3cgOiB7fSkKK30se31dLDIxOltmdW5jdGlv
bihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyhmdW5jdGlvbiAoZ2xvYmFsKXsKKyJ1c2Ugc3Ry
aWN0IjsKKwordmFyIGFkYXB0ZXIgPSBnbG9iYWwuYWRhcHRlcjsKK3ZhciByZXNvbHZlZCA9IGFk
YXB0ZXIucmVzb2x2ZWQ7Cit2YXIgcmVqZWN0ZWQgPSBhZGFwdGVyLnJlamVjdGVkOwordmFyIGRl
ZmVycmVkID0gYWRhcHRlci5kZWZlcnJlZDsKKworZXhwb3J0cy50ZXN0RnVsZmlsbGVkID0gZnVu
Y3Rpb24gKHZhbHVlLCB0ZXN0KSB7CisgICAgc3BlY2lmeSgiYWxyZWFkeS1mdWxmaWxsZWQiLCBm
dW5jdGlvbiAoZG9uZSkgeworICAgICAgICB0ZXN0KHJlc29sdmVkKHZhbHVlKSwgZG9uZSk7Cisg
ICAgfSk7CisKKyAgICBzcGVjaWZ5KCJpbW1lZGlhdGVseS1mdWxmaWxsZWQiLCBmdW5jdGlvbiAo
ZG9uZSkgeworICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgIHRlc3QoZC5wcm9t
aXNlLCBkb25lKTsKKyAgICAgICAgZC5yZXNvbHZlKHZhbHVlKTsKKyAgICB9KTsKKworICAgIHNw
ZWNpZnkoImV2ZW50dWFsbHktZnVsZmlsbGVkIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAg
dmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICB0ZXN0KGQucHJvbWlzZSwgZG9uZSk7CisgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZC5yZXNvbHZlKHZhbHVl
KTsKKyAgICAgICAgfSwgNTApOworICAgIH0pOworfTsKKworZXhwb3J0cy50ZXN0UmVqZWN0ZWQg
PSBmdW5jdGlvbiAocmVhc29uLCB0ZXN0KSB7CisgICAgc3BlY2lmeSgiYWxyZWFkeS1yZWplY3Rl
ZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIHRlc3QocmVqZWN0ZWQocmVhc29uKSwgZG9u
ZSk7CisgICAgfSk7CisKKyAgICBzcGVjaWZ5KCJpbW1lZGlhdGVseS1yZWplY3RlZCIsIGZ1bmN0
aW9uIChkb25lKSB7CisgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgdGVzdChk
LnByb21pc2UsIGRvbmUpOworICAgICAgICBkLnJlamVjdChyZWFzb24pOworICAgIH0pOworCisg
ICAgc3BlY2lmeSgiZXZlbnR1YWxseS1yZWplY3RlZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAg
ICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgdGVzdChkLnByb21pc2UsIGRvbmUpOwor
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGQucmVqZWN0KHJl
YXNvbik7CisgICAgICAgIH0sIDUwKTsKKyAgICB9KTsKK307CisKK30pLmNhbGwodGhpcyx0eXBl
b2YgZ2xvYmFsICE9PSAidW5kZWZpbmVkIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSAidW5k
ZWZpbmVkIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSAidW5kZWZpbmVkIiA/IHdpbmRvdyA6
IHt9KQorfSx7fV0sMjI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworKGZ1bmN0
aW9uIChnbG9iYWwpeworInVzZSBzdHJpY3QiOworCit2YXIgYWRhcHRlciA9IGdsb2JhbC5hZGFw
dGVyOwordmFyIHJlc29sdmVkID0gYWRhcHRlci5yZXNvbHZlZDsKK3ZhciByZWplY3RlZCA9IGFk
YXB0ZXIucmVqZWN0ZWQ7Cit2YXIgZGVmZXJyZWQgPSBhZGFwdGVyLmRlZmVycmVkOworCit2YXIg
b3RoZXIgPSB7IG90aGVyOiAib3RoZXIiIH07IC8vIGEgdmFsdWUgd2UgZG9uJ3Qgd2FudCB0byBi
ZSBzdHJpY3QgZXF1YWwgdG8KKworZXhwb3J0cy5mdWxmaWxsZWQgPSB7CisgICAgImEgc3luY2hy
b25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIjogZnVuY3Rpb24gKHZhbHVlKSB7Cisg
ICAgICAgIHJldHVybiB7CisgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAob25GdWxmaWxsZWQp
IHsKKyAgICAgICAgICAgICAgICBvbkZ1bGZpbGxlZCh2YWx1ZSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisgICAgfSwKKworICAgICJhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3Vz
dG9tIHRoZW5hYmxlIjogZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAgIHJldHVybiB7CisgICAg
ICAgICAgICB0aGVuOiBmdW5jdGlvbiAob25GdWxmaWxsZWQpIHsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgb25GdWxmaWxsZWQo
dmFsdWUpOworICAgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
OworICAgIH0sCisKKyAgICAiYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVu
YWJsZSI6IGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICB2YXIgbnVtYmVyT2ZUaW1lc1RoZW5S
ZXRyaWV2ZWQgPSAwOworICAgICAgICByZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsLCB7CisgICAg
ICAgICAgICB0aGVuOiB7CisgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChudW1iZXJPZlRpbWVzVGhlblJldHJpZXZlZCA9PT0gMCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgKytudW1iZXJPZlRpbWVzVGhlblJldHJpZXZlZDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAob25GdWxmaWxsZWQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZ1bGZpbGxlZCh2YWx1ZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSk7CisgICAgfSwKKworICAgICJhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0
d2ljZSI6IGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICByZXR1cm4geworICAgICAgICAgICAg
dGhlbjogZnVuY3Rpb24gKG9uRnVsZmlsbGVkKSB7CisgICAgICAgICAgICAgICAgb25GdWxmaWxs
ZWQodmFsdWUpOworICAgICAgICAgICAgICAgIG9uRnVsZmlsbGVkKG90aGVyKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfTsKKyAgICB9LAorCisgICAgImEgdGhlbmFibGUgdGhhdCBmdWxmaWxs
cyBidXQgdGhlbiB0aHJvd3MiOiBmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHsK
KyAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCkgeworICAgICAgICAgICAg
ICAgIG9uRnVsZmlsbGVkKHZhbHVlKTsKKyAgICAgICAgICAgICAgICB0aHJvdyBvdGhlcjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9LAorCisgICAgImFuIGFscmVhZHktZnVsZmls
bGVkIHByb21pc2UiOiBmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVk
KHZhbHVlKTsKKyAgICB9LAorCisgICAgImFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2Ui
OiBmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGQucmVzb2x2ZSh2YWx1ZSk7
CisgICAgICAgIH0sIDUwKTsKKyAgICAgICAgcmV0dXJuIGQucHJvbWlzZTsKKyAgICB9Cit9Owor
CitleHBvcnRzLnJlamVjdGVkID0geworICAgICJhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3Vz
dG9tIHRoZW5hYmxlIjogZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICByZXR1cm4geworICAg
ICAgICAgICAgdGhlbjogZnVuY3Rpb24gKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7CisgICAg
ICAgICAgICAgICAgb25SZWplY3RlZChyZWFzb24pOworICAgICAgICAgICAgfQorICAgICAgICB9
OworICAgIH0sCisKKyAgICAiYW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5h
YmxlIjogZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICByZXR1cm4geworICAgICAgICAgICAg
dGhlbjogZnVuY3Rpb24gKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7CisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIG9uUmVqZWN0
ZWQocmVhc29uKTsKKyAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfTsKKyAgICB9LAorCisgICAgImEgc3luY2hyb25vdXNseS1yZWplY3RlZCBvbmUtdGltZSB0
aGVuYWJsZSI6IGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICAgICAgdmFyIG51bWJlck9mVGltZXNU
aGVuUmV0cmlldmVkID0gMDsKKyAgICAgICAgcmV0dXJuIE9iamVjdC5jcmVhdGUobnVsbCwgewor
ICAgICAgICAgICAgdGhlbjogeworICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZUaW1lc1RoZW5SZXRyaWV2ZWQgPT09IDAp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbnVtYmVyT2ZUaW1lc1RoZW5SZXRyaWV2ZWQ7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG9uRnVsZmlsbGVkLCBv
blJlamVjdGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25SZWplY3RlZChyZWFz
b24pOworICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0sCisKKyAgICAiYSB0aGVuYWJsZSB0aGF0IGlt
bWVkaWF0ZWx5IHRocm93cyBpbiBgdGhlbmAiOiBmdW5jdGlvbiAocmVhc29uKSB7CisgICAgICAg
IHJldHVybiB7CisgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgdGhyb3cgcmVhc29uOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0sCisKKyAg
ICAiYW4gb2JqZWN0IHdpdGggYSB0aHJvd2luZyBgdGhlbmAgYWNjZXNzb3IiOiBmdW5jdGlvbiAo
cmVhc29uKSB7CisgICAgICAgIHJldHVybiBPYmplY3QuY3JlYXRlKG51bGwsIHsKKyAgICAgICAg
ICAgIHRoZW46IHsKKyAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGhyb3cgcmVhc29uOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSk7CisgICAgfSwKKworICAgICJhbiBhbHJlYWR5LXJlamVjdGVkIHByb21p
c2UiOiBmdW5jdGlvbiAocmVhc29uKSB7CisgICAgICAgIHJldHVybiByZWplY3RlZChyZWFzb24p
OworICAgIH0sCisKKyAgICAiYW4gZXZlbnR1YWxseS1yZWplY3RlZCBwcm9taXNlIjogZnVuY3Rp
b24gKHJlYXNvbikgeworICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZC5yZWplY3QocmVhc29uKTsKKyAgICAg
ICAgfSwgNTApOworICAgICAgICByZXR1cm4gZC5wcm9taXNlOworICAgIH0KK307CisKK30pLmNh
bGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSAidW5kZWZpbmVkIiA/IGdsb2JhbCA6IHR5cGVvZiBz
ZWxmICE9PSAidW5kZWZpbmVkIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSAidW5kZWZpbmVk
IiA/IHdpbmRvdyA6IHt9KQorfSx7fV0sMjM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9y
dHMpeworLypqc2xpbnQgZXFlcWVxOiBmYWxzZSwgb25ldmFyOiBmYWxzZSwgZm9yaW46IHRydWUs
IG5vbWVuOiBmYWxzZSwgcmVnZXhwOiBmYWxzZSwgcGx1c3BsdXM6IGZhbHNlKi8KKy8qZ2xvYmFs
IG1vZHVsZSwgcmVxdWlyZSwgX19kaXJuYW1lLCBkb2N1bWVudCovCisvKioKKyAqIFNpbm9uIGNv
cmUgdXRpbGl0aWVzLiBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuCisgKgorICogQGF1dGhvciBDaHJp
c3RpYW4gSm9oYW5zZW4gKGNocmlzdGlhbkBjam9oYW5zZW4ubm8pCisgKiBAbGljZW5zZSBCU0QK
KyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMyBDaHJpc3RpYW4gSm9oYW5zZW4KKyAqLwor
InVzZSBzdHJpY3QiOworCit2YXIgc2lub24gPSAoZnVuY3Rpb24gKGZvcm1hdGlvKSB7CisgICAg
dmFyIGRpdiA9IHR5cGVvZiBkb2N1bWVudCAhPSAidW5kZWZpbmVkIiAmJiBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICB2YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNP
d25Qcm9wZXJ0eTsKKworICAgIGZ1bmN0aW9uIGlzRE9NTm9kZShvYmopIHsKKyAgICAgICAgdmFy
IHN1Y2Nlc3MgPSBmYWxzZTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgb2JqLmFwcGVu
ZENoaWxkKGRpdik7CisgICAgICAgICAgICBzdWNjZXNzID0gZGl2LnBhcmVudE5vZGUgPT0gb2Jq
OworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG9iai5y
ZW1vdmVDaGlsZChkaXYpOworICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAg
ICAgIC8vIFJlbW92ZSBmYWlsZWQsIG5vdCBtdWNoIHdlIGNhbiBkbyBhYm91dCB0aGF0CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBpc0VsZW1lbnQob2JqKSB7CisgICAgICAgIHJldHVybiBkaXYgJiYgb2Jq
ICYmIG9iai5ub2RlVHlwZSA9PT0gMSAmJiBpc0RPTU5vZGUob2JqKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBpc0Z1bmN0aW9uKG9iaikgeworICAgICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0g
ImZ1bmN0aW9uIiB8fCAhIShvYmogJiYgb2JqLmNvbnN0cnVjdG9yICYmIG9iai5jYWxsICYmIG9i
ai5hcHBseSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gaXNSZWFsbHlOYU4odmFsKSB7CisgICAg
ICAgIHJldHVybiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJyAmJiBpc05hTih2YWwpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIG1pcnJvclByb3BlcnRpZXModGFyZ2V0LCBzb3VyY2UpIHsKKyAgICAg
ICAgZm9yICh2YXIgcHJvcCBpbiBzb3VyY2UpIHsKKyAgICAgICAgICAgIGlmICghaGFzT3duLmNh
bGwodGFyZ2V0LCBwcm9wKSkgeworICAgICAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJj
ZVtwcm9wXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9u
IGlzUmVzdG9yYWJsZSAob2JqKSB7CisgICAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSAiZnVu
Y3Rpb24iICYmIHR5cGVvZiBvYmoucmVzdG9yZSA9PT0gImZ1bmN0aW9uIiAmJiBvYmoucmVzdG9y
ZS5zaW5vbjsKKyAgICB9CisKKyAgICB2YXIgc2lub24gPSB7CisgICAgICAgIHdyYXBNZXRob2Q6
IGZ1bmN0aW9uIHdyYXBNZXRob2Qob2JqZWN0LCBwcm9wZXJ0eSwgbWV0aG9kKSB7CisgICAgICAg
ICAgICBpZiAoIW9iamVjdCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3Io
IlNob3VsZCB3cmFwIHByb3BlcnR5IG9mIG9iamVjdCIpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCAhPSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiTWV0aG9kIHdyYXBwZXIgc2hvdWxkIGJlIGZ1bmN0aW9u
Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3cmFwcGVkTWV0aG9kID0gb2Jq
ZWN0W3Byb3BlcnR5XSwKKyAgICAgICAgICAgICAgICBlcnJvcjsKKworICAgICAgICAgICAgaWYg
KCFpc0Z1bmN0aW9uKHdyYXBwZWRNZXRob2QpKSB7CisgICAgICAgICAgICAgICAgZXJyb3IgPSBu
ZXcgVHlwZUVycm9yKCJBdHRlbXB0ZWQgdG8gd3JhcCAiICsgKHR5cGVvZiB3cmFwcGVkTWV0aG9k
KSArICIgcHJvcGVydHkgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
cm9wZXJ0eSArICIgYXMgZnVuY3Rpb24iKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAod3JhcHBl
ZE1ldGhvZC5yZXN0b3JlICYmIHdyYXBwZWRNZXRob2QucmVzdG9yZS5zaW5vbikgeworICAgICAg
ICAgICAgICAgIGVycm9yID0gbmV3IFR5cGVFcnJvcigiQXR0ZW1wdGVkIHRvIHdyYXAgIiArIHBy
b3BlcnR5ICsgIiB3aGljaCBpcyBhbHJlYWR5IHdyYXBwZWQiKTsKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAod3JhcHBlZE1ldGhvZC5jYWxsZWRCZWZvcmUpIHsKKyAgICAgICAgICAgICAgICB2YXIg
dmVyYiA9ICEhd3JhcHBlZE1ldGhvZC5yZXR1cm5zID8gInN0dWJiZWQiIDogInNwaWVkIG9uIjsK
KyAgICAgICAgICAgICAgICBlcnJvciA9IG5ldyBUeXBlRXJyb3IoIkF0dGVtcHRlZCB0byB3cmFw
ICIgKyBwcm9wZXJ0eSArICIgd2hpY2ggaXMgYWxyZWFkeSAiICsgdmVyYik7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgICAgIGlmICh3cmFw
cGVkTWV0aG9kICYmIHdyYXBwZWRNZXRob2QuX3N0YWNrKSB7CisgICAgICAgICAgICAgICAgICAg
IGVycm9yLnN0YWNrICs9ICdcbi0tLS0tLS0tLS0tLS0tXG4nICsgd3JhcHBlZE1ldGhvZC5fc3Rh
Y2s7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRocm93IGVycm9yOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJRSA4IGRvZXMgbm90IHN1cHBvcnQgaGFzT3du
UHJvcGVydHkgb24gdGhlIHdpbmRvdyBvYmplY3QgYW5kIEZpcmVmb3ggaGFzIGEgcHJvYmxlbQor
ICAgICAgICAgICAgLy8gd2hlbiB1c2luZyBoYXNPd24uY2FsbCBvbiBvYmplY3RzIGZyb20gb3Ro
ZXIgZnJhbWVzLgorICAgICAgICAgICAgdmFyIG93bmVkID0gb2JqZWN0Lmhhc093blByb3BlcnR5
ID8gb2JqZWN0Lmhhc093blByb3BlcnR5KHByb3BlcnR5KSA6IGhhc093bi5jYWxsKG9iamVjdCwg
cHJvcGVydHkpOworICAgICAgICAgICAgb2JqZWN0W3Byb3BlcnR5XSA9IG1ldGhvZDsKKyAgICAg
ICAgICAgIG1ldGhvZC5kaXNwbGF5TmFtZSA9IHByb3BlcnR5OworICAgICAgICAgICAgLy8gU2V0
IHVwIGEgc3RhY2sgdHJhY2Ugd2hpY2ggY2FuIGJlIHVzZWQgbGF0ZXIgdG8gZmluZCB3aGF0IGxp
bmUgb2YKKyAgICAgICAgICAgIC8vIGNvZGUgdGhlIG9yaWdpbmFsIG1ldGhvZCB3YXMgY3JlYXRl
ZCBvbi4KKyAgICAgICAgICAgIG1ldGhvZC5fc3RhY2sgPSAobmV3IEVycm9yKCdTdGFjayBUcmFj
ZSBmb3Igb3JpZ2luYWwnKSkuc3RhY2s7CisKKyAgICAgICAgICAgIG1ldGhvZC5yZXN0b3JlID0g
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIC8vIEZvciBwcm90b3R5cGUgcHJvcGVydGll
cyB0cnkgdG8gcmVzZXQgYnkgZGVsZXRlIGZpcnN0LgorICAgICAgICAgICAgICAgIC8vIElmIHRo
aXMgZmFpbHMgKGV4OiBsb2NhbFN0b3JhZ2Ugb24gbW9iaWxlIHNhZmFyaSkgdGhlbiBmb3JjZSBh
IHJlc2V0CisgICAgICAgICAgICAgICAgLy8gdmlhIGRpcmVjdCBhc3NpZ25tZW50LgorICAgICAg
ICAgICAgICAgIGlmICghb3duZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9iamVj
dFtwcm9wZXJ0eV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChvYmpl
Y3RbcHJvcGVydHldID09PSBtZXRob2QpIHsKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0W3By
b3BlcnR5XSA9IHdyYXBwZWRNZXRob2Q7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fTsKKworICAgICAgICAgICAgbWV0aG9kLnJlc3RvcmUuc2lub24gPSB0cnVlOworICAgICAgICAg
ICAgbWlycm9yUHJvcGVydGllcyhtZXRob2QsIHdyYXBwZWRNZXRob2QpOworCisgICAgICAgICAg
ICByZXR1cm4gbWV0aG9kOworICAgICAgICB9LAorCisgICAgICAgIGV4dGVuZDogZnVuY3Rpb24g
ZXh0ZW5kKHRhcmdldCkgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDEsIGwgPSBhcmd1bWVu
dHMubGVuZ3RoOyBpIDwgbDsgaSArPSAxKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgcHJv
cCBpbiBhcmd1bWVudHNbaV0pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c1tp
XS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0
W3Byb3BdID0gYXJndW1lbnRzW2ldW3Byb3BdOworICAgICAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICAgICAgLy8gRE9OVCBFTlVNIGJ1Zywgb25seSBjYXJlIGFib3V0IHRvU3Ry
aW5nCisgICAgICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudHNbaV0uaGFzT3duUHJvcGVydHko
InRvU3RyaW5nIikgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1tpXS50b1N0
cmluZyAhPSB0YXJnZXQudG9TdHJpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdl
dC50b1N0cmluZyA9IGFyZ3VtZW50c1tpXS50b1N0cmluZzsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IHRhcmdldDsKKyAgICAgICAgfSwKKworICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uIGNyZWF0ZShw
cm90bykgeworICAgICAgICAgICAgdmFyIEYgPSBmdW5jdGlvbiAoKSB7fTsKKyAgICAgICAgICAg
IEYucHJvdG90eXBlID0gcHJvdG87CisgICAgICAgICAgICByZXR1cm4gbmV3IEYoKTsKKyAgICAg
ICAgfSwKKworICAgICAgICBkZWVwRXF1YWw6IGZ1bmN0aW9uIGRlZXBFcXVhbChhLCBiKSB7Cisg
ICAgICAgICAgICBpZiAoc2lub24ubWF0Y2ggJiYgc2lub24ubWF0Y2guaXNNYXRjaGVyKGEpKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGEudGVzdChiKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKHR5cGVvZiBhICE9ICdvYmplY3QnIHx8IHR5cGVvZiBiICE9ICdvYmplY3Qn
KSB7CisgICAgICAgICAgICAgICAgaWYgKGlzUmVhbGx5TmFOKGEpICYmIGlzUmVhbGx5TmFOKGIp
KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBhID09PSBiOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGlzRWxlbWVudChhKSB8fCBp
c0VsZW1lbnQoYikpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYSA9PT0gYjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKGEgPT09IGIpIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKChhID09PSBudWxsICYm
IGIgIT09IG51bGwpIHx8IChhICE9PSBudWxsICYmIGIgPT09IG51bGwpKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYSBp
bnN0YW5jZW9mIFJlZ0V4cCAmJiBiIGluc3RhbmNlb2YgUmVnRXhwKSB7CisgICAgICAgICAgICAg
IHJldHVybiAoYS5zb3VyY2UgPT09IGIuc291cmNlKSAmJiAoYS5nbG9iYWwgPT09IGIuZ2xvYmFs
KSAmJgorICAgICAgICAgICAgICAgIChhLmlnbm9yZUNhc2UgPT09IGIuaWdub3JlQ2FzZSkgJiYg
KGEubXVsdGlsaW5lID09PSBiLm11bHRpbGluZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciBhU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpOworICAg
ICAgICAgICAgaWYgKGFTdHJpbmcgIT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGIp
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoYVN0cmluZyA9PSAiW29iamVjdCBEYXRlXSIpIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gYS52YWx1ZU9mKCkgPT09IGIudmFsdWVPZigpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgcHJvcCwgYUxlbmd0aCA9IDAsIGJMZW5ndGggPSAwOworCisgICAgICAg
ICAgICBpZiAoYVN0cmluZyA9PSAiW29iamVjdCBBcnJheV0iICYmIGEubGVuZ3RoICE9PSBiLmxl
bmd0aCkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZm9yIChwcm9wIGluIGEpIHsKKyAgICAgICAgICAgICAgICBhTGVuZ3RoICs9
IDE7CisKKyAgICAgICAgICAgICAgICBpZiAoIShwcm9wIGluIGIpKSB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBpZiAoIWRlZXBFcXVhbChhW3Byb3BdLCBiW3Byb3BdKSkgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBmb3IgKHByb3AgaW4gYikgeworICAgICAgICAgICAgICAgIGJMZW5ndGggKz0gMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGFMZW5ndGggPT0gYkxlbmd0aDsK
KyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbk5hbWU6IGZ1bmN0aW9uIGZ1bmN0aW9uTmFt
ZShmdW5jKSB7CisgICAgICAgICAgICB2YXIgbmFtZSA9IGZ1bmMuZGlzcGxheU5hbWUgfHwgZnVu
Yy5uYW1lOworCisgICAgICAgICAgICAvLyBVc2UgZnVuY3Rpb24gZGVjb21wb3NpdGlvbiBhcyBh
IGxhc3QgcmVzb3J0IHRvIGdldCBmdW5jdGlvbgorICAgICAgICAgICAgLy8gbmFtZS4gRG9lcyBu
b3QgcmVseSBvbiBmdW5jdGlvbiBkZWNvbXBvc2l0aW9uIHRvIHdvcmsgLSBpZiBpdAorICAgICAg
ICAgICAgLy8gZG9lc24ndCBkZWJ1Z2dpbmcgd2lsbCBiZSBzbGlnaHRseSBsZXNzIGluZm9ybWF0
aXZlCisgICAgICAgICAgICAvLyAoaS5lLiB0b1N0cmluZyB3aWxsIHNheSAnc3B5JyByYXRoZXIg
dGhhbiAnbXlGdW5jJykuCisgICAgICAgICAgICBpZiAoIW5hbWUpIHsKKyAgICAgICAgICAgICAg
ICB2YXIgbWF0Y2hlcyA9IGZ1bmMudG9TdHJpbmcoKS5tYXRjaCgvZnVuY3Rpb24gKFteXHNcKF0r
KS8pOworICAgICAgICAgICAgICAgIG5hbWUgPSBtYXRjaGVzICYmIG1hdGNoZXNbMV07CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBuYW1lOworICAgICAgICB9LAorCisgICAg
ICAgIGZ1bmN0aW9uVG9TdHJpbmc6IGZ1bmN0aW9uIHRvU3RyaW5nKCkgeworICAgICAgICAgICAg
aWYgKHRoaXMuZ2V0Q2FsbCAmJiB0aGlzLmNhbGxDb3VudCkgeworICAgICAgICAgICAgICAgIHZh
ciB0aGlzVmFsdWUsIHByb3AsIGkgPSB0aGlzLmNhbGxDb3VudDsKKworICAgICAgICAgICAgICAg
IHdoaWxlIChpLS0pIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpc1ZhbHVlID0gdGhpcy5nZXRD
YWxsKGkpLnRoaXNWYWx1ZTsKKworICAgICAgICAgICAgICAgICAgICBmb3IgKHByb3AgaW4gdGhp
c1ZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1ZhbHVlW3Byb3BdID09
PSB0aGlzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3A7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlO
YW1lIHx8ICJzaW5vbiBmYWtlIjsKKyAgICAgICAgfSwKKworICAgICAgICBnZXRDb25maWc6IGZ1
bmN0aW9uIChjdXN0b20pIHsKKyAgICAgICAgICAgIHZhciBjb25maWcgPSB7fTsKKyAgICAgICAg
ICAgIGN1c3RvbSA9IGN1c3RvbSB8fCB7fTsKKyAgICAgICAgICAgIHZhciBkZWZhdWx0cyA9IHNp
bm9uLmRlZmF1bHRDb25maWc7CisKKyAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gZGVmYXVs
dHMpIHsKKyAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdHMuaGFzT3duUHJvcGVydHkocHJvcCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgY29uZmlnW3Byb3BdID0gY3VzdG9tLmhhc093blByb3Bl
cnR5KHByb3ApID8gY3VzdG9tW3Byb3BdIDogZGVmYXVsdHNbcHJvcF07CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gY29uZmlnOworICAgICAg
ICB9LAorCisgICAgICAgIGZvcm1hdDogZnVuY3Rpb24gKHZhbCkgeworICAgICAgICAgICAgcmV0
dXJuICIiICsgdmFsOworICAgICAgICB9LAorCisgICAgICAgIGRlZmF1bHRDb25maWc6IHsKKyAg
ICAgICAgICAgIGluamVjdEludG9UaGlzOiB0cnVlLAorICAgICAgICAgICAgaW5qZWN0SW50bzog
bnVsbCwKKyAgICAgICAgICAgIHByb3BlcnRpZXM6IFsic3B5IiwgInN0dWIiLCAibW9jayIsICJj
bG9jayIsICJzZXJ2ZXIiLCAicmVxdWVzdHMiXSwKKyAgICAgICAgICAgIHVzZUZha2VUaW1lcnM6
IHRydWUsCisgICAgICAgICAgICB1c2VGYWtlU2VydmVyOiB0cnVlCisgICAgICAgIH0sCisKKyAg
ICAgICAgdGltZXNJbldvcmRzOiBmdW5jdGlvbiB0aW1lc0luV29yZHMoY291bnQpIHsKKyAgICAg
ICAgICAgIHJldHVybiBjb3VudCA9PSAxICYmICJvbmNlIiB8fAorICAgICAgICAgICAgICAgIGNv
dW50ID09IDIgJiYgInR3aWNlIiB8fAorICAgICAgICAgICAgICAgIGNvdW50ID09IDMgJiYgInRo
cmljZSIgfHwKKyAgICAgICAgICAgICAgICAoY291bnQgfHwgMCkgKyAiIHRpbWVzIjsKKyAgICAg
ICAgfSwKKworICAgICAgICBjYWxsZWRJbk9yZGVyOiBmdW5jdGlvbiAoc3BpZXMpIHsKKyAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAxLCBsID0gc3BpZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFzcGllc1tpIC0gMV0uY2FsbGVkQmVmb3JlKHNwaWVzW2ldKSB8
fCAhc3BpZXNbaV0uY2FsbGVkKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9LAorCisgICAgICAgIG9yZGVyQnlGaXJzdENhbGw6IGZ1bmN0aW9uIChz
cGllcykgeworICAgICAgICAgICAgcmV0dXJuIHNwaWVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsK
KyAgICAgICAgICAgICAgICAvLyB1dWlkLCB3b24ndCBldmVyIGJlIGVxdWFsCisgICAgICAgICAg
ICAgICAgdmFyIGFDYWxsID0gYS5nZXRDYWxsKDApOworICAgICAgICAgICAgICAgIHZhciBiQ2Fs
bCA9IGIuZ2V0Q2FsbCgwKTsKKyAgICAgICAgICAgICAgICB2YXIgYUlkID0gYUNhbGwgJiYgYUNh
bGwuY2FsbElkIHx8IC0xOworICAgICAgICAgICAgICAgIHZhciBiSWQgPSBiQ2FsbCAmJiBiQ2Fs
bC5jYWxsSWQgfHwgLTE7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gYUlkIDwgYklkID8gLTEg
OiAxOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sCisKKyAgICAgICAgbG9nOiBmdW5jdGlv
biAoKSB7fSwKKworICAgICAgICBsb2dFcnJvcjogZnVuY3Rpb24gKGxhYmVsLCBlcnIpIHsKKyAg
ICAgICAgICAgIHZhciBtc2cgPSBsYWJlbCArICIgdGhyZXcgZXhjZXB0aW9uOiAiOworICAgICAg
ICAgICAgc2lub24ubG9nKG1zZyArICJbIiArIGVyci5uYW1lICsgIl0gIiArIGVyci5tZXNzYWdl
KTsKKyAgICAgICAgICAgIGlmIChlcnIuc3RhY2spIHsgc2lub24ubG9nKGVyci5zdGFjayk7IH0K
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ZXJyLm1lc3NhZ2UgPSBtc2cgKyBlcnIubWVzc2FnZTsKKyAgICAgICAgICAgICAgICB0aHJvdyBl
cnI7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfSwKKworICAgICAgICB0eXBlT2Y6IGZ1
bmN0aW9uICh2YWx1ZSkgeworICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuICJudWxsIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVs
c2UgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gInVu
ZGVmaW5lZCI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgc3RyaW5nID0gT2JqZWN0
LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBzdHJp
bmcuc3Vic3RyaW5nKDgsIHN0cmluZy5sZW5ndGggLSAxKS50b0xvd2VyQ2FzZSgpOworICAgICAg
ICB9LAorCisgICAgICAgIGNyZWF0ZVN0dWJJbnN0YW5jZTogZnVuY3Rpb24gKGNvbnN0cnVjdG9y
KSB7CisgICAgICAgICAgICBpZiAodHlwZW9mIGNvbnN0cnVjdG9yICE9PSAiZnVuY3Rpb24iKSB7
CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGNvbnN0cnVjdG9yIHNo
b3VsZCBiZSBhIGZ1bmN0aW9uLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
IHNpbm9uLnN0dWIoc2lub24uY3JlYXRlKGNvbnN0cnVjdG9yLnByb3RvdHlwZSkpOworICAgICAg
ICB9LAorCisgICAgICAgIHJlc3RvcmU6IGZ1bmN0aW9uIChvYmplY3QpIHsKKyAgICAgICAgICAg
IGlmIChvYmplY3QgIT09IG51bGwgJiYgdHlwZW9mIG9iamVjdCA9PT0gIm9iamVjdCIpIHsKKyAg
ICAgICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIG9iamVjdCkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoaXNSZXN0b3JhYmxlKG9iamVjdFtwcm9wXSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG9iamVjdFtwcm9wXS5yZXN0b3JlKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChpc1Jl
c3RvcmFibGUob2JqZWN0KSkgeworICAgICAgICAgICAgICAgIG9iamVjdC5yZXN0b3JlKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgdmFyIGlzTm9kZSA9IHR5cGVv
ZiBtb2R1bGUgIT09ICJ1bmRlZmluZWQiICYmIG1vZHVsZS5leHBvcnRzICYmIHR5cGVvZiByZXF1
aXJlID09ICJmdW5jdGlvbiI7CisgICAgdmFyIGlzQU1EID0gdHlwZW9mIGRlZmluZSA9PT0gJ2Z1
bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZDsK
KworICAgIGZ1bmN0aW9uIG1ha2VQdWJsaWNBUEkocmVxdWlyZSwgZXhwb3J0cywgbW9kdWxlKSB7
CisgICAgICAgIG1vZHVsZS5leHBvcnRzID0gc2lub247CisgICAgICAgIHNpbm9uLnNweSA9IHJl
cXVpcmUoIi4vc2lub24vc3B5Iik7CisgICAgICAgIHNpbm9uLnNweUNhbGwgPSByZXF1aXJlKCIu
L3Npbm9uL2NhbGwiKTsKKyAgICAgICAgc2lub24uYmVoYXZpb3IgPSByZXF1aXJlKCIuL3Npbm9u
L2JlaGF2aW9yIik7CisgICAgICAgIHNpbm9uLnN0dWIgPSByZXF1aXJlKCIuL3Npbm9uL3N0dWIi
KTsKKyAgICAgICAgc2lub24ubW9jayA9IHJlcXVpcmUoIi4vc2lub24vbW9jayIpOworICAgICAg
ICBzaW5vbi5jb2xsZWN0aW9uID0gcmVxdWlyZSgiLi9zaW5vbi9jb2xsZWN0aW9uIik7CisgICAg
ICAgIHNpbm9uLmFzc2VydCA9IHJlcXVpcmUoIi4vc2lub24vYXNzZXJ0Iik7CisgICAgICAgIHNp
bm9uLnNhbmRib3ggPSByZXF1aXJlKCIuL3Npbm9uL3NhbmRib3giKTsKKyAgICAgICAgc2lub24u
dGVzdCA9IHJlcXVpcmUoIi4vc2lub24vdGVzdCIpOworICAgICAgICBzaW5vbi50ZXN0Q2FzZSA9
IHJlcXVpcmUoIi4vc2lub24vdGVzdF9jYXNlIik7CisgICAgICAgIHNpbm9uLm1hdGNoID0gcmVx
dWlyZSgiLi9zaW5vbi9tYXRjaCIpOworICAgIH0KKworICAgIGlmIChpc0FNRCkgeworICAgICAg
ICBkZWZpbmUobWFrZVB1YmxpY0FQSSk7CisgICAgfSBlbHNlIGlmIChpc05vZGUpIHsKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgIGZvcm1hdGlvID0gcmVxdWlyZSgiZm9ybWF0aW8iKTsKKyAg
ICAgICAgfSBjYXRjaCAoZSkge30KKyAgICAgICAgbWFrZVB1YmxpY0FQSShyZXF1aXJlLCBleHBv
cnRzLCBtb2R1bGUpOworICAgIH0KKworICAgIGlmIChmb3JtYXRpbykgeworICAgICAgICB2YXIg
Zm9ybWF0dGVyID0gZm9ybWF0aW8uY29uZmlndXJlKHsgcXVvdGVTdHJpbmdzOiBmYWxzZSB9KTsK
KyAgICAgICAgc2lub24uZm9ybWF0ID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJu
IGZvcm1hdHRlci5hc2NpaS5hcHBseShmb3JtYXR0ZXIsIGFyZ3VtZW50cyk7CisgICAgICAgIH07
CisgICAgfSBlbHNlIGlmIChpc05vZGUpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHZh
ciB1dGlsID0gcmVxdWlyZSgidXRpbCIpOworICAgICAgICAgICAgc2lub24uZm9ybWF0ID0gZnVu
Y3Rpb24gKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAi
b2JqZWN0IiAmJiB2YWx1ZS50b1N0cmluZyA9PT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyA/
IHV0aWwuaW5zcGVjdCh2YWx1ZSkgOiB2YWx1ZTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIC8qIE5vZGUsIGJ1dCBubyB1dGlsIG1vZHVsZSAtIHdv
dWxkIGJlIHZlcnkgb2xkLCBidXQgYmV0dGVyIHNhZmUgdGhhbgorICAgICAgICAgICAgIHNvcnJ5
ICovCisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gc2lub247Cit9KHR5cGVvZiBmb3Jt
YXRpbyA9PSAib2JqZWN0IiAmJiBmb3JtYXRpbykpOworCit9LHsiLi9zaW5vbi9hc3NlcnQiOjI0
LCIuL3Npbm9uL2JlaGF2aW9yIjoyNSwiLi9zaW5vbi9jYWxsIjoyNiwiLi9zaW5vbi9jb2xsZWN0
aW9uIjoyNywiLi9zaW5vbi9tYXRjaCI6MjgsIi4vc2lub24vbW9jayI6MjksIi4vc2lub24vc2Fu
ZGJveCI6MzAsIi4vc2lub24vc3B5IjozMSwiLi9zaW5vbi9zdHViIjozMiwiLi9zaW5vbi90ZXN0
IjozMywiLi9zaW5vbi90ZXN0X2Nhc2UiOjM0LCJmb3JtYXRpbyI6MzYsInV0aWwiOjV9XSwyNDpb
ZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24gKGdsb2JhbCl7Cisv
KioKKyAqIEBkZXBlbmQgLi4vc2lub24uanMKKyAqIEBkZXBlbmQgc3R1Yi5qcworICovCisvKmpz
bGludCBlcWVxZXE6IGZhbHNlLCBvbmV2YXI6IGZhbHNlLCBub21lbjogZmFsc2UsIHBsdXNwbHVz
OiBmYWxzZSovCisvKmdsb2JhbCBtb2R1bGUsIHJlcXVpcmUsIHNpbm9uKi8KKy8qKgorICogQXNz
ZXJ0aW9ucyBtYXRjaGluZyB0aGUgdGVzdCBzcHkgcmV0cmlldmFsIGludGVyZmFjZS4KKyAqCisg
KiBAYXV0aG9yIENocmlzdGlhbiBKb2hhbnNlbiAoY2hyaXN0aWFuQGNqb2hhbnNlbi5ubykKKyAq
IEBsaWNlbnNlIEJTRAorICoKKyAqIENvcHlyaWdodCAoYykgMjAxMC0yMDEzIENocmlzdGlhbiBK
b2hhbnNlbgorICovCisidXNlIHN0cmljdCI7CisKKyhmdW5jdGlvbiAoc2lub24sIGdsb2JhbCkg
eworICAgIHZhciBjb21tb25KU01vZHVsZSA9IHR5cGVvZiBtb2R1bGUgIT09ICJ1bmRlZmluZWQi
ICYmIG1vZHVsZS5leHBvcnRzICYmIHR5cGVvZiByZXF1aXJlID09ICJmdW5jdGlvbiI7CisgICAg
dmFyIHNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlOworICAgIHZhciBhc3NlcnQ7CisKKyAg
ICBpZiAoIXNpbm9uICYmIGNvbW1vbkpTTW9kdWxlKSB7CisgICAgICAgIHNpbm9uID0gcmVxdWly
ZSgiLi4vc2lub24iKTsKKyAgICB9CisKKyAgICBpZiAoIXNpbm9uKSB7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB2ZXJpZnlJc1N0dWIoKSB7CisgICAgICAgIHZhciBt
ZXRob2Q7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhcmd1bWVudHMubGVuZ3RoOyBp
IDwgbDsgKytpKSB7CisgICAgICAgICAgICBtZXRob2QgPSBhcmd1bWVudHNbaV07CisKKyAgICAg
ICAgICAgIGlmICghbWV0aG9kKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmZhaWwoImZha2Ug
aXMgbm90IGEgc3B5Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0eXBlb2Yg
bWV0aG9kICE9ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZmFpbChtZXRo
b2QgKyAiIGlzIG5vdCBhIGZ1bmN0aW9uIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmICh0eXBlb2YgbWV0aG9kLmdldENhbGwgIT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAg
ICAgIGFzc2VydC5mYWlsKG1ldGhvZCArICIgaXMgbm90IHN0dWJiZWQiKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIGZhaWxBc3NlcnRpb24ob2JqZWN0
LCBtc2cpIHsKKyAgICAgICAgb2JqZWN0ID0gb2JqZWN0IHx8IGdsb2JhbDsKKyAgICAgICAgdmFy
IGZhaWxNZXRob2QgPSBvYmplY3QuZmFpbCB8fCBhc3NlcnQuZmFpbDsKKyAgICAgICAgZmFpbE1l
dGhvZC5jYWxsKG9iamVjdCwgbXNnKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBtaXJyb3JQcm9w
QXNBc3NlcnRpb24obmFtZSwgbWV0aG9kLCBtZXNzYWdlKSB7CisgICAgICAgIGlmIChhcmd1bWVu
dHMubGVuZ3RoID09IDIpIHsKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXRob2Q7CisgICAgICAg
ICAgICBtZXRob2QgPSBuYW1lOworICAgICAgICB9CisKKyAgICAgICAgYXNzZXJ0W25hbWVdID0g
ZnVuY3Rpb24gKGZha2UpIHsKKyAgICAgICAgICAgIHZlcmlmeUlzU3R1YihmYWtlKTsKKworICAg
ICAgICAgICAgdmFyIGFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7CisgICAgICAgICAg
ICB2YXIgZmFpbGVkID0gZmFsc2U7CisKKyAgICAgICAgICAgIGlmICh0eXBlb2YgbWV0aG9kID09
ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgICAgICAgICBmYWlsZWQgPSAhbWV0aG9kKGZha2UpOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBmYWlsZWQgPSB0eXBlb2YgZmFr
ZVttZXRob2RdID09ICJmdW5jdGlvbiIgPworICAgICAgICAgICAgICAgICAgICAhZmFrZVttZXRo
b2RdLmFwcGx5KGZha2UsIGFyZ3MpIDogIWZha2VbbWV0aG9kXTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKGZhaWxlZCkgeworICAgICAgICAgICAgICAgIGZhaWxBc3NlcnRpb24o
dGhpcywgZmFrZS5wcmludGYuYXBwbHkoZmFrZSwgW21lc3NhZ2VdLmNvbmNhdChhcmdzKSkpOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQucGFzcyhuYW1lKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBleHBvc2Vk
TmFtZShwcmVmaXgsIHByb3ApIHsKKyAgICAgICAgcmV0dXJuICFwcmVmaXggfHwgL15mYWlsLy50
ZXN0KHByb3ApID8gcHJvcCA6CisgICAgICAgICAgICBwcmVmaXggKyBwcm9wLnNsaWNlKDAsIDEp
LnRvVXBwZXJDYXNlKCkgKyBwcm9wLnNsaWNlKDEpOworICAgIH0KKworICAgIGFzc2VydCA9IHsK
KyAgICAgICAgZmFpbEV4Y2VwdGlvbjogIkFzc2VydEVycm9yIiwKKworICAgICAgICBmYWlsOiBm
dW5jdGlvbiBmYWlsKG1lc3NhZ2UpIHsKKyAgICAgICAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJv
cihtZXNzYWdlKTsKKyAgICAgICAgICAgIGVycm9yLm5hbWUgPSB0aGlzLmZhaWxFeGNlcHRpb24g
fHwgYXNzZXJ0LmZhaWxFeGNlcHRpb247CisKKyAgICAgICAgICAgIHRocm93IGVycm9yOworICAg
ICAgICB9LAorCisgICAgICAgIHBhc3M6IGZ1bmN0aW9uIHBhc3MoYXNzZXJ0aW9uKSB7fSwKKwor
ICAgICAgICBjYWxsT3JkZXI6IGZ1bmN0aW9uIGFzc2VydENhbGxPcmRlcigpIHsKKyAgICAgICAg
ICAgIHZlcmlmeUlzU3R1Yi5hcHBseShudWxsLCBhcmd1bWVudHMpOworICAgICAgICAgICAgdmFy
IGV4cGVjdGVkID0gIiIsIGFjdHVhbCA9ICIiOworCisgICAgICAgICAgICBpZiAoIXNpbm9uLmNh
bGxlZEluT3JkZXIoYXJndW1lbnRzKSkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkID0gW10uam9pbi5jYWxsKGFyZ3VtZW50cywgIiwgIik7Cisg
ICAgICAgICAgICAgICAgICAgIHZhciBjYWxscyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzKTsKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIGkgPSBjYWxscy5sZW5ndGg7CisgICAgICAgICAgICAgICAg
ICAgIHdoaWxlIChpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbGxzWy0taV0u
Y2FsbGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbHMuc3BsaWNlKGksIDEp
OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGFjdHVhbCA9IHNpbm9uLm9yZGVyQnlGaXJzdENhbGwoY2FsbHMpLmpv
aW4oIiwgIik7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAg
ICAgICAvLyBJZiB0aGlzIGZhaWxzLCB3ZSdsbCBqdXN0IGZhbGwgYmFjayB0byB0aGUgYmxhbmsg
c3RyaW5nCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZmFpbEFzc2VydGlv
bih0aGlzLCAiZXhwZWN0ZWQgIiArIGV4cGVjdGVkICsgIiB0byBiZSAiICsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJjYWxsZWQgaW4gb3JkZXIgYnV0IHdlcmUgY2FsbGVkIGFzICIg
KyBhY3R1YWwpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
cGFzcygiY2FsbE9yZGVyIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAg
Y2FsbENvdW50OiBmdW5jdGlvbiBhc3NlcnRDYWxsQ291bnQobWV0aG9kLCBjb3VudCkgeworICAg
ICAgICAgICAgdmVyaWZ5SXNTdHViKG1ldGhvZCk7CisKKyAgICAgICAgICAgIGlmIChtZXRob2Qu
Y2FsbENvdW50ICE9IGNvdW50KSB7CisgICAgICAgICAgICAgICAgdmFyIG1zZyA9ICJleHBlY3Rl
ZCAlbiB0byBiZSBjYWxsZWQgIiArIHNpbm9uLnRpbWVzSW5Xb3Jkcyhjb3VudCkgKworICAgICAg
ICAgICAgICAgICAgICAiIGJ1dCB3YXMgY2FsbGVkICVjJUMiOworICAgICAgICAgICAgICAgIGZh
aWxBc3NlcnRpb24odGhpcywgbWV0aG9kLnByaW50Zihtc2cpKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnBhc3MoImNhbGxDb3VudCIpOworICAgICAgICAg
ICAgfQorICAgICAgICB9LAorCisgICAgICAgIGV4cG9zZTogZnVuY3Rpb24gZXhwb3NlKHRhcmdl
dCwgb3B0aW9ucykgeworICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHsKKyAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgVHlwZUVycm9yKCJ0YXJnZXQgaXMgbnVsbCBvciB1bmRlZmluZWQiKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIG8gPSBvcHRpb25zIHx8IHt9OworICAgICAg
ICAgICAgdmFyIHByZWZpeCA9IHR5cGVvZiBvLnByZWZpeCA9PSAidW5kZWZpbmVkIiAmJiAiYXNz
ZXJ0IiB8fCBvLnByZWZpeDsKKyAgICAgICAgICAgIHZhciBpbmNsdWRlRmFpbCA9IHR5cGVvZiBv
LmluY2x1ZGVGYWlsID09ICJ1bmRlZmluZWQiIHx8ICEhby5pbmNsdWRlRmFpbDsKKworICAgICAg
ICAgICAgZm9yICh2YXIgbWV0aG9kIGluIHRoaXMpIHsKKyAgICAgICAgICAgICAgICBpZiAobWV0
aG9kICE9ICJleHBvcnQiICYmIChpbmNsdWRlRmFpbCB8fCAhL14oZmFpbCkvLnRlc3QobWV0aG9k
KSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W2V4cG9zZWROYW1lKHByZWZpeCwgbWV0
aG9kKV0gPSB0aGlzW21ldGhvZF07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICByZXR1cm4gdGFyZ2V0OworICAgICAgICB9LAorCisgICAgICAgIG1hdGNo
OiBmdW5jdGlvbiBtYXRjaChhY3R1YWwsIGV4cGVjdGF0aW9uKSB7CisgICAgICAgICAgICB2YXIg
bWF0Y2hlciA9IHNpbm9uLm1hdGNoKGV4cGVjdGF0aW9uKTsKKyAgICAgICAgICAgIGlmIChtYXRj
aGVyLnRlc3QoYWN0dWFsKSkgeworICAgICAgICAgICAgICAgIGFzc2VydC5wYXNzKCJtYXRjaCIp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgZm9ybWF0dGVkID0g
WworICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgdmFsdWUgdG8gbWF0Y2giLAorICAgICAg
ICAgICAgICAgICAgICAiICAgIGV4cGVjdGVkID0gIiArIHNpbm9uLmZvcm1hdChleHBlY3RhdGlv
biksCisgICAgICAgICAgICAgICAgICAgICIgICAgYWN0dWFsID0gIiArIHNpbm9uLmZvcm1hdChh
Y3R1YWwpCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIGZhaWxBc3NlcnRpb24o
dGhpcywgZm9ybWF0dGVkLmpvaW4oIlxuIikpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfTsKKworICAgIG1pcnJvclByb3BBc0Fzc2VydGlvbigiY2FsbGVkIiwgImV4cGVjdGVkICVu
IHRvIGhhdmUgYmVlbiBjYWxsZWQgYXQgbGVhc3Qgb25jZSBidXQgd2FzIG5ldmVyIGNhbGxlZCIp
OworICAgIG1pcnJvclByb3BBc0Fzc2VydGlvbigibm90Q2FsbGVkIiwgZnVuY3Rpb24gKHNweSkg
eyByZXR1cm4gIXNweS5jYWxsZWQ7IH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBl
Y3RlZCAlbiB0byBub3QgaGF2ZSBiZWVuIGNhbGxlZCBidXQgd2FzIGNhbGxlZCAlYyVDIik7Cisg
ICAgbWlycm9yUHJvcEFzQXNzZXJ0aW9uKCJjYWxsZWRPbmNlIiwgImV4cGVjdGVkICVuIHRvIGJl
IGNhbGxlZCBvbmNlIGJ1dCB3YXMgY2FsbGVkICVjJUMiKTsKKyAgICBtaXJyb3JQcm9wQXNBc3Nl
cnRpb24oImNhbGxlZFR3aWNlIiwgImV4cGVjdGVkICVuIHRvIGJlIGNhbGxlZCB0d2ljZSBidXQg
d2FzIGNhbGxlZCAlYyVDIik7CisgICAgbWlycm9yUHJvcEFzQXNzZXJ0aW9uKCJjYWxsZWRUaHJp
Y2UiLCAiZXhwZWN0ZWQgJW4gdG8gYmUgY2FsbGVkIHRocmljZSBidXQgd2FzIGNhbGxlZCAlYyVD
Iik7CisgICAgbWlycm9yUHJvcEFzQXNzZXJ0aW9uKCJjYWxsZWRPbiIsICJleHBlY3RlZCAlbiB0
byBiZSBjYWxsZWQgd2l0aCAlMSBhcyB0aGlzIGJ1dCB3YXMgY2FsbGVkIHdpdGggJXQiKTsKKyAg
ICBtaXJyb3JQcm9wQXNBc3NlcnRpb24oImFsd2F5c0NhbGxlZE9uIiwgImV4cGVjdGVkICVuIHRv
IGFsd2F5cyBiZSBjYWxsZWQgd2l0aCAlMSBhcyB0aGlzIGJ1dCB3YXMgY2FsbGVkIHdpdGggJXQi
KTsKKyAgICBtaXJyb3JQcm9wQXNBc3NlcnRpb24oImNhbGxlZFdpdGhOZXciLCAiZXhwZWN0ZWQg
JW4gdG8gYmUgY2FsbGVkIHdpdGggbmV3Iik7CisgICAgbWlycm9yUHJvcEFzQXNzZXJ0aW9uKCJh
bHdheXNDYWxsZWRXaXRoTmV3IiwgImV4cGVjdGVkICVuIHRvIGFsd2F5cyBiZSBjYWxsZWQgd2l0
aCBuZXciKTsKKyAgICBtaXJyb3JQcm9wQXNBc3NlcnRpb24oImNhbGxlZFdpdGgiLCAiZXhwZWN0
ZWQgJW4gdG8gYmUgY2FsbGVkIHdpdGggYXJndW1lbnRzICUqJUMiKTsKKyAgICBtaXJyb3JQcm9w
QXNBc3NlcnRpb24oImNhbGxlZFdpdGhNYXRjaCIsICJleHBlY3RlZCAlbiB0byBiZSBjYWxsZWQg
d2l0aCBtYXRjaCAlKiVDIik7CisgICAgbWlycm9yUHJvcEFzQXNzZXJ0aW9uKCJhbHdheXNDYWxs
ZWRXaXRoIiwgImV4cGVjdGVkICVuIHRvIGFsd2F5cyBiZSBjYWxsZWQgd2l0aCBhcmd1bWVudHMg
JSolQyIpOworICAgIG1pcnJvclByb3BBc0Fzc2VydGlvbigiYWx3YXlzQ2FsbGVkV2l0aE1hdGNo
IiwgImV4cGVjdGVkICVuIHRvIGFsd2F5cyBiZSBjYWxsZWQgd2l0aCBtYXRjaCAlKiVDIik7Cisg
ICAgbWlycm9yUHJvcEFzQXNzZXJ0aW9uKCJjYWxsZWRXaXRoRXhhY3RseSIsICJleHBlY3RlZCAl
biB0byBiZSBjYWxsZWQgd2l0aCBleGFjdCBhcmd1bWVudHMgJSolQyIpOworICAgIG1pcnJvclBy
b3BBc0Fzc2VydGlvbigiYWx3YXlzQ2FsbGVkV2l0aEV4YWN0bHkiLCAiZXhwZWN0ZWQgJW4gdG8g
YWx3YXlzIGJlIGNhbGxlZCB3aXRoIGV4YWN0IGFyZ3VtZW50cyAlKiVDIik7CisgICAgbWlycm9y
UHJvcEFzQXNzZXJ0aW9uKCJuZXZlckNhbGxlZFdpdGgiLCAiZXhwZWN0ZWQgJW4gdG8gbmV2ZXIg
YmUgY2FsbGVkIHdpdGggYXJndW1lbnRzICUqJUMiKTsKKyAgICBtaXJyb3JQcm9wQXNBc3NlcnRp
b24oIm5ldmVyQ2FsbGVkV2l0aE1hdGNoIiwgImV4cGVjdGVkICVuIHRvIG5ldmVyIGJlIGNhbGxl
ZCB3aXRoIG1hdGNoICUqJUMiKTsKKyAgICBtaXJyb3JQcm9wQXNBc3NlcnRpb24oInRocmV3Iiwg
IiVuIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uJUMiKTsKKyAgICBtaXJyb3JQcm9wQXNBc3NlcnRp
b24oImFsd2F5c1RocmV3IiwgIiVuIGRpZCBub3QgYWx3YXlzIHRocm93IGV4Y2VwdGlvbiVDIik7
CisKKyAgICBzaW5vbi5hc3NlcnQgPSBhc3NlcnQ7CisKKyAgICBpZiAodHlwZW9mIGRlZmluZSA9
PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmUuYW1kKSB7CisgICAgICAgIGRlZmluZShbIm1vZHVsZSJd
LCBmdW5jdGlvbihtb2R1bGUpIHsgbW9kdWxlLmV4cG9ydHMgPSBhc3NlcnQ7IH0pOworICAgIH0g
ZWxzZSBpZiAoY29tbW9uSlNNb2R1bGUpIHsKKyAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBhc3Nl
cnQ7CisgICAgfQorfSh0eXBlb2Ygc2lub24gPT0gIm9iamVjdCIgJiYgc2lub24gfHwgbnVsbCwg
dHlwZW9mIHdpbmRvdyAhPSAidW5kZWZpbmVkIiA/IHdpbmRvdyA6ICh0eXBlb2Ygc2VsZiAhPSAi
dW5kZWZpbmVkIikgPyBzZWxmIDogZ2xvYmFsKSk7CisKK30pLmNhbGwodGhpcyx0eXBlb2YgZ2xv
YmFsICE9PSAidW5kZWZpbmVkIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSAidW5kZWZpbmVk
IiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSAidW5kZWZpbmVkIiA/IHdpbmRvdyA6IHt9KQor
fSx7Ii4uL3Npbm9uIjoyM31dLDI1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsK
KyhmdW5jdGlvbiAocHJvY2Vzcyl7CisvKioKKyAqIEBkZXBlbmQgLi4vc2lub24uanMKKyAqLwor
Lypqc2xpbnQgZXFlcWVxOiBmYWxzZSwgb25ldmFyOiBmYWxzZSovCisvKmdsb2JhbCBtb2R1bGUs
IHJlcXVpcmUsIHNpbm9uLCBwcm9jZXNzLCBzZXRJbW1lZGlhdGUsIHNldFRpbWVvdXQqLworLyoq
CisgKiBTdHViIGJlaGF2aW9yCisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gSm9oYW5zZW4gKGNo
cmlzdGlhbkBjam9oYW5zZW4ubm8pCisgKiBAYXV0aG9yIFRpbSBGaXNjaGJhY2ggKG1haWxAdGlt
ZmlzY2hiYWNoLmRlKQorICogQGxpY2Vuc2UgQlNECisgKgorICogQ29weXJpZ2h0IChjKSAyMDEw
LTIwMTMgQ2hyaXN0aWFuIEpvaGFuc2VuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworKGZ1bmN0aW9u
IChzaW5vbikgeworICAgIHZhciBjb21tb25KU01vZHVsZSA9IHR5cGVvZiBtb2R1bGUgIT09ICJ1
bmRlZmluZWQiICYmIG1vZHVsZS5leHBvcnRzICYmIHR5cGVvZiByZXF1aXJlID09ICJmdW5jdGlv
biI7CisKKyAgICBpZiAoIXNpbm9uICYmIGNvbW1vbkpTTW9kdWxlKSB7CisgICAgICAgIHNpbm9u
ID0gcmVxdWlyZSgiLi4vc2lub24iKTsKKyAgICB9CisKKyAgICBpZiAoIXNpbm9uKSB7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xp
Y2U7CisgICAgdmFyIGpvaW4gPSBBcnJheS5wcm90b3R5cGUuam9pbjsKKyAgICB2YXIgcHJvdG87
CisKKyAgICB2YXIgbmV4dFRpY2sgPSAoZnVuY3Rpb24gKCkgeworICAgICAgICBpZiAodHlwZW9m
IHByb2Nlc3MgPT09ICJvYmplY3QiICYmIHR5cGVvZiBwcm9jZXNzLm5leHRUaWNrID09PSAiZnVu
Y3Rpb24iKSB7CisgICAgICAgICAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljazsKKyAgICAgICAg
fSBlbHNlIGlmICh0eXBlb2Ygc2V0SW1tZWRpYXRlID09PSAiZnVuY3Rpb24iKSB7CisgICAgICAg
ICAgICByZXR1cm4gc2V0SW1tZWRpYXRlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uIChjYWxsYmFjaykgeworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
Y2FsbGJhY2ssIDApOworICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgIH0pKCk7CisKKyAg
ICBmdW5jdGlvbiB0aHJvd3NFeGNlcHRpb24oZXJyb3IsIG1lc3NhZ2UpIHsKKyAgICAgICAgaWYg
KHR5cGVvZiBlcnJvciA9PSAic3RyaW5nIikgeworICAgICAgICAgICAgdGhpcy5leGNlcHRpb24g
PSBuZXcgRXJyb3IobWVzc2FnZSB8fCAiIik7CisgICAgICAgICAgICB0aGlzLmV4Y2VwdGlvbi5u
YW1lID0gZXJyb3I7CisgICAgICAgIH0gZWxzZSBpZiAoIWVycm9yKSB7CisgICAgICAgICAgICB0
aGlzLmV4Y2VwdGlvbiA9IG5ldyBFcnJvcigiRXJyb3IiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHRoaXMuZXhjZXB0aW9uID0gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRDYWxsYmFjayhiZWhhdmlvciwg
YXJncykgeworICAgICAgICB2YXIgY2FsbEFyZ0F0ID0gYmVoYXZpb3IuY2FsbEFyZ0F0OworCisg
ICAgICAgIGlmIChjYWxsQXJnQXQgPCAwKSB7CisgICAgICAgICAgICB2YXIgY2FsbEFyZ1Byb3Ag
PSBiZWhhdmlvci5jYWxsQXJnUHJvcDsKKworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwg
PSBhcmdzLmxlbmd0aDsgaSA8IGw7ICsraSkgeworICAgICAgICAgICAgICAgIGlmICghY2FsbEFy
Z1Byb3AgJiYgdHlwZW9mIGFyZ3NbaV0gPT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gYXJnc1tpXTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBpZiAoY2FsbEFyZ1Byb3AgJiYgYXJnc1tpXSAmJgorICAgICAgICAgICAgICAgICAgICB0eXBl
b2YgYXJnc1tpXVtjYWxsQXJnUHJvcF0gPT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gYXJnc1tpXVtjYWxsQXJnUHJvcF07CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBhcmdzW2NhbGxBcmdBdF07CisgICAgfQorCisgICAgZnVuY3Rpb24gZ2V0Q2Fs
bGJhY2tFcnJvcihiZWhhdmlvciwgZnVuYywgYXJncykgeworICAgICAgICBpZiAoYmVoYXZpb3Iu
Y2FsbEFyZ0F0IDwgMCkgeworICAgICAgICAgICAgdmFyIG1zZzsKKworICAgICAgICAgICAgaWYg
KGJlaGF2aW9yLmNhbGxBcmdQcm9wKSB7CisgICAgICAgICAgICAgICAgbXNnID0gc2lub24uZnVu
Y3Rpb25OYW1lKGJlaGF2aW9yLnN0dWIpICsKKyAgICAgICAgICAgICAgICAgICAgIiBleHBlY3Rl
ZCB0byB5aWVsZCB0byAnIiArIGJlaGF2aW9yLmNhbGxBcmdQcm9wICsKKyAgICAgICAgICAgICAg
ICAgICAgIicsIGJ1dCBubyBvYmplY3Qgd2l0aCBzdWNoIGEgcHJvcGVydHkgd2FzIHBhc3NlZC4i
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtc2cgPSBzaW5vbi5mdW5j
dGlvbk5hbWUoYmVoYXZpb3Iuc3R1YikgKworICAgICAgICAgICAgICAgICAgICAiIGV4cGVjdGVk
IHRvIHlpZWxkLCBidXQgbm8gY2FsbGJhY2sgd2FzIHBhc3NlZC4iOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAoYXJncy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgbXNn
ICs9ICIgUmVjZWl2ZWQgWyIgKyBqb2luLmNhbGwoYXJncywgIiwgIikgKyAiXSI7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gImFyZ3VtZW50IGF0IGluZGV4ICIgKyBiZWhhdmlvci5jYWxsQXJnQXQgKyAiIGlzIG5v
dCBhIGZ1bmN0aW9uOiAiICsgZnVuYzsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjYWxsQ2FsbGJh
Y2soYmVoYXZpb3IsIGFyZ3MpIHsKKyAgICAgICAgaWYgKHR5cGVvZiBiZWhhdmlvci5jYWxsQXJn
QXQgPT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgIHZhciBmdW5jID0gZ2V0Q2FsbGJhY2soYmVo
YXZpb3IsIGFyZ3MpOworCisgICAgICAgICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gImZ1bmN0aW9u
IikgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoZ2V0Q2FsbGJhY2tFcnJv
cihiZWhhdmlvciwgZnVuYywgYXJncykpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoYmVoYXZpb3IuY2FsbGJhY2tBc3luYykgeworICAgICAgICAgICAgICAgIG5leHRUaWNrKGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBmdW5jLmFwcGx5KGJlaGF2aW9yLmNhbGxi
YWNrQ29udGV4dCwgYmVoYXZpb3IuY2FsbGJhY2tBcmd1bWVudHMpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBmdW5jLmFwcGx5KGJl
aGF2aW9yLmNhbGxiYWNrQ29udGV4dCwgYmVoYXZpb3IuY2FsbGJhY2tBcmd1bWVudHMpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJvdG8gPSB7CisgICAgICAgIGNy
ZWF0ZTogZnVuY3Rpb24oc3R1YikgeworICAgICAgICAgICAgdmFyIGJlaGF2aW9yID0gc2lub24u
ZXh0ZW5kKHt9LCBzaW5vbi5iZWhhdmlvcik7CisgICAgICAgICAgICBkZWxldGUgYmVoYXZpb3Iu
Y3JlYXRlOworICAgICAgICAgICAgYmVoYXZpb3Iuc3R1YiA9IHN0dWI7CisKKyAgICAgICAgICAg
IHJldHVybiBiZWhhdmlvcjsKKyAgICAgICAgfSwKKworICAgICAgICBpc1ByZXNlbnQ6IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuICh0eXBlb2YgdGhpcy5jYWxsQXJnQXQgPT0gJ251
bWJlcicgfHwKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5leGNlcHRpb24gfHwKKyAgICAgICAg
ICAgICAgICAgICAgdHlwZW9mIHRoaXMucmV0dXJuQXJnQXQgPT0gJ251bWJlcicgfHwKKyAgICAg
ICAgICAgICAgICAgICAgdGhpcy5yZXR1cm5UaGlzIHx8CisgICAgICAgICAgICAgICAgICAgIHRo
aXMucmV0dXJuVmFsdWVEZWZpbmVkKTsKKyAgICAgICAgfSwKKworICAgICAgICBpbnZva2U6IGZ1
bmN0aW9uKGNvbnRleHQsIGFyZ3MpIHsKKyAgICAgICAgICAgIGNhbGxDYWxsYmFjayh0aGlzLCBh
cmdzKTsKKworICAgICAgICAgICAgaWYgKHRoaXMuZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAg
ICAgdGhyb3cgdGhpcy5leGNlcHRpb247CisgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0
aGlzLnJldHVybkFyZ0F0ID09ICdudW1iZXInKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFy
Z3NbdGhpcy5yZXR1cm5BcmdBdF07CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmV0dXJu
VGhpcykgeworICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0OworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5WYWx1ZTsKKyAgICAgICAgfSwKKworICAg
ICAgICBvbkNhbGw6IGZ1bmN0aW9uKGluZGV4KSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5z
dHViLm9uQ2FsbChpbmRleCk7CisgICAgICAgIH0sCisKKyAgICAgICAgb25GaXJzdENhbGw6IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3R1Yi5vbkZpcnN0Q2FsbCgpOwor
ICAgICAgICB9LAorCisgICAgICAgIG9uU2Vjb25kQ2FsbDogZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICByZXR1cm4gdGhpcy5zdHViLm9uU2Vjb25kQ2FsbCgpOworICAgICAgICB9LAorCisgICAg
ICAgIG9uVGhpcmRDYWxsOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLnN0
dWIub25UaGlyZENhbGwoKTsKKyAgICAgICAgfSwKKworICAgICAgICB3aXRoQXJnczogZnVuY3Rp
b24oLyogYXJndW1lbnRzICovKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RlZmlu
aW5nIGEgc3R1YiBieSBpbnZva2luZyAic3R1Yi5vbkNhbGwoLi4uKS53aXRoQXJncyguLi4pIiBp
cyBub3Qgc3VwcG9ydGVkLiAnICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVXNlICJz
dHViLndpdGhBcmdzKC4uLikub25DYWxsKC4uLikiIHRvIGRlZmluZSBzZXF1ZW50aWFsIGJlaGF2
aW9yIGZvciBjYWxscyB3aXRoIGNlcnRhaW4gYXJndW1lbnRzLicpOworICAgICAgICB9LAorCisg
ICAgICAgIGNhbGxzQXJnOiBmdW5jdGlvbiBjYWxsc0FyZyhwb3MpIHsKKyAgICAgICAgICAgIGlm
ICh0eXBlb2YgcG9zICE9ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5
cGVFcnJvcigiYXJndW1lbnQgaW5kZXggaXMgbm90IG51bWJlciIpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB0aGlzLmNhbGxBcmdBdCA9IHBvczsKKyAgICAgICAgICAgIHRoaXMuY2Fs
bGJhY2tBcmd1bWVudHMgPSBbXTsKKyAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tDb250ZXh0ID0g
dW5kZWZpbmVkOworICAgICAgICAgICAgdGhpcy5jYWxsQXJnUHJvcCA9IHVuZGVmaW5lZDsKKyAg
ICAgICAgICAgIHRoaXMuY2FsbGJhY2tBc3luYyA9IGZhbHNlOworCisgICAgICAgICAgICByZXR1
cm4gdGhpczsKKyAgICAgICAgfSwKKworICAgICAgICBjYWxsc0FyZ09uOiBmdW5jdGlvbiBjYWxs
c0FyZ09uKHBvcywgY29udGV4dCkgeworICAgICAgICAgICAgaWYgKHR5cGVvZiBwb3MgIT0gIm51
bWJlciIpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1bWVudCBp
bmRleCBpcyBub3QgbnVtYmVyIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodHlw
ZW9mIGNvbnRleHQgIT0gIm9iamVjdCIpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlw
ZUVycm9yKCJhcmd1bWVudCBjb250ZXh0IGlzIG5vdCBhbiBvYmplY3QiKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdGhpcy5jYWxsQXJnQXQgPSBwb3M7CisgICAgICAgICAgICB0aGlz
LmNhbGxiYWNrQXJndW1lbnRzID0gW107CisgICAgICAgICAgICB0aGlzLmNhbGxiYWNrQ29udGV4
dCA9IGNvbnRleHQ7CisgICAgICAgICAgICB0aGlzLmNhbGxBcmdQcm9wID0gdW5kZWZpbmVkOwor
ICAgICAgICAgICAgdGhpcy5jYWxsYmFja0FzeW5jID0gZmFsc2U7CisKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzOworICAgICAgICB9LAorCisgICAgICAgIGNhbGxzQXJnV2l0aDogZnVuY3Rpb24g
Y2FsbHNBcmdXaXRoKHBvcykgeworICAgICAgICAgICAgaWYgKHR5cGVvZiBwb3MgIT0gIm51bWJl
ciIpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1bWVudCBpbmRl
eCBpcyBub3QgbnVtYmVyIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMuY2Fs
bEFyZ0F0ID0gcG9zOworICAgICAgICAgICAgdGhpcy5jYWxsYmFja0FyZ3VtZW50cyA9IHNsaWNl
LmNhbGwoYXJndW1lbnRzLCAxKTsKKyAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tDb250ZXh0ID0g
dW5kZWZpbmVkOworICAgICAgICAgICAgdGhpcy5jYWxsQXJnUHJvcCA9IHVuZGVmaW5lZDsKKyAg
ICAgICAgICAgIHRoaXMuY2FsbGJhY2tBc3luYyA9IGZhbHNlOworCisgICAgICAgICAgICByZXR1
cm4gdGhpczsKKyAgICAgICAgfSwKKworICAgICAgICBjYWxsc0FyZ09uV2l0aDogZnVuY3Rpb24g
Y2FsbHNBcmdXaXRoKHBvcywgY29udGV4dCkgeworICAgICAgICAgICAgaWYgKHR5cGVvZiBwb3Mg
IT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1
bWVudCBpbmRleCBpcyBub3QgbnVtYmVyIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAodHlwZW9mIGNvbnRleHQgIT0gIm9iamVjdCIpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgVHlwZUVycm9yKCJhcmd1bWVudCBjb250ZXh0IGlzIG5vdCBhbiBvYmplY3QiKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5jYWxsQXJnQXQgPSBwb3M7CisgICAgICAgICAg
ICB0aGlzLmNhbGxiYWNrQXJndW1lbnRzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpOworICAg
ICAgICAgICAgdGhpcy5jYWxsYmFja0NvbnRleHQgPSBjb250ZXh0OworICAgICAgICAgICAgdGhp
cy5jYWxsQXJnUHJvcCA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tBc3lu
YyA9IGZhbHNlOworCisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfSwKKworICAg
ICAgICB5aWVsZHM6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRoaXMuY2FsbEFyZ0F0ID0g
LTE7CisgICAgICAgICAgICB0aGlzLmNhbGxiYWNrQXJndW1lbnRzID0gc2xpY2UuY2FsbChhcmd1
bWVudHMsIDApOworICAgICAgICAgICAgdGhpcy5jYWxsYmFja0NvbnRleHQgPSB1bmRlZmluZWQ7
CisgICAgICAgICAgICB0aGlzLmNhbGxBcmdQcm9wID0gdW5kZWZpbmVkOworICAgICAgICAgICAg
dGhpcy5jYWxsYmFja0FzeW5jID0gZmFsc2U7CisKKyAgICAgICAgICAgIHJldHVybiB0aGlzOwor
ICAgICAgICB9LAorCisgICAgICAgIHlpZWxkc09uOiBmdW5jdGlvbiAoY29udGV4dCkgeworICAg
ICAgICAgICAgaWYgKHR5cGVvZiBjb250ZXh0ICE9ICJvYmplY3QiKSB7CisgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiYXJndW1lbnQgY29udGV4dCBpcyBub3QgYW4gb2JqZWN0
Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMuY2FsbEFyZ0F0ID0gLTE7Cisg
ICAgICAgICAgICB0aGlzLmNhbGxiYWNrQXJndW1lbnRzID0gc2xpY2UuY2FsbChhcmd1bWVudHMs
IDEpOworICAgICAgICAgICAgdGhpcy5jYWxsYmFja0NvbnRleHQgPSBjb250ZXh0OworICAgICAg
ICAgICAgdGhpcy5jYWxsQXJnUHJvcCA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRoaXMuY2Fs
bGJhY2tBc3luYyA9IGZhbHNlOworCisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAg
fSwKKworICAgICAgICB5aWVsZHNUbzogZnVuY3Rpb24gKHByb3ApIHsKKyAgICAgICAgICAgIHRo
aXMuY2FsbEFyZ0F0ID0gLTE7CisgICAgICAgICAgICB0aGlzLmNhbGxiYWNrQXJndW1lbnRzID0g
c2xpY2UuY2FsbChhcmd1bWVudHMsIDEpOworICAgICAgICAgICAgdGhpcy5jYWxsYmFja0NvbnRl
eHQgPSB1bmRlZmluZWQ7CisgICAgICAgICAgICB0aGlzLmNhbGxBcmdQcm9wID0gcHJvcDsKKyAg
ICAgICAgICAgIHRoaXMuY2FsbGJhY2tBc3luYyA9IGZhbHNlOworCisgICAgICAgICAgICByZXR1
cm4gdGhpczsKKyAgICAgICAgfSwKKworICAgICAgICB5aWVsZHNUb09uOiBmdW5jdGlvbiAocHJv
cCwgY29udGV4dCkgeworICAgICAgICAgICAgaWYgKHR5cGVvZiBjb250ZXh0ICE9ICJvYmplY3Qi
KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiYXJndW1lbnQgY29udGV4
dCBpcyBub3QgYW4gb2JqZWN0Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMu
Y2FsbEFyZ0F0ID0gLTE7CisgICAgICAgICAgICB0aGlzLmNhbGxiYWNrQXJndW1lbnRzID0gc2xp
Y2UuY2FsbChhcmd1bWVudHMsIDIpOworICAgICAgICAgICAgdGhpcy5jYWxsYmFja0NvbnRleHQg
PSBjb250ZXh0OworICAgICAgICAgICAgdGhpcy5jYWxsQXJnUHJvcCA9IHByb3A7CisgICAgICAg
ICAgICB0aGlzLmNhbGxiYWNrQXN5bmMgPSBmYWxzZTsKKworICAgICAgICAgICAgcmV0dXJuIHRo
aXM7CisgICAgICAgIH0sCisKKworICAgICAgICAidGhyb3dzIjogdGhyb3dzRXhjZXB0aW9uLAor
ICAgICAgICB0aHJvd3NFeGNlcHRpb246IHRocm93c0V4Y2VwdGlvbiwKKworICAgICAgICByZXR1
cm5zOiBmdW5jdGlvbiByZXR1cm5zKHZhbHVlKSB7CisgICAgICAgICAgICB0aGlzLnJldHVyblZh
bHVlID0gdmFsdWU7CisgICAgICAgICAgICB0aGlzLnJldHVyblZhbHVlRGVmaW5lZCA9IHRydWU7
CisKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9LAorCisgICAgICAgIHJldHVy
bnNBcmc6IGZ1bmN0aW9uIHJldHVybnNBcmcocG9zKSB7CisgICAgICAgICAgICBpZiAodHlwZW9m
IHBvcyAhPSAibnVtYmVyIikgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3Io
ImFyZ3VtZW50IGluZGV4IGlzIG5vdCBudW1iZXIiKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdGhpcy5yZXR1cm5BcmdBdCA9IHBvczsKKworICAgICAgICAgICAgcmV0dXJuIHRoaXM7
CisgICAgICAgIH0sCisKKyAgICAgICAgcmV0dXJuc1RoaXM6IGZ1bmN0aW9uIHJldHVybnNUaGlz
KCkgeworICAgICAgICAgICAgdGhpcy5yZXR1cm5UaGlzID0gdHJ1ZTsKKworICAgICAgICAgICAg
cmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLy8gY3JlYXRlIGFzeW5jaHJv
bm91cyB2ZXJzaW9ucyBvZiBjYWxsc0FyZyogYW5kIHlpZWxkcyogbWV0aG9kcworICAgIGZvciAo
dmFyIG1ldGhvZCBpbiBwcm90bykgeworICAgICAgICAvLyBuZWVkIHRvIGF2b2lkIGNyZWF0aW5n
IGFub3RoZXJhc3luYyB2ZXJzaW9ucyBvZiB0aGUgbmV3bHkgYWRkZWQgYXN5bmMgbWV0aG9kcwor
ICAgICAgICBpZiAocHJvdG8uaGFzT3duUHJvcGVydHkobWV0aG9kKSAmJgorICAgICAgICAgICAg
bWV0aG9kLm1hdGNoKC9eKGNhbGxzQXJnfHlpZWxkcykvKSAmJgorICAgICAgICAgICAgIW1ldGhv
ZC5tYXRjaCgvQXN5bmMvKSkgeworICAgICAgICAgICAgcHJvdG9bbWV0aG9kICsgJ0FzeW5jJ10g
PSAoZnVuY3Rpb24gKHN5bmNGbk5hbWUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpc1tzeW5jRm5OYW1l
XS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGxi
YWNrQXN5bmMgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9KShtZXRob2QpOworICAgICAgICB9CisgICAg
fQorCisgICAgc2lub24uYmVoYXZpb3IgPSBwcm90bzsKKworICAgIGlmICh0eXBlb2YgZGVmaW5l
ID09PSAiZnVuY3Rpb24iICYmIGRlZmluZS5hbWQpIHsKKyAgICAgICAgZGVmaW5lKFsibW9kdWxl
Il0sIGZ1bmN0aW9uKG1vZHVsZSkgeyBtb2R1bGUuZXhwb3J0cyA9IHByb3RvOyB9KTsKKyAgICB9
IGVsc2UgaWYgKGNvbW1vbkpTTW9kdWxlKSB7CisgICAgICAgIG1vZHVsZS5leHBvcnRzID0gcHJv
dG87CisgICAgfQorfSh0eXBlb2Ygc2lub24gPT0gIm9iamVjdCIgJiYgc2lub24gfHwgbnVsbCkp
OworCit9KS5jYWxsKHRoaXMscmVxdWlyZSgnX3Byb2Nlc3MnKSkKK30seyIuLi9zaW5vbiI6MjMs
Il9wcm9jZXNzIjozfV0sMjY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyoq
CisgICogQGRlcGVuZCAuLi9zaW5vbi5qcworICAqIEBkZXBlbmQgbWF0Y2guanMKKyAgKi8KKy8q
anNsaW50IGVxZXFlcTogZmFsc2UsIG9uZXZhcjogZmFsc2UsIHBsdXNwbHVzOiBmYWxzZSovCisv
Kmdsb2JhbCBtb2R1bGUsIHJlcXVpcmUsIHNpbm9uKi8KKy8qKgorICAqIFNweSBjYWxscworICAq
CisgICogQGF1dGhvciBDaHJpc3RpYW4gSm9oYW5zZW4gKGNocmlzdGlhbkBjam9oYW5zZW4ubm8p
CisgICogQGF1dGhvciBNYXhpbWlsaWFuIEFudG9uaSAobWFpbEBtYXhhbnRvbmkuZGUpCisgICog
QGxpY2Vuc2UgQlNECisgICoKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMyBDaHJpc3RpYW4g
Sm9oYW5zZW4KKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTMgTWF4aW1pbGlhbiBBbnRvbmkKKyAgKi8K
KyJ1c2Ugc3RyaWN0IjsKKworKGZ1bmN0aW9uIChzaW5vbikgeworICAgIHZhciBjb21tb25KU01v
ZHVsZSA9IHR5cGVvZiBtb2R1bGUgIT09ICJ1bmRlZmluZWQiICYmIG1vZHVsZS5leHBvcnRzICYm
IHR5cGVvZiByZXF1aXJlID09ICJmdW5jdGlvbiI7CisgICAgaWYgKCFzaW5vbiAmJiBjb21tb25K
U01vZHVsZSkgeworICAgICAgICBzaW5vbiA9IHJlcXVpcmUoIi4uL3Npbm9uIik7CisgICAgfQor
CisgICAgaWYgKCFzaW5vbikgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZnVuY3Rp
b24gdGhyb3dZaWVsZEVycm9yKHByb3h5LCB0ZXh0LCBhcmdzKSB7CisgICAgICAgIHZhciBtc2cg
PSBzaW5vbi5mdW5jdGlvbk5hbWUocHJveHkpICsgdGV4dDsKKyAgICAgICAgaWYgKGFyZ3MubGVu
Z3RoKSB7CisgICAgICAgICAgICBtc2cgKz0gIiBSZWNlaXZlZCBbIiArIHNsaWNlLmNhbGwoYXJn
cykuam9pbigiLCAiKSArICJdIjsKKyAgICAgICAgfQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
bXNnKTsKKyAgICB9CisKKyAgICB2YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7CisK
KyAgICB2YXIgY2FsbFByb3RvID0geworICAgICAgICBjYWxsZWRPbjogZnVuY3Rpb24gY2FsbGVk
T24odGhpc1ZhbHVlKSB7CisgICAgICAgICAgICBpZiAoc2lub24ubWF0Y2ggJiYgc2lub24ubWF0
Y2guaXNNYXRjaGVyKHRoaXNWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1Zh
bHVlLnRlc3QodGhpcy50aGlzVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0
dXJuIHRoaXMudGhpc1ZhbHVlID09PSB0aGlzVmFsdWU7CisgICAgICAgIH0sCisKKyAgICAgICAg
Y2FsbGVkV2l0aDogZnVuY3Rpb24gY2FsbGVkV2l0aCgpIHsKKyAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwLCBsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkgKz0gMSkgeworICAgICAgICAg
ICAgICAgIGlmICghc2lub24uZGVlcEVxdWFsKGFyZ3VtZW50c1tpXSwgdGhpcy5hcmdzW2ldKSkg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSwKKwor
ICAgICAgICBjYWxsZWRXaXRoTWF0Y2g6IGZ1bmN0aW9uIGNhbGxlZFdpdGhNYXRjaCgpIHsKKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkg
Kz0gMSkgeworICAgICAgICAgICAgICAgIHZhciBhY3R1YWwgPSB0aGlzLmFyZ3NbaV07CisgICAg
ICAgICAgICAgICAgdmFyIGV4cGVjdGF0aW9uID0gYXJndW1lbnRzW2ldOworICAgICAgICAgICAg
ICAgIGlmICghc2lub24ubWF0Y2ggfHwgIXNpbm9uLm1hdGNoKGV4cGVjdGF0aW9uKS50ZXN0KGFj
dHVhbCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
LAorCisgICAgICAgIGNhbGxlZFdpdGhFeGFjdGx5OiBmdW5jdGlvbiBjYWxsZWRXaXRoRXhhY3Rs
eSgpIHsKKyAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09IHRoaXMuYXJncy5s
ZW5ndGggJiYKKyAgICAgICAgICAgICAgICB0aGlzLmNhbGxlZFdpdGguYXBwbHkodGhpcywgYXJn
dW1lbnRzKTsKKyAgICAgICAgfSwKKworICAgICAgICBub3RDYWxsZWRXaXRoOiBmdW5jdGlvbiBu
b3RDYWxsZWRXaXRoKCkgeworICAgICAgICAgICAgcmV0dXJuICF0aGlzLmNhbGxlZFdpdGguYXBw
bHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgfSwKKworICAgICAgICBub3RDYWxsZWRXaXRo
TWF0Y2g6IGZ1bmN0aW9uIG5vdENhbGxlZFdpdGhNYXRjaCgpIHsKKyAgICAgICAgICAgIHJldHVy
biAhdGhpcy5jYWxsZWRXaXRoTWF0Y2guYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAg
fSwKKworICAgICAgICByZXR1cm5lZDogZnVuY3Rpb24gcmV0dXJuZWQodmFsdWUpIHsKKyAgICAg
ICAgICAgIHJldHVybiBzaW5vbi5kZWVwRXF1YWwodmFsdWUsIHRoaXMucmV0dXJuVmFsdWUpOwor
ICAgICAgICB9LAorCisgICAgICAgIHRocmV3OiBmdW5jdGlvbiB0aHJldyhlcnJvcikgeworICAg
ICAgICAgICAgaWYgKHR5cGVvZiBlcnJvciA9PT0gInVuZGVmaW5lZCIgfHwgIXRoaXMuZXhjZXB0
aW9uKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICEhdGhpcy5leGNlcHRpb247CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmV4Y2VwdGlvbiA9PT0gZXJyb3IgfHwg
dGhpcy5leGNlcHRpb24ubmFtZSA9PT0gZXJyb3I7CisgICAgICAgIH0sCisKKyAgICAgICAgY2Fs
bGVkV2l0aE5ldzogZnVuY3Rpb24gY2FsbGVkV2l0aE5ldygpIHsKKyAgICAgICAgICAgIHJldHVy
biB0aGlzLnByb3h5LnByb3RvdHlwZSAmJiB0aGlzLnRoaXNWYWx1ZSBpbnN0YW5jZW9mIHRoaXMu
cHJveHk7CisgICAgICAgIH0sCisKKyAgICAgICAgY2FsbGVkQmVmb3JlOiBmdW5jdGlvbiAob3Ro
ZXIpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbGxJZCA8IG90aGVyLmNhbGxJZDsKKyAg
ICAgICAgfSwKKworICAgICAgICBjYWxsZWRBZnRlcjogZnVuY3Rpb24gKG90aGVyKSB7CisgICAg
ICAgICAgICByZXR1cm4gdGhpcy5jYWxsSWQgPiBvdGhlci5jYWxsSWQ7CisgICAgICAgIH0sCisK
KyAgICAgICAgY2FsbEFyZzogZnVuY3Rpb24gKHBvcykgeworICAgICAgICAgICAgdGhpcy5hcmdz
W3Bvc10oKTsKKyAgICAgICAgfSwKKworICAgICAgICBjYWxsQXJnT246IGZ1bmN0aW9uIChwb3Ms
IHRoaXNWYWx1ZSkgeworICAgICAgICAgICAgdGhpcy5hcmdzW3Bvc10uYXBwbHkodGhpc1ZhbHVl
KTsKKyAgICAgICAgfSwKKworICAgICAgICBjYWxsQXJnV2l0aDogZnVuY3Rpb24gKHBvcykgewor
ICAgICAgICAgICAgdGhpcy5jYWxsQXJnT25XaXRoLmFwcGx5KHRoaXMsIFtwb3MsIG51bGxdLmNv
bmNhdChzbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpKTsKKyAgICAgICAgfSwKKworICAgICAgICBj
YWxsQXJnT25XaXRoOiBmdW5jdGlvbiAocG9zLCB0aGlzVmFsdWUpIHsKKyAgICAgICAgICAgIHZh
ciBhcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpOworICAgICAgICAgICAgdGhpcy5hcmdz
W3Bvc10uYXBwbHkodGhpc1ZhbHVlLCBhcmdzKTsKKyAgICAgICAgfSwKKworICAgICAgICAieWll
bGQiOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aGlzLnlpZWxkT24uYXBwbHkodGhpcywg
W251bGxdLmNvbmNhdChzbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpKTsKKyAgICAgICAgfSwKKwor
ICAgICAgICB5aWVsZE9uOiBmdW5jdGlvbiAodGhpc1ZhbHVlKSB7CisgICAgICAgICAgICB2YXIg
YXJncyA9IHRoaXMuYXJnczsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gYXJncy5s
ZW5ndGg7IGkgPCBsOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3NbaV0g
PT09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgICAgICAgICAgICAgYXJnc1tpXS5hcHBseSh0aGlz
VmFsdWUsIHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aHJv
d1lpZWxkRXJyb3IodGhpcy5wcm94eSwgIiBjYW5ub3QgeWllbGQgc2luY2Ugbm8gY2FsbGJhY2sg
d2FzIHBhc3NlZC4iLCBhcmdzKTsKKyAgICAgICAgfSwKKworICAgICAgICB5aWVsZFRvOiBmdW5j
dGlvbiAocHJvcCkgeworICAgICAgICAgICAgdGhpcy55aWVsZFRvT24uYXBwbHkodGhpcywgW3By
b3AsIG51bGxdLmNvbmNhdChzbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpKTsKKyAgICAgICAgfSwK
KworICAgICAgICB5aWVsZFRvT246IGZ1bmN0aW9uIChwcm9wLCB0aGlzVmFsdWUpIHsKKyAgICAg
ICAgICAgIHZhciBhcmdzID0gdGhpcy5hcmdzOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAs
IGwgPSBhcmdzLmxlbmd0aDsgaSA8IGw7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChhcmdz
W2ldICYmIHR5cGVvZiBhcmdzW2ldW3Byb3BdID09PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAg
ICAgICAgICAgIGFyZ3NbaV1bcHJvcF0uYXBwbHkodGhpc1ZhbHVlLCBzbGljZS5jYWxsKGFyZ3Vt
ZW50cywgMikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhyb3dZaWVsZEVycm9yKHRoaXMucHJveHks
ICIgY2Fubm90IHlpZWxkIHRvICciICsgcHJvcCArCisgICAgICAgICAgICAgICAgIicgc2luY2Ug
bm8gY2FsbGJhY2sgd2FzIHBhc3NlZC4iLCBhcmdzKTsKKyAgICAgICAgfSwKKworICAgICAgICB0
b1N0cmluZzogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdmFyIGNhbGxTdHIgPSB0aGlzLnBy
b3h5LnRvU3RyaW5nKCkgKyAiKCI7CisgICAgICAgICAgICB2YXIgYXJncyA9IFtdOworCisgICAg
ICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IHRoaXMuYXJncy5sZW5ndGg7IGkgPCBsOyArK2kp
IHsKKyAgICAgICAgICAgICAgICBhcmdzLnB1c2goc2lub24uZm9ybWF0KHRoaXMuYXJnc1tpXSkp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYWxsU3RyID0gY2FsbFN0ciArIGFyZ3Mu
am9pbigiLCAiKSArICIpIjsKKworICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJldHVyblZh
bHVlICE9ICJ1bmRlZmluZWQiKSB7CisgICAgICAgICAgICAgICAgY2FsbFN0ciArPSAiID0+ICIg
KyBzaW5vbi5mb3JtYXQodGhpcy5yZXR1cm5WYWx1ZSk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICh0aGlzLmV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgIGNhbGxTdHIgKz0g
IiAhIiArIHRoaXMuZXhjZXB0aW9uLm5hbWU7CisKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5l
eGNlcHRpb24ubWVzc2FnZSkgeworICAgICAgICAgICAgICAgICAgICBjYWxsU3RyICs9ICIoIiAr
IHRoaXMuZXhjZXB0aW9uLm1lc3NhZ2UgKyAiKSI7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gY2FsbFN0cjsKKyAgICAgICAgfQorICAgIH07
CisKKyAgICBjYWxsUHJvdG8uaW52b2tlQ2FsbGJhY2sgPSBjYWxsUHJvdG8ueWllbGQ7CisKKyAg
ICBmdW5jdGlvbiBjcmVhdGVTcHlDYWxsKHNweSwgdGhpc1ZhbHVlLCBhcmdzLCByZXR1cm5WYWx1
ZSwgZXhjZXB0aW9uLCBpZCkgeworICAgICAgICBpZiAodHlwZW9mIGlkICE9PSAibnVtYmVyIikg
eworICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2FsbCBpZCBpcyBub3QgYSBudW1i
ZXIiKTsKKyAgICAgICAgfQorICAgICAgICB2YXIgcHJveHlDYWxsID0gc2lub24uY3JlYXRlKGNh
bGxQcm90byk7CisgICAgICAgIHByb3h5Q2FsbC5wcm94eSA9IHNweTsKKyAgICAgICAgcHJveHlD
YWxsLnRoaXNWYWx1ZSA9IHRoaXNWYWx1ZTsKKyAgICAgICAgcHJveHlDYWxsLmFyZ3MgPSBhcmdz
OworICAgICAgICBwcm94eUNhbGwucmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZTsKKyAgICAgICAg
cHJveHlDYWxsLmV4Y2VwdGlvbiA9IGV4Y2VwdGlvbjsKKyAgICAgICAgcHJveHlDYWxsLmNhbGxJ
ZCA9IGlkOworCisgICAgICAgIHJldHVybiBwcm94eUNhbGw7CisgICAgfQorICAgIGNyZWF0ZVNw
eUNhbGwudG9TdHJpbmcgPSBjYWxsUHJvdG8udG9TdHJpbmc7IC8vIHVzZWQgYnkgbW9ja3MKKwor
ICAgIHNpbm9uLnNweUNhbGwgPSBjcmVhdGVTcHlDYWxsOworCisgICAgaWYgKHR5cGVvZiBkZWZp
bmUgPT09ICJmdW5jdGlvbiIgJiYgZGVmaW5lLmFtZCkgeworICAgICAgICBkZWZpbmUoWyJtb2R1
bGUiXSwgZnVuY3Rpb24obW9kdWxlKSB7IG1vZHVsZS5leHBvcnRzID0gY3JlYXRlU3B5Q2FsbDsg
fSk7CisgICAgfSBlbHNlIGlmIChjb21tb25KU01vZHVsZSkgeworICAgICAgICBtb2R1bGUuZXhw
b3J0cyA9IGNyZWF0ZVNweUNhbGw7CisgICAgfQorfSh0eXBlb2Ygc2lub24gPT0gIm9iamVjdCIg
JiYgc2lub24gfHwgbnVsbCkpOworCisKK30seyIuLi9zaW5vbiI6MjN9XSwyNzpbZnVuY3Rpb24o
cmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIEBkZXBlbmQgLi4vc2lub24uanMKKyAq
IEBkZXBlbmQgc3R1Yi5qcworICogQGRlcGVuZCBtb2NrLmpzCisgKi8KKy8qanNsaW50IGVxZXFl
cTogZmFsc2UsIG9uZXZhcjogZmFsc2UsIGZvcmluOiB0cnVlKi8KKy8qZ2xvYmFsIG1vZHVsZSwg
cmVxdWlyZSwgc2lub24qLworLyoqCisgKiBDb2xsZWN0aW9ucyBvZiBzdHVicywgc3BpZXMgYW5k
IG1vY2tzLgorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEpvaGFuc2VuIChjaHJpc3RpYW5AY2pv
aGFuc2VuLm5vKQorICogQGxpY2Vuc2UgQlNECisgKgorICogQ29weXJpZ2h0IChjKSAyMDEwLTIw
MTMgQ2hyaXN0aWFuIEpvaGFuc2VuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworKGZ1bmN0aW9uIChz
aW5vbikgeworICAgIHZhciBjb21tb25KU01vZHVsZSA9IHR5cGVvZiBtb2R1bGUgIT09ICJ1bmRl
ZmluZWQiICYmIG1vZHVsZS5leHBvcnRzICYmIHR5cGVvZiByZXF1aXJlID09ICJmdW5jdGlvbiI7
CisgICAgdmFyIHB1c2ggPSBbXS5wdXNoOworICAgIHZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVj
dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7CisKKyAgICBpZiAoIXNpbm9uICYmIGNvbW1vbkpT
TW9kdWxlKSB7CisgICAgICAgIHNpbm9uID0gcmVxdWlyZSgiLi4vc2lub24iKTsKKyAgICB9CisK
KyAgICBpZiAoIXNpbm9uKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBnZXRGYWtlcyhmYWtlQ29sbGVjdGlvbikgeworICAgICAgICBpZiAoIWZha2VDb2xsZWN0aW9u
LmZha2VzKSB7CisgICAgICAgICAgICBmYWtlQ29sbGVjdGlvbi5mYWtlcyA9IFtdOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIGZha2VDb2xsZWN0aW9uLmZha2VzOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGVhY2goZmFrZUNvbGxlY3Rpb24sIG1ldGhvZCkgeworICAgICAgICB2YXIgZmFr
ZXMgPSBnZXRGYWtlcyhmYWtlQ29sbGVjdGlvbik7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDAs
IGwgPSBmYWtlcy5sZW5ndGg7IGkgPCBsOyBpICs9IDEpIHsKKyAgICAgICAgICAgIGlmICh0eXBl
b2YgZmFrZXNbaV1bbWV0aG9kXSA9PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICAgICAgZmFr
ZXNbaV1bbWV0aG9kXSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
ZnVuY3Rpb24gY29tcGFjdChmYWtlQ29sbGVjdGlvbikgeworICAgICAgICB2YXIgZmFrZXMgPSBn
ZXRGYWtlcyhmYWtlQ29sbGVjdGlvbik7CisgICAgICAgIHZhciBpID0gMDsKKyAgICAgICAgd2hp
bGUgKGkgPCBmYWtlcy5sZW5ndGgpIHsKKyAgICAgICAgICBmYWtlcy5zcGxpY2UoaSwgMSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgY29sbGVjdGlvbiA9IHsKKyAgICAgICAgdmVyaWZ5
OiBmdW5jdGlvbiByZXNvbHZlKCkgeworICAgICAgICAgICAgZWFjaCh0aGlzLCAidmVyaWZ5Iik7
CisgICAgICAgIH0sCisKKyAgICAgICAgcmVzdG9yZTogZnVuY3Rpb24gcmVzdG9yZSgpIHsKKyAg
ICAgICAgICAgIGVhY2godGhpcywgInJlc3RvcmUiKTsKKyAgICAgICAgICAgIGNvbXBhY3QodGhp
cyk7CisgICAgICAgIH0sCisKKyAgICAgICAgdmVyaWZ5QW5kUmVzdG9yZTogZnVuY3Rpb24gdmVy
aWZ5QW5kUmVzdG9yZSgpIHsKKyAgICAgICAgICAgIHZhciBleGNlcHRpb247CisKKyAgICAgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICAgICAgdGhpcy52ZXJpZnkoKTsKKyAgICAgICAgICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICBleGNlcHRpb24gPSBlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB0aGlzLnJlc3RvcmUoKTsKKworICAgICAgICAgICAgaWYgKGV4Y2Vw
dGlvbikgeworICAgICAgICAgICAgICAgIHRocm93IGV4Y2VwdGlvbjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSwKKworICAgICAgICBhZGQ6IGZ1bmN0aW9uIGFkZChmYWtlKSB7CisgICAgICAg
ICAgICBwdXNoLmNhbGwoZ2V0RmFrZXModGhpcyksIGZha2UpOworICAgICAgICAgICAgcmV0dXJu
IGZha2U7CisgICAgICAgIH0sCisKKyAgICAgICAgc3B5OiBmdW5jdGlvbiBzcHkoKSB7CisgICAg
ICAgICAgICByZXR1cm4gdGhpcy5hZGQoc2lub24uc3B5LmFwcGx5KHNpbm9uLCBhcmd1bWVudHMp
KTsKKyAgICAgICAgfSwKKworICAgICAgICBzdHViOiBmdW5jdGlvbiBzdHViKG9iamVjdCwgcHJv
cGVydHksIHZhbHVlKSB7CisgICAgICAgICAgICBpZiAocHJvcGVydHkpIHsKKyAgICAgICAgICAg
ICAgICB2YXIgb3JpZ2luYWwgPSBvYmplY3RbcHJvcGVydHldOworCisgICAgICAgICAgICAgICAg
aWYgKHR5cGVvZiBvcmlnaW5hbCAhPSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICghaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IHN0dWIgbm9uLWV4aXN0
ZW50IG93biBwcm9wZXJ0eSAiICsgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgb2JqZWN0W3Byb3BlcnR5XSA9IHZhbHVlOworCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZCh7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN0b3JlOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0
W3Byb3BlcnR5XSA9IG9yaWdpbmFsOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoIXByb3BlcnR5ICYmICEhb2JqZWN0ICYmIHR5cGVvZiBvYmplY3QgPT0gIm9i
amVjdCIpIHsKKyAgICAgICAgICAgICAgICB2YXIgc3R1YmJlZE9iaiA9IHNpbm9uLnN0dWIuYXBw
bHkoc2lub24sIGFyZ3VtZW50cyk7CisKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBwcm9wIGlu
IHN0dWJiZWRPYmopIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzdHViYmVkT2Jq
W3Byb3BdID09PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFk
ZChzdHViYmVkT2JqW3Byb3BdKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiBzdHViYmVkT2JqOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gdGhpcy5hZGQoc2lub24uc3R1Yi5hcHBseShzaW5vbiwg
YXJndW1lbnRzKSk7CisgICAgICAgIH0sCisKKyAgICAgICAgbW9jazogZnVuY3Rpb24gbW9jaygp
IHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZChzaW5vbi5tb2NrLmFwcGx5KHNpbm9uLCBh
cmd1bWVudHMpKTsKKyAgICAgICAgfSwKKworICAgICAgICBpbmplY3Q6IGZ1bmN0aW9uIGluamVj
dChvYmopIHsKKyAgICAgICAgICAgIHZhciBjb2wgPSB0aGlzOworCisgICAgICAgICAgICBvYmou
c3B5ID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBjb2wuc3B5LmFwcGx5
KGNvbCwgYXJndW1lbnRzKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIG9iai5zdHVi
ID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBjb2wuc3R1Yi5hcHBseShj
b2wsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBvYmoubW9jayA9
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29sLm1vY2suYXBwbHkoY29s
LCBhcmd1bWVudHMpOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgcmV0dXJuIG9iajsK
KyAgICAgICAgfQorICAgIH07CisKKyAgICBzaW5vbi5jb2xsZWN0aW9uID0gY29sbGVjdGlvbjsK
KworICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAiZnVuY3Rpb24iICYmIGRlZmluZS5hbWQpIHsK
KyAgICAgICAgZGVmaW5lKFsibW9kdWxlIl0sIGZ1bmN0aW9uKG1vZHVsZSkgeyBtb2R1bGUuZXhw
b3J0cyA9IGNvbGxlY3Rpb247IH0pOworICAgIH0gZWxzZSBpZiAoY29tbW9uSlNNb2R1bGUpIHsK
KyAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBjb2xsZWN0aW9uOworICAgIH0KK30odHlwZW9mIHNp
bm9uID09ICJvYmplY3QiICYmIHNpbm9uIHx8IG51bGwpKTsKKworfSx7Ii4uL3Npbm9uIjoyM31d
LDI4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8qIEBkZXBlbmQgLi4vc2lu
b24uanMgKi8KKy8qanNsaW50IGVxZXFlcTogZmFsc2UsIG9uZXZhcjogZmFsc2UsIHBsdXNwbHVz
OiBmYWxzZSovCisvKmdsb2JhbCBtb2R1bGUsIHJlcXVpcmUsIHNpbm9uKi8KKy8qKgorICogTWF0
Y2ggZnVuY3Rpb25zCisgKgorICogQGF1dGhvciBNYXhpbWlsaWFuIEFudG9uaSAobWFpbEBtYXhh
bnRvbmkuZGUpCisgKiBAbGljZW5zZSBCU0QKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIgTWF4
aW1pbGlhbiBBbnRvbmkKKyAqLworInVzZSBzdHJpY3QiOworCisoZnVuY3Rpb24gKHNpbm9uKSB7
CisgICAgdmFyIGNvbW1vbkpTTW9kdWxlID0gdHlwZW9mIG1vZHVsZSAhPT0gInVuZGVmaW5lZCIg
JiYgbW9kdWxlLmV4cG9ydHMgJiYgdHlwZW9mIHJlcXVpcmUgPT0gImZ1bmN0aW9uIjsKKworICAg
IGlmICghc2lub24gJiYgY29tbW9uSlNNb2R1bGUpIHsKKyAgICAgICAgc2lub24gPSByZXF1aXJl
KCIuLi9zaW5vbiIpOworICAgIH0KKworICAgIGlmICghc2lub24pIHsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGFzc2VydFR5cGUodmFsdWUsIHR5cGUsIG5hbWUpIHsK
KyAgICAgICAgdmFyIGFjdHVhbCA9IHNpbm9uLnR5cGVPZih2YWx1ZSk7CisgICAgICAgIGlmIChh
Y3R1YWwgIT09IHR5cGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVj
dGVkIHR5cGUgb2YgIiArIG5hbWUgKyAiIHRvIGJlICIgKworICAgICAgICAgICAgICAgIHR5cGUg
KyAiLCBidXQgd2FzICIgKyBhY3R1YWwpOworICAgICAgICB9CisgICAgfQorCisgICAgdmFyIG1h
dGNoZXIgPSB7CisgICAgICAgIHRvU3RyaW5nOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5tZXNzYWdlOworICAgICAgICB9CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGlz
TWF0Y2hlcihvYmplY3QpIHsKKyAgICAgICAgcmV0dXJuIG1hdGNoZXIuaXNQcm90b3R5cGVPZihv
YmplY3QpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG1hdGNoT2JqZWN0KGV4cGVjdGF0aW9uLCBh
Y3R1YWwpIHsKKyAgICAgICAgaWYgKGFjdHVhbCA9PT0gbnVsbCB8fCBhY3R1YWwgPT09IHVuZGVm
aW5lZCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGZv
ciAodmFyIGtleSBpbiBleHBlY3RhdGlvbikgeworICAgICAgICAgICAgaWYgKGV4cGVjdGF0aW9u
Lmhhc093blByb3BlcnR5KGtleSkpIHsKKyAgICAgICAgICAgICAgICB2YXIgZXhwID0gZXhwZWN0
YXRpb25ba2V5XTsKKyAgICAgICAgICAgICAgICB2YXIgYWN0ID0gYWN0dWFsW2tleV07CisgICAg
ICAgICAgICAgICAgaWYgKG1hdGNoLmlzTWF0Y2hlcihleHApKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmICghZXhwLnRlc3QoYWN0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChzaW5vbi50eXBlT2YoZXhwKSA9PT0gIm9iamVjdCIpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFtYXRjaE9iamVjdChleHAsIGFjdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoIXNpbm9uLmRlZXBFcXVhbChleHAsIGFjdCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBtYXRjaGVyLm9yID0gZnVuY3Rp
b24gKG0yKSB7CisgICAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgeworICAgICAgICAgICAg
dGhyb3cgbmV3IFR5cGVFcnJvcigiTWF0Y2hlciBleHBlY3RlZCIpOworICAgICAgICB9IGVsc2Ug
aWYgKCFpc01hdGNoZXIobTIpKSB7CisgICAgICAgICAgICBtMiA9IG1hdGNoKG0yKTsKKyAgICAg
ICAgfQorICAgICAgICB2YXIgbTEgPSB0aGlzOworICAgICAgICB2YXIgb3IgPSBzaW5vbi5jcmVh
dGUobWF0Y2hlcik7CisgICAgICAgIG9yLnRlc3QgPSBmdW5jdGlvbiAoYWN0dWFsKSB7CisgICAg
ICAgICAgICByZXR1cm4gbTEudGVzdChhY3R1YWwpIHx8IG0yLnRlc3QoYWN0dWFsKTsKKyAgICAg
ICAgfTsKKyAgICAgICAgb3IubWVzc2FnZSA9IG0xLm1lc3NhZ2UgKyAiLm9yKCIgKyBtMi5tZXNz
YWdlICsgIikiOworICAgICAgICByZXR1cm4gb3I7CisgICAgfTsKKworICAgIG1hdGNoZXIuYW5k
ID0gZnVuY3Rpb24gKG0yKSB7CisgICAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgeworICAg
ICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiTWF0Y2hlciBleHBlY3RlZCIpOworICAgICAg
ICB9IGVsc2UgaWYgKCFpc01hdGNoZXIobTIpKSB7CisgICAgICAgICAgICBtMiA9IG1hdGNoKG0y
KTsKKyAgICAgICAgfQorICAgICAgICB2YXIgbTEgPSB0aGlzOworICAgICAgICB2YXIgYW5kID0g
c2lub24uY3JlYXRlKG1hdGNoZXIpOworICAgICAgICBhbmQudGVzdCA9IGZ1bmN0aW9uIChhY3R1
YWwpIHsKKyAgICAgICAgICAgIHJldHVybiBtMS50ZXN0KGFjdHVhbCkgJiYgbTIudGVzdChhY3R1
YWwpOworICAgICAgICB9OworICAgICAgICBhbmQubWVzc2FnZSA9IG0xLm1lc3NhZ2UgKyAiLmFu
ZCgiICsgbTIubWVzc2FnZSArICIpIjsKKyAgICAgICAgcmV0dXJuIGFuZDsKKyAgICB9OworCisg
ICAgdmFyIG1hdGNoID0gZnVuY3Rpb24gKGV4cGVjdGF0aW9uLCBtZXNzYWdlKSB7CisgICAgICAg
IHZhciBtID0gc2lub24uY3JlYXRlKG1hdGNoZXIpOworICAgICAgICB2YXIgdHlwZSA9IHNpbm9u
LnR5cGVPZihleHBlY3RhdGlvbik7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBj
YXNlICJvYmplY3QiOgorICAgICAgICAgICAgaWYgKHR5cGVvZiBleHBlY3RhdGlvbi50ZXN0ID09
PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICAgICAgbS50ZXN0ID0gZnVuY3Rpb24gKGFjdHVh
bCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0YXRpb24udGVzdChhY3R1YWwp
ID09PSB0cnVlOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgbS5tZXNzYWdl
ID0gIm1hdGNoKCIgKyBzaW5vbi5mdW5jdGlvbk5hbWUoZXhwZWN0YXRpb24udGVzdCkgKyAiKSI7
CisgICAgICAgICAgICAgICAgcmV0dXJuIG07CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2
YXIgc3RyID0gW107CisgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZXhwZWN0YXRpb24pIHsK
KyAgICAgICAgICAgICAgICBpZiAoZXhwZWN0YXRpb24uaGFzT3duUHJvcGVydHkoa2V5KSkgewor
ICAgICAgICAgICAgICAgICAgICBzdHIucHVzaChrZXkgKyAiOiAiICsgZXhwZWN0YXRpb25ba2V5
XSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbS50ZXN0
ID0gZnVuY3Rpb24gKGFjdHVhbCkgeworICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaE9iamVj
dChleHBlY3RhdGlvbiwgYWN0dWFsKTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBtLm1l
c3NhZ2UgPSAibWF0Y2goIiArIHN0ci5qb2luKCIsICIpICsgIikiOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgIm51bWJlciI6CisgICAgICAgICAgICBtLnRlc3QgPSBmdW5jdGlv
biAoYWN0dWFsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGF0aW9uID09IGFjdHVh
bDsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAic3Ry
aW5nIjoKKyAgICAgICAgICAgIG0udGVzdCA9IGZ1bmN0aW9uIChhY3R1YWwpIHsKKyAgICAgICAg
ICAgICAgICBpZiAodHlwZW9mIGFjdHVhbCAhPT0gInN0cmluZyIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBy
ZXR1cm4gYWN0dWFsLmluZGV4T2YoZXhwZWN0YXRpb24pICE9PSAtMTsKKyAgICAgICAgICAgIH07
CisgICAgICAgICAgICBtLm1lc3NhZ2UgPSAibWF0Y2goXCIiICsgZXhwZWN0YXRpb24gKyAiXCIp
IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJyZWdleHAiOgorICAgICAgICAg
ICAgbS50ZXN0ID0gZnVuY3Rpb24gKGFjdHVhbCkgeworICAgICAgICAgICAgICAgIGlmICh0eXBl
b2YgYWN0dWFsICE9PSAic3RyaW5nIikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBleHBlY3RhdGlv
bi50ZXN0KGFjdHVhbCk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgImZ1bmN0aW9uIjoKKyAgICAgICAgICAgIG0udGVzdCA9IGV4cGVjdGF0aW9uOwor
ICAgICAgICAgICAgaWYgKG1lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICBtLm1lc3NhZ2UgPSBt
ZXNzYWdlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtLm1lc3NhZ2Ug
PSAibWF0Y2goIiArIHNpbm9uLmZ1bmN0aW9uTmFtZShleHBlY3RhdGlvbikgKyAiKSI7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIG0udGVzdCA9IGZ1bmN0aW9uIChhY3R1YWwpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHNp
bm9uLmRlZXBFcXVhbChleHBlY3RhdGlvbiwgYWN0dWFsKTsKKyAgICAgICAgICAgIH07CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKCFtLm1lc3NhZ2UpIHsKKyAgICAgICAgICAgIG0ubWVzc2FnZSA9
ICJtYXRjaCgiICsgZXhwZWN0YXRpb24gKyAiKSI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IG07CisgICAgfTsKKworICAgIG1hdGNoLmlzTWF0Y2hlciA9IGlzTWF0Y2hlcjsKKworICAgIG1h
dGNoLmFueSA9IG1hdGNoKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fSwgImFueSIpOworCisgICAgbWF0Y2guZGVmaW5lZCA9IG1hdGNoKGZ1bmN0aW9uIChhY3R1YWwp
IHsKKyAgICAgICAgcmV0dXJuIGFjdHVhbCAhPT0gbnVsbCAmJiBhY3R1YWwgIT09IHVuZGVmaW5l
ZDsKKyAgICB9LCAiZGVmaW5lZCIpOworCisgICAgbWF0Y2gudHJ1dGh5ID0gbWF0Y2goZnVuY3Rp
b24gKGFjdHVhbCkgeworICAgICAgICByZXR1cm4gISFhY3R1YWw7CisgICAgfSwgInRydXRoeSIp
OworCisgICAgbWF0Y2guZmFsc3kgPSBtYXRjaChmdW5jdGlvbiAoYWN0dWFsKSB7CisgICAgICAg
IHJldHVybiAhYWN0dWFsOworICAgIH0sICJmYWxzeSIpOworCisgICAgbWF0Y2guc2FtZSA9IGZ1
bmN0aW9uIChleHBlY3RhdGlvbikgeworICAgICAgICByZXR1cm4gbWF0Y2goZnVuY3Rpb24gKGFj
dHVhbCkgeworICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGF0aW9uID09PSBhY3R1YWw7CisgICAg
ICAgIH0sICJzYW1lKCIgKyBleHBlY3RhdGlvbiArICIpIik7CisgICAgfTsKKworICAgIG1hdGNo
LnR5cGVPZiA9IGZ1bmN0aW9uICh0eXBlKSB7CisgICAgICAgIGFzc2VydFR5cGUodHlwZSwgInN0
cmluZyIsICJ0eXBlIik7CisgICAgICAgIHJldHVybiBtYXRjaChmdW5jdGlvbiAoYWN0dWFsKSB7
CisgICAgICAgICAgICByZXR1cm4gc2lub24udHlwZU9mKGFjdHVhbCkgPT09IHR5cGU7CisgICAg
ICAgIH0sICJ0eXBlT2YoXCIiICsgdHlwZSArICJcIikiKTsKKyAgICB9OworCisgICAgbWF0Y2gu
aW5zdGFuY2VPZiA9IGZ1bmN0aW9uICh0eXBlKSB7CisgICAgICAgIGFzc2VydFR5cGUodHlwZSwg
ImZ1bmN0aW9uIiwgInR5cGUiKTsKKyAgICAgICAgcmV0dXJuIG1hdGNoKGZ1bmN0aW9uIChhY3R1
YWwpIHsKKyAgICAgICAgICAgIHJldHVybiBhY3R1YWwgaW5zdGFuY2VvZiB0eXBlOworICAgICAg
ICB9LCAiaW5zdGFuY2VPZigiICsgc2lub24uZnVuY3Rpb25OYW1lKHR5cGUpICsgIikiKTsKKyAg
ICB9OworCisgICAgZnVuY3Rpb24gY3JlYXRlUHJvcGVydHlNYXRjaGVyKHByb3BlcnR5VGVzdCwg
bWVzc2FnZVByZWZpeCkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHByb3BlcnR5LCB2YWx1
ZSkgeworICAgICAgICAgICAgYXNzZXJ0VHlwZShwcm9wZXJ0eSwgInN0cmluZyIsICJwcm9wZXJ0
eSIpOworICAgICAgICAgICAgdmFyIG9ubHlQcm9wZXJ0eSA9IGFyZ3VtZW50cy5sZW5ndGggPT09
IDE7CisgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IG1lc3NhZ2VQcmVmaXggKyAiKFwiIiArIHBy
b3BlcnR5ICsgIlwiIjsKKyAgICAgICAgICAgIGlmICghb25seVByb3BlcnR5KSB7CisgICAgICAg
ICAgICAgICAgbWVzc2FnZSArPSAiLCAiICsgdmFsdWU7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBtZXNzYWdlICs9ICIpIjsKKyAgICAgICAgICAgIHJldHVybiBtYXRjaChmdW5jdGlvbiAo
YWN0dWFsKSB7CisgICAgICAgICAgICAgICAgaWYgKGFjdHVhbCA9PT0gdW5kZWZpbmVkIHx8IGFj
dHVhbCA9PT0gbnVsbCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgIXByb3BlcnR5VGVzdChh
Y3R1YWwsIHByb3BlcnR5KSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBvbmx5UHJvcGVydHkgfHwg
c2lub24uZGVlcEVxdWFsKHZhbHVlLCBhY3R1YWxbcHJvcGVydHldKTsKKyAgICAgICAgICAgIH0s
IG1lc3NhZ2UpOworICAgICAgICB9OworICAgIH0KKworICAgIG1hdGNoLmhhcyA9IGNyZWF0ZVBy
b3BlcnR5TWF0Y2hlcihmdW5jdGlvbiAoYWN0dWFsLCBwcm9wZXJ0eSkgeworICAgICAgICBpZiAo
dHlwZW9mIGFjdHVhbCA9PT0gIm9iamVjdCIpIHsKKyAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0
eSBpbiBhY3R1YWw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGFjdHVhbFtwcm9wZXJ0eV0g
IT09IHVuZGVmaW5lZDsKKyAgICB9LCAiaGFzIik7CisKKyAgICBtYXRjaC5oYXNPd24gPSBjcmVh
dGVQcm9wZXJ0eU1hdGNoZXIoZnVuY3Rpb24gKGFjdHVhbCwgcHJvcGVydHkpIHsKKyAgICAgICAg
cmV0dXJuIGFjdHVhbC5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgfSwgImhhc093biIp
OworCisgICAgbWF0Y2guYm9vbCA9IG1hdGNoLnR5cGVPZigiYm9vbGVhbiIpOworICAgIG1hdGNo
Lm51bWJlciA9IG1hdGNoLnR5cGVPZigibnVtYmVyIik7CisgICAgbWF0Y2guc3RyaW5nID0gbWF0
Y2gudHlwZU9mKCJzdHJpbmciKTsKKyAgICBtYXRjaC5vYmplY3QgPSBtYXRjaC50eXBlT2YoIm9i
amVjdCIpOworICAgIG1hdGNoLmZ1bmMgPSBtYXRjaC50eXBlT2YoImZ1bmN0aW9uIik7CisgICAg
bWF0Y2guYXJyYXkgPSBtYXRjaC50eXBlT2YoImFycmF5Iik7CisgICAgbWF0Y2gucmVnZXhwID0g
bWF0Y2gudHlwZU9mKCJyZWdleHAiKTsKKyAgICBtYXRjaC5kYXRlID0gbWF0Y2gudHlwZU9mKCJk
YXRlIik7CisKKyAgICBzaW5vbi5tYXRjaCA9IG1hdGNoOworCisgICAgaWYgKHR5cGVvZiBkZWZp
bmUgPT09ICJmdW5jdGlvbiIgJiYgZGVmaW5lLmFtZCkgeworICAgICAgICBkZWZpbmUoWyJtb2R1
bGUiXSwgZnVuY3Rpb24obW9kdWxlKSB7IG1vZHVsZS5leHBvcnRzID0gbWF0Y2g7IH0pOworICAg
IH0gZWxzZSBpZiAoY29tbW9uSlNNb2R1bGUpIHsKKyAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBt
YXRjaDsKKyAgICB9Cit9KHR5cGVvZiBzaW5vbiA9PSAib2JqZWN0IiAmJiBzaW5vbiB8fCBudWxs
KSk7CisKK30seyIuLi9zaW5vbiI6MjN9XSwyOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhw
b3J0cyl7CisvKioKKyAqIEBkZXBlbmQgLi4vc2lub24uanMKKyAqIEBkZXBlbmQgc3R1Yi5qcwor
ICovCisvKmpzbGludCBlcWVxZXE6IGZhbHNlLCBvbmV2YXI6IGZhbHNlLCBub21lbjogZmFsc2Uq
LworLypnbG9iYWwgbW9kdWxlLCByZXF1aXJlLCBzaW5vbiovCisvKioKKyAqIE1vY2sgZnVuY3Rp
b25zLgorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEpvaGFuc2VuIChjaHJpc3RpYW5AY2pvaGFu
c2VuLm5vKQorICogQGxpY2Vuc2UgQlNECisgKgorICogQ29weXJpZ2h0IChjKSAyMDEwLTIwMTMg
Q2hyaXN0aWFuIEpvaGFuc2VuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworKGZ1bmN0aW9uIChzaW5v
bikgeworICAgIHZhciBjb21tb25KU01vZHVsZSA9IHR5cGVvZiBtb2R1bGUgIT09ICJ1bmRlZmlu
ZWQiICYmIG1vZHVsZS5leHBvcnRzICYmIHR5cGVvZiByZXF1aXJlID09ICJmdW5jdGlvbiI7Cisg
ICAgdmFyIHB1c2ggPSBbXS5wdXNoOworICAgIHZhciBtYXRjaDsKKworICAgIGlmICghc2lub24g
JiYgY29tbW9uSlNNb2R1bGUpIHsKKyAgICAgICAgc2lub24gPSByZXF1aXJlKCIuLi9zaW5vbiIp
OworICAgIH0KKworICAgIGlmICghc2lub24pIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1hdGNoID0gc2lub24ubWF0Y2g7CisKKyAgICBpZiAoIW1hdGNoICYmIGNvbW1vbkpTTW9k
dWxlKSB7CisgICAgICAgIG1hdGNoID0gcmVxdWlyZSgiLi9tYXRjaCIpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIG1vY2sob2JqZWN0KSB7CisgICAgICAgIGlmICghb2JqZWN0KSB7CisgICAgICAg
ICAgICByZXR1cm4gc2lub24uZXhwZWN0YXRpb24uY3JlYXRlKCJBbm9ueW1vdXMgbW9jayIpOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG1vY2suY3JlYXRlKG9iamVjdCk7CisgICAgfQor
CisgICAgc2lub24ubW9jayA9IG1vY2s7CisKKyAgICBzaW5vbi5leHRlbmQobW9jaywgKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgZnVuY3Rpb24gZWFjaChjb2xsZWN0aW9uLCBjYWxsYmFjaykgewor
ICAgICAgICAgICAgaWYgKCFjb2xsZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNvbGxlY3Rp
b24ubGVuZ3RoOyBpIDwgbDsgaSArPSAxKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soY29s
bGVjdGlvbltpXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
eworICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbiBjcmVhdGUob2JqZWN0KSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5
cGVFcnJvcigib2JqZWN0IGlzIG51bGwiKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICB2YXIgbW9ja09iamVjdCA9IHNpbm9uLmV4dGVuZCh7fSwgbW9jayk7CisgICAgICAg
ICAgICAgICAgbW9ja09iamVjdC5vYmplY3QgPSBvYmplY3Q7CisgICAgICAgICAgICAgICAgZGVs
ZXRlIG1vY2tPYmplY3QuY3JlYXRlOworCisgICAgICAgICAgICAgICAgcmV0dXJuIG1vY2tPYmpl
Y3Q7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBleHBlY3RzOiBmdW5jdGlvbiBleHBl
Y3RzKG1ldGhvZCkgeworICAgICAgICAgICAgICAgIGlmICghbWV0aG9kKSB7CisgICAgICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIm1ldGhvZCBpcyBmYWxzeSIpOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICghdGhpcy5leHBlY3RhdGlvbnMpIHsK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RhdGlvbnMgPSB7fTsKKyAgICAgICAgICAg
ICAgICAgICAgdGhpcy5wcm94aWVzID0gW107CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgaWYgKCF0aGlzLmV4cGVjdGF0aW9uc1ttZXRob2RdKSB7CisgICAgICAgICAgICAg
ICAgICAgIHRoaXMuZXhwZWN0YXRpb25zW21ldGhvZF0gPSBbXTsKKyAgICAgICAgICAgICAgICAg
ICAgdmFyIG1vY2tPYmplY3QgPSB0aGlzOworCisgICAgICAgICAgICAgICAgICAgIHNpbm9uLndy
YXBNZXRob2QodGhpcy5vYmplY3QsIG1ldGhvZCwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1vY2tPYmplY3QuaW52b2tlTWV0aG9kKG1ldGhvZCwgdGhpcywg
YXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgcHVzaC5jYWxsKHRoaXMucHJveGllcywgbWV0aG9kKTsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICB2YXIgZXhwZWN0YXRpb24gPSBzaW5vbi5leHBlY3RhdGlvbi5jcmVh
dGUobWV0aG9kKTsKKyAgICAgICAgICAgICAgICBwdXNoLmNhbGwodGhpcy5leHBlY3RhdGlvbnNb
bWV0aG9kXSwgZXhwZWN0YXRpb24pOworCisgICAgICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGF0
aW9uOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgcmVzdG9yZTogZnVuY3Rpb24gcmVz
dG9yZSgpIHsKKyAgICAgICAgICAgICAgICB2YXIgb2JqZWN0ID0gdGhpcy5vYmplY3Q7CisKKyAg
ICAgICAgICAgICAgICBlYWNoKHRoaXMucHJveGllcywgZnVuY3Rpb24gKHByb3h5KSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqZWN0W3Byb3h5XS5yZXN0b3JlID09ICJmdW5j
dGlvbiIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFtwcm94eV0ucmVzdG9yZSgp
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICB9LAorCisgICAgICAgICAgICB2ZXJpZnk6IGZ1bmN0aW9uIHZlcmlmeSgpIHsKKyAgICAgICAg
ICAgICAgICB2YXIgZXhwZWN0YXRpb25zID0gdGhpcy5leHBlY3RhdGlvbnMgfHwge307CisgICAg
ICAgICAgICAgICAgdmFyIG1lc3NhZ2VzID0gW10sIG1ldCA9IFtdOworCisgICAgICAgICAgICAg
ICAgZWFjaCh0aGlzLnByb3hpZXMsIGZ1bmN0aW9uIChwcm94eSkgeworICAgICAgICAgICAgICAg
ICAgICBlYWNoKGV4cGVjdGF0aW9uc1twcm94eV0sIGZ1bmN0aW9uIChleHBlY3RhdGlvbikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFleHBlY3RhdGlvbi5tZXQoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2guY2FsbChtZXNzYWdlcywgZXhwZWN0YXRpb24udG9T
dHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2guY2FsbChtZXQsIGV4cGVjdGF0aW9uLnRvU3RyaW5nKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIHRoaXMucmVzdG9yZSgpOworCisgICAg
ICAgICAgICAgICAgaWYgKG1lc3NhZ2VzLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAgICAg
ICAgc2lub24uZXhwZWN0YXRpb24uZmFpbChtZXNzYWdlcy5jb25jYXQobWV0KS5qb2luKCJcbiIp
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzaW5vbi5l
eHBlY3RhdGlvbi5wYXNzKG1lc3NhZ2VzLmNvbmNhdChtZXQpLmpvaW4oIlxuIikpOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fSwKKworICAgICAgICAgICAgaW52b2tlTWV0aG9kOiBmdW5jdGlvbiBpbnZva2VNZXRob2QobWV0
aG9kLCB0aGlzVmFsdWUsIGFyZ3MpIHsKKyAgICAgICAgICAgICAgICB2YXIgZXhwZWN0YXRpb25z
ID0gdGhpcy5leHBlY3RhdGlvbnMgJiYgdGhpcy5leHBlY3RhdGlvbnNbbWV0aG9kXTsKKyAgICAg
ICAgICAgICAgICB2YXIgbGVuZ3RoID0gZXhwZWN0YXRpb25zICYmIGV4cGVjdGF0aW9ucy5sZW5n
dGggfHwgMCwgaTsKKworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkg
Kz0gMSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWV4cGVjdGF0aW9uc1tpXS5tZXQoKSAm
JgorICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0YXRpb25zW2ldLmFsbG93c0NhbGwodGhp
c1ZhbHVlLCBhcmdzKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGF0
aW9uc1tpXS5hcHBseSh0aGlzVmFsdWUsIGFyZ3MpOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VzID0gW10sIGF2
YWlsYWJsZSwgZXhoYXVzdGVkID0gMDsKKworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkg
PCBsZW5ndGg7IGkgKz0gMSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZXhwZWN0YXRpb25z
W2ldLmFsbG93c0NhbGwodGhpc1ZhbHVlLCBhcmdzKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgYXZhaWxhYmxlID0gYXZhaWxhYmxlIHx8IGV4cGVjdGF0aW9uc1tpXTsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4aGF1c3RlZCArPSAx
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHB1c2guY2FsbCht
ZXNzYWdlcywgIiAgICAiICsgZXhwZWN0YXRpb25zW2ldLnRvU3RyaW5nKCkpOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChleGhhdXN0ZWQgPT09IDApIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGF2YWlsYWJsZS5hcHBseSh0aGlzVmFsdWUsIGFyZ3MpOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1lc3NhZ2VzLnVuc2hpZnQoIlVu
ZXhwZWN0ZWQgY2FsbDogIiArIHNpbm9uLnNweUNhbGwudG9TdHJpbmcuY2FsbCh7CisgICAgICAg
ICAgICAgICAgICAgIHByb3h5OiBtZXRob2QsCisgICAgICAgICAgICAgICAgICAgIGFyZ3M6IGFy
Z3MKKyAgICAgICAgICAgICAgICB9KSk7CisKKyAgICAgICAgICAgICAgICBzaW5vbi5leHBlY3Rh
dGlvbi5mYWlsKG1lc3NhZ2VzLmpvaW4oIlxuIikpOworICAgICAgICAgICAgfQorICAgICAgICB9
OworICAgIH0oKSkpOworCisgICAgdmFyIHRpbWVzID0gc2lub24udGltZXNJbldvcmRzOworCisg
ICAgc2lub24uZXhwZWN0YXRpb24gPSAoZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgc2xpY2Ug
PSBBcnJheS5wcm90b3R5cGUuc2xpY2U7CisgICAgICAgIHZhciBfaW52b2tlID0gc2lub24uc3B5
Lmludm9rZTsKKworICAgICAgICBmdW5jdGlvbiBjYWxsQ291bnRJbldvcmRzKGNhbGxDb3VudCkg
eworICAgICAgICAgICAgaWYgKGNhbGxDb3VudCA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuICJuZXZlciBjYWxsZWQiOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gImNhbGxlZCAiICsgdGltZXMoY2FsbENvdW50KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGV4cGVjdGVkQ2FsbENvdW50SW5Xb3JkcyhleHBl
Y3RhdGlvbikgeworICAgICAgICAgICAgdmFyIG1pbiA9IGV4cGVjdGF0aW9uLm1pbkNhbGxzOwor
ICAgICAgICAgICAgdmFyIG1heCA9IGV4cGVjdGF0aW9uLm1heENhbGxzOworCisgICAgICAgICAg
ICBpZiAodHlwZW9mIG1pbiA9PSAibnVtYmVyIiAmJiB0eXBlb2YgbWF4ID09ICJudW1iZXIiKSB7
CisgICAgICAgICAgICAgICAgdmFyIHN0ciA9IHRpbWVzKG1pbik7CisKKyAgICAgICAgICAgICAg
ICBpZiAobWluICE9IG1heCkgeworICAgICAgICAgICAgICAgICAgICBzdHIgPSAiYXQgbGVhc3Qg
IiArIHN0ciArICIgYW5kIGF0IG1vc3QgIiArIHRpbWVzKG1heCk7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0cjsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKHR5cGVvZiBtaW4gPT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gImF0IGxlYXN0ICIgKyB0aW1lcyhtaW4pOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gImF0IG1vc3QgIiArIHRpbWVzKG1heCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiByZWNlaXZlZE1pbkNhbGxzKGV4cGVjdGF0aW9uKSB7CisgICAgICAgICAgICB2YXIg
aGFzTWluTGltaXQgPSB0eXBlb2YgZXhwZWN0YXRpb24ubWluQ2FsbHMgPT0gIm51bWJlciI7Cisg
ICAgICAgICAgICByZXR1cm4gIWhhc01pbkxpbWl0IHx8IGV4cGVjdGF0aW9uLmNhbGxDb3VudCA+
PSBleHBlY3RhdGlvbi5taW5DYWxsczsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJl
Y2VpdmVkTWF4Q2FsbHMoZXhwZWN0YXRpb24pIHsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgZXhw
ZWN0YXRpb24ubWF4Q2FsbHMgIT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBleHBlY3RhdGlvbi5j
YWxsQ291bnQgPT0gZXhwZWN0YXRpb24ubWF4Q2FsbHM7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiB2ZXJpZnlNYXRjaGVyKHBvc3NpYmxlTWF0Y2hlciwgYXJnKXsKKyAgICAgICAgICAg
IGlmIChtYXRjaCAmJiBtYXRjaC5pc01hdGNoZXIocG9zc2libGVNYXRjaGVyKSkgeworICAgICAg
ICAgICAgICAgIHJldHVybiBwb3NzaWJsZU1hdGNoZXIudGVzdChhcmcpOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBtaW5DYWxsczogMSwKKyAg
ICAgICAgICAgIG1heENhbGxzOiAxLAorCisgICAgICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uIGNy
ZWF0ZShtZXRob2ROYW1lKSB7CisgICAgICAgICAgICAgICAgdmFyIGV4cGVjdGF0aW9uID0gc2lu
b24uZXh0ZW5kKHNpbm9uLnN0dWIuY3JlYXRlKCksIHNpbm9uLmV4cGVjdGF0aW9uKTsKKyAgICAg
ICAgICAgICAgICBkZWxldGUgZXhwZWN0YXRpb24uY3JlYXRlOworICAgICAgICAgICAgICAgIGV4
cGVjdGF0aW9uLm1ldGhvZCA9IG1ldGhvZE5hbWU7CisKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZXhwZWN0YXRpb247CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBpbnZva2U6IGZ1bmN0
aW9uIGludm9rZShmdW5jLCB0aGlzVmFsdWUsIGFyZ3MpIHsKKyAgICAgICAgICAgICAgICB0aGlz
LnZlcmlmeUNhbGxBbGxvd2VkKHRoaXNWYWx1ZSwgYXJncyk7CisKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gX2ludm9rZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICAgICAgfSwKKwor
ICAgICAgICAgICAgYXRMZWFzdDogZnVuY3Rpb24gYXRMZWFzdChudW0pIHsKKyAgICAgICAgICAg
ICAgICBpZiAodHlwZW9mIG51bSAhPSAibnVtYmVyIikgeworICAgICAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgVHlwZUVycm9yKCInIiArIG51bSArICInIGlzIG5vdCBudW1iZXIiKTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIXRoaXMubGltaXRzU2V0KSB7Cisg
ICAgICAgICAgICAgICAgICAgIHRoaXMubWF4Q2FsbHMgPSBudWxsOworICAgICAgICAgICAgICAg
ICAgICB0aGlzLmxpbWl0c1NldCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgdGhpcy5taW5DYWxscyA9IG51bTsKKworICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgYXRNb3N0OiBmdW5jdGlvbiBhdE1v
c3QobnVtKSB7CisgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBudW0gIT0gIm51bWJlciIpIHsK
KyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiJyIgKyBudW0gKyAiJyBp
cyBub3QgbnVtYmVyIik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYg
KCF0aGlzLmxpbWl0c1NldCkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLm1pbkNhbGxzID0g
bnVsbDsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5saW1pdHNTZXQgPSB0cnVlOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRoaXMubWF4Q2FsbHMgPSBudW07CisKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAg
IG5ldmVyOiBmdW5jdGlvbiBuZXZlcigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5l
eGFjdGx5KDApOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgb25jZTogZnVuY3Rpb24g
b25jZSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5leGFjdGx5KDEpOworICAgICAg
ICAgICAgfSwKKworICAgICAgICAgICAgdHdpY2U6IGZ1bmN0aW9uIHR3aWNlKCkgeworICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLmV4YWN0bHkoMik7CisgICAgICAgICAgICB9LAorCisgICAg
ICAgICAgICB0aHJpY2U6IGZ1bmN0aW9uIHRocmljZSgpIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gdGhpcy5leGFjdGx5KDMpOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgZXhhY3Rs
eTogZnVuY3Rpb24gZXhhY3RseShudW0pIHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG51
bSAhPSAibnVtYmVyIikgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9y
KCInIiArIG51bSArICInIGlzIG5vdCBhIG51bWJlciIpOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIHRoaXMuYXRMZWFzdChudW0pOworICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLmF0TW9zdChudW0pOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgbWV0OiBm
dW5jdGlvbiBtZXQoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmZhaWxlZCAmJiBy
ZWNlaXZlZE1pbkNhbGxzKHRoaXMpOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgdmVy
aWZ5Q2FsbEFsbG93ZWQ6IGZ1bmN0aW9uIHZlcmlmeUNhbGxBbGxvd2VkKHRoaXNWYWx1ZSwgYXJn
cykgeworICAgICAgICAgICAgICAgIGlmIChyZWNlaXZlZE1heENhbGxzKHRoaXMpKSB7CisgICAg
ICAgICAgICAgICAgICAgIHRoaXMuZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
c2lub24uZXhwZWN0YXRpb24uZmFpbCh0aGlzLm1ldGhvZCArICIgYWxyZWFkeSBjYWxsZWQgIiAr
IHRpbWVzKHRoaXMubWF4Q2FsbHMpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBpZiAoImV4cGVjdGVkVGhpcyIgaW4gdGhpcyAmJiB0aGlzLmV4cGVjdGVkVGhpcyAhPT0g
dGhpc1ZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIHNpbm9uLmV4cGVjdGF0aW9uLmZhaWwo
dGhpcy5tZXRob2QgKyAiIGNhbGxlZCB3aXRoICIgKyB0aGlzVmFsdWUgKyAiIGFzIHRoaXNWYWx1
ZSwgZXhwZWN0ZWQgIiArCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdGVkVGhp
cyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCEoImV4cGVjdGVk
QXJndW1lbnRzIiBpbiB0aGlzKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFhcmdzKSB7CisgICAgICAgICAg
ICAgICAgICAgIHNpbm9uLmV4cGVjdGF0aW9uLmZhaWwodGhpcy5tZXRob2QgKyAiIHJlY2VpdmVk
IG5vIGFyZ3VtZW50cywgZXhwZWN0ZWQgIiArCisgICAgICAgICAgICAgICAgICAgICAgICBzaW5v
bi5mb3JtYXQodGhpcy5leHBlY3RlZEFyZ3VtZW50cykpOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIGlmIChhcmdzLmxlbmd0aCA8IHRoaXMuZXhwZWN0ZWRBcmd1bWVudHMu
bGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIHNpbm9uLmV4cGVjdGF0aW9uLmZhaWwodGhp
cy5tZXRob2QgKyAiIHJlY2VpdmVkIHRvbyBmZXcgYXJndW1lbnRzICgiICsgc2lub24uZm9ybWF0
KGFyZ3MpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIpLCBleHBlY3RlZCAiICsgc2lub24u
Zm9ybWF0KHRoaXMuZXhwZWN0ZWRBcmd1bWVudHMpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBpZiAodGhpcy5leHBlY3RzRXhhY3RBcmdDb3VudCAmJgorICAgICAgICAg
ICAgICAgICAgICBhcmdzLmxlbmd0aCAhPSB0aGlzLmV4cGVjdGVkQXJndW1lbnRzLmxlbmd0aCkg
eworICAgICAgICAgICAgICAgICAgICBzaW5vbi5leHBlY3RhdGlvbi5mYWlsKHRoaXMubWV0aG9k
ICsgIiByZWNlaXZlZCB0b28gbWFueSBhcmd1bWVudHMgKCIgKyBzaW5vbi5mb3JtYXQoYXJncykg
KworICAgICAgICAgICAgICAgICAgICAgICAgIiksIGV4cGVjdGVkICIgKyBzaW5vbi5mb3JtYXQo
dGhpcy5leHBlY3RlZEFyZ3VtZW50cykpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gdGhpcy5leHBlY3RlZEFyZ3VtZW50cy5sZW5ndGg7
IGkgPCBsOyBpICs9IDEpIHsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIXZlcmlmeU1hdGNo
ZXIodGhpcy5leHBlY3RlZEFyZ3VtZW50c1tpXSxhcmdzW2ldKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgc2lub24uZXhwZWN0YXRpb24uZmFpbCh0aGlzLm1ldGhvZCArICIgcmVjZWl2ZWQg
d3JvbmcgYXJndW1lbnRzICIgKyBzaW5vbi5mb3JtYXQoYXJncykgKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIsIGRpZG4ndCBtYXRjaCAiICsgdGhpcy5leHBlY3RlZEFyZ3VtZW50cy50
b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAg
IGlmICghc2lub24uZGVlcEVxdWFsKHRoaXMuZXhwZWN0ZWRBcmd1bWVudHNbaV0sIGFyZ3NbaV0p
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaW5vbi5leHBlY3RhdGlvbi5mYWlsKHRoaXMu
bWV0aG9kICsgIiByZWNlaXZlZCB3cm9uZyBhcmd1bWVudHMgIiArIHNpbm9uLmZvcm1hdChhcmdz
KSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgZXhwZWN0ZWQgIiArIHNpbm9uLmZv
cm1hdCh0aGlzLmV4cGVjdGVkQXJndW1lbnRzKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBhbGxvd3NDYWxs
OiBmdW5jdGlvbiBhbGxvd3NDYWxsKHRoaXNWYWx1ZSwgYXJncykgeworICAgICAgICAgICAgICAg
IGlmICh0aGlzLm1ldCgpICYmIHJlY2VpdmVkTWF4Q2FsbHModGhpcykpIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIGlmICgiZXhwZWN0ZWRUaGlzIiBpbiB0aGlzICYmIHRoaXMuZXhwZWN0ZWRUaGlzICE9PSB0
aGlzVmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICghKCJleHBlY3RlZEFyZ3VtZW50cyIgaW4g
dGhpcykpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgYXJncyA9IGFyZ3MgfHwgW107CisKKyAgICAgICAgICAg
ICAgICBpZiAoYXJncy5sZW5ndGggPCB0aGlzLmV4cGVjdGVkQXJndW1lbnRzLmxlbmd0aCkgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgaWYgKHRoaXMuZXhwZWN0c0V4YWN0QXJnQ291bnQgJiYKKyAgICAgICAg
ICAgICAgICAgICAgYXJncy5sZW5ndGggIT0gdGhpcy5leHBlY3RlZEFyZ3VtZW50cy5sZW5ndGgp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gdGhpcy5leHBlY3RlZEFyZ3Vt
ZW50cy5sZW5ndGg7IGkgPCBsOyBpICs9IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF2
ZXJpZnlNYXRjaGVyKHRoaXMuZXhwZWN0ZWRBcmd1bWVudHNbaV0sYXJnc1tpXSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgICAgIGlmICghc2lub24uZGVlcEVxdWFsKHRoaXMuZXhwZWN0ZWRB
cmd1bWVudHNbaV0sIGFyZ3NbaV0pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIHdp
dGhBcmdzOiBmdW5jdGlvbiB3aXRoQXJncygpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVj
dGVkQXJndW1lbnRzID0gc2xpY2UuY2FsbChhcmd1bWVudHMpOworICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgd2l0aEV4YWN0QXJnczog
ZnVuY3Rpb24gd2l0aEV4YWN0QXJncygpIHsKKyAgICAgICAgICAgICAgICB0aGlzLndpdGhBcmdz
LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RzRXhh
Y3RBcmdDb3VudCA9IHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAg
ICAgICB9LAorCisgICAgICAgICAgICBvbjogZnVuY3Rpb24gb24odGhpc1ZhbHVlKSB7CisgICAg
ICAgICAgICAgICAgdGhpcy5leHBlY3RlZFRoaXMgPSB0aGlzVmFsdWU7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICB0b1N0cmluZzog
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHZhciBhcmdzID0gKHRoaXMuZXhwZWN0ZWRB
cmd1bWVudHMgfHwgW10pLnNsaWNlKCk7CisKKyAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZXhw
ZWN0c0V4YWN0QXJnQ291bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaC5jYWxsKGFyZ3Ms
ICJbLi4uXSIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHZhciBjYWxs
U3RyID0gc2lub24uc3B5Q2FsbC50b1N0cmluZy5jYWxsKHsKKyAgICAgICAgICAgICAgICAgICAg
cHJveHk6IHRoaXMubWV0aG9kIHx8ICJhbm9ueW1vdXMgbW9jayBleHBlY3RhdGlvbiIsCisgICAg
ICAgICAgICAgICAgICAgIGFyZ3M6IGFyZ3MKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgICAgIHZhciBtZXNzYWdlID0gY2FsbFN0ci5yZXBsYWNlKCIsIFsuLi4iLCAiWywgLi4u
IikgKyAiICIgKworICAgICAgICAgICAgICAgICAgICBleHBlY3RlZENhbGxDb3VudEluV29yZHMo
dGhpcyk7CisKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5tZXQoKSkgeworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gIkV4cGVjdGF0aW9uIG1ldDogIiArIG1lc3NhZ2U7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgcmV0dXJuICJFeHBlY3RlZCAiICsgbWVzc2FnZSAr
ICIgKCIgKworICAgICAgICAgICAgICAgICAgICBjYWxsQ291bnRJbldvcmRzKHRoaXMuY2FsbENv
dW50KSArICIpIjsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIHZlcmlmeTogZnVuY3Rp
b24gdmVyaWZ5KCkgeworICAgICAgICAgICAgICAgIGlmICghdGhpcy5tZXQoKSkgeworICAgICAg
ICAgICAgICAgICAgICBzaW5vbi5leHBlY3RhdGlvbi5mYWlsKHRoaXMudG9TdHJpbmcoKSk7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2lub24uZXhwZWN0
YXRpb24ucGFzcyh0aGlzLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgcGFz
czogZnVuY3Rpb24obWVzc2FnZSkgeworICAgICAgICAgICAgICBzaW5vbi5hc3NlcnQucGFzcyht
ZXNzYWdlKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBmYWlsOiBmdW5jdGlvbiAobWVz
c2FnZSkgeworICAgICAgICAgICAgICAgIHZhciBleGNlcHRpb24gPSBuZXcgRXJyb3IobWVzc2Fn
ZSk7CisgICAgICAgICAgICAgICAgZXhjZXB0aW9uLm5hbWUgPSAiRXhwZWN0YXRpb25FcnJvciI7
CisKKyAgICAgICAgICAgICAgICB0aHJvdyBleGNlcHRpb247CisgICAgICAgICAgICB9CisgICAg
ICAgIH07CisgICAgfSgpKTsKKworICAgIHNpbm9uLm1vY2sgPSBtb2NrOworCisgICAgaWYgKHR5
cGVvZiBkZWZpbmUgPT09ICJmdW5jdGlvbiIgJiYgZGVmaW5lLmFtZCkgeworICAgICAgICBkZWZp
bmUoWyJtb2R1bGUiXSwgZnVuY3Rpb24obW9kdWxlKSB7IG1vZHVsZS5leHBvcnRzID0gbW9jazsg
fSk7CisgICAgfSBlbHNlIGlmIChjb21tb25KU01vZHVsZSkgeworICAgICAgICBtb2R1bGUuZXhw
b3J0cyA9IG1vY2s7CisgICAgfQorfSh0eXBlb2Ygc2lub24gPT0gIm9iamVjdCIgJiYgc2lub24g
fHwgbnVsbCkpOworCit9LHsiLi4vc2lub24iOjIzLCIuL21hdGNoIjoyOH1dLDMwOltmdW5jdGlv
bihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQGRlcGVuZCAuLi9zaW5vbi5qcwor
ICogQGRlcGVuZCBjb2xsZWN0aW9uLmpzCisgKiBAZGVwZW5kIHV0aWwvZmFrZV90aW1lcnMuanMK
KyAqIEBkZXBlbmQgdXRpbC9mYWtlX3NlcnZlcl93aXRoX2Nsb2NrLmpzCisgKi8KKy8qanNsaW50
IGVxZXFlcTogZmFsc2UsIG9uZXZhcjogZmFsc2UsIHBsdXNwbHVzOiBmYWxzZSovCisvKmdsb2Jh
bCByZXF1aXJlLCBtb2R1bGUqLworLyoqCisgKiBNYW5hZ2VzIGZha2UgY29sbGVjdGlvbnMgYXMg
d2VsbCBhcyBmYWtlIHV0aWxpdGllcyBzdWNoIGFzIFNpbm9uJ3MKKyAqIHRpbWVycyBhbmQgZmFr
ZSBYSFIgaW1wbGVtZW50YXRpb24gaW4gb25lIGNvbnZlbmllbnQgb2JqZWN0LgorICoKKyAqIEBh
dXRob3IgQ2hyaXN0aWFuIEpvaGFuc2VuIChjaHJpc3RpYW5AY2pvaGFuc2VuLm5vKQorICogQGxp
Y2Vuc2UgQlNECisgKgorICogQ29weXJpZ2h0IChjKSAyMDEwLTIwMTMgQ2hyaXN0aWFuIEpvaGFu
c2VuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworaWYgKHR5cGVvZiBtb2R1bGUgIT09ICJ1bmRlZmlu
ZWQiICYmIG1vZHVsZS5leHBvcnRzICYmIHR5cGVvZiByZXF1aXJlID09ICJmdW5jdGlvbiIpIHsK
KyAgICB2YXIgc2lub24gPSByZXF1aXJlKCIuLi9zaW5vbiIpOworICAgIHNpbm9uLmV4dGVuZChz
aW5vbiwgcmVxdWlyZSgiLi91dGlsL2Zha2VfdGltZXJzIikpOworfQorCisoZnVuY3Rpb24gKCkg
eworICAgIHZhciBwdXNoID0gW10ucHVzaDsKKworICAgIGZ1bmN0aW9uIGV4cG9zZVZhbHVlKHNh
bmRib3gsIGNvbmZpZywga2V5LCB2YWx1ZSkgeworICAgICAgICBpZiAoIXZhbHVlKSB7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29uZmlnLmluamVjdElu
dG8gJiYgIShrZXkgaW4gY29uZmlnLmluamVjdEludG8pKSB7CisgICAgICAgICAgICBjb25maWcu
aW5qZWN0SW50b1trZXldID0gdmFsdWU7CisgICAgICAgICAgICBzYW5kYm94LmluamVjdGVkS2V5
cy5wdXNoKGtleSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwdXNoLmNhbGwoc2Fu
ZGJveC5hcmdzLCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBwcmVw
YXJlU2FuZGJveEZyb21Db25maWcoY29uZmlnKSB7CisgICAgICAgIHZhciBzYW5kYm94ID0gc2lu
b24uY3JlYXRlKHNpbm9uLnNhbmRib3gpOworCisgICAgICAgIGlmIChjb25maWcudXNlRmFrZVNl
cnZlcikgeworICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25maWcudXNlRmFrZVNlcnZlciA9PSAi
b2JqZWN0IikgeworICAgICAgICAgICAgICAgIHNhbmRib3guc2VydmVyUHJvdG90eXBlID0gY29u
ZmlnLnVzZUZha2VTZXJ2ZXI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNhbmRib3gu
dXNlRmFrZVNlcnZlcigpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbmZpZy51c2VGYWtl
VGltZXJzKSB7CisgICAgICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy51c2VGYWtlVGltZXJzID09
ICJvYmplY3QiKSB7CisgICAgICAgICAgICAgICAgc2FuZGJveC51c2VGYWtlVGltZXJzLmFwcGx5
KHNhbmRib3gsIGNvbmZpZy51c2VGYWtlVGltZXJzKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgc2FuZGJveC51c2VGYWtlVGltZXJzKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gc2FuZGJveDsKKyAgICB9CisKKyAgICBzaW5vbi5z
YW5kYm94ID0gc2lub24uZXh0ZW5kKHNpbm9uLmNyZWF0ZShzaW5vbi5jb2xsZWN0aW9uKSwgewor
ICAgICAgICB1c2VGYWtlVGltZXJzOiBmdW5jdGlvbiB1c2VGYWtlVGltZXJzKCkgeworICAgICAg
ICAgICAgdGhpcy5jbG9jayA9IHNpbm9uLnVzZUZha2VUaW1lcnMuYXBwbHkoc2lub24sIGFyZ3Vt
ZW50cyk7CisKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZCh0aGlzLmNsb2NrKTsKKyAgICAg
ICAgfSwKKworICAgICAgICBzZXJ2ZXJQcm90b3R5cGU6IHNpbm9uLmZha2VTZXJ2ZXIsCisKKyAg
ICAgICAgdXNlRmFrZVNlcnZlcjogZnVuY3Rpb24gdXNlRmFrZVNlcnZlcigpIHsKKyAgICAgICAg
ICAgIHZhciBwcm90byA9IHRoaXMuc2VydmVyUHJvdG90eXBlIHx8IHNpbm9uLmZha2VTZXJ2ZXI7
CisKKyAgICAgICAgICAgIGlmICghcHJvdG8gfHwgIXByb3RvLmNyZWF0ZSkgeworICAgICAgICAg
ICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlzLnNl
cnZlciA9IHByb3RvLmNyZWF0ZSgpOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkKHRoaXMu
c2VydmVyKTsKKyAgICAgICAgfSwKKworICAgICAgICBpbmplY3Q6IGZ1bmN0aW9uIChvYmopIHsK
KyAgICAgICAgICAgIHNpbm9uLmNvbGxlY3Rpb24uaW5qZWN0LmNhbGwodGhpcywgb2JqKTsKKwor
ICAgICAgICAgICAgaWYgKHRoaXMuY2xvY2spIHsKKyAgICAgICAgICAgICAgICBvYmouY2xvY2sg
PSB0aGlzLmNsb2NrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGhpcy5zZXJ2
ZXIpIHsKKyAgICAgICAgICAgICAgICBvYmouc2VydmVyID0gdGhpcy5zZXJ2ZXI7CisgICAgICAg
ICAgICAgICAgb2JqLnJlcXVlc3RzID0gdGhpcy5zZXJ2ZXIucmVxdWVzdHM7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBvYmo7CisgICAgICAgIH0sCisKKyAgICAgICAgcmVz
dG9yZTogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgc2lub24uY29sbGVjdGlvbi5yZXN0b3Jl
LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICB0aGlzLnJlc3RvcmVDb250ZXh0
KCk7CisgICAgICAgIH0sCisKKyAgICAgICAgcmVzdG9yZUNvbnRleHQ6IGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgIGlmICh0aGlzLmluamVjdGVkS2V5cykgeworICAgICAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwLCBqID0gdGhpcy5pbmplY3RlZEtleXMubGVuZ3RoOyBpIDwgajsgaSsrKSB7
CisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmluamVjdEludG9bdGhpcy5pbmplY3Rl
ZEtleXNbaV1dOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0aGlzLmluamVj
dGVkS2V5cyA9IFtdOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIGNyZWF0
ZTogZnVuY3Rpb24gKGNvbmZpZykgeworICAgICAgICAgICAgaWYgKCFjb25maWcpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc2lub24uY3JlYXRlKHNpbm9uLnNhbmRib3gpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgc2FuZGJveCA9IHByZXBhcmVTYW5kYm94RnJvbUNvbmZp
Zyhjb25maWcpOworICAgICAgICAgICAgc2FuZGJveC5hcmdzID0gc2FuZGJveC5hcmdzIHx8IFtd
OworICAgICAgICAgICAgc2FuZGJveC5pbmplY3RlZEtleXMgPSBbXTsKKyAgICAgICAgICAgIHNh
bmRib3guaW5qZWN0SW50byA9IGNvbmZpZy5pbmplY3RJbnRvOworICAgICAgICAgICAgdmFyIHBy
b3AsIHZhbHVlLCBleHBvc2VkID0gc2FuZGJveC5pbmplY3Qoe30pOworCisgICAgICAgICAgICBp
ZiAoY29uZmlnLnByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwg
bCA9IGNvbmZpZy5wcm9wZXJ0aWVzLmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAgICAgICAg
ICAgICAgICBwcm9wID0gY29uZmlnLnByb3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAgICAg
IHZhbHVlID0gZXhwb3NlZFtwcm9wXSB8fCBwcm9wID09ICJzYW5kYm94IiAmJiBzYW5kYm94Owor
ICAgICAgICAgICAgICAgICAgICBleHBvc2VWYWx1ZShzYW5kYm94LCBjb25maWcsIHByb3AsIHZh
bHVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGV4cG9zZVZhbHVlKHNhbmRib3gsIGNvbmZpZywgInNhbmRib3giLCB2YWx1ZSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBzYW5kYm94OworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBzaW5vbi5zYW5kYm94LnVzZUZha2VYTUxIdHRwUmVxdWVzdCA9IHNpbm9u
LnNhbmRib3gudXNlRmFrZVNlcnZlcjsKKworICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAiZnVu
Y3Rpb24iICYmIGRlZmluZS5hbWQpIHsKKyAgICAgICAgZGVmaW5lKFsibW9kdWxlIl0sIGZ1bmN0
aW9uKG1vZHVsZSkgeyBtb2R1bGUuZXhwb3J0cyA9IHNpbm9uLnNhbmRib3g7IH0pOworICAgIH0g
ZWxzZSBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMp
IHsKKyAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBzaW5vbi5zYW5kYm94OworICAgIH0KK30oKSk7
CisKK30seyIuLi9zaW5vbiI6MjMsIi4vdXRpbC9mYWtlX3RpbWVycyI6MzV9XSwzMTpbZnVuY3Rp
b24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAgKiBAZGVwZW5kIC4uL3Npbm9uLmpz
CisgICogQGRlcGVuZCBjYWxsLmpzCisgICovCisvKmpzbGludCBlcWVxZXE6IGZhbHNlLCBvbmV2
YXI6IGZhbHNlLCBwbHVzcGx1czogZmFsc2UqLworLypnbG9iYWwgbW9kdWxlLCByZXF1aXJlLCBz
aW5vbiovCisvKioKKyAgKiBTcHkgZnVuY3Rpb25zCisgICoKKyAgKiBAYXV0aG9yIENocmlzdGlh
biBKb2hhbnNlbiAoY2hyaXN0aWFuQGNqb2hhbnNlbi5ubykKKyAgKiBAbGljZW5zZSBCU0QKKyAg
KgorICAqIENvcHlyaWdodCAoYykgMjAxMC0yMDEzIENocmlzdGlhbiBKb2hhbnNlbgorICAqLwor
InVzZSBzdHJpY3QiOworCisoZnVuY3Rpb24gKHNpbm9uKSB7CisgICAgdmFyIGNvbW1vbkpTTW9k
dWxlID0gdHlwZW9mIG1vZHVsZSAhPT0gInVuZGVmaW5lZCIgJiYgbW9kdWxlLmV4cG9ydHMgJiYg
dHlwZW9mIHJlcXVpcmUgPT0gImZ1bmN0aW9uIjsKKyAgICB2YXIgcHVzaCA9IEFycmF5LnByb3Rv
dHlwZS5wdXNoOworICAgIHZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTsKKyAgICB2
YXIgY2FsbElkID0gMDsKKworICAgIGlmICghc2lub24gJiYgY29tbW9uSlNNb2R1bGUpIHsKKyAg
ICAgICAgc2lub24gPSByZXF1aXJlKCIuLi9zaW5vbiIpOworICAgIH0KKworICAgIGlmICghc2lu
b24pIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNweShvYmplY3Qs
IHByb3BlcnR5KSB7CisgICAgICAgIGlmICghcHJvcGVydHkgJiYgdHlwZW9mIG9iamVjdCA9PSAi
ZnVuY3Rpb24iKSB7CisgICAgICAgICAgICByZXR1cm4gc3B5LmNyZWF0ZShvYmplY3QpOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCFvYmplY3QgJiYgIXByb3BlcnR5KSB7CisgICAgICAgICAg
ICByZXR1cm4gc3B5LmNyZWF0ZShmdW5jdGlvbiAoKSB7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgdmFyIG1ldGhvZCA9IG9iamVjdFtwcm9wZXJ0eV07CisgICAgICAgIHJldHVybiBzaW5vbi53
cmFwTWV0aG9kKG9iamVjdCwgcHJvcGVydHksIHNweS5jcmVhdGUobWV0aG9kKSk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gbWF0Y2hpbmdGYWtlKGZha2VzLCBhcmdzLCBzdHJpY3QpIHsKKyAgICAg
ICAgaWYgKCFmYWtlcykgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDAsIGwgPSBmYWtlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICAg
ICAgICAgIGlmIChmYWtlc1tpXS5tYXRjaGVzKGFyZ3MsIHN0cmljdCkpIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFrZXNbaV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBmdW5jdGlvbiBpbmNyZW1lbnRDYWxsQ291bnQoKSB7CisgICAgICAgIHRoaXMuY2FsbGVk
ID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5jYWxsQ291bnQgKz0gMTsKKyAgICAgICAgdGhpcy5ub3RD
YWxsZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5jYWxsZWRPbmNlID0gdGhpcy5jYWxsQ291bnQg
PT0gMTsKKyAgICAgICAgdGhpcy5jYWxsZWRUd2ljZSA9IHRoaXMuY2FsbENvdW50ID09IDI7Cisg
ICAgICAgIHRoaXMuY2FsbGVkVGhyaWNlID0gdGhpcy5jYWxsQ291bnQgPT0gMzsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBjcmVhdGVDYWxsUHJvcGVydGllcygpIHsKKyAgICAgICAgdGhpcy5maXJz
dENhbGwgPSB0aGlzLmdldENhbGwoMCk7CisgICAgICAgIHRoaXMuc2Vjb25kQ2FsbCA9IHRoaXMu
Z2V0Q2FsbCgxKTsKKyAgICAgICAgdGhpcy50aGlyZENhbGwgPSB0aGlzLmdldENhbGwoMik7Cisg
ICAgICAgIHRoaXMubGFzdENhbGwgPSB0aGlzLmdldENhbGwodGhpcy5jYWxsQ291bnQgLSAxKTsK
KyAgICB9CisKKyAgICB2YXIgdmFycyA9ICJhLGIsYyxkLGUsZixnLGgsaSxqLGssbCI7CisgICAg
ZnVuY3Rpb24gY3JlYXRlUHJveHkoZnVuYykgeworICAgICAgICAvLyBSZXRhaW4gdGhlIGZ1bmN0
aW9uIGxlbmd0aDoKKyAgICAgICAgdmFyIHA7CisgICAgICAgIGlmIChmdW5jLmxlbmd0aCkgewor
ICAgICAgICAgICAgZXZhbCgicCA9IChmdW5jdGlvbiBwcm94eSgiICsgdmFycy5zdWJzdHJpbmco
MCwgZnVuYy5sZW5ndGggKiAyIC0gMSkgKworICAgICAgICAgICAgICAgICIpIHsgcmV0dXJuIHAu
aW52b2tlKGZ1bmMsIHRoaXMsIHNsaWNlLmNhbGwoYXJndW1lbnRzKSk7IH0pOyIpOworICAgICAg
ICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcCA9IGZ1bmN0aW9uIHByb3h5KCkgewor
ICAgICAgICAgICAgICAgIHJldHVybiBwLmludm9rZShmdW5jLCB0aGlzLCBzbGljZS5jYWxsKGFy
Z3VtZW50cykpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcDsK
KyAgICB9CisKKyAgICB2YXIgdXVpZCA9IDA7CisKKyAgICAvLyBQdWJsaWMgQVBJCisgICAgdmFy
IHNweUFwaSA9IHsKKyAgICAgICAgcmVzZXQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRo
aXMuY2FsbGVkID0gZmFsc2U7CisgICAgICAgICAgICB0aGlzLm5vdENhbGxlZCA9IHRydWU7Cisg
ICAgICAgICAgICB0aGlzLmNhbGxlZE9uY2UgPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMuY2Fs
bGVkVHdpY2UgPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMuY2FsbGVkVGhyaWNlID0gZmFsc2U7
CisgICAgICAgICAgICB0aGlzLmNhbGxDb3VudCA9IDA7CisgICAgICAgICAgICB0aGlzLmZpcnN0
Q2FsbCA9IG51bGw7CisgICAgICAgICAgICB0aGlzLnNlY29uZENhbGwgPSBudWxsOworICAgICAg
ICAgICAgdGhpcy50aGlyZENhbGwgPSBudWxsOworICAgICAgICAgICAgdGhpcy5sYXN0Q2FsbCA9
IG51bGw7CisgICAgICAgICAgICB0aGlzLmFyZ3MgPSBbXTsKKyAgICAgICAgICAgIHRoaXMucmV0
dXJuVmFsdWVzID0gW107CisgICAgICAgICAgICB0aGlzLnRoaXNWYWx1ZXMgPSBbXTsKKyAgICAg
ICAgICAgIHRoaXMuZXhjZXB0aW9ucyA9IFtdOworICAgICAgICAgICAgdGhpcy5jYWxsSWRzID0g
W107CisgICAgICAgICAgICBpZiAodGhpcy5mYWtlcykgeworICAgICAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGhpcy5mYWtlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAg
ICAgICB0aGlzLmZha2VzW2ldLnJlc2V0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9LAorCisgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24gY3JlYXRlKGZ1bmMp
IHsKKyAgICAgICAgICAgIHZhciBuYW1lOworCisgICAgICAgICAgICBpZiAodHlwZW9mIGZ1bmMg
IT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAgICAgIGZ1bmMgPSBmdW5jdGlvbiAoKSB7IH07
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG5hbWUgPSBzaW5vbi5mdW5j
dGlvbk5hbWUoZnVuYyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBwcm94eSA9
IGNyZWF0ZVByb3h5KGZ1bmMpOworCisgICAgICAgICAgICBzaW5vbi5leHRlbmQocHJveHksIHNw
eSk7CisgICAgICAgICAgICBkZWxldGUgcHJveHkuY3JlYXRlOworICAgICAgICAgICAgc2lub24u
ZXh0ZW5kKHByb3h5LCBmdW5jKTsKKworICAgICAgICAgICAgcHJveHkucmVzZXQoKTsKKyAgICAg
ICAgICAgIHByb3h5LnByb3RvdHlwZSA9IGZ1bmMucHJvdG90eXBlOworICAgICAgICAgICAgcHJv
eHkuZGlzcGxheU5hbWUgPSBuYW1lIHx8ICJzcHkiOworICAgICAgICAgICAgcHJveHkudG9TdHJp
bmcgPSBzaW5vbi5mdW5jdGlvblRvU3RyaW5nOworICAgICAgICAgICAgcHJveHkuX2NyZWF0ZSA9
IHNpbm9uLnNweS5jcmVhdGU7CisgICAgICAgICAgICBwcm94eS5pZCA9ICJzcHkjIiArIHV1aWQr
KzsKKworICAgICAgICAgICAgcmV0dXJuIHByb3h5OworICAgICAgICB9LAorCisgICAgICAgIGlu
dm9rZTogZnVuY3Rpb24gaW52b2tlKGZ1bmMsIHRoaXNWYWx1ZSwgYXJncykgeworICAgICAgICAg
ICAgdmFyIG1hdGNoaW5nID0gbWF0Y2hpbmdGYWtlKHRoaXMuZmFrZXMsIGFyZ3MpOworICAgICAg
ICAgICAgdmFyIGV4Y2VwdGlvbiwgcmV0dXJuVmFsdWU7CisKKyAgICAgICAgICAgIGluY3JlbWVu
dENhbGxDb3VudC5jYWxsKHRoaXMpOworICAgICAgICAgICAgcHVzaC5jYWxsKHRoaXMudGhpc1Zh
bHVlcywgdGhpc1ZhbHVlKTsKKyAgICAgICAgICAgIHB1c2guY2FsbCh0aGlzLmFyZ3MsIGFyZ3Mp
OworICAgICAgICAgICAgcHVzaC5jYWxsKHRoaXMuY2FsbElkcywgY2FsbElkKyspOworCisgICAg
ICAgICAgICAvLyBNYWtlIGNhbGwgcHJvcGVydGllcyBhdmFpbGFibGUgZnJvbSB3aXRoaW4gdGhl
IHNwaWVkIGZ1bmN0aW9uOgorICAgICAgICAgICAgY3JlYXRlQ2FsbFByb3BlcnRpZXMuY2FsbCh0
aGlzKTsKKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpZiAobWF0Y2hpbmcp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBtYXRjaGluZy5pbnZva2UoZnVu
YywgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICByZXR1cm5WYWx1ZSA9ICh0aGlzLmZ1bmMgfHwgZnVuYykuYXBwbHkodGhpc1Zh
bHVlLCBhcmdzKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB2YXIgdGhp
c0NhbGwgPSB0aGlzLmdldENhbGwodGhpcy5jYWxsQ291bnQgLSAxKTsKKyAgICAgICAgICAgICAg
ICBpZiAodGhpc0NhbGwuY2FsbGVkV2l0aE5ldygpICYmIHR5cGVvZiByZXR1cm5WYWx1ZSAhPT0g
J29iamVjdCcpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB0aGlzVmFsdWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbiA9IGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1c2gu
Y2FsbCh0aGlzLmV4Y2VwdGlvbnMsIGV4Y2VwdGlvbik7CisgICAgICAgICAgICBwdXNoLmNhbGwo
dGhpcy5yZXR1cm5WYWx1ZXMsIHJldHVyblZhbHVlKTsKKworICAgICAgICAgICAgLy8gTWFrZSBy
ZXR1cm4gdmFsdWUgYW5kIGV4Y2VwdGlvbiBhdmFpbGFibGUgaW4gdGhlIGNhbGxzOgorICAgICAg
ICAgICAgY3JlYXRlQ2FsbFByb3BlcnRpZXMuY2FsbCh0aGlzKTsKKworICAgICAgICAgICAgaWYg
KGV4Y2VwdGlvbiAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgZXhjZXB0
aW9uOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cisg
ICAgICAgIH0sCisKKyAgICAgICAgbmFtZWQ6IGZ1bmN0aW9uIG5hbWVkKG5hbWUpIHsKKyAgICAg
ICAgICAgIHRoaXMuZGlzcGxheU5hbWUgPSBuYW1lOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7
CisgICAgICAgIH0sCisKKyAgICAgICAgZ2V0Q2FsbDogZnVuY3Rpb24gZ2V0Q2FsbChpKSB7Cisg
ICAgICAgICAgICBpZiAoaSA8IDAgfHwgaSA+PSB0aGlzLmNhbGxDb3VudCkgeworICAgICAgICAg
ICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
c2lub24uc3B5Q2FsbCh0aGlzLCB0aGlzLnRoaXNWYWx1ZXNbaV0sIHRoaXMuYXJnc1tpXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmV0dXJuVmFsdWVzW2ldLCB0
aGlzLmV4Y2VwdGlvbnNbaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLmNhbGxJZHNbaV0pOworICAgICAgICB9LAorCisgICAgICAgIGdldENhbGxzOiBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICB2YXIgY2FsbHMgPSBbXTsKKyAgICAgICAgICAgIHZhciBpOwor
CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5jYWxsQ291bnQ7IGkrKykgeworICAg
ICAgICAgICAgICAgIGNhbGxzLnB1c2godGhpcy5nZXRDYWxsKGkpKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIGNhbGxzOworICAgICAgICB9LAorCisgICAgICAgIGNhbGxl
ZEJlZm9yZTogZnVuY3Rpb24gY2FsbGVkQmVmb3JlKHNweUZuKSB7CisgICAgICAgICAgICBpZiAo
IXRoaXMuY2FsbGVkKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoIXNweUZuLmNhbGxlZCkgeworICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gdGhpcy5j
YWxsSWRzWzBdIDwgc3B5Rm4uY2FsbElkc1tzcHlGbi5jYWxsSWRzLmxlbmd0aCAtIDFdOworICAg
ICAgICB9LAorCisgICAgICAgIGNhbGxlZEFmdGVyOiBmdW5jdGlvbiBjYWxsZWRBZnRlcihzcHlG
bikgeworICAgICAgICAgICAgaWYgKCF0aGlzLmNhbGxlZCB8fCAhc3B5Rm4uY2FsbGVkKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gdGhpcy5jYWxsSWRzW3RoaXMuY2FsbENvdW50IC0gMV0gPiBzcHlGbi5jYWxsSWRz
W3NweUZuLmNhbGxDb3VudCAtIDFdOworICAgICAgICB9LAorCisgICAgICAgIHdpdGhBcmdzOiBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRz
KTsKKworICAgICAgICAgICAgaWYgKHRoaXMuZmFrZXMpIHsKKyAgICAgICAgICAgICAgICB2YXIg
bWF0Y2ggPSBtYXRjaGluZ0Zha2UodGhpcy5mYWtlcywgYXJncywgdHJ1ZSk7CisKKyAgICAgICAg
ICAgICAgICBpZiAobWF0Y2gpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
dGhpcy5mYWtlcyA9IFtdOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgb3JpZ2lu
YWwgPSB0aGlzOworICAgICAgICAgICAgdmFyIGZha2UgPSB0aGlzLl9jcmVhdGUoKTsKKyAgICAg
ICAgICAgIGZha2UubWF0Y2hpbmdBZ3VtZW50cyA9IGFyZ3M7CisgICAgICAgICAgICBmYWtlLnBh
cmVudCA9IHRoaXM7CisgICAgICAgICAgICBwdXNoLmNhbGwodGhpcy5mYWtlcywgZmFrZSk7CisK
KyAgICAgICAgICAgIGZha2Uud2l0aEFyZ3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG9yaWdpbmFsLndpdGhBcmdzLmFwcGx5KG9yaWdpbmFsLCBhcmd1bWVudHMpOwor
ICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmFy
Z3MubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoZmFrZS5tYXRjaGVzKHRoaXMu
YXJnc1tpXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50Q2FsbENvdW50LmNhbGwo
ZmFrZSk7CisgICAgICAgICAgICAgICAgICAgIHB1c2guY2FsbChmYWtlLnRoaXNWYWx1ZXMsIHRo
aXMudGhpc1ZhbHVlc1tpXSk7CisgICAgICAgICAgICAgICAgICAgIHB1c2guY2FsbChmYWtlLmFy
Z3MsIHRoaXMuYXJnc1tpXSk7CisgICAgICAgICAgICAgICAgICAgIHB1c2guY2FsbChmYWtlLnJl
dHVyblZhbHVlcywgdGhpcy5yZXR1cm5WYWx1ZXNbaV0pOworICAgICAgICAgICAgICAgICAgICBw
dXNoLmNhbGwoZmFrZS5leGNlcHRpb25zLCB0aGlzLmV4Y2VwdGlvbnNbaV0pOworICAgICAgICAg
ICAgICAgICAgICBwdXNoLmNhbGwoZmFrZS5jYWxsSWRzLCB0aGlzLmNhbGxJZHNbaV0pOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNyZWF0ZUNhbGxQcm9w
ZXJ0aWVzLmNhbGwoZmFrZSk7CisKKyAgICAgICAgICAgIHJldHVybiBmYWtlOworICAgICAgICB9
LAorCisgICAgICAgIG1hdGNoZXM6IGZ1bmN0aW9uIChhcmdzLCBzdHJpY3QpIHsKKyAgICAgICAg
ICAgIHZhciBtYXJncyA9IHRoaXMubWF0Y2hpbmdBZ3VtZW50czsKKworICAgICAgICAgICAgaWYg
KG1hcmdzLmxlbmd0aCA8PSBhcmdzLmxlbmd0aCAmJgorICAgICAgICAgICAgICAgIHNpbm9uLmRl
ZXBFcXVhbChtYXJncywgYXJncy5zbGljZSgwLCBtYXJncy5sZW5ndGgpKSkgeworICAgICAgICAg
ICAgICAgIHJldHVybiAhc3RyaWN0IHx8IG1hcmdzLmxlbmd0aCA9PSBhcmdzLmxlbmd0aDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBwcmludGY6IGZ1bmN0aW9uIChmb3Jt
YXQpIHsKKyAgICAgICAgICAgIHZhciBzcHkgPSB0aGlzOworICAgICAgICAgICAgdmFyIGFyZ3Mg
PSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7CisgICAgICAgICAgICB2YXIgZm9ybWF0dGVyOwor
CisgICAgICAgICAgICByZXR1cm4gKGZvcm1hdCB8fCAiIikucmVwbGFjZSgvJSguKS9nLCBmdW5j
dGlvbiAobWF0Y2gsIHNwZWNpZnllcikgeworICAgICAgICAgICAgICAgIGZvcm1hdHRlciA9IHNw
eUFwaS5mb3JtYXR0ZXJzW3NwZWNpZnllcl07CisKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9m
IGZvcm1hdHRlciA9PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
b3JtYXR0ZXIuY2FsbChudWxsLCBzcHksIGFyZ3MpOworICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoIWlzTmFOKHBhcnNlSW50KHNwZWNpZnllciwgMTApKSkgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gc2lub24uZm9ybWF0KGFyZ3Nbc3BlY2lmeWVyIC0gMV0pOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiAiJSIgKyBzcGVjaWZ5ZXI7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBmdW5jdGlvbiBkZWxlZ2F0ZVRvQ2Fs
bHMobWV0aG9kLCBtYXRjaEFueSwgYWN0dWFsLCBub3RDYWxsZWQpIHsKKyAgICAgICAgc3B5QXBp
W21ldGhvZF0gPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMuY2FsbGVkKSB7
CisgICAgICAgICAgICAgICAgaWYgKG5vdENhbGxlZCkgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbm90Q2FsbGVkLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIGN1cnJlbnRDYWxsOworICAgICAgICAgICAgdmFyIG1hdGNoZXMgPSAwOworCisg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IHRoaXMuY2FsbENvdW50OyBpIDwgbDsgaSAr
PSAxKSB7CisgICAgICAgICAgICAgICAgY3VycmVudENhbGwgPSB0aGlzLmdldENhbGwoaSk7CisK
KyAgICAgICAgICAgICAgICBpZiAoY3VycmVudENhbGxbYWN0dWFsIHx8IG1ldGhvZF0uYXBwbHko
Y3VycmVudENhbGwsIGFyZ3VtZW50cykpIHsKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcyAr
PSAxOworCisgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaEFueSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBtYXRjaGVzID09
PSB0aGlzLmNhbGxDb3VudDsKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBkZWxlZ2F0ZVRvQ2Fs
bHMoImNhbGxlZE9uIiwgdHJ1ZSk7CisgICAgZGVsZWdhdGVUb0NhbGxzKCJhbHdheXNDYWxsZWRP
biIsIGZhbHNlLCAiY2FsbGVkT24iKTsKKyAgICBkZWxlZ2F0ZVRvQ2FsbHMoImNhbGxlZFdpdGgi
LCB0cnVlKTsKKyAgICBkZWxlZ2F0ZVRvQ2FsbHMoImNhbGxlZFdpdGhNYXRjaCIsIHRydWUpOwor
ICAgIGRlbGVnYXRlVG9DYWxscygiYWx3YXlzQ2FsbGVkV2l0aCIsIGZhbHNlLCAiY2FsbGVkV2l0
aCIpOworICAgIGRlbGVnYXRlVG9DYWxscygiYWx3YXlzQ2FsbGVkV2l0aE1hdGNoIiwgZmFsc2Us
ICJjYWxsZWRXaXRoTWF0Y2giKTsKKyAgICBkZWxlZ2F0ZVRvQ2FsbHMoImNhbGxlZFdpdGhFeGFj
dGx5IiwgdHJ1ZSk7CisgICAgZGVsZWdhdGVUb0NhbGxzKCJhbHdheXNDYWxsZWRXaXRoRXhhY3Rs
eSIsIGZhbHNlLCAiY2FsbGVkV2l0aEV4YWN0bHkiKTsKKyAgICBkZWxlZ2F0ZVRvQ2FsbHMoIm5l
dmVyQ2FsbGVkV2l0aCIsIGZhbHNlLCAibm90Q2FsbGVkV2l0aCIsCisgICAgICAgIGZ1bmN0aW9u
ICgpIHsgcmV0dXJuIHRydWU7IH0pOworICAgIGRlbGVnYXRlVG9DYWxscygibmV2ZXJDYWxsZWRX
aXRoTWF0Y2giLCBmYWxzZSwgIm5vdENhbGxlZFdpdGhNYXRjaCIsCisgICAgICAgIGZ1bmN0aW9u
ICgpIHsgcmV0dXJuIHRydWU7IH0pOworICAgIGRlbGVnYXRlVG9DYWxscygidGhyZXciLCB0cnVl
KTsKKyAgICBkZWxlZ2F0ZVRvQ2FsbHMoImFsd2F5c1RocmV3IiwgZmFsc2UsICJ0aHJldyIpOwor
ICAgIGRlbGVnYXRlVG9DYWxscygicmV0dXJuZWQiLCB0cnVlKTsKKyAgICBkZWxlZ2F0ZVRvQ2Fs
bHMoImFsd2F5c1JldHVybmVkIiwgZmFsc2UsICJyZXR1cm5lZCIpOworICAgIGRlbGVnYXRlVG9D
YWxscygiY2FsbGVkV2l0aE5ldyIsIHRydWUpOworICAgIGRlbGVnYXRlVG9DYWxscygiYWx3YXlz
Q2FsbGVkV2l0aE5ldyIsIGZhbHNlLCAiY2FsbGVkV2l0aE5ldyIpOworICAgIGRlbGVnYXRlVG9D
YWxscygiY2FsbEFyZyIsIGZhbHNlLCAiY2FsbEFyZ1dpdGgiLCBmdW5jdGlvbiAoKSB7CisgICAg
ICAgIHRocm93IG5ldyBFcnJvcih0aGlzLnRvU3RyaW5nKCkgKyAiIGNhbm5vdCBjYWxsIGFyZyBz
aW5jZSBpdCB3YXMgbm90IHlldCBpbnZva2VkLiIpOworICAgIH0pOworICAgIHNweUFwaS5jYWxs
QXJnV2l0aCA9IHNweUFwaS5jYWxsQXJnOworICAgIGRlbGVnYXRlVG9DYWxscygiY2FsbEFyZ09u
IiwgZmFsc2UsICJjYWxsQXJnT25XaXRoIiwgZnVuY3Rpb24gKCkgeworICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IodGhpcy50b1N0cmluZygpICsgIiBjYW5ub3QgY2FsbCBhcmcgc2luY2UgaXQgd2Fz
IG5vdCB5ZXQgaW52b2tlZC4iKTsKKyAgICB9KTsKKyAgICBzcHlBcGkuY2FsbEFyZ09uV2l0aCA9
IHNweUFwaS5jYWxsQXJnT247CisgICAgZGVsZWdhdGVUb0NhbGxzKCJ5aWVsZCIsIGZhbHNlLCAi
eWllbGQiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLnRvU3Ry
aW5nKCkgKyAiIGNhbm5vdCB5aWVsZCBzaW5jZSBpdCB3YXMgbm90IHlldCBpbnZva2VkLiIpOwor
ICAgIH0pOworICAgIC8vICJpbnZva2VDYWxsYmFjayIgaXMgYW4gYWxpYXMgZm9yICJ5aWVsZCIg
c2luY2UgInlpZWxkIiBpcyBpbnZhbGlkIGluIHN0cmljdCBtb2RlLgorICAgIHNweUFwaS5pbnZv
a2VDYWxsYmFjayA9IHNweUFwaS55aWVsZDsKKyAgICBkZWxlZ2F0ZVRvQ2FsbHMoInlpZWxkT24i
LCBmYWxzZSwgInlpZWxkT24iLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJv
cih0aGlzLnRvU3RyaW5nKCkgKyAiIGNhbm5vdCB5aWVsZCBzaW5jZSBpdCB3YXMgbm90IHlldCBp
bnZva2VkLiIpOworICAgIH0pOworICAgIGRlbGVnYXRlVG9DYWxscygieWllbGRUbyIsIGZhbHNl
LCAieWllbGRUbyIsIGZ1bmN0aW9uIChwcm9wZXJ0eSkgeworICAgICAgICB0aHJvdyBuZXcgRXJy
b3IodGhpcy50b1N0cmluZygpICsgIiBjYW5ub3QgeWllbGQgdG8gJyIgKyBwcm9wZXJ0eSArCisg
ICAgICAgICAgICAiJyBzaW5jZSBpdCB3YXMgbm90IHlldCBpbnZva2VkLiIpOworICAgIH0pOwor
ICAgIGRlbGVnYXRlVG9DYWxscygieWllbGRUb09uIiwgZmFsc2UsICJ5aWVsZFRvT24iLCBmdW5j
dGlvbiAocHJvcGVydHkpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMudG9TdHJpbmco
KSArICIgY2Fubm90IHlpZWxkIHRvICciICsgcHJvcGVydHkgKworICAgICAgICAgICAgIicgc2lu
Y2UgaXQgd2FzIG5vdCB5ZXQgaW52b2tlZC4iKTsKKyAgICB9KTsKKworICAgIHNweUFwaS5mb3Jt
YXR0ZXJzID0geworICAgICAgICAiYyI6IGZ1bmN0aW9uIChzcHkpIHsKKyAgICAgICAgICAgIHJl
dHVybiBzaW5vbi50aW1lc0luV29yZHMoc3B5LmNhbGxDb3VudCk7CisgICAgICAgIH0sCisKKyAg
ICAgICAgIm4iOiBmdW5jdGlvbiAoc3B5KSB7CisgICAgICAgICAgICByZXR1cm4gc3B5LnRvU3Ry
aW5nKCk7CisgICAgICAgIH0sCisKKyAgICAgICAgIkMiOiBmdW5jdGlvbiAoc3B5KSB7CisgICAg
ICAgICAgICB2YXIgY2FsbHMgPSBbXTsKKworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwg
PSBzcHkuY2FsbENvdW50OyBpIDwgbDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIHN0cmlu
Z2lmaWVkQ2FsbCA9ICIgICAgIiArIHNweS5nZXRDYWxsKGkpLnRvU3RyaW5nKCk7CisgICAgICAg
ICAgICAgICAgaWYgKC9cbi8udGVzdChjYWxsc1tpIC0gMV0pKSB7CisgICAgICAgICAgICAgICAg
ICAgIHN0cmluZ2lmaWVkQ2FsbCA9ICJcbiIgKyBzdHJpbmdpZmllZENhbGw7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHB1c2guY2FsbChjYWxscywgc3RyaW5naWZpZWRDYWxs
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGNhbGxzLmxlbmd0aCA+IDAg
PyAiXG4iICsgY2FsbHMuam9pbigiXG4iKSA6ICIiOworICAgICAgICB9LAorCisgICAgICAgICJ0
IjogZnVuY3Rpb24gKHNweSkgeworICAgICAgICAgICAgdmFyIG9iamVjdHMgPSBbXTsKKworICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBzcHkuY2FsbENvdW50OyBpIDwgbDsgKytpKSB7
CisgICAgICAgICAgICAgICAgcHVzaC5jYWxsKG9iamVjdHMsIHNpbm9uLmZvcm1hdChzcHkudGhp
c1ZhbHVlc1tpXSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gb2JqZWN0
cy5qb2luKCIsICIpOworICAgICAgICB9LAorCisgICAgICAgICIqIjogZnVuY3Rpb24gKHNweSwg
YXJncykgeworICAgICAgICAgICAgdmFyIGZvcm1hdHRlZCA9IFtdOworCisgICAgICAgICAgICBm
b3IgKHZhciBpID0gMCwgbCA9IGFyZ3MubGVuZ3RoOyBpIDwgbDsgKytpKSB7CisgICAgICAgICAg
ICAgICAgcHVzaC5jYWxsKGZvcm1hdHRlZCwgc2lub24uZm9ybWF0KGFyZ3NbaV0pKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZC5qb2luKCIsICIpOworICAg
ICAgICB9CisgICAgfTsKKworICAgIHNpbm9uLmV4dGVuZChzcHksIHNweUFwaSk7CisKKyAgICBz
cHkuc3B5Q2FsbCA9IHNpbm9uLnNweUNhbGw7CisgICAgc2lub24uc3B5ID0gc3B5OworCisgICAg
aWYgKHR5cGVvZiBkZWZpbmUgPT09ICJmdW5jdGlvbiIgJiYgZGVmaW5lLmFtZCkgeworICAgICAg
ICBkZWZpbmUoWyJtb2R1bGUiXSwgZnVuY3Rpb24obW9kdWxlKSB7IG1vZHVsZS5leHBvcnRzID0g
c3B5OyB9KTsKKyAgICB9IGVsc2UgaWYgKGNvbW1vbkpTTW9kdWxlKSB7CisgICAgICAgIG1vZHVs
ZS5leHBvcnRzID0gc3B5OworICAgIH0KK30odHlwZW9mIHNpbm9uID09ICJvYmplY3QiICYmIHNp
bm9uIHx8IG51bGwpKTsKKworfSx7Ii4uL3Npbm9uIjoyM31dLDMyOltmdW5jdGlvbihyZXF1aXJl
LG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQGRlcGVuZCAuLi9zaW5vbi5qcworICogQGRlcGVu
ZCBzcHkuanMKKyAqIEBkZXBlbmQgYmVoYXZpb3IuanMKKyAqLworLypqc2xpbnQgZXFlcWVxOiBm
YWxzZSwgb25ldmFyOiBmYWxzZSovCisvKmdsb2JhbCBtb2R1bGUsIHJlcXVpcmUsIHNpbm9uKi8K
Ky8qKgorICogU3R1YiBmdW5jdGlvbnMKKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBKb2hhbnNl
biAoY2hyaXN0aWFuQGNqb2hhbnNlbi5ubykKKyAqIEBsaWNlbnNlIEJTRAorICoKKyAqIENvcHly
aWdodCAoYykgMjAxMC0yMDEzIENocmlzdGlhbiBKb2hhbnNlbgorICovCisidXNlIHN0cmljdCI7
CisKKyhmdW5jdGlvbiAoc2lub24pIHsKKyAgICB2YXIgY29tbW9uSlNNb2R1bGUgPSB0eXBlb2Yg
bW9kdWxlICE9PSAidW5kZWZpbmVkIiAmJiBtb2R1bGUuZXhwb3J0cyAmJiB0eXBlb2YgcmVxdWly
ZSA9PSAiZnVuY3Rpb24iOworCisgICAgaWYgKCFzaW5vbiAmJiBjb21tb25KU01vZHVsZSkgewor
ICAgICAgICBzaW5vbiA9IHJlcXVpcmUoIi4uL3Npbm9uIik7CisgICAgfQorCisgICAgaWYgKCFz
aW5vbikgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZnVuY3Rpb24gc3R1YihvYmpl
Y3QsIHByb3BlcnR5LCBmdW5jKSB7CisgICAgICAgIGlmICghIWZ1bmMgJiYgdHlwZW9mIGZ1bmMg
IT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ3VzdG9t
IHN0dWIgc2hvdWxkIGJlIGZ1bmN0aW9uIik7CisgICAgICAgIH0KKworICAgICAgICB2YXIgd3Jh
cHBlcjsKKworICAgICAgICBpZiAoZnVuYykgeworICAgICAgICAgICAgd3JhcHBlciA9IHNpbm9u
LnNweSAmJiBzaW5vbi5zcHkuY3JlYXRlID8gc2lub24uc3B5LmNyZWF0ZShmdW5jKSA6IGZ1bmM7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB3cmFwcGVyID0gc3R1Yi5jcmVhdGUoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICghb2JqZWN0ICYmIHR5cGVvZiBwcm9wZXJ0eSA9PT0g
InVuZGVmaW5lZCIpIHsKKyAgICAgICAgICAgIHJldHVybiBzaW5vbi5zdHViLmNyZWF0ZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gInVuZGVmaW5lZCIg
JiYgdHlwZW9mIG9iamVjdCA9PSAib2JqZWN0IikgeworICAgICAgICAgICAgZm9yICh2YXIgcHJv
cCBpbiBvYmplY3QpIHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9iamVjdFtwcm9wXSA9
PT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAgICAgICAgICBzdHViKG9iamVjdCwgcHJvcCk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
b2JqZWN0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHNpbm9uLndyYXBNZXRob2Qob2Jq
ZWN0LCBwcm9wZXJ0eSwgd3JhcHBlcik7CisgICAgfQorCisgICAgZnVuY3Rpb24gZ2V0RGVmYXVs
dEJlaGF2aW9yKHN0dWIpIHsKKyAgICAgICAgcmV0dXJuIHN0dWIuZGVmYXVsdEJlaGF2aW9yIHx8
IGdldFBhcmVudEJlaGF2aW91cihzdHViKSB8fCBzaW5vbi5iZWhhdmlvci5jcmVhdGUoc3R1Yik7
CisgICAgfQorCisgICAgZnVuY3Rpb24gZ2V0UGFyZW50QmVoYXZpb3VyKHN0dWIpIHsKKyAgICAg
ICAgcmV0dXJuIChzdHViLnBhcmVudCAmJiBnZXRDdXJyZW50QmVoYXZpb3Ioc3R1Yi5wYXJlbnQp
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRDdXJyZW50QmVoYXZpb3Ioc3R1YikgeworICAg
ICAgICB2YXIgYmVoYXZpb3IgPSBzdHViLmJlaGF2aW9yc1tzdHViLmNhbGxDb3VudCAtIDFdOwor
ICAgICAgICByZXR1cm4gYmVoYXZpb3IgJiYgYmVoYXZpb3IuaXNQcmVzZW50KCkgPyBiZWhhdmlv
ciA6IGdldERlZmF1bHRCZWhhdmlvcihzdHViKTsKKyAgICB9CisKKyAgICB2YXIgdXVpZCA9IDA7
CisKKyAgICBzaW5vbi5leHRlbmQoc3R1YiwgKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIHBy
b3RvID0geworICAgICAgICAgICAgY3JlYXRlOiBmdW5jdGlvbiBjcmVhdGUoKSB7CisgICAgICAg
ICAgICAgICAgdmFyIGZ1bmN0aW9uU3R1YiA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGdldEN1cnJlbnRCZWhhdmlvcihmdW5jdGlvblN0dWIpLmludm9rZSh0aGlz
LCBhcmd1bWVudHMpOworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBmdW5j
dGlvblN0dWIuaWQgPSAic3R1YiMiICsgdXVpZCsrOworICAgICAgICAgICAgICAgIHZhciBvcmln
ID0gZnVuY3Rpb25TdHViOworICAgICAgICAgICAgICAgIGZ1bmN0aW9uU3R1YiA9IHNpbm9uLnNw
eS5jcmVhdGUoZnVuY3Rpb25TdHViKTsKKyAgICAgICAgICAgICAgICBmdW5jdGlvblN0dWIuZnVu
YyA9IG9yaWc7CisKKyAgICAgICAgICAgICAgICBzaW5vbi5leHRlbmQoZnVuY3Rpb25TdHViLCBz
dHViKTsKKyAgICAgICAgICAgICAgICBmdW5jdGlvblN0dWIuX2NyZWF0ZSA9IHNpbm9uLnN0dWIu
Y3JlYXRlOworICAgICAgICAgICAgICAgIGZ1bmN0aW9uU3R1Yi5kaXNwbGF5TmFtZSA9ICJzdHVi
IjsKKyAgICAgICAgICAgICAgICBmdW5jdGlvblN0dWIudG9TdHJpbmcgPSBzaW5vbi5mdW5jdGlv
blRvU3RyaW5nOworCisgICAgICAgICAgICAgICAgZnVuY3Rpb25TdHViLmRlZmF1bHRCZWhhdmlv
ciA9IG51bGw7CisgICAgICAgICAgICAgICAgZnVuY3Rpb25TdHViLmJlaGF2aW9ycyA9IFtdOwor
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uU3R1YjsKKyAgICAgICAgICAgIH0sCisK
KyAgICAgICAgICAgIHJlc2V0QmVoYXZpb3I6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICB2YXIgaTsKKworICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEJlaGF2aW9yID0gbnVsbDsK
KyAgICAgICAgICAgICAgICB0aGlzLmJlaGF2aW9ycyA9IFtdOworCisgICAgICAgICAgICAgICAg
ZGVsZXRlIHRoaXMucmV0dXJuVmFsdWU7CisgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMucmV0
dXJuQXJnQXQ7CisgICAgICAgICAgICAgICAgdGhpcy5yZXR1cm5UaGlzID0gZmFsc2U7CisKKyAg
ICAgICAgICAgICAgICBpZiAodGhpcy5mYWtlcykgeworICAgICAgICAgICAgICAgICAgICBmb3Ig
KGkgPSAwOyBpIDwgdGhpcy5mYWtlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5mYWtlc1tpXS5yZXNldEJlaGF2aW9yKCk7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBvbkNh
bGw6IGZ1bmN0aW9uKGluZGV4KSB7CisgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmJlaGF2aW9y
c1tpbmRleF0pIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWhhdmlvcnNbaW5kZXhdID0g
c2lub24uYmVoYXZpb3IuY3JlYXRlKHRoaXMpOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLmJlaGF2aW9yc1tpbmRleF07CisgICAgICAgICAgICB9LAor
CisgICAgICAgICAgICBvbkZpcnN0Q2FsbDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMub25DYWxsKDApOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgb25T
ZWNvbmRDYWxsOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vbkNh
bGwoMSk7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBvblRoaXJkQ2FsbDogZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub25DYWxsKDIpOworICAgICAgICAg
ICAgfQorICAgICAgICB9OworCisgICAgICAgIGZvciAodmFyIG1ldGhvZCBpbiBzaW5vbi5iZWhh
dmlvcikgeworICAgICAgICAgICAgaWYgKHNpbm9uLmJlaGF2aW9yLmhhc093blByb3BlcnR5KG1l
dGhvZCkgJiYKKyAgICAgICAgICAgICAgICAhcHJvdG8uaGFzT3duUHJvcGVydHkobWV0aG9kKSAm
JgorICAgICAgICAgICAgICAgIG1ldGhvZCAhPSAnY3JlYXRlJyAmJgorICAgICAgICAgICAgICAg
IG1ldGhvZCAhPSAnd2l0aEFyZ3MnICYmCisgICAgICAgICAgICAgICAgbWV0aG9kICE9ICdpbnZv
a2UnKSB7CisgICAgICAgICAgICAgICAgcHJvdG9bbWV0aG9kXSA9IChmdW5jdGlvbihiZWhhdmlv
ck1ldGhvZCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRCZWhhdmlvciA9IHRoaXMuZGVmYXVsdEJl
aGF2aW9yIHx8IHNpbm9uLmJlaGF2aW9yLmNyZWF0ZSh0aGlzKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuZGVmYXVsdEJlaGF2aW9yW2JlaGF2aW9yTWV0aG9kXS5hcHBseSh0aGlzLmRl
ZmF1bHRCZWhhdmlvciwgYXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0obWV0aG9k
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcHJvdG87Cisg
ICAgfSgpKSk7CisKKyAgICBzaW5vbi5zdHViID0gc3R1YjsKKworICAgIGlmICh0eXBlb2YgZGVm
aW5lID09PSAiZnVuY3Rpb24iICYmIGRlZmluZS5hbWQpIHsKKyAgICAgICAgZGVmaW5lKFsibW9k
dWxlIl0sIGZ1bmN0aW9uKG1vZHVsZSkgeyBtb2R1bGUuZXhwb3J0cyA9IHN0dWI7IH0pOworICAg
IH0gZWxzZSBpZiAoY29tbW9uSlNNb2R1bGUpIHsKKyAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBz
dHViOworICAgIH0KK30odHlwZW9mIHNpbm9uID09ICJvYmplY3QiICYmIHNpbm9uIHx8IG51bGwp
KTsKKworfSx7Ii4uL3Npbm9uIjoyM31dLDMzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBv
cnRzKXsKKy8qKgorICogQGRlcGVuZCAuLi9zaW5vbi5qcworICogQGRlcGVuZCBzdHViLmpzCisg
KiBAZGVwZW5kIG1vY2suanMKKyAqIEBkZXBlbmQgc2FuZGJveC5qcworICovCisvKmpzbGludCBl
cWVxZXE6IGZhbHNlLCBvbmV2YXI6IGZhbHNlLCBmb3JpbjogdHJ1ZSwgcGx1c3BsdXM6IGZhbHNl
Ki8KKy8qZ2xvYmFsIG1vZHVsZSwgcmVxdWlyZSwgc2lub24qLworLyoqCisgKiBUZXN0IGZ1bmN0
aW9uLCBzYW5kYm94ZXMgZmFrZXMKKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBKb2hhbnNlbiAo
Y2hyaXN0aWFuQGNqb2hhbnNlbi5ubykKKyAqIEBsaWNlbnNlIEJTRAorICoKKyAqIENvcHlyaWdo
dCAoYykgMjAxMC0yMDEzIENocmlzdGlhbiBKb2hhbnNlbgorICovCisidXNlIHN0cmljdCI7CisK
KyhmdW5jdGlvbiAoc2lub24pIHsKKyAgICB2YXIgY29tbW9uSlNNb2R1bGUgPSB0eXBlb2YgbW9k
dWxlICE9PSAidW5kZWZpbmVkIiAmJiBtb2R1bGUuZXhwb3J0cyAmJiB0eXBlb2YgcmVxdWlyZSA9
PSAiZnVuY3Rpb24iOworCisgICAgaWYgKCFzaW5vbiAmJiBjb21tb25KU01vZHVsZSkgeworICAg
ICAgICBzaW5vbiA9IHJlcXVpcmUoIi4uL3Npbm9uIik7CisgICAgfQorCisgICAgaWYgKCFzaW5v
bikgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdChjYWxsYmFj
aykgeworICAgICAgICB2YXIgdHlwZSA9IHR5cGVvZiBjYWxsYmFjazsKKworICAgICAgICBpZiAo
dHlwZSAhPSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJz
aW5vbi50ZXN0IG5lZWRzIHRvIHdyYXAgYSB0ZXN0IGZ1bmN0aW9uLCBnb3QgIiArIHR5cGUpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2lub25TYW5kYm94ZWRUZXN0KCkgeworICAg
ICAgICAgICAgdmFyIGNvbmZpZyA9IHNpbm9uLmdldENvbmZpZyhzaW5vbi5jb25maWcpOworICAg
ICAgICAgICAgY29uZmlnLmluamVjdEludG8gPSBjb25maWcuaW5qZWN0SW50b1RoaXMgJiYgdGhp
cyB8fCBjb25maWcuaW5qZWN0SW50bzsKKyAgICAgICAgICAgIHZhciBzYW5kYm94ID0gc2lub24u
c2FuZGJveC5jcmVhdGUoY29uZmlnKTsKKyAgICAgICAgICAgIHZhciBleGNlcHRpb24sIHJlc3Vs
dDsKKyAgICAgICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJn
dW1lbnRzKS5jb25jYXQoc2FuZGJveC5hcmdzKTsKKworICAgICAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgICAgICByZXN1bHQgPSBjYWxsYmFjay5hcHBseSh0aGlzLCBhcmdzKTsKKyAgICAgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICBleGNlcHRpb24gPSBlOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAodHlwZW9mIGV4Y2VwdGlvbiAhPT0gInVuZGVmaW5l
ZCIpIHsKKyAgICAgICAgICAgICAgICBzYW5kYm94LnJlc3RvcmUoKTsKKyAgICAgICAgICAgICAg
ICB0aHJvdyBleGNlcHRpb247CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBzYW5kYm94LnZlcmlmeUFuZFJlc3RvcmUoKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfTsKKworICAgICAgICBpZiAo
Y2FsbGJhY2subGVuZ3RoKSB7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gc2lub25Bc3lu
Y1NhbmRib3hlZFRlc3QoY2FsbGJhY2spIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2lub25T
YW5kYm94ZWRUZXN0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICB9OworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIHNpbm9uU2FuZGJveGVkVGVzdDsKKyAgICB9CisKKyAg
ICB0ZXN0LmNvbmZpZyA9IHsKKyAgICAgICAgaW5qZWN0SW50b1RoaXM6IHRydWUsCisgICAgICAg
IGluamVjdEludG86IG51bGwsCisgICAgICAgIHByb3BlcnRpZXM6IFsic3B5IiwgInN0dWIiLCAi
bW9jayIsICJjbG9jayIsICJzZXJ2ZXIiLCAicmVxdWVzdHMiXSwKKyAgICAgICAgdXNlRmFrZVRp
bWVyczogdHJ1ZSwKKyAgICAgICAgdXNlRmFrZVNlcnZlcjogdHJ1ZQorICAgIH07CisKKyAgICBz
aW5vbi50ZXN0ID0gdGVzdDsKKworICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAiZnVuY3Rpb24i
ICYmIGRlZmluZS5hbWQpIHsKKyAgICAgICAgZGVmaW5lKFsibW9kdWxlIl0sIGZ1bmN0aW9uKG1v
ZHVsZSkgeyBtb2R1bGUuZXhwb3J0cyA9IHRlc3Q7IH0pOworICAgIH0gZWxzZSBpZiAoY29tbW9u
SlNNb2R1bGUpIHsKKyAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSB0ZXN0OworICAgIH0KK30odHlw
ZW9mIHNpbm9uID09ICJvYmplY3QiICYmIHNpbm9uIHx8IG51bGwpKTsKKworfSx7Ii4uL3Npbm9u
IjoyM31dLDM0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQGRl
cGVuZCAuLi9zaW5vbi5qcworICogQGRlcGVuZCB0ZXN0LmpzCisgKi8KKy8qanNsaW50IGVxZXFl
cTogZmFsc2UsIG9uZXZhcjogZmFsc2UsIGVxZXFlcTogZmFsc2UqLworLypnbG9iYWwgbW9kdWxl
LCByZXF1aXJlLCBzaW5vbiovCisvKioKKyAqIFRlc3QgY2FzZSwgc2FuZGJveGVzIGFsbCB0ZXN0
IGZ1bmN0aW9ucworICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEpvaGFuc2VuIChjaHJpc3RpYW5A
Y2pvaGFuc2VuLm5vKQorICogQGxpY2Vuc2UgQlNECisgKgorICogQ29weXJpZ2h0IChjKSAyMDEw
LTIwMTMgQ2hyaXN0aWFuIEpvaGFuc2VuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworKGZ1bmN0aW9u
IChzaW5vbikgeworICAgIHZhciBjb21tb25KU01vZHVsZSA9IHR5cGVvZiBtb2R1bGUgIT09ICJ1
bmRlZmluZWQiICYmIG1vZHVsZS5leHBvcnRzICYmIHR5cGVvZiByZXF1aXJlID09ICJmdW5jdGlv
biI7CisKKyAgICBpZiAoIXNpbm9uICYmIGNvbW1vbkpTTW9kdWxlKSB7CisgICAgICAgIHNpbm9u
ID0gcmVxdWlyZSgiLi4vc2lub24iKTsKKyAgICB9CisKKyAgICBpZiAoIXNpbm9uIHx8ICFPYmpl
Y3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBjcmVhdGVUZXN0KHByb3BlcnR5LCBzZXRVcCwgdGVhckRvd24pIHsKKyAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGlmIChzZXRVcCkgeworICAg
ICAgICAgICAgICAgIHNldFVwLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciBleGNlcHRpb24sIHJlc3VsdDsKKworICAgICAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBwcm9wZXJ0eS5hcHBseSh0aGlzLCBhcmd1bWVu
dHMpOworICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgIGV4Y2VwdGlv
biA9IGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0ZWFyRG93bikgeworICAg
ICAgICAgICAgICAgIHRlYXJEb3duLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICB0aHJv
dyBleGNlcHRpb247CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIH07CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdENhc2UodGVzdHMsIHByZWZp
eCkgeworICAgICAgICAvKmpzbDppZ25vcmUqLworICAgICAgICBpZiAoIXRlc3RzIHx8IHR5cGVv
ZiB0ZXN0cyAhPSAib2JqZWN0IikgeworICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigi
c2lub24udGVzdENhc2UgbmVlZHMgYW4gb2JqZWN0IHdpdGggdGVzdCBmdW5jdGlvbnMiKTsKKyAg
ICAgICAgfQorICAgICAgICAvKmpzbDplbmQqLworCisgICAgICAgIHByZWZpeCA9IHByZWZpeCB8
fCAidGVzdCI7CisgICAgICAgIHZhciByUHJlZml4ID0gbmV3IFJlZ0V4cCgiXiIgKyBwcmVmaXgp
OworICAgICAgICB2YXIgbWV0aG9kcyA9IHt9LCB0ZXN0TmFtZSwgcHJvcGVydHksIG1ldGhvZDsK
KyAgICAgICAgdmFyIHNldFVwID0gdGVzdHMuc2V0VXA7CisgICAgICAgIHZhciB0ZWFyRG93biA9
IHRlc3RzLnRlYXJEb3duOworCisgICAgICAgIGZvciAodGVzdE5hbWUgaW4gdGVzdHMpIHsKKyAg
ICAgICAgICAgIGlmICh0ZXN0cy5oYXNPd25Qcm9wZXJ0eSh0ZXN0TmFtZSkpIHsKKyAgICAgICAg
ICAgICAgICBwcm9wZXJ0eSA9IHRlc3RzW3Rlc3ROYW1lXTsKKworICAgICAgICAgICAgICAgIGlm
ICgvXihzZXRVcHx0ZWFyRG93bikkLy50ZXN0KHRlc3ROYW1lKSkgeworICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAo
dHlwZW9mIHByb3BlcnR5ID09ICJmdW5jdGlvbiIgJiYgclByZWZpeC50ZXN0KHRlc3ROYW1lKSkg
eworICAgICAgICAgICAgICAgICAgICBtZXRob2QgPSBwcm9wZXJ0eTsKKworICAgICAgICAgICAg
ICAgICAgICBpZiAoc2V0VXAgfHwgdGVhckRvd24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1ldGhvZCA9IGNyZWF0ZVRlc3QocHJvcGVydHksIHNldFVwLCB0ZWFyRG93bik7CisgICAgICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBtZXRob2RzW3Rlc3ROYW1lXSA9
IHNpbm9uLnRlc3QobWV0aG9kKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICBtZXRob2RzW3Rlc3ROYW1lXSA9IHRlc3RzW3Rlc3ROYW1lXTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbWV0
aG9kczsKKyAgICB9CisKKyAgICBzaW5vbi50ZXN0Q2FzZSA9IHRlc3RDYXNlOworCisgICAgaWYg
KHR5cGVvZiBkZWZpbmUgPT09ICJmdW5jdGlvbiIgJiYgZGVmaW5lLmFtZCkgeworICAgICAgICBk
ZWZpbmUoWyJtb2R1bGUiXSwgZnVuY3Rpb24obW9kdWxlKSB7IG1vZHVsZS5leHBvcnRzID0gdGVz
dENhc2U7IH0pOworICAgIH0gZWxzZSBpZiAoY29tbW9uSlNNb2R1bGUpIHsKKyAgICAgICAgbW9k
dWxlLmV4cG9ydHMgPSB0ZXN0Q2FzZTsKKyAgICB9Cit9KHR5cGVvZiBzaW5vbiA9PSAib2JqZWN0
IiAmJiBzaW5vbiB8fCBudWxsKSk7CisKK30seyIuLi9zaW5vbiI6MjN9XSwzNTpbZnVuY3Rpb24o
cmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24gKGdsb2JhbCl7CisvKmpzbGludCBl
cWVxZXE6IGZhbHNlLCBwbHVzcGx1czogZmFsc2UsIGV2aWw6IHRydWUsIG9uZXZhcjogZmFsc2Us
IGJyb3dzZXI6IHRydWUsIGZvcmluOiBmYWxzZSovCisvKmdsb2JhbCBtb2R1bGUsIHJlcXVpcmUs
IHdpbmRvdyovCisvKioKKyAqIEZha2UgdGltZXIgQVBJCisgKiBzZXRUaW1lb3V0CisgKiBzZXRJ
bnRlcnZhbAorICogY2xlYXJUaW1lb3V0CisgKiBjbGVhckludGVydmFsCisgKiB0aWNrCisgKiBy
ZXNldAorICogRGF0ZQorICoKKyAqIEluc3BpcmVkIGJ5IGpzVW5pdE1vY2tUaW1lT3V0IGZyb20g
SnNVbml0CisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gSm9oYW5zZW4gKGNocmlzdGlhbkBjam9o
YW5zZW4ubm8pCisgKiBAbGljZW5zZSBCU0QKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAx
MyBDaHJpc3RpYW4gSm9oYW5zZW4KKyAqLworInVzZSBzdHJpY3QiOworCitpZiAodHlwZW9mIHNp
bm9uID09ICJ1bmRlZmluZWQiKSB7CisgICAgdmFyIHNpbm9uID0ge307Cit9CisKKyhmdW5jdGlv
biAoZ2xvYmFsKSB7CisgICAgLy8gbm9kZSBleHBlY3RzIHNldFRpbWVvdXQvc2V0SW50ZXJ2YWwg
dG8gcmV0dXJuIGEgZm4gb2JqZWN0IHcvIC5yZWYoKS8udW5yZWYoKQorICAgIC8vIGJyb3dzZXJz
LCBhIG51bWJlci4KKyAgICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2Nqb2hhbnNlbi9TaW5v
bi5KUy9wdWxsLzQzNgorICAgIHZhciB0aW1lb3V0UmVzdWx0ID0gc2V0VGltZW91dChmdW5jdGlv
bigpIHt9LCAwKTsKKyAgICB2YXIgYWRkVGltZXJSZXR1cm5zT2JqZWN0ID0gdHlwZW9mIHRpbWVv
dXRSZXN1bHQgPT09ICdvYmplY3QnOworICAgIGNsZWFyVGltZW91dCh0aW1lb3V0UmVzdWx0KTsK
KworICAgIHZhciBpZCA9IDE7CisKKyAgICBmdW5jdGlvbiBhZGRUaW1lcihhcmdzLCByZWN1cnJp
bmcpIHsKKyAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7CisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkZ1bmN0aW9uIHJlcXVpcmVzIGF0IGxlYXN0IDEgcGFyYW1ldGVyIik7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAodHlwZW9mIGFyZ3NbMF0gPT09ICJ1bmRlZmluZWQiKSB7
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNhbGxiYWNrIG11c3QgYmUgcHJvdmlkZWQg
dG8gdGltZXIgY2FsbHMiKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0b0lkID0gaWQrKzsK
KyAgICAgICAgdmFyIGRlbGF5ID0gYXJnc1sxXSB8fCAwOworCisgICAgICAgIGlmICghdGhpcy50
aW1lb3V0cykgeworICAgICAgICAgICAgdGhpcy50aW1lb3V0cyA9IHt9OworICAgICAgICB9CisK
KyAgICAgICAgdGhpcy50aW1lb3V0c1t0b0lkXSA9IHsKKyAgICAgICAgICAgIGlkOiB0b0lkLAor
ICAgICAgICAgICAgZnVuYzogYXJnc1swXSwKKyAgICAgICAgICAgIGNhbGxBdDogdGhpcy5ub3cg
KyBkZWxheSwKKyAgICAgICAgICAgIGludm9rZUFyZ3M6IEFycmF5LnByb3RvdHlwZS5zbGljZS5j
YWxsKGFyZ3MsIDIpCisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHJlY3VycmluZyA9PT0gdHJ1
ZSkgeworICAgICAgICAgICAgdGhpcy50aW1lb3V0c1t0b0lkXS5pbnRlcnZhbCA9IGRlbGF5Owor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKGFkZFRpbWVyUmV0dXJuc09iamVjdCkgeworICAgICAg
ICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICBpZDogdG9JZCwKKyAgICAgICAgICAgICAg
ICByZWY6IGZ1bmN0aW9uKCkge30sCisgICAgICAgICAgICAgICAgdW5yZWY6IGZ1bmN0aW9uKCkg
e30KKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICByZXR1cm4gdG9JZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNlVGlt
ZShzdHIpIHsKKyAgICAgICAgaWYgKCFzdHIpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICB9CisKKyAgICAgICAgdmFyIHN0cmluZ3MgPSBzdHIuc3BsaXQoIjoiKTsKKyAgICAgICAg
dmFyIGwgPSBzdHJpbmdzLmxlbmd0aCwgaSA9IGw7CisgICAgICAgIHZhciBtcyA9IDAsIHBhcnNl
ZDsKKworICAgICAgICBpZiAobCA+IDMgfHwgIS9eKFxkXGQ6KXswLDJ9XGRcZD8kLy50ZXN0KHN0
cikpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigidGljayBvbmx5IHVuZGVyc3RhbmRz
IG51bWJlcnMgYW5kICdoOm06cyciKTsKKyAgICAgICAgfQorCisgICAgICAgIHdoaWxlIChpLS0p
IHsKKyAgICAgICAgICAgIHBhcnNlZCA9IHBhcnNlSW50KHN0cmluZ3NbaV0sIDEwKTsKKworICAg
ICAgICAgICAgaWYgKHBhcnNlZCA+PSA2MCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiSW52YWxpZCB0aW1lICIgKyBzdHIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBtcyArPSBwYXJzZWQgKiBNYXRoLnBvdyg2MCwgKGwgLSBpIC0gMSkpOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIG1zICogMTAwMDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjcmVhdGVP
YmplY3Qob2JqZWN0KSB7CisgICAgICAgIHZhciBuZXdPYmplY3Q7CisKKyAgICAgICAgaWYgKE9i
amVjdC5jcmVhdGUpIHsKKyAgICAgICAgICAgIG5ld09iamVjdCA9IE9iamVjdC5jcmVhdGUob2Jq
ZWN0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhciBGID0gZnVuY3Rpb24gKCkg
e307CisgICAgICAgICAgICBGLnByb3RvdHlwZSA9IG9iamVjdDsKKyAgICAgICAgICAgIG5ld09i
amVjdCA9IG5ldyBGKCk7CisgICAgICAgIH0KKworICAgICAgICBuZXdPYmplY3QuRGF0ZS5jbG9j
ayA9IG5ld09iamVjdDsKKyAgICAgICAgcmV0dXJuIG5ld09iamVjdDsKKyAgICB9CisKKyAgICBz
aW5vbi5jbG9jayA9IHsKKyAgICAgICAgbm93OiAwLAorCisgICAgICAgIGNyZWF0ZTogZnVuY3Rp
b24gY3JlYXRlKG5vdykgeworICAgICAgICAgICAgdmFyIGNsb2NrID0gY3JlYXRlT2JqZWN0KHRo
aXMpOworCisgICAgICAgICAgICBpZiAodHlwZW9mIG5vdyA9PSAibnVtYmVyIikgeworICAgICAg
ICAgICAgICAgIGNsb2NrLm5vdyA9IG5vdzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKCEhbm93ICYmIHR5cGVvZiBub3cgPT0gIm9iamVjdCIpIHsKKyAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgVHlwZUVycm9yKCJub3cgc2hvdWxkIGJlIG1pbGxpc2Vjb25kcyBzaW5jZSBVTklY
IGVwb2NoIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBjbG9jazsKKyAg
ICAgICAgfSwKKworICAgICAgICBzZXRUaW1lb3V0OiBmdW5jdGlvbiBzZXRUaW1lb3V0KGNhbGxi
YWNrLCB0aW1lb3V0KSB7CisgICAgICAgICAgICByZXR1cm4gYWRkVGltZXIuY2FsbCh0aGlzLCBh
cmd1bWVudHMsIGZhbHNlKTsKKyAgICAgICAgfSwKKworICAgICAgICBjbGVhclRpbWVvdXQ6IGZ1
bmN0aW9uIGNsZWFyVGltZW91dCh0aW1lcklkKSB7CisgICAgICAgICAgICBpZiAoIXRpbWVySWQp
IHsKKyAgICAgICAgICAgICAgICAvLyBudWxsIGFwcGVhcnMgdG8gYmUgYWxsb3dlZCBpbiBtb3N0
IGJyb3dzZXJzLCBhbmQgYXBwZWFycyB0byBiZSByZWxpZWQgdXBvbiBieSBzb21lIGxpYnJhcmll
cywgbGlrZSBCb290c3RyYXAgY2Fyb3VzZWwKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXRoaXMudGltZW91dHMpIHsKKyAgICAgICAgICAg
ICAgICB0aGlzLnRpbWVvdXRzID0gW107CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBp
biBOb2RlLCB0aW1lcklkIGlzIGFuIG9iamVjdCB3aXRoIC5yZWYoKS8udW5yZWYoKSwgYW5kCisg
ICAgICAgICAgICAvLyBpdHMgLmlkIGZpZWxkIGlzIHRoZSBhY3R1YWwgdGltZXIgaWQuCisgICAg
ICAgICAgICBpZiAodHlwZW9mIHRpbWVySWQgPT09ICdvYmplY3QnKSB7CisgICAgICAgICAgICAg
IHRpbWVySWQgPSB0aW1lcklkLmlkCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodGlt
ZXJJZCBpbiB0aGlzLnRpbWVvdXRzKSB7CisgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMudGlt
ZW91dHNbdGltZXJJZF07CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgc2V0
SW50ZXJ2YWw6IGZ1bmN0aW9uIHNldEludGVydmFsKGNhbGxiYWNrLCB0aW1lb3V0KSB7CisgICAg
ICAgICAgICByZXR1cm4gYWRkVGltZXIuY2FsbCh0aGlzLCBhcmd1bWVudHMsIHRydWUpOworICAg
ICAgICB9LAorCisgICAgICAgIGNsZWFySW50ZXJ2YWw6IGZ1bmN0aW9uIGNsZWFySW50ZXJ2YWwo
dGltZXJJZCkgeworICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVvdXQodGltZXJJZCk7CisgICAg
ICAgIH0sCisKKyAgICAgICAgc2V0SW1tZWRpYXRlOiBmdW5jdGlvbiBzZXRJbW1lZGlhdGUoY2Fs
bGJhY2spIHsKKyAgICAgICAgICAgIHZhciBwYXNzVGhydUFyZ3MgPSBBcnJheS5wcm90b3R5cGUu
c2xpY2UuY2FsbChhcmd1bWVudHMsIDEpOworCisgICAgICAgICAgICByZXR1cm4gYWRkVGltZXIu
Y2FsbCh0aGlzLCBbY2FsbGJhY2ssIDBdLmNvbmNhdChwYXNzVGhydUFyZ3MpLCBmYWxzZSk7Cisg
ICAgICAgIH0sCisKKyAgICAgICAgY2xlYXJJbW1lZGlhdGU6IGZ1bmN0aW9uIGNsZWFySW1tZWRp
YXRlKHRpbWVySWQpIHsKKyAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0KHRpbWVySWQpOwor
ICAgICAgICB9LAorCisgICAgICAgIHRpY2s6IGZ1bmN0aW9uIHRpY2sobXMpIHsKKyAgICAgICAg
ICAgIG1zID0gdHlwZW9mIG1zID09ICJudW1iZXIiID8gbXMgOiBwYXJzZVRpbWUobXMpOworICAg
ICAgICAgICAgdmFyIHRpY2tGcm9tID0gdGhpcy5ub3csIHRpY2tUbyA9IHRoaXMubm93ICsgbXMs
IHByZXZpb3VzID0gdGhpcy5ub3c7CisgICAgICAgICAgICB2YXIgdGltZXIgPSB0aGlzLmZpcnN0
VGltZXJJblJhbmdlKHRpY2tGcm9tLCB0aWNrVG8pOworCisgICAgICAgICAgICB2YXIgZmlyc3RF
eGNlcHRpb247CisgICAgICAgICAgICB3aGlsZSAodGltZXIgJiYgdGlja0Zyb20gPD0gdGlja1Rv
KSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMudGltZW91dHNbdGltZXIuaWRdKSB7CisgICAg
ICAgICAgICAgICAgICAgIHRpY2tGcm9tID0gdGhpcy5ub3cgPSB0aW1lci5jYWxsQXQ7CisgICAg
ICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxsVGlt
ZXIodGltZXIpOworICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgZmlyc3RFeGNlcHRpb24gPSBmaXJzdEV4Y2VwdGlvbiB8fCBlOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGlt
ZXIgPSB0aGlzLmZpcnN0VGltZXJJblJhbmdlKHByZXZpb3VzLCB0aWNrVG8pOworICAgICAgICAg
ICAgICAgIHByZXZpb3VzID0gdGlja0Zyb207CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHRoaXMubm93ID0gdGlja1RvOworCisgICAgICAgICAgICBpZiAoZmlyc3RFeGNlcHRpb24pIHsK
KyAgICAgICAgICAgICAgdGhyb3cgZmlyc3RFeGNlcHRpb247CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiB0aGlzLm5vdzsKKyAgICAgICAgfSwKKworICAgICAgICBmaXJzdFRp
bWVySW5SYW5nZTogZnVuY3Rpb24gKGZyb20sIHRvKSB7CisgICAgICAgICAgICB2YXIgdGltZXIs
IHNtYWxsZXN0ID0gbnVsbCwgb3JpZ2luYWxUaW1lcjsKKworICAgICAgICAgICAgZm9yICh2YXIg
aWQgaW4gdGhpcy50aW1lb3V0cykgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpbWVvdXRz
Lmhhc093blByb3BlcnR5KGlkKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1l
b3V0c1tpZF0uY2FsbEF0IDwgZnJvbSB8fCB0aGlzLnRpbWVvdXRzW2lkXS5jYWxsQXQgPiB0bykg
eworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoc21hbGxlc3QgPT09IG51bGwgfHwgdGhpcy50
aW1lb3V0c1tpZF0uY2FsbEF0IDwgc21hbGxlc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG9yaWdpbmFsVGltZXIgPSB0aGlzLnRpbWVvdXRzW2lkXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNtYWxsZXN0ID0gdGhpcy50aW1lb3V0c1tpZF0uY2FsbEF0OworCisgICAgICAgICAgICAg
ICAgICAgICAgICB0aW1lciA9IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jOiB0
aGlzLnRpbWVvdXRzW2lkXS5mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxB
dDogdGhpcy50aW1lb3V0c1tpZF0uY2FsbEF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludGVydmFsOiB0aGlzLnRpbWVvdXRzW2lkXS5pbnRlcnZhbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZDogdGhpcy50aW1lb3V0c1tpZF0uaWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW52b2tlQXJnczogdGhpcy50aW1lb3V0c1tpZF0uaW52b2tlQXJncworICAgICAg
ICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHRpbWVyIHx8IG51bGw7
CisgICAgICAgIH0sCisKKyAgICAgICAgY2FsbFRpbWVyOiBmdW5jdGlvbiAodGltZXIpIHsKKyAg
ICAgICAgICAgIGlmICh0eXBlb2YgdGltZXIuaW50ZXJ2YWwgPT0gIm51bWJlciIpIHsKKyAgICAg
ICAgICAgICAgICB0aGlzLnRpbWVvdXRzW3RpbWVyLmlkXS5jYWxsQXQgKz0gdGltZXIuaW50ZXJ2
YWw7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnRp
bWVvdXRzW3RpbWVyLmlkXTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgICAgICBpZiAodHlwZW9mIHRpbWVyLmZ1bmMgPT0gImZ1bmN0aW9uIikgeworICAg
ICAgICAgICAgICAgICAgICB0aW1lci5mdW5jLmFwcGx5KG51bGwsIHRpbWVyLmludm9rZUFyZ3Mp
OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGV2YWwodGlt
ZXIuZnVuYyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICAgICAgICB2YXIgZXhjZXB0aW9uID0gZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKCF0aGlzLnRpbWVvdXRzW3RpbWVyLmlkXSkgeworICAgICAgICAgICAgICAgIGlm
IChleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgIHRocm93IGV4Y2VwdGlvbjsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgIHRocm93IGV4Y2VwdGlv
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICByZXNldDogZnVuY3Rpb24g
cmVzZXQoKSB7CisgICAgICAgICAgICB0aGlzLnRpbWVvdXRzID0ge307CisgICAgICAgIH0sCisK
KyAgICAgICAgRGF0ZTogKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZhciBOYXRpdmVEYXRl
ID0gRGF0ZTsKKworICAgICAgICAgICAgZnVuY3Rpb24gQ2xvY2tEYXRlKHllYXIsIG1vbnRoLCBk
YXRlLCBob3VyLCBtaW51dGUsIHNlY29uZCwgbXMpIHsKKyAgICAgICAgICAgICAgICAvLyBEZWZl
bnNpdmUgYW5kIHZlcmJvc2UgdG8gYXZvaWQgcG90ZW50aWFsIGhhcm0gaW4gcGFzc2luZworICAg
ICAgICAgICAgICAgIC8vIGV4cGxpY2l0IHVuZGVmaW5lZCB3aGVuIHVzZXIgZG9lcyBub3QgcGFz
cyBhcmd1bWVudAorICAgICAgICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkgewor
ICAgICAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBO
YXRpdmVEYXRlKENsb2NrRGF0ZS5jbG9jay5ub3cpOworICAgICAgICAgICAgICAgIGNhc2UgMToK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVEYXRlKHllYXIpOworICAgICAg
ICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVE
YXRlKHllYXIsIG1vbnRoKTsKKyAgICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgTmF0aXZlRGF0ZSh5ZWFyLCBtb250aCwgZGF0ZSk7CisgICAgICAg
ICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZURh
dGUoeWVhciwgbW9udGgsIGRhdGUsIGhvdXIpOworICAgICAgICAgICAgICAgIGNhc2UgNToKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVEYXRlKHllYXIsIG1vbnRoLCBkYXRl
LCBob3VyLCBtaW51dGUpOworICAgICAgICAgICAgICAgIGNhc2UgNjoKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBOYXRpdmVEYXRlKHllYXIsIG1vbnRoLCBkYXRlLCBob3VyLCBtaW51
dGUsIHNlY29uZCk7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBOYXRpdmVEYXRlKHllYXIsIG1vbnRoLCBkYXRlLCBob3VyLCBtaW51dGUs
IHNlY29uZCwgbXMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIG1pcnJvckRhdGVQcm9wZXJ0aWVzKENsb2NrRGF0ZSwgTmF0aXZlRGF0ZSk7
CisgICAgICAgIH0oKSkKKyAgICB9OworCisgICAgZnVuY3Rpb24gbWlycm9yRGF0ZVByb3BlcnRp
ZXModGFyZ2V0LCBzb3VyY2UpIHsKKyAgICAgICAgaWYgKHNvdXJjZS5ub3cpIHsKKyAgICAgICAg
ICAgIHRhcmdldC5ub3cgPSBmdW5jdGlvbiBub3coKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRhcmdldC5jbG9jay5ub3c7CisgICAgICAgICAgICB9OworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgZGVsZXRlIHRhcmdldC5ub3c7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc291
cmNlLnRvU291cmNlKSB7CisgICAgICAgICAgICB0YXJnZXQudG9Tb3VyY2UgPSBmdW5jdGlvbiB0
b1NvdXJjZSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc291cmNlLnRvU291cmNlKCk7Cisg
ICAgICAgICAgICB9OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVsZXRlIHRhcmdl
dC50b1NvdXJjZTsKKyAgICAgICAgfQorCisgICAgICAgIHRhcmdldC50b1N0cmluZyA9IGZ1bmN0
aW9uIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS50b1N0cmluZygpOwor
ICAgICAgICB9OworCisgICAgICAgIHRhcmdldC5wcm90b3R5cGUgPSBzb3VyY2UucHJvdG90eXBl
OworICAgICAgICB0YXJnZXQucGFyc2UgPSBzb3VyY2UucGFyc2U7CisgICAgICAgIHRhcmdldC5V
VEMgPSBzb3VyY2UuVVRDOworICAgICAgICB0YXJnZXQucHJvdG90eXBlLnRvVVRDU3RyaW5nID0g
c291cmNlLnByb3RvdHlwZS50b1VUQ1N0cmluZzsKKworICAgICAgICBmb3IgKHZhciBwcm9wIGlu
IHNvdXJjZSkgeworICAgICAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkg
eworICAgICAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0YXJnZXQ7CisgICAgfQorCisgICAg
dmFyIG1ldGhvZHMgPSBbIkRhdGUiLCAic2V0VGltZW91dCIsICJzZXRJbnRlcnZhbCIsCisgICAg
ICAgICAgICAgICAgICAgImNsZWFyVGltZW91dCIsICJjbGVhckludGVydmFsIl07CisKKyAgICBp
ZiAodHlwZW9mIGdsb2JhbC5zZXRJbW1lZGlhdGUgIT09ICJ1bmRlZmluZWQiKSB7CisgICAgICAg
IG1ldGhvZHMucHVzaCgic2V0SW1tZWRpYXRlIik7CisgICAgfQorCisgICAgaWYgKHR5cGVvZiBn
bG9iYWwuY2xlYXJJbW1lZGlhdGUgIT09ICJ1bmRlZmluZWQiKSB7CisgICAgICAgIG1ldGhvZHMu
cHVzaCgiY2xlYXJJbW1lZGlhdGUiKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiByZXN0b3JlKCkg
eworICAgICAgICB2YXIgbWV0aG9kOworCisgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gdGhp
cy5tZXRob2RzLmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAgICAgICAgbWV0aG9kID0gdGhp
cy5tZXRob2RzW2ldOworCisgICAgICAgICAgICBpZiAoZ2xvYmFsW21ldGhvZF0uaGFkT3duUHJv
cGVydHkpIHsKKyAgICAgICAgICAgICAgICBnbG9iYWxbbWV0aG9kXSA9IHRoaXNbIl8iICsgbWV0
aG9kXTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgICAgICAgICAgZGVsZXRlIGdsb2JhbFttZXRob2RdOworICAgICAgICAgICAgICAgIH0g
Y2F0Y2ggKGUpIHt9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBQcmV2
ZW50IG11bHRpcGxlIGV4ZWN1dGlvbnMgd2hpY2ggd2lsbCBjb21wbGV0ZWx5IHJlbW92ZSB0aGVz
ZSBwcm9wcworICAgICAgICB0aGlzLm1ldGhvZHMgPSBbXTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBzdHViR2xvYmFsKG1ldGhvZCwgY2xvY2spIHsKKyAgICAgICAgY2xvY2tbbWV0aG9kXS5oYWRP
d25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChnbG9iYWws
IG1ldGhvZCk7CisgICAgICAgIGNsb2NrWyJfIiArIG1ldGhvZF0gPSBnbG9iYWxbbWV0aG9kXTsK
KworICAgICAgICBpZiAobWV0aG9kID09ICJEYXRlIikgeworICAgICAgICAgICAgdmFyIGRhdGUg
PSBtaXJyb3JEYXRlUHJvcGVydGllcyhjbG9ja1ttZXRob2RdLCBnbG9iYWxbbWV0aG9kXSk7Cisg
ICAgICAgICAgICBnbG9iYWxbbWV0aG9kXSA9IGRhdGU7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBnbG9iYWxbbWV0aG9kXSA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gY2xvY2tbbWV0aG9kXS5hcHBseShjbG9jaywgYXJndW1lbnRzKTsKKyAgICAgICAgICAg
IH07CisKKyAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gY2xvY2tbbWV0aG9kXSkgeworICAg
ICAgICAgICAgICAgIGlmIChjbG9ja1ttZXRob2RdLmhhc093blByb3BlcnR5KHByb3ApKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGdsb2JhbFttZXRob2RdW3Byb3BdID0gY2xvY2tbbWV0aG9kXVtw
cm9wXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBnbG9iYWxbbWV0aG9kXS5jbG9jayA9IGNsb2NrOworICAgIH0KKworICAgIHNpbm9uLnVz
ZUZha2VUaW1lcnMgPSBmdW5jdGlvbiB1c2VGYWtlVGltZXJzKG5vdykgeworICAgICAgICB2YXIg
Y2xvY2sgPSBzaW5vbi5jbG9jay5jcmVhdGUobm93KTsKKyAgICAgICAgY2xvY2sucmVzdG9yZSA9
IHJlc3RvcmU7CisgICAgICAgIGNsb2NrLm1ldGhvZHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2Uu
Y2FsbChhcmd1bWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0eXBlb2Ygbm93ID09ICJudW1iZXIiID8gMSA6IDApOworCisgICAgICAgIGlm
IChjbG9jay5tZXRob2RzLmxlbmd0aCA9PT0gMCkgeworICAgICAgICAgICAgY2xvY2subWV0aG9k
cyA9IG1ldGhvZHM7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNs
b2NrLm1ldGhvZHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgICAgICAgICBzdHViR2xvYmFs
KGNsb2NrLm1ldGhvZHNbaV0sIGNsb2NrKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBj
bG9jazsKKyAgICB9OworfSh0eXBlb2YgZ2xvYmFsICE9ICJ1bmRlZmluZWQiICYmIHR5cGVvZiBn
bG9iYWwgIT09ICJmdW5jdGlvbiIgPyBnbG9iYWwgOiB0aGlzKSk7CisKK3Npbm9uLnRpbWVycyA9
IHsKKyAgICBzZXRUaW1lb3V0OiBzZXRUaW1lb3V0LAorICAgIGNsZWFyVGltZW91dDogY2xlYXJU
aW1lb3V0LAorICAgIHNldEltbWVkaWF0ZTogKHR5cGVvZiBzZXRJbW1lZGlhdGUgIT09ICJ1bmRl
ZmluZWQiID8gc2V0SW1tZWRpYXRlIDogdW5kZWZpbmVkKSwKKyAgICBjbGVhckltbWVkaWF0ZTog
KHR5cGVvZiBjbGVhckltbWVkaWF0ZSAhPT0gInVuZGVmaW5lZCIgPyBjbGVhckltbWVkaWF0ZTog
dW5kZWZpbmVkKSwKKyAgICBzZXRJbnRlcnZhbDogc2V0SW50ZXJ2YWwsCisgICAgY2xlYXJJbnRl
cnZhbDogY2xlYXJJbnRlcnZhbCwKKyAgICBEYXRlOiBEYXRlCit9OworCitpZiAodHlwZW9mIG1v
ZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKKyAgICBtb2R1bGUuZXhw
b3J0cyA9IHNpbm9uOworfQorCit9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gInVuZGVm
aW5lZCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gInVuZGVmaW5lZCIgPyBzZWxmIDogdHlw
ZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgPyB3aW5kb3cgOiB7fSkKK30se31dLDM2OltmdW5j
dGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyhmdW5jdGlvbiAoZ2xvYmFsKXsKKygodHlw
ZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmUuYW1kICYmIGZ1bmN0aW9uIChtKSB7
CisgICAgZGVmaW5lKCJmb3JtYXRpbyIsIFsic2Ftc2FtIl0sIG0pOworfSkgfHwgKHR5cGVvZiBt
b2R1bGUgPT09ICJvYmplY3QiICYmIGZ1bmN0aW9uIChtKSB7CisgICAgbW9kdWxlLmV4cG9ydHMg
PSBtKHJlcXVpcmUoInNhbXNhbSIpKTsKK30pIHx8IGZ1bmN0aW9uIChtKSB7IHRoaXMuZm9ybWF0
aW8gPSBtKHRoaXMuc2Ftc2FtKTsgfQorKShmdW5jdGlvbiAoc2Ftc2FtKSB7CisgICAgInVzZSBz
dHJpY3QiOworCisgICAgdmFyIGZvcm1hdGlvID0geworICAgICAgICBleGNsdWRlQ29uc3RydWN0
b3JzOiBbIk9iamVjdCIsIC9eLiQvXSwKKyAgICAgICAgcXVvdGVTdHJpbmdzOiB0cnVlCisgICAg
fTsKKworICAgIHZhciBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5Owor
CisgICAgdmFyIHNwZWNpYWxPYmplY3RzID0gW107CisgICAgaWYgKHR5cGVvZiBnbG9iYWwgIT09
ICJ1bmRlZmluZWQiKSB7CisgICAgICAgIHNwZWNpYWxPYmplY3RzLnB1c2goeyBvYmplY3Q6IGds
b2JhbCwgdmFsdWU6ICJbb2JqZWN0IGdsb2JhbF0iIH0pOworICAgIH0KKyAgICBpZiAodHlwZW9m
IGRvY3VtZW50ICE9PSAidW5kZWZpbmVkIikgeworICAgICAgICBzcGVjaWFsT2JqZWN0cy5wdXNo
KHsKKyAgICAgICAgICAgIG9iamVjdDogZG9jdW1lbnQsCisgICAgICAgICAgICB2YWx1ZTogIltv
YmplY3QgSFRNTERvY3VtZW50XSIKKyAgICAgICAgfSk7CisgICAgfQorICAgIGlmICh0eXBlb2Yg
d2luZG93ICE9PSAidW5kZWZpbmVkIikgeworICAgICAgICBzcGVjaWFsT2JqZWN0cy5wdXNoKHsg
b2JqZWN0OiB3aW5kb3csIHZhbHVlOiAiW29iamVjdCBXaW5kb3ddIiB9KTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBmdW5jdGlvbk5hbWUoZnVuYykgeworICAgICAgICBpZiAoIWZ1bmMpIHsgcmV0
dXJuICIiOyB9CisgICAgICAgIGlmIChmdW5jLmRpc3BsYXlOYW1lKSB7IHJldHVybiBmdW5jLmRp
c3BsYXlOYW1lOyB9CisgICAgICAgIGlmIChmdW5jLm5hbWUpIHsgcmV0dXJuIGZ1bmMubmFtZTsg
fQorICAgICAgICB2YXIgbWF0Y2hlcyA9IGZ1bmMudG9TdHJpbmcoKS5tYXRjaCgvZnVuY3Rpb25c
cysoW15cKF0rKS9tKTsKKyAgICAgICAgcmV0dXJuIChtYXRjaGVzICYmIG1hdGNoZXNbMV0pIHx8
ICIiOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNvbnN0cnVjdG9yTmFtZShmLCBvYmplY3QpIHsK
KyAgICAgICAgdmFyIG5hbWUgPSBmdW5jdGlvbk5hbWUob2JqZWN0ICYmIG9iamVjdC5jb25zdHJ1
Y3Rvcik7CisgICAgICAgIHZhciBleGNsdWRlcyA9IGYuZXhjbHVkZUNvbnN0cnVjdG9ycyB8fAor
ICAgICAgICAgICAgICAgIGZvcm1hdGlvLmV4Y2x1ZGVDb25zdHJ1Y3RvcnMgfHwgW107CisKKyAg
ICAgICAgdmFyIGksIGw7CisgICAgICAgIGZvciAoaSA9IDAsIGwgPSBleGNsdWRlcy5sZW5ndGg7
IGkgPCBsOyArK2kpIHsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgZXhjbHVkZXNbaV0gPT09ICJz
dHJpbmciICYmIGV4Y2x1ZGVzW2ldID09PSBuYW1lKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICAgICAgfSBlbHNlIGlmIChleGNsdWRlc1tpXS50ZXN0ICYmIGV4Y2x1ZGVz
W2ldLnRlc3QobmFtZSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmFtZTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBpc0NpcmN1bGFyKG9iamVjdCwgb2JqZWN0cykgeworICAgICAgICBpZiAodHlwZW9mIG9i
amVjdCAhPT0gIm9iamVjdCIpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZhciBpLCBsOwor
ICAgICAgICBmb3IgKGkgPSAwLCBsID0gb2JqZWN0cy5sZW5ndGg7IGkgPCBsOyArK2kpIHsKKyAg
ICAgICAgICAgIGlmIChvYmplY3RzW2ldID09PSBvYmplY3QpIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZnVuY3Rpb24gYXNj
aWkoZiwgb2JqZWN0LCBwcm9jZXNzZWQsIGluZGVudCkgeworICAgICAgICBpZiAodHlwZW9mIG9i
amVjdCA9PT0gInN0cmluZyIpIHsKKyAgICAgICAgICAgIHZhciBxcyA9IGYucXVvdGVTdHJpbmdz
OworICAgICAgICAgICAgdmFyIHF1b3RlID0gdHlwZW9mIHFzICE9PSAiYm9vbGVhbiIgfHwgcXM7
CisgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc2VkIHx8IHF1b3RlID8gJyInICsgb2JqZWN0ICsg
JyInIDogb2JqZWN0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHR5cGVvZiBvYmplY3QgPT09
ICJmdW5jdGlvbiIgJiYgIShvYmplY3QgaW5zdGFuY2VvZiBSZWdFeHApKSB7CisgICAgICAgICAg
ICByZXR1cm4gYXNjaWkuZnVuYyhvYmplY3QpOworICAgICAgICB9CisKKyAgICAgICAgcHJvY2Vz
c2VkID0gcHJvY2Vzc2VkIHx8IFtdOworCisgICAgICAgIGlmIChpc0NpcmN1bGFyKG9iamVjdCwg
cHJvY2Vzc2VkKSkgeyByZXR1cm4gIltDaXJjdWxhcl0iOyB9CisKKyAgICAgICAgaWYgKE9iamVj
dC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpID09PSAiW29iamVjdCBBcnJheV0iKSB7
CisgICAgICAgICAgICByZXR1cm4gYXNjaWkuYXJyYXkuY2FsbChmLCBvYmplY3QsIHByb2Nlc3Nl
ZCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW9iamVjdCkgeyByZXR1cm4gU3RyaW5nKCgx
L29iamVjdCkgPT09IC1JbmZpbml0eSA/ICItMCIgOiBvYmplY3QpOyB9CisgICAgICAgIGlmIChz
YW1zYW0uaXNFbGVtZW50KG9iamVjdCkpIHsgcmV0dXJuIGFzY2lpLmVsZW1lbnQob2JqZWN0KTsg
fQorCisgICAgICAgIGlmICh0eXBlb2Ygb2JqZWN0LnRvU3RyaW5nID09PSAiZnVuY3Rpb24iICYm
CisgICAgICAgICAgICAgICAgb2JqZWN0LnRvU3RyaW5nICE9PSBPYmplY3QucHJvdG90eXBlLnRv
U3RyaW5nKSB7CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0LnRvU3RyaW5nKCk7CisgICAgICAg
IH0KKworICAgICAgICB2YXIgaSwgbDsKKyAgICAgICAgZm9yIChpID0gMCwgbCA9IHNwZWNpYWxP
YmplY3RzLmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAgICAgICAgaWYgKG9iamVjdCA9PT0g
c3BlY2lhbE9iamVjdHNbaV0ub2JqZWN0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNwZWNp
YWxPYmplY3RzW2ldLnZhbHVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIGFzY2lpLm9iamVjdC5jYWxsKGYsIG9iamVjdCwgcHJvY2Vzc2VkLCBpbmRlbnQpOwor
ICAgIH0KKworICAgIGFzY2lpLmZ1bmMgPSBmdW5jdGlvbiAoZnVuYykgeworICAgICAgICByZXR1
cm4gImZ1bmN0aW9uICIgKyBmdW5jdGlvbk5hbWUoZnVuYykgKyAiKCkge30iOworICAgIH07CisK
KyAgICBhc2NpaS5hcnJheSA9IGZ1bmN0aW9uIChhcnJheSwgcHJvY2Vzc2VkKSB7CisgICAgICAg
IHByb2Nlc3NlZCA9IHByb2Nlc3NlZCB8fCBbXTsKKyAgICAgICAgcHJvY2Vzc2VkLnB1c2goYXJy
YXkpOworICAgICAgICB2YXIgaSwgbCwgcGllY2VzID0gW107CisgICAgICAgIGZvciAoaSA9IDAs
IGwgPSBhcnJheS5sZW5ndGg7IGkgPCBsOyArK2kpIHsKKyAgICAgICAgICAgIHBpZWNlcy5wdXNo
KGFzY2lpKHRoaXMsIGFycmF5W2ldLCBwcm9jZXNzZWQpKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gIlsiICsgcGllY2VzLmpvaW4oIiwgIikgKyAiXSI7CisgICAgfTsKKworICAgIGFzY2lp
Lm9iamVjdCA9IGZ1bmN0aW9uIChvYmplY3QsIHByb2Nlc3NlZCwgaW5kZW50KSB7CisgICAgICAg
IHByb2Nlc3NlZCA9IHByb2Nlc3NlZCB8fCBbXTsKKyAgICAgICAgcHJvY2Vzc2VkLnB1c2gob2Jq
ZWN0KTsKKyAgICAgICAgaW5kZW50ID0gaW5kZW50IHx8IDA7CisgICAgICAgIHZhciBwaWVjZXMg
PSBbXSwgcHJvcGVydGllcyA9IHNhbXNhbS5rZXlzKG9iamVjdCkuc29ydCgpOworICAgICAgICB2
YXIgbGVuZ3RoID0gMzsKKyAgICAgICAgdmFyIHByb3AsIHN0ciwgb2JqLCBpLCBsOworCisgICAg
ICAgIGZvciAoaSA9IDAsIGwgPSBwcm9wZXJ0aWVzLmxlbmd0aDsgaSA8IGw7ICsraSkgeworICAg
ICAgICAgICAgcHJvcCA9IHByb3BlcnRpZXNbaV07CisgICAgICAgICAgICBvYmogPSBvYmplY3Rb
cHJvcF07CisKKyAgICAgICAgICAgIGlmIChpc0NpcmN1bGFyKG9iaiwgcHJvY2Vzc2VkKSkgewor
ICAgICAgICAgICAgICAgIHN0ciA9ICJbQ2lyY3VsYXJdIjsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgc3RyID0gYXNjaWkodGhpcywgb2JqLCBwcm9jZXNzZWQsIGluZGVu
dCArIDIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzdHIgPSAoL1xzLy50ZXN0KHBy
b3ApID8gJyInICsgcHJvcCArICciJyA6IHByb3ApICsgIjogIiArIHN0cjsKKyAgICAgICAgICAg
IGxlbmd0aCArPSBzdHIubGVuZ3RoOworICAgICAgICAgICAgcGllY2VzLnB1c2goc3RyKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZhciBjb25zID0gY29uc3RydWN0b3JOYW1lKHRoaXMsIG9iamVj
dCk7CisgICAgICAgIHZhciBwcmVmaXggPSBjb25zID8gIlsiICsgY29ucyArICJdICIgOiAiIjsK
KyAgICAgICAgdmFyIGlzID0gIiI7CisgICAgICAgIGZvciAoaSA9IDAsIGwgPSBpbmRlbnQ7IGkg
PCBsOyArK2kpIHsgaXMgKz0gIiAiOyB9CisKKyAgICAgICAgaWYgKGxlbmd0aCArIGluZGVudCA+
IDgwKSB7CisgICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgIntcbiAgIiArIGlzICsgcGllY2Vz
LmpvaW4oIixcbiAgIiArIGlzKSArICJcbiIgKworICAgICAgICAgICAgICAgIGlzICsgIn0iOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBwcmVmaXggKyAieyAiICsgcGllY2VzLmpvaW4oIiwg
IikgKyAiIH0iOworICAgIH07CisKKyAgICBhc2NpaS5lbGVtZW50ID0gZnVuY3Rpb24gKGVsZW1l
bnQpIHsKKyAgICAgICAgdmFyIHRhZ05hbWUgPSBlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2Uo
KTsKKyAgICAgICAgdmFyIGF0dHJzID0gZWxlbWVudC5hdHRyaWJ1dGVzLCBhdHRyLCBwYWlycyA9
IFtdLCBhdHRyTmFtZSwgaSwgbCwgdmFsOworCisgICAgICAgIGZvciAoaSA9IDAsIGwgPSBhdHRy
cy5sZW5ndGg7IGkgPCBsOyArK2kpIHsKKyAgICAgICAgICAgIGF0dHIgPSBhdHRycy5pdGVtKGkp
OworICAgICAgICAgICAgYXR0ck5hbWUgPSBhdHRyLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkucmVw
bGFjZSgiaHRtbDoiLCAiIik7CisgICAgICAgICAgICB2YWwgPSBhdHRyLm5vZGVWYWx1ZTsKKyAg
ICAgICAgICAgIGlmIChhdHRyTmFtZSAhPT0gImNvbnRlbnRlZGl0YWJsZSIgfHwgdmFsICE9PSAi
aW5oZXJpdCIpIHsKKyAgICAgICAgICAgICAgICBpZiAoISF2YWwpIHsgcGFpcnMucHVzaChhdHRy
TmFtZSArICI9XCIiICsgdmFsICsgIlwiIik7IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIHZhciBmb3JtYXR0ZWQgPSAiPCIgKyB0YWdOYW1lICsgKHBhaXJzLmxlbmd0aCA+
IDAgPyAiICIgOiAiIik7CisgICAgICAgIHZhciBjb250ZW50ID0gZWxlbWVudC5pbm5lckhUTUw7
CisKKyAgICAgICAgaWYgKGNvbnRlbnQubGVuZ3RoID4gMjApIHsKKyAgICAgICAgICAgIGNvbnRl
bnQgPSBjb250ZW50LnN1YnN0cigwLCAyMCkgKyAiWy4uLl0iOworICAgICAgICB9CisKKyAgICAg
ICAgdmFyIHJlcyA9IGZvcm1hdHRlZCArIHBhaXJzLmpvaW4oIiAiKSArICI+IiArIGNvbnRlbnQg
KworICAgICAgICAgICAgICAgICI8LyIgKyB0YWdOYW1lICsgIj4iOworCisgICAgICAgIHJldHVy
biByZXMucmVwbGFjZSgvIGNvbnRlbnRFZGl0YWJsZT0iaW5oZXJpdCIvLCAiIik7CisgICAgfTsK
KworICAgIGZ1bmN0aW9uIEZvcm1hdGlvKG9wdGlvbnMpIHsKKyAgICAgICAgZm9yICh2YXIgb3B0
IGluIG9wdGlvbnMpIHsKKyAgICAgICAgICAgIHRoaXNbb3B0XSA9IG9wdGlvbnNbb3B0XTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIEZvcm1hdGlvLnByb3RvdHlwZSA9IHsKKyAgICAgICAgZnVu
Y3Rpb25OYW1lOiBmdW5jdGlvbk5hbWUsCisKKyAgICAgICAgY29uZmlndXJlOiBmdW5jdGlvbiAo
b3B0aW9ucykgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JtYXRpbyhvcHRpb25zKTsKKyAg
ICAgICAgfSwKKworICAgICAgICBjb25zdHJ1Y3Rvck5hbWU6IGZ1bmN0aW9uIChvYmplY3QpIHsK
KyAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3Rvck5hbWUodGhpcywgb2JqZWN0KTsKKyAgICAg
ICAgfSwKKworICAgICAgICBhc2NpaTogZnVuY3Rpb24gKG9iamVjdCwgcHJvY2Vzc2VkLCBpbmRl
bnQpIHsKKyAgICAgICAgICAgIHJldHVybiBhc2NpaSh0aGlzLCBvYmplY3QsIHByb2Nlc3NlZCwg
aW5kZW50KTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICByZXR1cm4gRm9ybWF0aW8ucHJvdG90
eXBlOworfSk7CisKK30pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSAidW5kZWZpbmVkIiA/
IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSAidW5kZWZpbmVkIiA/IHNlbGYgOiB0eXBlb2Ygd2lu
ZG93ICE9PSAidW5kZWZpbmVkIiA/IHdpbmRvdyA6IHt9KQorfSx7InNhbXNhbSI6Mzd9XSwzNzpb
ZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisoKHR5cGVvZiBkZWZpbmUgPT09ICJm
dW5jdGlvbiIgJiYgZGVmaW5lLmFtZCAmJiBmdW5jdGlvbiAobSkgeyBkZWZpbmUoInNhbXNhbSIs
IG0pOyB9KSB8fAorICh0eXBlb2YgbW9kdWxlID09PSAib2JqZWN0IiAmJgorICAgICAgZnVuY3Rp
b24gKG0pIHsgbW9kdWxlLmV4cG9ydHMgPSBtKCk7IH0pIHx8IC8vIE5vZGUKKyBmdW5jdGlvbiAo
bSkgeyB0aGlzLnNhbXNhbSA9IG0oKTsgfSAvLyBCcm93c2VyIGdsb2JhbHMKKykoZnVuY3Rpb24g
KCkgeworICAgIHZhciBvID0gT2JqZWN0LnByb3RvdHlwZTsKKyAgICB2YXIgZGl2ID0gdHlwZW9m
IGRvY3VtZW50ICE9PSAidW5kZWZpbmVkIiAmJiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKworICAgIGZ1bmN0aW9uIGlzTmFOKHZhbHVlKSB7CisgICAgICAgIC8vIFVubGlrZSBnbG9i
YWwgaXNOYU4sIHRoaXMgYXZvaWRzIHR5cGUgY29lcmNpb24KKyAgICAgICAgLy8gdHlwZW9mIGNo
ZWNrIGF2b2lkcyBJRSBob3N0IG9iamVjdCBpc3N1ZXMsIGhhdCB0aXAgdG8KKyAgICAgICAgLy8g
bG9kYXNoCisgICAgICAgIHZhciB2YWwgPSB2YWx1ZTsgLy8gSnNMaW50IHRoaW5rcyB2YWx1ZSAh
PT0gdmFsdWUgaXMgIndlaXJkIgorICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAibnVt
YmVyIiAmJiB2YWx1ZSAhPT0gdmFsOworICAgIH0KKworICAgIGZ1bmN0aW9uIGdldENsYXNzKHZh
bHVlKSB7CisgICAgICAgIC8vIFJldHVybnMgdGhlIGludGVybmFsIFtbQ2xhc3NdXSBieSBjYWxs
aW5nIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcKKyAgICAgICAgLy8gd2l0aCB0aGUgcHJvdmlk
ZWQgdmFsdWUgYXMgdGhpcy4gUmV0dXJuIHZhbHVlIGlzIGEgc3RyaW5nLCBuYW1pbmcgdGhlCisg
ICAgICAgIC8vIGludGVybmFsIGNsYXNzLCBlLmcuICJBcnJheSIKKyAgICAgICAgcmV0dXJuIG8u
dG9TdHJpbmcuY2FsbCh2YWx1ZSkuc3BsaXQoL1sgXF1dLylbMV07CisgICAgfQorCisgICAgLyoq
CisgICAgICogQG5hbWUgc2Ftc2FtLmlzQXJndW1lbnRzCisgICAgICogQHBhcmFtIE9iamVjdCBv
YmplY3QKKyAgICAgKgorICAgICAqIFJldHVybnMgYGB0cnVlYGAgaWYgYGBvYmplY3RgYCBpcyBh
biBgYGFyZ3VtZW50c2BgIG9iamVjdCwKKyAgICAgKiBgYGZhbHNlYGAgb3RoZXJ3aXNlLgorICAg
ICAqLworICAgIGZ1bmN0aW9uIGlzQXJndW1lbnRzKG9iamVjdCkgeworICAgICAgICBpZiAoZ2V0
Q2xhc3Mob2JqZWN0KSA9PT0gJ0FyZ3VtZW50cycpIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAg
aWYgKHR5cGVvZiBvYmplY3QgIT09ICJvYmplY3QiIHx8IHR5cGVvZiBvYmplY3QubGVuZ3RoICE9
PSAibnVtYmVyIiB8fAorICAgICAgICAgICAgICAgIGdldENsYXNzKG9iamVjdCkgPT09ICJBcnJh
eSIpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
dHlwZW9mIG9iamVjdC5jYWxsZWUgPT0gImZ1bmN0aW9uIikgeyByZXR1cm4gdHJ1ZTsgfQorICAg
ICAgICB0cnkgeworICAgICAgICAgICAgb2JqZWN0W29iamVjdC5sZW5ndGhdID0gNjsKKyAgICAg
ICAgICAgIGRlbGV0ZSBvYmplY3Rbb2JqZWN0Lmxlbmd0aF07CisgICAgICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAbmFtZSBzYW1zYW0uaXNFbGVtZW50Cisg
ICAgICogQHBhcmFtIE9iamVjdCBvYmplY3QKKyAgICAgKgorICAgICAqIFJldHVybnMgYGB0cnVl
YGAgaWYgYGBvYmplY3RgYCBpcyBhIERPTSBlbGVtZW50IG5vZGUuIFVubGlrZQorICAgICAqIFVu
ZGVyc2NvcmUuanMvbG9kYXNoLCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGBgZmFsc2VgYCBp
ZiBgYG9iamVjdGBgCisgICAgICogaXMgYW4gKmVsZW1lbnQtbGlrZSogb2JqZWN0LCBpLmUuIGEg
cmVndWxhciBvYmplY3Qgd2l0aCBhIGBgbm9kZVR5cGVgYAorICAgICAqIHByb3BlcnR5IHRoYXQg
aG9sZHMgdGhlIHZhbHVlIGBgMWBgLgorICAgICAqLworICAgIGZ1bmN0aW9uIGlzRWxlbWVudChv
YmplY3QpIHsKKyAgICAgICAgaWYgKCFvYmplY3QgfHwgb2JqZWN0Lm5vZGVUeXBlICE9PSAxIHx8
ICFkaXYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBvYmpl
Y3QuYXBwZW5kQ2hpbGQoZGl2KTsKKyAgICAgICAgICAgIG9iamVjdC5yZW1vdmVDaGlsZChkaXYp
OworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQG5h
bWUgc2Ftc2FtLmtleXMKKyAgICAgKiBAcGFyYW0gT2JqZWN0IG9iamVjdAorICAgICAqCisgICAg
ICogUmV0dXJuIGFuIGFycmF5IG9mIG93biBwcm9wZXJ0eSBuYW1lcy4KKyAgICAgKi8KKyAgICBm
dW5jdGlvbiBrZXlzKG9iamVjdCkgeworICAgICAgICB2YXIga3MgPSBbXSwgcHJvcDsKKyAgICAg
ICAgZm9yIChwcm9wIGluIG9iamVjdCkgeworICAgICAgICAgICAgaWYgKG8uaGFzT3duUHJvcGVy
dHkuY2FsbChvYmplY3QsIHByb3ApKSB7IGtzLnB1c2gocHJvcCk7IH0KKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4ga3M7CisgICAgfQorCisgICAgLyoqCisgICAgICogQG5hbWUgc2Ftc2FtLmlz
RGF0ZQorICAgICAqIEBwYXJhbSBPYmplY3QgdmFsdWUKKyAgICAgKgorICAgICAqIFJldHVybnMg
dHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgYGBEYXRlYGAsIG9yICpkYXRlLWxpa2UqLiBEdWNrIHR5
cGluZworICAgICAqIG9mIGRhdGUgb2JqZWN0cyB3b3JrIGJ5IGNoZWNraW5nIHRoYXQgdGhlIG9i
amVjdCBoYXMgYSBgYGdldFRpbWVgYAorICAgICAqIGZ1bmN0aW9uIHdob3NlIHJldHVybiB2YWx1
ZSBlcXVhbHMgdGhlIHJldHVybiB2YWx1ZSBmcm9tIHRoZSBvYmplY3QncworICAgICAqIGBgdmFs
dWVPZmBgLgorICAgICAqLworICAgIGZ1bmN0aW9uIGlzRGF0ZSh2YWx1ZSkgeworICAgICAgICBy
ZXR1cm4gdHlwZW9mIHZhbHVlLmdldFRpbWUgPT0gImZ1bmN0aW9uIiAmJgorICAgICAgICAgICAg
dmFsdWUuZ2V0VGltZSgpID09IHZhbHVlLnZhbHVlT2YoKTsKKyAgICB9CisKKyAgICAvKioKKyAg
ICAgKiBAbmFtZSBzYW1zYW0uaXNOZWdaZXJvCisgICAgICogQHBhcmFtIE9iamVjdCB2YWx1ZQor
ICAgICAqCisgICAgICogUmV0dXJucyBgYHRydWVgYCBpZiBgYHZhbHVlYGAgaXMgYGAtMGBgLgor
ICAgICAqLworICAgIGZ1bmN0aW9uIGlzTmVnWmVybyh2YWx1ZSkgeworICAgICAgICByZXR1cm4g
dmFsdWUgPT09IDAgJiYgMSAvIHZhbHVlID09PSAtSW5maW5pdHk7CisgICAgfQorCisgICAgLyoq
CisgICAgICogQG5hbWUgc2Ftc2FtLmVxdWFsCisgICAgICogQHBhcmFtIE9iamVjdCBvYmoxCisg
ICAgICogQHBhcmFtIE9iamVjdCBvYmoyCisgICAgICoKKyAgICAgKiBSZXR1cm5zIGBgdHJ1ZWBg
IGlmIHR3byBvYmplY3RzIGFyZSBzdHJpY3RseSBlcXVhbC4gQ29tcGFyZWQgdG8KKyAgICAgKiBg
YD09PWBgIHRoZXJlIGFyZSB0d28gZXhjZXB0aW9uczoKKyAgICAgKgorICAgICAqICAgLSBOYU4g
aXMgY29uc2lkZXJlZCBlcXVhbCB0byBOYU4KKyAgICAgKiAgIC0gLTAgYW5kICswIGFyZSBub3Qg
Y29uc2lkZXJlZCBlcXVhbAorICAgICAqLworICAgIGZ1bmN0aW9uIGlkZW50aWNhbChvYmoxLCBv
YmoyKSB7CisgICAgICAgIGlmIChvYmoxID09PSBvYmoyIHx8IChpc05hTihvYmoxKSAmJiBpc05h
TihvYmoyKSkpIHsKKyAgICAgICAgICAgIHJldHVybiBvYmoxICE9PSAwIHx8IGlzTmVnWmVybyhv
YmoxKSA9PT0gaXNOZWdaZXJvKG9iajIpOworICAgICAgICB9CisgICAgfQorCisKKyAgICAvKioK
KyAgICAgKiBAbmFtZSBzYW1zYW0uZGVlcEVxdWFsCisgICAgICogQHBhcmFtIE9iamVjdCBvYmox
CisgICAgICogQHBhcmFtIE9iamVjdCBvYmoyCisgICAgICoKKyAgICAgKiBEZWVwIGVxdWFsIGNv
bXBhcmlzb24uIFR3byB2YWx1ZXMgYXJlICJkZWVwIGVxdWFsIiBpZjoKKyAgICAgKgorICAgICAq
ICAgLSBUaGV5IGFyZSBlcXVhbCwgYWNjb3JkaW5nIHRvIHNhbXNhbS5pZGVudGljYWwKKyAgICAg
KiAgIC0gVGhleSBhcmUgYm90aCBkYXRlIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSBzYW1lIHRp
bWUKKyAgICAgKiAgIC0gVGhleSBhcmUgYm90aCBhcnJheXMgY29udGFpbmluZyBlbGVtZW50cyB0
aGF0IGFyZSBhbGwgZGVlcEVxdWFsCisgICAgICogICAtIFRoZXkgYXJlIG9iamVjdHMgd2l0aCB0
aGUgc2FtZSBzZXQgb2YgcHJvcGVydGllcywgYW5kIGVhY2ggcHJvcGVydHkKKyAgICAgKiAgICAg
aW4gYGBvYmoxYGAgaXMgZGVlcEVxdWFsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IGlu
IGBgb2JqMmBgCisgICAgICoKKyAgICAgKiBTdXBwb3J0cyBjeWNsaWMgb2JqZWN0cy4KKyAgICAg
Ki8KKyAgICBmdW5jdGlvbiBkZWVwRXF1YWxDeWNsaWMob2JqMSwgb2JqMikgeworCisgICAgICAg
IC8vIHVzZWQgZm9yIGN5Y2xpYyBjb21wYXJpc29uCisgICAgICAgIC8vIGNvbnRhaW4gYWxyZWFk
eSB2aXNpdGVkIG9iamVjdHMKKyAgICAgICAgdmFyIG9iamVjdHMxID0gW10sCisgICAgICAgICAg
ICBvYmplY3RzMiA9IFtdLAorICAgICAgICAvLyBjb250YWluIHBhdGhlcyAocG9zaXRpb24gaW4g
dGhlIG9iamVjdCBzdHJ1Y3R1cmUpCisgICAgICAgIC8vIG9mIHRoZSBhbHJlYWR5IHZpc2l0ZWQg
b2JqZWN0cworICAgICAgICAvLyBpbmRleGVzIHNhbWUgYXMgaW4gb2JqZWN0cyBhcnJheXMKKyAg
ICAgICAgICAgIHBhdGhzMSA9IFtdLAorICAgICAgICAgICAgcGF0aHMyID0gW10sCisgICAgICAg
IC8vIGNvbnRhaW5zIGNvbWJpbmF0aW9ucyBvZiBhbHJlYWR5IGNvbXBhcmVkIG9iamVjdHMKKyAg
ICAgICAgLy8gaW4gdGhlIG1hbm5lcjogeyAiJDFbJ3JlZiddJDJbJ3JlZiddIjogdHJ1ZSB9Cisg
ICAgICAgICAgICBjb21wYXJlZCA9IHt9OworCisgICAgICAgIC8qKgorICAgICAgICAgKiB1c2Vk
IHRvIGNoZWNrLCBpZiB0aGUgdmFsdWUgb2YgYSBwcm9wZXJ0eSBpcyBhbiBvYmplY3QKKyAgICAg
ICAgICogKGN5Y2xpYyBsb2dpYyBpcyBvbmx5IG5lZWRlZCBmb3Igb2JqZWN0cykKKyAgICAgICAg
ICogb25seSBuZWVkZWQgZm9yIGN5Y2xpYyBsb2dpYworICAgICAgICAgKi8KKyAgICAgICAgZnVu
Y3Rpb24gaXNPYmplY3QodmFsdWUpIHsKKworICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9
PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYKKyAgICAgICAgICAgICAgICAgICAgISh2
YWx1ZSBpbnN0YW5jZW9mIEJvb2xlYW4pICYmCisgICAgICAgICAgICAgICAgICAgICEodmFsdWUg
aW5zdGFuY2VvZiBEYXRlKSAgICAmJgorICAgICAgICAgICAgICAgICAgICAhKHZhbHVlIGluc3Rh
bmNlb2YgTnVtYmVyKSAgJiYKKyAgICAgICAgICAgICAgICAgICAgISh2YWx1ZSBpbnN0YW5jZW9m
IFJlZ0V4cCkgICYmCisgICAgICAgICAgICAgICAgICAgICEodmFsdWUgaW5zdGFuY2VvZiBTdHJp
bmcpKSB7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAg
ICAgICAqIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBnaXZlbiBvYmplY3QgaW4gdGhlCisgICAg
ICAgICAqIGdpdmVuIG9iamVjdHMgYXJyYXksIC0xIGlmIG5vdCBjb250YWluZWQKKyAgICAgICAg
ICogb25seSBuZWVkZWQgZm9yIGN5Y2xpYyBsb2dpYworICAgICAgICAgKi8KKyAgICAgICAgZnVu
Y3Rpb24gZ2V0SW5kZXgob2JqZWN0cywgb2JqKSB7CisKKyAgICAgICAgICAgIHZhciBpOworICAg
ICAgICAgICAgZm9yIChpID0gMDsgaSA8IG9iamVjdHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
ICAgICAgICBpZiAob2JqZWN0c1tpXSA9PT0gb2JqKSB7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgLy8gZG9lcyB0aGUgcmVjdXJzaW9uIGZv
ciB0aGUgZGVlcCBlcXVhbCBjaGVjaworICAgICAgICByZXR1cm4gKGZ1bmN0aW9uIGRlZXBFcXVh
bChvYmoxLCBvYmoyLCBwYXRoMSwgcGF0aDIpIHsKKyAgICAgICAgICAgIHZhciB0eXBlMSA9IHR5
cGVvZiBvYmoxOworICAgICAgICAgICAgdmFyIHR5cGUyID0gdHlwZW9mIG9iajI7CisKKyAgICAg
ICAgICAgIC8vID09IG51bGwgYWxzbyBtYXRjaGVzIHVuZGVmaW5lZAorICAgICAgICAgICAgaWYg
KG9iajEgPT09IG9iajIgfHwKKyAgICAgICAgICAgICAgICAgICAgaXNOYU4ob2JqMSkgfHwgaXNO
YU4ob2JqMikgfHwKKyAgICAgICAgICAgICAgICAgICAgb2JqMSA9PSBudWxsIHx8IG9iajIgPT0g
bnVsbCB8fAorICAgICAgICAgICAgICAgICAgICB0eXBlMSAhPT0gIm9iamVjdCIgfHwgdHlwZTIg
IT09ICJvYmplY3QiKSB7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gaWRlbnRpY2FsKG9iajEs
IG9iajIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBFbGVtZW50cyBhcmUgb25s
eSBlcXVhbCBpZiBpZGVudGljYWwoZXhwZWN0ZWQsIGFjdHVhbCkKKyAgICAgICAgICAgIGlmIChp
c0VsZW1lbnQob2JqMSkgfHwgaXNFbGVtZW50KG9iajIpKSB7IHJldHVybiBmYWxzZTsgfQorCisg
ICAgICAgICAgICB2YXIgaXNEYXRlMSA9IGlzRGF0ZShvYmoxKSwgaXNEYXRlMiA9IGlzRGF0ZShv
YmoyKTsKKyAgICAgICAgICAgIGlmIChpc0RhdGUxIHx8IGlzRGF0ZTIpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIWlzRGF0ZTEgfHwgIWlzRGF0ZTIgfHwgb2JqMS5nZXRUaW1lKCkgIT09IG9iajIu
Z2V0VGltZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChvYmoxIGluc3RhbmNl
b2YgUmVnRXhwICYmIG9iajIgaW5zdGFuY2VvZiBSZWdFeHApIHsKKyAgICAgICAgICAgICAgICBp
ZiAob2JqMS50b1N0cmluZygpICE9PSBvYmoyLnRvU3RyaW5nKCkpIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBjbGFzczEgPSBnZXRDbGFzcyhvYmox
KTsKKyAgICAgICAgICAgIHZhciBjbGFzczIgPSBnZXRDbGFzcyhvYmoyKTsKKyAgICAgICAgICAg
IHZhciBrZXlzMSA9IGtleXMob2JqMSk7CisgICAgICAgICAgICB2YXIga2V5czIgPSBrZXlzKG9i
ajIpOworCisgICAgICAgICAgICBpZiAoaXNBcmd1bWVudHMob2JqMSkgfHwgaXNBcmd1bWVudHMo
b2JqMikpIHsKKyAgICAgICAgICAgICAgICBpZiAob2JqMS5sZW5ndGggIT09IG9iajIubGVuZ3Ro
KSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZiAodHlwZTEgIT09IHR5cGUyIHx8IGNsYXNzMSAhPT0gY2xhc3MyIHx8CisgICAgICAgICAg
ICAgICAgICAgICAgICBrZXlzMS5sZW5ndGggIT09IGtleXMyLmxlbmd0aCkgeworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIga2V5LCBpLCBsLAorICAgICAgICAgICAgICAgIC8vIGZvbGxv
d2luZyB2YXJzIGFyZSB1c2VkIGZvciB0aGUgY3ljbGljIGxvZ2ljCisgICAgICAgICAgICAgICAg
dmFsdWUxLCB2YWx1ZTIsCisgICAgICAgICAgICAgICAgaXNPYmplY3QxLCBpc09iamVjdDIsCisg
ICAgICAgICAgICAgICAgaW5kZXgxLCBpbmRleDIsCisgICAgICAgICAgICAgICAgbmV3UGF0aDEs
IG5ld1BhdGgyOworCisgICAgICAgICAgICBmb3IgKGkgPSAwLCBsID0ga2V5czEubGVuZ3RoOyBp
IDwgbDsgaSsrKSB7CisgICAgICAgICAgICAgICAga2V5ID0ga2V5czFbaV07CisgICAgICAgICAg
ICAgICAgaWYgKCFvLmhhc093blByb3BlcnR5LmNhbGwob2JqMiwga2V5KSkgeworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgLy8gU3RhcnQgb2YgdGhlIGN5Y2xpYyBsb2dpYworCisgICAgICAgICAgICAgICAgdmFs
dWUxID0gb2JqMVtrZXldOworICAgICAgICAgICAgICAgIHZhbHVlMiA9IG9iajJba2V5XTsKKwor
ICAgICAgICAgICAgICAgIGlzT2JqZWN0MSA9IGlzT2JqZWN0KHZhbHVlMSk7CisgICAgICAgICAg
ICAgICAgaXNPYmplY3QyID0gaXNPYmplY3QodmFsdWUyKTsKKworICAgICAgICAgICAgICAgIC8v
IGRldGVybWluZSwgaWYgdGhlIG9iamVjdHMgd2VyZSBhbHJlYWR5IHZpc2l0ZWQKKyAgICAgICAg
ICAgICAgICAvLyAoaXQncyBmYXN0ZXIgdG8gY2hlY2sgZm9yIGlzT2JqZWN0IGZpcnN0LCB0aGFu
IHRvCisgICAgICAgICAgICAgICAgLy8gZ2V0IC0xIGZyb20gZ2V0SW5kZXggZm9yIG5vbiBvYmpl
Y3RzKQorICAgICAgICAgICAgICAgIGluZGV4MSA9IGlzT2JqZWN0MSA/IGdldEluZGV4KG9iamVj
dHMxLCB2YWx1ZTEpIDogLTE7CisgICAgICAgICAgICAgICAgaW5kZXgyID0gaXNPYmplY3QyID8g
Z2V0SW5kZXgob2JqZWN0czIsIHZhbHVlMikgOiAtMTsKKworICAgICAgICAgICAgICAgIC8vIGRl
dGVybWluZSB0aGUgbmV3IHBhdGhlcyBvZiB0aGUgb2JqZWN0cworICAgICAgICAgICAgICAgIC8v
IC0gZm9yIG5vbiBjeWNsaWMgb2JqZWN0cyB0aGUgY3VycmVudCBwYXRoIHdpbGwgYmUgZXh0ZW5k
ZWQKKyAgICAgICAgICAgICAgICAvLyAgIGJ5IGN1cnJlbnQgcHJvcGVydHkgbmFtZQorICAgICAg
ICAgICAgICAgIC8vIC0gZm9yIGN5Y2xpYyBvYmplY3RzIHRoZSBzdG9yZWQgcGF0aCBpcyB0YWtl
bgorICAgICAgICAgICAgICAgIG5ld1BhdGgxID0gaW5kZXgxICE9PSAtMQorICAgICAgICAgICAg
ICAgICAgICA/IHBhdGhzMVtpbmRleDFdCisgICAgICAgICAgICAgICAgICAgIDogcGF0aDEgKyAn
WycgKyBKU09OLnN0cmluZ2lmeShrZXkpICsgJ10nOworICAgICAgICAgICAgICAgIG5ld1BhdGgy
ID0gaW5kZXgyICE9PSAtMQorICAgICAgICAgICAgICAgICAgICA/IHBhdGhzMltpbmRleDJdCisg
ICAgICAgICAgICAgICAgICAgIDogcGF0aDIgKyAnWycgKyBKU09OLnN0cmluZ2lmeShrZXkpICsg
J10nOworCisgICAgICAgICAgICAgICAgLy8gc3RvcCByZWN1cnNpb24gaWYgY3VycmVudCBvYmpl
Y3RzIGFyZSBhbHJlYWR5IGNvbXBhcmVkCisgICAgICAgICAgICAgICAgaWYgKGNvbXBhcmVkW25l
d1BhdGgxICsgbmV3UGF0aDJdKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIHJlbWVtYmVyIHRoZSBjdXJy
ZW50IG9iamVjdHMgYW5kIHRoZWlyIHBhdGhlcworICAgICAgICAgICAgICAgIGlmIChpbmRleDEg
PT09IC0xICYmIGlzT2JqZWN0MSkgeworICAgICAgICAgICAgICAgICAgICBvYmplY3RzMS5wdXNo
KHZhbHVlMSk7CisgICAgICAgICAgICAgICAgICAgIHBhdGhzMS5wdXNoKG5ld1BhdGgxKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGluZGV4MiA9PT0gLTEgJiYgaXNP
YmplY3QyKSB7CisgICAgICAgICAgICAgICAgICAgIG9iamVjdHMyLnB1c2godmFsdWUyKTsKKyAg
ICAgICAgICAgICAgICAgICAgcGF0aHMyLnB1c2gobmV3UGF0aDIpOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIC8vIHJlbWVtYmVyIHRoYXQgdGhlIGN1cnJlbnQgb2JqZWN0
cyBhcmUgYWxyZWFkeSBjb21wYXJlZAorICAgICAgICAgICAgICAgIGlmIChpc09iamVjdDEgJiYg
aXNPYmplY3QyKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbXBhcmVkW25ld1BhdGgxICsgbmV3
UGF0aDJdID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBF
bmQgb2YgY3ljbGljIGxvZ2ljCisKKyAgICAgICAgICAgICAgICAvLyBuZWl0aGVyIHZhbHVlMSBu
b3IgdmFsdWUyIGlzIGEgY3ljbGUKKyAgICAgICAgICAgICAgICAvLyBjb250aW51ZSB3aXRoIG5l
eHQgbGV2ZWwKKyAgICAgICAgICAgICAgICBpZiAoIWRlZXBFcXVhbCh2YWx1ZTEsIHZhbHVlMiwg
bmV3UGF0aDEsIG5ld1BhdGgyKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgICAgICB9KG9iajEsIG9iajIsICckMScsICckMicpKTsKKyAgICB9CisKKyAg
ICB2YXIgbWF0Y2g7CisKKyAgICBmdW5jdGlvbiBhcnJheUNvbnRhaW5zKGFycmF5LCBzdWJzZXQp
IHsKKyAgICAgICAgaWYgKHN1YnNldC5sZW5ndGggPT09IDApIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICAgICAgdmFyIGksIGwsIGosIGs7CisgICAgICAgIGZvciAoaSA9IDAsIGwgPSBhcnJheS5sZW5n
dGg7IGkgPCBsOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChtYXRjaChhcnJheVtpXSwgc3Vic2V0
WzBdKSkgeworICAgICAgICAgICAgICAgIGZvciAoaiA9IDAsIGsgPSBzdWJzZXQubGVuZ3RoOyBq
IDwgazsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2goYXJyYXlbaSArIGpd
LCBzdWJzZXRbal0pKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogQG5hbWUgc2Ftc2FtLm1h
dGNoCisgICAgICogQHBhcmFtIE9iamVjdCBvYmplY3QKKyAgICAgKiBAcGFyYW0gT2JqZWN0IG1h
dGNoZXIKKyAgICAgKgorICAgICAqIENvbXBhcmUgYXJiaXRyYXJ5IHZhbHVlIGBgb2JqZWN0YGAg
d2l0aCBtYXRjaGVyLgorICAgICAqLworICAgIG1hdGNoID0gZnVuY3Rpb24gbWF0Y2gob2JqZWN0
LCBtYXRjaGVyKSB7CisgICAgICAgIGlmIChtYXRjaGVyICYmIHR5cGVvZiBtYXRjaGVyLnRlc3Qg
PT09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgICAgIHJldHVybiBtYXRjaGVyLnRlc3Qob2JqZWN0
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0eXBlb2YgbWF0Y2hlciA9PT0gImZ1bmN0aW9u
IikgeworICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIob2JqZWN0KSA9PT0gdHJ1ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICh0eXBlb2YgbWF0Y2hlciA9PT0gInN0cmluZyIpIHsKKyAgICAg
ICAgICAgIG1hdGNoZXIgPSBtYXRjaGVyLnRvTG93ZXJDYXNlKCk7CisgICAgICAgICAgICB2YXIg
bm90TnVsbCA9IHR5cGVvZiBvYmplY3QgPT09ICJzdHJpbmciIHx8ICEhb2JqZWN0OworICAgICAg
ICAgICAgcmV0dXJuIG5vdE51bGwgJiYKKyAgICAgICAgICAgICAgICAoU3RyaW5nKG9iamVjdCkp
LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihtYXRjaGVyKSA+PSAwOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHR5cGVvZiBtYXRjaGVyID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgcmV0dXJu
IG1hdGNoZXIgPT09IG9iamVjdDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0eXBlb2YgbWF0
Y2hlciA9PT0gImJvb2xlYW4iKSB7CisgICAgICAgICAgICByZXR1cm4gbWF0Y2hlciA9PT0gb2Jq
ZWN0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGdldENsYXNzKG9iamVjdCkgPT09ICJBcnJh
eSIgJiYgZ2V0Q2xhc3MobWF0Y2hlcikgPT09ICJBcnJheSIpIHsKKyAgICAgICAgICAgIHJldHVy
biBhcnJheUNvbnRhaW5zKG9iamVjdCwgbWF0Y2hlcik7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAobWF0Y2hlciAmJiB0eXBlb2YgbWF0Y2hlciA9PT0gIm9iamVjdCIpIHsKKyAgICAgICAgICAg
IHZhciBwcm9wOworICAgICAgICAgICAgZm9yIChwcm9wIGluIG1hdGNoZXIpIHsKKyAgICAgICAg
ICAgICAgICB2YXIgdmFsdWUgPSBvYmplY3RbcHJvcF07CisgICAgICAgICAgICAgICAgaWYgKHR5
cGVvZiB2YWx1ZSA9PT0gInVuZGVmaW5lZCIgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVvZiBvYmplY3QuZ2V0QXR0cmlidXRlID09PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICAg
ICAgICAgIHZhbHVlID0gb2JqZWN0LmdldEF0dHJpYnV0ZShwcm9wKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gInVuZGVmaW5lZCIgfHwg
IW1hdGNoKHZhbHVlLCBtYXRjaGVyW3Byb3BdKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk1hdGNo
ZXIgd2FzIG5vdCBhIHN0cmluZywgYSBudW1iZXIsIGEgIiArCisgICAgICAgICAgICAgICAgICAg
ICAgICAiZnVuY3Rpb24sIGEgYm9vbGVhbiBvciBhbiBvYmplY3QiKTsKKyAgICB9OworCisgICAg
cmV0dXJuIHsKKyAgICAgICAgaXNBcmd1bWVudHM6IGlzQXJndW1lbnRzLAorICAgICAgICBpc0Vs
ZW1lbnQ6IGlzRWxlbWVudCwKKyAgICAgICAgaXNEYXRlOiBpc0RhdGUsCisgICAgICAgIGlzTmVn
WmVybzogaXNOZWdaZXJvLAorICAgICAgICBpZGVudGljYWw6IGlkZW50aWNhbCwKKyAgICAgICAg
ZGVlcEVxdWFsOiBkZWVwRXF1YWxDeWNsaWMsCisgICAgICAgIG1hdGNoOiBtYXRjaCwKKyAgICAg
ICAga2V5czoga2V5cworICAgIH07Cit9KTsKKworfSx7fV19LHt9LFs2XSk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy8uZ2l0aWdub3Jl
IGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvLmdpdGlnbm9y
ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wYzBhYTA0NGI2NmYwOGVkOGRhMDFhYjI2NzgzOGFjMDJiNzUwYmRjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMt
dGVzdHMvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDIgQEAKKy9ub2RlX21vZHVsZXMvCisvbnBtLWRl
YnVnLmxvZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlz
ZXMtdGVzdHMvLmpzaGludHJjIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlz
ZXMtdGVzdHMvLmpzaGludHJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmMjM5ZTNlMzI3OWYzOGEyZWIzNzhlYjIz
NzRkOGIwZWVhODc2MzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNl
cy10ZXN0cy9wcm9taXNlcy10ZXN0cy8uanNoaW50cmMKQEAgLTAsMCArMSwyNiBAQAoreworICAg
ICJjYW1lbGNhc2UiOiB0cnVlLAorICAgICJjdXJseSI6IHRydWUsCisgICAgImVxZXFlcSI6IHRy
dWUsCisgICAgImdsb2JhbHN0cmljdCI6IHRydWUsCisgICAgImltbWVkIjogdHJ1ZSwKKyAgICAi
aW5kZW50IjogNCwKKyAgICAibWF4bGVuIjogMTIwLAorICAgICJuZXdjYXAiOiB0cnVlLAorICAg
ICJub2FyZyI6IHRydWUsCisgICAgIm5vZGUiOiB0cnVlLAorICAgICJub25ldyI6IHRydWUsCisg
ICAgIm5vbWVuIjogdHJ1ZSwKKyAgICAicXVvdG1hcmsiOiAiZG91YmxlIiwKKyAgICAidHJhaWxp
bmciOiB0cnVlLAorICAgICJ1bmRlZiI6IHRydWUsCisgICAgInVudXNlZCI6IHRydWUsCisgICAg
IndoaXRlIjogdHJ1ZSwKKyAgICAiZ2xvYmFscyI6IHsKKyAgICAgICAgImFmdGVyRWFjaCI6IGZh
bHNlLAorICAgICAgICAiYmVmb3JlRWFjaCI6IGZhbHNlLAorICAgICAgICAiZGVzY3JpYmUiOiBm
YWxzZSwKKyAgICAgICAgIml0IjogZmFsc2UsCisgICAgICAgICJzcGVjaWZ5IjogZmFsc2UKKyAg
ICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNl
cy10ZXN0cy8ubnBtaWdub3JlIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlz
ZXMtdGVzdHMvLm5wbWlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMmRkNDRlOWQ0YzY1OThjOWE4MDk2MmZh
OTZhOGQ5OGM0ZTk0Y2JlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlz
ZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvLm5wbWlnbm9yZQpAQCAtMCwwICsxLDUgQEAKKy9ub2Rl
X21vZHVsZXMvCisvbnBtLWRlYnVnLmxvZworCisvLmpzaGludHJjCisvLm5wbWlnbm9yZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvTElD
RU5TRS50eHQgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9M
SUNFTlNFLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODdjMzEyYjFlZmNlNjEwMGIyZDFjZDM1NGVlNDhhZjdj
MzYyNjMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMv
cHJvbWlzZXMtdGVzdHMvTElDRU5TRS50eHQKQEAgLTAsMCArMSwxNCBAQAorICAgICAgICAgICAg
RE8gV0hBVCBUSEUgRlVDSyBZT1UgV0FOVCBUTyBQVUJMSUMgTElDRU5TRQorICAgICAgICAgICAg
ICAgICAgICBWZXJzaW9uIDIsIERlY2VtYmVyIDIwMDQKKworIENvcHlyaWdodCAoQykgMjAxMiBE
b21lbmljIERlbmljb2xhIDxkb21lbmljQGRvbWVuaWNkZW5pY29sYS5jb20+CisKKyBFdmVyeW9u
ZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBvciBtb2RpZmll
ZAorIGNvcGllcyBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGFuZCBjaGFuZ2luZyBpdCBpcyBh
bGxvd2VkIGFzIGxvbmcKKyBhcyB0aGUgbmFtZSBpcyBjaGFuZ2VkLgorCisgICAgICAgICAgICBE
TyBXSEFUIFRIRSBGVUNLIFlPVSBXQU5UIFRPIFBVQkxJQyBMSUNFTlNFCisgICBURVJNUyBBTkQg
Q09ORElUSU9OUyBGT1IgQ09QWUlORywgRElTVFJJQlVUSU9OIEFORCBNT0RJRklDQVRJT04KKwor
ICAwLiBZb3UganVzdCBETyBXSEFUIFRIRSBGVUNLIFlPVSBXQU5UIFRPLgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9SRUFETUUubWQg
Yi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9SRUFETUUubWQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTA0M2NiMzE3OTFlMTYwNzMzZWZmMGRkOTE5YTU4YjEyMTg1MDA1MgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRl
c3RzL1JFQURNRS5tZApAQCAtMCwwICsxLDkyIEBACis8YSBocmVmPSJodHRwOi8vcHJvbWlzZXMt
YXBsdXMuZ2l0aHViLmNvbS9wcm9taXNlcy1zcGVjIj4KKyAgICA8aW1nIHNyYz0iaHR0cDovL3By
b21pc2VzLWFwbHVzLmdpdGh1Yi5jb20vcHJvbWlzZXMtc3BlYy9hc3NldHMvbG9nby1zbWFsbC5w
bmciCisgICAgICAgICBhbGlnbj0icmlnaHQiIGFsdD0iUHJvbWlzZXMvQSsgbG9nbyIgLz4KKzwv
YT4KKworIyBQcm9taXNlcy9BKyBDb21wbGlhbmNlIFRlc3QgU3VpdGUKKworVGhpcyBzdWl0ZSB0
ZXN0cyBjb21wbGlhbmNlIG9mIGEgcHJvbWlzZSBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZSBbUHJv
bWlzZXMvQSsgc3BlY2lmaWNhdGlvbl1bXS4KKworW1Byb21pc2VzL0ErIHNwZWNpZmljYXRpb25d
OiBodHRwczovL2dpdGh1Yi5jb20vcHJvbWlzZXMtYXBsdXMvcHJvbWlzZXMtc3BlYworCisjIyBI
b3cgVG8gUnVuCisKK1RoZSB0ZXN0cyBydW4gaW4gYSBOb2RlLmpzIGVudmlyb25tZW50OyBtYWtl
IHN1cmUgeW91IGhhdmUgdGhhdCBpbnN0YWxsZWQuCisKKyMjIyBBZGFwdGVycworCitJbiBvcmRl
ciB0byB0ZXN0IHlvdXIgcHJvbWlzZSBsaWJyYXJ5LCB5b3UgbXVzdCBleHBvc2UgYSB2ZXJ5IG1p
bmltYWwgYWRhcHRlciBpbnRlcmZhY2UuIFRoZXNlIGFyZSB3cml0dGVuIGFzIE5vZGUuanMKK21v
ZHVsZXMgd2l0aCBhIGZldyB3ZWxsLWtub3duIGV4cG9ydHM6CisKKy0gYHJlc29sdmVkKHZhbHVl
KWA6IGNyZWF0ZXMgYSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBgdmFsdWVgLgorLSBg
cmVqZWN0ZWQocmVhc29uKWA6IGNyZWF0ZXMgYSBwcm9taXNlIHRoYXQgaXMgYWxyZWFkeSByZWpl
Y3RlZCB3aXRoIGByZWFzb25gLgorLSBgZGVmZXJyZWQoKWA6IGNyZWF0ZXMgYW4gb2JqZWN0IGNv
bnNpc3Rpbmcgb2YgYHsgcHJvbWlzZSwgcmVzb2x2ZSwgcmVqZWN0IH1gOgorICAtIGBwcm9taXNl
YCBpcyBhIHByb21pc2UgdGhhdCBpcyBjdXJyZW50bHkgaW4gdGhlIHBlbmRpbmcgc3RhdGUuCisg
IC0gYHJlc29sdmUodmFsdWUpYCByZXNvbHZlcyB0aGUgcHJvbWlzZSB3aXRoIGB2YWx1ZWAuCisg
IC0gYHJlamVjdChyZWFzb24pYCBtb3ZlcyB0aGUgcHJvbWlzZSBmcm9tIHRoZSBwZW5kaW5nIHN0
YXRlIHRvIHRoZSByZWplY3RlZCBzdGF0ZSwgd2l0aCByZWplY3Rpb24gcmVhc29uIGByZWFzb25g
LgorCitUaGUgYHJlc29sdmVkYCBhbmQgYHJlamVjdGVkYCBleHBvcnRzIGFyZSBhY3R1YWxseSBv
cHRpb25hbCwgYW5kIHdpbGwgYmUgYXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IHRoZSB0ZXN0IHJ1
bm5lciB1c2luZworYGRlZmVycmVkYCBpZiB0aGV5IGFyZSBub3QgcHJlc2VudC4gQnV0LCBpZiB5
b3VyIHByb21pc2UgbGlicmFyeSBoYXMgdGhlIGNhcGFiaWxpdHkgdG8gY3JlYXRlIGFscmVhZHkt
cmVzb2x2ZWQgb3IKK2FscmVhZHktcmVqZWN0ZWQgcHJvbWlzZXMsIHRoZW4geW91IHNob3VsZCBp
bmNsdWRlIHRoZXNlIGV4cG9ydHMsIHNvIHRoYXQgdGhlIHRlc3QgcnVubmVyIGNhbiBwcm92aWRl
IHlvdSB3aXRoIGJldHRlcgorY29kZSBjb3ZlcmFnZSBhbmQgdW5jb3ZlciBhbnkgYnVncyBpbiB0
aG9zZSBtZXRob2RzLgorCitOb3RlIHRoYXQgdGhlIHRlc3RzIHdpbGwgbmV2ZXIgcGFzcyBhIHBy
b21pc2Ugb3IgYSB0aGVuYWJsZSBhcyBhIHJlc29sdXRpb24uIFRoYXQgbWVhbnMgdGhhdCB3ZSBu
ZXZlciB1c2UgdGhlIHByb21pc2UtCitvciB0aGVuYWJsZS1hY2NlcHRpbmcgZm9ybXMgb2YgdGhl
IHJlc29sdmUgb3BlcmF0aW9uIGRpcmVjdGx5LCBhbmQgaW5zdGVhZCBvbmx5IHVzZSB0aGUgZGly
ZWN0IGZ1bGZpbGxtZW50IG9wZXJhdGlvbiwKK3NpbmNlIGZ1bGZpbGwgYW5kIHJlc29sdmUgYXJl
IGVxdWl2YWxlbnQgd2hlbiBub3QgZ2l2ZW4gYSB0aGVuYWJsZS4KKworRmluYWxseSwgbm90ZSB0
aGF0IG5vbmUgb2YgdGhlc2UgZnVuY3Rpb25zLCBpbmNsdWRpbmcgYGRlZmVycmVkKCkucmVzb2x2
ZWAgYW5kIGBkZWZlcnJlZCgpLnJlamVjdGAsIHNob3VsZCB0aHJvdworZXhjZXB0aW9ucy4gVGhl
IHRlc3RzIGFyZSBub3Qgc3RydWN0dXJlZCB0byBkZWFsIHdpdGggdGhhdCwgYW5kIGlmIHlvdXIg
aW1wbGVtZW50YXRpb24gaGFzIHRoZSBwb3RlbnRpYWwgdG8gdGhyb3cKK2V4Y2VwdGlvbnPigJRl
LmcuLCBwZXJoYXBzIGl0IHRocm93cyB3aGVuIHRyeWluZyB0byByZXNvbHZlIGFuIGFscmVhZHkt
cmVzb2x2ZWQgcHJvbWlzZeKAlHlvdSBzaG91bGQgd3JhcCBkaXJlY3QgY2FsbHMgdG8KK3lvdXIg
aW1wbGVtZW50YXRpb24gaW4gYHRyeWAvYGNhdGNoYCB3aGVuIHdyaXRpbmcgdGhlIGFkYXB0ZXIu
CisKKyMjIyBGcm9tIHRoZSBDTEkKKworVGhpcyBwYWNrYWdlIGNvbWVzIHdpdGggYSBjb21tYW5k
LWxpbmUgaW50ZXJmYWNlIHRoYXQgY2FuIGJlIHVzZWQgZWl0aGVyIGJ5IGluc3RhbGxpbmcgaXQg
Z2xvYmFsbHkgd2l0aAorYG5wbSBpbnN0YWxsIHByb21pc2VzLWFwbHVzLXRlc3RzIC1nYCBvciBi
eSBpbmNsdWRpbmcgaXQgaW4geW91ciBgcGFja2FnZS5qc29uYCdzIGBkZXZEZXBlbmRlbmNpZXNg
IGFuZCB1c2luZyBucG0ncworYHNjcmlwdHNgIGZlYXR1cmUuIEluIHRoZSBsYXR0ZXIgY2FzZSwg
eW91ciBzZXR1cCBtaWdodCBsb29rIHNvbWV0aGluZyBsaWtlCisKK2BgYGpzb24KK3sKKyAgICAi
ZGV2RGVwZW5kZW5jaWVzIjogeworICAgICAgICAicHJvbWlzZXMtYXBsdXMtdGVzdHMiOiAiKiIK
KyAgICB9LAorICAgICJzY3JpcHRzIjogeworICAgICAgICAidGVzdCI6ICJydW4tbXktb3duLXRl
c3RzICYmIHByb21pc2VzLWFwbHVzLXRlc3RzIHRlc3QvbXktYWRhcHRlciIKKyAgICB9Cit9Citg
YGAKKworVGhlIENMSSB0YWtlcyBhcyBpdHMgZmlyc3QgYXJndW1lbnQgdGhlIGZpbGVuYW1lIG9m
IHlvdXIgYWRhcHRlciBmaWxlLCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVj
dG9yeS4gSXQKK3RyaWVzIHRvIHBhc3MgdGhyb3VnaCBhbnkgc3Vic2VxdWVudCBvcHRpb25zIHRv
IE1vY2hhLCBzbyB5b3UgY2FuIHVzZSBlLmcuIGAtLXJlcG9ydGVyIHNwZWNgIG9yIGAtLWdyZXAg
Mi4yLjRgLgorCisjIyMgUHJvZ3JhbW1hdGljYWxseQorCitUaGUgbWFpbiBleHBvcnQgb2YgdGhp
cyBwYWNrYWdlIGlzIGEgZnVuY3Rpb24gdGhhdCBhbGxvd3MgeW91IHRvIHJ1biB0aGUgdGVzdHMg
YWdhaW5zdCBhbiBhZGFwdGVyOgorCitgYGBqcwordmFyIHByb21pc2VzQXBsdXNUZXN0cyA9IHJl
cXVpcmUoInByb21pc2VzLWFwbHVzLXRlc3RzIik7CisKK3Byb21pc2VzQXBsdXNUZXN0cyhhZGFw
dGVyLCBmdW5jdGlvbiAoZXJyKSB7CisgICAgLy8gQWxsIGRvbmU7IG91dHB1dCBpcyBpbiB0aGUg
Y29uc29sZS4gT3IgY2hlY2sgYGVycmAgZm9yIG51bWJlciBvZiBmYWlsdXJlcy4KK30pOworYGBg
CisKK1lvdSBjYW4gYWxzbyBwYXNzIGFueSBNb2NoYSBvcHRpb25zIGFzIHRoZSBzZWNvbmQgcGFy
YW1ldGVyLCBlLmcuCisKK2BgYGpzCitwcm9taXNlc0FwbHVzVGVzdHMoYWRhcHRlciwgeyByZXBv
cnRlcjogImRvdCIgfSwgZnVuY3Rpb24gKGVycikgeworICAvLyBBcyBiZWZvcmUuCit9KTsKK2Bg
YAorCisjIyMgV2l0aGluIGFuIEV4aXN0aW5nIE1vY2hhIFRlc3QgU3VpdGUKKworSWYgeW91IGFs
cmVhZHkgaGF2ZSBhIE1vY2hhIHRlc3Qgc3VpdGUgYW5kIHdhbnQgdG8gaW5jbHVkZSB0aGVzZSB0
ZXN0cyBpbiBpdCwgeW91IGNhbiBkbzoKKworYGBganMKK2Rlc2NyaWJlKCJQcm9taXNlcy9BKyBU
ZXN0cyIsIGZ1bmN0aW9uICgpIHsKKyAgICByZXF1aXJlKCJwcm9taXNlcy1hcGx1cy10ZXN0cyIp
Lm1vY2hhKGFkYXB0ZXIpOworfSk7CitgYGAKKworVGhpcyBvbmx5IHdvcmtzIGluIE5vZGUuanMs
IGhvd2V2ZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9t
aXNlcy10ZXN0cy9saWIvY2xpLmpzIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJv
bWlzZXMtdGVzdHMvbGliL2NsaS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjNjZWU3ODFjNjg1OWNjOGMyZDc2
ZGQwMTNjMGYxYjU4NzRlODgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJv
bWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL2NsaS5qcwpAQCAtMCwwICsxLDM0IEBACisj
IS91c3IvYmluL2VudiBub2RlCisidXNlIHN0cmljdCI7CisKK3ZhciBwYXRoID0gcmVxdWlyZSgi
cGF0aCIpOwordmFyIGdldE1vY2hhT3B0cyA9IHJlcXVpcmUoIi4vZ2V0TW9jaGFPcHRzIik7Cit2
YXIgcHJvZ3JhbW1hdGljUnVubmVyID0gcmVxdWlyZSgiLi9wcm9ncmFtbWF0aWNSdW5uZXIiKTsK
KwordmFyIGZpbGVQYXRoID0gZ2V0QWRhcHRlckZpbGVQYXRoKCk7Cit2YXIgYWRhcHRlciA9IGFk
YXB0ZXJPYmplY3RGcm9tRmlsZVBhdGgoZmlsZVBhdGgpOwordmFyIG1vY2hhT3B0cyA9IGdldE1v
Y2hhT3B0cyhwcm9jZXNzLmFyZ3Yuc2xpY2UoMykpOworcHJvZ3JhbW1hdGljUnVubmVyKGFkYXB0
ZXIsIG1vY2hhT3B0cywgZnVuY3Rpb24gKGVycikgeworICAgIGlmIChlcnIpIHsKKyAgICAgICAg
cHJvY2Vzcy5leGl0KGVyci5mYWlsdXJlcyB8fCAtMSk7CisgICAgfQorfSk7CisKK2Z1bmN0aW9u
IGdldEFkYXB0ZXJGaWxlUGF0aCgpIHsKKyAgICBpZiAocHJvY2Vzcy5hcmd2WzJdKSB7CisgICAg
ICAgIHJldHVybiBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgcHJvY2Vzcy5hcmd2WzJdKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlNwZWNpZnkgeW91ciBhZGFwdGVy
IGZpbGUgYXMgYW4gYXJndW1lbnQuIik7CisgICAgfQorfQorCitmdW5jdGlvbiBhZGFwdGVyT2Jq
ZWN0RnJvbUZpbGVQYXRoKGZpbGVQYXRoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgcmV0dXJuIHJl
cXVpcmUoZmlsZVBhdGgpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdmFyIGVycm9yID0g
bmV3IEVycm9yKCJFcnJvciBgcmVxdWlyZWBpbmcgYWRhcHRlciBmaWxlICIgKyBmaWxlUGF0aCAr
ICJcblxuIiArIGUpOworICAgICAgICBlcnJvci5jYXVzZSA9IGU7CisKKyAgICAgICAgdGhyb3cg
ZXJyb3I7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVz
dHMvcHJvbWlzZXMtdGVzdHMvbGliL2dldE1vY2hhT3B0cy5qcyBiL0xheW91dFRlc3RzL2pzL3By
b21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi9nZXRNb2NoYU9wdHMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDA1OWFjODhhYjg4N2JjYTBhNjcwZjJiMGIwZjRmNDQ5NWE4MjU3MgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi9n
ZXRNb2NoYU9wdHMuanMKQEAgLTAsMCArMSwxOSBAQAorInVzZSBzdHJpY3QiOworCittb2R1bGUu
ZXhwb3J0cyA9IGZ1bmN0aW9uIGdldE1vY2hhT3B0cyhhcmdzKSB7CisgICAgdmFyIHJhd09wdHMg
PSBhcmdzOworICAgIHZhciBvcHRzID0ge307CisKKyAgICByYXdPcHRzLmpvaW4oIiAiKS5zcGxp
dCgiLS0iKS5mb3JFYWNoKGZ1bmN0aW9uIChvcHQpIHsKKyAgICAgICAgdmFyIG9wdFNwbGl0ID0g
b3B0LnNwbGl0KCIgIik7CisKKyAgICAgICAgdmFyIGtleSA9IG9wdFNwbGl0WzBdOworICAgICAg
ICB2YXIgdmFsdWUgPSBvcHRTcGxpdFsxXSB8fCB0cnVlOworCisgICAgICAgIGlmIChrZXkpIHsK
KyAgICAgICAgICAgIG9wdHNba2V5XSA9IHZhbHVlOworICAgICAgICB9CisgICAgfSk7CisKKyAg
ICByZXR1cm4gb3B0czsKK307CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10
ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvcHJvZ3JhbW1hdGljUnVubmVyLmpzIGIvTGF5b3V0VGVz
dHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Byb2dyYW1tYXRpY1J1bm5l
ci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xNjRjM2MxMmJhYzZjMGRhZjEzOTFjOTFhZTkzYTQwNTgxMWQwODcy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlz
ZXMtdGVzdHMvbGliL3Byb2dyYW1tYXRpY1J1bm5lci5qcwpAQCAtMCwwICsxLDgyIEBACisidXNl
IHN0cmljdCI7CisKK3ZhciBNb2NoYSA9IHJlcXVpcmUoIm1vY2hhIik7Cit2YXIgcGF0aCA9IHJl
cXVpcmUoInBhdGgiKTsKK3ZhciBmcyA9IHJlcXVpcmUoImZzIik7Cit2YXIgXyA9IHJlcXVpcmUo
InVuZGVyc2NvcmUiKTsKKwordmFyIHRlc3RzRGlyID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwg
InRlc3RzIik7CisKK2Z1bmN0aW9uIG5vcm1hbGl6ZUFkYXB0ZXIoYWRhcHRlcikgeworICAgIGlm
ICghYWRhcHRlci5yZXNvbHZlZCkgeworICAgICAgICBhZGFwdGVyLnJlc29sdmVkID0gZnVuY3Rp
b24gKHZhbHVlKSB7CisgICAgICAgICAgICB2YXIgZCA9IGFkYXB0ZXIuZGVmZXJyZWQoKTsKKyAg
ICAgICAgICAgIGQucmVzb2x2ZSh2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gZC5wcm9taXNl
OworICAgICAgICB9OworICAgIH0KKworICAgIGlmICghYWRhcHRlci5yZWplY3RlZCkgeworICAg
ICAgICBhZGFwdGVyLnJlamVjdGVkID0gZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAgICAg
dmFyIGQgPSBhZGFwdGVyLmRlZmVycmVkKCk7CisgICAgICAgICAgICBkLnJlamVjdChyZWFzb24p
OworICAgICAgICAgICAgcmV0dXJuIGQucHJvbWlzZTsKKyAgICAgICAgfTsKKyAgICB9Cit9CisK
K21vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFkYXB0ZXIsIG1vY2hhT3B0cywgY2IpIHsKKyAg
ICBpZiAodHlwZW9mIG1vY2hhT3B0cyA9PT0gImZ1bmN0aW9uIikgeworICAgICAgICBjYiA9IG1v
Y2hhT3B0czsKKyAgICAgICAgbW9jaGFPcHRzID0ge307CisgICAgfQorICAgIGlmICh0eXBlb2Yg
Y2IgIT09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgY2IgPSBmdW5jdGlvbiAoKSB7IH07CisgICAg
fQorCisgICAgbm9ybWFsaXplQWRhcHRlcihhZGFwdGVyKTsKKyAgICBtb2NoYU9wdHMgPSBfLmRl
ZmF1bHRzKG1vY2hhT3B0cywgeyB0aW1lb3V0OiAyMDAsIHNsb3c6IEluZmluaXR5IH0pOworCisg
ICAgZnMucmVhZGRpcih0ZXN0c0RpciwgZnVuY3Rpb24gKGVyciwgdGVzdEZpbGVOYW1lcykgewor
ICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICBjYihlcnIpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIG1vY2hhID0gbmV3IE1vY2hhKG1vY2hhT3B0
cyk7CisgICAgICAgIHRlc3RGaWxlTmFtZXMuZm9yRWFjaChmdW5jdGlvbiAodGVzdEZpbGVOYW1l
KSB7CisgICAgICAgICAgICBpZiAocGF0aC5leHRuYW1lKHRlc3RGaWxlTmFtZSkgPT09ICIuanMi
KSB7CisgICAgICAgICAgICAgICAgdmFyIHRlc3RGaWxlUGF0aCA9IHBhdGgucmVzb2x2ZSh0ZXN0
c0RpciwgdGVzdEZpbGVOYW1lKTsKKyAgICAgICAgICAgICAgICBtb2NoYS5hZGRGaWxlKHRlc3RG
aWxlUGF0aCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIGdsb2JhbC5h
ZGFwdGVyID0gYWRhcHRlcjsKKyAgICAgICAgbW9jaGEucnVuKGZ1bmN0aW9uIChmYWlsdXJlcykg
eworICAgICAgICAgICAgZGVsZXRlIGdsb2JhbC5hZGFwdGVyOworICAgICAgICAgICAgaWYgKGZh
aWx1cmVzID4gMCkgeworICAgICAgICAgICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoIlRlc3Qg
c3VpdGUgZmFpbGVkIHdpdGggIiArIGZhaWx1cmVzICsgIiBmYWlsdXJlcy4iKTsKKyAgICAgICAg
ICAgICAgICBlcnIuZmFpbHVyZXMgPSBmYWlsdXJlczsKKyAgICAgICAgICAgICAgICBjYihlcnIp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjYihudWxsKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfSk7Cit9OworCittb2R1bGUuZXhwb3J0cy5tb2No
YSA9IGZ1bmN0aW9uIChhZGFwdGVyKSB7CisgICAgbm9ybWFsaXplQWRhcHRlcihhZGFwdGVyKTsK
KworICAgIGdsb2JhbC5hZGFwdGVyID0gYWRhcHRlcjsKKworICAgIHZhciB0ZXN0RmlsZU5hbWVz
ID0gZnMucmVhZGRpclN5bmModGVzdHNEaXIpOworICAgIHRlc3RGaWxlTmFtZXMuZm9yRWFjaChm
dW5jdGlvbiAodGVzdEZpbGVOYW1lKSB7CisgICAgICAgIGlmIChwYXRoLmV4dG5hbWUodGVzdEZp
bGVOYW1lKSA9PT0gIi5qcyIpIHsKKyAgICAgICAgICAgIHZhciB0ZXN0RmlsZVBhdGggPSBwYXRo
LnJlc29sdmUodGVzdHNEaXIsIHRlc3RGaWxlTmFtZSk7CisgICAgICAgICAgICByZXF1aXJlKHRl
c3RGaWxlUGF0aCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGRlbGV0ZSBnbG9iYWwuYWRh
cHRlcjsKK307CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9t
aXNlcy10ZXN0cy9saWIvdGVzdHMvMi4xLjIuanMgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10
ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4xLjIuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjYwZTVk
NWNjY2Y4MjdlMzZhZDY1YTIwMjg1ODY3MTI5MTZiMmEwZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjEu
Mi5qcwpAQCAtMCwwICsxLDc2IEBACisidXNlIHN0cmljdCI7CisKK3ZhciBhc3NlcnQgPSByZXF1
aXJlKCJhc3NlcnQiKTsKK3ZhciB0ZXN0RnVsZmlsbGVkID0gcmVxdWlyZSgiLi9oZWxwZXJzL3Rl
c3RUaHJlZUNhc2VzIikudGVzdEZ1bGZpbGxlZDsKKwordmFyIGFkYXB0ZXIgPSBnbG9iYWwuYWRh
cHRlcjsKK3ZhciBkZWZlcnJlZCA9IGFkYXB0ZXIuZGVmZXJyZWQ7CisKK3ZhciBkdW1teSA9IHsg
ZHVtbXk6ICJkdW1teSIgfTsgLy8gd2UgZnVsZmlsbCBvciByZWplY3Qgd2l0aCB0aGlzIHdoZW4g
d2UgZG9uJ3QgaW50ZW5kIHRvIHRlc3QgYWdhaW5zdCBpdAorCitkZXNjcmliZSgiMi4xLjIuMTog
V2hlbiBmdWxmaWxsZWQsIGEgcHJvbWlzZTogbXVzdCBub3QgdHJhbnNpdGlvbiB0byBhbnkgb3Ro
ZXIgc3RhdGUuIiwgZnVuY3Rpb24gKCkgeworICAgIHRlc3RGdWxmaWxsZWQoZHVtbXksIGZ1bmN0
aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgIHZhciBvbkZ1bGZpbGxlZENhbGxlZCA9IGZh
bHNlOworCisgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAg
ICAgICAgICAgIG9uRnVsZmlsbGVkQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfSwgZnVuY3Rpb24g
b25SZWplY3RlZCgpIHsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChvbkZ1bGZpbGxl
ZENhbGxlZCwgZmFsc2UpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9KTsKKworICAg
ICAgICBzZXRUaW1lb3V0KGRvbmUsIDEwMCk7CisgICAgfSk7CisKKyAgICBzcGVjaWZ5KCJ0cnlp
bmcgdG8gZnVsZmlsbCB0aGVuIGltbWVkaWF0ZWx5IHJlamVjdCIsIGZ1bmN0aW9uIChkb25lKSB7
CisgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgdmFyIG9uRnVsZmlsbGVkQ2Fs
bGVkID0gZmFsc2U7CisKKyAgICAgICAgZC5wcm9taXNlLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxs
ZWQoKSB7CisgICAgICAgICAgICBvbkZ1bGZpbGxlZENhbGxlZCA9IHRydWU7CisgICAgICAgIH0s
IGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
b25GdWxmaWxsZWRDYWxsZWQsIGZhbHNlKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgZC5yZXNvbHZlKGR1bW15KTsKKyAgICAgICAgZC5yZWplY3QoZHVtbXkp
OworICAgICAgICBzZXRUaW1lb3V0KGRvbmUsIDEwMCk7CisgICAgfSk7CisKKyAgICBzcGVjaWZ5
KCJ0cnlpbmcgdG8gZnVsZmlsbCB0aGVuIHJlamVjdCwgZGVsYXllZCIsIGZ1bmN0aW9uIChkb25l
KSB7CisgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgdmFyIG9uRnVsZmlsbGVk
Q2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgZC5wcm9taXNlLnRoZW4oZnVuY3Rpb24gb25GdWxm
aWxsZWQoKSB7CisgICAgICAgICAgICBvbkZ1bGZpbGxlZENhbGxlZCA9IHRydWU7CisgICAgICAg
IH0sIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwob25GdWxmaWxsZWRDYWxsZWQsIGZhbHNlKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBk
LnJlc29sdmUoZHVtbXkpOworICAgICAgICAgICAgZC5yZWplY3QoZHVtbXkpOworICAgICAgICB9
LCA1MCk7CisgICAgICAgIHNldFRpbWVvdXQoZG9uZSwgMTAwKTsKKyAgICB9KTsKKworICAgIHNw
ZWNpZnkoInRyeWluZyB0byBmdWxmaWxsIGltbWVkaWF0ZWx5IHRoZW4gcmVqZWN0IGRlbGF5ZWQi
LCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAg
IHZhciBvbkZ1bGZpbGxlZENhbGxlZCA9IGZhbHNlOworCisgICAgICAgIGQucHJvbWlzZS50aGVu
KGZ1bmN0aW9uIG9uRnVsZmlsbGVkKCkgeworICAgICAgICAgICAgb25GdWxmaWxsZWRDYWxsZWQg
PSB0cnVlOworICAgICAgICB9LCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKG9uRnVsZmlsbGVkQ2FsbGVkLCBmYWxzZSk7CisgICAgICAgICAg
ICBkb25lKCk7CisgICAgICAgIH0pOworCisgICAgICAgIGQucmVzb2x2ZShkdW1teSk7CisgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZC5yZWplY3QoZHVtbXkp
OworICAgICAgICB9LCA1MCk7CisgICAgICAgIHNldFRpbWVvdXQoZG9uZSwgMTAwKTsKKyAgICB9
KTsKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlz
ZXMtdGVzdHMvbGliL3Rlc3RzLzIuMS4zLmpzIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVz
dHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMS4zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxOWExOThi
OWViNWQ5Mjc3NTVhZGQxZmUzZTc1N2EzZTYyZmFiZTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4xLjMu
anMKQEAgLTAsMCArMSw3NiBAQAorInVzZSBzdHJpY3QiOworCit2YXIgYXNzZXJ0ID0gcmVxdWly
ZSgiYXNzZXJ0Iik7Cit2YXIgdGVzdFJlamVjdGVkID0gcmVxdWlyZSgiLi9oZWxwZXJzL3Rlc3RU
aHJlZUNhc2VzIikudGVzdFJlamVjdGVkOworCit2YXIgYWRhcHRlciA9IGdsb2JhbC5hZGFwdGVy
OwordmFyIGRlZmVycmVkID0gYWRhcHRlci5kZWZlcnJlZDsKKwordmFyIGR1bW15ID0geyBkdW1t
eTogImR1bW15IiB9OyAvLyB3ZSBmdWxmaWxsIG9yIHJlamVjdCB3aXRoIHRoaXMgd2hlbiB3ZSBk
b24ndCBpbnRlbmQgdG8gdGVzdCBhZ2FpbnN0IGl0CisKK2Rlc2NyaWJlKCIyLjEuMy4xOiBXaGVu
IHJlamVjdGVkLCBhIHByb21pc2U6IG11c3Qgbm90IHRyYW5zaXRpb24gdG8gYW55IG90aGVyIHN0
YXRlLiIsIGZ1bmN0aW9uICgpIHsKKyAgICB0ZXN0UmVqZWN0ZWQoZHVtbXksIGZ1bmN0aW9uIChw
cm9taXNlLCBkb25lKSB7CisgICAgICAgIHZhciBvblJlamVjdGVkQ2FsbGVkID0gZmFsc2U7CisK
KyAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uIG9uRnVsZmlsbGVkKCkgeworICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9uUmVqZWN0ZWRDYWxsZWQsIGZhbHNlKTsKKyAgICAgICAg
ICAgIGRvbmUoKTsKKyAgICAgICAgfSwgZnVuY3Rpb24gb25SZWplY3RlZCgpIHsKKyAgICAgICAg
ICAgIG9uUmVqZWN0ZWRDYWxsZWQgPSB0cnVlOworICAgICAgICB9KTsKKworICAgICAgICBzZXRU
aW1lb3V0KGRvbmUsIDEwMCk7CisgICAgfSk7CisKKyAgICBzcGVjaWZ5KCJ0cnlpbmcgdG8gcmVq
ZWN0IHRoZW4gaW1tZWRpYXRlbHkgZnVsZmlsbCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAg
IHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgdmFyIG9uUmVqZWN0ZWRDYWxsZWQgPSBmYWxz
ZTsKKworICAgICAgICBkLnByb21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChvblJlamVjdGVkQ2FsbGVkLCBmYWxzZSk7Cisg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0sIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7Cisg
ICAgICAgICAgICBvblJlamVjdGVkQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgZC5yZWplY3QoZHVtbXkpOworICAgICAgICBkLnJlc29sdmUoZHVtbXkpOworICAgICAgICBz
ZXRUaW1lb3V0KGRvbmUsIDEwMCk7CisgICAgfSk7CisKKyAgICBzcGVjaWZ5KCJ0cnlpbmcgdG8g
cmVqZWN0IHRoZW4gZnVsZmlsbCwgZGVsYXllZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAg
IHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgdmFyIG9uUmVqZWN0ZWRDYWxsZWQgPSBmYWxz
ZTsKKworICAgICAgICBkLnByb21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChvblJlamVjdGVkQ2FsbGVkLCBmYWxzZSk7Cisg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0sIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7Cisg
ICAgICAgICAgICBvblJlamVjdGVkQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBkLnJlamVjdChkdW1teSk7
CisgICAgICAgICAgICBkLnJlc29sdmUoZHVtbXkpOworICAgICAgICB9LCA1MCk7CisgICAgICAg
IHNldFRpbWVvdXQoZG9uZSwgMTAwKTsKKyAgICB9KTsKKworICAgIHNwZWNpZnkoInRyeWluZyB0
byByZWplY3QgaW1tZWRpYXRlbHkgdGhlbiBmdWxmaWxsIGRlbGF5ZWQiLCBmdW5jdGlvbiAoZG9u
ZSkgeworICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgIHZhciBvblJlamVjdGVk
Q2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgZC5wcm9taXNlLnRoZW4oZnVuY3Rpb24gb25GdWxm
aWxsZWQoKSB7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwob25SZWplY3RlZENhbGxl
ZCwgZmFsc2UpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9LCBmdW5jdGlvbiBvblJl
amVjdGVkKCkgeworICAgICAgICAgICAgb25SZWplY3RlZENhbGxlZCA9IHRydWU7CisgICAgICAg
IH0pOworCisgICAgICAgIGQucmVqZWN0KGR1bW15KTsKKyAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICBkLnJlc29sdmUoZHVtbXkpOworICAgICAgICB9LCA1MCk7
CisgICAgICAgIHNldFRpbWVvdXQoZG9uZSwgMTAwKTsKKyAgICB9KTsKK30pOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3Rz
LzIuMi4xLmpzIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMv
bGliL3Rlc3RzLzIuMi4xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkOTE5ODhjOTRmYjMxN2VmYWU2Y2I2OGM4
ZTQ0MDU0OWIyZDdhNDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNl
cy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4yLjEuanMKQEAgLTAsMCArMSw3NyBA
QAorInVzZSBzdHJpY3QiOworCit2YXIgYWRhcHRlciA9IGdsb2JhbC5hZGFwdGVyOwordmFyIHJl
c29sdmVkID0gYWRhcHRlci5yZXNvbHZlZDsKK3ZhciByZWplY3RlZCA9IGFkYXB0ZXIucmVqZWN0
ZWQ7CisKK3ZhciBkdW1teSA9IHsgZHVtbXk6ICJkdW1teSIgfTsgLy8gd2UgZnVsZmlsbCBvciBy
ZWplY3Qgd2l0aCB0aGlzIHdoZW4gd2UgZG9uJ3QgaW50ZW5kIHRvIHRlc3QgYWdhaW5zdCBpdAor
CitkZXNjcmliZSgiMi4yLjE6IEJvdGggYG9uRnVsZmlsbGVkYCBhbmQgYG9uUmVqZWN0ZWRgIGFy
ZSBvcHRpb25hbCBhcmd1bWVudHMuIiwgZnVuY3Rpb24gKCkgeworICAgIGRlc2NyaWJlKCIyLjIu
MS4xOiBJZiBgb25GdWxmaWxsZWRgIGlzIG5vdCBhIGZ1bmN0aW9uLCBpdCBtdXN0IGJlIGlnbm9y
ZWQuIiwgZnVuY3Rpb24gKCkgeworICAgICAgICBkZXNjcmliZSgiYXBwbGllZCB0byBhIGRpcmVj
dGx5LXJlamVjdGVkIHByb21pc2UiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBmdW5jdGlv
biB0ZXN0Tm9uRnVuY3Rpb24obm9uRnVuY3Rpb24sIHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7Cisg
ICAgICAgICAgICAgICAgc3BlY2lmeSgiYG9uRnVsZmlsbGVkYCBpcyAiICsgc3RyaW5nUmVwcmVz
ZW50YXRpb24sIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHJlamVjdGVk
KGR1bW15KS50aGVuKG5vbkZ1bmN0aW9uLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24odW5kZWZp
bmVkLCAiYHVuZGVmaW5lZGAiKTsKKyAgICAgICAgICAgIHRlc3ROb25GdW5jdGlvbihudWxsLCAi
YG51bGxgIik7CisgICAgICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24oZmFsc2UsICJgZmFsc2VgIik7
CisgICAgICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24oNSwgImA1YCIpOworICAgICAgICAgICAgdGVz
dE5vbkZ1bmN0aW9uKHt9LCAiYW4gb2JqZWN0Iik7CisgICAgICAgIH0pOworCisgICAgICAgIGRl
c2NyaWJlKCJhcHBsaWVkIHRvIGEgcHJvbWlzZSByZWplY3RlZCBhbmQgdGhlbiBjaGFpbmVkIG9m
ZiBvZiIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3ROb25GdW5jdGlv
bihub25GdW5jdGlvbiwgc3RyaW5nUmVwcmVzZW50YXRpb24pIHsKKyAgICAgICAgICAgICAgICBz
cGVjaWZ5KCJgb25GdWxmaWxsZWRgIGlzICIgKyBzdHJpbmdSZXByZXNlbnRhdGlvbiwgZnVuY3Rp
b24gKGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVqZWN0ZWQoZHVtbXkpLnRoZW4oZnVu
Y3Rpb24gKCkgeyB9LCB1bmRlZmluZWQpLnRoZW4obm9uRnVuY3Rpb24sIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRlc3RO
b25GdW5jdGlvbih1bmRlZmluZWQsICJgdW5kZWZpbmVkYCIpOworICAgICAgICAgICAgdGVzdE5v
bkZ1bmN0aW9uKG51bGwsICJgbnVsbGAiKTsKKyAgICAgICAgICAgIHRlc3ROb25GdW5jdGlvbihm
YWxzZSwgImBmYWxzZWAiKTsKKyAgICAgICAgICAgIHRlc3ROb25GdW5jdGlvbig1LCAiYDVgIik7
CisgICAgICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24oe30sICJhbiBvYmplY3QiKTsKKyAgICAgICAg
fSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgiMi4yLjEuMjogSWYgYG9uUmVqZWN0ZWRgIGlz
IG5vdCBhIGZ1bmN0aW9uLCBpdCBtdXN0IGJlIGlnbm9yZWQuIiwgZnVuY3Rpb24gKCkgeworICAg
ICAgICBkZXNjcmliZSgiYXBwbGllZCB0byBhIGRpcmVjdGx5LWZ1bGZpbGxlZCBwcm9taXNlIiwg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZnVuY3Rpb24gdGVzdE5vbkZ1bmN0aW9uKG5vbkZ1
bmN0aW9uLCBzdHJpbmdSZXByZXNlbnRhdGlvbikgeworICAgICAgICAgICAgICAgIHNwZWNpZnko
ImBvblJlamVjdGVkYCBpcyAiICsgc3RyaW5nUmVwcmVzZW50YXRpb24sIGZ1bmN0aW9uIChkb25l
KSB7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkKGR1bW15KS50aGVuKGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAg
fSwgbm9uRnVuY3Rpb24pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24odW5kZWZpbmVkLCAiYHVuZGVmaW5lZGAiKTsKKyAg
ICAgICAgICAgIHRlc3ROb25GdW5jdGlvbihudWxsLCAiYG51bGxgIik7CisgICAgICAgICAgICB0
ZXN0Tm9uRnVuY3Rpb24oZmFsc2UsICJgZmFsc2VgIik7CisgICAgICAgICAgICB0ZXN0Tm9uRnVu
Y3Rpb24oNSwgImA1YCIpOworICAgICAgICAgICAgdGVzdE5vbkZ1bmN0aW9uKHt9LCAiYW4gb2Jq
ZWN0Iik7CisgICAgICAgIH0pOworCisgICAgICAgIGRlc2NyaWJlKCJhcHBsaWVkIHRvIGEgcHJv
bWlzZSBmdWxmaWxsZWQgYW5kIHRoZW4gY2hhaW5lZCBvZmYgb2YiLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICBmdW5jdGlvbiB0ZXN0Tm9uRnVuY3Rpb24obm9uRnVuY3Rpb24sIHN0cmluZ1Jl
cHJlc2VudGF0aW9uKSB7CisgICAgICAgICAgICAgICAgc3BlY2lmeSgiYG9uRnVsZmlsbGVkYCBp
cyAiICsgc3RyaW5nUmVwcmVzZW50YXRpb24sIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAg
ICAgICAgICAgIHJlc29sdmVkKGR1bW15KS50aGVuKHVuZGVmaW5lZCwgZnVuY3Rpb24gKCkgeyB9
KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgfSwgbm9uRnVuY3Rpb24pOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24odW5kZWZpbmVkLCAi
YHVuZGVmaW5lZGAiKTsKKyAgICAgICAgICAgIHRlc3ROb25GdW5jdGlvbihudWxsLCAiYG51bGxg
Iik7CisgICAgICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24oZmFsc2UsICJgZmFsc2VgIik7CisgICAg
ICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24oNSwgImA1YCIpOworICAgICAgICAgICAgdGVzdE5vbkZ1
bmN0aW9uKHt9LCAiYW4gb2JqZWN0Iik7CisgICAgICAgIH0pOworICAgIH0pOworfSk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIv
dGVzdHMvMi4yLjIuanMgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10
ZXN0cy9saWIvdGVzdHMvMi4yLjIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjcwNmNlOTVkMDYwMTI1YzU2NzNk
MGUzYzZjOTRhOWI2NGU5NWM2MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3By
b21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjIuMi5qcwpAQCAtMCwwICsx
LDE1MSBAQAorInVzZSBzdHJpY3QiOworCit2YXIgYXNzZXJ0ID0gcmVxdWlyZSgiYXNzZXJ0Iik7
Cit2YXIgdGVzdEZ1bGZpbGxlZCA9IHJlcXVpcmUoIi4vaGVscGVycy90ZXN0VGhyZWVDYXNlcyIp
LnRlc3RGdWxmaWxsZWQ7CisKK3ZhciBhZGFwdGVyID0gZ2xvYmFsLmFkYXB0ZXI7Cit2YXIgcmVz
b2x2ZWQgPSBhZGFwdGVyLnJlc29sdmVkOwordmFyIGRlZmVycmVkID0gYWRhcHRlci5kZWZlcnJl
ZDsKKwordmFyIGR1bW15ID0geyBkdW1teTogImR1bW15IiB9OyAvLyB3ZSBmdWxmaWxsIG9yIHJl
amVjdCB3aXRoIHRoaXMgd2hlbiB3ZSBkb24ndCBpbnRlbmQgdG8gdGVzdCBhZ2FpbnN0IGl0Cit2
YXIgc2VudGluZWwgPSB7IHNlbnRpbmVsOiAic2VudGluZWwiIH07IC8vIGEgc2VudGluZWwgZnVs
ZmlsbG1lbnQgdmFsdWUgdG8gdGVzdCBmb3Igd2l0aCBzdHJpY3QgZXF1YWxpdHkKKworZGVzY3Jp
YmUoIjIuMi4yOiBJZiBgb25GdWxmaWxsZWRgIGlzIGEgZnVuY3Rpb24sIiwgZnVuY3Rpb24gKCkg
eworICAgIGRlc2NyaWJlKCIyLjIuMi4xOiBpdCBtdXN0IGJlIGNhbGxlZCBhZnRlciBgcHJvbWlz
ZWAgaXMgZnVsZmlsbGVkLCB3aXRoIGBwcm9taXNlYOKAmXMgZnVsZmlsbG1lbnQgdmFsdWUgYXMg
aXRzICIgKworICAgICAgICAgICAgICJmaXJzdCBhcmd1bWVudC4iLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgIHRlc3RGdWxmaWxsZWQoc2VudGluZWwsIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7
CisgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxsZWQodmFsdWUpIHsK
KyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFsdWUsIHNlbnRpbmVsKTsKKyAg
ICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAg
fSk7CisKKyAgICBkZXNjcmliZSgiMi4yLjIuMjogaXQgbXVzdCBub3QgYmUgY2FsbGVkIGJlZm9y
ZSBgcHJvbWlzZWAgaXMgZnVsZmlsbGVkIiwgZnVuY3Rpb24gKCkgeworICAgICAgICBzcGVjaWZ5
KCJmdWxmaWxsZWQgYWZ0ZXIgYSBkZWxheSIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAg
ICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICB2YXIgaXNGdWxmaWxsZWQgPSBmYWxz
ZTsKKworICAgICAgICAgICAgZC5wcm9taXNlLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxsZWQoKSB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzRnVsZmlsbGVkLCB0cnVlKTsK
KyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZC5yZXNvbHZlKGR1bW15
KTsKKyAgICAgICAgICAgICAgICBpc0Z1bGZpbGxlZCA9IHRydWU7CisgICAgICAgICAgICB9LCA1
MCk7CisgICAgICAgIH0pOworCisgICAgICAgIHNwZWNpZnkoIm5ldmVyIGZ1bGZpbGxlZCIsIGZ1
bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAg
ICAgICB2YXIgb25GdWxmaWxsZWRDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICAgICAgZC5wcm9t
aXNlLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxsZWQoKSB7CisgICAgICAgICAgICAgICAgb25GdWxm
aWxsZWRDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwob25GdWxmaWxsZWRDYWxsZWQsIGZhbHNlKTsKKyAgICAg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9LCAxNTApOworICAgICAgICB9KTsKKyAg
ICB9KTsKKworICAgIGRlc2NyaWJlKCIyLjIuMi4zOiBpdCBtdXN0IG5vdCBiZSBjYWxsZWQgbW9y
ZSB0aGFuIG9uY2UuIiwgZnVuY3Rpb24gKCkgeworICAgICAgICBzcGVjaWZ5KCJhbHJlYWR5LWZ1
bGZpbGxlZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICB2YXIgdGltZXNDYWxsZWQg
PSAwOworCisgICAgICAgICAgICByZXNvbHZlZChkdW1teSkudGhlbihmdW5jdGlvbiBvbkZ1bGZp
bGxlZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoKyt0aW1lc0NhbGxl
ZCwgMSk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworCisgICAgICAgIHNwZWNpZnkoInRyeWluZyB0byBmdWxmaWxsIGEgcGVuZGluZyBwcm9t
aXNlIG1vcmUgdGhhbiBvbmNlLCBpbW1lZGlhdGVseSIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAg
ICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICB2YXIgdGltZXNDYWxsZWQg
PSAwOworCisgICAgICAgICAgICBkLnByb21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgp
IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoKyt0aW1lc0NhbGxlZCwgMSk7
CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
IGQucmVzb2x2ZShkdW1teSk7CisgICAgICAgICAgICBkLnJlc29sdmUoZHVtbXkpOworICAgICAg
ICB9KTsKKworICAgICAgICBzcGVjaWZ5KCJ0cnlpbmcgdG8gZnVsZmlsbCBhIHBlbmRpbmcgcHJv
bWlzZSBtb3JlIHRoYW4gb25jZSwgZGVsYXllZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAg
ICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICB2YXIgdGltZXNDYWxsZWQgPSAw
OworCisgICAgICAgICAgICBkLnByb21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsK
KyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoKyt0aW1lc0NhbGxlZCwgMSk7Cisg
ICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGQucmVzb2x2ZShkdW1teSk7
CisgICAgICAgICAgICAgICAgZC5yZXNvbHZlKGR1bW15KTsKKyAgICAgICAgICAgIH0sIDUwKTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgc3BlY2lmeSgidHJ5aW5nIHRvIGZ1bGZpbGwgYSBwZW5k
aW5nIHByb21pc2UgbW9yZSB0aGFuIG9uY2UsIGltbWVkaWF0ZWx5IHRoZW4gZGVsYXllZCIsIGZ1
bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAg
ICAgICB2YXIgdGltZXNDYWxsZWQgPSAwOworCisgICAgICAgICAgICBkLnByb21pc2UudGhlbihm
dW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoKyt0aW1lc0NhbGxlZCwgMSk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgIGQucmVzb2x2ZShkdW1teSk7CisgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBkLnJlc29sdmUoZHVtbXkpOwor
ICAgICAgICAgICAgfSwgNTApOworICAgICAgICB9KTsKKworICAgICAgICBzcGVjaWZ5KCJ3aGVu
IG11bHRpcGxlIGB0aGVuYCBjYWxscyBhcmUgbWFkZSwgc3BhY2VkIGFwYXJ0IGluIHRpbWUiLCBm
dW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAg
ICAgICAgdmFyIHRpbWVzQ2FsbGVkID0gWzAsIDAsIDBdOworCisgICAgICAgICAgICBkLnByb21p
c2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoKyt0aW1lc0NhbGxlZFswXSwgMSk7CisgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZC5wcm9t
aXNlLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxsZWQoKSB7CisgICAgICAgICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkWzFdLCAxKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0sIDUwKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgZC5wcm9taXNlLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxs
ZWQoKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2Fs
bGVkWzJdLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSwgMTAwKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZC5yZXNvbHZlKGR1bW15KTsKKyAgICAgICAgICAg
IH0sIDE1MCk7CisgICAgICAgIH0pOworCisgICAgICAgIHNwZWNpZnkoIndoZW4gYHRoZW5gIGlz
IGludGVybGVhdmVkIHdpdGggZnVsZmlsbG1lbnQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAg
ICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAgICAgdmFyIHRpbWVzQ2FsbGVkID0g
WzAsIDBdOworCisgICAgICAgICAgICBkLnByb21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxl
ZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoKyt0aW1lc0NhbGxlZFsw
XSwgMSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZC5yZXNvbHZlKGR1bW15KTsK
KworICAgICAgICAgICAgZC5wcm9taXNlLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxsZWQoKSB7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCsrdGltZXNDYWxsZWRbMV0sIDEpOwor
ICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg
ICB9KTsKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJv
bWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi4zLmpzIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMt
dGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi4zLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmMGIx
NGZkYWM1MGI3NmI3OTMxM2FlODg5ZDJhNGYxMjkxYzQxMGIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4y
LjMuanMKQEAgLTAsMCArMSwxNTEgQEAKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIGFzc2VydCA9IHJl
cXVpcmUoImFzc2VydCIpOwordmFyIHRlc3RSZWplY3RlZCA9IHJlcXVpcmUoIi4vaGVscGVycy90
ZXN0VGhyZWVDYXNlcyIpLnRlc3RSZWplY3RlZDsKKwordmFyIGFkYXB0ZXIgPSBnbG9iYWwuYWRh
cHRlcjsKK3ZhciByZWplY3RlZCA9IGFkYXB0ZXIucmVqZWN0ZWQ7Cit2YXIgZGVmZXJyZWQgPSBh
ZGFwdGVyLmRlZmVycmVkOworCit2YXIgZHVtbXkgPSB7IGR1bW15OiAiZHVtbXkiIH07IC8vIHdl
IGZ1bGZpbGwgb3IgcmVqZWN0IHdpdGggdGhpcyB3aGVuIHdlIGRvbid0IGludGVuZCB0byB0ZXN0
IGFnYWluc3QgaXQKK3ZhciBzZW50aW5lbCA9IHsgc2VudGluZWw6ICJzZW50aW5lbCIgfTsgLy8g
YSBzZW50aW5lbCBmdWxmaWxsbWVudCB2YWx1ZSB0byB0ZXN0IGZvciB3aXRoIHN0cmljdCBlcXVh
bGl0eQorCitkZXNjcmliZSgiMi4yLjM6IElmIGBvblJlamVjdGVkYCBpcyBhIGZ1bmN0aW9uLCIs
IGZ1bmN0aW9uICgpIHsKKyAgICBkZXNjcmliZSgiMi4yLjMuMTogaXQgbXVzdCBiZSBjYWxsZWQg
YWZ0ZXIgYHByb21pc2VgIGlzIHJlamVjdGVkLCB3aXRoIGBwcm9taXNlYOKAmXMgcmVqZWN0aW9u
IHJlYXNvbiBhcyBpdHMgIiArCisgICAgICAgICAgICAgImZpcnN0IGFyZ3VtZW50LiIsIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgdGVzdFJlamVjdGVkKHNlbnRpbmVsLCBmdW5jdGlvbiAocHJvbWlz
ZSwgZG9uZSkgeworICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUmVq
ZWN0ZWQocmVhc29uKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNv
biwgc2VudGluZWwpOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCIyLjIuMy4yOiBpdCBtdXN0IG5v
dCBiZSBjYWxsZWQgYmVmb3JlIGBwcm9taXNlYCBpcyByZWplY3RlZCIsIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgc3BlY2lmeSgicmVqZWN0ZWQgYWZ0ZXIgYSBkZWxheSIsIGZ1bmN0aW9uIChkb25l
KSB7CisgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICB2YXIgaXNS
ZWplY3RlZCA9IGZhbHNlOworCisgICAgICAgICAgICBkLnByb21pc2UudGhlbihudWxsLCBmdW5j
dGlvbiBvblJlamVjdGVkKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChp
c1JlamVjdGVkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgZC5yZWplY3QoZHVtbXkpOworICAgICAgICAgICAgICAgIGlzUmVqZWN0ZWQgPSB0cnVlOwor
ICAgICAgICAgICAgfSwgNTApOworICAgICAgICB9KTsKKworICAgICAgICBzcGVjaWZ5KCJuZXZl
ciByZWplY3RlZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICB2YXIgZCA9IGRlZmVy
cmVkKCk7CisgICAgICAgICAgICB2YXIgb25SZWplY3RlZENhbGxlZCA9IGZhbHNlOworCisgICAg
ICAgICAgICBkLnByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAg
ICAgICAgICAgICAgIG9uUmVqZWN0ZWRDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGRv
bmUoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwob25SZWplY3RlZENhbGxl
ZCwgZmFsc2UpOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0sIDE1MCk7
CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoIjIuMi4zLjM6IGl0IG11c3Qg
bm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZS4iLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHNw
ZWNpZnkoImFscmVhZHktcmVqZWN0ZWQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAg
dmFyIHRpbWVzQ2FsbGVkID0gMDsKKworICAgICAgICAgICAgcmVqZWN0ZWQoZHVtbXkpLnRoZW4o
bnVsbCwgZnVuY3Rpb24gb25SZWplY3RlZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoKyt0aW1lc0NhbGxlZCwgMSk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIHNwZWNpZnkoInRyeWluZyB0byBy
ZWplY3QgYSBwZW5kaW5nIHByb21pc2UgbW9yZSB0aGFuIG9uY2UsIGltbWVkaWF0ZWx5IiwgZnVu
Y3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAg
ICAgIHZhciB0aW1lc0NhbGxlZCA9IDA7CisKKyAgICAgICAgICAgIGQucHJvbWlzZS50aGVuKG51
bGwsIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKCsrdGltZXNDYWxsZWQsIDEpOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAg
ICAgICAgIH0pOworCisgICAgICAgICAgICBkLnJlamVjdChkdW1teSk7CisgICAgICAgICAgICBk
LnJlamVjdChkdW1teSk7CisgICAgICAgIH0pOworCisgICAgICAgIHNwZWNpZnkoInRyeWluZyB0
byByZWplY3QgYSBwZW5kaW5nIHByb21pc2UgbW9yZSB0aGFuIG9uY2UsIGRlbGF5ZWQiLCBmdW5j
dGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAg
ICAgdmFyIHRpbWVzQ2FsbGVkID0gMDsKKworICAgICAgICAgICAgZC5wcm9taXNlLnRoZW4obnVs
bCwgZnVuY3Rpb24gb25SZWplY3RlZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoKyt0aW1lc0NhbGxlZCwgMSk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgIGQucmVqZWN0KGR1bW15KTsKKyAgICAgICAgICAgICAgICBkLnJlamVjdChkdW1t
eSk7CisgICAgICAgICAgICB9LCA1MCk7CisgICAgICAgIH0pOworCisgICAgICAgIHNwZWNpZnko
InRyeWluZyB0byByZWplY3QgYSBwZW5kaW5nIHByb21pc2UgbW9yZSB0aGFuIG9uY2UsIGltbWVk
aWF0ZWx5IHRoZW4gZGVsYXllZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICB2YXIg
ZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICB2YXIgdGltZXNDYWxsZWQgPSAwOworCisgICAg
ICAgICAgICBkLnByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAg
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkLCAxKTsKKyAgICAg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZC5yZWpl
Y3QoZHVtbXkpOworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgZC5yZWplY3QoZHVtbXkpOworICAgICAgICAgICAgfSwgNTApOworICAgICAgICB9
KTsKKworICAgICAgICBzcGVjaWZ5KCJ3aGVuIG11bHRpcGxlIGB0aGVuYCBjYWxscyBhcmUgbWFk
ZSwgc3BhY2VkIGFwYXJ0IGluIHRpbWUiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAg
dmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAgICAgdmFyIHRpbWVzQ2FsbGVkID0gWzAsIDAs
IDBdOworCisgICAgICAgICAgICBkLnByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBvblJlamVj
dGVkKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVk
WzBdLCAxKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICBkLnByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBv
blJlamVjdGVkKCkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoKyt0
aW1lc0NhbGxlZFsxXSwgMSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LCA1
MCk7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgIGQucHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAg
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkWzJdLCAxKTsKKyAg
ICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSwgMTAwKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgZC5yZWplY3QoZHVtbXkpOworICAgICAgICAgICAgfSwgMTUwKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgc3BlY2lmeSgid2hlbiBgdGhlbmAgaXMgaW50ZXJsZWF2ZWQgd2l0
aCByZWplY3Rpb24iLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFyIGQgPSBkZWZl
cnJlZCgpOworICAgICAgICAgICAgdmFyIHRpbWVzQ2FsbGVkID0gWzAsIDBdOworCisgICAgICAg
ICAgICBkLnByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAgICAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkWzBdLCAxKTsKKyAgICAg
ICAgICAgIH0pOworCisgICAgICAgICAgICBkLnJlamVjdChkdW1teSk7CisKKyAgICAgICAgICAg
IGQucHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCsrdGltZXNDYWxsZWRbMV0sIDEpOworICAgICAgICAg
ICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30p
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVz
dHMvbGliL3Rlc3RzLzIuMi40LmpzIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJv
bWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi40LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzNTkxZDI5MTY0MjBl
MjZlZDNlOWZjYTRjNjU0ZDI2YWY1ZmFlYjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4yLjQuanMKQEAg
LTAsMCArMSwxODIgQEAKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIGFzc2VydCA9IHJlcXVpcmUoImFz
c2VydCIpOwordmFyIHRlc3RGdWxmaWxsZWQgPSByZXF1aXJlKCIuL2hlbHBlcnMvdGVzdFRocmVl
Q2FzZXMiKS50ZXN0RnVsZmlsbGVkOwordmFyIHRlc3RSZWplY3RlZCA9IHJlcXVpcmUoIi4vaGVs
cGVycy90ZXN0VGhyZWVDYXNlcyIpLnRlc3RSZWplY3RlZDsKKwordmFyIGFkYXB0ZXIgPSBnbG9i
YWwuYWRhcHRlcjsKK3ZhciByZXNvbHZlZCA9IGFkYXB0ZXIucmVzb2x2ZWQ7Cit2YXIgcmVqZWN0
ZWQgPSBhZGFwdGVyLnJlamVjdGVkOwordmFyIGRlZmVycmVkID0gYWRhcHRlci5kZWZlcnJlZDsK
KwordmFyIGR1bW15ID0geyBkdW1teTogImR1bW15IiB9OyAvLyB3ZSBmdWxmaWxsIG9yIHJlamVj
dCB3aXRoIHRoaXMgd2hlbiB3ZSBkb24ndCBpbnRlbmQgdG8gdGVzdCBhZ2FpbnN0IGl0CisKK2Rl
c2NyaWJlKCIyLjIuNDogYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgbXVzdCBub3QgYmUg
Y2FsbGVkIHVudGlsIHRoZSBleGVjdXRpb24gY29udGV4dCBzdGFjayBjb250YWlucyBvbmx5ICIg
KworICAgICAgICAgInBsYXRmb3JtIGNvZGUuIiwgZnVuY3Rpb24gKCkgeworICAgIGRlc2NyaWJl
KCJgdGhlbmAgcmV0dXJucyBiZWZvcmUgdGhlIHByb21pc2UgYmVjb21lcyBmdWxmaWxsZWQgb3Ig
cmVqZWN0ZWQiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRlc3RGdWxmaWxsZWQoZHVtbXksIGZ1
bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICB2YXIgdGhlbkhhc1JldHVybmVk
ID0gZmFsc2U7CisKKyAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxl
ZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGhlbkhhc1JldHVybmVk
LCB0cnVlKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgdGhlbkhhc1JldHVybmVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgICAgIHRl
c3RSZWplY3RlZChkdW1teSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAg
IHZhciB0aGVuSGFzUmV0dXJuZWQgPSBmYWxzZTsKKworICAgICAgICAgICAgcHJvbWlzZS50aGVu
KG51bGwsIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHRoZW5IYXNSZXR1cm5lZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgZG9uZSgp
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHRoZW5IYXNSZXR1cm5lZCA9IHRydWU7
CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoIkNsZWFuLXN0YWNrIGV4ZWN1
dGlvbiBvcmRlcmluZyB0ZXN0cyAoZnVsZmlsbG1lbnQgY2FzZSkiLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgIHNwZWNpZnkoIndoZW4gYG9uRnVsZmlsbGVkYCBpcyBhZGRlZCBpbW1lZGlhdGVseSBi
ZWZvcmUgdGhlIHByb21pc2UgaXMgZnVsZmlsbGVkIiwKKyAgICAgICAgICAgICAgICBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICB2YXIg
b25GdWxmaWxsZWRDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICAgICAgZC5wcm9taXNlLnRoZW4o
ZnVuY3Rpb24gb25GdWxmaWxsZWQoKSB7CisgICAgICAgICAgICAgICAgb25GdWxmaWxsZWRDYWxs
ZWQgPSB0cnVlOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGQucmVzb2x2ZShkdW1t
eSk7CisKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChvbkZ1bGZpbGxlZENhbGxlZCwg
ZmFsc2UpOworICAgICAgICB9KTsKKworICAgICAgICBzcGVjaWZ5KCJ3aGVuIGBvbkZ1bGZpbGxl
ZGAgaXMgYWRkZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHByb21pc2UgaXMgZnVsZmlsbGVkIiwK
KyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgZCA9IGRlZmVy
cmVkKCk7CisgICAgICAgICAgICB2YXIgb25GdWxmaWxsZWRDYWxsZWQgPSBmYWxzZTsKKworICAg
ICAgICAgICAgZC5yZXNvbHZlKGR1bW15KTsKKworICAgICAgICAgICAgZC5wcm9taXNlLnRoZW4o
ZnVuY3Rpb24gb25GdWxmaWxsZWQoKSB7CisgICAgICAgICAgICAgICAgb25GdWxmaWxsZWRDYWxs
ZWQgPSB0cnVlOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChvbkZ1bGZpbGxlZENhbGxlZCwgZmFsc2UpOworICAgICAgICB9KTsKKworICAgICAgICBz
cGVjaWZ5KCJ3aGVuIG9uZSBgb25GdWxmaWxsZWRgIGlzIGFkZGVkIGluc2lkZSBhbm90aGVyIGBv
bkZ1bGZpbGxlZGAiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFyIHByb21pc2Ug
PSByZXNvbHZlZCgpOworICAgICAgICAgICAgdmFyIGZpcnN0T25GdWxmaWxsZWRGaW5pc2hlZCA9
IGZhbHNlOworCisgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChmaXJzdE9uRnVsZmlsbGVkRmluaXNoZWQsIHRydWUpOworICAg
ICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgZmlyc3RPbkZ1bGZpbGxlZEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKKworICAgICAgICBzcGVjaWZ5KCJ3aGVuIGBvbkZ1bGZpbGxlZGAgaXMgYWRk
ZWQgaW5zaWRlIGFuIGBvblJlamVjdGVkYCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAg
ICB2YXIgcHJvbWlzZSA9IHJlamVjdGVkKCk7CisgICAgICAgICAgICB2YXIgcHJvbWlzZTIgPSBy
ZXNvbHZlZCgpOworICAgICAgICAgICAgdmFyIGZpcnN0T25SZWplY3RlZEZpbmlzaGVkID0gZmFs
c2U7CisKKyAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgcHJvbWlzZTIudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbChmaXJzdE9uUmVqZWN0ZWRGaW5pc2hlZCwgdHJ1ZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICBmaXJzdE9uUmVqZWN0ZWRGaW5pc2hlZCA9IHRydWU7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgc3BlY2lmeSgid2hlbiB0aGUgcHJvbWlzZSBpcyBmdWxm
aWxsZWQgYXN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFy
IGQgPSBkZWZlcnJlZCgpOworICAgICAgICAgICAgdmFyIGZpcnN0U3RhY2tGaW5pc2hlZCA9IGZh
bHNlOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICBkLnJlc29sdmUoZHVtbXkpOworICAgICAgICAgICAgICAgIGZpcnN0U3RhY2tGaW5pc2hl
ZCA9IHRydWU7CisgICAgICAgICAgICB9LCAwKTsKKworICAgICAgICAgICAgZC5wcm9taXNlLnRo
ZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChmaXJz
dFN0YWNrRmluaXNoZWQsIHRydWUpOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCJDbGVhbi1zdGFj
ayBleGVjdXRpb24gb3JkZXJpbmcgdGVzdHMgKHJlamVjdGlvbiBjYXNlKSIsIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgc3BlY2lmeSgid2hlbiBgb25SZWplY3RlZGAgaXMgYWRkZWQgaW1tZWRpYXRl
bHkgYmVmb3JlIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIiwKKyAgICAgICAgICAgICAgICBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICB2
YXIgb25SZWplY3RlZENhbGxlZCA9IGZhbHNlOworCisgICAgICAgICAgICBkLnByb21pc2UudGhl
bihudWxsLCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAgICAgICAgICAgICAgIG9uUmVqZWN0
ZWRDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGQucmVqZWN0
KGR1bW15KTsKKworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9uUmVqZWN0ZWRDYWxs
ZWQsIGZhbHNlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc3BlY2lmeSgid2hlbiBgb25SZWpl
Y3RlZGAgaXMgYWRkZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQi
LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZhciBkID0gZGVm
ZXJyZWQoKTsKKyAgICAgICAgICAgIHZhciBvblJlamVjdGVkQ2FsbGVkID0gZmFsc2U7CisKKyAg
ICAgICAgICAgIGQucmVqZWN0KGR1bW15KTsKKworICAgICAgICAgICAgZC5wcm9taXNlLnRoZW4o
bnVsbCwgZnVuY3Rpb24gb25SZWplY3RlZCgpIHsKKyAgICAgICAgICAgICAgICBvblJlamVjdGVk
Q2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwob25SZWplY3RlZENhbGxlZCwgZmFsc2UpOworICAgICAgICB9KTsKKworICAgICAg
ICBzcGVjaWZ5KCJ3aGVuIGBvblJlamVjdGVkYCBpcyBhZGRlZCBpbnNpZGUgYW4gYG9uRnVsZmls
bGVkYCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICB2YXIgcHJvbWlzZSA9IHJlc29s
dmVkKCk7CisgICAgICAgICAgICB2YXIgcHJvbWlzZTIgPSByZWplY3RlZCgpOworICAgICAgICAg
ICAgdmFyIGZpcnN0T25GdWxmaWxsZWRGaW5pc2hlZCA9IGZhbHNlOworCisgICAgICAgICAgICBw
cm9taXNlLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHByb21pc2UyLnRoZW4o
bnVsbCwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwoZmlyc3RPbkZ1bGZpbGxlZEZpbmlzaGVkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAg
ZG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGZpcnN0T25GdWxm
aWxsZWRGaW5pc2hlZCA9IHRydWU7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgc3BlY2lmeSgid2hlbiBvbmUgYG9uUmVqZWN0ZWRgIGlzIGFkZGVkIGluc2lkZSBhbm90
aGVyIGBvblJlamVjdGVkYCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICB2YXIgcHJv
bWlzZSA9IHJlamVjdGVkKCk7CisgICAgICAgICAgICB2YXIgZmlyc3RPblJlamVjdGVkRmluaXNo
ZWQgPSBmYWxzZTsKKworICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZmlyc3RPblJlamVjdGVkRmluaXNo
ZWQsIHRydWUpOworICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgZmlyc3RPblJlamVjdGVkRmluaXNoZWQgPSB0cnVlOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIHNwZWNpZnkoIndoZW4gdGhlIHBy
b21pc2UgaXMgcmVqZWN0ZWQgYXN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoZG9uZSkgeworICAg
ICAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAgICAgdmFyIGZpcnN0U3RhY2tG
aW5pc2hlZCA9IGZhbHNlOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICBkLnJlamVjdChkdW1teSk7CisgICAgICAgICAgICAgICAgZmlyc3RT
dGFja0ZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0sIDApOworCisgICAgICAgICAgICBk
LnByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKGZpcnN0U3RhY2tGaW5pc2hlZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAg
ZG9uZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfSk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIv
dGVzdHMvMi4yLjUuanMgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10
ZXN0cy9saWIvdGVzdHMvMi4yLjUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk2NjAwNDk4OTdlOTAxZDUwNzlj
YjA5ZWMyOGM5YzFiZjBkNTBjZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3By
b21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjIuNS5qcwpAQCAtMCwwICsx
LDQ3IEBACisvKmpzaGludCBzdHJpY3Q6IGZhbHNlICovCisKK3ZhciBhc3NlcnQgPSByZXF1aXJl
KCJhc3NlcnQiKTsKKwordmFyIGFkYXB0ZXIgPSBnbG9iYWwuYWRhcHRlcjsKK3ZhciByZXNvbHZl
ZCA9IGFkYXB0ZXIucmVzb2x2ZWQ7Cit2YXIgcmVqZWN0ZWQgPSBhZGFwdGVyLnJlamVjdGVkOwor
Cit2YXIgZHVtbXkgPSB7IGR1bW15OiAiZHVtbXkiIH07IC8vIHdlIGZ1bGZpbGwgb3IgcmVqZWN0
IHdpdGggdGhpcyB3aGVuIHdlIGRvbid0IGludGVuZCB0byB0ZXN0IGFnYWluc3QgaXQKKworZGVz
Y3JpYmUoIjIuMi41IGBvbkZ1bGZpbGxlZGAgYW5kIGBvblJlamVjdGVkYCBtdXN0IGJlIGNhbGxl
ZCBhcyBmdW5jdGlvbnMgKGkuZS4gd2l0aCBubyBgdGhpc2AgdmFsdWUpLiIsIGZ1bmN0aW9uICgp
IHsKKyAgICBkZXNjcmliZSgic3RyaWN0IG1vZGUiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHNw
ZWNpZnkoImZ1bGZpbGxlZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICByZXNvbHZl
ZChkdW1teSkudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgICAgICAi
dXNlIHN0cmljdCI7CisKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGhpcywg
dW5kZWZpbmVkKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgc3BlY2lmeSgicmVqZWN0ZWQiLCBmdW5jdGlvbiAoZG9uZSkg
eworICAgICAgICAgICAgcmVqZWN0ZWQoZHVtbXkpLnRoZW4obnVsbCwgZnVuY3Rpb24gb25SZWpl
Y3RlZCgpIHsKKyAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CisKKyAgICAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwodGhpcywgdW5kZWZpbmVkKTsKKyAgICAgICAgICAgICAgICBk
b25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNj
cmliZSgic2xvcHB5IG1vZGUiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHNwZWNpZnkoImZ1bGZp
bGxlZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICByZXNvbHZlZChkdW1teSkudGhl
bihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwodGhpcywgZ2xvYmFsKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc3BlY2lmeSgicmVqZWN0ZWQiLCBmdW5jdGlv
biAoZG9uZSkgeworICAgICAgICAgICAgcmVqZWN0ZWQoZHVtbXkpLnRoZW4obnVsbCwgZnVuY3Rp
b24gb25SZWplY3RlZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGhp
cywgZ2xvYmFsKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSk7CisgICAgfSk7Cit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Byb21p
c2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjIuNi5qcyBiL0xheW91dFRlc3Rz
L2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjIuNi5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42N2VjZjA2ZmY1MDQ3ZmQ3OWEyN2E5YTViZGEyNTQ1N2QzOWQ5NWVjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMv
bGliL3Rlc3RzLzIuMi42LmpzCkBAIC0wLDAgKzEsMjU3IEBACisidXNlIHN0cmljdCI7CisKK3Zh
ciBhc3NlcnQgPSByZXF1aXJlKCJhc3NlcnQiKTsKK3ZhciBzaW5vbiA9IHJlcXVpcmUoInNpbm9u
Iik7Cit2YXIgdGVzdEZ1bGZpbGxlZCA9IHJlcXVpcmUoIi4vaGVscGVycy90ZXN0VGhyZWVDYXNl
cyIpLnRlc3RGdWxmaWxsZWQ7Cit2YXIgdGVzdFJlamVjdGVkID0gcmVxdWlyZSgiLi9oZWxwZXJz
L3Rlc3RUaHJlZUNhc2VzIikudGVzdFJlamVjdGVkOworCit2YXIgZHVtbXkgPSB7IGR1bW15OiAi
ZHVtbXkiIH07IC8vIHdlIGZ1bGZpbGwgb3IgcmVqZWN0IHdpdGggdGhpcyB3aGVuIHdlIGRvbid0
IGludGVuZCB0byB0ZXN0IGFnYWluc3QgaXQKK3ZhciBvdGhlciA9IHsgb3RoZXI6ICJvdGhlciIg
fTsgLy8gYSB2YWx1ZSB3ZSBkb24ndCB3YW50IHRvIGJlIHN0cmljdCBlcXVhbCB0bwordmFyIHNl
bnRpbmVsID0geyBzZW50aW5lbDogInNlbnRpbmVsIiB9OyAvLyBhIHNlbnRpbmVsIGZ1bGZpbGxt
ZW50IHZhbHVlIHRvIHRlc3QgZm9yIHdpdGggc3RyaWN0IGVxdWFsaXR5Cit2YXIgc2VudGluZWwy
ID0geyBzZW50aW5lbDI6ICJzZW50aW5lbDIiIH07Cit2YXIgc2VudGluZWwzID0geyBzZW50aW5l
bDM6ICJzZW50aW5lbDMiIH07CisKK2Z1bmN0aW9uIGNhbGxiYWNrQWdncmVnYXRvcih0aW1lcywg
dWx0aW1hdGVDYWxsYmFjaykgeworICAgIHZhciBzb0ZhciA9IDA7CisgICAgcmV0dXJuIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgaWYgKCsrc29GYXIgPT09IHRpbWVzKSB7CisgICAgICAgICAgICB1
bHRpbWF0ZUNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAgICB9OworfQorCitkZXNjcmliZSgiMi4y
LjY6IGB0aGVuYCBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHByb21p
c2UuIiwgZnVuY3Rpb24gKCkgeworICAgIGRlc2NyaWJlKCIyLjIuNi4xOiBJZi93aGVuIGBwcm9t
aXNlYCBpcyBmdWxmaWxsZWQsIGFsbCByZXNwZWN0aXZlIGBvbkZ1bGZpbGxlZGAgY2FsbGJhY2tz
IG11c3QgZXhlY3V0ZSBpbiB0aGUgIiArCisgICAgICAgICAgICAgIm9yZGVyIG9mIHRoZWlyIG9y
aWdpbmF0aW5nIGNhbGxzIHRvIGB0aGVuYC4iLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRlc2Ny
aWJlKCJtdWx0aXBsZSBib3JpbmcgZnVsZmlsbG1lbnQgaGFuZGxlcnMiLCBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICB0ZXN0RnVsZmlsbGVkKHNlbnRpbmVsLCBmdW5jdGlvbiAocHJvbWlzZSwg
ZG9uZSkgeworICAgICAgICAgICAgICAgIHZhciBoYW5kbGVyMSA9IHNpbm9uLnN0dWIoKS5yZXR1
cm5zKG90aGVyKTsKKyAgICAgICAgICAgICAgICB2YXIgaGFuZGxlcjIgPSBzaW5vbi5zdHViKCku
cmV0dXJucyhvdGhlcik7CisgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIzID0gc2lub24uc3R1
YigpLnJldHVybnMob3RoZXIpOworCisgICAgICAgICAgICAgICAgdmFyIHNweSA9IHNpbm9uLnNw
eSgpOworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihoYW5kbGVyMSwgc3B5KTsKKyAgICAg
ICAgICAgICAgICBwcm9taXNlLnRoZW4oaGFuZGxlcjIsIHNweSk7CisgICAgICAgICAgICAgICAg
cHJvbWlzZS50aGVuKGhhbmRsZXIzLCBzcHkpOworCisgICAgICAgICAgICAgICAgcHJvbWlzZS50
aGVuKGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwodmFsdWUsIHNlbnRpbmVsKTsKKworICAgICAgICAgICAgICAgICAgICBzaW5vbi5hc3Nl
cnQuY2FsbGVkV2l0aChoYW5kbGVyMSwgc2lub24ubWF0Y2guc2FtZShzZW50aW5lbCkpOworICAg
ICAgICAgICAgICAgICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChoYW5kbGVyMiwgc2lub24u
bWF0Y2guc2FtZShzZW50aW5lbCkpOworICAgICAgICAgICAgICAgICAgICBzaW5vbi5hc3NlcnQu
Y2FsbGVkV2l0aChoYW5kbGVyMywgc2lub24ubWF0Y2guc2FtZShzZW50aW5lbCkpOworICAgICAg
ICAgICAgICAgICAgICBzaW5vbi5hc3NlcnQubm90Q2FsbGVkKHNweSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0pOworCisgICAgICAgIGRlc2NyaWJlKCJtdWx0aXBsZSBmdWxmaWxsbWVudCBoYW5k
bGVycywgb25lIG9mIHdoaWNoIHRocm93cyIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRl
c3RGdWxmaWxsZWQoc2VudGluZWwsIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAg
ICAgICAgICAgdmFyIGhhbmRsZXIxID0gc2lub24uc3R1YigpLnJldHVybnMob3RoZXIpOworICAg
ICAgICAgICAgICAgIHZhciBoYW5kbGVyMiA9IHNpbm9uLnN0dWIoKS50aHJvd3Mob3RoZXIpOwor
ICAgICAgICAgICAgICAgIHZhciBoYW5kbGVyMyA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG90aGVy
KTsKKworICAgICAgICAgICAgICAgIHZhciBzcHkgPSBzaW5vbi5zcHkoKTsKKyAgICAgICAgICAg
ICAgICBwcm9taXNlLnRoZW4oaGFuZGxlcjEsIHNweSk7CisgICAgICAgICAgICAgICAgcHJvbWlz
ZS50aGVuKGhhbmRsZXIyLCBzcHkpOworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihoYW5k
bGVyMywgc3B5KTsKKworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAodmFs
dWUpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbHVlLCBzZW50
aW5lbCk7CisKKyAgICAgICAgICAgICAgICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgoaGFu
ZGxlcjEsIHNpbm9uLm1hdGNoLnNhbWUoc2VudGluZWwpKTsKKyAgICAgICAgICAgICAgICAgICAg
c2lub24uYXNzZXJ0LmNhbGxlZFdpdGgoaGFuZGxlcjIsIHNpbm9uLm1hdGNoLnNhbWUoc2VudGlu
ZWwpKTsKKyAgICAgICAgICAgICAgICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgoaGFuZGxl
cjMsIHNpbm9uLm1hdGNoLnNhbWUoc2VudGluZWwpKTsKKyAgICAgICAgICAgICAgICAgICAgc2lu
b24uYXNzZXJ0Lm5vdENhbGxlZChzcHkpOworCisgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsK
KyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAg
ICAgICBkZXNjcmliZSgicmVzdWx0cyBpbiBtdWx0aXBsZSBicmFuY2hpbmcgY2hhaW5zIHdpdGgg
dGhlaXIgb3duIGZ1bGZpbGxtZW50IHZhbHVlcyIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IHRlc3RGdWxmaWxsZWQoZHVtbXksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAg
ICAgICAgICAgdmFyIHNlbWlEb25lID0gY2FsbGJhY2tBZ2dyZWdhdG9yKDMsIGRvbmUpOworCisg
ICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHNlbnRpbmVsOworICAgICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24g
KHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWx1ZSwg
c2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICBzZW1pRG9uZSgpOworICAgICAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgc2VudGluZWwyOworICAgICAgICAgICAgICAgIH0pLnRo
ZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwocmVhc29uLCBzZW50aW5lbDIpOworICAgICAgICAgICAgICAgICAgICBzZW1p
RG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgcHJvbWlzZS50
aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbnRpbmVsMzsK
KyAgICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICAgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFsdWUsIHNlbnRpbmVsMyk7CisgICAgICAgICAg
ICAgICAgICAgIHNlbWlEb25lKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3JpYmUoImBvbkZ1bGZpbGxlZGAgaGFuZGxl
cnMgYXJlIGNhbGxlZCBpbiB0aGUgb3JpZ2luYWwgb3JkZXIiLCBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICB0ZXN0RnVsZmlsbGVkKGR1bW15LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgewor
ICAgICAgICAgICAgICAgIHZhciBoYW5kbGVyMSA9IHNpbm9uLnNweShmdW5jdGlvbiBoYW5kbGVy
MSgpIHt9KTsKKyAgICAgICAgICAgICAgICB2YXIgaGFuZGxlcjIgPSBzaW5vbi5zcHkoZnVuY3Rp
b24gaGFuZGxlcjIoKSB7fSk7CisgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIzID0gc2lub24u
c3B5KGZ1bmN0aW9uIGhhbmRsZXIzKCkge30pOworCisgICAgICAgICAgICAgICAgcHJvbWlzZS50
aGVuKGhhbmRsZXIxKTsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oaGFuZGxlcjIpOwor
ICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihoYW5kbGVyMyk7CisKKyAgICAgICAgICAgICAg
ICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBzaW5vbi5h
c3NlcnQuY2FsbE9yZGVyKGhhbmRsZXIxLCBoYW5kbGVyMiwgaGFuZGxlcjMpOworICAgICAgICAg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgZGVzY3JpYmUoImV2ZW4gd2hlbiBvbmUgaGFuZGxlciBpcyBhZGRlZCBp
bnNpZGUgYW5vdGhlciBoYW5kbGVyIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHRl
c3RGdWxmaWxsZWQoZHVtbXksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAg
ICAgICAgICAgIHZhciBoYW5kbGVyMSA9IHNpbm9uLnNweShmdW5jdGlvbiBoYW5kbGVyMSgpIHt9
KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIyID0gc2lub24uc3B5KGZ1bmN0aW9u
IGhhbmRsZXIyKCkge30pOworICAgICAgICAgICAgICAgICAgICB2YXIgaGFuZGxlcjMgPSBzaW5v
bi5zcHkoZnVuY3Rpb24gaGFuZGxlcjMoKSB7fSk7CisKKyAgICAgICAgICAgICAgICAgICAgcHJv
bWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIx
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oaGFuZGxlcjMpOworICAg
ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGhh
bmRsZXIyKTsKKworICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2l2ZSBpbXBsZW1lbnRhdGlvbnMgYSBiaXQg
b2YgZXh0cmEgdGltZSB0byBmbHVzaCB0aGVpciBpbnRlcm5hbCBxdWV1ZSwgaWYgbmVjZXNzYXJ5
LgorICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2lub24uYXNzZXJ0LmNhbGxPcmRlcihoYW5kbGVyMSwg
aGFuZGxlcjIsIGhhbmRsZXIzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9LCAxNSk7CisgICAgICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAg
IH0pOworCisgICAgZGVzY3JpYmUoIjIuMi42LjI6IElmL3doZW4gYHByb21pc2VgIGlzIHJlamVj
dGVkLCBhbGwgcmVzcGVjdGl2ZSBgb25SZWplY3RlZGAgY2FsbGJhY2tzIG11c3QgZXhlY3V0ZSBp
biB0aGUgIiArCisgICAgICAgICAgICAgIm9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5nIGNhbGxz
IHRvIGB0aGVuYC4iLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRlc2NyaWJlKCJtdWx0aXBsZSBi
b3JpbmcgcmVqZWN0aW9uIGhhbmRsZXJzIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGVz
dFJlamVjdGVkKHNlbnRpbmVsLCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAg
ICAgICAgIHZhciBoYW5kbGVyMSA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG90aGVyKTsKKyAgICAg
ICAgICAgICAgICB2YXIgaGFuZGxlcjIgPSBzaW5vbi5zdHViKCkucmV0dXJucyhvdGhlcik7Cisg
ICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIzID0gc2lub24uc3R1YigpLnJldHVybnMob3RoZXIp
OworCisgICAgICAgICAgICAgICAgdmFyIHNweSA9IHNpbm9uLnNweSgpOworICAgICAgICAgICAg
ICAgIHByb21pc2UudGhlbihzcHksIGhhbmRsZXIxKTsKKyAgICAgICAgICAgICAgICBwcm9taXNl
LnRoZW4oc3B5LCBoYW5kbGVyMik7CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKHNweSwg
aGFuZGxlcjMpOworCisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9u
IChyZWFzb24pIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNv
biwgc2VudGluZWwpOworCisgICAgICAgICAgICAgICAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRX
aXRoKGhhbmRsZXIxLCBzaW5vbi5tYXRjaC5zYW1lKHNlbnRpbmVsKSk7CisgICAgICAgICAgICAg
ICAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKGhhbmRsZXIyLCBzaW5vbi5tYXRjaC5zYW1l
KHNlbnRpbmVsKSk7CisgICAgICAgICAgICAgICAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRo
KGhhbmRsZXIzLCBzaW5vbi5tYXRjaC5zYW1lKHNlbnRpbmVsKSk7CisgICAgICAgICAgICAgICAg
ICAgIHNpbm9uLmFzc2VydC5ub3RDYWxsZWQoc3B5KTsKKworICAgICAgICAgICAgICAgICAgICBk
b25lKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgZGVzY3JpYmUoIm11bHRpcGxlIHJlamVjdGlvbiBoYW5kbGVycywgb25lIG9m
IHdoaWNoIHRocm93cyIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRlc3RSZWplY3RlZChz
ZW50aW5lbCwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICB2YXIg
aGFuZGxlcjEgPSBzaW5vbi5zdHViKCkucmV0dXJucyhvdGhlcik7CisgICAgICAgICAgICAgICAg
dmFyIGhhbmRsZXIyID0gc2lub24uc3R1YigpLnRocm93cyhvdGhlcik7CisgICAgICAgICAgICAg
ICAgdmFyIGhhbmRsZXIzID0gc2lub24uc3R1YigpLnJldHVybnMob3RoZXIpOworCisgICAgICAg
ICAgICAgICAgdmFyIHNweSA9IHNpbm9uLnNweSgpOworICAgICAgICAgICAgICAgIHByb21pc2Uu
dGhlbihzcHksIGhhbmRsZXIxKTsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oc3B5LCBo
YW5kbGVyMik7CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKHNweSwgaGFuZGxlcjMpOwor
CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIChyZWFzb24pIHsK
KyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgc2VudGluZWwp
OworCisgICAgICAgICAgICAgICAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKGhhbmRsZXIx
LCBzaW5vbi5tYXRjaC5zYW1lKHNlbnRpbmVsKSk7CisgICAgICAgICAgICAgICAgICAgIHNpbm9u
LmFzc2VydC5jYWxsZWRXaXRoKGhhbmRsZXIyLCBzaW5vbi5tYXRjaC5zYW1lKHNlbnRpbmVsKSk7
CisgICAgICAgICAgICAgICAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKGhhbmRsZXIzLCBz
aW5vbi5tYXRjaC5zYW1lKHNlbnRpbmVsKSk7CisgICAgICAgICAgICAgICAgICAgIHNpbm9uLmFz
c2VydC5ub3RDYWxsZWQoc3B5KTsKKworICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
ZGVzY3JpYmUoInJlc3VsdHMgaW4gbXVsdGlwbGUgYnJhbmNoaW5nIGNoYWlucyB3aXRoIHRoZWly
IG93biBmdWxmaWxsbWVudCB2YWx1ZXMiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0
UmVqZWN0ZWQoc2VudGluZWwsIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAg
ICAgICAgdmFyIHNlbWlEb25lID0gY2FsbGJhY2tBZ2dyZWdhdG9yKDMsIGRvbmUpOworCisgICAg
ICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHNlbnRpbmVsOworICAgICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rp
b24gKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWx1
ZSwgc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICBzZW1pRG9uZSgpOworICAgICAgICAg
ICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgc2VudGluZWwyOworICAgICAgICAgICAg
ICAgIH0pLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29uLCBzZW50aW5lbDIpOworICAgICAgICAgICAgICAg
ICAgICBzZW1pRG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAg
cHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHNlbnRpbmVsMzsKKyAgICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkg
eworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFsdWUsIHNlbnRpbmVs
Myk7CisgICAgICAgICAgICAgICAgICAgIHNlbWlEb25lKCk7CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3JpYmUoImBvblJl
amVjdGVkYCBoYW5kbGVycyBhcmUgY2FsbGVkIGluIHRoZSBvcmlnaW5hbCBvcmRlciIsIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIHRlc3RSZWplY3RlZChkdW1teSwgZnVuY3Rpb24gKHByb21p
c2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICB2YXIgaGFuZGxlcjEgPSBzaW5vbi5zcHkoZnVu
Y3Rpb24gaGFuZGxlcjEoKSB7fSk7CisgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIyID0gc2lu
b24uc3B5KGZ1bmN0aW9uIGhhbmRsZXIyKCkge30pOworICAgICAgICAgICAgICAgIHZhciBoYW5k
bGVyMyA9IHNpbm9uLnNweShmdW5jdGlvbiBoYW5kbGVyMygpIHt9KTsKKworICAgICAgICAgICAg
ICAgIHByb21pc2UudGhlbihudWxsLCBoYW5kbGVyMSk7CisgICAgICAgICAgICAgICAgcHJvbWlz
ZS50aGVuKG51bGwsIGhhbmRsZXIyKTsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4obnVs
bCwgaGFuZGxlcjMpOworCisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgc2lub24uYXNzZXJ0LmNhbGxPcmRlcihoYW5k
bGVyMSwgaGFuZGxlcjIsIGhhbmRsZXIzKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlc2Ny
aWJlKCJldmVuIHdoZW4gb25lIGhhbmRsZXIgaXMgYWRkZWQgaW5zaWRlIGFub3RoZXIgaGFuZGxl
ciIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UmVqZWN0ZWQoZHVtbXksIGZ1
bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBoYW5kbGVy
MSA9IHNpbm9uLnNweShmdW5jdGlvbiBoYW5kbGVyMSgpIHt9KTsKKyAgICAgICAgICAgICAgICAg
ICAgdmFyIGhhbmRsZXIyID0gc2lub24uc3B5KGZ1bmN0aW9uIGhhbmRsZXIyKCkge30pOworICAg
ICAgICAgICAgICAgICAgICB2YXIgaGFuZGxlcjMgPSBzaW5vbi5zcHkoZnVuY3Rpb24gaGFuZGxl
cjMoKSB7fSk7CisKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIxKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgaGFuZGxlcjMpOworICAgICAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGhhbmRs
ZXIyKTsKKworICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2l2ZSBpbXBsZW1lbnRhdGlvbnMgYSBi
aXQgb2YgZXh0cmEgdGltZSB0byBmbHVzaCB0aGVpciBpbnRlcm5hbCBxdWV1ZSwgaWYgbmVjZXNz
YXJ5LgorICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lub24uYXNzZXJ0LmNhbGxPcmRlcihoYW5kbGVy
MSwgaGFuZGxlcjIsIGhhbmRsZXIzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25l
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9LCAxNSk7CisgICAgICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor
ICAgIH0pOworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9w
cm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4yLjcuanMgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNl
cy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4yLjcuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDhl
NmNhMzVkZTY3MTM5NTdmNjhjMTA3MzZiMzUwNTM0Mzc1N2Y1OQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8y
LjIuNy5qcwpAQCAtMCwwICsxLDEwOSBAQAorInVzZSBzdHJpY3QiOworCit2YXIgYXNzZXJ0ID0g
cmVxdWlyZSgiYXNzZXJ0Iik7Cit2YXIgdGVzdEZ1bGZpbGxlZCA9IHJlcXVpcmUoIi4vaGVscGVy
cy90ZXN0VGhyZWVDYXNlcyIpLnRlc3RGdWxmaWxsZWQ7Cit2YXIgdGVzdFJlamVjdGVkID0gcmVx
dWlyZSgiLi9oZWxwZXJzL3Rlc3RUaHJlZUNhc2VzIikudGVzdFJlamVjdGVkOwordmFyIHJlYXNv
bnMgPSByZXF1aXJlKCIuL2hlbHBlcnMvcmVhc29ucyIpOworCit2YXIgYWRhcHRlciA9IGdsb2Jh
bC5hZGFwdGVyOwordmFyIGRlZmVycmVkID0gYWRhcHRlci5kZWZlcnJlZDsKKwordmFyIGR1bW15
ID0geyBkdW1teTogImR1bW15IiB9OyAvLyB3ZSBmdWxmaWxsIG9yIHJlamVjdCB3aXRoIHRoaXMg
d2hlbiB3ZSBkb24ndCBpbnRlbmQgdG8gdGVzdCBhZ2FpbnN0IGl0Cit2YXIgc2VudGluZWwgPSB7
IHNlbnRpbmVsOiAic2VudGluZWwiIH07IC8vIGEgc2VudGluZWwgZnVsZmlsbG1lbnQgdmFsdWUg
dG8gdGVzdCBmb3Igd2l0aCBzdHJpY3QgZXF1YWxpdHkKK3ZhciBvdGhlciA9IHsgb3RoZXI6ICJv
dGhlciIgfTsgLy8gYSB2YWx1ZSB3ZSBkb24ndCB3YW50IHRvIGJlIHN0cmljdCBlcXVhbCB0bwor
CitkZXNjcmliZSgiMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNl
MiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCIsIGZ1bmN0aW9uICgp
IHsKKyAgICBzcGVjaWZ5KCJpcyBhIHByb21pc2UiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZh
ciBwcm9taXNlMSA9IGRlZmVycmVkKCkucHJvbWlzZTsKKyAgICAgICAgdmFyIHByb21pc2UyID0g
cHJvbWlzZTEudGhlbigpOworCisgICAgICAgIGFzc2VydCh0eXBlb2YgcHJvbWlzZTIgPT09ICJv
YmplY3QiIHx8IHR5cGVvZiBwcm9taXNlMiA9PT0gImZ1bmN0aW9uIik7CisgICAgICAgIGFzc2Vy
dC5ub3RTdHJpY3RFcXVhbChwcm9taXNlMiwgbnVsbCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbCh0eXBlb2YgcHJvbWlzZTIudGhlbiwgImZ1bmN0aW9uIik7CisgICAgfSk7CisKKyAgICBk
ZXNjcmliZSgiMi4yLjcuMTogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRg
IHJldHVybnMgYSB2YWx1ZSBgeGAsIHJ1biB0aGUgUHJvbWlzZSBSZXNvbHV0aW9uICIgKworICAg
ICAgICAgICAgICJQcm9jZWR1cmUgYFtbUmVzb2x2ZV1dKHByb21pc2UyLCB4KWAiLCBmdW5jdGlv
biAoKSB7CisgICAgICAgIHNwZWNpZnkoInNlZSBzZXBhcmF0ZSAzLjMgdGVzdHMiLCBmdW5jdGlv
biAoKSB7IH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoIjIuMi43LjI6IElmIGVpdGhlciBg
b25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHBy
b21pc2UyYCBtdXN0IGJlIHJlamVjdGVkICIgKworICAgICAgICAgICAgICJ3aXRoIGBlYCBhcyB0
aGUgcmVhc29uLiIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZnVuY3Rpb24gdGVzdFJlYXNvbihl
eHBlY3RlZFJlYXNvbiwgc3RyaW5nUmVwcmVzZW50YXRpb24pIHsKKyAgICAgICAgICAgIGRlc2Ny
aWJlKCJUaGUgcmVhc29uIGlzICIgKyBzdHJpbmdSZXByZXNlbnRhdGlvbiwgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgIHRlc3RGdWxmaWxsZWQoZHVtbXksIGZ1bmN0aW9uIChwcm9taXNl
MSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgcHJvbWlzZTIgPSBwcm9taXNlMS50
aGVuKGZ1bmN0aW9uIG9uRnVsZmlsbGVkKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhy
b3cgZXhwZWN0ZWRSZWFzb247CisgICAgICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICAgICAgICAgIHByb21pc2UyLnRoZW4obnVsbCwgZnVuY3Rpb24gb25Qcm9taXNlMlJlamVjdGVk
KGFjdHVhbFJlYXNvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKGFjdHVhbFJlYXNvbiwgZXhwZWN0ZWRSZWFzb24pOworICAgICAgICAgICAgICAgICAgICAg
ICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgICAgICB0ZXN0UmVqZWN0ZWQoZHVtbXksIGZ1bmN0aW9uIChwcm9taXNlMSwg
ZG9uZSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVu
KG51bGwsIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0
aHJvdyBleHBlY3RlZFJlYXNvbjsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgcHJvbWlzZTIudGhlbihudWxsLCBmdW5jdGlvbiBvblByb21pc2UyUmVqZWN0
ZWQoYWN0dWFsUmVhc29uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwoYWN0dWFsUmVhc29uLCBleHBlY3RlZFJlYXNvbik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBPYmplY3Qua2V5cyhyZWFz
b25zKS5mb3JFYWNoKGZ1bmN0aW9uIChzdHJpbmdSZXByZXNlbnRhdGlvbikgeworICAgICAgICAg
ICAgdGVzdFJlYXNvbihyZWFzb25zW3N0cmluZ1JlcHJlc2VudGF0aW9uXSwgc3RyaW5nUmVwcmVz
ZW50YXRpb24pOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCIyLjIuNy4z
OiBJZiBgb25GdWxmaWxsZWRgIGlzIG5vdCBhIGZ1bmN0aW9uIGFuZCBgcHJvbWlzZTFgIGlzIGZ1
bGZpbGxlZCwgYHByb21pc2UyYCBtdXN0IGJlIGZ1bGZpbGxlZCAiICsKKyAgICAgICAgICAgICAi
d2l0aCB0aGUgc2FtZSB2YWx1ZS4iLCBmdW5jdGlvbiAoKSB7CisKKyAgICAgICAgZnVuY3Rpb24g
dGVzdE5vbkZ1bmN0aW9uKG5vbkZ1bmN0aW9uLCBzdHJpbmdSZXByZXNlbnRhdGlvbikgeworICAg
ICAgICAgICAgZGVzY3JpYmUoImBvbkZ1bGZpbGxlZGAgaXMgIiArIHN0cmluZ1JlcHJlc2VudGF0
aW9uLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdGVzdEZ1bGZpbGxlZChzZW50aW5l
bCwgZnVuY3Rpb24gKHByb21pc2UxLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBw
cm9taXNlMiA9IHByb21pc2UxLnRoZW4obm9uRnVuY3Rpb24pOworCisgICAgICAgICAgICAgICAg
ICAgIHByb21pc2UyLnRoZW4oZnVuY3Rpb24gb25Qcm9taXNlMkZ1bGZpbGxlZCh2YWx1ZSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbHVlLCBzZW50aW5l
bCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24odW5kZWZpbmVkLCAiYHVuZGVmaW5lZGAiKTsKKyAgICAg
ICAgdGVzdE5vbkZ1bmN0aW9uKG51bGwsICJgbnVsbGAiKTsKKyAgICAgICAgdGVzdE5vbkZ1bmN0
aW9uKGZhbHNlLCAiYGZhbHNlYCIpOworICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24oNSwgImA1YCIp
OworICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24oe30sICJhbiBvYmplY3QiKTsKKyAgICAgICAgdGVz
dE5vbkZ1bmN0aW9uKFtmdW5jdGlvbiAoKSB7IHJldHVybiBvdGhlcjsgfV0sICJhbiBhcnJheSBj
b250YWluaW5nIGEgZnVuY3Rpb24iKTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCIyLjIuNy40
OiBJZiBgb25SZWplY3RlZGAgaXMgbm90IGEgZnVuY3Rpb24gYW5kIGBwcm9taXNlMWAgaXMgcmVq
ZWN0ZWQsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCAiICsKKyAgICAgICAgICAgICAid2l0
aCB0aGUgc2FtZSByZWFzb24uIiwgZnVuY3Rpb24gKCkgeworCisgICAgICAgIGZ1bmN0aW9uIHRl
c3ROb25GdW5jdGlvbihub25GdW5jdGlvbiwgc3RyaW5nUmVwcmVzZW50YXRpb24pIHsKKyAgICAg
ICAgICAgIGRlc2NyaWJlKCJgb25SZWplY3RlZGAgaXMgIiArIHN0cmluZ1JlcHJlc2VudGF0aW9u
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdGVzdFJlamVjdGVkKHNlbnRpbmVsLCBm
dW5jdGlvbiAocHJvbWlzZTEsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHByb21p
c2UyID0gcHJvbWlzZTEudGhlbihudWxsLCBub25GdW5jdGlvbik7CisKKyAgICAgICAgICAgICAg
ICAgICAgcHJvbWlzZTIudGhlbihudWxsLCBmdW5jdGlvbiBvblByb21pc2UyUmVqZWN0ZWQocmVh
c29uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29u
LCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKworICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24odW5kZWZpbmVkLCAiYHVuZGVmaW5lZGAi
KTsKKyAgICAgICAgdGVzdE5vbkZ1bmN0aW9uKG51bGwsICJgbnVsbGAiKTsKKyAgICAgICAgdGVz
dE5vbkZ1bmN0aW9uKGZhbHNlLCAiYGZhbHNlYCIpOworICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24o
NSwgImA1YCIpOworICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24oe30sICJhbiBvYmplY3QiKTsKKyAg
ICAgICAgdGVzdE5vbkZ1bmN0aW9uKFtmdW5jdGlvbiAoKSB7IHJldHVybiBvdGhlcjsgfV0sICJh
biBhcnJheSBjb250YWluaW5nIGEgZnVuY3Rpb24iKTsKKyAgICB9KTsKK30pOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3Rz
LzIuMy4xLmpzIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMv
bGliL3Rlc3RzLzIuMy4xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MGJjNGM2OGY2MTVkMGUyNWJhMGQxYWEx
NzQ3MTJmNTExZTg5MjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNl
cy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4zLjEuanMKQEAgLTAsMCArMSwzNCBA
QAorInVzZSBzdHJpY3QiOworCit2YXIgYXNzZXJ0ID0gcmVxdWlyZSgiYXNzZXJ0Iik7CisKK3Zh
ciBhZGFwdGVyID0gZ2xvYmFsLmFkYXB0ZXI7Cit2YXIgcmVzb2x2ZWQgPSBhZGFwdGVyLnJlc29s
dmVkOwordmFyIHJlamVjdGVkID0gYWRhcHRlci5yZWplY3RlZDsKKwordmFyIGR1bW15ID0geyBk
dW1teTogImR1bW15IiB9OyAvLyB3ZSBmdWxmaWxsIG9yIHJlamVjdCB3aXRoIHRoaXMgd2hlbiB3
ZSBkb24ndCBpbnRlbmQgdG8gdGVzdCBhZ2FpbnN0IGl0CisKK2Rlc2NyaWJlKCIyLjMuMTogSWYg
YHByb21pc2VgIGFuZCBgeGAgcmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0LCByZWplY3QgYHByb21p
c2VgIHdpdGggYSBgVHlwZUVycm9yJyBhcyB0aGUgcmVhc29uLiIsCisgICAgICAgICBmdW5jdGlv
biAoKSB7CisgICAgc3BlY2lmeSgidmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2Ui
LCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICB2YXIgcHJvbWlzZSA9IHJlc29sdmVkKGR1bW15
KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBwcm9taXNlOworICAgICAg
ICB9KTsKKworICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNvbikgewor
ICAgICAgICAgICAgYXNzZXJ0KHJlYXNvbiBpbnN0YW5jZW9mIFR5cGVFcnJvcik7CisgICAgICAg
ICAgICBkb25lKCk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgc3BlY2lmeSgidmlhIHJl
dHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZSIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAg
IHZhciBwcm9taXNlID0gcmVqZWN0ZWQoZHVtbXkpLnRoZW4obnVsbCwgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAgICAgIH0pOworCisgICAgICAgIHByb21p
c2UudGhlbihudWxsLCBmdW5jdGlvbiAocmVhc29uKSB7CisgICAgICAgICAgICBhc3NlcnQocmVh
c29uIGluc3RhbmNlb2YgVHlwZUVycm9yKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAg
fSk7CisgICAgfSk7Cit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRl
c3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjMuMi5qcyBiL0xheW91dFRlc3RzL2pzL3By
b21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjMuMi5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xM2QwODg5MWQ0NWQ2OGRkMzQ4ZjVjZDc3ZjkwNWI4MjcwMmY5NmVhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rl
c3RzLzIuMy4yLmpzCkBAIC0wLDAgKzEsMTI2IEBACisidXNlIHN0cmljdCI7CisKK3ZhciBhc3Nl
cnQgPSByZXF1aXJlKCJhc3NlcnQiKTsKKwordmFyIGFkYXB0ZXIgPSBnbG9iYWwuYWRhcHRlcjsK
K3ZhciByZXNvbHZlZCA9IGFkYXB0ZXIucmVzb2x2ZWQ7Cit2YXIgcmVqZWN0ZWQgPSBhZGFwdGVy
LnJlamVjdGVkOwordmFyIGRlZmVycmVkID0gYWRhcHRlci5kZWZlcnJlZDsKKwordmFyIGR1bW15
ID0geyBkdW1teTogImR1bW15IiB9OyAvLyB3ZSBmdWxmaWxsIG9yIHJlamVjdCB3aXRoIHRoaXMg
d2hlbiB3ZSBkb24ndCBpbnRlbmQgdG8gdGVzdCBhZ2FpbnN0IGl0Cit2YXIgc2VudGluZWwgPSB7
IHNlbnRpbmVsOiAic2VudGluZWwiIH07IC8vIGEgc2VudGluZWwgZnVsZmlsbG1lbnQgdmFsdWUg
dG8gdGVzdCBmb3Igd2l0aCBzdHJpY3QgZXF1YWxpdHkKKworZnVuY3Rpb24gdGVzdFByb21pc2VS
ZXNvbHV0aW9uKHhGYWN0b3J5LCB0ZXN0KSB7CisgICAgc3BlY2lmeSgidmlhIHJldHVybiBmcm9t
IGEgZnVsZmlsbGVkIHByb21pc2UiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICB2YXIgcHJv
bWlzZSA9IHJlc29sdmVkKGR1bW15KS50aGVuKGZ1bmN0aW9uIG9uQmFzZVByb21pc2VGdWxmaWxs
ZWQoKSB7CisgICAgICAgICAgICByZXR1cm4geEZhY3RvcnkoKTsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgdGVzdChwcm9taXNlLCBkb25lKTsKKyAgICB9KTsKKworICAgIHNwZWNpZnkoInZpYSBy
ZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAg
ICB2YXIgcHJvbWlzZSA9IHJlamVjdGVkKGR1bW15KS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uQmFz
ZVByb21pc2VSZWplY3RlZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB4RmFjdG9yeSgpOworICAg
ICAgICB9KTsKKworICAgICAgICB0ZXN0KHByb21pc2UsIGRvbmUpOworICAgIH0pOworfQorCitk
ZXNjcmliZSgiMi4zLjI6IElmIGB4YCBpcyBhIHByb21pc2UsIGFkb3B0IGl0cyBzdGF0ZSIsIGZ1
bmN0aW9uICgpIHsKKyAgICBkZXNjcmliZSgiMi4zLjIuMTogSWYgYHhgIGlzIHBlbmRpbmcsIGBw
cm9taXNlYCBtdXN0IHJlbWFpbiBwZW5kaW5nIHVudGlsIGB4YCBpcyBmdWxmaWxsZWQgb3IgcmVq
ZWN0ZWQuIiwKKyAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgIGZ1bmN0aW9uIHhG
YWN0b3J5KCkgeworICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkKCkucHJvbWlzZTsKKyAgICAg
ICAgfQorCisgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24g
KHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgIHZhciB3YXNGdWxmaWxsZWQgPSBmYWxzZTsK
KyAgICAgICAgICAgIHZhciB3YXNSZWplY3RlZCA9IGZhbHNlOworCisgICAgICAgICAgICBwcm9t
aXNlLnRoZW4oCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gb25Qcm9taXNlRnVsZmlsbGVkKCkg
eworICAgICAgICAgICAgICAgICAgICB3YXNGdWxmaWxsZWQgPSB0cnVlOworICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gb25Qcm9taXNlUmVqZWN0ZWQoKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHdhc1JlamVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICApOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwod2FzRnVsZmlsbGVkLCBmYWxzZSk7
CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHdhc1JlamVjdGVkLCBmYWxzZSk7
CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAg
fSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgiMi4zLjIuMjogSWYvd2hlbiBgeGAgaXMgZnVs
ZmlsbGVkLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIHRoZSBzYW1lIHZhbHVlLiIsIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgZGVzY3JpYmUoImB4YCBpcyBhbHJlYWR5LWZ1bGZpbGxlZCIsIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAg
ICAgIHJldHVybiByZXNvbHZlZChzZW50aW5lbCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2UsIGRv
bmUpIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gb25Qcm9taXNlRnVs
ZmlsbGVkKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2
YWx1ZSwgc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3Jp
YmUoImB4YCBpcyBldmVudHVhbGx5LWZ1bGZpbGxlZCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIHZhciBkID0gbnVsbDsKKworICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7Cisg
ICAgICAgICAgICAgICAgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGQucmVzb2x2ZShzZW50aW5lbCk7
CisgICAgICAgICAgICAgICAgfSwgNTApOworICAgICAgICAgICAgICAgIHJldHVybiBkLnByb21p
c2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4
RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICBwcm9t
aXNlLnRoZW4oZnVuY3Rpb24gb25Qcm9taXNlRnVsZmlsbGVkKHZhbHVlKSB7CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWx1ZSwgc2VudGluZWwpOworICAgICAgICAg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgiMi4zLjIuMzogSWYvd2hlbiBg
eGAgaXMgcmVqZWN0ZWQsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCB0aGUgc2FtZSByZWFzb24uIiwg
ZnVuY3Rpb24gKCkgeworICAgICAgICBkZXNjcmliZSgiYHhgIGlzIGFscmVhZHktcmVqZWN0ZWQi
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcmVqZWN0ZWQoc2VudGluZWwpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9t
aXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9u
IG9uUHJvbWlzZVJlamVjdGVkKHJlYXNvbikgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwocmVhc29uLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUo
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKwor
ICAgICAgICBkZXNjcmliZSgiYHhgIGlzIGV2ZW50dWFsbHktcmVqZWN0ZWQiLCBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICB2YXIgZCA9IG51bGw7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHhG
YWN0b3J5KCkgeworICAgICAgICAgICAgICAgIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBkLnJlamVj
dChzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgfSwgNTApOworICAgICAgICAgICAgICAgIHJl
dHVybiBkLnByb21pc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRlc3RQcm9taXNl
UmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAg
ICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gb25Qcm9taXNlUmVqZWN0ZWQocmVh
c29uKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZWFzb24sIHNl
bnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfSk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMv
Mi4zLjMuanMgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9s
aWIvdGVzdHMvMi4zLjMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQ1ZTEzNWYyZWIyODNmMmNlN2ZmZGQ0Y2Fl
MGRkNzZhOTAyOWE4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2Vz
LXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjMuMy5qcwpAQCAtMCwwICsxLDk2OSBA
QAorInVzZSBzdHJpY3QiOworCit2YXIgYXNzZXJ0ID0gcmVxdWlyZSgiYXNzZXJ0Iik7Cit2YXIg
dGhlbmFibGVzID0gcmVxdWlyZSgiLi9oZWxwZXJzL3RoZW5hYmxlcyIpOwordmFyIHJlYXNvbnMg
PSByZXF1aXJlKCIuL2hlbHBlcnMvcmVhc29ucyIpOworCit2YXIgYWRhcHRlciA9IGdsb2JhbC5h
ZGFwdGVyOwordmFyIHJlc29sdmVkID0gYWRhcHRlci5yZXNvbHZlZDsKK3ZhciByZWplY3RlZCA9
IGFkYXB0ZXIucmVqZWN0ZWQ7Cit2YXIgZGVmZXJyZWQgPSBhZGFwdGVyLmRlZmVycmVkOworCit2
YXIgZHVtbXkgPSB7IGR1bW15OiAiZHVtbXkiIH07IC8vIHdlIGZ1bGZpbGwgb3IgcmVqZWN0IHdp
dGggdGhpcyB3aGVuIHdlIGRvbid0IGludGVuZCB0byB0ZXN0IGFnYWluc3QgaXQKK3ZhciBzZW50
aW5lbCA9IHsgc2VudGluZWw6ICJzZW50aW5lbCIgfTsgLy8gYSBzZW50aW5lbCBmdWxmaWxsbWVu
dCB2YWx1ZSB0byB0ZXN0IGZvciB3aXRoIHN0cmljdCBlcXVhbGl0eQordmFyIG90aGVyID0geyBv
dGhlcjogIm90aGVyIiB9OyAvLyBhIHZhbHVlIHdlIGRvbid0IHdhbnQgdG8gYmUgc3RyaWN0IGVx
dWFsIHRvCit2YXIgc2VudGluZWxBcnJheSA9IFtzZW50aW5lbF07IC8vIGEgc2VudGluZWwgZnVs
ZmlsbG1lbnQgdmFsdWUgdG8gdGVzdCB3aGVuIHdlIG5lZWQgYW4gYXJyYXkKKworZnVuY3Rpb24g
dGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCB0ZXN0KSB7CisgICAgc3BlY2lmeSgidmlh
IHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UiLCBmdW5jdGlvbiAoZG9uZSkgeworICAg
ICAgICB2YXIgcHJvbWlzZSA9IHJlc29sdmVkKGR1bW15KS50aGVuKGZ1bmN0aW9uIG9uQmFzZVBy
b21pc2VGdWxmaWxsZWQoKSB7CisgICAgICAgICAgICByZXR1cm4geEZhY3RvcnkoKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgdGVzdChwcm9taXNlLCBkb25lKTsKKyAgICB9KTsKKworICAgIHNw
ZWNpZnkoInZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UiLCBmdW5jdGlvbiAoZG9u
ZSkgeworICAgICAgICB2YXIgcHJvbWlzZSA9IHJlamVjdGVkKGR1bW15KS50aGVuKG51bGwsIGZ1
bmN0aW9uIG9uQmFzZVByb21pc2VSZWplY3RlZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB4RmFj
dG9yeSgpOworICAgICAgICB9KTsKKworICAgICAgICB0ZXN0KHByb21pc2UsIGRvbmUpOworICAg
IH0pOworfQorCitmdW5jdGlvbiB0ZXN0Q2FsbGluZ1Jlc29sdmVQcm9taXNlKHlGYWN0b3J5LCBz
dHJpbmdSZXByZXNlbnRhdGlvbiwgdGVzdCkgeworICAgIGRlc2NyaWJlKCJgeWAgaXMgIiArIHN0
cmluZ1JlcHJlc2VudGF0aW9uLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRlc2NyaWJlKCJgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IiwgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHsKKyAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlUHJvbWlzZSh5RmFjdG9yeSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgdGVzdCk7CisgICAg
ICAgIH0pOworCisgICAgICAgIGRlc2NyaWJlKCJgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNl
YCBhc3luY2hyb25vdXNseSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHhG
YWN0b3J5KCkgeworICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAg
IHRoZW46IGZ1bmN0aW9uIChyZXNvbHZlUHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzb2x2ZVByb21pc2UoeUZhY3RvcnkoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9LCAw
KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgdGVzdCk7
CisgICAgICAgIH0pOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0Q2FsbGluZ1JlamVjdFBy
b21pc2Uociwgc3RyaW5nUmVwcmVzZW50YXRpb24sIHRlc3QpIHsKKyAgICBkZXNjcmliZSgiYHJg
IGlzICIgKyBzdHJpbmdSZXByZXNlbnRhdGlvbiwgZnVuY3Rpb24gKCkgeworICAgICAgICBkZXNj
cmliZSgiYHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBzeW5jaHJvbm91c2x5IiwgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQ
cm9taXNlLCByZWplY3RQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZWplY3RQ
cm9taXNlKHIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5
LCB0ZXN0KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3JpYmUoImB0aGVuYCBjYWxscyBg
cmVqZWN0UHJvbWlzZWAgYXN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAg
ICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UsIHJlamVjdFByb21p
c2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdFByb21pc2Uocik7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlv
bih4RmFjdG9yeSwgdGVzdCk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitmdW5jdGlvbiB0
ZXN0Q2FsbGluZ1Jlc29sdmVQcm9taXNlRnVsZmlsbHNXaXRoKHlGYWN0b3J5LCBzdHJpbmdSZXBy
ZXNlbnRhdGlvbiwgZnVsZmlsbG1lbnRWYWx1ZSkgeworICAgIHRlc3RDYWxsaW5nUmVzb2x2ZVBy
b21pc2UoeUZhY3RvcnksIHN0cmluZ1JlcHJlc2VudGF0aW9uLCBmdW5jdGlvbiAocHJvbWlzZSwg
ZG9uZSkgeworICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gb25Qcm9taXNlRnVsZmlsbGVk
KHZhbHVlKSB7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFsdWUsIGZ1bGZpbGxt
ZW50VmFsdWUpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9KTsKKyAgICB9KTsKK30K
KworZnVuY3Rpb24gdGVzdENhbGxpbmdSZXNvbHZlUHJvbWlzZVJlamVjdHNXaXRoKHlGYWN0b3J5
LCBzdHJpbmdSZXByZXNlbnRhdGlvbiwgcmVqZWN0aW9uUmVhc29uKSB7CisgICAgdGVzdENhbGxp
bmdSZXNvbHZlUHJvbWlzZSh5RmFjdG9yeSwgc3RyaW5nUmVwcmVzZW50YXRpb24sIGZ1bmN0aW9u
IChwcm9taXNlLCBkb25lKSB7CisgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBv
blByb21pc2VSZWplY3RlZChyZWFzb24pIHsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChyZWFzb24sIHJlamVjdGlvblJlYXNvbik7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAg
IH0pOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0Q2FsbGluZ1JlamVjdFByb21pc2VSZWpl
Y3RzV2l0aChyZWFzb24sIHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7CisgICAgdGVzdENhbGxpbmdS
ZWplY3RQcm9taXNlKHJlYXNvbiwgc3RyaW5nUmVwcmVzZW50YXRpb24sIGZ1bmN0aW9uIChwcm9t
aXNlLCBkb25lKSB7CisgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBvblByb21p
c2VSZWplY3RlZChyZWplY3Rpb25SZWFzb24pIHsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChyZWplY3Rpb25SZWFzb24sIHJlYXNvbik7CisgICAgICAgICAgICBkb25lKCk7CisgICAg
ICAgIH0pOworICAgIH0pOworfQorCitkZXNjcmliZSgiMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwiLCBmdW5jdGlvbiAoKSB7CisgICAgZGVzY3JpYmUo
IjIuMy4zLjE6IExldCBgdGhlbmAgYmUgYHgudGhlbmAiLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
IGRlc2NyaWJlKCJgeGAgaXMgYW4gb2JqZWN0IHdpdGggbnVsbCBwcm90b3R5cGUiLCBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICB2YXIgbnVtYmVyT2ZUaW1lc1RoZW5XYXNSZXRyaWV2ZWQgPSBu
dWxsOworCisgICAgICAgICAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICBudW1iZXJPZlRpbWVzVGhlbldhc1JldHJpZXZlZCA9IDA7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIE9iamVjdC5jcmVhdGUobnVsbCwgeworICAgICAgICAgICAgICAgICAgICB0aGVuOiB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICArK251bWJlck9mVGltZXNUaGVuV2FzUmV0cmlldmVkOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiB0aGVuTWV0aG9kRm9yWChvbkZ1bGZp
bGxlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZ1bGZpbGxlZCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlv
biAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChudW1iZXJPZlRp
bWVzVGhlbldhc1JldHJpZXZlZCwgMSk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAg
ICBkZXNjcmliZSgiYHhgIGlzIGFuIG9iamVjdCB3aXRoIG5vcm1hbCBPYmplY3QucHJvdG90eXBl
IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdmFyIG51bWJlck9mVGltZXNUaGVuV2FzUmV0
cmlldmVkID0gbnVsbDsKKworICAgICAgICAgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgbnVtYmVyT2ZUaW1lc1RoZW5XYXNSZXRyaWV2ZWQgPSAwOworICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAg
ICAgICAgIHJldHVybiBPYmplY3QuY3JlYXRlKE9iamVjdC5wcm90b3R5cGUsIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGhlbjogeworICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytudW1iZXJPZlRpbWVzVGhlbldh
c1JldHJpZXZlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24g
dGhlbk1ldGhvZEZvclgob25GdWxmaWxsZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb25GdWxmaWxsZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1
dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAg
ICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwobnVtYmVyT2ZUaW1lc1RoZW5XYXNSZXRyaWV2ZWQsIDEpOworICAgICAgICAg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3JpYmUoImB4YCBpcyBhIGZ1bmN0aW9uIiwgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgdmFyIG51bWJlck9mVGltZXNUaGVuV2FzUmV0cmlldmVk
ID0gbnVsbDsKKworICAgICAgICAgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgbnVtYmVyT2ZUaW1lc1RoZW5XYXNSZXRyaWV2ZWQgPSAwOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAg
IGZ1bmN0aW9uIHgoKSB7IH0KKworICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh4LCAidGhlbiIsIHsKKyAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICArK251bWJlck9mVGltZXNUaGVuV2FzUmV0cmlldmVkOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIHRoZW5NZXRob2RGb3JYKG9u
RnVsZmlsbGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25GdWxmaWxsZWQoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIHJldHVybiB4OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9u
IChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKG51bWJlck9mVGlt
ZXNUaGVuV2FzUmV0cmlldmVkLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOwor
CisgICAgZGVzY3JpYmUoIjIuMy4zLjI6IElmIHJldHJpZXZpbmcgdGhlIHByb3BlcnR5IGB4LnRo
ZW5gIHJlc3VsdHMgaW4gYSB0aHJvd24gZXhjZXB0aW9uIGBlYCwgcmVqZWN0IGBwcm9taXNlYCB3
aXRoICIgKworICAgICAgICAgICAgICJgZWAgYXMgdGhlIHJlYXNvbi4iLCBmdW5jdGlvbiAoKSB7
CisgICAgICAgIGZ1bmN0aW9uIHRlc3RSZWplY3Rpb25WaWFUaHJvd2luZ0dldHRlcihlLCBzdHJp
bmdSZXByZXNlbnRhdGlvbikgeworICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5jcmVhdGUoT2JqZWN0LnByb3RvdHlwZSwgewor
ICAgICAgICAgICAgICAgICAgICB0aGVuOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJgZWAgaXMg
IiArIHN0cmluZ1JlcHJlc2VudGF0aW9uLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
dGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkg
eworICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNv
bikgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwg
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBPYmplY3Qua2V5cyhyZWFzb25zKS5mb3JFYWNoKGZ1bmN0aW9uIChzdHJpbmdSZXBy
ZXNlbnRhdGlvbikgeworICAgICAgICAgICAgdGVzdFJlamVjdGlvblZpYVRocm93aW5nR2V0dGVy
KHJlYXNvbnNbc3RyaW5nUmVwcmVzZW50YXRpb25dLCBzdHJpbmdSZXByZXNlbnRhdGlvbik7Cisg
ICAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoIjIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kICIgKworICAgICAgICAgICAgICJzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIiwgZnVuY3Rpb24gKCkgeworICAgICAgICBkZXNjcmliZSgiQ2FsbHMg
d2l0aCBgeGAgYXMgYHRoaXNgIGFuZCB0d28gZnVuY3Rpb24gYXJndW1lbnRzIiwgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAg
dmFyIHggPSB7CisgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChvbkZ1bGZpbGxl
ZCwgb25SZWplY3RlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKHRoaXMsIHgpOworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KHR5cGVvZiBvbkZ1bGZpbGxlZCwgImZ1bmN0aW9uIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwodHlwZW9mIG9uUmVqZWN0ZWQsICJmdW5jdGlvbiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgb25GdWxmaWxsZWQoKTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVu
Y3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3JpYmUoIlVz
ZXMgdGhlIG9yaWdpbmFsIHZhbHVlIG9mIGB0aGVuYCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIHZhciBudW1iZXJPZlRpbWVzVGhlbldhc1JldHJpZXZlZCA9IG51bGw7CisKKyAgICAgICAg
ICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIG51bWJlck9mVGlt
ZXNUaGVuV2FzUmV0cmlldmVkID0gMDsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBm
dW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmNyZWF0
ZShPYmplY3QucHJvdG90eXBlLCB7CisgICAgICAgICAgICAgICAgICAgIHRoZW46IHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChudW1iZXJPZlRpbWVzVGhlbldhc1JldHJpZXZlZCA9PT0gMCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG9uRnVsZmlsbGVk
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZ1bGZpbGxlZCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRp
b24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAg
cHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAg
ICAgIGRlc2NyaWJlKCIyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxs
ZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIiwKKyAgICAg
ICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZGVzY3JpYmUoImB5YCBpcyBu
b3QgYSB0aGVuYWJsZSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0Q2FsbGlu
Z1Jlc29sdmVQcm9taXNlRnVsZmlsbHNXaXRoKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVuZGVmaW5l
ZDsgfSwgImB1bmRlZmluZWRgIiwgdW5kZWZpbmVkKTsKKyAgICAgICAgICAgICAgICB0ZXN0Q2Fs
bGluZ1Jlc29sdmVQcm9taXNlRnVsZmlsbHNXaXRoKGZ1bmN0aW9uICgpIHsgcmV0dXJuIG51bGw7
IH0sICJgbnVsbGAiLCBudWxsKTsKKyAgICAgICAgICAgICAgICB0ZXN0Q2FsbGluZ1Jlc29sdmVQ
cm9taXNlRnVsZmlsbHNXaXRoKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9LCAiYGZhbHNl
YCIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB0ZXN0Q2FsbGluZ1Jlc29sdmVQcm9taXNlRnVs
ZmlsbHNXaXRoKGZ1bmN0aW9uICgpIHsgcmV0dXJuIDU7IH0sICJgNWAiLCA1KTsKKyAgICAgICAg
ICAgICAgICB0ZXN0Q2FsbGluZ1Jlc29sdmVQcm9taXNlRnVsZmlsbHNXaXRoKGZ1bmN0aW9uICgp
IHsgcmV0dXJuIHNlbnRpbmVsOyB9LCAiYW4gb2JqZWN0Iiwgc2VudGluZWwpOworICAgICAgICAg
ICAgICAgIHRlc3RDYWxsaW5nUmVzb2x2ZVByb21pc2VGdWxmaWxsc1dpdGgoZnVuY3Rpb24gKCkg
eyByZXR1cm4gc2VudGluZWxBcnJheTsgfSwgImFuIGFycmF5Iiwgc2VudGluZWxBcnJheSk7Cisg
ICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZGVzY3JpYmUoImB5YCBpcyBhIHRoZW5hYmxl
IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoZW5hYmxlcy5m
dWxmaWxsZWQpLmZvckVhY2goZnVuY3Rpb24gKHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7CisgICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHlGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRoZW5hYmxlcy5mdWxmaWxsZWRbc3RyaW5nUmVwcmVzZW50YXRpb25dKHNl
bnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHRl
c3RDYWxsaW5nUmVzb2x2ZVByb21pc2VGdWxmaWxsc1dpdGgoeUZhY3RvcnksIHN0cmluZ1JlcHJl
c2VudGF0aW9uLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
ICAgICBPYmplY3Qua2V5cyh0aGVuYWJsZXMucmVqZWN0ZWQpLmZvckVhY2goZnVuY3Rpb24gKHN0
cmluZ1JlcHJlc2VudGF0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHlGYWN0
b3J5KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoZW5hYmxlcy5yZWplY3Rl
ZFtzdHJpbmdSZXByZXNlbnRhdGlvbl0oc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgdGVzdENhbGxpbmdSZXNvbHZlUHJvbWlzZVJlamVjdHNX
aXRoKHlGYWN0b3J5LCBzdHJpbmdSZXByZXNlbnRhdGlvbiwgc2VudGluZWwpOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJgeWAg
aXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICBPYmplY3Qua2V5cyh0aGVuYWJsZXMuZnVsZmlsbGVkKS5mb3JFYWNoKGZ1bmN0aW9uIChv
dXRlclN0cmluZ1JlcHJlc2VudGF0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBvdXRl
clRoZW5hYmxlRmFjdG9yeSA9IHRoZW5hYmxlcy5mdWxmaWxsZWRbb3V0ZXJTdHJpbmdSZXByZXNl
bnRhdGlvbl07CisKKyAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXModGhlbmFibGVzLmZ1
bGZpbGxlZCkuZm9yRWFjaChmdW5jdGlvbiAoaW5uZXJTdHJpbmdSZXByZXNlbnRhdGlvbikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlubmVyVGhlbmFibGVGYWN0b3J5ID0gdGhlbmFi
bGVzLmZ1bGZpbGxlZFtpbm5lclN0cmluZ1JlcHJlc2VudGF0aW9uXTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHN0cmluZ1JlcHJlc2VudGF0aW9uID0gb3V0ZXJTdHJpbmdSZXByZXNl
bnRhdGlvbiArICIgZm9yICIgKyBpbm5lclN0cmluZ1JlcHJlc2VudGF0aW9uOworCisgICAgICAg
ICAgICAgICAgICAgICAgICBmdW5jdGlvbiB5RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gb3V0ZXJUaGVuYWJsZUZhY3RvcnkoaW5uZXJUaGVuYWJsZUZhY3Rv
cnkoc2VudGluZWwpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdENhbGxpbmdSZXNvbHZlUHJvbWlzZUZ1bGZpbGxzV2l0aCh5RmFjdG9y
eSwgc3RyaW5nUmVwcmVzZW50YXRpb24sIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXModGhlbmFibGVzLnJlamVjdGVk
KS5mb3JFYWNoKGZ1bmN0aW9uIChpbm5lclN0cmluZ1JlcHJlc2VudGF0aW9uKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgaW5uZXJUaGVuYWJsZUZhY3RvcnkgPSB0aGVuYWJsZXMucmVq
ZWN0ZWRbaW5uZXJTdHJpbmdSZXByZXNlbnRhdGlvbl07CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBzdHJpbmdSZXByZXNlbnRhdGlvbiA9IG91dGVyU3RyaW5nUmVwcmVzZW50YXRpb24g
KyAiIGZvciAiICsgaW5uZXJTdHJpbmdSZXByZXNlbnRhdGlvbjsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24geUZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG91dGVyVGhlbmFibGVGYWN0b3J5KGlubmVyVGhlbmFibGVGYWN0b3J5KHNlbnRp
bmVsKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RDYWxsaW5nUmVzb2x2ZVByb21pc2VSZWplY3RzV2l0aCh5RmFjdG9yeSwgc3RyaW5n
UmVwcmVzZW50YXRpb24sIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
ZGVzY3JpYmUoIjIuMy4zLjMuMjogSWYvd2hlbiBgcmVqZWN0UHJvbWlzZWAgaXMgY2FsbGVkIHdp
dGggcmVhc29uIGByYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGByYCIsCisgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlYXNvbnMpLmZvckVh
Y2goZnVuY3Rpb24gKHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7CisgICAgICAgICAgICAgICAgdGVz
dENhbGxpbmdSZWplY3RQcm9taXNlUmVqZWN0c1dpdGgocmVhc29uc1tzdHJpbmdSZXByZXNlbnRh
dGlvbl0sIHN0cmluZ1JlcHJlc2VudGF0aW9uKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKworICAgICAgICBkZXNjcmliZSgiMi4zLjMuMy4zOiBJZiBib3RoIGByZXNvbHZlUHJvbWlz
ZWAgYW5kIGByZWplY3RQcm9taXNlYCBhcmUgY2FsbGVkLCBvciBtdWx0aXBsZSBjYWxscyB0byB0
aGUgc2FtZSAiICsKKyAgICAgICAgICAgICAgICAgImFyZ3VtZW50IGFyZSBtYWRlLCB0aGUgZmly
c3QgY2FsbCB0YWtlcyBwcmVjZWRlbmNlLCBhbmQgYW55IGZ1cnRoZXIgY2FsbHMgYXJlIGlnbm9y
ZWQuIiwKKyAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZGVzY3Jp
YmUoImNhbGxpbmcgYHJlc29sdmVQcm9taXNlYCB0aGVuIGByZWplY3RQcm9taXNlYCwgYm90aCBz
eW5jaHJvbm91c2x5IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhG
YWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAg
ICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlLCByZWplY3RQcm9taXNlKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVByb21pc2Uoc2VudGluZWwpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdFByb21pc2Uob3RoZXIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwg
ZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50
aGVuKGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHZhbHVlLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25l
KCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJjYWxsaW5nIGByZXNvbHZlUHJvbWlz
ZWAgc3luY2hyb25vdXNseSB0aGVuIGByZWplY3RQcm9taXNlYCBhc3luY2hyb25vdXNseSIsIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1
bmN0aW9uIChyZXNvbHZlUHJvbWlzZSwgcmVqZWN0UHJvbWlzZSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKHNlbnRpbmVsKTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWplY3RQcm9taXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlz
ZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAg
ICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWx1ZSwgc2VudGluZWwpOworICAgICAg
ICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBkZXNjcmliZSgi
Y2FsbGluZyBgcmVzb2x2ZVByb21pc2VgIHRoZW4gYHJlamVjdFByb21pc2VgLCBib3RoIGFzeW5j
aHJvbm91c2x5IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0
b3J5KCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAg
ICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlLCByZWplY3RQcm9taXNlKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKHNlbnRpbmVsKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAwKTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWplY3RQcm9taXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29s
dXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAg
ICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWx1ZSwgc2VudGluZWwpOworICAgICAgICAgICAg
ICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBkZXNjcmliZSgiY2FsbGlu
ZyBgcmVzb2x2ZVByb21pc2VgIHdpdGggYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIHByb21p
c2UsIHRoZW4gY2FsbGluZyAiICsKKyAgICAgICAgICAgICAgICAgICAgICJgcmVqZWN0UHJvbWlz
ZWAsIGJvdGggc3luY2hyb25vdXNseSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBm
dW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBkZWZlcnJl
ZCgpOworICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGQucmVzb2x2ZShzZW50aW5lbCk7CisgICAgICAgICAgICAgICAg
ICAgIH0sIDUwKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAg
ICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlLCByZWplY3RQcm9taXNl
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVByb21pc2UoZC5wcm9taXNl
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3RQcm9taXNlKG90aGVyKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3Rv
cnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21p
c2UudGhlbihmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCh2YWx1ZSwgc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAg
ZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICBkZXNjcmliZSgiY2FsbGluZyBgcmVzb2x2ZVBy
b21pc2VgIHdpdGggYW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgcHJvbWlzZSwgdGhlbiBjYWxs
aW5nICIgKworICAgICAgICAgICAgICAgICAgICAgImByZWplY3RQcm9taXNlYCwgYm90aCBzeW5j
aHJvbm91c2x5IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0
b3J5KCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZC5yZWplY3Qoc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICB9LCA1MCk7CisK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRo
ZW46IGZ1bmN0aW9uIChyZXNvbHZlUHJvbWlzZSwgcmVqZWN0UHJvbWlzZSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKGQucHJvbWlzZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVqZWN0UHJvbWlzZShvdGhlcik7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAo
cHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwg
ZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHJlYXNvbiwgc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgp
OworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICBkZXNjcmliZSgiY2FsbGluZyBgcmVqZWN0UHJvbWlzZWAg
dGhlbiBgcmVzb2x2ZVByb21pc2VgLCBib3RoIHN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVz
b2x2ZVByb21pc2UsIHJlamVjdFByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWplY3RQcm9taXNlKHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXNvbHZlUHJvbWlzZShvdGhlcik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGVz
dFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgewor
ICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNvbikg
eworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgc2Vu
dGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICBkZXNjcmliZSgiY2FsbGluZyBgcmVqZWN0UHJvbWlzZWAgc3luY2hyb25vdXNseSB0aGVu
IGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21p
c2UsIHJlamVjdFByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3RQ
cm9taXNlKHNlbnRpbmVsKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZl
UHJvbWlzZShvdGhlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5
LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICBwcm9taXNl
LnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAgICAgICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgc2VudGluZWwpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBkZXNjcmliZSgiY2FsbGluZyBgcmVq
ZWN0UHJvbWlzZWAgdGhlbiBgcmVzb2x2ZVByb21pc2VgLCBib3RoIGFzeW5jaHJvbm91c2x5Iiwg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjog
ZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlLCByZWplY3RQcm9taXNlKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlamVjdFByb21pc2Uoc2VudGluZWwpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sIDApOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29s
dmVQcm9taXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAwKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3Rv
cnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21p
c2UudGhlbihudWxsLCBmdW5jdGlvbiAocmVhc29uKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29uLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJjYWxsaW5nIGBy
ZXNvbHZlUHJvbWlzZWAgdHdpY2Ugc3luY2hyb25vdXNseSIsIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChyZXNvbHZlUHJv
bWlzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKHNlbnRp
bmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlUHJvbWlzZShvdGhlcik7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhG
YWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICBw
cm9taXNlLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwodmFsdWUsIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZGVzY3JpYmUoImNhbGxpbmcgYHJlc29s
dmVQcm9taXNlYCB0d2ljZSwgZmlyc3Qgc3luY2hyb25vdXNseSB0aGVuIGFzeW5jaHJvbm91c2x5
IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgdGhl
bjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzb2x2ZVByb21pc2Uoc2VudGluZWwpOworCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc29sdmVQcm9taXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRp
b24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAg
ICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWx1ZSwgc2VudGluZWwpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBkZXNjcmliZSgiY2FsbGluZyBg
cmVzb2x2ZVByb21pc2VgIHR3aWNlLCBib3RoIHRpbWVzIGFzeW5jaHJvbm91c2x5IiwgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rp
b24gKHJlc29sdmVQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29s
dmVQcm9taXNlKHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAwKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlUHJvbWlzZShvdGhlcik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlz
ZSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKHZh
bHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFsdWUs
IHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgZGVzY3JpYmUoImNhbGxpbmcgYHJlc29sdmVQcm9taXNlYCB3aXRoIGFuIGFzeW5j
aHJvbm91c2x5LWZ1bGZpbGxlZCBwcm9taXNlLCB0aGVuIGNhbGxpbmcgaXQgYWdhaW4sIGJvdGgg
IiArCisgICAgICAgICAgICAgICAgICAgICAidGltZXMgc3luY2hyb25vdXNseSIsIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGQucmVzb2x2ZShzZW50
aW5lbCk7CisgICAgICAgICAgICAgICAgICAgIH0sIDUwKTsKKworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29s
dmVQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVByb21pc2Uo
ZC5wcm9taXNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlUHJvbWlzZShv
dGhlcik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0
aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAg
ICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFsdWUsIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZGVzY3JpYmUoImNhbGxpbmcg
YHJlc29sdmVQcm9taXNlYCB3aXRoIGFuIGFzeW5jaHJvbm91c2x5LXJlamVjdGVkIHByb21pc2Us
IHRoZW4gY2FsbGluZyBpdCBhZ2FpbiwgYm90aCAiICsKKyAgICAgICAgICAgICAgICAgICAgICJ0
aW1lcyBzeW5jaHJvbm91c2x5IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGZ1bmN0
aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7
CisgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgZC5yZWplY3Qoc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICB9
LCA1MCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRoZW46IGZ1bmN0aW9uIChyZXNvbHZlUHJvbWlzZSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKGQucHJvbWlzZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzb2x2ZVByb21pc2Uob3RoZXIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21p
c2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0
aW9uIChyZWFzb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChyZWFzb24sIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgZGVzY3JpYmUoImNhbGxpbmcgYHJlamVjdFByb21pc2VgIHR3aWNl
IHN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24g
eEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UsIHJlamVjdFByb21pc2Up
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3RQcm9taXNlKHNlbnRpbmVsKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3RQcm9taXNlKG90aGVyKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3Rvcnks
IGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2Uu
dGhlbihudWxsLCBmdW5jdGlvbiAocmVhc29uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwocmVhc29uLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJjYWxsaW5nIGByZWpl
Y3RQcm9taXNlYCB0d2ljZSwgZmlyc3Qgc3luY2hyb25vdXNseSB0aGVuIGFzeW5jaHJvbm91c2x5
IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgdGhl
bjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlLCByZWplY3RQcm9taXNlKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVqZWN0UHJvbWlzZShzZW50aW5lbCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVqZWN0UHJvbWlzZShvdGhlcik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGVzdFBy
b21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAg
ICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNvbikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgc2VudGlu
ZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICBkZXNjcmliZSgiY2FsbGluZyBgcmVqZWN0UHJvbWlzZWAgdHdpY2UsIGJvdGggdGltZXMgYXN5
bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24geEZh
Y3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UsIHJlamVjdFByb21pc2UpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0UHJvbWlzZShzZW50aW5lbCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMCk7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVqZWN0UHJvbWlzZShvdGhlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH07CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGVzdFByb21pc2VSZXNv
bHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAg
ICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgc2VudGluZWwpOworICAg
ICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBkZXNjcmli
ZSgic2F2aW5nIGFuZCBhYnVzaW5nIGByZXNvbHZlUHJvbWlzZWAgYW5kIGByZWplY3RQcm9taXNl
YCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgc2F2ZWRSZXNvbHZlUHJvbWlz
ZSwgc2F2ZWRSZWplY3RQcm9taXNlOworCisgICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3Rv
cnkoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAg
ICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UsIHJlamVjdFByb21pc2UpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlZFJlc29sdmVQcm9taXNlID0gcmVzb2x2ZVBy
b21pc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZWRSZWplY3RQcm9taXNlID0g
cmVqZWN0UHJvbWlzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBiZWZvcmVFYWNo
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgc2F2ZWRSZXNvbHZlUHJvbWlzZSA9
IG51bGw7CisgICAgICAgICAgICAgICAgICAgIHNhdmVkUmVqZWN0UHJvbWlzZSA9IG51bGw7Cisg
ICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRp
b24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAg
ICAgIHZhciB0aW1lc0Z1bGZpbGxlZCA9IDA7CisgICAgICAgICAgICAgICAgICAgIHZhciB0aW1l
c1JlamVjdGVkID0gMDsKKworICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oCisgICAg
ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKyt0aW1lc0Z1bGZpbGxlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKyt0aW1lc1JlamVjdGVkOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICApOworCisgICAgICAgICAgICAgICAgICAgIGlmIChzYXZlZFJlc29sdmVQ
cm9taXNlICYmIHNhdmVkUmVqZWN0UHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
c2F2ZWRSZXNvbHZlUHJvbWlzZShkdW1teSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzYXZl
ZFJlc29sdmVQcm9taXNlKGR1bW15KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVkUmVq
ZWN0UHJvbWlzZShkdW1teSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzYXZlZFJlamVjdFBy
b21pc2UoZHVtbXkpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzYXZl
ZFJlc29sdmVQcm9taXNlKGR1bW15KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVkUmVz
b2x2ZVByb21pc2UoZHVtbXkpOworICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZWRSZWplY3RQ
cm9taXNlKGR1bW15KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVkUmVqZWN0UHJvbWlz
ZShkdW1teSk7CisgICAgICAgICAgICAgICAgICAgIH0sIDUwKTsKKworICAgICAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbCh0aW1lc0Z1bGZpbGxlZCwgMSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGltZXNSZWplY3RlZCwgMCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVz
Y3JpYmUoIjIuMy4zLjMuNDogSWYgY2FsbGluZyBgdGhlbmAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBg
ZWAsIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZGVzY3JpYmUoIjIuMy4zLjMuNC4xOiBJ
ZiBgcmVzb2x2ZVByb21pc2VgIG9yIGByZWplY3RQcm9taXNlYCBoYXZlIGJlZW4gY2FsbGVkLCBp
Z25vcmUgaXQuIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGRlc2NyaWJlKCJgcmVz
b2x2ZVByb21pc2VgIHdhcyBjYWxsZWQgd2l0aCBhIG5vbi10aGVuYWJsZSIsIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46
IGZ1bmN0aW9uIChyZXNvbHZlUHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXNvbHZlUHJvbWlzZShzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRocm93IG90aGVyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9t
aXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rp
b24gKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKHZhbHVlLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgp
OworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgZGVzY3JpYmUoImByZXNvbHZl
UHJvbWlzZWAgd2FzIGNhbGxlZCB3aXRoIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBwcm9t
aXNlIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9y
eSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGQucmVzb2x2ZShzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9LCA1MCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKGQucHJvbWlzZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG90aGVyOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRp
b24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbHVlLCBzZW50aW5lbCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICAgICAgZGVzY3JpYmUoImByZXNvbHZlUHJvbWlzZWAgd2FzIGNhbGxlZCB3aXRoIGFuIGFz
eW5jaHJvbm91c2x5LXJlamVjdGVkIHByb21pc2UiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5yZWplY3Qoc2VudGlu
ZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTApOworCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0
aW9uIChyZXNvbHZlUHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXNvbHZlUHJvbWlzZShkLnByb21pc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aHJvdyBvdGhlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwg
ZG9uZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0
aW9uIChyZWFzb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwocmVhc29uLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9u
ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgZGVzY3JpYmUoImByZWpl
Y3RQcm9taXNlYCB3YXMgY2FsbGVkIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQcm9t
aXNlLCByZWplY3RQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
amVjdFByb21pc2Uoc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aHJvdyBvdGhlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9u
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9u
IChyZWFzb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwocmVhc29uLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgp
OworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgZGVzY3JpYmUoImByZXNvbHZl
UHJvbWlzZWAgdGhlbiBgcmVqZWN0UHJvbWlzZWAgd2VyZSBjYWxsZWQiLCBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBm
dW5jdGlvbiAocmVzb2x2ZVByb21pc2UsIHJlamVjdFByb21pc2UpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzb2x2ZVByb21pc2Uoc2VudGluZWwpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWplY3RQcm9taXNlKG90aGVyKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgb3RoZXI7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVu
Y3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2Uu
dGhlbihmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwodmFsdWUsIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBkZXNjcmli
ZSgiYHJlamVjdFByb21pc2VgIHRoZW4gYHJlc29sdmVQcm9taXNlYCB3ZXJlIGNhbGxlZCIsIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoZW46IGZ1bmN0aW9uIChyZXNvbHZlUHJvbWlzZSwgcmVqZWN0UHJvbWlzZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3RQcm9taXNlKHNlbnRpbmVsKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVByb21pc2Uob3RoZXIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBvdGhlcjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhG
YWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29uLCBzZW50aW5lbCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCIyLjMuMy4zLjQuMjogT3RoZXJ3aXNl
LCByZWplY3QgYHByb21pc2VgIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIiwgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgIGRlc2NyaWJlKCJzdHJhaWdodGZvcndhcmQgY2FzZSIsIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRoZW46IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhy
b3cgc2VudGluZWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2UsIGRv
bmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlv
biAocmVhc29uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKHJlYXNvbiwgc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGRlc2NyaWJlKCJgcmVzb2x2
ZVByb21pc2VgIGlzIGNhbGxlZCBhc3luY2hyb25vdXNseSBiZWZvcmUgdGhlIGB0aHJvd2AiLCBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXNvbHZlUHJvbWlzZShvdGhlcik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aHJvdyBzZW50aW5lbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlz
ZSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1
bmN0aW9uIChyZWFzb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwocmVhc29uLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG9uZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgZGVzY3JpYmUoImBy
ZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgYXN5bmNocm9ub3VzbHkgYmVmb3JlIHRoZSBgdGhyb3dg
IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlLCByZWplY3RQcm9taXNlKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0UHJvbWlzZShvdGhl
cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aHJvdyBzZW50aW5lbDsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5
LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJv
bWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29uLCBzZW50aW5lbCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoIjIuMy4zLjQ6IElmIGB0
aGVuYCBpcyBub3QgYSBmdW5jdGlvbiwgZnVsZmlsbCBwcm9taXNlIHdpdGggYHhgIiwgZnVuY3Rp
b24gKCkgeworICAgICAgICBmdW5jdGlvbiB0ZXN0RnVsZmlsbFZpYU5vbkZ1bmN0aW9uKHRoZW4s
IHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7CisgICAgICAgICAgICB2YXIgeCA9IG51bGw7CisKKyAg
ICAgICAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHggPSB7
IHRoZW46IHRoZW4gfTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBmdW5jdGlvbiB4
RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZGVzY3JpYmUoImB0aGVuYCBpcyAiICsgc3RyaW5nUmVwcmVzZW50YXRpb24s
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZh
Y3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHBy
b21pc2UudGhlbihmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbCh2YWx1ZSwgeCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25l
KCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICB0ZXN0RnVsZmlsbFZpYU5vbkZ1bmN0aW9u
KDUsICJgNWAiKTsKKyAgICAgICAgdGVzdEZ1bGZpbGxWaWFOb25GdW5jdGlvbih7fSwgImFuIG9i
amVjdCIpOworICAgICAgICB0ZXN0RnVsZmlsbFZpYU5vbkZ1bmN0aW9uKFtmdW5jdGlvbiAoKSB7
IH1dLCAiYW4gYXJyYXkgY29udGFpbmluZyBhIGZ1bmN0aW9uIik7CisgICAgICAgIHRlc3RGdWxm
aWxsVmlhTm9uRnVuY3Rpb24oL2EtYi9pLCAiYSByZWd1bGFyIGV4cHJlc3Npb24iKTsKKyAgICAg
ICAgdGVzdEZ1bGZpbGxWaWFOb25GdW5jdGlvbihPYmplY3QuY3JlYXRlKEZ1bmN0aW9uLnByb3Rv
dHlwZSksICJhbiBvYmplY3QgaW5oZXJpdGluZyBmcm9tIGBGdW5jdGlvbi5wcm90b3R5cGVgIik7
CisgICAgfSk7Cit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3Rz
L3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjMuNC5qcyBiL0xheW91dFRlc3RzL2pzL3Byb21p
c2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjMuNC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
NDIxZWVhODA3MzBlYWEwYWEwYTEwNWZhNmFkMjJhY2FlMzRjYTY1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3Rz
LzIuMy40LmpzCkBAIC0wLDAgKzEsNjkgQEAKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIGFzc2VydCA9
IHJlcXVpcmUoImFzc2VydCIpOwordmFyIHRlc3RGdWxmaWxsZWQgPSByZXF1aXJlKCIuL2hlbHBl
cnMvdGVzdFRocmVlQ2FzZXMiKS50ZXN0RnVsZmlsbGVkOwordmFyIHRlc3RSZWplY3RlZCA9IHJl
cXVpcmUoIi4vaGVscGVycy90ZXN0VGhyZWVDYXNlcyIpLnRlc3RSZWplY3RlZDsKKwordmFyIGR1
bW15ID0geyBkdW1teTogImR1bW15IiB9OyAvLyB3ZSBmdWxmaWxsIG9yIHJlamVjdCB3aXRoIHRo
aXMgd2hlbiB3ZSBkb24ndCBpbnRlbmQgdG8gdGVzdCBhZ2FpbnN0IGl0CisKK2Rlc2NyaWJlKCIy
LjMuNDogSWYgYHhgIGlzIG5vdCBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIGZ1bGZpbGwgYHByb21p
c2VgIHdpdGggYHhgIiwgZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRlc3RWYWx1ZShleHBl
Y3RlZFZhbHVlLCBzdHJpbmdSZXByZXNlbnRhdGlvbiwgYmVmb3JlRWFjaEhvb2ssIGFmdGVyRWFj
aEhvb2spIHsKKyAgICAgICAgZGVzY3JpYmUoIlRoZSB2YWx1ZSBpcyAiICsgc3RyaW5nUmVwcmVz
ZW50YXRpb24sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgYmVmb3JlRWFj
aEhvb2sgPT09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgICAgICAgICBiZWZvcmVFYWNoKGJlZm9y
ZUVhY2hIb29rKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0eXBlb2YgYWZ0ZXJF
YWNoSG9vayA9PT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAgICAgIGFmdGVyRWFjaChhZnRl
ckVhY2hIb29rKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGVzdEZ1bGZpbGxlZChk
dW1teSwgZnVuY3Rpb24gKHByb21pc2UxLCBkb25lKSB7CisgICAgICAgICAgICAgICAgdmFyIHBy
b21pc2UyID0gcHJvbWlzZTEudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGVkVmFsdWU7CisgICAgICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgICAgICBwcm9taXNlMi50aGVuKGZ1bmN0aW9uIG9uUHJvbWlzZTJGdWxmaWxs
ZWQoYWN0dWFsVmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KGFjdHVhbFZhbHVlLCBleHBlY3RlZFZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB0ZXN0
UmVqZWN0ZWQoZHVtbXksIGZ1bmN0aW9uIChwcm9taXNlMSwgZG9uZSkgeworICAgICAgICAgICAg
ICAgIHZhciBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4obnVsbCwgZnVuY3Rpb24gb25SZWplY3Rl
ZCgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGVkVmFsdWU7CisgICAgICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBwcm9taXNlMi50aGVuKGZ1bmN0aW9uIG9u
UHJvbWlzZTJGdWxmaWxsZWQoYWN0dWFsVmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKGFjdHVhbFZhbHVlLCBleHBlY3RlZFZhbHVlKTsKKyAgICAgICAgICAg
ICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0pOworICAgIH0KKworICAgIHRlc3RWYWx1ZSh1bmRlZmluZWQsICJgdW5kZWZpbmVk
YCIpOworICAgIHRlc3RWYWx1ZShudWxsLCAiYG51bGxgIik7CisgICAgdGVzdFZhbHVlKGZhbHNl
LCAiYGZhbHNlYCIpOworICAgIHRlc3RWYWx1ZSh0cnVlLCAiYHRydWVgIik7CisgICAgdGVzdFZh
bHVlKDAsICJgMGAiKTsKKworICAgIHRlc3RWYWx1ZSgKKyAgICAgICAgdHJ1ZSwKKyAgICAgICAg
ImB0cnVlYCB3aXRoIGBCb29sZWFuLnByb3RvdHlwZWAgbW9kaWZpZWQgdG8gaGF2ZSBhIGB0aGVu
YCBtZXRob2QiLAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBCb29sZWFuLnBy
b3RvdHlwZS50aGVuID0gZnVuY3Rpb24gKCkge307CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIGRlbGV0ZSBCb29sZWFuLnByb3RvdHlwZS50aGVuOworICAg
ICAgICB9CisgICAgKTsKKworICAgIHRlc3RWYWx1ZSgKKyAgICAgICAgMSwKKyAgICAgICAgImAx
YCB3aXRoIGBOdW1iZXIucHJvdG90eXBlYCBtb2RpZmllZCB0byBoYXZlIGEgYHRoZW5gIG1ldGhv
ZCIsCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIE51bWJlci5wcm90b3R5cGUu
dGhlbiA9IGZ1bmN0aW9uICgpIHt9OworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICBkZWxldGUgTnVtYmVyLnByb3RvdHlwZS50aGVuOworICAgICAgICB9Cisg
ICAgKTsKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJv
bWlzZXMtdGVzdHMvbGliL3Rlc3RzL2hlbHBlcnMvcmVhc29ucy5qcyBiL0xheW91dFRlc3RzL2pz
L3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy9oZWxwZXJzL3JlYXNvbnMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTRkNjcwZWI3ZTU3ODE3MzM1ZTg5NGEzZTUzNjU5N2Y5ODQwMThmZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2Vz
LXRlc3RzL2xpYi90ZXN0cy9oZWxwZXJzL3JlYXNvbnMuanMKQEAgLTAsMCArMSw1NiBAQAorInVz
ZSBzdHJpY3QiOworCisvLyBUaGlzIG1vZHVsZSBleHBvcnRzIHNvbWUgdmFsaWQgcmVqZWN0aW9u
IHJlYXNvbiBmYWN0b3JpZXMsIGtleWVkIGJ5IGh1bWFuLXJlYWRhYmxlIHZlcnNpb25zIG9mIHRo
ZWlyIG5hbWVzLgorCit2YXIgYWRhcHRlciA9IGdsb2JhbC5hZGFwdGVyOwordmFyIHJlc29sdmVk
ID0gYWRhcHRlci5yZXNvbHZlZDsKK3ZhciByZWplY3RlZCA9IGFkYXB0ZXIucmVqZWN0ZWQ7CisK
K3ZhciBkdW1teSA9IHsgZHVtbXk6ICJkdW1teSIgfTsKKworZXhwb3J0c1siYHVuZGVmaW5lZGAi
XSA9IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gdW5kZWZpbmVkOworfTsKKworZXhwb3J0c1si
YG51bGxgIl0gPSBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIG51bGw7Cit9OworCitleHBvcnRz
WyJgZmFsc2VgIl0gPSBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIGZhbHNlOworfTsKKworZXhw
b3J0c1siYDBgIl0gPSBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIDA7Cit9OworCitleHBvcnRz
WyJhbiBlcnJvciJdID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBuZXcgRXJyb3IoKTsKK307
CisKK2V4cG9ydHNbImFuIGVycm9yIHdpdGhvdXQgYSBzdGFjayJdID0gZnVuY3Rpb24gKCkgewor
ICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcigpOworICAgIGRlbGV0ZSBlcnJvci5zdGFjazsKKwor
ICAgIHJldHVybiBlcnJvcjsKK307CisKK2V4cG9ydHNbImEgZGF0ZSJdID0gZnVuY3Rpb24gKCkg
eworICAgIHJldHVybiBuZXcgRGF0ZSgpOworfTsKKworZXhwb3J0c1siYW4gb2JqZWN0Il0gPSBm
dW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIHt9OworfTsKKworZXhwb3J0c1siYW4gYWx3YXlzLXBl
bmRpbmcgdGhlbmFibGUiXSA9IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4geyB0aGVuOiBmdW5j
dGlvbiAoKSB7IH0gfTsKK307CisKK2V4cG9ydHNbImEgZnVsZmlsbGVkIHByb21pc2UiXSA9IGZ1
bmN0aW9uICgpIHsKKyAgICByZXR1cm4gcmVzb2x2ZWQoZHVtbXkpOworfTsKKworZXhwb3J0c1si
YSByZWplY3RlZCBwcm9taXNlIl0gPSBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIHJlamVjdGVk
KGR1bW15KTsKK307CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9w
cm9taXNlcy10ZXN0cy9saWIvdGVzdHMvaGVscGVycy90ZXN0VGhyZWVDYXNlcy5qcyBiL0xheW91
dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy9oZWxwZXJz
L3Rlc3RUaHJlZUNhc2VzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiMzc2Njg4MmJjYWFlZjVjNTIwMjdhMDQ4
NmI3ZTcxMzkzMDI2ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNl
cy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvaGVscGVycy90ZXN0VGhyZWVDYXNlcy5q
cwpAQCAtMCwwICsxLDQ2IEBACisidXNlIHN0cmljdCI7CisKK3ZhciBhZGFwdGVyID0gZ2xvYmFs
LmFkYXB0ZXI7Cit2YXIgcmVzb2x2ZWQgPSBhZGFwdGVyLnJlc29sdmVkOwordmFyIHJlamVjdGVk
ID0gYWRhcHRlci5yZWplY3RlZDsKK3ZhciBkZWZlcnJlZCA9IGFkYXB0ZXIuZGVmZXJyZWQ7CisK
K2V4cG9ydHMudGVzdEZ1bGZpbGxlZCA9IGZ1bmN0aW9uICh2YWx1ZSwgdGVzdCkgeworICAgIHNw
ZWNpZnkoImFscmVhZHktZnVsZmlsbGVkIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgdGVz
dChyZXNvbHZlZCh2YWx1ZSksIGRvbmUpOworICAgIH0pOworCisgICAgc3BlY2lmeSgiaW1tZWRp
YXRlbHktZnVsZmlsbGVkIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgdmFyIGQgPSBkZWZl
cnJlZCgpOworICAgICAgICB0ZXN0KGQucHJvbWlzZSwgZG9uZSk7CisgICAgICAgIGQucmVzb2x2
ZSh2YWx1ZSk7CisgICAgfSk7CisKKyAgICBzcGVjaWZ5KCJldmVudHVhbGx5LWZ1bGZpbGxlZCIs
IGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAg
dGVzdChkLnByb21pc2UsIGRvbmUpOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgIGQucmVzb2x2ZSh2YWx1ZSk7CisgICAgICAgIH0sIDUwKTsKKyAgICB9KTsK
K307CisKK2V4cG9ydHMudGVzdFJlamVjdGVkID0gZnVuY3Rpb24gKHJlYXNvbiwgdGVzdCkgewor
ICAgIHNwZWNpZnkoImFscmVhZHktcmVqZWN0ZWQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAg
ICB0ZXN0KHJlamVjdGVkKHJlYXNvbiksIGRvbmUpOworICAgIH0pOworCisgICAgc3BlY2lmeSgi
aW1tZWRpYXRlbHktcmVqZWN0ZWQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICB2YXIgZCA9
IGRlZmVycmVkKCk7CisgICAgICAgIHRlc3QoZC5wcm9taXNlLCBkb25lKTsKKyAgICAgICAgZC5y
ZWplY3QocmVhc29uKTsKKyAgICB9KTsKKworICAgIHNwZWNpZnkoImV2ZW50dWFsbHktcmVqZWN0
ZWQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAg
ICAgIHRlc3QoZC5wcm9taXNlLCBkb25lKTsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICBkLnJlamVjdChyZWFzb24pOworICAgICAgICB9LCA1MCk7CisgICAg
fSk7Cit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlz
ZXMtdGVzdHMvbGliL3Rlc3RzL2hlbHBlcnMvdGhlbmFibGVzLmpzIGIvTGF5b3V0VGVzdHMvanMv
cHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzL2hlbHBlcnMvdGhlbmFibGVz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhmNzRkMmViYWNiMDU4ZmQ0N2M1MTAxZWNiZWI4MWZiNjQ1NmExMTIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNl
cy10ZXN0cy9saWIvdGVzdHMvaGVscGVycy90aGVuYWJsZXMuanMKQEAgLTAsMCArMSwxNDIgQEAK
KyJ1c2Ugc3RyaWN0IjsKKwordmFyIGFkYXB0ZXIgPSBnbG9iYWwuYWRhcHRlcjsKK3ZhciByZXNv
bHZlZCA9IGFkYXB0ZXIucmVzb2x2ZWQ7Cit2YXIgcmVqZWN0ZWQgPSBhZGFwdGVyLnJlamVjdGVk
OwordmFyIGRlZmVycmVkID0gYWRhcHRlci5kZWZlcnJlZDsKKwordmFyIG90aGVyID0geyBvdGhl
cjogIm90aGVyIiB9OyAvLyBhIHZhbHVlIHdlIGRvbid0IHdhbnQgdG8gYmUgc3RyaWN0IGVxdWFs
IHRvCisKK2V4cG9ydHMuZnVsZmlsbGVkID0geworICAgICJhIHN5bmNocm9ub3VzbHktZnVsZmls
bGVkIGN1c3RvbSB0aGVuYWJsZSI6IGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICByZXR1cm4g
eworICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKG9uRnVsZmlsbGVkKSB7CisgICAgICAgICAg
ICAgICAgb25GdWxmaWxsZWQodmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAg
IH0sCisKKyAgICAiYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSI6
IGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgdGhlbjog
ZnVuY3Rpb24gKG9uRnVsZmlsbGVkKSB7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIG9uRnVsZmlsbGVkKHZhbHVlKTsKKyAgICAg
ICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9LAorCisg
ICAgImEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUiOiBmdW5jdGlv
biAodmFsdWUpIHsKKyAgICAgICAgdmFyIG51bWJlck9mVGltZXNUaGVuUmV0cmlldmVkID0gMDsK
KyAgICAgICAgcmV0dXJuIE9iamVjdC5jcmVhdGUobnVsbCwgeworICAgICAgICAgICAgdGhlbjog
eworICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAobnVtYmVyT2ZUaW1lc1RoZW5SZXRyaWV2ZWQgPT09IDApIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICsrbnVtYmVyT2ZUaW1lc1RoZW5SZXRyaWV2ZWQ7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG9uRnVsZmlsbGVkKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb25GdWxmaWxsZWQodmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0s
CisKKyAgICAiYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UiOiBmdW5jdGlv
biAodmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9u
IChvbkZ1bGZpbGxlZCkgeworICAgICAgICAgICAgICAgIG9uRnVsZmlsbGVkKHZhbHVlKTsKKyAg
ICAgICAgICAgICAgICBvbkZ1bGZpbGxlZChvdGhlcik7CisgICAgICAgICAgICB9CisgICAgICAg
IH07CisgICAgfSwKKworICAgICJhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhy
b3dzIjogZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICB0
aGVuOiBmdW5jdGlvbiAob25GdWxmaWxsZWQpIHsKKyAgICAgICAgICAgICAgICBvbkZ1bGZpbGxl
ZCh2YWx1ZSk7CisgICAgICAgICAgICAgICAgdGhyb3cgb3RoZXI7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisgICAgfSwKKworICAgICJhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIjog
ZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAgIHJldHVybiByZXNvbHZlZCh2YWx1ZSk7CisgICAg
fSwKKworICAgICJhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIjogZnVuY3Rpb24gKHZh
bHVlKSB7CisgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICBkLnJlc29sdmUodmFsdWUpOworICAgICAgICB9LCA1
MCk7CisgICAgICAgIHJldHVybiBkLnByb21pc2U7CisgICAgfQorfTsKKworZXhwb3J0cy5yZWpl
Y3RlZCA9IHsKKyAgICAiYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSI6
IGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHRoZW46
IGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkgeworICAgICAgICAgICAgICAgIG9u
UmVqZWN0ZWQocmVhc29uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9LAorCisg
ICAgImFuIGFzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSI6IGZ1bmN0aW9u
IChyZWFzb24pIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9u
IChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkgeworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBvblJlamVjdGVkKHJlYXNvbik7Cisg
ICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfSwK
KworICAgICJhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgb25lLXRpbWUgdGhlbmFibGUiOiBmdW5j
dGlvbiAocmVhc29uKSB7CisgICAgICAgIHZhciBudW1iZXJPZlRpbWVzVGhlblJldHJpZXZlZCA9
IDA7CisgICAgICAgIHJldHVybiBPYmplY3QuY3JlYXRlKG51bGwsIHsKKyAgICAgICAgICAgIHRo
ZW46IHsKKyAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKG51bWJlck9mVGltZXNUaGVuUmV0cmlldmVkID09PSAwKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICArK251bWJlck9mVGltZXNUaGVuUmV0cmlldmVkOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVqZWN0ZWQocmVhc29uKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9KTsKKyAgICB9LAorCisgICAgImEgdGhlbmFibGUgdGhhdCBpbW1lZGlhdGVseSB0aHJv
d3MgaW4gYHRoZW5gIjogZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICByZXR1cm4geworICAg
ICAgICAgICAgdGhlbjogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHRocm93IHJlYXNv
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9LAorCisgICAgImFuIG9iamVjdCB3
aXRoIGEgdGhyb3dpbmcgYHRoZW5gIGFjY2Vzc29yIjogZnVuY3Rpb24gKHJlYXNvbikgeworICAg
ICAgICByZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsLCB7CisgICAgICAgICAgICB0aGVuOiB7Cisg
ICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRo
cm93IHJlYXNvbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0p
OworICAgIH0sCisKKyAgICAiYW4gYWxyZWFkeS1yZWplY3RlZCBwcm9taXNlIjogZnVuY3Rpb24g
KHJlYXNvbikgeworICAgICAgICByZXR1cm4gcmVqZWN0ZWQocmVhc29uKTsKKyAgICB9LAorCisg
ICAgImFuIGV2ZW50dWFsbHktcmVqZWN0ZWQgcHJvbWlzZSI6IGZ1bmN0aW9uIChyZWFzb24pIHsK
KyAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIGQucmVqZWN0KHJlYXNvbik7CisgICAgICAgIH0sIDUwKTsKKyAg
ICAgICAgcmV0dXJuIGQucHJvbWlzZTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvcGFja2FnZS5qc29uIGIvTGF5b3V0
VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvcGFja2FnZS5qc29uCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI3ZjJhMDg1NWJjMWQ2ODNmNmUyMzk3NDU2YzMyOTQyNzEwNTM0NjMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9w
YWNrYWdlLmpzb24KQEAgLTAsMCArMSwzMCBAQAoreworICAgICJuYW1lIjogInByb21pc2VzLWFw
bHVzLXRlc3RzIiwKKyAgICAiZGVzY3JpcHRpb24iOiAiQ29tcGxpYW5jZSB0ZXN0IHN1aXRlIGZv
ciBQcm9taXNlcy9BKyIsCisgICAgImtleXdvcmRzIjogWyJwcm9taXNlcyIsICJwcm9taXNlcy1h
cGx1cyJdLAorICAgICJ2ZXJzaW9uIjogIjIuMC41IiwKKyAgICAiaW1wbGVtZW50cyI6IFsiUHJv
bWlzZXMvQSsgMS4xLjAiXSwKKyAgICAiYXV0aG9yIjogIkRvbWVuaWMgRGVuaWNvbGEgPGRvbWVu
aWNAZG9tZW5pY2Rlbmljb2xhLmNvbT4gKGh0dHA6Ly9kb21lbmljLm1lKSIsCisgICAgImxpY2Vu
c2UiOiAiV1RGUEwiLAorICAgICJyZXBvc2l0b3J5IjogeworICAgICAgICAidHlwZSI6ICJnaXQi
LAorICAgICAgICAidXJsIjogImdpdDovL2dpdGh1Yi5jb20vcHJvbWlzZXMtYXBsdXMvcHJvbWlz
ZXMtdGVzdHMuZ2l0IgorICAgIH0sCisgICAgImJ1Z3MiOiAiaHR0cHM6Ly9naXRodWIuY29tL3By
b21pc2VzLWFwbHVzL3Byb21pc2VzLXRlc3RzL2lzc3VlcyIsCisgICAgIm1haW4iOiAibGliL3By
b2dyYW1tYXRpY1J1bm5lci5qcyIsCisgICAgImJpbiI6IHsKKyAgICAgICAgInByb21pc2VzLWFw
bHVzLXRlc3RzIjogImxpYi9jbGkuanMiCisgICAgfSwKKyAgICAic2NyaXB0cyI6IHsKKyAgICAg
ICAgImxpbnQiOiAianNoaW50IGxpYiIsCisgICAgICAgICJ0ZXN0IjogIm1vY2hhIgorICAgIH0s
CisgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgIm1vY2hhIjogIn4xLjIxLjQiLAorICAg
ICAgICAic2lub24iOiAiXjEuMTAuMyIsCisgICAgICAgICJ1bmRlcnNjb3JlIjogIn4xLjYuMCIK
KyAgICB9LAorICAgICJkZXZEZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJqc2hpbnQiOiAifjIu
NC40IgorICAgIH0KK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3Rz
L3Byb21pc2VzLXRlc3RzL3Rlc3QvZ2V0TW9jaGFPcHRzVGVzdC5qcyBiL0xheW91dFRlc3RzL2pz
L3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL3Rlc3QvZ2V0TW9jaGFPcHRzVGVzdC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44YjdmMTc1ZmU0ZDE3OTVmNTg3OGVhYzBhNWZmN2RhMGM3YjAwNzQxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVz
dHMvdGVzdC9nZXRNb2NoYU9wdHNUZXN0LmpzCkBAIC0wLDAgKzEsMzIgQEAKKyJ1c2Ugc3RyaWN0
IjsKKwordmFyIGFzc2VydCA9IHJlcXVpcmUoImFzc2VydCIpOwordmFyIGdldE1vY2hhT3B0cyA9
IHJlcXVpcmUoIi4uL2xpYi9nZXRNb2NoYU9wdHMiKTsKKworZGVzY3JpYmUoImdldE1vY2hhT3B0
cyIsIGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIHRlc3QoYXJnc1N0cmluZywgZXhwZWN0ZWRP
cHRzKSB7CisgICAgICAgIHZhciBvcHRzID0gZ2V0TW9jaGFPcHRzKGFyZ3NTdHJpbmcuc3BsaXQo
IiAiKSk7CisgICAgICAgIGFzc2VydC5kZWVwRXF1YWwob3B0cywgZXhwZWN0ZWRPcHRzKTsKKyAg
ICB9CisKKyAgICBpdCgicGFyc2VzIHRoZSBwcm92aWRlZCBvcHRpb25zIHRvIGFuIG9iamVjdCIs
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGVzdCgiLS1yZXBvcnRlciBzcGVjIC0tdWkgYmRkIiwg
eworICAgICAgICAgICAgcmVwb3J0ZXI6ICJzcGVjIiwKKyAgICAgICAgICAgIHVpOiAiYmRkIgor
ICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGl0KCJzZXRzIHRoZSB2YWx1ZSBmb3Igbm8tYXJn
IG9wdGlvbnMgdG8gdHJ1ZSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGVzdCgiLS1iYWlsIC0t
dWkgYmRkIiwgeworICAgICAgICAgIGJhaWw6IHRydWUsCisgICAgICAgICAgdWk6ICJiZGQiCisg
ICAgICAgIH0pOworICAgIH0pOworCisgICAgaXQoInN1cHBvcnRzIG5vLWFyZyBvcHRpb25zIGFz
IHRoZSBsYXN0IG9wdGlvbiIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGVzdCgiLS1yZXBvcnRl
ciBzcGVjIC0tYmFpbCIsIHsKKyAgICAgICAgICByZXBvcnRlcjogInNwZWMiLAorICAgICAgICAg
IGJhaWw6IHRydWUKKyAgICAgICAgfSk7CisgICAgfSk7Cit9KTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Jlc291cmNlcy9tb2NoYS5qcyBiL0xheW91dFRlc3Rz
L2pzL3Byb21pc2VzLXRlc3RzL3Jlc291cmNlcy9tb2NoYS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzlhYTU4
MzcyM2M2YWIyYzg4YTFkZWVjMmIzZTYyMzI4N2JjZDJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcmVzb3VyY2VzL21vY2hhLmpzCkBAIC0wLDAgKzEs
NTk4MyBAQAorOyhmdW5jdGlvbigpeworCisvLyBDb21tb25KUyByZXF1aXJlKCkKKworZnVuY3Rp
b24gcmVxdWlyZShwKXsKKyAgICB2YXIgcGF0aCA9IHJlcXVpcmUucmVzb2x2ZShwKQorICAgICAg
LCBtb2QgPSByZXF1aXJlLm1vZHVsZXNbcGF0aF07CisgICAgaWYgKCFtb2QpIHRocm93IG5ldyBF
cnJvcignZmFpbGVkIHRvIHJlcXVpcmUgIicgKyBwICsgJyInKTsKKyAgICBpZiAoIW1vZC5leHBv
cnRzKSB7CisgICAgICBtb2QuZXhwb3J0cyA9IHt9OworICAgICAgbW9kLmNhbGwobW9kLmV4cG9y
dHMsIG1vZCwgbW9kLmV4cG9ydHMsIHJlcXVpcmUucmVsYXRpdmUocGF0aCkpOworICAgIH0KKyAg
ICByZXR1cm4gbW9kLmV4cG9ydHM7CisgIH0KKworcmVxdWlyZS5tb2R1bGVzID0ge307CisKK3Jl
cXVpcmUucmVzb2x2ZSA9IGZ1bmN0aW9uIChwYXRoKXsKKyAgICB2YXIgb3JpZyA9IHBhdGgKKyAg
ICAgICwgcmVnID0gcGF0aCArICcuanMnCisgICAgICAsIGluZGV4ID0gcGF0aCArICcvaW5kZXgu
anMnOworICAgIHJldHVybiByZXF1aXJlLm1vZHVsZXNbcmVnXSAmJiByZWcKKyAgICAgIHx8IHJl
cXVpcmUubW9kdWxlc1tpbmRleF0gJiYgaW5kZXgKKyAgICAgIHx8IG9yaWc7CisgIH07CisKK3Jl
cXVpcmUucmVnaXN0ZXIgPSBmdW5jdGlvbiAocGF0aCwgZm4peworICAgIHJlcXVpcmUubW9kdWxl
c1twYXRoXSA9IGZuOworICB9OworCityZXF1aXJlLnJlbGF0aXZlID0gZnVuY3Rpb24gKHBhcmVu
dCkgeworICAgIHJldHVybiBmdW5jdGlvbihwKXsKKyAgICAgIGlmICgnLicgIT0gcC5jaGFyQXQo
MCkpIHJldHVybiByZXF1aXJlKHApOworCisgICAgICB2YXIgcGF0aCA9IHBhcmVudC5zcGxpdCgn
LycpCisgICAgICAgICwgc2VncyA9IHAuc3BsaXQoJy8nKTsKKyAgICAgIHBhdGgucG9wKCk7CisK
KyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2Vncy5sZW5ndGg7IGkrKykgeworICAgICAgICB2
YXIgc2VnID0gc2Vnc1tpXTsKKyAgICAgICAgaWYgKCcuLicgPT0gc2VnKSBwYXRoLnBvcCgpOwor
ICAgICAgICBlbHNlIGlmICgnLicgIT0gc2VnKSBwYXRoLnB1c2goc2VnKTsKKyAgICAgIH0KKwor
ICAgICAgcmV0dXJuIHJlcXVpcmUocGF0aC5qb2luKCcvJykpOworICAgIH07CisgIH07CisKKwor
cmVxdWlyZS5yZWdpc3RlcigiYnJvd3Nlci9kZWJ1Zy5qcyIsIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgcmVxdWlyZSl7CisKK21vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24odHlwZSl7CisgIHJl
dHVybiBmdW5jdGlvbigpeworICB9Cit9OworCit9KTsgLy8gbW9kdWxlOiBicm93c2VyL2RlYnVn
LmpzCisKK3JlcXVpcmUucmVnaXN0ZXIoImJyb3dzZXIvZGlmZi5qcyIsIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgcmVxdWlyZSl7CisvKiBTZWUgTElDRU5TRSBmaWxlIGZvciB0ZXJtcyBvZiB1
c2UgKi8KKworLyoKKyAqIFRleHQgZGlmZiBpbXBsZW1lbnRhdGlvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBBUElTOgorICogSnNEaWZmLmRpZmZDaGFyczog
Q2hhcmFjdGVyIGJ5IGNoYXJhY3RlciBkaWZmCisgKiBKc0RpZmYuZGlmZldvcmRzOiBXb3JkIChh
cyBkZWZpbmVkIGJ5IFxiIHJlZ2V4KSBkaWZmIHdoaWNoIGlnbm9yZXMgd2hpdGVzcGFjZQorICog
SnNEaWZmLmRpZmZMaW5lczogTGluZSBiYXNlZCBkaWZmCisgKgorICogSnNEaWZmLmRpZmZDc3M6
IERpZmYgdGFyZ2V0ZWQgYXQgQ1NTIGNvbnRlbnQKKyAqCisgKiBUaGVzZSBtZXRob2RzIGFyZSBi
YXNlZCBvbiB0aGUgaW1wbGVtZW50YXRpb24gcHJvcG9zZWQgaW4KKyAqICJBbiBPKE5EKSBEaWZm
ZXJlbmNlIEFsZ29yaXRobSBhbmQgaXRzIFZhcmlhdGlvbnMiIChNeWVycywgMTk4NikuCisgKiBo
dHRwOi8vY2l0ZXNlZXJ4LmlzdC5wc3UuZWR1L3ZpZXdkb2Mvc3VtbWFyeT9kb2k9MTAuMS4xLjQu
NjkyNworICovCit2YXIgSnNEaWZmID0gKGZ1bmN0aW9uKCkgeworICAvKmpzaGludCBtYXhwYXJh
bXM6IDUqLworICBmdW5jdGlvbiBjbG9uZVBhdGgocGF0aCkgeworICAgIHJldHVybiB7IG5ld1Bv
czogcGF0aC5uZXdQb3MsIGNvbXBvbmVudHM6IHBhdGguY29tcG9uZW50cy5zbGljZSgwKSB9Owor
ICB9CisgIGZ1bmN0aW9uIHJlbW92ZUVtcHR5KGFycmF5KSB7CisgICAgdmFyIHJldCA9IFtdOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHsKKyAgICAgIGlmIChh
cnJheVtpXSkgeworICAgICAgICByZXQucHVzaChhcnJheVtpXSk7CisgICAgICB9CisgICAgfQor
ICAgIHJldHVybiByZXQ7CisgIH0KKyAgZnVuY3Rpb24gZXNjYXBlSFRNTChzKSB7CisgICAgdmFy
IG4gPSBzOworICAgIG4gPSBuLnJlcGxhY2UoLyYvZywgJyZhbXA7Jyk7CisgICAgbiA9IG4ucmVw
bGFjZSgvPC9nLCAnJmx0OycpOworICAgIG4gPSBuLnJlcGxhY2UoLz4vZywgJyZndDsnKTsKKyAg
ICBuID0gbi5yZXBsYWNlKC8iL2csICcmcXVvdDsnKTsKKworICAgIHJldHVybiBuOworICB9CisK
KyAgdmFyIERpZmYgPSBmdW5jdGlvbihpZ25vcmVXaGl0ZXNwYWNlKSB7CisgICAgdGhpcy5pZ25v
cmVXaGl0ZXNwYWNlID0gaWdub3JlV2hpdGVzcGFjZTsKKyAgfTsKKyAgRGlmZi5wcm90b3R5cGUg
PSB7CisgICAgICBkaWZmOiBmdW5jdGlvbihvbGRTdHJpbmcsIG5ld1N0cmluZykgeworICAgICAg
ICAvLyBIYW5kbGUgdGhlIGlkZW50aXR5IGNhc2UgKHRoaXMgaXMgZHVlIHRvIHVucm9sbGluZyBl
ZGl0TGVuZ3RoID09IDAKKyAgICAgICAgaWYgKG5ld1N0cmluZyA9PT0gb2xkU3RyaW5nKSB7Cisg
ICAgICAgICAgcmV0dXJuIFt7IHZhbHVlOiBuZXdTdHJpbmcgfV07CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKCFuZXdTdHJpbmcpIHsKKyAgICAgICAgICByZXR1cm4gW3sgdmFsdWU6IG9sZFN0cmlu
ZywgcmVtb3ZlZDogdHJ1ZSB9XTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIW9sZFN0cmluZykg
eworICAgICAgICAgIHJldHVybiBbeyB2YWx1ZTogbmV3U3RyaW5nLCBhZGRlZDogdHJ1ZSB9XTsK
KyAgICAgICAgfQorCisgICAgICAgIG5ld1N0cmluZyA9IHRoaXMudG9rZW5pemUobmV3U3RyaW5n
KTsKKyAgICAgICAgb2xkU3RyaW5nID0gdGhpcy50b2tlbml6ZShvbGRTdHJpbmcpOworCisgICAg
ICAgIHZhciBuZXdMZW4gPSBuZXdTdHJpbmcubGVuZ3RoLCBvbGRMZW4gPSBvbGRTdHJpbmcubGVu
Z3RoOworICAgICAgICB2YXIgbWF4RWRpdExlbmd0aCA9IG5ld0xlbiArIG9sZExlbjsKKyAgICAg
ICAgdmFyIGJlc3RQYXRoID0gW3sgbmV3UG9zOiAtMSwgY29tcG9uZW50czogW10gfV07CisKKyAg
ICAgICAgLy8gU2VlZCBlZGl0TGVuZ3RoID0gMAorICAgICAgICB2YXIgb2xkUG9zID0gdGhpcy5l
eHRyYWN0Q29tbW9uKGJlc3RQYXRoWzBdLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgMCk7CisgICAg
ICAgIGlmIChiZXN0UGF0aFswXS5uZXdQb3MrMSA+PSBuZXdMZW4gJiYgb2xkUG9zKzEgPj0gb2xk
TGVuKSB7CisgICAgICAgICAgcmV0dXJuIGJlc3RQYXRoWzBdLmNvbXBvbmVudHM7CisgICAgICAg
IH0KKworICAgICAgICBmb3IgKHZhciBlZGl0TGVuZ3RoID0gMTsgZWRpdExlbmd0aCA8PSBtYXhF
ZGl0TGVuZ3RoOyBlZGl0TGVuZ3RoKyspIHsKKyAgICAgICAgICBmb3IgKHZhciBkaWFnb25hbFBh
dGggPSAtMSplZGl0TGVuZ3RoOyBkaWFnb25hbFBhdGggPD0gZWRpdExlbmd0aDsgZGlhZ29uYWxQ
YXRoKz0yKSB7CisgICAgICAgICAgICB2YXIgYmFzZVBhdGg7CisgICAgICAgICAgICB2YXIgYWRk
UGF0aCA9IGJlc3RQYXRoW2RpYWdvbmFsUGF0aC0xXSwKKyAgICAgICAgICAgICAgICByZW1vdmVQ
YXRoID0gYmVzdFBhdGhbZGlhZ29uYWxQYXRoKzFdOworICAgICAgICAgICAgb2xkUG9zID0gKHJl
bW92ZVBhdGggPyByZW1vdmVQYXRoLm5ld1BvcyA6IDApIC0gZGlhZ29uYWxQYXRoOworICAgICAg
ICAgICAgaWYgKGFkZFBhdGgpIHsKKyAgICAgICAgICAgICAgLy8gTm8gb25lIGVsc2UgaXMgZ29p
bmcgdG8gYXR0ZW1wdCB0byB1c2UgdGhpcyB2YWx1ZSwgY2xlYXIgaXQKKyAgICAgICAgICAgICAg
YmVzdFBhdGhbZGlhZ29uYWxQYXRoLTFdID0gdW5kZWZpbmVkOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgY2FuQWRkID0gYWRkUGF0aCAmJiBhZGRQYXRoLm5ld1BvcysxIDwgbmV3
TGVuOworICAgICAgICAgICAgdmFyIGNhblJlbW92ZSA9IHJlbW92ZVBhdGggJiYgMCA8PSBvbGRQ
b3MgJiYgb2xkUG9zIDwgb2xkTGVuOworICAgICAgICAgICAgaWYgKCFjYW5BZGQgJiYgIWNhblJl
bW92ZSkgeworICAgICAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGhdID0gdW5kZWZpbmVk
OworICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gU2VsZWN0IHRoZSBkaWFnb25hbCB0aGF0IHdlIHdhbnQgdG8gYnJhbmNoIGZyb20uIFdlIHNl
bGVjdCB0aGUgcHJpb3IKKyAgICAgICAgICAgIC8vIHBhdGggd2hvc2UgcG9zaXRpb24gaW4gdGhl
IG5ldyBzdHJpbmcgaXMgdGhlIGZhcnRoZXN0IGZyb20gdGhlIG9yaWdpbgorICAgICAgICAgICAg
Ly8gYW5kIGRvZXMgbm90IHBhc3MgdGhlIGJvdW5kcyBvZiB0aGUgZGlmZiBncmFwaAorICAgICAg
ICAgICAgaWYgKCFjYW5BZGQgfHwgKGNhblJlbW92ZSAmJiBhZGRQYXRoLm5ld1BvcyA8IHJlbW92
ZVBhdGgubmV3UG9zKSkgeworICAgICAgICAgICAgICBiYXNlUGF0aCA9IGNsb25lUGF0aChyZW1v
dmVQYXRoKTsKKyAgICAgICAgICAgICAgdGhpcy5wdXNoQ29tcG9uZW50KGJhc2VQYXRoLmNvbXBv
bmVudHMsIG9sZFN0cmluZ1tvbGRQb3NdLCB1bmRlZmluZWQsIHRydWUpOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgYmFzZVBhdGggPSBjbG9uZVBhdGgoYWRkUGF0aCk7Cisg
ICAgICAgICAgICAgIGJhc2VQYXRoLm5ld1BvcysrOworICAgICAgICAgICAgICB0aGlzLnB1c2hD
b21wb25lbnQoYmFzZVBhdGguY29tcG9uZW50cywgbmV3U3RyaW5nW2Jhc2VQYXRoLm5ld1Bvc10s
IHRydWUsIHVuZGVmaW5lZCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBvbGRQ
b3MgPSB0aGlzLmV4dHJhY3RDb21tb24oYmFzZVBhdGgsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBk
aWFnb25hbFBhdGgpOworCisgICAgICAgICAgICBpZiAoYmFzZVBhdGgubmV3UG9zKzEgPj0gbmV3
TGVuICYmIG9sZFBvcysxID49IG9sZExlbikgeworICAgICAgICAgICAgICByZXR1cm4gYmFzZVBh
dGguY29tcG9uZW50czsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIGJlc3RQ
YXRoW2RpYWdvbmFsUGF0aF0gPSBiYXNlUGF0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgIH0sCisKKyAgICAgIHB1c2hDb21wb25lbnQ6IGZ1bmN0aW9uKGNv
bXBvbmVudHMsIHZhbHVlLCBhZGRlZCwgcmVtb3ZlZCkgeworICAgICAgICB2YXIgbGFzdCA9IGNv
bXBvbmVudHNbY29tcG9uZW50cy5sZW5ndGgtMV07CisgICAgICAgIGlmIChsYXN0ICYmIGxhc3Qu
YWRkZWQgPT09IGFkZGVkICYmIGxhc3QucmVtb3ZlZCA9PT0gcmVtb3ZlZCkgeworICAgICAgICAg
IC8vIFdlIG5lZWQgdG8gY2xvbmUgaGVyZSBhcyB0aGUgY29tcG9uZW50IGNsb25lIG9wZXJhdGlv
biBpcyBqdXN0CisgICAgICAgICAgLy8gYXMgc2hhbGxvdyBhcnJheSBjbG9uZQorICAgICAgICAg
IGNvbXBvbmVudHNbY29tcG9uZW50cy5sZW5ndGgtMV0gPQorICAgICAgICAgICAge3ZhbHVlOiB0
aGlzLmpvaW4obGFzdC52YWx1ZSwgdmFsdWUpLCBhZGRlZDogYWRkZWQsIHJlbW92ZWQ6IHJlbW92
ZWQgfTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBjb21wb25lbnRzLnB1c2goe3ZhbHVl
OiB2YWx1ZSwgYWRkZWQ6IGFkZGVkLCByZW1vdmVkOiByZW1vdmVkIH0pOworICAgICAgICB9Cisg
ICAgICB9LAorICAgICAgZXh0cmFjdENvbW1vbjogZnVuY3Rpb24oYmFzZVBhdGgsIG5ld1N0cmlu
Zywgb2xkU3RyaW5nLCBkaWFnb25hbFBhdGgpIHsKKyAgICAgICAgdmFyIG5ld0xlbiA9IG5ld1N0
cmluZy5sZW5ndGgsCisgICAgICAgICAgICBvbGRMZW4gPSBvbGRTdHJpbmcubGVuZ3RoLAorICAg
ICAgICAgICAgbmV3UG9zID0gYmFzZVBhdGgubmV3UG9zLAorICAgICAgICAgICAgb2xkUG9zID0g
bmV3UG9zIC0gZGlhZ29uYWxQYXRoOworICAgICAgICB3aGlsZSAobmV3UG9zKzEgPCBuZXdMZW4g
JiYgb2xkUG9zKzEgPCBvbGRMZW4gJiYgdGhpcy5lcXVhbHMobmV3U3RyaW5nW25ld1BvcysxXSwg
b2xkU3RyaW5nW29sZFBvcysxXSkpIHsKKyAgICAgICAgICBuZXdQb3MrKzsKKyAgICAgICAgICBv
bGRQb3MrKzsKKworICAgICAgICAgIHRoaXMucHVzaENvbXBvbmVudChiYXNlUGF0aC5jb21wb25l
bnRzLCBuZXdTdHJpbmdbbmV3UG9zXSwgdW5kZWZpbmVkLCB1bmRlZmluZWQpOworICAgICAgICB9
CisgICAgICAgIGJhc2VQYXRoLm5ld1BvcyA9IG5ld1BvczsKKyAgICAgICAgcmV0dXJuIG9sZFBv
czsKKyAgICAgIH0sCisKKyAgICAgIGVxdWFsczogZnVuY3Rpb24obGVmdCwgcmlnaHQpIHsKKyAg
ICAgICAgdmFyIHJlV2hpdGVzcGFjZSA9IC9cUy87CisgICAgICAgIGlmICh0aGlzLmlnbm9yZVdo
aXRlc3BhY2UgJiYgIXJlV2hpdGVzcGFjZS50ZXN0KGxlZnQpICYmICFyZVdoaXRlc3BhY2UudGVz
dChyaWdodCkpIHsKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICByZXR1cm4gbGVmdCA9PT0gcmlnaHQ7CisgICAgICAgIH0KKyAgICAgIH0sCisgICAg
ICBqb2luOiBmdW5jdGlvbihsZWZ0LCByaWdodCkgeworICAgICAgICByZXR1cm4gbGVmdCArIHJp
Z2h0OworICAgICAgfSwKKyAgICAgIHRva2VuaXplOiBmdW5jdGlvbih2YWx1ZSkgeworICAgICAg
ICByZXR1cm4gdmFsdWU7CisgICAgICB9CisgIH07CisKKyAgdmFyIENoYXJEaWZmID0gbmV3IERp
ZmYoKTsKKworICB2YXIgV29yZERpZmYgPSBuZXcgRGlmZih0cnVlKTsKKyAgdmFyIFdvcmRXaXRo
U3BhY2VEaWZmID0gbmV3IERpZmYoKTsKKyAgV29yZERpZmYudG9rZW5pemUgPSBXb3JkV2l0aFNw
YWNlRGlmZi50b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgcmV0dXJuIHJlbW92ZUVt
cHR5KHZhbHVlLnNwbGl0KC8oXHMrfFxiKS8pKTsKKyAgfTsKKworICB2YXIgQ3NzRGlmZiA9IG5l
dyBEaWZmKHRydWUpOworICBDc3NEaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUpIHsKKyAg
ICByZXR1cm4gcmVtb3ZlRW1wdHkodmFsdWUuc3BsaXQoLyhbe306OyxdfFxzKykvKSk7CisgIH07
CisKKyAgdmFyIExpbmVEaWZmID0gbmV3IERpZmYoKTsKKyAgTGluZURpZmYudG9rZW5pemUgPSBm
dW5jdGlvbih2YWx1ZSkgeworICAgIHJldHVybiB2YWx1ZS5zcGxpdCgvXi9tKTsKKyAgfTsKKwor
ICByZXR1cm4geworICAgIERpZmY6IERpZmYsCisKKyAgICBkaWZmQ2hhcnM6IGZ1bmN0aW9uKG9s
ZFN0ciwgbmV3U3RyKSB7IHJldHVybiBDaGFyRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyKTsgfSwK
KyAgICBkaWZmV29yZHM6IGZ1bmN0aW9uKG9sZFN0ciwgbmV3U3RyKSB7IHJldHVybiBXb3JkRGlm
Zi5kaWZmKG9sZFN0ciwgbmV3U3RyKTsgfSwKKyAgICBkaWZmV29yZHNXaXRoU3BhY2U6IGZ1bmN0
aW9uKG9sZFN0ciwgbmV3U3RyKSB7IHJldHVybiBXb3JkV2l0aFNwYWNlRGlmZi5kaWZmKG9sZFN0
ciwgbmV3U3RyKTsgfSwKKyAgICBkaWZmTGluZXM6IGZ1bmN0aW9uKG9sZFN0ciwgbmV3U3RyKSB7
IHJldHVybiBMaW5lRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyKTsgfSwKKworICAgIGRpZmZDc3M6
IGZ1bmN0aW9uKG9sZFN0ciwgbmV3U3RyKSB7IHJldHVybiBDc3NEaWZmLmRpZmYob2xkU3RyLCBu
ZXdTdHIpOyB9LAorCisgICAgY3JlYXRlUGF0Y2g6IGZ1bmN0aW9uKGZpbGVOYW1lLCBvbGRTdHIs
IG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIpIHsKKyAgICAgIHZhciByZXQgPSBbXTsKKwor
ICAgICAgcmV0LnB1c2goJ0luZGV4OiAnICsgZmlsZU5hbWUpOworICAgICAgcmV0LnB1c2goJz09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0nKTsKKyAgICAgIHJldC5wdXNoKCctLS0gJyArIGZpbGVOYW1lICsgKHR5cGVvZiBv
bGRIZWFkZXIgPT09ICd1bmRlZmluZWQnID8gJycgOiAnXHQnICsgb2xkSGVhZGVyKSk7CisgICAg
ICByZXQucHVzaCgnKysrICcgKyBmaWxlTmFtZSArICh0eXBlb2YgbmV3SGVhZGVyID09PSAndW5k
ZWZpbmVkJyA/ICcnIDogJ1x0JyArIG5ld0hlYWRlcikpOworCisgICAgICB2YXIgZGlmZiA9IExp
bmVEaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIpOworICAgICAgaWYgKCFkaWZmW2RpZmYubGVuZ3Ro
LTFdLnZhbHVlKSB7CisgICAgICAgIGRpZmYucG9wKCk7ICAgLy8gUmVtb3ZlIHRyYWlsaW5nIG5l
d2xpbmUgYWRkCisgICAgICB9CisgICAgICBkaWZmLnB1c2goe3ZhbHVlOiAnJywgbGluZXM6IFtd
fSk7ICAgLy8gQXBwZW5kIGFuIGVtcHR5IHZhbHVlIHRvIG1ha2UgY2xlYW51cCBlYXNpZXIKKwor
ICAgICAgZnVuY3Rpb24gY29udGV4dExpbmVzKGxpbmVzKSB7CisgICAgICAgIHJldHVybiBsaW5l
cy5tYXAoZnVuY3Rpb24oZW50cnkpIHsgcmV0dXJuICcgJyArIGVudHJ5OyB9KTsKKyAgICAgIH0K
KyAgICAgIGZ1bmN0aW9uIGVvZk5MKGN1clJhbmdlLCBpLCBjdXJyZW50KSB7CisgICAgICAgIHZh
ciBsYXN0ID0gZGlmZltkaWZmLmxlbmd0aC0yXSwKKyAgICAgICAgICAgIGlzTGFzdCA9IGkgPT09
IGRpZmYubGVuZ3RoLTIsCisgICAgICAgICAgICBpc0xhc3RPZlR5cGUgPSBpID09PSBkaWZmLmxl
bmd0aC0zICYmIChjdXJyZW50LmFkZGVkICE9PSBsYXN0LmFkZGVkIHx8IGN1cnJlbnQucmVtb3Zl
ZCAhPT0gbGFzdC5yZW1vdmVkKTsKKworICAgICAgICAvLyBGaWd1cmUgb3V0IGlmIHRoaXMgaXMg
dGhlIGxhc3QgbGluZSBmb3IgdGhlIGdpdmVuIGZpbGUgYW5kIG1pc3NpbmcgTkwKKyAgICAgICAg
aWYgKCEvXG4kLy50ZXN0KGN1cnJlbnQudmFsdWUpICYmIChpc0xhc3QgfHwgaXNMYXN0T2ZUeXBl
KSkgeworICAgICAgICAgIGN1clJhbmdlLnB1c2goJ1xcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUnKTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICB2YXIgb2xkUmFuZ2VTdGFydCA9IDAs
IG5ld1JhbmdlU3RhcnQgPSAwLCBjdXJSYW5nZSA9IFtdLAorICAgICAgICAgIG9sZExpbmUgPSAx
LCBuZXdMaW5lID0gMTsKKyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlmZi5sZW5ndGg7IGkr
KykgeworICAgICAgICB2YXIgY3VycmVudCA9IGRpZmZbaV0sCisgICAgICAgICAgICBsaW5lcyA9
IGN1cnJlbnQubGluZXMgfHwgY3VycmVudC52YWx1ZS5yZXBsYWNlKC9cbiQvLCAnJykuc3BsaXQo
J1xuJyk7CisgICAgICAgIGN1cnJlbnQubGluZXMgPSBsaW5lczsKKworICAgICAgICBpZiAoY3Vy
cmVudC5hZGRlZCB8fCBjdXJyZW50LnJlbW92ZWQpIHsKKyAgICAgICAgICBpZiAoIW9sZFJhbmdl
U3RhcnQpIHsKKyAgICAgICAgICAgIHZhciBwcmV2ID0gZGlmZltpLTFdOworICAgICAgICAgICAg
b2xkUmFuZ2VTdGFydCA9IG9sZExpbmU7CisgICAgICAgICAgICBuZXdSYW5nZVN0YXJ0ID0gbmV3
TGluZTsKKworICAgICAgICAgICAgaWYgKHByZXYpIHsKKyAgICAgICAgICAgICAgY3VyUmFuZ2Ug
PSBjb250ZXh0TGluZXMocHJldi5saW5lcy5zbGljZSgtNCkpOworICAgICAgICAgICAgICBvbGRS
YW5nZVN0YXJ0IC09IGN1clJhbmdlLmxlbmd0aDsKKyAgICAgICAgICAgICAgbmV3UmFuZ2VTdGFy
dCAtPSBjdXJSYW5nZS5sZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAg
ICAgIGN1clJhbmdlLnB1c2guYXBwbHkoY3VyUmFuZ2UsIGxpbmVzLm1hcChmdW5jdGlvbihlbnRy
eSkgeyByZXR1cm4gKGN1cnJlbnQuYWRkZWQ/JysnOictJykgKyBlbnRyeTsgfSkpOworICAgICAg
ICAgIGVvZk5MKGN1clJhbmdlLCBpLCBjdXJyZW50KTsKKworICAgICAgICAgIGlmIChjdXJyZW50
LmFkZGVkKSB7CisgICAgICAgICAgICBuZXdMaW5lICs9IGxpbmVzLmxlbmd0aDsKKyAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgb2xkTGluZSArPSBsaW5lcy5sZW5ndGg7CisgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGlmIChvbGRSYW5nZVN0YXJ0KSB7Cisg
ICAgICAgICAgICAvLyBDbG9zZSBvdXQgYW55IGNoYW5nZXMgdGhhdCBoYXZlIGJlZW4gb3V0cHV0
IChvciBqb2luIG92ZXJsYXBwaW5nKQorICAgICAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA8PSA4
ICYmIGkgPCBkaWZmLmxlbmd0aC0yKSB7CisgICAgICAgICAgICAgIC8vIE92ZXJsYXBwaW5nCisg
ICAgICAgICAgICAgIGN1clJhbmdlLnB1c2guYXBwbHkoY3VyUmFuZ2UsIGNvbnRleHRMaW5lcyhs
aW5lcykpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgLy8gZW5kIHRoZSBy
YW5nZSBhbmQgb3V0cHV0CisgICAgICAgICAgICAgIHZhciBjb250ZXh0U2l6ZSA9IE1hdGgubWlu
KGxpbmVzLmxlbmd0aCwgNCk7CisgICAgICAgICAgICAgIHJldC5wdXNoKAorICAgICAgICAgICAg
ICAgICAgJ0BAIC0nICsgb2xkUmFuZ2VTdGFydCArICcsJyArIChvbGRMaW5lLW9sZFJhbmdlU3Rh
cnQrY29udGV4dFNpemUpCisgICAgICAgICAgICAgICAgICArICcgKycgKyBuZXdSYW5nZVN0YXJ0
ICsgJywnICsgKG5ld0xpbmUtbmV3UmFuZ2VTdGFydCtjb250ZXh0U2l6ZSkKKyAgICAgICAgICAg
ICAgICAgICsgJyBAQCcpOworICAgICAgICAgICAgICByZXQucHVzaC5hcHBseShyZXQsIGN1clJh
bmdlKTsKKyAgICAgICAgICAgICAgcmV0LnB1c2guYXBwbHkocmV0LCBjb250ZXh0TGluZXMobGlu
ZXMuc2xpY2UoMCwgY29udGV4dFNpemUpKSk7CisgICAgICAgICAgICAgIGlmIChsaW5lcy5sZW5n
dGggPD0gNCkgeworICAgICAgICAgICAgICAgIGVvZk5MKHJldCwgaSwgY3VycmVudCk7CisgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICBvbGRSYW5nZVN0YXJ0ID0gMDsgIG5ld1Jhbmdl
U3RhcnQgPSAwOyBjdXJSYW5nZSA9IFtdOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAg
ICAgICAgICBvbGRMaW5lICs9IGxpbmVzLmxlbmd0aDsKKyAgICAgICAgICBuZXdMaW5lICs9IGxp
bmVzLmxlbmd0aDsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICByZXR1cm4gcmV0LmpvaW4o
J1xuJykgKyAnXG4nOworICAgIH0sCisKKyAgICBhcHBseVBhdGNoOiBmdW5jdGlvbihvbGRTdHIs
IHVuaURpZmYpIHsKKyAgICAgIHZhciBkaWZmc3RyID0gdW5pRGlmZi5zcGxpdCgnXG4nKTsKKyAg
ICAgIHZhciBkaWZmID0gW107CisgICAgICB2YXIgcmVtRU9GTkwgPSBmYWxzZSwKKyAgICAgICAg
ICBhZGRFT0ZOTCA9IGZhbHNlOworCisgICAgICBmb3IgKHZhciBpID0gKGRpZmZzdHJbMF1bMF09
PT0nSSc/NDowKTsgaSA8IGRpZmZzdHIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYoZGlmZnN0
cltpXVswXSA9PT0gJ0AnKSB7CisgICAgICAgICAgdmFyIG1laCA9IGRpZmZzdHJbaV0uc3BsaXQo
L0BAIC0oXGQrKSwoXGQrKSBcKyhcZCspLChcZCspIEBALyk7CisgICAgICAgICAgZGlmZi51bnNo
aWZ0KHsKKyAgICAgICAgICAgIHN0YXJ0Om1laFszXSwKKyAgICAgICAgICAgIG9sZGxlbmd0aDpt
ZWhbMl0sCisgICAgICAgICAgICBvbGRsaW5lczpbXSwKKyAgICAgICAgICAgIG5ld2xlbmd0aDpt
ZWhbNF0sCisgICAgICAgICAgICBuZXdsaW5lczpbXQorICAgICAgICAgIH0pOworICAgICAgICB9
IGVsc2UgaWYoZGlmZnN0cltpXVswXSA9PT0gJysnKSB7CisgICAgICAgICAgZGlmZlswXS5uZXds
aW5lcy5wdXNoKGRpZmZzdHJbaV0uc3Vic3RyKDEpKTsKKyAgICAgICAgfSBlbHNlIGlmKGRpZmZz
dHJbaV1bMF0gPT09ICctJykgeworICAgICAgICAgIGRpZmZbMF0ub2xkbGluZXMucHVzaChkaWZm
c3RyW2ldLnN1YnN0cigxKSk7CisgICAgICAgIH0gZWxzZSBpZihkaWZmc3RyW2ldWzBdID09PSAn
ICcpIHsKKyAgICAgICAgICBkaWZmWzBdLm5ld2xpbmVzLnB1c2goZGlmZnN0cltpXS5zdWJzdHIo
MSkpOworICAgICAgICAgIGRpZmZbMF0ub2xkbGluZXMucHVzaChkaWZmc3RyW2ldLnN1YnN0cigx
KSk7CisgICAgICAgIH0gZWxzZSBpZihkaWZmc3RyW2ldWzBdID09PSAnXFwnKSB7CisgICAgICAg
ICAgaWYgKGRpZmZzdHJbaS0xXVswXSA9PT0gJysnKSB7CisgICAgICAgICAgICByZW1FT0ZOTCA9
IHRydWU7CisgICAgICAgICAgfSBlbHNlIGlmKGRpZmZzdHJbaS0xXVswXSA9PT0gJy0nKSB7Cisg
ICAgICAgICAgICBhZGRFT0ZOTCA9IHRydWU7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICB9CisKKyAgICAgIHZhciBzdHIgPSBvbGRTdHIuc3BsaXQoJ1xuJyk7CisgICAgICBmb3IgKHZh
ciBpID0gZGlmZi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICB2YXIgZCA9IGRp
ZmZbaV07CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZC5vbGRsZW5ndGg7IGorKykgewor
ICAgICAgICAgIGlmKHN0cltkLnN0YXJ0LTEral0gIT09IGQub2xkbGluZXNbal0pIHsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQXJy
YXkucHJvdG90eXBlLnNwbGljZS5hcHBseShzdHIsW2Quc3RhcnQtMSwrZC5vbGRsZW5ndGhdLmNv
bmNhdChkLm5ld2xpbmVzKSk7CisgICAgICB9CisKKyAgICAgIGlmIChyZW1FT0ZOTCkgeworICAg
ICAgICB3aGlsZSAoIXN0cltzdHIubGVuZ3RoLTFdKSB7CisgICAgICAgICAgc3RyLnBvcCgpOwor
ICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKGFkZEVPRk5MKSB7CisgICAgICAgIHN0ci5wdXNo
KCcnKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBzdHIuam9pbignXG4nKTsKKyAgICB9LAorCisg
ICAgY29udmVydENoYW5nZXNUb1hNTDogZnVuY3Rpb24oY2hhbmdlcyl7CisgICAgICB2YXIgcmV0
ID0gW107CisgICAgICBmb3IgKCB2YXIgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7
CisgICAgICAgIHZhciBjaGFuZ2UgPSBjaGFuZ2VzW2ldOworICAgICAgICBpZiAoY2hhbmdlLmFk
ZGVkKSB7CisgICAgICAgICAgcmV0LnB1c2goJzxpbnM+Jyk7CisgICAgICAgIH0gZWxzZSBpZiAo
Y2hhbmdlLnJlbW92ZWQpIHsKKyAgICAgICAgICByZXQucHVzaCgnPGRlbD4nKTsKKyAgICAgICAg
fQorCisgICAgICAgIHJldC5wdXNoKGVzY2FwZUhUTUwoY2hhbmdlLnZhbHVlKSk7CisKKyAgICAg
ICAgaWYgKGNoYW5nZS5hZGRlZCkgeworICAgICAgICAgIHJldC5wdXNoKCc8L2lucz4nKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChjaGFuZ2UucmVtb3ZlZCkgeworICAgICAgICAgIHJldC5wdXNoKCc8
L2RlbD4nKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJuIHJldC5qb2luKCcnKTsK
KyAgICB9LAorCisgICAgLy8gU2VlOiBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLWRp
ZmYtbWF0Y2gtcGF0Y2gvd2lraS9BUEkKKyAgICBjb252ZXJ0Q2hhbmdlc1RvRE1QOiBmdW5jdGlv
bihjaGFuZ2VzKXsKKyAgICAgIHZhciByZXQgPSBbXSwgY2hhbmdlOworICAgICAgZm9yICggdmFy
IGkgPSAwOyBpIDwgY2hhbmdlcy5sZW5ndGg7IGkrKykgeworICAgICAgICBjaGFuZ2UgPSBjaGFu
Z2VzW2ldOworICAgICAgICByZXQucHVzaChbKGNoYW5nZS5hZGRlZCA/IDEgOiBjaGFuZ2UucmVt
b3ZlZCA/IC0xIDogMCksIGNoYW5nZS52YWx1ZV0pOworICAgICAgfQorICAgICAgcmV0dXJuIHJl
dDsKKyAgICB9CisgIH07Cit9KSgpOworCitpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5l
ZCcpIHsKKyAgICBtb2R1bGUuZXhwb3J0cyA9IEpzRGlmZjsKK30KKworfSk7IC8vIG1vZHVsZTog
YnJvd3Nlci9kaWZmLmpzCisKK3JlcXVpcmUucmVnaXN0ZXIoImJyb3dzZXIvZXZlbnRzLmpzIiwg
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCByZXF1aXJlKXsKKworLyoqCisgKiBNb2R1bGUgZXhw
b3J0cy4KKyAqLworCitleHBvcnRzLkV2ZW50RW1pdHRlciA9IEV2ZW50RW1pdHRlcjsKKworLyoq
CisgKiBDaGVjayBpZiBgb2JqYCBpcyBhbiBhcnJheS4KKyAqLworCitmdW5jdGlvbiBpc0FycmF5
KG9iaikgeworICByZXR1cm4gJ1tvYmplY3QgQXJyYXldJyA9PSB7fS50b1N0cmluZy5jYWxsKG9i
aik7Cit9CisKKy8qKgorICogRXZlbnQgZW1pdHRlciBjb25zdHJ1Y3Rvci4KKyAqCisgKiBAYXBp
IHB1YmxpYworICovCisKK2Z1bmN0aW9uIEV2ZW50RW1pdHRlcigpe307CisKKy8qKgorICogQWRk
cyBhIGxpc3RlbmVyLgorICoKKyAqIEBhcGkgcHVibGljCisgKi8KKworRXZlbnRFbWl0dGVyLnBy
b3RvdHlwZS5vbiA9IGZ1bmN0aW9uIChuYW1lLCBmbikgeworICBpZiAoIXRoaXMuJGV2ZW50cykg
eworICAgIHRoaXMuJGV2ZW50cyA9IHt9OworICB9CisKKyAgaWYgKCF0aGlzLiRldmVudHNbbmFt
ZV0pIHsKKyAgICB0aGlzLiRldmVudHNbbmFtZV0gPSBmbjsKKyAgfSBlbHNlIGlmIChpc0FycmF5
KHRoaXMuJGV2ZW50c1tuYW1lXSkpIHsKKyAgICB0aGlzLiRldmVudHNbbmFtZV0ucHVzaChmbik7
CisgIH0gZWxzZSB7CisgICAgdGhpcy4kZXZlbnRzW25hbWVdID0gW3RoaXMuJGV2ZW50c1tuYW1l
XSwgZm5dOworICB9CisKKyAgcmV0dXJuIHRoaXM7Cit9OworCitFdmVudEVtaXR0ZXIucHJvdG90
eXBlLmFkZExpc3RlbmVyID0gRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbjsKKworLyoqCisgKiBB
ZGRzIGEgdm9sYXRpbGUgbGlzdGVuZXIuCisgKgorICogQGFwaSBwdWJsaWMKKyAqLworCitFdmVu
dEVtaXR0ZXIucHJvdG90eXBlLm9uY2UgPSBmdW5jdGlvbiAobmFtZSwgZm4pIHsKKyAgdmFyIHNl
bGYgPSB0aGlzOworCisgIGZ1bmN0aW9uIG9uICgpIHsKKyAgICBzZWxmLnJlbW92ZUxpc3RlbmVy
KG5hbWUsIG9uKTsKKyAgICBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICB9OworCisgIG9u
Lmxpc3RlbmVyID0gZm47CisgIHRoaXMub24obmFtZSwgb24pOworCisgIHJldHVybiB0aGlzOwor
fTsKKworLyoqCisgKiBSZW1vdmVzIGEgbGlzdGVuZXIuCisgKgorICogQGFwaSBwdWJsaWMKKyAq
LworCitFdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyID0gZnVuY3Rpb24gKG5h
bWUsIGZuKSB7CisgIGlmICh0aGlzLiRldmVudHMgJiYgdGhpcy4kZXZlbnRzW25hbWVdKSB7Cisg
ICAgdmFyIGxpc3QgPSB0aGlzLiRldmVudHNbbmFtZV07CisKKyAgICBpZiAoaXNBcnJheShsaXN0
KSkgeworICAgICAgdmFyIHBvcyA9IC0xOworCisgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGxp
c3QubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgICAgIGlmIChsaXN0W2ldID09PSBmbiB8fCAo
bGlzdFtpXS5saXN0ZW5lciAmJiBsaXN0W2ldLmxpc3RlbmVyID09PSBmbikpIHsKKyAgICAgICAg
ICBwb3MgPSBpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisKKyAgICAg
IGlmIChwb3MgPCAwKSB7CisgICAgICAgIHJldHVybiB0aGlzOworICAgICAgfQorCisgICAgICBs
aXN0LnNwbGljZShwb3MsIDEpOworCisgICAgICBpZiAoIWxpc3QubGVuZ3RoKSB7CisgICAgICAg
IGRlbGV0ZSB0aGlzLiRldmVudHNbbmFtZV07CisgICAgICB9CisgICAgfSBlbHNlIGlmIChsaXN0
ID09PSBmbiB8fCAobGlzdC5saXN0ZW5lciAmJiBsaXN0Lmxpc3RlbmVyID09PSBmbikpIHsKKyAg
ICAgIGRlbGV0ZSB0aGlzLiRldmVudHNbbmFtZV07CisgICAgfQorICB9CisKKyAgcmV0dXJuIHRo
aXM7Cit9OworCisvKioKKyAqIFJlbW92ZXMgYWxsIGxpc3RlbmVycyBmb3IgYW4gZXZlbnQuCisg
KgorICogQGFwaSBwdWJsaWMKKyAqLworCitFdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUFs
bExpc3RlbmVycyA9IGZ1bmN0aW9uIChuYW1lKSB7CisgIGlmIChuYW1lID09PSB1bmRlZmluZWQp
IHsKKyAgICB0aGlzLiRldmVudHMgPSB7fTsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorCisgIGlm
ICh0aGlzLiRldmVudHMgJiYgdGhpcy4kZXZlbnRzW25hbWVdKSB7CisgICAgdGhpcy4kZXZlbnRz
W25hbWVdID0gbnVsbDsKKyAgfQorCisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBHZXRz
IGFsbCBsaXN0ZW5lcnMgZm9yIGEgY2VydGFpbiBldmVudC4KKyAqCisgKiBAYXBpIHB1YmxpYwor
ICovCisKK0V2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJzID0gZnVuY3Rpb24gKG5hbWUp
IHsKKyAgaWYgKCF0aGlzLiRldmVudHMpIHsKKyAgICB0aGlzLiRldmVudHMgPSB7fTsKKyAgfQor
CisgIGlmICghdGhpcy4kZXZlbnRzW25hbWVdKSB7CisgICAgdGhpcy4kZXZlbnRzW25hbWVdID0g
W107CisgIH0KKworICBpZiAoIWlzQXJyYXkodGhpcy4kZXZlbnRzW25hbWVdKSkgeworICAgIHRo
aXMuJGV2ZW50c1tuYW1lXSA9IFt0aGlzLiRldmVudHNbbmFtZV1dOworICB9CisKKyAgcmV0dXJu
IHRoaXMuJGV2ZW50c1tuYW1lXTsKK307CisKKy8qKgorICogRW1pdHMgYW4gZXZlbnQuCisgKgor
ICogQGFwaSBwdWJsaWMKKyAqLworCitFdmVudEVtaXR0ZXIucHJvdG90eXBlLmVtaXQgPSBmdW5j
dGlvbiAobmFtZSkgeworICBpZiAoIXRoaXMuJGV2ZW50cykgeworICAgIHJldHVybiBmYWxzZTsK
KyAgfQorCisgIHZhciBoYW5kbGVyID0gdGhpcy4kZXZlbnRzW25hbWVdOworCisgIGlmICghaGFu
ZGxlcikgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHZhciBhcmdzID0gW10uc2xpY2Uu
Y2FsbChhcmd1bWVudHMsIDEpOworCisgIGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiBoYW5kbGVy
KSB7CisgICAgaGFuZGxlci5hcHBseSh0aGlzLCBhcmdzKTsKKyAgfSBlbHNlIGlmIChpc0FycmF5
KGhhbmRsZXIpKSB7CisgICAgdmFyIGxpc3RlbmVycyA9IGhhbmRsZXIuc2xpY2UoKTsKKworICAg
IGZvciAodmFyIGkgPSAwLCBsID0gbGlzdGVuZXJzLmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAg
ICAgbGlzdGVuZXJzW2ldLmFwcGx5KHRoaXMsIGFyZ3MpOworICAgIH0KKyAgfSBlbHNlIHsKKyAg
ICByZXR1cm4gZmFsc2U7CisgIH0KKworICByZXR1cm4gdHJ1ZTsKK307Cit9KTsgLy8gbW9kdWxl
OiBicm93c2VyL2V2ZW50cy5qcworCityZXF1aXJlLnJlZ2lzdGVyKCJicm93c2VyL2ZzLmpzIiwg
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCByZXF1aXJlKXsKKworfSk7IC8vIG1vZHVsZTogYnJv
d3Nlci9mcy5qcworCityZXF1aXJlLnJlZ2lzdGVyKCJicm93c2VyL3BhdGguanMiLCBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUpeworCit9KTsgLy8gbW9kdWxlOiBicm93c2VyL3Bh
dGguanMKKworcmVxdWlyZS5yZWdpc3RlcigiYnJvd3Nlci9wcm9ncmVzcy5qcyIsIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7CisvKioKKyAqIEV4cG9zZSBgUHJvZ3Jlc3NgLgor
ICovCisKK21vZHVsZS5leHBvcnRzID0gUHJvZ3Jlc3M7CisKKy8qKgorICogSW5pdGlhbGl6ZSBh
IG5ldyBgUHJvZ3Jlc3NgIGluZGljYXRvci4KKyAqLworCitmdW5jdGlvbiBQcm9ncmVzcygpIHsK
KyAgdGhpcy5wZXJjZW50ID0gMDsKKyAgdGhpcy5zaXplKDApOworICB0aGlzLmZvbnRTaXplKDEx
KTsKKyAgdGhpcy5mb250KCdoZWx2ZXRpY2EsIGFyaWFsLCBzYW5zLXNlcmlmJyk7Cit9CisKKy8q
KgorICogU2V0IHByb2dyZXNzIHNpemUgdG8gYG5gLgorICoKKyAqIEBwYXJhbSB7TnVtYmVyfSBu
CisgKiBAcmV0dXJuIHtQcm9ncmVzc30gZm9yIGNoYWluaW5nCisgKiBAYXBpIHB1YmxpYworICov
CisKK1Byb2dyZXNzLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24obil7CisgIHRoaXMuX3NpemUg
PSBuOworICByZXR1cm4gdGhpczsKK307CisKKy8qKgorICogU2V0IHRleHQgdG8gYHN0cmAuCisg
KgorICogQHBhcmFtIHtTdHJpbmd9IHN0cgorICogQHJldHVybiB7UHJvZ3Jlc3N9IGZvciBjaGFp
bmluZworICogQGFwaSBwdWJsaWMKKyAqLworCitQcm9ncmVzcy5wcm90b3R5cGUudGV4dCA9IGZ1
bmN0aW9uKHN0cil7CisgIHRoaXMuX3RleHQgPSBzdHI7CisgIHJldHVybiB0aGlzOworfTsKKwor
LyoqCisgKiBTZXQgZm9udCBzaXplIHRvIGBuYC4KKyAqCisgKiBAcGFyYW0ge051bWJlcn0gbgor
ICogQHJldHVybiB7UHJvZ3Jlc3N9IGZvciBjaGFpbmluZworICogQGFwaSBwdWJsaWMKKyAqLwor
CitQcm9ncmVzcy5wcm90b3R5cGUuZm9udFNpemUgPSBmdW5jdGlvbihuKXsKKyAgdGhpcy5fZm9u
dFNpemUgPSBuOworICByZXR1cm4gdGhpczsKK307CisKKy8qKgorICogU2V0IGZvbnQgYGZhbWls
eWAuCisgKgorICogQHBhcmFtIHtTdHJpbmd9IGZhbWlseQorICogQHJldHVybiB7UHJvZ3Jlc3N9
IGZvciBjaGFpbmluZworICovCisKK1Byb2dyZXNzLnByb3RvdHlwZS5mb250ID0gZnVuY3Rpb24o
ZmFtaWx5KXsKKyAgdGhpcy5fZm9udCA9IGZhbWlseTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisv
KioKKyAqIFVwZGF0ZSBwZXJjZW50YWdlIHRvIGBuYC4KKyAqCisgKiBAcGFyYW0ge051bWJlcn0g
bgorICogQHJldHVybiB7UHJvZ3Jlc3N9IGZvciBjaGFpbmluZworICovCisKK1Byb2dyZXNzLnBy
b3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbihuKXsKKyAgdGhpcy5wZXJjZW50ID0gbjsKKyAgcmV0
dXJuIHRoaXM7Cit9OworCisvKioKKyAqIERyYXcgb24gYGN0eGAuCisgKgorICogQHBhcmFtIHtD
YW52YXNSZW5kZXJpbmdDb250ZXh0MmR9IGN0eAorICogQHJldHVybiB7UHJvZ3Jlc3N9IGZvciBj
aGFpbmluZworICovCisKK1Byb2dyZXNzLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24oY3R4KXsK
KyAgdHJ5IHsKKyAgICB2YXIgcGVyY2VudCA9IE1hdGgubWluKHRoaXMucGVyY2VudCwgMTAwKQor
ICAgICAgLCBzaXplID0gdGhpcy5fc2l6ZQorICAgICAgLCBoYWxmID0gc2l6ZSAvIDIKKyAgICAg
ICwgeCA9IGhhbGYKKyAgICAgICwgeSA9IGhhbGYKKyAgICAgICwgcmFkID0gaGFsZiAtIDEKKyAg
ICAgICwgZm9udFNpemUgPSB0aGlzLl9mb250U2l6ZTsKKyAgCisgICAgY3R4LmZvbnQgPSBmb250
U2l6ZSArICdweCAnICsgdGhpcy5fZm9udDsKKyAgCisgICAgdmFyIGFuZ2xlID0gTWF0aC5QSSAq
IDIgKiAocGVyY2VudCAvIDEwMCk7CisgICAgY3R4LmNsZWFyUmVjdCgwLCAwLCBzaXplLCBzaXpl
KTsKKyAgCisgICAgLy8gb3V0ZXIgY2lyY2xlCisgICAgY3R4LnN0cm9rZVN0eWxlID0gJyM5Zjlm
OWYnOworICAgIGN0eC5iZWdpblBhdGgoKTsKKyAgICBjdHguYXJjKHgsIHksIHJhZCwgMCwgYW5n
bGUsIGZhbHNlKTsKKyAgICBjdHguc3Ryb2tlKCk7CisgIAorICAgIC8vIGlubmVyIGNpcmNsZQor
ICAgIGN0eC5zdHJva2VTdHlsZSA9ICcjZWVlJzsKKyAgICBjdHguYmVnaW5QYXRoKCk7CisgICAg
Y3R4LmFyYyh4LCB5LCByYWQgLSAxLCAwLCBhbmdsZSwgdHJ1ZSk7CisgICAgY3R4LnN0cm9rZSgp
OworICAKKyAgICAvLyB0ZXh0CisgICAgdmFyIHRleHQgPSB0aGlzLl90ZXh0IHx8IChwZXJjZW50
IHwgMCkgKyAnJScKKyAgICAgICwgdyA9IGN0eC5tZWFzdXJlVGV4dCh0ZXh0KS53aWR0aDsKKyAg
CisgICAgY3R4LmZpbGxUZXh0KAorICAgICAgICB0ZXh0CisgICAgICAsIHggLSB3IC8gMiArIDEK
KyAgICAgICwgeSArIGZvbnRTaXplIC8gMiAtIDEpOworICB9IGNhdGNoIChleCkge30gLy9kb24n
dCBmYWlsIGlmIHdlIGNhbid0IHJlbmRlciBwcm9ncmVzcworICByZXR1cm4gdGhpczsKK307CisK
K30pOyAvLyBtb2R1bGU6IGJyb3dzZXIvcHJvZ3Jlc3MuanMKKworcmVxdWlyZS5yZWdpc3Rlcigi
YnJvd3Nlci90dHkuanMiLCBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUpeworCitl
eHBvcnRzLmlzYXR0eSA9IGZ1bmN0aW9uKCl7CisgIHJldHVybiB0cnVlOworfTsKKworZXhwb3J0
cy5nZXRXaW5kb3dTaXplID0gZnVuY3Rpb24oKXsKKyAgaWYgKCdpbm5lckhlaWdodCcgaW4gZ2xv
YmFsKSB7CisgICAgcmV0dXJuIFtnbG9iYWwuaW5uZXJIZWlnaHQsIGdsb2JhbC5pbm5lcldpZHRo
XTsKKyAgfSBlbHNlIHsKKyAgICAvLyBJbiBhIFdlYiBXb3JrZXIsIHRoZSBET00gV2luZG93IGlz
IG5vdCBhdmFpbGFibGUuCisgICAgcmV0dXJuIFs2NDAsIDQ4MF07CisgIH0KK307CisKK30pOyAv
LyBtb2R1bGU6IGJyb3dzZXIvdHR5LmpzCisKK3JlcXVpcmUucmVnaXN0ZXIoImNvbnRleHQuanMi
LCBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUpeworCisvKioKKyAqIEV4cG9zZSBg
Q29udGV4dGAuCisgKi8KKworbW9kdWxlLmV4cG9ydHMgPSBDb250ZXh0OworCisvKioKKyAqIElu
aXRpYWxpemUgYSBuZXcgYENvbnRleHRgLgorICoKKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK2Z1
bmN0aW9uIENvbnRleHQoKXt9CisKKy8qKgorICogU2V0IG9yIGdldCB0aGUgY29udGV4dCBgUnVu
bmFibGVgIHRvIGBydW5uYWJsZWAuCisgKgorICogQHBhcmFtIHtSdW5uYWJsZX0gcnVubmFibGUK
KyAqIEByZXR1cm4ge0NvbnRleHR9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitDb250ZXh0LnBy
b3RvdHlwZS5ydW5uYWJsZSA9IGZ1bmN0aW9uKHJ1bm5hYmxlKXsKKyAgaWYgKDAgPT0gYXJndW1l
bnRzLmxlbmd0aCkgcmV0dXJuIHRoaXMuX3J1bm5hYmxlOworICB0aGlzLnRlc3QgPSB0aGlzLl9y
dW5uYWJsZSA9IHJ1bm5hYmxlOworICByZXR1cm4gdGhpczsKK307CisKKy8qKgorICogU2V0IHRl
c3QgdGltZW91dCBgbXNgLgorICoKKyAqIEBwYXJhbSB7TnVtYmVyfSBtcworICogQHJldHVybiB7
Q29udGV4dH0gc2VsZgorICogQGFwaSBwcml2YXRlCisgKi8KKworQ29udGV4dC5wcm90b3R5cGUu
dGltZW91dCA9IGZ1bmN0aW9uKG1zKXsKKyAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHJl
dHVybiB0aGlzLnJ1bm5hYmxlKCkudGltZW91dCgpOworICB0aGlzLnJ1bm5hYmxlKCkudGltZW91
dChtcyk7CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBTZXQgdGVzdCB0aW1lb3V0IGBl
bmFibGVkYC4KKyAqCisgKiBAcGFyYW0ge0Jvb2xlYW59IGVuYWJsZWQKKyAqIEByZXR1cm4ge0Nv
bnRleHR9IHNlbGYKKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK0NvbnRleHQucHJvdG90eXBlLmVu
YWJsZVRpbWVvdXRzID0gZnVuY3Rpb24gKGVuYWJsZWQpIHsKKyAgdGhpcy5ydW5uYWJsZSgpLmVu
YWJsZVRpbWVvdXRzKGVuYWJsZWQpOworICByZXR1cm4gdGhpczsKK307CisKKworLyoqCisgKiBT
ZXQgdGVzdCBzbG93bmVzcyB0aHJlc2hvbGQgYG1zYC4KKyAqCisgKiBAcGFyYW0ge051bWJlcn0g
bXMKKyAqIEByZXR1cm4ge0NvbnRleHR9IHNlbGYKKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK0Nv
bnRleHQucHJvdG90eXBlLnNsb3cgPSBmdW5jdGlvbihtcyl7CisgIHRoaXMucnVubmFibGUoKS5z
bG93KG1zKTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIEluc3BlY3QgdGhlIGNvbnRl
eHQgdm9pZCBvZiBgLl9ydW5uYWJsZWAuCisgKgorICogQHJldHVybiB7U3RyaW5nfQorICogQGFw
aSBwcml2YXRlCisgKi8KKworQ29udGV4dC5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uKCl7
CisgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLCBmdW5jdGlvbihrZXksIHZhbCl7CisgICAg
aWYgKCdfcnVubmFibGUnID09IGtleSkgcmV0dXJuOworICAgIGlmICgndGVzdCcgPT0ga2V5KSBy
ZXR1cm47CisgICAgcmV0dXJuIHZhbDsKKyAgfSwgMik7Cit9OworCit9KTsgLy8gbW9kdWxlOiBj
b250ZXh0LmpzCisKK3JlcXVpcmUucmVnaXN0ZXIoImhvb2suanMiLCBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIHJlcXVpcmUpeworCisvKioKKyAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuCisgKi8K
KwordmFyIFJ1bm5hYmxlID0gcmVxdWlyZSgnLi9ydW5uYWJsZScpOworCisvKioKKyAqIEV4cG9z
ZSBgSG9va2AuCisgKi8KKworbW9kdWxlLmV4cG9ydHMgPSBIb29rOworCisvKioKKyAqIEluaXRp
YWxpemUgYSBuZXcgYEhvb2tgIHdpdGggdGhlIGdpdmVuIGB0aXRsZWAgYW5kIGNhbGxiYWNrIGBm
bmAuCisgKgorICogQHBhcmFtIHtTdHJpbmd9IHRpdGxlCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBm
bgorICogQGFwaSBwcml2YXRlCisgKi8KKworZnVuY3Rpb24gSG9vayh0aXRsZSwgZm4pIHsKKyAg
UnVubmFibGUuY2FsbCh0aGlzLCB0aXRsZSwgZm4pOworICB0aGlzLnR5cGUgPSAnaG9vayc7Cit9
CisKKy8qKgorICogSW5oZXJpdCBmcm9tIGBSdW5uYWJsZS5wcm90b3R5cGVgLgorICovCisKK2Z1
bmN0aW9uIEYoKXt9OworRi5wcm90b3R5cGUgPSBSdW5uYWJsZS5wcm90b3R5cGU7CitIb29rLnBy
b3RvdHlwZSA9IG5ldyBGOworSG9vay5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBIb29rOworCisK
Ky8qKgorICogR2V0IG9yIHNldCB0aGUgdGVzdCBgZXJyYC4KKyAqCisgKiBAcGFyYW0ge0Vycm9y
fSBlcnIKKyAqIEByZXR1cm4ge0Vycm9yfQorICogQGFwaSBwdWJsaWMKKyAqLworCitIb29rLnBy
b3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uKGVycil7CisgIGlmICgwID09IGFyZ3VtZW50cy5sZW5n
dGgpIHsKKyAgICB2YXIgZXJyID0gdGhpcy5fZXJyb3I7CisgICAgdGhpcy5fZXJyb3IgPSBudWxs
OworICAgIHJldHVybiBlcnI7CisgIH0KKworICB0aGlzLl9lcnJvciA9IGVycjsKK307CisKK30p
OyAvLyBtb2R1bGU6IGhvb2suanMKKworcmVxdWlyZS5yZWdpc3RlcigiaW50ZXJmYWNlcy9iZGQu
anMiLCBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUpeworCisvKioKKyAqIE1vZHVs
ZSBkZXBlbmRlbmNpZXMuCisgKi8KKwordmFyIFN1aXRlID0gcmVxdWlyZSgnLi4vc3VpdGUnKQor
ICAsIFRlc3QgPSByZXF1aXJlKCcuLi90ZXN0JykKKyAgLCB1dGlscyA9IHJlcXVpcmUoJy4uL3V0
aWxzJyk7CisKKy8qKgorICogQkRELXN0eWxlIGludGVyZmFjZToKKyAqCisgKiAgICAgIGRlc2Ny
aWJlKCdBcnJheScsIGZ1bmN0aW9uKCl7CisgKiAgICAgICAgZGVzY3JpYmUoJyNpbmRleE9mKCkn
LCBmdW5jdGlvbigpeworICogICAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gLTEgd2hlbiBub3Qg
cHJlc2VudCcsIGZ1bmN0aW9uKCl7CisgKgorICogICAgICAgICAgfSk7CisgKgorICogICAgICAg
ICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIGluZGV4IHdoZW4gcHJlc2VudCcsIGZ1bmN0aW9uKCl7
CisgKgorICogICAgICAgICAgfSk7CisgKiAgICAgICAgfSk7CisgKiAgICAgIH0pOworICoKKyAq
LworCittb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHN1aXRlKXsKKyAgdmFyIHN1aXRlcyA9IFtz
dWl0ZV07CisKKyAgc3VpdGUub24oJ3ByZS1yZXF1aXJlJywgZnVuY3Rpb24oY29udGV4dCwgZmls
ZSwgbW9jaGEpeworCisgICAgLyoqCisgICAgICogRXhlY3V0ZSBiZWZvcmUgcnVubmluZyB0ZXN0
cy4KKyAgICAgKi8KKworICAgIGNvbnRleHQuYmVmb3JlID0gZnVuY3Rpb24obmFtZSwgZm4pewor
ICAgICAgc3VpdGVzWzBdLmJlZm9yZUFsbChuYW1lLCBmbik7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEV4ZWN1dGUgYWZ0ZXIgcnVubmluZyB0ZXN0cy4KKyAgICAgKi8KKworICAgIGNvbnRl
eHQuYWZ0ZXIgPSBmdW5jdGlvbihuYW1lLCBmbil7CisgICAgICBzdWl0ZXNbMF0uYWZ0ZXJBbGwo
bmFtZSwgZm4pOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBFeGVjdXRlIGJlZm9yZSBlYWNo
IHRlc3QgY2FzZS4KKyAgICAgKi8KKworICAgIGNvbnRleHQuYmVmb3JlRWFjaCA9IGZ1bmN0aW9u
KG5hbWUsIGZuKXsKKyAgICAgIHN1aXRlc1swXS5iZWZvcmVFYWNoKG5hbWUsIGZuKTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogRXhlY3V0ZSBhZnRlciBlYWNoIHRlc3QgY2FzZS4KKyAgICAg
Ki8KKworICAgIGNvbnRleHQuYWZ0ZXJFYWNoID0gZnVuY3Rpb24obmFtZSwgZm4peworICAgICAg
c3VpdGVzWzBdLmFmdGVyRWFjaChuYW1lLCBmbik7CisgICAgfTsKKworICAgIC8qKgorICAgICAq
IERlc2NyaWJlIGEgInN1aXRlIiB3aXRoIHRoZSBnaXZlbiBgdGl0bGVgCisgICAgICogYW5kIGNh
bGxiYWNrIGBmbmAgY29udGFpbmluZyBuZXN0ZWQgc3VpdGVzCisgICAgICogYW5kL29yIHRlc3Rz
LgorICAgICAqLworCisgICAgY29udGV4dC5kZXNjcmliZSA9IGNvbnRleHQuY29udGV4dCA9IGZ1
bmN0aW9uKHRpdGxlLCBmbil7CisgICAgICB2YXIgc3VpdGUgPSBTdWl0ZS5jcmVhdGUoc3VpdGVz
WzBdLCB0aXRsZSk7CisgICAgICBzdWl0ZS5maWxlID0gZmlsZTsKKyAgICAgIHN1aXRlcy51bnNo
aWZ0KHN1aXRlKTsKKyAgICAgIGZuLmNhbGwoc3VpdGUpOworICAgICAgc3VpdGVzLnNoaWZ0KCk7
CisgICAgICByZXR1cm4gc3VpdGU7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIFBlbmRpbmcg
ZGVzY3JpYmUuCisgICAgICovCisKKyAgICBjb250ZXh0LnhkZXNjcmliZSA9CisgICAgY29udGV4
dC54Y29udGV4dCA9CisgICAgY29udGV4dC5kZXNjcmliZS5za2lwID0gZnVuY3Rpb24odGl0bGUs
IGZuKXsKKyAgICAgIHZhciBzdWl0ZSA9IFN1aXRlLmNyZWF0ZShzdWl0ZXNbMF0sIHRpdGxlKTsK
KyAgICAgIHN1aXRlLnBlbmRpbmcgPSB0cnVlOworICAgICAgc3VpdGVzLnVuc2hpZnQoc3VpdGUp
OworICAgICAgZm4uY2FsbChzdWl0ZSk7CisgICAgICBzdWl0ZXMuc2hpZnQoKTsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogRXhjbHVzaXZlIHN1aXRlLgorICAgICAqLworCisgICAgY29udGV4
dC5kZXNjcmliZS5vbmx5ID0gZnVuY3Rpb24odGl0bGUsIGZuKXsKKyAgICAgIHZhciBzdWl0ZSA9
IGNvbnRleHQuZGVzY3JpYmUodGl0bGUsIGZuKTsKKyAgICAgIG1vY2hhLmdyZXAoc3VpdGUuZnVs
bFRpdGxlKCkpOworICAgICAgcmV0dXJuIHN1aXRlOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBEZXNjcmliZSBhIHNwZWNpZmljYXRpb24gb3IgdGVzdC1jYXNlCisgICAgICogd2l0aCB0aGUg
Z2l2ZW4gYHRpdGxlYCBhbmQgY2FsbGJhY2sgYGZuYAorICAgICAqIGFjdGluZyBhcyBhIHRodW5r
LgorICAgICAqLworCisgICAgY29udGV4dC5pdCA9IGNvbnRleHQuc3BlY2lmeSA9IGZ1bmN0aW9u
KHRpdGxlLCBmbil7CisgICAgICB2YXIgc3VpdGUgPSBzdWl0ZXNbMF07CisgICAgICBpZiAoc3Vp
dGUucGVuZGluZykgdmFyIGZuID0gbnVsbDsKKyAgICAgIHZhciB0ZXN0ID0gbmV3IFRlc3QodGl0
bGUsIGZuKTsKKyAgICAgIHRlc3QuZmlsZSA9IGZpbGU7CisgICAgICBzdWl0ZS5hZGRUZXN0KHRl
c3QpOworICAgICAgcmV0dXJuIHRlc3Q7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEV4Y2x1
c2l2ZSB0ZXN0LWNhc2UuCisgICAgICovCisKKyAgICBjb250ZXh0Lml0Lm9ubHkgPSBmdW5jdGlv
bih0aXRsZSwgZm4peworICAgICAgdmFyIHRlc3QgPSBjb250ZXh0Lml0KHRpdGxlLCBmbik7Cisg
ICAgICB2YXIgcmVTdHJpbmcgPSAnXicgKyB1dGlscy5lc2NhcGVSZWdleHAodGVzdC5mdWxsVGl0
bGUoKSkgKyAnJCc7CisgICAgICBtb2NoYS5ncmVwKG5ldyBSZWdFeHAocmVTdHJpbmcpKTsKKyAg
ICAgIHJldHVybiB0ZXN0OworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBQZW5kaW5nIHRlc3Qg
Y2FzZS4KKyAgICAgKi8KKworICAgIGNvbnRleHQueGl0ID0KKyAgICBjb250ZXh0LnhzcGVjaWZ5
ID0KKyAgICBjb250ZXh0Lml0LnNraXAgPSBmdW5jdGlvbih0aXRsZSl7CisgICAgICBjb250ZXh0
Lml0KHRpdGxlKTsKKyAgICB9OworICB9KTsKK307CisKK30pOyAvLyBtb2R1bGU6IGludGVyZmFj
ZXMvYmRkLmpzCisKK3JlcXVpcmUucmVnaXN0ZXIoImludGVyZmFjZXMvZXhwb3J0cy5qcyIsIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7CisKKy8qKgorICogTW9kdWxlIGRlcGVu
ZGVuY2llcy4KKyAqLworCit2YXIgU3VpdGUgPSByZXF1aXJlKCcuLi9zdWl0ZScpCisgICwgVGVz
dCA9IHJlcXVpcmUoJy4uL3Rlc3QnKTsKKworLyoqCisgKiBUREQtc3R5bGUgaW50ZXJmYWNlOgor
ICoKKyAqICAgICBleHBvcnRzLkFycmF5ID0geworICogICAgICAgJyNpbmRleE9mKCknOiB7Cisg
KiAgICAgICAgICdzaG91bGQgcmV0dXJuIC0xIHdoZW4gdGhlIHZhbHVlIGlzIG5vdCBwcmVzZW50
JzogZnVuY3Rpb24oKXsKKyAqCisgKiAgICAgICAgIH0sCisgKgorICogICAgICAgICAnc2hvdWxk
IHJldHVybiB0aGUgY29ycmVjdCBpbmRleCB3aGVuIHRoZSB2YWx1ZSBpcyBwcmVzZW50JzogZnVu
Y3Rpb24oKXsKKyAqCisgKiAgICAgICAgIH0KKyAqICAgICAgIH0KKyAqICAgICB9OworICoKKyAq
LworCittb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHN1aXRlKXsKKyAgdmFyIHN1aXRlcyA9IFtz
dWl0ZV07CisKKyAgc3VpdGUub24oJ3JlcXVpcmUnLCB2aXNpdCk7CisKKyAgZnVuY3Rpb24gdmlz
aXQob2JqLCBmaWxlKSB7CisgICAgdmFyIHN1aXRlOworICAgIGZvciAodmFyIGtleSBpbiBvYmop
IHsKKyAgICAgIGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiBvYmpba2V5XSkgeworICAgICAgICB2
YXIgZm4gPSBvYmpba2V5XTsKKyAgICAgICAgc3dpdGNoIChrZXkpIHsKKyAgICAgICAgICBjYXNl
ICdiZWZvcmUnOgorICAgICAgICAgICAgc3VpdGVzWzBdLmJlZm9yZUFsbChmbik7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICBjYXNlICdhZnRlcic6CisgICAgICAgICAgICBzdWl0ZXNb
MF0uYWZ0ZXJBbGwoZm4pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSAnYmVm
b3JlRWFjaCc6CisgICAgICAgICAgICBzdWl0ZXNbMF0uYmVmb3JlRWFjaChmbik7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICBjYXNlICdhZnRlckVhY2gnOgorICAgICAgICAgICAgc3Vp
dGVzWzBdLmFmdGVyRWFjaChmbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgdmFyIHRlc3QgPSBuZXcgVGVzdChrZXksIGZuKTsKKyAgICAgICAg
ICAgIHRlc3QuZmlsZSA9IGZpbGU7CisgICAgICAgICAgICBzdWl0ZXNbMF0uYWRkVGVzdCh0ZXN0
KTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIHN1aXRlID0gU3VpdGUu
Y3JlYXRlKHN1aXRlc1swXSwga2V5KTsKKyAgICAgICAgc3VpdGVzLnVuc2hpZnQoc3VpdGUpOwor
ICAgICAgICB2aXNpdChvYmpba2V5XSk7CisgICAgICAgIHN1aXRlcy5zaGlmdCgpOworICAgICAg
fQorICAgIH0KKyAgfQorfTsKKworfSk7IC8vIG1vZHVsZTogaW50ZXJmYWNlcy9leHBvcnRzLmpz
CisKK3JlcXVpcmUucmVnaXN0ZXIoImludGVyZmFjZXMvaW5kZXguanMiLCBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIHJlcXVpcmUpeworCitleHBvcnRzLmJkZCA9IHJlcXVpcmUoJy4vYmRkJyk7
CitleHBvcnRzLnRkZCA9IHJlcXVpcmUoJy4vdGRkJyk7CitleHBvcnRzLnF1bml0ID0gcmVxdWly
ZSgnLi9xdW5pdCcpOworZXhwb3J0cy5leHBvcnRzID0gcmVxdWlyZSgnLi9leHBvcnRzJyk7CisK
K30pOyAvLyBtb2R1bGU6IGludGVyZmFjZXMvaW5kZXguanMKKworcmVxdWlyZS5yZWdpc3Rlcigi
aW50ZXJmYWNlcy9xdW5pdC5qcyIsIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7
CisKKy8qKgorICogTW9kdWxlIGRlcGVuZGVuY2llcy4KKyAqLworCit2YXIgU3VpdGUgPSByZXF1
aXJlKCcuLi9zdWl0ZScpCisgICwgVGVzdCA9IHJlcXVpcmUoJy4uL3Rlc3QnKQorICAsIHV0aWxz
ID0gcmVxdWlyZSgnLi4vdXRpbHMnKTsKKworLyoqCisgKiBRVW5pdC1zdHlsZSBpbnRlcmZhY2U6
CisgKgorICogICAgIHN1aXRlKCdBcnJheScpOworICoKKyAqICAgICB0ZXN0KCcjbGVuZ3RoJywg
ZnVuY3Rpb24oKXsKKyAqICAgICAgIHZhciBhcnIgPSBbMSwyLDNdOworICogICAgICAgb2soYXJy
Lmxlbmd0aCA9PSAzKTsKKyAqICAgICB9KTsKKyAqCisgKiAgICAgdGVzdCgnI2luZGV4T2YoKScs
IGZ1bmN0aW9uKCl7CisgKiAgICAgICB2YXIgYXJyID0gWzEsMiwzXTsKKyAqICAgICAgIG9rKGFy
ci5pbmRleE9mKDEpID09IDApOworICogICAgICAgb2soYXJyLmluZGV4T2YoMikgPT0gMSk7Cisg
KiAgICAgICBvayhhcnIuaW5kZXhPZigzKSA9PSAyKTsKKyAqICAgICB9KTsKKyAqCisgKiAgICAg
c3VpdGUoJ1N0cmluZycpOworICoKKyAqICAgICB0ZXN0KCcjbGVuZ3RoJywgZnVuY3Rpb24oKXsK
KyAqICAgICAgIG9rKCdmb28nLmxlbmd0aCA9PSAzKTsKKyAqICAgICB9KTsKKyAqCisgKi8KKwor
bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihzdWl0ZSl7CisgIHZhciBzdWl0ZXMgPSBbc3VpdGVd
OworCisgIHN1aXRlLm9uKCdwcmUtcmVxdWlyZScsIGZ1bmN0aW9uKGNvbnRleHQsIGZpbGUsIG1v
Y2hhKXsKKworICAgIC8qKgorICAgICAqIEV4ZWN1dGUgYmVmb3JlIHJ1bm5pbmcgdGVzdHMuCisg
ICAgICovCisKKyAgICBjb250ZXh0LmJlZm9yZSA9IGZ1bmN0aW9uKG5hbWUsIGZuKXsKKyAgICAg
IHN1aXRlc1swXS5iZWZvcmVBbGwobmFtZSwgZm4pOworICAgIH07CisKKyAgICAvKioKKyAgICAg
KiBFeGVjdXRlIGFmdGVyIHJ1bm5pbmcgdGVzdHMuCisgICAgICovCisKKyAgICBjb250ZXh0LmFm
dGVyID0gZnVuY3Rpb24obmFtZSwgZm4peworICAgICAgc3VpdGVzWzBdLmFmdGVyQWxsKG5hbWUs
IGZuKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogRXhlY3V0ZSBiZWZvcmUgZWFjaCB0ZXN0
IGNhc2UuCisgICAgICovCisKKyAgICBjb250ZXh0LmJlZm9yZUVhY2ggPSBmdW5jdGlvbihuYW1l
LCBmbil7CisgICAgICBzdWl0ZXNbMF0uYmVmb3JlRWFjaChuYW1lLCBmbik7CisgICAgfTsKKwor
ICAgIC8qKgorICAgICAqIEV4ZWN1dGUgYWZ0ZXIgZWFjaCB0ZXN0IGNhc2UuCisgICAgICovCisK
KyAgICBjb250ZXh0LmFmdGVyRWFjaCA9IGZ1bmN0aW9uKG5hbWUsIGZuKXsKKyAgICAgIHN1aXRl
c1swXS5hZnRlckVhY2gobmFtZSwgZm4pOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBEZXNj
cmliZSBhICJzdWl0ZSIgd2l0aCB0aGUgZ2l2ZW4gYHRpdGxlYC4KKyAgICAgKi8KKworICAgIGNv
bnRleHQuc3VpdGUgPSBmdW5jdGlvbih0aXRsZSl7CisgICAgICBpZiAoc3VpdGVzLmxlbmd0aCA+
IDEpIHN1aXRlcy5zaGlmdCgpOworICAgICAgdmFyIHN1aXRlID0gU3VpdGUuY3JlYXRlKHN1aXRl
c1swXSwgdGl0bGUpOworICAgICAgc3VpdGUuZmlsZSA9IGZpbGU7CisgICAgICBzdWl0ZXMudW5z
aGlmdChzdWl0ZSk7CisgICAgICByZXR1cm4gc3VpdGU7CisgICAgfTsKKworICAgIC8qKgorICAg
ICAqIEV4Y2x1c2l2ZSB0ZXN0LWNhc2UuCisgICAgICovCisKKyAgICBjb250ZXh0LnN1aXRlLm9u
bHkgPSBmdW5jdGlvbih0aXRsZSwgZm4peworICAgICAgdmFyIHN1aXRlID0gY29udGV4dC5zdWl0
ZSh0aXRsZSwgZm4pOworICAgICAgbW9jaGEuZ3JlcChzdWl0ZS5mdWxsVGl0bGUoKSk7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIERlc2NyaWJlIGEgc3BlY2lmaWNhdGlvbiBvciB0ZXN0LWNh
c2UKKyAgICAgKiB3aXRoIHRoZSBnaXZlbiBgdGl0bGVgIGFuZCBjYWxsYmFjayBgZm5gCisgICAg
ICogYWN0aW5nIGFzIGEgdGh1bmsuCisgICAgICovCisKKyAgICBjb250ZXh0LnRlc3QgPSBmdW5j
dGlvbih0aXRsZSwgZm4peworICAgICAgdmFyIHRlc3QgPSBuZXcgVGVzdCh0aXRsZSwgZm4pOwor
ICAgICAgdGVzdC5maWxlID0gZmlsZTsKKyAgICAgIHN1aXRlc1swXS5hZGRUZXN0KHRlc3QpOwor
ICAgICAgcmV0dXJuIHRlc3Q7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEV4Y2x1c2l2ZSB0
ZXN0LWNhc2UuCisgICAgICovCisKKyAgICBjb250ZXh0LnRlc3Qub25seSA9IGZ1bmN0aW9uKHRp
dGxlLCBmbil7CisgICAgICB2YXIgdGVzdCA9IGNvbnRleHQudGVzdCh0aXRsZSwgZm4pOworICAg
ICAgdmFyIHJlU3RyaW5nID0gJ14nICsgdXRpbHMuZXNjYXBlUmVnZXhwKHRlc3QuZnVsbFRpdGxl
KCkpICsgJyQnOworICAgICAgbW9jaGEuZ3JlcChuZXcgUmVnRXhwKHJlU3RyaW5nKSk7CisgICAg
fTsKKworICAgIC8qKgorICAgICAqIFBlbmRpbmcgdGVzdCBjYXNlLgorICAgICAqLworCisgICAg
Y29udGV4dC50ZXN0LnNraXAgPSBmdW5jdGlvbih0aXRsZSl7CisgICAgICBjb250ZXh0LnRlc3Qo
dGl0bGUpOworICAgIH07CisgIH0pOworfTsKKworfSk7IC8vIG1vZHVsZTogaW50ZXJmYWNlcy9x
dW5pdC5qcworCityZXF1aXJlLnJlZ2lzdGVyKCJpbnRlcmZhY2VzL3RkZC5qcyIsIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7CisKKy8qKgorICogTW9kdWxlIGRlcGVuZGVuY2ll
cy4KKyAqLworCit2YXIgU3VpdGUgPSByZXF1aXJlKCcuLi9zdWl0ZScpCisgICwgVGVzdCA9IHJl
cXVpcmUoJy4uL3Rlc3QnKQorICAsIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTs7CisKKy8q
KgorICogVERELXN0eWxlIGludGVyZmFjZToKKyAqCisgKiAgICAgIHN1aXRlKCdBcnJheScsIGZ1
bmN0aW9uKCl7CisgKiAgICAgICAgc3VpdGUoJyNpbmRleE9mKCknLCBmdW5jdGlvbigpeworICog
ICAgICAgICAgc3VpdGVTZXR1cChmdW5jdGlvbigpeworICoKKyAqICAgICAgICAgIH0pOworICoK
KyAqICAgICAgICAgIHRlc3QoJ3Nob3VsZCByZXR1cm4gLTEgd2hlbiBub3QgcHJlc2VudCcsIGZ1
bmN0aW9uKCl7CisgKgorICogICAgICAgICAgfSk7CisgKgorICogICAgICAgICAgdGVzdCgnc2hv
dWxkIHJldHVybiB0aGUgaW5kZXggd2hlbiBwcmVzZW50JywgZnVuY3Rpb24oKXsKKyAqCisgKiAg
ICAgICAgICB9KTsKKyAqCisgKiAgICAgICAgICBzdWl0ZVRlYXJkb3duKGZ1bmN0aW9uKCl7Cisg
KgorICogICAgICAgICAgfSk7CisgKiAgICAgICAgfSk7CisgKiAgICAgIH0pOworICoKKyAqLwor
Cittb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHN1aXRlKXsKKyAgdmFyIHN1aXRlcyA9IFtzdWl0
ZV07CisKKyAgc3VpdGUub24oJ3ByZS1yZXF1aXJlJywgZnVuY3Rpb24oY29udGV4dCwgZmlsZSwg
bW9jaGEpeworCisgICAgLyoqCisgICAgICogRXhlY3V0ZSBiZWZvcmUgZWFjaCB0ZXN0IGNhc2Uu
CisgICAgICovCisKKyAgICBjb250ZXh0LnNldHVwID0gZnVuY3Rpb24obmFtZSwgZm4peworICAg
ICAgc3VpdGVzWzBdLmJlZm9yZUVhY2gobmFtZSwgZm4pOworICAgIH07CisKKyAgICAvKioKKyAg
ICAgKiBFeGVjdXRlIGFmdGVyIGVhY2ggdGVzdCBjYXNlLgorICAgICAqLworCisgICAgY29udGV4
dC50ZWFyZG93biA9IGZ1bmN0aW9uKG5hbWUsIGZuKXsKKyAgICAgIHN1aXRlc1swXS5hZnRlckVh
Y2gobmFtZSwgZm4pOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBFeGVjdXRlIGJlZm9yZSB0
aGUgc3VpdGUuCisgICAgICovCisKKyAgICBjb250ZXh0LnN1aXRlU2V0dXAgPSBmdW5jdGlvbihu
YW1lLCBmbil7CisgICAgICBzdWl0ZXNbMF0uYmVmb3JlQWxsKG5hbWUsIGZuKTsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogRXhlY3V0ZSBhZnRlciB0aGUgc3VpdGUuCisgICAgICovCisKKyAg
ICBjb250ZXh0LnN1aXRlVGVhcmRvd24gPSBmdW5jdGlvbihuYW1lLCBmbil7CisgICAgICBzdWl0
ZXNbMF0uYWZ0ZXJBbGwobmFtZSwgZm4pOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBEZXNj
cmliZSBhICJzdWl0ZSIgd2l0aCB0aGUgZ2l2ZW4gYHRpdGxlYAorICAgICAqIGFuZCBjYWxsYmFj
ayBgZm5gIGNvbnRhaW5pbmcgbmVzdGVkIHN1aXRlcworICAgICAqIGFuZC9vciB0ZXN0cy4KKyAg
ICAgKi8KKworICAgIGNvbnRleHQuc3VpdGUgPSBmdW5jdGlvbih0aXRsZSwgZm4peworICAgICAg
dmFyIHN1aXRlID0gU3VpdGUuY3JlYXRlKHN1aXRlc1swXSwgdGl0bGUpOworICAgICAgc3VpdGUu
ZmlsZSA9IGZpbGU7CisgICAgICBzdWl0ZXMudW5zaGlmdChzdWl0ZSk7CisgICAgICBmbi5jYWxs
KHN1aXRlKTsKKyAgICAgIHN1aXRlcy5zaGlmdCgpOworICAgICAgcmV0dXJuIHN1aXRlOworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBQZW5kaW5nIHN1aXRlLgorICAgICAqLworICAgIGNvbnRl
eHQuc3VpdGUuc2tpcCA9IGZ1bmN0aW9uKHRpdGxlLCBmbikgeworICAgICAgdmFyIHN1aXRlID0g
U3VpdGUuY3JlYXRlKHN1aXRlc1swXSwgdGl0bGUpOworICAgICAgc3VpdGUucGVuZGluZyA9IHRy
dWU7CisgICAgICBzdWl0ZXMudW5zaGlmdChzdWl0ZSk7CisgICAgICBmbi5jYWxsKHN1aXRlKTsK
KyAgICAgIHN1aXRlcy5zaGlmdCgpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBFeGNsdXNp
dmUgdGVzdC1jYXNlLgorICAgICAqLworCisgICAgY29udGV4dC5zdWl0ZS5vbmx5ID0gZnVuY3Rp
b24odGl0bGUsIGZuKXsKKyAgICAgIHZhciBzdWl0ZSA9IGNvbnRleHQuc3VpdGUodGl0bGUsIGZu
KTsKKyAgICAgIG1vY2hhLmdyZXAoc3VpdGUuZnVsbFRpdGxlKCkpOworICAgIH07CisKKyAgICAv
KioKKyAgICAgKiBEZXNjcmliZSBhIHNwZWNpZmljYXRpb24gb3IgdGVzdC1jYXNlCisgICAgICog
d2l0aCB0aGUgZ2l2ZW4gYHRpdGxlYCBhbmQgY2FsbGJhY2sgYGZuYAorICAgICAqIGFjdGluZyBh
cyBhIHRodW5rLgorICAgICAqLworCisgICAgY29udGV4dC50ZXN0ID0gZnVuY3Rpb24odGl0bGUs
IGZuKXsKKyAgICAgIHZhciBzdWl0ZSA9IHN1aXRlc1swXTsKKyAgICAgIGlmIChzdWl0ZS5wZW5k
aW5nKSB2YXIgZm4gPSBudWxsOworICAgICAgdmFyIHRlc3QgPSBuZXcgVGVzdCh0aXRsZSwgZm4p
OworICAgICAgdGVzdC5maWxlID0gZmlsZTsKKyAgICAgIHN1aXRlLmFkZFRlc3QodGVzdCk7Cisg
ICAgICByZXR1cm4gdGVzdDsKKyAgICB9OworCisgICAgLyoqCisgICAgICogRXhjbHVzaXZlIHRl
c3QtY2FzZS4KKyAgICAgKi8KKworICAgIGNvbnRleHQudGVzdC5vbmx5ID0gZnVuY3Rpb24odGl0
bGUsIGZuKXsKKyAgICAgIHZhciB0ZXN0ID0gY29udGV4dC50ZXN0KHRpdGxlLCBmbik7CisgICAg
ICB2YXIgcmVTdHJpbmcgPSAnXicgKyB1dGlscy5lc2NhcGVSZWdleHAodGVzdC5mdWxsVGl0bGUo
KSkgKyAnJCc7CisgICAgICBtb2NoYS5ncmVwKG5ldyBSZWdFeHAocmVTdHJpbmcpKTsKKyAgICB9
OworCisgICAgLyoqCisgICAgICogUGVuZGluZyB0ZXN0IGNhc2UuCisgICAgICovCisKKyAgICBj
b250ZXh0LnRlc3Quc2tpcCA9IGZ1bmN0aW9uKHRpdGxlKXsKKyAgICAgIGNvbnRleHQudGVzdCh0
aXRsZSk7CisgICAgfTsKKyAgfSk7Cit9OworCit9KTsgLy8gbW9kdWxlOiBpbnRlcmZhY2VzL3Rk
ZC5qcworCityZXF1aXJlLnJlZ2lzdGVyKCJtb2NoYS5qcyIsIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgcmVxdWlyZSl7CisvKiEKKyAqIG1vY2hhCisgKiBDb3B5cmlnaHQoYykgMjAxMSBUSiBI
b2xvd2F5Y2h1ayA8dGpAdmlzaW9uLW1lZGlhLmNhPgorICogTUlUIExpY2Vuc2VkCisgKi8KKwor
LyoqCisgKiBNb2R1bGUgZGVwZW5kZW5jaWVzLgorICovCisKK3ZhciBwYXRoID0gcmVxdWlyZSgn
YnJvd3Nlci9wYXRoJykKKyAgLCB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTsKKworLyoqCisg
KiBFeHBvc2UgYE1vY2hhYC4KKyAqLworCitleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBNb2No
YTsKKworLyoqCisgKiBUbyByZXF1aXJlIGxvY2FsIFVJcyBhbmQgcmVwb3J0ZXJzIHdoZW4gcnVu
bmluZyBpbiBub2RlLgorICovCisKK2lmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcg
JiYgdHlwZW9mIHByb2Nlc3MuY3dkID09PSAnZnVuY3Rpb24nKSB7CisgIHZhciBqb2luID0gcGF0
aC5qb2luCisgICAgLCBjd2QgPSBwcm9jZXNzLmN3ZCgpOworICBtb2R1bGUucGF0aHMucHVzaChj
d2QsIGpvaW4oY3dkLCAnbm9kZV9tb2R1bGVzJykpOworfQorCisvKioKKyAqIEV4cG9zZSBpbnRl
cm5hbHMuCisgKi8KKworZXhwb3J0cy51dGlscyA9IHV0aWxzOworZXhwb3J0cy5pbnRlcmZhY2Vz
ID0gcmVxdWlyZSgnLi9pbnRlcmZhY2VzJyk7CitleHBvcnRzLnJlcG9ydGVycyA9IHJlcXVpcmUo
Jy4vcmVwb3J0ZXJzJyk7CitleHBvcnRzLlJ1bm5hYmxlID0gcmVxdWlyZSgnLi9ydW5uYWJsZScp
OworZXhwb3J0cy5Db250ZXh0ID0gcmVxdWlyZSgnLi9jb250ZXh0Jyk7CitleHBvcnRzLlJ1bm5l
ciA9IHJlcXVpcmUoJy4vcnVubmVyJyk7CitleHBvcnRzLlN1aXRlID0gcmVxdWlyZSgnLi9zdWl0
ZScpOworZXhwb3J0cy5Ib29rID0gcmVxdWlyZSgnLi9ob29rJyk7CitleHBvcnRzLlRlc3QgPSBy
ZXF1aXJlKCcuL3Rlc3QnKTsKKworLyoqCisgKiBSZXR1cm4gaW1hZ2UgYG5hbWVgIHBhdGguCisg
KgorICogQHBhcmFtIHtTdHJpbmd9IG5hbWUKKyAqIEByZXR1cm4ge1N0cmluZ30KKyAqIEBhcGkg
cHJpdmF0ZQorICovCisKK2Z1bmN0aW9uIGltYWdlKG5hbWUpIHsKKyAgcmV0dXJuIF9fZGlybmFt
ZSArICcvLi4vaW1hZ2VzLycgKyBuYW1lICsgJy5wbmcnOworfQorCisvKioKKyAqIFNldHVwIG1v
Y2hhIHdpdGggYG9wdGlvbnNgLgorICoKKyAqIE9wdGlvbnM6CisgKgorICogICAtIGB1aWAgbmFt
ZSAiYmRkIiwgInRkZCIsICJleHBvcnRzIiBldGMKKyAqICAgLSBgcmVwb3J0ZXJgIHJlcG9ydGVy
IGluc3RhbmNlLCBkZWZhdWx0cyB0byBgbW9jaGEucmVwb3J0ZXJzLnNwZWNgCisgKiAgIC0gYGds
b2JhbHNgIGFycmF5IG9mIGFjY2VwdGVkIGdsb2JhbHMKKyAqICAgLSBgdGltZW91dGAgdGltZW91
dCBpbiBtaWxsaXNlY29uZHMKKyAqICAgLSBgYmFpbGAgYmFpbCBvbiB0aGUgZmlyc3QgdGVzdCBm
YWlsdXJlCisgKiAgIC0gYHNsb3dgIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJlZm9yZSBjb25zaWRl
cmluZyBhIHRlc3Qgc2xvdworICogICAtIGBpZ25vcmVMZWFrc2AgaWdub3JlIGdsb2JhbCBsZWFr
cworICogICAtIGBncmVwYCBzdHJpbmcgb3IgcmVnZXhwIHRvIGZpbHRlciB0ZXN0cyB3aXRoCisg
KgorICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMKKyAqIEBhcGkgcHVibGljCisgKi8KKworZnVu
Y3Rpb24gTW9jaGEob3B0aW9ucykgeworICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKKyAgdGhp
cy5maWxlcyA9IFtdOworICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOworICB0aGlzLmdyZXAob3B0
aW9ucy5ncmVwKTsKKyAgdGhpcy5zdWl0ZSA9IG5ldyBleHBvcnRzLlN1aXRlKCcnLCBuZXcgZXhw
b3J0cy5Db250ZXh0KTsKKyAgdGhpcy51aShvcHRpb25zLnVpKTsKKyAgdGhpcy5iYWlsKG9wdGlv
bnMuYmFpbCk7CisgIHRoaXMucmVwb3J0ZXIob3B0aW9ucy5yZXBvcnRlcik7CisgIGlmIChudWxs
ICE9IG9wdGlvbnMudGltZW91dCkgdGhpcy50aW1lb3V0KG9wdGlvbnMudGltZW91dCk7CisgIHRo
aXMudXNlQ29sb3JzKG9wdGlvbnMudXNlQ29sb3JzKQorICBpZiAob3B0aW9ucy5lbmFibGVUaW1l
b3V0cyAhPT0gbnVsbCkgdGhpcy5lbmFibGVUaW1lb3V0cyhvcHRpb25zLmVuYWJsZVRpbWVvdXRz
KTsKKyAgaWYgKG9wdGlvbnMuc2xvdykgdGhpcy5zbG93KG9wdGlvbnMuc2xvdyk7CisKKyAgdGhp
cy5zdWl0ZS5vbigncHJlLXJlcXVpcmUnLCBmdW5jdGlvbiAoY29udGV4dCkgeworICAgIGV4cG9y
dHMuYWZ0ZXJFYWNoID0gY29udGV4dC5hZnRlckVhY2ggfHwgY29udGV4dC50ZWFyZG93bjsKKyAg
ICBleHBvcnRzLmFmdGVyID0gY29udGV4dC5hZnRlciB8fCBjb250ZXh0LnN1aXRlVGVhcmRvd247
CisgICAgZXhwb3J0cy5iZWZvcmVFYWNoID0gY29udGV4dC5iZWZvcmVFYWNoIHx8IGNvbnRleHQu
c2V0dXA7CisgICAgZXhwb3J0cy5iZWZvcmUgPSBjb250ZXh0LmJlZm9yZSB8fCBjb250ZXh0LnN1
aXRlU2V0dXA7CisgICAgZXhwb3J0cy5kZXNjcmliZSA9IGNvbnRleHQuZGVzY3JpYmUgfHwgY29u
dGV4dC5zdWl0ZTsKKyAgICBleHBvcnRzLml0ID0gY29udGV4dC5pdCB8fCBjb250ZXh0LnRlc3Q7
CisgICAgZXhwb3J0cy5zZXR1cCA9IGNvbnRleHQuc2V0dXAgfHwgY29udGV4dC5iZWZvcmVFYWNo
OworICAgIGV4cG9ydHMuc3VpdGVTZXR1cCA9IGNvbnRleHQuc3VpdGVTZXR1cCB8fCBjb250ZXh0
LmJlZm9yZTsKKyAgICBleHBvcnRzLnN1aXRlVGVhcmRvd24gPSBjb250ZXh0LnN1aXRlVGVhcmRv
d24gfHwgY29udGV4dC5hZnRlcjsKKyAgICBleHBvcnRzLnN1aXRlID0gY29udGV4dC5zdWl0ZSB8
fCBjb250ZXh0LmRlc2NyaWJlOworICAgIGV4cG9ydHMudGVhcmRvd24gPSBjb250ZXh0LnRlYXJk
b3duIHx8IGNvbnRleHQuYWZ0ZXJFYWNoOworICAgIGV4cG9ydHMudGVzdCA9IGNvbnRleHQudGVz
dCB8fCBjb250ZXh0Lml0OworICB9KTsKK30KKworLyoqCisgKiBFbmFibGUgb3IgZGlzYWJsZSBi
YWlsaW5nIG9uIHRoZSBmaXJzdCBmYWlsdXJlLgorICoKKyAqIEBwYXJhbSB7Qm9vbGVhbn0gW2Jh
aWxdCisgKiBAYXBpIHB1YmxpYworICovCisKK01vY2hhLnByb3RvdHlwZS5iYWlsID0gZnVuY3Rp
b24oYmFpbCl7CisgIGlmICgwID09IGFyZ3VtZW50cy5sZW5ndGgpIGJhaWwgPSB0cnVlOworICB0
aGlzLnN1aXRlLmJhaWwoYmFpbCk7CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBBZGQg
dGVzdCBgZmlsZWAuCisgKgorICogQHBhcmFtIHtTdHJpbmd9IGZpbGUKKyAqIEBhcGkgcHVibGlj
CisgKi8KKworTW9jaGEucHJvdG90eXBlLmFkZEZpbGUgPSBmdW5jdGlvbihmaWxlKXsKKyAgdGhp
cy5maWxlcy5wdXNoKGZpbGUpOworICByZXR1cm4gdGhpczsKK307CisKKy8qKgorICogU2V0IHJl
cG9ydGVyIHRvIGByZXBvcnRlcmAsIGRlZmF1bHRzIHRvICJzcGVjIi4KKyAqCisgKiBAcGFyYW0g
e1N0cmluZ3xGdW5jdGlvbn0gcmVwb3J0ZXIgbmFtZSBvciBjb25zdHJ1Y3RvcgorICogQGFwaSBw
dWJsaWMKKyAqLworCitNb2NoYS5wcm90b3R5cGUucmVwb3J0ZXIgPSBmdW5jdGlvbihyZXBvcnRl
cil7CisgIGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiByZXBvcnRlcikgeworICAgIHRoaXMuX3Jl
cG9ydGVyID0gcmVwb3J0ZXI7CisgIH0gZWxzZSB7CisgICAgcmVwb3J0ZXIgPSByZXBvcnRlciB8
fCAnc3BlYyc7CisgICAgdmFyIF9yZXBvcnRlcjsKKyAgICB0cnkgeyBfcmVwb3J0ZXIgPSByZXF1
aXJlKCcuL3JlcG9ydGVycy8nICsgcmVwb3J0ZXIpOyB9IGNhdGNoIChlcnIpIHt9OworICAgIGlm
ICghX3JlcG9ydGVyKSB0cnkgeyBfcmVwb3J0ZXIgPSByZXF1aXJlKHJlcG9ydGVyKTsgfSBjYXRj
aCAoZXJyKSB7fTsKKyAgICBpZiAoIV9yZXBvcnRlciAmJiByZXBvcnRlciA9PT0gJ3RlYW1jaXR5
JykKKyAgICAgIGNvbnNvbGUud2FybignVGhlIFRlYW1jaXR5IHJlcG9ydGVyIHdhcyBtb3ZlZCB0
byBhIHBhY2thZ2UgbmFtZWQgJyArCisgICAgICAgICdtb2NoYS10ZWFtY2l0eS1yZXBvcnRlciAn
ICsKKyAgICAgICAgJyhodHRwczovL25wbWpzLm9yZy9wYWNrYWdlL21vY2hhLXRlYW1jaXR5LXJl
cG9ydGVyKS4nKTsKKyAgICBpZiAoIV9yZXBvcnRlcikgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlk
IHJlcG9ydGVyICInICsgcmVwb3J0ZXIgKyAnIicpOworICAgIHRoaXMuX3JlcG9ydGVyID0gX3Jl
cG9ydGVyOworICB9CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBTZXQgdGVzdCBVSSBg
bmFtZWAsIGRlZmF1bHRzIHRvICJiZGQiLgorICoKKyAqIEBwYXJhbSB7U3RyaW5nfSBiZGQKKyAq
IEBhcGkgcHVibGljCisgKi8KKworTW9jaGEucHJvdG90eXBlLnVpID0gZnVuY3Rpb24obmFtZSl7
CisgIG5hbWUgPSBuYW1lIHx8ICdiZGQnOworICB0aGlzLl91aSA9IGV4cG9ydHMuaW50ZXJmYWNl
c1tuYW1lXTsKKyAgaWYgKCF0aGlzLl91aSkgdHJ5IHsgdGhpcy5fdWkgPSByZXF1aXJlKG5hbWUp
OyB9IGNhdGNoIChlcnIpIHt9OworICBpZiAoIXRoaXMuX3VpKSB0aHJvdyBuZXcgRXJyb3IoJ2lu
dmFsaWQgaW50ZXJmYWNlICInICsgbmFtZSArICciJyk7CisgIHRoaXMuX3VpID0gdGhpcy5fdWko
dGhpcy5zdWl0ZSk7CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBMb2FkIHJlZ2lzdGVy
ZWQgZmlsZXMuCisgKgorICogQGFwaSBwcml2YXRlCisgKi8KKworTW9jaGEucHJvdG90eXBlLmxv
YWRGaWxlcyA9IGZ1bmN0aW9uKGZuKXsKKyAgdmFyIHNlbGYgPSB0aGlzOworICB2YXIgc3VpdGUg
PSB0aGlzLnN1aXRlOworICB2YXIgcGVuZGluZyA9IHRoaXMuZmlsZXMubGVuZ3RoOworICB0aGlz
LmZpbGVzLmZvckVhY2goZnVuY3Rpb24oZmlsZSl7CisgICAgZmlsZSA9IHBhdGgucmVzb2x2ZShm
aWxlKTsKKyAgICBzdWl0ZS5lbWl0KCdwcmUtcmVxdWlyZScsIGdsb2JhbCwgZmlsZSwgc2VsZik7
CisgICAgc3VpdGUuZW1pdCgncmVxdWlyZScsIHJlcXVpcmUoZmlsZSksIGZpbGUsIHNlbGYpOwor
ICAgIHN1aXRlLmVtaXQoJ3Bvc3QtcmVxdWlyZScsIGdsb2JhbCwgZmlsZSwgc2VsZik7CisgICAg
LS1wZW5kaW5nIHx8IChmbiAmJiBmbigpKTsKKyAgfSk7Cit9OworCisvKioKKyAqIEVuYWJsZSBn
cm93bCBzdXBwb3J0LgorICoKKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK01vY2hhLnByb3RvdHlw
ZS5fZ3Jvd2wgPSBmdW5jdGlvbihydW5uZXIsIHJlcG9ydGVyKSB7CisgIHZhciBub3RpZnkgPSBy
ZXF1aXJlKCdncm93bCcpOworCisgIHJ1bm5lci5vbignZW5kJywgZnVuY3Rpb24oKXsKKyAgICB2
YXIgc3RhdHMgPSByZXBvcnRlci5zdGF0czsKKyAgICBpZiAoc3RhdHMuZmFpbHVyZXMpIHsKKyAg
ICAgIHZhciBtc2cgPSBzdGF0cy5mYWlsdXJlcyArICcgb2YgJyArIHJ1bm5lci50b3RhbCArICcg
dGVzdHMgZmFpbGVkJzsKKyAgICAgIG5vdGlmeShtc2csIHsgbmFtZTogJ21vY2hhJywgdGl0bGU6
ICdGYWlsZWQnLCBpbWFnZTogaW1hZ2UoJ2Vycm9yJykgfSk7CisgICAgfSBlbHNlIHsKKyAgICAg
IG5vdGlmeShzdGF0cy5wYXNzZXMgKyAnIHRlc3RzIHBhc3NlZCBpbiAnICsgc3RhdHMuZHVyYXRp
b24gKyAnbXMnLCB7CisgICAgICAgICAgbmFtZTogJ21vY2hhJworICAgICAgICAsIHRpdGxlOiAn
UGFzc2VkJworICAgICAgICAsIGltYWdlOiBpbWFnZSgnb2snKQorICAgICAgfSk7CisgICAgfQor
ICB9KTsKK307CisKKy8qKgorICogQWRkIHJlZ2V4cCB0byBncmVwLCBpZiBgcmVgIGlzIGEgc3Ry
aW5nIGl0IGlzIGVzY2FwZWQuCisgKgorICogQHBhcmFtIHtSZWdFeHB8U3RyaW5nfSByZQorICog
QHJldHVybiB7TW9jaGF9CisgKiBAYXBpIHB1YmxpYworICovCisKK01vY2hhLnByb3RvdHlwZS5n
cmVwID0gZnVuY3Rpb24ocmUpeworICB0aGlzLm9wdGlvbnMuZ3JlcCA9ICdzdHJpbmcnID09IHR5
cGVvZiByZQorICAgID8gbmV3IFJlZ0V4cCh1dGlscy5lc2NhcGVSZWdleHAocmUpKQorICAgIDog
cmU7CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBJbnZlcnQgYC5ncmVwKClgIG1hdGNo
ZXMuCisgKgorICogQHJldHVybiB7TW9jaGF9CisgKiBAYXBpIHB1YmxpYworICovCisKK01vY2hh
LnByb3RvdHlwZS5pbnZlcnQgPSBmdW5jdGlvbigpeworICB0aGlzLm9wdGlvbnMuaW52ZXJ0ID0g
dHJ1ZTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIElnbm9yZSBnbG9iYWwgbGVha3Mu
CisgKgorICogQHBhcmFtIHtCb29sZWFufSBpZ25vcmUKKyAqIEByZXR1cm4ge01vY2hhfQorICog
QGFwaSBwdWJsaWMKKyAqLworCitNb2NoYS5wcm90b3R5cGUuaWdub3JlTGVha3MgPSBmdW5jdGlv
bihpZ25vcmUpeworICB0aGlzLm9wdGlvbnMuaWdub3JlTGVha3MgPSAhIWlnbm9yZTsKKyAgcmV0
dXJuIHRoaXM7Cit9OworCisvKioKKyAqIEVuYWJsZSBnbG9iYWwgbGVhayBjaGVja2luZy4KKyAq
CisgKiBAcmV0dXJuIHtNb2NoYX0KKyAqIEBhcGkgcHVibGljCisgKi8KKworTW9jaGEucHJvdG90
eXBlLmNoZWNrTGVha3MgPSBmdW5jdGlvbigpeworICB0aGlzLm9wdGlvbnMuaWdub3JlTGVha3Mg
PSBmYWxzZTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIEVuYWJsZSBncm93bCBzdXBw
b3J0LgorICoKKyAqIEByZXR1cm4ge01vY2hhfQorICogQGFwaSBwdWJsaWMKKyAqLworCitNb2No
YS5wcm90b3R5cGUuZ3Jvd2wgPSBmdW5jdGlvbigpeworICB0aGlzLm9wdGlvbnMuZ3Jvd2wgPSB0
cnVlOworICByZXR1cm4gdGhpczsKK307CisKKy8qKgorICogSWdub3JlIGBnbG9iYWxzYCBhcnJh
eSBvciBzdHJpbmcuCisgKgorICogQHBhcmFtIHtBcnJheXxTdHJpbmd9IGdsb2JhbHMKKyAqIEBy
ZXR1cm4ge01vY2hhfQorICogQGFwaSBwdWJsaWMKKyAqLworCitNb2NoYS5wcm90b3R5cGUuZ2xv
YmFscyA9IGZ1bmN0aW9uKGdsb2JhbHMpeworICB0aGlzLm9wdGlvbnMuZ2xvYmFscyA9ICh0aGlz
Lm9wdGlvbnMuZ2xvYmFscyB8fCBbXSkuY29uY2F0KGdsb2JhbHMpOworICByZXR1cm4gdGhpczsK
K307CisKKy8qKgorICogRW1pdCBjb2xvciBvdXRwdXQuCisgKgorICogQHBhcmFtIHtCb29sZWFu
fSBjb2xvcnMKKyAqIEByZXR1cm4ge01vY2hhfQorICogQGFwaSBwdWJsaWMKKyAqLworCitNb2No
YS5wcm90b3R5cGUudXNlQ29sb3JzID0gZnVuY3Rpb24oY29sb3JzKXsKKyAgdGhpcy5vcHRpb25z
LnVzZUNvbG9ycyA9IGFyZ3VtZW50cy5sZW5ndGggJiYgY29sb3JzICE9IHVuZGVmaW5lZAorICAg
ID8gY29sb3JzCisgICAgOiB0cnVlOworICByZXR1cm4gdGhpczsKK307CisKKy8qKgorICogVXNl
IGlubGluZSBkaWZmcyByYXRoZXIgdGhhbiArLy0uCisgKgorICogQHBhcmFtIHtCb29sZWFufSBp
bmxpbmVEaWZmcworICogQHJldHVybiB7TW9jaGF9CisgKiBAYXBpIHB1YmxpYworICovCisKK01v
Y2hhLnByb3RvdHlwZS51c2VJbmxpbmVEaWZmcyA9IGZ1bmN0aW9uKGlubGluZURpZmZzKSB7Cisg
IHRoaXMub3B0aW9ucy51c2VJbmxpbmVEaWZmcyA9IGFyZ3VtZW50cy5sZW5ndGggJiYgaW5saW5l
RGlmZnMgIT0gdW5kZWZpbmVkCisgID8gaW5saW5lRGlmZnMKKyAgOiBmYWxzZTsKKyAgcmV0dXJu
IHRoaXM7Cit9OworCisvKioKKyAqIFNldCB0aGUgdGltZW91dCBpbiBtaWxsaXNlY29uZHMuCisg
KgorICogQHBhcmFtIHtOdW1iZXJ9IHRpbWVvdXQKKyAqIEByZXR1cm4ge01vY2hhfQorICogQGFw
aSBwdWJsaWMKKyAqLworCitNb2NoYS5wcm90b3R5cGUudGltZW91dCA9IGZ1bmN0aW9uKHRpbWVv
dXQpeworICB0aGlzLnN1aXRlLnRpbWVvdXQodGltZW91dCk7CisgIHJldHVybiB0aGlzOworfTsK
KworLyoqCisgKiBTZXQgc2xvd25lc3MgdGhyZXNob2xkIGluIG1pbGxpc2Vjb25kcy4KKyAqCisg
KiBAcGFyYW0ge051bWJlcn0gc2xvdworICogQHJldHVybiB7TW9jaGF9CisgKiBAYXBpIHB1Ymxp
YworICovCisKK01vY2hhLnByb3RvdHlwZS5zbG93ID0gZnVuY3Rpb24oc2xvdyl7CisgIHRoaXMu
c3VpdGUuc2xvdyhzbG93KTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIEVuYWJsZSB0
aW1lb3V0cy4KKyAqCisgKiBAcGFyYW0ge0Jvb2xlYW59IGVuYWJsZWQKKyAqIEByZXR1cm4ge01v
Y2hhfQorICogQGFwaSBwdWJsaWMKKyAqLworCitNb2NoYS5wcm90b3R5cGUuZW5hYmxlVGltZW91
dHMgPSBmdW5jdGlvbihlbmFibGVkKSB7CisgIHRoaXMuc3VpdGUuZW5hYmxlVGltZW91dHMoYXJn
dW1lbnRzLmxlbmd0aCAmJiBlbmFibGVkICE9PSB1bmRlZmluZWQKKyAgICA/IGVuYWJsZWQKKyAg
ICA6IHRydWUpOworICByZXR1cm4gdGhpcworfTsKKworLyoqCisgKiBNYWtlcyBhbGwgdGVzdHMg
YXN5bmMgKGFjY2VwdGluZyBhIGNhbGxiYWNrKQorICoKKyAqIEByZXR1cm4ge01vY2hhfQorICog
QGFwaSBwdWJsaWMKKyAqLworCitNb2NoYS5wcm90b3R5cGUuYXN5bmNPbmx5ID0gZnVuY3Rpb24o
KXsKKyAgdGhpcy5vcHRpb25zLmFzeW5jT25seSA9IHRydWU7CisgIHJldHVybiB0aGlzOworfTsK
KworLyoqCisgKiBSdW4gdGVzdHMgYW5kIGludm9rZSBgZm4oKWAgd2hlbiBjb21wbGV0ZS4KKyAq
CisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbgorICogQHJldHVybiB7UnVubmVyfQorICogQGFwaSBw
dWJsaWMKKyAqLworCitNb2NoYS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24oZm4peworICBpZiAo
dGhpcy5maWxlcy5sZW5ndGgpIHRoaXMubG9hZEZpbGVzKCk7CisgIHZhciBzdWl0ZSA9IHRoaXMu
c3VpdGU7CisgIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zOworICBvcHRpb25zLmZpbGVzID0g
dGhpcy5maWxlczsKKyAgdmFyIHJ1bm5lciA9IG5ldyBleHBvcnRzLlJ1bm5lcihzdWl0ZSk7Cisg
IHZhciByZXBvcnRlciA9IG5ldyB0aGlzLl9yZXBvcnRlcihydW5uZXIsIG9wdGlvbnMpOworICBy
dW5uZXIuaWdub3JlTGVha3MgPSBmYWxzZSAhPT0gb3B0aW9ucy5pZ25vcmVMZWFrczsKKyAgcnVu
bmVyLmFzeW5jT25seSA9IG9wdGlvbnMuYXN5bmNPbmx5OworICBpZiAob3B0aW9ucy5ncmVwKSBy
dW5uZXIuZ3JlcChvcHRpb25zLmdyZXAsIG9wdGlvbnMuaW52ZXJ0KTsKKyAgaWYgKG9wdGlvbnMu
Z2xvYmFscykgcnVubmVyLmdsb2JhbHMob3B0aW9ucy5nbG9iYWxzKTsKKyAgaWYgKG9wdGlvbnMu
Z3Jvd2wpIHRoaXMuX2dyb3dsKHJ1bm5lciwgcmVwb3J0ZXIpOworICBleHBvcnRzLnJlcG9ydGVy
cy5CYXNlLnVzZUNvbG9ycyA9IG9wdGlvbnMudXNlQ29sb3JzOworICBleHBvcnRzLnJlcG9ydGVy
cy5CYXNlLmlubGluZURpZmZzID0gb3B0aW9ucy51c2VJbmxpbmVEaWZmczsKKyAgcmV0dXJuIHJ1
bm5lci5ydW4oZm4pOworfTsKKworfSk7IC8vIG1vZHVsZTogbW9jaGEuanMKKworcmVxdWlyZS5y
ZWdpc3RlcigibXMuanMiLCBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUpeworLyoq
CisgKiBIZWxwZXJzLgorICovCisKK3ZhciBzID0gMTAwMDsKK3ZhciBtID0gcyAqIDYwOwordmFy
IGggPSBtICogNjA7Cit2YXIgZCA9IGggKiAyNDsKK3ZhciB5ID0gZCAqIDM2NS4yNTsKKworLyoq
CisgKiBQYXJzZSBvciBmb3JtYXQgdGhlIGdpdmVuIGB2YWxgLgorICoKKyAqIE9wdGlvbnM6Cisg
KgorICogIC0gYGxvbmdgIHZlcmJvc2UgZm9ybWF0dGluZyBbZmFsc2VdCisgKgorICogQHBhcmFt
IHtTdHJpbmd8TnVtYmVyfSB2YWwKKyAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zCisgKiBAcmV0
dXJuIHtTdHJpbmd8TnVtYmVyfQorICogQGFwaSBwdWJsaWMKKyAqLworCittb2R1bGUuZXhwb3J0
cyA9IGZ1bmN0aW9uKHZhbCwgb3B0aW9ucyl7CisgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9Owor
ICBpZiAoJ3N0cmluZycgPT0gdHlwZW9mIHZhbCkgcmV0dXJuIHBhcnNlKHZhbCk7CisgIHJldHVy
biBvcHRpb25zLmxvbmcgPyBsb25nRm9ybWF0KHZhbCkgOiBzaG9ydEZvcm1hdCh2YWwpOworfTsK
KworLyoqCisgKiBQYXJzZSB0aGUgZ2l2ZW4gYHN0cmAgYW5kIHJldHVybiBtaWxsaXNlY29uZHMu
CisgKgorICogQHBhcmFtIHtTdHJpbmd9IHN0cgorICogQHJldHVybiB7TnVtYmVyfQorICogQGFw
aSBwcml2YXRlCisgKi8KKworZnVuY3Rpb24gcGFyc2Uoc3RyKSB7CisgIHZhciBtYXRjaCA9IC9e
KCg/OlxkKyk/XC4/XGQrKSAqKG1zfHNlY29uZHM/fHN8bWludXRlcz98bXxob3Vycz98aHxkYXlz
P3xkfHllYXJzP3x5KT8kL2kuZXhlYyhzdHIpOworICBpZiAoIW1hdGNoKSByZXR1cm47CisgIHZh
ciBuID0gcGFyc2VGbG9hdChtYXRjaFsxXSk7CisgIHZhciB0eXBlID0gKG1hdGNoWzJdIHx8ICdt
cycpLnRvTG93ZXJDYXNlKCk7CisgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgJ3llYXJzJzoK
KyAgICBjYXNlICd5ZWFyJzoKKyAgICBjYXNlICd5JzoKKyAgICAgIHJldHVybiBuICogeTsKKyAg
ICBjYXNlICdkYXlzJzoKKyAgICBjYXNlICdkYXknOgorICAgIGNhc2UgJ2QnOgorICAgICAgcmV0
dXJuIG4gKiBkOworICAgIGNhc2UgJ2hvdXJzJzoKKyAgICBjYXNlICdob3VyJzoKKyAgICBjYXNl
ICdoJzoKKyAgICAgIHJldHVybiBuICogaDsKKyAgICBjYXNlICdtaW51dGVzJzoKKyAgICBjYXNl
ICdtaW51dGUnOgorICAgIGNhc2UgJ20nOgorICAgICAgcmV0dXJuIG4gKiBtOworICAgIGNhc2Ug
J3NlY29uZHMnOgorICAgIGNhc2UgJ3NlY29uZCc6CisgICAgY2FzZSAncyc6CisgICAgICByZXR1
cm4gbiAqIHM7CisgICAgY2FzZSAnbXMnOgorICAgICAgcmV0dXJuIG47CisgIH0KK30KKworLyoq
CisgKiBTaG9ydCBmb3JtYXQgZm9yIGBtc2AuCisgKgorICogQHBhcmFtIHtOdW1iZXJ9IG1zCisg
KiBAcmV0dXJuIHtTdHJpbmd9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitmdW5jdGlvbiBzaG9y
dEZvcm1hdChtcykgeworICBpZiAobXMgPj0gZCkgcmV0dXJuIE1hdGgucm91bmQobXMgLyBkKSAr
ICdkJzsKKyAgaWYgKG1zID49IGgpIHJldHVybiBNYXRoLnJvdW5kKG1zIC8gaCkgKyAnaCc7Cisg
IGlmIChtcyA+PSBtKSByZXR1cm4gTWF0aC5yb3VuZChtcyAvIG0pICsgJ20nOworICBpZiAobXMg
Pj0gcykgcmV0dXJuIE1hdGgucm91bmQobXMgLyBzKSArICdzJzsKKyAgcmV0dXJuIG1zICsgJ21z
JzsKK30KKworLyoqCisgKiBMb25nIGZvcm1hdCBmb3IgYG1zYC4KKyAqCisgKiBAcGFyYW0ge051
bWJlcn0gbXMKKyAqIEByZXR1cm4ge1N0cmluZ30KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK2Z1
bmN0aW9uIGxvbmdGb3JtYXQobXMpIHsKKyAgcmV0dXJuIHBsdXJhbChtcywgZCwgJ2RheScpCisg
ICAgfHwgcGx1cmFsKG1zLCBoLCAnaG91cicpCisgICAgfHwgcGx1cmFsKG1zLCBtLCAnbWludXRl
JykKKyAgICB8fCBwbHVyYWwobXMsIHMsICdzZWNvbmQnKQorICAgIHx8IG1zICsgJyBtcyc7Cit9
CisKKy8qKgorICogUGx1cmFsaXphdGlvbiBoZWxwZXIuCisgKi8KKworZnVuY3Rpb24gcGx1cmFs
KG1zLCBuLCBuYW1lKSB7CisgIGlmIChtcyA8IG4pIHJldHVybjsKKyAgaWYgKG1zIDwgbiAqIDEu
NSkgcmV0dXJuIE1hdGguZmxvb3IobXMgLyBuKSArICcgJyArIG5hbWU7CisgIHJldHVybiBNYXRo
LmNlaWwobXMgLyBuKSArICcgJyArIG5hbWUgKyAncyc7Cit9CisKK30pOyAvLyBtb2R1bGU6IG1z
LmpzCisKK3JlcXVpcmUucmVnaXN0ZXIoInJlcG9ydGVycy9iYXNlLmpzIiwgZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzLCByZXF1aXJlKXsKKworLyoqCisgKiBNb2R1bGUgZGVwZW5kZW5jaWVzLgor
ICovCisKK3ZhciB0dHkgPSByZXF1aXJlKCdicm93c2VyL3R0eScpCisgICwgZGlmZiA9IHJlcXVp
cmUoJ2Jyb3dzZXIvZGlmZicpCisgICwgbXMgPSByZXF1aXJlKCcuLi9tcycpCisgICwgdXRpbHMg
PSByZXF1aXJlKCcuLi91dGlscycpOworCisvKioKKyAqIFNhdmUgdGltZXIgcmVmZXJlbmNlcyB0
byBhdm9pZCBTaW5vbiBpbnRlcmZlcmluZyAoc2VlIEdILTIzNykuCisgKi8KKwordmFyIERhdGUg
PSBnbG9iYWwuRGF0ZQorICAsIHNldFRpbWVvdXQgPSBnbG9iYWwuc2V0VGltZW91dAorICAsIHNl
dEludGVydmFsID0gZ2xvYmFsLnNldEludGVydmFsCisgICwgY2xlYXJUaW1lb3V0ID0gZ2xvYmFs
LmNsZWFyVGltZW91dAorICAsIGNsZWFySW50ZXJ2YWwgPSBnbG9iYWwuY2xlYXJJbnRlcnZhbDsK
KworLyoqCisgKiBDaGVjayBpZiBib3RoIHN0ZGlvIHN0cmVhbXMgYXJlIGFzc29jaWF0ZWQgd2l0
aCBhIHR0eS4KKyAqLworCit2YXIgaXNhdHR5ID0gdHR5LmlzYXR0eSgxKSAmJiB0dHkuaXNhdHR5
KDIpOworCisvKioKKyAqIEV4cG9zZSBgQmFzZWAuCisgKi8KKworZXhwb3J0cyA9IG1vZHVsZS5l
eHBvcnRzID0gQmFzZTsKKworLyoqCisgKiBFbmFibGUgY29sb3JpbmcgYnkgZGVmYXVsdC4KKyAq
LworCitleHBvcnRzLnVzZUNvbG9ycyA9IGlzYXR0eSB8fCAocHJvY2Vzcy5lbnYuTU9DSEFfQ09M
T1JTICE9PSB1bmRlZmluZWQpOworCisvKioKKyAqIElubGluZSBkaWZmcyBpbnN0ZWFkIG9mICsv
LQorICovCisKK2V4cG9ydHMuaW5saW5lRGlmZnMgPSBmYWxzZTsKKworLyoqCisgKiBEZWZhdWx0
IGNvbG9yIG1hcC4KKyAqLworCitleHBvcnRzLmNvbG9ycyA9IHsKKyAgICAncGFzcyc6IDkwCisg
ICwgJ2ZhaWwnOiAzMQorICAsICdicmlnaHQgcGFzcyc6IDkyCisgICwgJ2JyaWdodCBmYWlsJzog
OTEKKyAgLCAnYnJpZ2h0IHllbGxvdyc6IDkzCisgICwgJ3BlbmRpbmcnOiAzNgorICAsICdzdWl0
ZSc6IDAKKyAgLCAnZXJyb3IgdGl0bGUnOiAwCisgICwgJ2Vycm9yIG1lc3NhZ2UnOiAzMQorICAs
ICdlcnJvciBzdGFjayc6IDkwCisgICwgJ2NoZWNrbWFyayc6IDMyCisgICwgJ2Zhc3QnOiA5MAor
ICAsICdtZWRpdW0nOiAzMworICAsICdzbG93JzogMzEKKyAgLCAnZ3JlZW4nOiAzMgorICAsICds
aWdodCc6IDkwCisgICwgJ2RpZmYgZ3V0dGVyJzogOTAKKyAgLCAnZGlmZiBhZGRlZCc6IDQyCisg
ICwgJ2RpZmYgcmVtb3ZlZCc6IDQxCit9OworCisvKioKKyAqIERlZmF1bHQgc3ltYm9sIG1hcC4K
KyAqLworCitleHBvcnRzLnN5bWJvbHMgPSB7CisgIG9rOiAn4pyTJywKKyAgZXJyOiAn4pyWJywK
KyAgZG90OiAn4oCkJworfTsKKworLy8gV2l0aCBub2RlLmpzIG9uIFdpbmRvd3M6IHVzZSBzeW1i
b2xzIGF2YWlsYWJsZSBpbiB0ZXJtaW5hbCBkZWZhdWx0IGZvbnRzCitpZiAoJ3dpbjMyJyA9PSBw
cm9jZXNzLnBsYXRmb3JtKSB7CisgIGV4cG9ydHMuc3ltYm9scy5vayA9ICdcdTIyMUEnOworICBl
eHBvcnRzLnN5bWJvbHMuZXJyID0gJ1x1MDBENyc7CisgIGV4cG9ydHMuc3ltYm9scy5kb3QgPSAn
Lic7Cit9CisKKy8qKgorICogQ29sb3IgYHN0cmAgd2l0aCB0aGUgZ2l2ZW4gYHR5cGVgLAorICog
YWxsb3dpbmcgY29sb3JzIHRvIGJlIGRpc2FibGVkLAorICogYXMgd2VsbCBhcyB1c2VyLWRlZmlu
ZWQgY29sb3IKKyAqIHNjaGVtZXMuCisgKgorICogQHBhcmFtIHtTdHJpbmd9IHR5cGUKKyAqIEBw
YXJhbSB7U3RyaW5nfSBzdHIKKyAqIEByZXR1cm4ge1N0cmluZ30KKyAqIEBhcGkgcHJpdmF0ZQor
ICovCisKK3ZhciBjb2xvciA9IGV4cG9ydHMuY29sb3IgPSBmdW5jdGlvbih0eXBlLCBzdHIpIHsK
KyAgaWYgKCFleHBvcnRzLnVzZUNvbG9ycykgcmV0dXJuIHN0cjsKKyAgcmV0dXJuICdcdTAwMWJb
JyArIGV4cG9ydHMuY29sb3JzW3R5cGVdICsgJ20nICsgc3RyICsgJ1x1MDAxYlswbSc7Cit9Owor
CisvKioKKyAqIEV4cG9zZSB0ZXJtIHdpbmRvdyBzaXplLCB3aXRoIHNvbWUKKyAqIGRlZmF1bHRz
IGZvciB3aGVuIHN0ZGVyciBpcyBub3QgYSB0dHkuCisgKi8KKworZXhwb3J0cy53aW5kb3cgPSB7
CisgIHdpZHRoOiBpc2F0dHkKKyAgICA/IHByb2Nlc3Muc3Rkb3V0LmdldFdpbmRvd1NpemUKKyAg
ICAgID8gcHJvY2Vzcy5zdGRvdXQuZ2V0V2luZG93U2l6ZSgxKVswXQorICAgICAgOiB0dHkuZ2V0
V2luZG93U2l6ZSgpWzFdCisgICAgOiA3NQorfTsKKworLyoqCisgKiBFeHBvc2Ugc29tZSBiYXNp
YyBjdXJzb3IgaW50ZXJhY3Rpb25zCisgKiB0aGF0IGFyZSBjb21tb24gYW1vbmcgcmVwb3J0ZXJz
LgorICovCisKK2V4cG9ydHMuY3Vyc29yID0geworICBoaWRlOiBmdW5jdGlvbigpeworICAgIGlz
YXR0eSAmJiBwcm9jZXNzLnN0ZG91dC53cml0ZSgnXHUwMDFiWz8yNWwnKTsKKyAgfSwKKworICBz
aG93OiBmdW5jdGlvbigpeworICAgIGlzYXR0eSAmJiBwcm9jZXNzLnN0ZG91dC53cml0ZSgnXHUw
MDFiWz8yNWgnKTsKKyAgfSwKKworICBkZWxldGVMaW5lOiBmdW5jdGlvbigpeworICAgIGlzYXR0
eSAmJiBwcm9jZXNzLnN0ZG91dC53cml0ZSgnXHUwMDFiWzJLJyk7CisgIH0sCisKKyAgYmVnaW5u
aW5nT2ZMaW5lOiBmdW5jdGlvbigpeworICAgIGlzYXR0eSAmJiBwcm9jZXNzLnN0ZG91dC53cml0
ZSgnXHUwMDFiWzBHJyk7CisgIH0sCisKKyAgQ1I6IGZ1bmN0aW9uKCl7CisgICAgaWYgKGlzYXR0
eSkgeworICAgICAgZXhwb3J0cy5jdXJzb3IuZGVsZXRlTGluZSgpOworICAgICAgZXhwb3J0cy5j
dXJzb3IuYmVnaW5uaW5nT2ZMaW5lKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHByb2Nlc3Muc3Rk
b3V0LndyaXRlKCdccicpOworICAgIH0KKyAgfQorfTsKKworLyoqCisgKiBPdXR1dCB0aGUgZ2l2
ZW4gYGZhaWx1cmVzYCBhcyBhIGxpc3QuCisgKgorICogQHBhcmFtIHtBcnJheX0gZmFpbHVyZXMK
KyAqIEBhcGkgcHVibGljCisgKi8KKworZXhwb3J0cy5saXN0ID0gZnVuY3Rpb24oZmFpbHVyZXMp
eworICBjb25zb2xlLmVycm9yKCk7CisgIGZhaWx1cmVzLmZvckVhY2goZnVuY3Rpb24odGVzdCwg
aSl7CisgICAgLy8gZm9ybWF0CisgICAgdmFyIGZtdCA9IGNvbG9yKCdlcnJvciB0aXRsZScsICcg
ICVzKSAlczpcbicpCisgICAgICArIGNvbG9yKCdlcnJvciBtZXNzYWdlJywgJyAgICAgJXMnKQor
ICAgICAgKyBjb2xvcignZXJyb3Igc3RhY2snLCAnXG4lc1xuJyk7CisKKyAgICAvLyBtc2cKKyAg
ICB2YXIgZXJyID0gdGVzdC5lcnIKKyAgICAgICwgbWVzc2FnZSA9IGVyci5tZXNzYWdlIHx8ICcn
CisgICAgICAsIHN0YWNrID0gZXJyLnN0YWNrIHx8IG1lc3NhZ2UKKyAgICAgICwgaW5kZXggPSBz
dGFjay5pbmRleE9mKG1lc3NhZ2UpICsgbWVzc2FnZS5sZW5ndGgKKyAgICAgICwgbXNnID0gc3Rh
Y2suc2xpY2UoMCwgaW5kZXgpCisgICAgICAsIGFjdHVhbCA9IGVyci5hY3R1YWwKKyAgICAgICwg
ZXhwZWN0ZWQgPSBlcnIuZXhwZWN0ZWQKKyAgICAgICwgZXNjYXBlID0gdHJ1ZTsKKworICAgIC8v
IHVuY2F1Z2h0CisgICAgaWYgKGVyci51bmNhdWdodCkgeworICAgICAgbXNnID0gJ1VuY2F1Z2h0
ICcgKyBtc2c7CisgICAgfQorCisgICAgLy8gZXhwbGljaXRseSBzaG93IGRpZmYKKyAgICBpZiAo
ZXJyLnNob3dEaWZmICYmIHNhbWVUeXBlKGFjdHVhbCwgZXhwZWN0ZWQpKSB7CisgICAgICBlc2Nh
cGUgPSBmYWxzZTsKKyAgICAgIGVyci5hY3R1YWwgPSBhY3R1YWwgPSB1dGlscy5zdHJpbmdpZnko
YWN0dWFsKTsKKyAgICAgIGVyci5leHBlY3RlZCA9IGV4cGVjdGVkID0gdXRpbHMuc3RyaW5naWZ5
KGV4cGVjdGVkKTsKKyAgICB9CisKKyAgICAvLyBhY3R1YWwgLyBleHBlY3RlZCBkaWZmCisgICAg
aWYgKCdzdHJpbmcnID09IHR5cGVvZiBhY3R1YWwgJiYgJ3N0cmluZycgPT0gdHlwZW9mIGV4cGVj
dGVkKSB7CisgICAgICBmbXQgPSBjb2xvcignZXJyb3IgdGl0bGUnLCAnICAlcykgJXM6XG4lcycp
ICsgY29sb3IoJ2Vycm9yIHN0YWNrJywgJ1xuJXNcbicpOworICAgICAgdmFyIG1hdGNoID0gbWVz
c2FnZS5tYXRjaCgvXihbXjpdKyk6IGV4cGVjdGVkLyk7CisgICAgICBtc2cgPSAnXG4gICAgICAn
ICsgY29sb3IoJ2Vycm9yIG1lc3NhZ2UnLCBtYXRjaCA/IG1hdGNoWzFdIDogbXNnKTsKKworICAg
ICAgaWYgKGV4cG9ydHMuaW5saW5lRGlmZnMpIHsKKyAgICAgICAgbXNnICs9IGlubGluZURpZmYo
ZXJyLCBlc2NhcGUpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgbXNnICs9IHVuaWZpZWREaWZm
KGVyciwgZXNjYXBlKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBpbmRlbnQgc3RhY2sgdHJh
Y2Ugd2l0aG91dCBtc2cKKyAgICBzdGFjayA9IHN0YWNrLnNsaWNlKGluZGV4ID8gaW5kZXggKyAx
IDogaW5kZXgpCisgICAgICAucmVwbGFjZSgvXi9nbSwgJyAgJyk7CisKKyAgICBjb25zb2xlLmVy
cm9yKGZtdCwgKGkgKyAxKSwgdGVzdC5mdWxsVGl0bGUoKSwgbXNnLCBzdGFjayk7CisgIH0pOwor
fTsKKworLyoqCisgKiBJbml0aWFsaXplIGEgbmV3IGBCYXNlYCByZXBvcnRlci4KKyAqCisgKiBB
bGwgb3RoZXIgcmVwb3J0ZXJzIGdlbmVyYWxseQorICogaW5oZXJpdCBmcm9tIHRoaXMgcmVwb3J0
ZXIsIHByb3ZpZGluZworICogc3RhdHMgc3VjaCBhcyB0ZXN0IGR1cmF0aW9uLCBudW1iZXIKKyAq
IG9mIHRlc3RzIHBhc3NlZCAvIGZhaWxlZCBldGMuCisgKgorICogQHBhcmFtIHtSdW5uZXJ9IHJ1
bm5lcgorICogQGFwaSBwdWJsaWMKKyAqLworCitmdW5jdGlvbiBCYXNlKHJ1bm5lcikgeworICB2
YXIgc2VsZiA9IHRoaXMKKyAgICAsIHN0YXRzID0gdGhpcy5zdGF0cyA9IHsgc3VpdGVzOiAwLCB0
ZXN0czogMCwgcGFzc2VzOiAwLCBwZW5kaW5nOiAwLCBmYWlsdXJlczogMCB9CisgICAgLCBmYWls
dXJlcyA9IHRoaXMuZmFpbHVyZXMgPSBbXTsKKworICBpZiAoIXJ1bm5lcikgcmV0dXJuOworICB0
aGlzLnJ1bm5lciA9IHJ1bm5lcjsKKworICBydW5uZXIuc3RhdHMgPSBzdGF0czsKKworICBydW5u
ZXIub24oJ3N0YXJ0JywgZnVuY3Rpb24oKXsKKyAgICBzdGF0cy5zdGFydCA9IG5ldyBEYXRlOwor
ICB9KTsKKworICBydW5uZXIub24oJ3N1aXRlJywgZnVuY3Rpb24oc3VpdGUpeworICAgIHN0YXRz
LnN1aXRlcyA9IHN0YXRzLnN1aXRlcyB8fCAwOworICAgIHN1aXRlLnJvb3QgfHwgc3RhdHMuc3Vp
dGVzKys7CisgIH0pOworCisgIHJ1bm5lci5vbigndGVzdCBlbmQnLCBmdW5jdGlvbih0ZXN0KXsK
KyAgICBzdGF0cy50ZXN0cyA9IHN0YXRzLnRlc3RzIHx8IDA7CisgICAgc3RhdHMudGVzdHMrKzsK
KyAgfSk7CisKKyAgcnVubmVyLm9uKCdwYXNzJywgZnVuY3Rpb24odGVzdCl7CisgICAgc3RhdHMu
cGFzc2VzID0gc3RhdHMucGFzc2VzIHx8IDA7CisKKyAgICB2YXIgbWVkaXVtID0gdGVzdC5zbG93
KCkgLyAyOworICAgIHRlc3Quc3BlZWQgPSB0ZXN0LmR1cmF0aW9uID4gdGVzdC5zbG93KCkKKyAg
ICAgID8gJ3Nsb3cnCisgICAgICA6IHRlc3QuZHVyYXRpb24gPiBtZWRpdW0KKyAgICAgICAgPyAn
bWVkaXVtJworICAgICAgICA6ICdmYXN0JzsKKworICAgIHN0YXRzLnBhc3NlcysrOworICB9KTsK
KworICBydW5uZXIub24oJ2ZhaWwnLCBmdW5jdGlvbih0ZXN0LCBlcnIpeworICAgIHN0YXRzLmZh
aWx1cmVzID0gc3RhdHMuZmFpbHVyZXMgfHwgMDsKKyAgICBzdGF0cy5mYWlsdXJlcysrOworICAg
IHRlc3QuZXJyID0gZXJyOworICAgIGZhaWx1cmVzLnB1c2godGVzdCk7CisgIH0pOworCisgIHJ1
bm5lci5vbignZW5kJywgZnVuY3Rpb24oKXsKKyAgICBzdGF0cy5lbmQgPSBuZXcgRGF0ZTsKKyAg
ICBzdGF0cy5kdXJhdGlvbiA9IG5ldyBEYXRlIC0gc3RhdHMuc3RhcnQ7CisgIH0pOworCisgIHJ1
bm5lci5vbigncGVuZGluZycsIGZ1bmN0aW9uKCl7CisgICAgc3RhdHMucGVuZGluZysrOworICB9
KTsKK30KKworLyoqCisgKiBPdXRwdXQgY29tbW9uIGVwaWxvZ3VlIHVzZWQgYnkgbWFueSBvZgor
ICogdGhlIGJ1bmRsZWQgcmVwb3J0ZXJzLgorICoKKyAqIEBhcGkgcHVibGljCisgKi8KKworQmFz
ZS5wcm90b3R5cGUuZXBpbG9ndWUgPSBmdW5jdGlvbigpeworICB2YXIgc3RhdHMgPSB0aGlzLnN0
YXRzOworICB2YXIgdGVzdHM7CisgIHZhciBmbXQ7CisKKyAgY29uc29sZS5sb2coKTsKKworICAv
LyBwYXNzZXMKKyAgZm10ID0gY29sb3IoJ2JyaWdodCBwYXNzJywgJyAnKQorICAgICsgY29sb3Io
J2dyZWVuJywgJyAlZCBwYXNzaW5nJykKKyAgICArIGNvbG9yKCdsaWdodCcsICcgKCVzKScpOwor
CisgIGNvbnNvbGUubG9nKGZtdCwKKyAgICBzdGF0cy5wYXNzZXMgfHwgMCwKKyAgICBtcyhzdGF0
cy5kdXJhdGlvbikpOworCisgIC8vIHBlbmRpbmcKKyAgaWYgKHN0YXRzLnBlbmRpbmcpIHsKKyAg
ICBmbXQgPSBjb2xvcigncGVuZGluZycsICcgJykKKyAgICAgICsgY29sb3IoJ3BlbmRpbmcnLCAn
ICVkIHBlbmRpbmcnKTsKKworICAgIGNvbnNvbGUubG9nKGZtdCwgc3RhdHMucGVuZGluZyk7Cisg
IH0KKworICAvLyBmYWlsdXJlcworICBpZiAoc3RhdHMuZmFpbHVyZXMpIHsKKyAgICBmbXQgPSBj
b2xvcignZmFpbCcsICcgICVkIGZhaWxpbmcnKTsKKworICAgIGNvbnNvbGUuZXJyb3IoZm10LAor
ICAgICAgc3RhdHMuZmFpbHVyZXMpOworCisgICAgQmFzZS5saXN0KHRoaXMuZmFpbHVyZXMpOwor
ICAgIGNvbnNvbGUuZXJyb3IoKTsKKyAgfQorCisgIGNvbnNvbGUubG9nKCk7Cit9OworCisvKioK
KyAqIFBhZCB0aGUgZ2l2ZW4gYHN0cmAgdG8gYGxlbmAuCisgKgorICogQHBhcmFtIHtTdHJpbmd9
IHN0cgorICogQHBhcmFtIHtTdHJpbmd9IGxlbgorICogQHJldHVybiB7U3RyaW5nfQorICogQGFw
aSBwcml2YXRlCisgKi8KKworZnVuY3Rpb24gcGFkKHN0ciwgbGVuKSB7CisgIHN0ciA9IFN0cmlu
ZyhzdHIpOworICByZXR1cm4gQXJyYXkobGVuIC0gc3RyLmxlbmd0aCArIDEpLmpvaW4oJyAnKSAr
IHN0cjsKK30KKworCisvKioKKyAqIFJldHVybnMgYW4gaW5saW5lIGRpZmYgYmV0d2VlbiAyIHN0
cmluZ3Mgd2l0aCBjb2xvdXJlZCBBTlNJIG91dHB1dAorICoKKyAqIEBwYXJhbSB7RXJyb3J9IEVy
cm9yIHdpdGggYWN0dWFsL2V4cGVjdGVkCisgKiBAcmV0dXJuIHtTdHJpbmd9IERpZmYKKyAqIEBh
cGkgcHJpdmF0ZQorICovCisKK2Z1bmN0aW9uIGlubGluZURpZmYoZXJyLCBlc2NhcGUpIHsKKyAg
dmFyIG1zZyA9IGVycm9yRGlmZihlcnIsICdXb3Jkc1dpdGhTcGFjZScsIGVzY2FwZSk7CisKKyAg
Ly8gbGluZW5vcworICB2YXIgbGluZXMgPSBtc2cuc3BsaXQoJ1xuJyk7CisgIGlmIChsaW5lcy5s
ZW5ndGggPiA0KSB7CisgICAgdmFyIHdpZHRoID0gU3RyaW5nKGxpbmVzLmxlbmd0aCkubGVuZ3Ro
OworICAgIG1zZyA9IGxpbmVzLm1hcChmdW5jdGlvbihzdHIsIGkpeworICAgICAgcmV0dXJuIHBh
ZCgrK2ksIHdpZHRoKSArICcgfCcgKyAnICcgKyBzdHI7CisgICAgfSkuam9pbignXG4nKTsKKyAg
fQorCisgIC8vIGxlZ2VuZAorICBtc2cgPSAnXG4nCisgICAgKyBjb2xvcignZGlmZiByZW1vdmVk
JywgJ2FjdHVhbCcpCisgICAgKyAnICcKKyAgICArIGNvbG9yKCdkaWZmIGFkZGVkJywgJ2V4cGVj
dGVkJykKKyAgICArICdcblxuJworICAgICsgbXNnCisgICAgKyAnXG4nOworCisgIC8vIGluZGVu
dAorICBtc2cgPSBtc2cucmVwbGFjZSgvXi9nbSwgJyAgICAgICcpOworICByZXR1cm4gbXNnOwor
fQorCisvKioKKyAqIFJldHVybnMgYSB1bmlmaWVkIGRpZmYgYmV0d2VlbiAyIHN0cmluZ3MKKyAq
CisgKiBAcGFyYW0ge0Vycm9yfSBFcnJvciB3aXRoIGFjdHVhbC9leHBlY3RlZAorICogQHJldHVy
biB7U3RyaW5nfSBEaWZmCisgKiBAYXBpIHByaXZhdGUKKyAqLworCitmdW5jdGlvbiB1bmlmaWVk
RGlmZihlcnIsIGVzY2FwZSkgeworICB2YXIgaW5kZW50ID0gJyAgICAgICc7CisgIGZ1bmN0aW9u
IGNsZWFuVXAobGluZSkgeworICAgIGlmIChlc2NhcGUpIHsKKyAgICAgIGxpbmUgPSBlc2NhcGVJ
bnZpc2libGVzKGxpbmUpOworICAgIH0KKyAgICBpZiAobGluZVswXSA9PT0gJysnKSByZXR1cm4g
aW5kZW50ICsgY29sb3JMaW5lcygnZGlmZiBhZGRlZCcsIGxpbmUpOworICAgIGlmIChsaW5lWzBd
ID09PSAnLScpIHJldHVybiBpbmRlbnQgKyBjb2xvckxpbmVzKCdkaWZmIHJlbW92ZWQnLCBsaW5l
KTsKKyAgICBpZiAobGluZS5tYXRjaCgvXEBcQC8pKSByZXR1cm4gbnVsbDsKKyAgICBpZiAobGlu
ZS5tYXRjaCgvXFwgTm8gbmV3bGluZS8pKSByZXR1cm4gbnVsbDsKKyAgICBlbHNlIHJldHVybiBp
bmRlbnQgKyBsaW5lOworICB9CisgIGZ1bmN0aW9uIG5vdEJsYW5rKGxpbmUpIHsKKyAgICByZXR1
cm4gbGluZSAhPSBudWxsOworICB9CisgIG1zZyA9IGRpZmYuY3JlYXRlUGF0Y2goJ3N0cmluZycs
IGVyci5hY3R1YWwsIGVyci5leHBlY3RlZCk7CisgIHZhciBsaW5lcyA9IG1zZy5zcGxpdCgnXG4n
KS5zcGxpY2UoNCk7CisgIHJldHVybiAnXG4gICAgICAnCisgICAgICAgICArIGNvbG9yTGluZXMo
J2RpZmYgYWRkZWQnLCAgICcrIGV4cGVjdGVkJykgKyAnICcKKyAgICAgICAgICsgY29sb3JMaW5l
cygnZGlmZiByZW1vdmVkJywgJy0gYWN0dWFsJykKKyAgICAgICAgICsgJ1xuXG4nCisgICAgICAg
ICArIGxpbmVzLm1hcChjbGVhblVwKS5maWx0ZXIobm90QmxhbmspLmpvaW4oJ1xuJyk7Cit9CisK
Ky8qKgorICogUmV0dXJuIGEgY2hhcmFjdGVyIGRpZmYgZm9yIGBlcnJgLgorICoKKyAqIEBwYXJh
bSB7RXJyb3J9IGVycgorICogQHJldHVybiB7U3RyaW5nfQorICogQGFwaSBwcml2YXRlCisgKi8K
KworZnVuY3Rpb24gZXJyb3JEaWZmKGVyciwgdHlwZSwgZXNjYXBlKSB7CisgIHZhciBhY3R1YWwg
ICA9IGVzY2FwZSA/IGVzY2FwZUludmlzaWJsZXMoZXJyLmFjdHVhbCkgICA6IGVyci5hY3R1YWw7
CisgIHZhciBleHBlY3RlZCA9IGVzY2FwZSA/IGVzY2FwZUludmlzaWJsZXMoZXJyLmV4cGVjdGVk
KSA6IGVyci5leHBlY3RlZDsKKyAgcmV0dXJuIGRpZmZbJ2RpZmYnICsgdHlwZV0oYWN0dWFsLCBl
eHBlY3RlZCkubWFwKGZ1bmN0aW9uKHN0cil7CisgICAgaWYgKHN0ci5hZGRlZCkgcmV0dXJuIGNv
bG9yTGluZXMoJ2RpZmYgYWRkZWQnLCBzdHIudmFsdWUpOworICAgIGlmIChzdHIucmVtb3ZlZCkg
cmV0dXJuIGNvbG9yTGluZXMoJ2RpZmYgcmVtb3ZlZCcsIHN0ci52YWx1ZSk7CisgICAgcmV0dXJu
IHN0ci52YWx1ZTsKKyAgfSkuam9pbignJyk7Cit9CisKKy8qKgorICogUmV0dXJucyBhIHN0cmlu
ZyB3aXRoIGFsbCBpbnZpc2libGUgY2hhcmFjdGVycyBpbiBwbGFpbiB0ZXh0CisgKgorICogQHBh
cmFtIHtTdHJpbmd9IGxpbmUKKyAqIEByZXR1cm4ge1N0cmluZ30KKyAqIEBhcGkgcHJpdmF0ZQor
ICovCitmdW5jdGlvbiBlc2NhcGVJbnZpc2libGVzKGxpbmUpIHsKKyAgICByZXR1cm4gbGluZS5y
ZXBsYWNlKC9cdC9nLCAnPHRhYj4nKQorICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xyL2csICc8
Q1I+JykKKyAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cbi9nLCAnPExGPlxuJyk7Cit9CisKKy8q
KgorICogQ29sb3IgbGluZXMgZm9yIGBzdHJgLCB1c2luZyB0aGUgY29sb3IgYG5hbWVgLgorICoK
KyAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge1N0cmluZ30gc3RyCisgKiBAcmV0
dXJuIHtTdHJpbmd9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitmdW5jdGlvbiBjb2xvckxpbmVz
KG5hbWUsIHN0cikgeworICByZXR1cm4gc3RyLnNwbGl0KCdcbicpLm1hcChmdW5jdGlvbihzdHIp
eworICAgIHJldHVybiBjb2xvcihuYW1lLCBzdHIpOworICB9KS5qb2luKCdcbicpOworfQorCisv
KioKKyAqIENoZWNrIHRoYXQgYSAvIGIgaGF2ZSB0aGUgc2FtZSB0eXBlLgorICoKKyAqIEBwYXJh
bSB7T2JqZWN0fSBhCisgKiBAcGFyYW0ge09iamVjdH0gYgorICogQHJldHVybiB7Qm9vbGVhbn0K
KyAqIEBhcGkgcHJpdmF0ZQorICovCisKK2Z1bmN0aW9uIHNhbWVUeXBlKGEsIGIpIHsKKyAgYSA9
IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhKTsKKyAgYiA9IE9iamVjdC5wcm90b3R5
cGUudG9TdHJpbmcuY2FsbChiKTsKKyAgcmV0dXJuIGEgPT0gYjsKK30KKworfSk7IC8vIG1vZHVs
ZTogcmVwb3J0ZXJzL2Jhc2UuanMKKworcmVxdWlyZS5yZWdpc3RlcigicmVwb3J0ZXJzL2RvYy5q
cyIsIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7CisKKy8qKgorICogTW9kdWxl
IGRlcGVuZGVuY2llcy4KKyAqLworCit2YXIgQmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpCisgICwg
dXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpOworCisvKioKKyAqIEV4cG9zZSBgRG9jYC4KKyAq
LworCitleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBEb2M7CisKKy8qKgorICogSW5pdGlhbGl6
ZSBhIG5ldyBgRG9jYCByZXBvcnRlci4KKyAqCisgKiBAcGFyYW0ge1J1bm5lcn0gcnVubmVyCisg
KiBAYXBpIHB1YmxpYworICovCisKK2Z1bmN0aW9uIERvYyhydW5uZXIpIHsKKyAgQmFzZS5jYWxs
KHRoaXMsIHJ1bm5lcik7CisKKyAgdmFyIHNlbGYgPSB0aGlzCisgICAgLCBzdGF0cyA9IHRoaXMu
c3RhdHMKKyAgICAsIHRvdGFsID0gcnVubmVyLnRvdGFsCisgICAgLCBpbmRlbnRzID0gMjsKKwor
ICBmdW5jdGlvbiBpbmRlbnQoKSB7CisgICAgcmV0dXJuIEFycmF5KGluZGVudHMpLmpvaW4oJyAg
Jyk7CisgIH0KKworICBydW5uZXIub24oJ3N1aXRlJywgZnVuY3Rpb24oc3VpdGUpeworICAgIGlm
IChzdWl0ZS5yb290KSByZXR1cm47CisgICAgKytpbmRlbnRzOworICAgIGNvbnNvbGUubG9nKCcl
czxzZWN0aW9uIGNsYXNzPSJzdWl0ZSI+JywgaW5kZW50KCkpOworICAgICsraW5kZW50czsKKyAg
ICBjb25zb2xlLmxvZygnJXM8aDE+JXM8L2gxPicsIGluZGVudCgpLCB1dGlscy5lc2NhcGUoc3Vp
dGUudGl0bGUpKTsKKyAgICBjb25zb2xlLmxvZygnJXM8ZGw+JywgaW5kZW50KCkpOworICB9KTsK
KworICBydW5uZXIub24oJ3N1aXRlIGVuZCcsIGZ1bmN0aW9uKHN1aXRlKXsKKyAgICBpZiAoc3Vp
dGUucm9vdCkgcmV0dXJuOworICAgIGNvbnNvbGUubG9nKCclczwvZGw+JywgaW5kZW50KCkpOwor
ICAgIC0taW5kZW50czsKKyAgICBjb25zb2xlLmxvZygnJXM8L3NlY3Rpb24+JywgaW5kZW50KCkp
OworICAgIC0taW5kZW50czsKKyAgfSk7CisKKyAgcnVubmVyLm9uKCdwYXNzJywgZnVuY3Rpb24o
dGVzdCl7CisgICAgY29uc29sZS5sb2coJyVzICA8ZHQ+JXM8L2R0PicsIGluZGVudCgpLCB1dGls
cy5lc2NhcGUodGVzdC50aXRsZSkpOworICAgIHZhciBjb2RlID0gdXRpbHMuZXNjYXBlKHV0aWxz
LmNsZWFuKHRlc3QuZm4udG9TdHJpbmcoKSkpOworICAgIGNvbnNvbGUubG9nKCclcyAgPGRkPjxw
cmU+PGNvZGU+JXM8L2NvZGU+PC9wcmU+PC9kZD4nLCBpbmRlbnQoKSwgY29kZSk7CisgIH0pOwor
CisgIHJ1bm5lci5vbignZmFpbCcsIGZ1bmN0aW9uKHRlc3QsIGVycil7CisgICAgY29uc29sZS5s
b2coJyVzICA8ZHQgY2xhc3M9ImVycm9yIj4lczwvZHQ+JywgaW5kZW50KCksIHV0aWxzLmVzY2Fw
ZSh0ZXN0LnRpdGxlKSk7CisgICAgdmFyIGNvZGUgPSB1dGlscy5lc2NhcGUodXRpbHMuY2xlYW4o
dGVzdC5mbi50b1N0cmluZygpKSk7CisgICAgY29uc29sZS5sb2coJyVzICA8ZGQgY2xhc3M9ImVy
cm9yIj48cHJlPjxjb2RlPiVzPC9jb2RlPjwvcHJlPjwvZGQ+JywgaW5kZW50KCksIGNvZGUpOwor
ICAgIGNvbnNvbGUubG9nKCclcyAgPGRkIGNsYXNzPSJlcnJvciI+JXM8L2RkPicsIGluZGVudCgp
LCB1dGlscy5lc2NhcGUoZXJyKSk7CisgIH0pOworfQorCit9KTsgLy8gbW9kdWxlOiByZXBvcnRl
cnMvZG9jLmpzCisKK3JlcXVpcmUucmVnaXN0ZXIoInJlcG9ydGVycy9kb3QuanMiLCBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUpeworCisvKioKKyAqIE1vZHVsZSBkZXBlbmRlbmNp
ZXMuCisgKi8KKwordmFyIEJhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKQorICAsIGNvbG9yID0gQmFz
ZS5jb2xvcjsKKworLyoqCisgKiBFeHBvc2UgYERvdGAuCisgKi8KKworZXhwb3J0cyA9IG1vZHVs
ZS5leHBvcnRzID0gRG90OworCisvKioKKyAqIEluaXRpYWxpemUgYSBuZXcgYERvdGAgbWF0cml4
IHRlc3QgcmVwb3J0ZXIuCisgKgorICogQHBhcmFtIHtSdW5uZXJ9IHJ1bm5lcgorICogQGFwaSBw
dWJsaWMKKyAqLworCitmdW5jdGlvbiBEb3QocnVubmVyKSB7CisgIEJhc2UuY2FsbCh0aGlzLCBy
dW5uZXIpOworCisgIHZhciBzZWxmID0gdGhpcworICAgICwgc3RhdHMgPSB0aGlzLnN0YXRzCisg
ICAgLCB3aWR0aCA9IEJhc2Uud2luZG93LndpZHRoICogLjc1IHwgMAorICAgICwgbiA9IC0xOwor
CisgIHJ1bm5lci5vbignc3RhcnQnLCBmdW5jdGlvbigpeworICAgIHByb2Nlc3Muc3Rkb3V0Lndy
aXRlKCdcbiAgJyk7CisgIH0pOworCisgIHJ1bm5lci5vbigncGVuZGluZycsIGZ1bmN0aW9uKHRl
c3QpeworICAgIGlmICgrK24gJSB3aWR0aCA9PSAwKSBwcm9jZXNzLnN0ZG91dC53cml0ZSgnXG4g
ICcpOworICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGNvbG9yKCdwZW5kaW5nJywgQmFzZS5zeW1i
b2xzLmRvdCkpOworICB9KTsKKworICBydW5uZXIub24oJ3Bhc3MnLCBmdW5jdGlvbih0ZXN0KXsK
KyAgICBpZiAoKytuICUgd2lkdGggPT0gMCkgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1xuICAnKTsK
KyAgICBpZiAoJ3Nsb3cnID09IHRlc3Quc3BlZWQpIHsKKyAgICAgIHByb2Nlc3Muc3Rkb3V0Lndy
aXRlKGNvbG9yKCdicmlnaHQgeWVsbG93JywgQmFzZS5zeW1ib2xzLmRvdCkpOworICAgIH0gZWxz
ZSB7CisgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShjb2xvcih0ZXN0LnNwZWVkLCBCYXNlLnN5
bWJvbHMuZG90KSk7CisgICAgfQorICB9KTsKKworICBydW5uZXIub24oJ2ZhaWwnLCBmdW5jdGlv
bih0ZXN0LCBlcnIpeworICAgIGlmICgrK24gJSB3aWR0aCA9PSAwKSBwcm9jZXNzLnN0ZG91dC53
cml0ZSgnXG4gICcpOworICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGNvbG9yKCdmYWlsJywgQmFz
ZS5zeW1ib2xzLmRvdCkpOworICB9KTsKKworICBydW5uZXIub24oJ2VuZCcsIGZ1bmN0aW9uKCl7
CisgICAgY29uc29sZS5sb2coKTsKKyAgICBzZWxmLmVwaWxvZ3VlKCk7CisgIH0pOworfQorCisv
KioKKyAqIEluaGVyaXQgZnJvbSBgQmFzZS5wcm90b3R5cGVgLgorICovCisKK2Z1bmN0aW9uIEYo
KXt9OworRi5wcm90b3R5cGUgPSBCYXNlLnByb3RvdHlwZTsKK0RvdC5wcm90b3R5cGUgPSBuZXcg
RjsKK0RvdC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBEb3Q7CisKKworfSk7IC8vIG1vZHVsZTog
cmVwb3J0ZXJzL2RvdC5qcworCityZXF1aXJlLnJlZ2lzdGVyKCJyZXBvcnRlcnMvaHRtbC1jb3Yu
anMiLCBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUpeworCisvKioKKyAqIE1vZHVs
ZSBkZXBlbmRlbmNpZXMuCisgKi8KKwordmFyIEpTT05Db3YgPSByZXF1aXJlKCcuL2pzb24tY292
JykKKyAgLCBmcyA9IHJlcXVpcmUoJ2Jyb3dzZXIvZnMnKTsKKworLyoqCisgKiBFeHBvc2UgYEhU
TUxDb3ZgLgorICovCisKK2V4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IEhUTUxDb3Y7CisKKy8q
KgorICogSW5pdGlhbGl6ZSBhIG5ldyBgSnNDb3ZlcmFnZWAgcmVwb3J0ZXIuCisgKgorICogQHBh
cmFtIHtSdW5uZXJ9IHJ1bm5lcgorICogQGFwaSBwdWJsaWMKKyAqLworCitmdW5jdGlvbiBIVE1M
Q292KHJ1bm5lcikgeworICB2YXIgamFkZSA9IHJlcXVpcmUoJ2phZGUnKQorICAgICwgZmlsZSA9
IF9fZGlybmFtZSArICcvdGVtcGxhdGVzL2NvdmVyYWdlLmphZGUnCisgICAgLCBzdHIgPSBmcy5y
ZWFkRmlsZVN5bmMoZmlsZSwgJ3V0ZjgnKQorICAgICwgZm4gPSBqYWRlLmNvbXBpbGUoc3RyLCB7
IGZpbGVuYW1lOiBmaWxlIH0pCisgICAgLCBzZWxmID0gdGhpczsKKworICBKU09OQ292LmNhbGwo
dGhpcywgcnVubmVyLCBmYWxzZSk7CisKKyAgcnVubmVyLm9uKCdlbmQnLCBmdW5jdGlvbigpewor
ICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGZuKHsKKyAgICAgICAgY292OiBzZWxmLmNvdgorICAg
ICAgLCBjb3ZlcmFnZUNsYXNzOiBjb3ZlcmFnZUNsYXNzCisgICAgfSkpOworICB9KTsKK30KKwor
LyoqCisgKiBSZXR1cm4gY292ZXJhZ2UgY2xhc3MgZm9yIGBuYC4KKyAqCisgKiBAcmV0dXJuIHtT
dHJpbmd9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitmdW5jdGlvbiBjb3ZlcmFnZUNsYXNzKG4p
IHsKKyAgaWYgKG4gPj0gNzUpIHJldHVybiAnaGlnaCc7CisgIGlmIChuID49IDUwKSByZXR1cm4g
J21lZGl1bSc7CisgIGlmIChuID49IDI1KSByZXR1cm4gJ2xvdyc7CisgIHJldHVybiAndGVycmli
bGUnOworfQorfSk7IC8vIG1vZHVsZTogcmVwb3J0ZXJzL2h0bWwtY292LmpzCisKK3JlcXVpcmUu
cmVnaXN0ZXIoInJlcG9ydGVycy9odG1sLmpzIiwgZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBy
ZXF1aXJlKXsKKworLyoqCisgKiBNb2R1bGUgZGVwZW5kZW5jaWVzLgorICovCisKK3ZhciBCYXNl
ID0gcmVxdWlyZSgnLi9iYXNlJykKKyAgLCB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJykKKyAg
LCBQcm9ncmVzcyA9IHJlcXVpcmUoJy4uL2Jyb3dzZXIvcHJvZ3Jlc3MnKQorICAsIGVzY2FwZSA9
IHV0aWxzLmVzY2FwZTsKKworLyoqCisgKiBTYXZlIHRpbWVyIHJlZmVyZW5jZXMgdG8gYXZvaWQg
U2lub24gaW50ZXJmZXJpbmcgKHNlZSBHSC0yMzcpLgorICovCisKK3ZhciBEYXRlID0gZ2xvYmFs
LkRhdGUKKyAgLCBzZXRUaW1lb3V0ID0gZ2xvYmFsLnNldFRpbWVvdXQKKyAgLCBzZXRJbnRlcnZh
bCA9IGdsb2JhbC5zZXRJbnRlcnZhbAorICAsIGNsZWFyVGltZW91dCA9IGdsb2JhbC5jbGVhclRp
bWVvdXQKKyAgLCBjbGVhckludGVydmFsID0gZ2xvYmFsLmNsZWFySW50ZXJ2YWw7CisKKy8qKgor
ICogRXhwb3NlIGBIVE1MYC4KKyAqLworCitleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBIVE1M
OworCisvKioKKyAqIFN0YXRzIHRlbXBsYXRlLgorICovCisKK3ZhciBzdGF0c1RlbXBsYXRlID0g
Jzx1bCBpZD0ibW9jaGEtc3RhdHMiPicKKyAgKyAnPGxpIGNsYXNzPSJwcm9ncmVzcyI+PGNhbnZh
cyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiPjwvY2FudmFzPjwvbGk+JworICArICc8bGkgY2xhc3M9
InBhc3NlcyI+PGEgaHJlZj0iIyI+cGFzc2VzOjwvYT4gPGVtPjA8L2VtPjwvbGk+JworICArICc8
bGkgY2xhc3M9ImZhaWx1cmVzIj48YSBocmVmPSIjIj5mYWlsdXJlczo8L2E+IDxlbT4wPC9lbT48
L2xpPicKKyAgKyAnPGxpIGNsYXNzPSJkdXJhdGlvbiI+ZHVyYXRpb246IDxlbT4wPC9lbT5zPC9s
aT4nCisgICsgJzwvdWw+JzsKKworLyoqCisgKiBJbml0aWFsaXplIGEgbmV3IGBIVE1MYCByZXBv
cnRlci4KKyAqCisgKiBAcGFyYW0ge1J1bm5lcn0gcnVubmVyCisgKiBAYXBpIHB1YmxpYworICov
CisKK2Z1bmN0aW9uIEhUTUwocnVubmVyKSB7CisgIEJhc2UuY2FsbCh0aGlzLCBydW5uZXIpOwor
CisgIHZhciBzZWxmID0gdGhpcworICAgICwgc3RhdHMgPSB0aGlzLnN0YXRzCisgICAgLCB0b3Rh
bCA9IHJ1bm5lci50b3RhbAorICAgICwgc3RhdCA9IGZyYWdtZW50KHN0YXRzVGVtcGxhdGUpCisg
ICAgLCBpdGVtcyA9IHN0YXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xpJykKKyAgICAsIHBhc3Nl
cyA9IGl0ZW1zWzFdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdlbScpWzBdCisgICAgLCBwYXNzZXNM
aW5rID0gaXRlbXNbMV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKVswXQorICAgICwgZmFpbHVy
ZXMgPSBpdGVtc1syXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZW0nKVswXQorICAgICwgZmFpbHVy
ZXNMaW5rID0gaXRlbXNbMl0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKVswXQorICAgICwgZHVy
YXRpb24gPSBpdGVtc1szXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZW0nKVswXQorICAgICwgY2Fu
dmFzID0gc3RhdC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnY2FudmFzJylbMF0KKyAgICAsIHJlcG9y
dCA9IGZyYWdtZW50KCc8dWwgaWQ9Im1vY2hhLXJlcG9ydCI+PC91bD4nKQorICAgICwgc3RhY2sg
PSBbcmVwb3J0XQorICAgICwgcHJvZ3Jlc3MKKyAgICAsIGN0eAorICAgICwgcm9vdCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdtb2NoYScpOworCisgIGlmIChjYW52YXMuZ2V0Q29udGV4dCkg
eworICAgIHZhciByYXRpbyA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7CisgICAgY2Fu
dmFzLnN0eWxlLndpZHRoID0gY2FudmFzLndpZHRoOworICAgIGNhbnZhcy5zdHlsZS5oZWlnaHQg
PSBjYW52YXMuaGVpZ2h0OworICAgIGNhbnZhcy53aWR0aCAqPSByYXRpbzsKKyAgICBjYW52YXMu
aGVpZ2h0ICo9IHJhdGlvOworICAgIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworICAg
IGN0eC5zY2FsZShyYXRpbywgcmF0aW8pOworICAgIHByb2dyZXNzID0gbmV3IFByb2dyZXNzOwor
ICB9CisKKyAgaWYgKCFyb290KSByZXR1cm4gZXJyb3IoJyNtb2NoYSBkaXYgbWlzc2luZywgYWRk
IGl0IHRvIHlvdXIgZG9jdW1lbnQnKTsKKworICAvLyBwYXNzIHRvZ2dsZQorICBvbihwYXNzZXNM
aW5rLCAnY2xpY2snLCBmdW5jdGlvbigpeworICAgIHVuaGlkZSgpOworICAgIHZhciBuYW1lID0g
L3Bhc3MvLnRlc3QocmVwb3J0LmNsYXNzTmFtZSkgPyAnJyA6ICcgcGFzcyc7CisgICAgcmVwb3J0
LmNsYXNzTmFtZSA9IHJlcG9ydC5jbGFzc05hbWUucmVwbGFjZSgvZmFpbHxwYXNzL2csICcnKSAr
IG5hbWU7CisgICAgaWYgKHJlcG9ydC5jbGFzc05hbWUudHJpbSgpKSBoaWRlU3VpdGVzV2l0aG91
dCgndGVzdCBwYXNzJyk7CisgIH0pOworCisgIC8vIGZhaWx1cmUgdG9nZ2xlCisgIG9uKGZhaWx1
cmVzTGluaywgJ2NsaWNrJywgZnVuY3Rpb24oKXsKKyAgICB1bmhpZGUoKTsKKyAgICB2YXIgbmFt
ZSA9IC9mYWlsLy50ZXN0KHJlcG9ydC5jbGFzc05hbWUpID8gJycgOiAnIGZhaWwnOworICAgIHJl
cG9ydC5jbGFzc05hbWUgPSByZXBvcnQuY2xhc3NOYW1lLnJlcGxhY2UoL2ZhaWx8cGFzcy9nLCAn
JykgKyBuYW1lOworICAgIGlmIChyZXBvcnQuY2xhc3NOYW1lLnRyaW0oKSkgaGlkZVN1aXRlc1dp
dGhvdXQoJ3Rlc3QgZmFpbCcpOworICB9KTsKKworICByb290LmFwcGVuZENoaWxkKHN0YXQpOwor
ICByb290LmFwcGVuZENoaWxkKHJlcG9ydCk7CisKKyAgaWYgKHByb2dyZXNzKSBwcm9ncmVzcy5z
aXplKDQwKTsKKworICBydW5uZXIub24oJ3N1aXRlJywgZnVuY3Rpb24oc3VpdGUpeworICAgIGlm
IChzdWl0ZS5yb290KSByZXR1cm47CisKKyAgICAvLyBzdWl0ZQorICAgIHZhciB1cmwgPSBzZWxm
LnN1aXRlVVJMKHN1aXRlKTsKKyAgICB2YXIgZWwgPSBmcmFnbWVudCgnPGxpIGNsYXNzPSJzdWl0
ZSI+PGgxPjxhIGhyZWY9IiVzIj4lczwvYT48L2gxPjwvbGk+JywgdXJsLCBlc2NhcGUoc3VpdGUu
dGl0bGUpKTsKKworICAgIC8vIGNvbnRhaW5lcgorICAgIHN0YWNrWzBdLmFwcGVuZENoaWxkKGVs
KTsKKyAgICBzdGFjay51bnNoaWZ0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3VsJykpOworICAg
IGVsLmFwcGVuZENoaWxkKHN0YWNrWzBdKTsKKyAgfSk7CisKKyAgcnVubmVyLm9uKCdzdWl0ZSBl
bmQnLCBmdW5jdGlvbihzdWl0ZSl7CisgICAgaWYgKHN1aXRlLnJvb3QpIHJldHVybjsKKyAgICBz
dGFjay5zaGlmdCgpOworICB9KTsKKworICBydW5uZXIub24oJ2ZhaWwnLCBmdW5jdGlvbih0ZXN0
LCBlcnIpeworICAgIGlmICgnaG9vaycgPT0gdGVzdC50eXBlKSBydW5uZXIuZW1pdCgndGVzdCBl
bmQnLCB0ZXN0KTsKKyAgfSk7CisKKyAgcnVubmVyLm9uKCd0ZXN0IGVuZCcsIGZ1bmN0aW9uKHRl
c3QpeworICAgIC8vIFRPRE86IGFkZCB0byBzdGF0cworICAgIHZhciBwZXJjZW50ID0gc3RhdHMu
dGVzdHMgLyB0aGlzLnRvdGFsICogMTAwIHwgMDsKKyAgICBpZiAocHJvZ3Jlc3MpIHByb2dyZXNz
LnVwZGF0ZShwZXJjZW50KS5kcmF3KGN0eCk7CisKKyAgICAvLyB1cGRhdGUgc3RhdHMKKyAgICB2
YXIgbXMgPSBuZXcgRGF0ZSAtIHN0YXRzLnN0YXJ0OworICAgIHRleHQocGFzc2VzLCBzdGF0cy5w
YXNzZXMpOworICAgIHRleHQoZmFpbHVyZXMsIHN0YXRzLmZhaWx1cmVzKTsKKyAgICB0ZXh0KGR1
cmF0aW9uLCAobXMgLyAxMDAwKS50b0ZpeGVkKDIpKTsKKworICAgIC8vIHRlc3QKKyAgICBpZiAo
J3Bhc3NlZCcgPT0gdGVzdC5zdGF0ZSkgeworICAgICAgdmFyIHVybCA9IHNlbGYudGVzdFVSTCh0
ZXN0KTsKKyAgICAgIHZhciBlbCA9IGZyYWdtZW50KCc8bGkgY2xhc3M9InRlc3QgcGFzcyAlZSI+
PGgyPiVlPHNwYW4gY2xhc3M9ImR1cmF0aW9uIj4lZW1zPC9zcGFuPiA8YSBocmVmPSIlcyIgY2xh
c3M9InJlcGxheSI+4oCjPC9hPjwvaDI+PC9saT4nLCB0ZXN0LnNwZWVkLCB0ZXN0LnRpdGxlLCB0
ZXN0LmR1cmF0aW9uLCB1cmwpOworICAgIH0gZWxzZSBpZiAodGVzdC5wZW5kaW5nKSB7CisgICAg
ICB2YXIgZWwgPSBmcmFnbWVudCgnPGxpIGNsYXNzPSJ0ZXN0IHBhc3MgcGVuZGluZyI+PGgyPiVl
PC9oMj48L2xpPicsIHRlc3QudGl0bGUpOworICAgIH0gZWxzZSB7CisgICAgICB2YXIgZWwgPSBm
cmFnbWVudCgnPGxpIGNsYXNzPSJ0ZXN0IGZhaWwiPjxoMj4lZSA8YSBocmVmPSI/Z3JlcD0lZSIg
Y2xhc3M9InJlcGxheSI+4oCjPC9hPjwvaDI+PC9saT4nLCB0ZXN0LnRpdGxlLCBlbmNvZGVVUklD
b21wb25lbnQodGVzdC5mdWxsVGl0bGUoKSkpOworICAgICAgdmFyIHN0ciA9IHRlc3QuZXJyLnN0
YWNrIHx8IHRlc3QuZXJyLnRvU3RyaW5nKCk7CisKKyAgICAgIC8vIEZGIC8gT3BlcmEgZG8gbm90
IGFkZCB0aGUgbWVzc2FnZQorICAgICAgaWYgKCF+c3RyLmluZGV4T2YodGVzdC5lcnIubWVzc2Fn
ZSkpIHsKKyAgICAgICAgc3RyID0gdGVzdC5lcnIubWVzc2FnZSArICdcbicgKyBzdHI7CisgICAg
ICB9CisKKyAgICAgIC8vIDw9SUU3IHN0cmluZ2lmaWVzIHRvIFtPYmplY3QgRXJyb3JdLiBTaW5j
ZSBpdCBjYW4gYmUgb3ZlcmxvYWRlZCwgd2UKKyAgICAgIC8vIGNoZWNrIGZvciB0aGUgcmVzdWx0
IG9mIHRoZSBzdHJpbmdpZnlpbmcuCisgICAgICBpZiAoJ1tvYmplY3QgRXJyb3JdJyA9PSBzdHIp
IHN0ciA9IHRlc3QuZXJyLm1lc3NhZ2U7CisKKyAgICAgIC8vIFNhZmFyaSBkb2Vzbid0IGdpdmUg
eW91IGEgc3RhY2suIExldCdzIGF0IGxlYXN0IHByb3ZpZGUgYSBzb3VyY2UgbGluZS4KKyAgICAg
IGlmICghdGVzdC5lcnIuc3RhY2sgJiYgdGVzdC5lcnIuc291cmNlVVJMICYmIHRlc3QuZXJyLmxp
bmUgIT09IHVuZGVmaW5lZCkgeworICAgICAgICBzdHIgKz0gIlxuKCIgKyB0ZXN0LmVyci5zb3Vy
Y2VVUkwgKyAiOiIgKyB0ZXN0LmVyci5saW5lICsgIikiOworICAgICAgfQorCisgICAgICBlbC5h
cHBlbmRDaGlsZChmcmFnbWVudCgnPHByZSBjbGFzcz0iZXJyb3IiPiVlPC9wcmU+Jywgc3RyKSk7
CisgICAgfQorCisgICAgLy8gdG9nZ2xlIGNvZGUKKyAgICAvLyBUT0RPOiBkZWZlcgorICAgIGlm
ICghdGVzdC5wZW5kaW5nKSB7CisgICAgICB2YXIgaDIgPSBlbC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgnaDInKVswXTsKKworICAgICAgb24oaDIsICdjbGljaycsIGZ1bmN0aW9uKCl7CisgICAgICAg
IHByZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnID09IHByZS5zdHlsZS5kaXNwbGF5CisgICAgICAg
ICAgPyAnYmxvY2snCisgICAgICAgICAgOiAnbm9uZSc7CisgICAgICB9KTsKKworICAgICAgdmFy
IHByZSA9IGZyYWdtZW50KCc8cHJlPjxjb2RlPiVlPC9jb2RlPjwvcHJlPicsIHV0aWxzLmNsZWFu
KHRlc3QuZm4udG9TdHJpbmcoKSkpOworICAgICAgZWwuYXBwZW5kQ2hpbGQocHJlKTsKKyAgICAg
IHByZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworICAgIH0KKworICAgIC8vIERvbid0IGNhbGwg
LmFwcGVuZENoaWxkIGlmICNtb2NoYS1yZXBvcnQgd2FzIGFscmVhZHkgLnNoaWZ0KCknZWQgb2Zm
IHRoZSBzdGFjay4KKyAgICBpZiAoc3RhY2tbMF0pIHN0YWNrWzBdLmFwcGVuZENoaWxkKGVsKTsK
KyAgfSk7Cit9CisKKy8qKgorICogUHJvdmlkZSBzdWl0ZSBVUkwKKyAqCisgKiBAcGFyYW0ge09i
amVjdH0gW3N1aXRlXQorICovCisKK0hUTUwucHJvdG90eXBlLnN1aXRlVVJMID0gZnVuY3Rpb24o
c3VpdGUpeworICByZXR1cm4gJz9ncmVwPScgKyBlbmNvZGVVUklDb21wb25lbnQoc3VpdGUuZnVs
bFRpdGxlKCkpOworfTsKKworLyoqCisgKiBQcm92aWRlIHRlc3QgVVJMCisgKgorICogQHBhcmFt
IHtPYmplY3R9IFt0ZXN0XQorICovCisKK0hUTUwucHJvdG90eXBlLnRlc3RVUkwgPSBmdW5jdGlv
bih0ZXN0KXsKKyAgcmV0dXJuICc/Z3JlcD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHRlc3QuZnVs
bFRpdGxlKCkpOworfTsKKworLyoqCisgKiBEaXNwbGF5IGVycm9yIGBtc2dgLgorICovCisKK2Z1
bmN0aW9uIGVycm9yKG1zZykgeworICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYWdtZW50
KCc8ZGl2IGlkPSJtb2NoYS1lcnJvciI+JXM8L2Rpdj4nLCBtc2cpKTsKK30KKworLyoqCisgKiBS
ZXR1cm4gYSBET00gZnJhZ21lbnQgZnJvbSBgaHRtbGAuCisgKi8KKworZnVuY3Rpb24gZnJhZ21l
bnQoaHRtbCkgeworICB2YXIgYXJncyA9IGFyZ3VtZW50cworICAgICwgZGl2ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2JykKKyAgICAsIGkgPSAxOworCisgIGRpdi5pbm5lckhUTUwgPSBo
dG1sLnJlcGxhY2UoLyUoW3NlXSkvZywgZnVuY3Rpb24oXywgdHlwZSl7CisgICAgc3dpdGNoICh0
eXBlKSB7CisgICAgICBjYXNlICdzJzogcmV0dXJuIFN0cmluZyhhcmdzW2krK10pOworICAgICAg
Y2FzZSAnZSc6IHJldHVybiBlc2NhcGUoYXJnc1tpKytdKTsKKyAgICB9CisgIH0pOworCisgIHJl
dHVybiBkaXYuZmlyc3RDaGlsZDsKK30KKworLyoqCisgKiBDaGVjayBmb3Igc3VpdGVzIHRoYXQg
ZG8gbm90IGhhdmUgZWxlbWVudHMKKyAqIHdpdGggYGNsYXNzbmFtZWAsIGFuZCBoaWRlIHRoZW0u
CisgKi8KKworZnVuY3Rpb24gaGlkZVN1aXRlc1dpdGhvdXQoY2xhc3NuYW1lKSB7CisgIHZhciBz
dWl0ZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzdWl0ZScpOworICBmb3Ig
KHZhciBpID0gMDsgaSA8IHN1aXRlcy5sZW5ndGg7IGkrKykgeworICAgIHZhciBlbHMgPSBzdWl0
ZXNbaV0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjbGFzc25hbWUpOworICAgIGlmICgwID09IGVs
cy5sZW5ndGgpIHN1aXRlc1tpXS5jbGFzc05hbWUgKz0gJyBoaWRkZW4nOworICB9Cit9CisKKy8q
KgorICogVW5oaWRlIC5oaWRkZW4gc3VpdGVzLgorICovCisKK2Z1bmN0aW9uIHVuaGlkZSgpIHsK
KyAgdmFyIGVscyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3N1aXRlIGhpZGRl
bicpOworICBmb3IgKHZhciBpID0gMDsgaSA8IGVscy5sZW5ndGg7ICsraSkgeworICAgIGVsc1tp
XS5jbGFzc05hbWUgPSBlbHNbaV0uY2xhc3NOYW1lLnJlcGxhY2UoJ3N1aXRlIGhpZGRlbicsICdz
dWl0ZScpOworICB9Cit9CisKKy8qKgorICogU2V0IGBlbGAgdGV4dCB0byBgc3RyYC4KKyAqLwor
CitmdW5jdGlvbiB0ZXh0KGVsLCBzdHIpIHsKKyAgaWYgKGVsLnRleHRDb250ZW50KSB7CisgICAg
ZWwudGV4dENvbnRlbnQgPSBzdHI7CisgIH0gZWxzZSB7CisgICAgZWwuaW5uZXJUZXh0ID0gc3Ry
OworICB9Cit9CisKKy8qKgorICogTGlzdGVuIG9uIGBldmVudGAgd2l0aCBjYWxsYmFjayBgZm5g
LgorICovCisKK2Z1bmN0aW9uIG9uKGVsLCBldmVudCwgZm4pIHsKKyAgaWYgKGVsLmFkZEV2ZW50
TGlzdGVuZXIpIHsKKyAgICBlbC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBmbiwgZmFsc2UpOwor
ICB9IGVsc2UgeworICAgIGVsLmF0dGFjaEV2ZW50KCdvbicgKyBldmVudCwgZm4pOworICB9Cit9
CisKK30pOyAvLyBtb2R1bGU6IHJlcG9ydGVycy9odG1sLmpzCisKK3JlcXVpcmUucmVnaXN0ZXIo
InJlcG9ydGVycy9pbmRleC5qcyIsIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7
CisKK2V4cG9ydHMuQmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpOworZXhwb3J0cy5Eb3QgPSByZXF1
aXJlKCcuL2RvdCcpOworZXhwb3J0cy5Eb2MgPSByZXF1aXJlKCcuL2RvYycpOworZXhwb3J0cy5U
QVAgPSByZXF1aXJlKCcuL3RhcCcpOworZXhwb3J0cy5KU09OID0gcmVxdWlyZSgnLi9qc29uJyk7
CitleHBvcnRzLkhUTUwgPSByZXF1aXJlKCcuL2h0bWwnKTsKK2V4cG9ydHMuTGlzdCA9IHJlcXVp
cmUoJy4vbGlzdCcpOworZXhwb3J0cy5NaW4gPSByZXF1aXJlKCcuL21pbicpOworZXhwb3J0cy5T
cGVjID0gcmVxdWlyZSgnLi9zcGVjJyk7CitleHBvcnRzLk55YW4gPSByZXF1aXJlKCcuL255YW4n
KTsKK2V4cG9ydHMuWFVuaXQgPSByZXF1aXJlKCcuL3h1bml0Jyk7CitleHBvcnRzLk1hcmtkb3du
ID0gcmVxdWlyZSgnLi9tYXJrZG93bicpOworZXhwb3J0cy5Qcm9ncmVzcyA9IHJlcXVpcmUoJy4v
cHJvZ3Jlc3MnKTsKK2V4cG9ydHMuTGFuZGluZyA9IHJlcXVpcmUoJy4vbGFuZGluZycpOworZXhw
b3J0cy5KU09OQ292ID0gcmVxdWlyZSgnLi9qc29uLWNvdicpOworZXhwb3J0cy5IVE1MQ292ID0g
cmVxdWlyZSgnLi9odG1sLWNvdicpOworZXhwb3J0cy5KU09OU3RyZWFtID0gcmVxdWlyZSgnLi9q
c29uLXN0cmVhbScpOworCit9KTsgLy8gbW9kdWxlOiByZXBvcnRlcnMvaW5kZXguanMKKworcmVx
dWlyZS5yZWdpc3RlcigicmVwb3J0ZXJzL2pzb24tY292LmpzIiwgZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzLCByZXF1aXJlKXsKKworLyoqCisgKiBNb2R1bGUgZGVwZW5kZW5jaWVzLgorICovCisK
K3ZhciBCYXNlID0gcmVxdWlyZSgnLi9iYXNlJyk7CisKKy8qKgorICogRXhwb3NlIGBKU09OQ292
YC4KKyAqLworCitleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBKU09OQ292OworCisvKioKKyAq
IEluaXRpYWxpemUgYSBuZXcgYEpzQ292ZXJhZ2VgIHJlcG9ydGVyLgorICoKKyAqIEBwYXJhbSB7
UnVubmVyfSBydW5uZXIKKyAqIEBwYXJhbSB7Qm9vbGVhbn0gb3V0cHV0CisgKiBAYXBpIHB1Ymxp
YworICovCisKK2Z1bmN0aW9uIEpTT05Db3YocnVubmVyLCBvdXRwdXQpIHsKKyAgdmFyIHNlbGYg
PSB0aGlzCisgICAgLCBvdXRwdXQgPSAxID09IGFyZ3VtZW50cy5sZW5ndGggPyB0cnVlIDogb3V0
cHV0OworCisgIEJhc2UuY2FsbCh0aGlzLCBydW5uZXIpOworCisgIHZhciB0ZXN0cyA9IFtdCisg
ICAgLCBmYWlsdXJlcyA9IFtdCisgICAgLCBwYXNzZXMgPSBbXTsKKworICBydW5uZXIub24oJ3Rl
c3QgZW5kJywgZnVuY3Rpb24odGVzdCl7CisgICAgdGVzdHMucHVzaCh0ZXN0KTsKKyAgfSk7CisK
KyAgcnVubmVyLm9uKCdwYXNzJywgZnVuY3Rpb24odGVzdCl7CisgICAgcGFzc2VzLnB1c2godGVz
dCk7CisgIH0pOworCisgIHJ1bm5lci5vbignZmFpbCcsIGZ1bmN0aW9uKHRlc3QpeworICAgIGZh
aWx1cmVzLnB1c2godGVzdCk7CisgIH0pOworCisgIHJ1bm5lci5vbignZW5kJywgZnVuY3Rpb24o
KXsKKyAgICB2YXIgY292ID0gZ2xvYmFsLl8kanNjb3ZlcmFnZSB8fCB7fTsKKyAgICB2YXIgcmVz
dWx0ID0gc2VsZi5jb3YgPSBtYXAoY292KTsKKyAgICByZXN1bHQuc3RhdHMgPSBzZWxmLnN0YXRz
OworICAgIHJlc3VsdC50ZXN0cyA9IHRlc3RzLm1hcChjbGVhbik7CisgICAgcmVzdWx0LmZhaWx1
cmVzID0gZmFpbHVyZXMubWFwKGNsZWFuKTsKKyAgICByZXN1bHQucGFzc2VzID0gcGFzc2VzLm1h
cChjbGVhbik7CisgICAgaWYgKCFvdXRwdXQpIHJldHVybjsKKyAgICBwcm9jZXNzLnN0ZG91dC53
cml0ZShKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIgKSk7CisgIH0pOworfQorCisvKioK
KyAqIE1hcCBqc2NvdmVyYWdlIGRhdGEgdG8gYSBKU09OIHN0cnVjdHVyZQorICogc3VpdGFibGUg
Zm9yIHJlcG9ydGluZy4KKyAqCisgKiBAcGFyYW0ge09iamVjdH0gY292CisgKiBAcmV0dXJuIHtP
YmplY3R9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitmdW5jdGlvbiBtYXAoY292KSB7CisgIHZh
ciByZXQgPSB7CisgICAgICBpbnN0cnVtZW50YXRpb246ICdub2RlLWpzY292ZXJhZ2UnCisgICAg
LCBzbG9jOiAwCisgICAgLCBoaXRzOiAwCisgICAgLCBtaXNzZXM6IDAKKyAgICAsIGNvdmVyYWdl
OiAwCisgICAgLCBmaWxlczogW10KKyAgfTsKKworICBmb3IgKHZhciBmaWxlbmFtZSBpbiBjb3Yp
IHsKKyAgICB2YXIgZGF0YSA9IGNvdmVyYWdlKGZpbGVuYW1lLCBjb3ZbZmlsZW5hbWVdKTsKKyAg
ICByZXQuZmlsZXMucHVzaChkYXRhKTsKKyAgICByZXQuaGl0cyArPSBkYXRhLmhpdHM7CisgICAg
cmV0Lm1pc3NlcyArPSBkYXRhLm1pc3NlczsKKyAgICByZXQuc2xvYyArPSBkYXRhLnNsb2M7Cisg
IH0KKworICByZXQuZmlsZXMuc29ydChmdW5jdGlvbihhLCBiKSB7CisgICAgcmV0dXJuIGEuZmls
ZW5hbWUubG9jYWxlQ29tcGFyZShiLmZpbGVuYW1lKTsKKyAgfSk7CisKKyAgaWYgKHJldC5zbG9j
ID4gMCkgeworICAgIHJldC5jb3ZlcmFnZSA9IChyZXQuaGl0cyAvIHJldC5zbG9jKSAqIDEwMDsK
KyAgfQorCisgIHJldHVybiByZXQ7Cit9OworCisvKioKKyAqIE1hcCBqc2NvdmVyYWdlIGRhdGEg
Zm9yIGEgc2luZ2xlIHNvdXJjZSBmaWxlCisgKiB0byBhIEpTT04gc3RydWN0dXJlIHN1aXRhYmxl
IGZvciByZXBvcnRpbmcuCisgKgorICogQHBhcmFtIHtTdHJpbmd9IGZpbGVuYW1lIG5hbWUgb2Yg
dGhlIHNvdXJjZSBmaWxlCisgKiBAcGFyYW0ge09iamVjdH0gZGF0YSBqc2NvdmVyYWdlIGNvdmVy
YWdlIGRhdGEKKyAqIEByZXR1cm4ge09iamVjdH0KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK2Z1
bmN0aW9uIGNvdmVyYWdlKGZpbGVuYW1lLCBkYXRhKSB7CisgIHZhciByZXQgPSB7CisgICAgZmls
ZW5hbWU6IGZpbGVuYW1lLAorICAgIGNvdmVyYWdlOiAwLAorICAgIGhpdHM6IDAsCisgICAgbWlz
c2VzOiAwLAorICAgIHNsb2M6IDAsCisgICAgc291cmNlOiB7fQorICB9OworCisgIGRhdGEuc291
cmNlLmZvckVhY2goZnVuY3Rpb24obGluZSwgbnVtKXsKKyAgICBudW0rKzsKKworICAgIGlmIChk
YXRhW251bV0gPT09IDApIHsKKyAgICAgIHJldC5taXNzZXMrKzsKKyAgICAgIHJldC5zbG9jKys7
CisgICAgfSBlbHNlIGlmIChkYXRhW251bV0gIT09IHVuZGVmaW5lZCkgeworICAgICAgcmV0Lmhp
dHMrKzsKKyAgICAgIHJldC5zbG9jKys7CisgICAgfQorCisgICAgcmV0LnNvdXJjZVtudW1dID0g
eworICAgICAgICBzb3VyY2U6IGxpbmUKKyAgICAgICwgY292ZXJhZ2U6IGRhdGFbbnVtXSA9PT0g
dW5kZWZpbmVkCisgICAgICAgID8gJycKKyAgICAgICAgOiBkYXRhW251bV0KKyAgICB9OworICB9
KTsKKworICByZXQuY292ZXJhZ2UgPSByZXQuaGl0cyAvIHJldC5zbG9jICogMTAwOworCisgIHJl
dHVybiByZXQ7Cit9CisKKy8qKgorICogUmV0dXJuIGEgcGxhaW4tb2JqZWN0IHJlcHJlc2VudGF0
aW9uIG9mIGB0ZXN0YAorICogZnJlZSBvZiBjeWNsaWMgcHJvcGVydGllcyBldGMuCisgKgorICog
QHBhcmFtIHtPYmplY3R9IHRlc3QKKyAqIEByZXR1cm4ge09iamVjdH0KKyAqIEBhcGkgcHJpdmF0
ZQorICovCisKK2Z1bmN0aW9uIGNsZWFuKHRlc3QpIHsKKyAgcmV0dXJuIHsKKyAgICAgIHRpdGxl
OiB0ZXN0LnRpdGxlCisgICAgLCBmdWxsVGl0bGU6IHRlc3QuZnVsbFRpdGxlKCkKKyAgICAsIGR1
cmF0aW9uOiB0ZXN0LmR1cmF0aW9uCisgIH0KK30KKworfSk7IC8vIG1vZHVsZTogcmVwb3J0ZXJz
L2pzb24tY292LmpzCisKK3JlcXVpcmUucmVnaXN0ZXIoInJlcG9ydGVycy9qc29uLXN0cmVhbS5q
cyIsIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7CisKKy8qKgorICogTW9kdWxl
IGRlcGVuZGVuY2llcy4KKyAqLworCit2YXIgQmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpCisgICwg
Y29sb3IgPSBCYXNlLmNvbG9yOworCisvKioKKyAqIEV4cG9zZSBgTGlzdGAuCisgKi8KKworZXhw
b3J0cyA9IG1vZHVsZS5leHBvcnRzID0gTGlzdDsKKworLyoqCisgKiBJbml0aWFsaXplIGEgbmV3
IGBMaXN0YCB0ZXN0IHJlcG9ydGVyLgorICoKKyAqIEBwYXJhbSB7UnVubmVyfSBydW5uZXIKKyAq
IEBhcGkgcHVibGljCisgKi8KKworZnVuY3Rpb24gTGlzdChydW5uZXIpIHsKKyAgQmFzZS5jYWxs
KHRoaXMsIHJ1bm5lcik7CisKKyAgdmFyIHNlbGYgPSB0aGlzCisgICAgLCBzdGF0cyA9IHRoaXMu
c3RhdHMKKyAgICAsIHRvdGFsID0gcnVubmVyLnRvdGFsOworCisgIHJ1bm5lci5vbignc3RhcnQn
LCBmdW5jdGlvbigpeworICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KFsnc3RhcnQnLCB7
IHRvdGFsOiB0b3RhbCB9XSkpOworICB9KTsKKworICBydW5uZXIub24oJ3Bhc3MnLCBmdW5jdGlv
bih0ZXN0KXsKKyAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShbJ3Bhc3MnLCBjbGVhbih0
ZXN0KV0pKTsKKyAgfSk7CisKKyAgcnVubmVyLm9uKCdmYWlsJywgZnVuY3Rpb24odGVzdCwgZXJy
KXsKKyAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShbJ2ZhaWwnLCBjbGVhbih0ZXN0KV0p
KTsKKyAgfSk7CisKKyAgcnVubmVyLm9uKCdlbmQnLCBmdW5jdGlvbigpeworICAgIHByb2Nlc3Mu
c3Rkb3V0LndyaXRlKEpTT04uc3RyaW5naWZ5KFsnZW5kJywgc2VsZi5zdGF0c10pKTsKKyAgfSk7
Cit9CisKKy8qKgorICogUmV0dXJuIGEgcGxhaW4tb2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIGB0
ZXN0YAorICogZnJlZSBvZiBjeWNsaWMgcHJvcGVydGllcyBldGMuCisgKgorICogQHBhcmFtIHtP
YmplY3R9IHRlc3QKKyAqIEByZXR1cm4ge09iamVjdH0KKyAqIEBhcGkgcHJpdmF0ZQorICovCisK
K2Z1bmN0aW9uIGNsZWFuKHRlc3QpIHsKKyAgcmV0dXJuIHsKKyAgICAgIHRpdGxlOiB0ZXN0LnRp
dGxlCisgICAgLCBmdWxsVGl0bGU6IHRlc3QuZnVsbFRpdGxlKCkKKyAgICAsIGR1cmF0aW9uOiB0
ZXN0LmR1cmF0aW9uCisgIH0KK30KK30pOyAvLyBtb2R1bGU6IHJlcG9ydGVycy9qc29uLXN0cmVh
bS5qcworCityZXF1aXJlLnJlZ2lzdGVyKCJyZXBvcnRlcnMvanNvbi5qcyIsIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7CisKKy8qKgorICogTW9kdWxlIGRlcGVuZGVuY2llcy4K
KyAqLworCit2YXIgQmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpCisgICwgY3Vyc29yID0gQmFzZS5j
dXJzb3IKKyAgLCBjb2xvciA9IEJhc2UuY29sb3I7CisKKy8qKgorICogRXhwb3NlIGBKU09OYC4K
KyAqLworCitleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBKU09OUmVwb3J0ZXI7CisKKy8qKgor
ICogSW5pdGlhbGl6ZSBhIG5ldyBgSlNPTmAgcmVwb3J0ZXIuCisgKgorICogQHBhcmFtIHtSdW5u
ZXJ9IHJ1bm5lcgorICogQGFwaSBwdWJsaWMKKyAqLworCitmdW5jdGlvbiBKU09OUmVwb3J0ZXIo
cnVubmVyKSB7CisgIHZhciBzZWxmID0gdGhpczsKKyAgQmFzZS5jYWxsKHRoaXMsIHJ1bm5lcik7
CisKKyAgdmFyIHRlc3RzID0gW10KKyAgICAsIGZhaWx1cmVzID0gW10KKyAgICAsIHBhc3NlcyA9
IFtdOworCisgIHJ1bm5lci5vbigndGVzdCBlbmQnLCBmdW5jdGlvbih0ZXN0KXsKKyAgICB0ZXN0
cy5wdXNoKHRlc3QpOworICB9KTsKKworICBydW5uZXIub24oJ3Bhc3MnLCBmdW5jdGlvbih0ZXN0
KXsKKyAgICBwYXNzZXMucHVzaCh0ZXN0KTsKKyAgfSk7CisKKyAgcnVubmVyLm9uKCdmYWlsJywg
ZnVuY3Rpb24odGVzdCwgZXJyKXsKKyAgICBmYWlsdXJlcy5wdXNoKHRlc3QpOworICAgIGlmIChl
cnIgPT09IE9iamVjdChlcnIpKSB7CisgICAgICB0ZXN0LmVyck1zZyA9IGVyci5tZXNzYWdlOwor
ICAgICAgdGVzdC5lcnJTdGFjayA9IGVyci5zdGFjazsKKyAgICB9CisgIH0pOworCisgIHJ1bm5l
ci5vbignZW5kJywgZnVuY3Rpb24oKXsKKyAgICB2YXIgb2JqID0geworICAgICAgc3RhdHM6IHNl
bGYuc3RhdHMsCisgICAgICB0ZXN0czogdGVzdHMubWFwKGNsZWFuKSwKKyAgICAgIGZhaWx1cmVz
OiBmYWlsdXJlcy5tYXAoY2xlYW4pLAorICAgICAgcGFzc2VzOiBwYXNzZXMubWFwKGNsZWFuKQor
ICAgIH07CisgICAgcnVubmVyLnRlc3RSZXN1bHRzID0gb2JqOworCisgICAgcHJvY2Vzcy5zdGRv
dXQud3JpdGUoSlNPTi5zdHJpbmdpZnkob2JqLCBudWxsLCAyKSk7CisgIH0pOworfQorCisvKioK
KyAqIFJldHVybiBhIHBsYWluLW9iamVjdCByZXByZXNlbnRhdGlvbiBvZiBgdGVzdGAKKyAqIGZy
ZWUgb2YgY3ljbGljIHByb3BlcnRpZXMgZXRjLgorICoKKyAqIEBwYXJhbSB7T2JqZWN0fSB0ZXN0
CisgKiBAcmV0dXJuIHtPYmplY3R9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitmdW5jdGlvbiBj
bGVhbih0ZXN0KSB7CisgIHJldHVybiB7CisgICAgdGl0bGU6IHRlc3QudGl0bGUsCisgICAgZnVs
bFRpdGxlOiB0ZXN0LmZ1bGxUaXRsZSgpLAorICAgIGR1cmF0aW9uOiB0ZXN0LmR1cmF0aW9uLAor
ICAgIGVycjogdGVzdC5lcnIsCisgICAgZXJyU3RhY2s6IHRlc3QuZXJyLnN0YWNrLAorICAgIGVy
ck1lc3NhZ2U6IHRlc3QuZXJyLm1lc3NhZ2UKKyAgfQorfQorCit9KTsgLy8gbW9kdWxlOiByZXBv
cnRlcnMvanNvbi5qcworCityZXF1aXJlLnJlZ2lzdGVyKCJyZXBvcnRlcnMvbGFuZGluZy5qcyIs
IGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7CisKKy8qKgorICogTW9kdWxlIGRl
cGVuZGVuY2llcy4KKyAqLworCit2YXIgQmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpCisgICwgY3Vy
c29yID0gQmFzZS5jdXJzb3IKKyAgLCBjb2xvciA9IEJhc2UuY29sb3I7CisKKy8qKgorICogRXhw
b3NlIGBMYW5kaW5nYC4KKyAqLworCitleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBMYW5kaW5n
OworCisvKioKKyAqIEFpcnBsYW5lIGNvbG9yLgorICovCisKK0Jhc2UuY29sb3JzLnBsYW5lID0g
MDsKKworLyoqCisgKiBBaXJwbGFuZSBjcmFzaCBjb2xvci4KKyAqLworCitCYXNlLmNvbG9yc1sn
cGxhbmUgY3Jhc2gnXSA9IDMxOworCisvKioKKyAqIFJ1bndheSBjb2xvci4KKyAqLworCitCYXNl
LmNvbG9ycy5ydW53YXkgPSA5MDsKKworLyoqCisgKiBJbml0aWFsaXplIGEgbmV3IGBMYW5kaW5n
YCByZXBvcnRlci4KKyAqCisgKiBAcGFyYW0ge1J1bm5lcn0gcnVubmVyCisgKiBAYXBpIHB1Ymxp
YworICovCisKK2Z1bmN0aW9uIExhbmRpbmcocnVubmVyKSB7CisgIEJhc2UuY2FsbCh0aGlzLCBy
dW5uZXIpOworCisgIHZhciBzZWxmID0gdGhpcworICAgICwgc3RhdHMgPSB0aGlzLnN0YXRzCisg
ICAgLCB3aWR0aCA9IEJhc2Uud2luZG93LndpZHRoICogLjc1IHwgMAorICAgICwgdG90YWwgPSBy
dW5uZXIudG90YWwKKyAgICAsIHN0cmVhbSA9IHByb2Nlc3Muc3Rkb3V0CisgICAgLCBwbGFuZSA9
IGNvbG9yKCdwbGFuZScsICfinIgnKQorICAgICwgY3Jhc2hlZCA9IC0xCisgICAgLCBuID0gMDsK
KworICBmdW5jdGlvbiBydW53YXkoKSB7CisgICAgdmFyIGJ1ZiA9IEFycmF5KHdpZHRoKS5qb2lu
KCctJyk7CisgICAgcmV0dXJuICcgICcgKyBjb2xvcigncnVud2F5JywgYnVmKTsKKyAgfQorCisg
IHJ1bm5lci5vbignc3RhcnQnLCBmdW5jdGlvbigpeworICAgIHN0cmVhbS53cml0ZSgnXG4gICcp
OworICAgIGN1cnNvci5oaWRlKCk7CisgIH0pOworCisgIHJ1bm5lci5vbigndGVzdCBlbmQnLCBm
dW5jdGlvbih0ZXN0KXsKKyAgICAvLyBjaGVjayBpZiB0aGUgcGxhbmUgY3Jhc2hlZAorICAgIHZh
ciBjb2wgPSAtMSA9PSBjcmFzaGVkCisgICAgICA/IHdpZHRoICogKytuIC8gdG90YWwgfCAwCisg
ICAgICA6IGNyYXNoZWQ7CisKKyAgICAvLyBzaG93IHRoZSBjcmFzaAorICAgIGlmICgnZmFpbGVk
JyA9PSB0ZXN0LnN0YXRlKSB7CisgICAgICBwbGFuZSA9IGNvbG9yKCdwbGFuZSBjcmFzaCcsICfi
nIgnKTsKKyAgICAgIGNyYXNoZWQgPSBjb2w7CisgICAgfQorCisgICAgLy8gcmVuZGVyIGxhbmRp
bmcgc3RyaXAKKyAgICBzdHJlYW0ud3JpdGUoJ1x1MDAxYls0RlxuXG4nKTsKKyAgICBzdHJlYW0u
d3JpdGUocnVud2F5KCkpOworICAgIHN0cmVhbS53cml0ZSgnXG4gICcpOworICAgIHN0cmVhbS53
cml0ZShjb2xvcigncnVud2F5JywgQXJyYXkoY29sKS5qb2luKCfii4UnKSkpOworICAgIHN0cmVh
bS53cml0ZShwbGFuZSkKKyAgICBzdHJlYW0ud3JpdGUoY29sb3IoJ3J1bndheScsIEFycmF5KHdp
ZHRoIC0gY29sKS5qb2luKCfii4UnKSArICdcbicpKTsKKyAgICBzdHJlYW0ud3JpdGUocnVud2F5
KCkpOworICAgIHN0cmVhbS53cml0ZSgnXHUwMDFiWzBtJyk7CisgIH0pOworCisgIHJ1bm5lci5v
bignZW5kJywgZnVuY3Rpb24oKXsKKyAgICBjdXJzb3Iuc2hvdygpOworICAgIGNvbnNvbGUubG9n
KCk7CisgICAgc2VsZi5lcGlsb2d1ZSgpOworICB9KTsKK30KKworLyoqCisgKiBJbmhlcml0IGZy
b20gYEJhc2UucHJvdG90eXBlYC4KKyAqLworCitmdW5jdGlvbiBGKCl7fTsKK0YucHJvdG90eXBl
ID0gQmFzZS5wcm90b3R5cGU7CitMYW5kaW5nLnByb3RvdHlwZSA9IG5ldyBGOworTGFuZGluZy5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBMYW5kaW5nOworCit9KTsgLy8gbW9kdWxlOiByZXBvcnRl
cnMvbGFuZGluZy5qcworCityZXF1aXJlLnJlZ2lzdGVyKCJyZXBvcnRlcnMvbGlzdC5qcyIsIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7CisKKy8qKgorICogTW9kdWxlIGRlcGVu
ZGVuY2llcy4KKyAqLworCit2YXIgQmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpCisgICwgY3Vyc29y
ID0gQmFzZS5jdXJzb3IKKyAgLCBjb2xvciA9IEJhc2UuY29sb3I7CisKKy8qKgorICogRXhwb3Nl
IGBMaXN0YC4KKyAqLworCitleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBMaXN0OworCisvKioK
KyAqIEluaXRpYWxpemUgYSBuZXcgYExpc3RgIHRlc3QgcmVwb3J0ZXIuCisgKgorICogQHBhcmFt
IHtSdW5uZXJ9IHJ1bm5lcgorICogQGFwaSBwdWJsaWMKKyAqLworCitmdW5jdGlvbiBMaXN0KHJ1
bm5lcikgeworICBCYXNlLmNhbGwodGhpcywgcnVubmVyKTsKKworICB2YXIgc2VsZiA9IHRoaXMK
KyAgICAsIHN0YXRzID0gdGhpcy5zdGF0cworICAgICwgbiA9IDA7CisKKyAgcnVubmVyLm9uKCdz
dGFydCcsIGZ1bmN0aW9uKCl7CisgICAgY29uc29sZS5sb2coKTsKKyAgfSk7CisKKyAgcnVubmVy
Lm9uKCd0ZXN0JywgZnVuY3Rpb24odGVzdCl7CisgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoY29s
b3IoJ3Bhc3MnLCAnICAgICcgKyB0ZXN0LmZ1bGxUaXRsZSgpICsgJzogJykpOworICB9KTsKKwor
ICBydW5uZXIub24oJ3BlbmRpbmcnLCBmdW5jdGlvbih0ZXN0KXsKKyAgICB2YXIgZm10ID0gY29s
b3IoJ2NoZWNrbWFyaycsICcgIC0nKQorICAgICAgKyBjb2xvcigncGVuZGluZycsICcgJXMnKTsK
KyAgICBjb25zb2xlLmxvZyhmbXQsIHRlc3QuZnVsbFRpdGxlKCkpOworICB9KTsKKworICBydW5u
ZXIub24oJ3Bhc3MnLCBmdW5jdGlvbih0ZXN0KXsKKyAgICB2YXIgZm10ID0gY29sb3IoJ2NoZWNr
bWFyaycsICcgICcrQmFzZS5zeW1ib2xzLmRvdCkKKyAgICAgICsgY29sb3IoJ3Bhc3MnLCAnICVz
OiAnKQorICAgICAgKyBjb2xvcih0ZXN0LnNwZWVkLCAnJWRtcycpOworICAgIGN1cnNvci5DUigp
OworICAgIGNvbnNvbGUubG9nKGZtdCwgdGVzdC5mdWxsVGl0bGUoKSwgdGVzdC5kdXJhdGlvbik7
CisgIH0pOworCisgIHJ1bm5lci5vbignZmFpbCcsIGZ1bmN0aW9uKHRlc3QsIGVycil7CisgICAg
Y3Vyc29yLkNSKCk7CisgICAgY29uc29sZS5sb2coY29sb3IoJ2ZhaWwnLCAnICAlZCkgJXMnKSwg
KytuLCB0ZXN0LmZ1bGxUaXRsZSgpKTsKKyAgfSk7CisKKyAgcnVubmVyLm9uKCdlbmQnLCBzZWxm
LmVwaWxvZ3VlLmJpbmQoc2VsZikpOworfQorCisvKioKKyAqIEluaGVyaXQgZnJvbSBgQmFzZS5w
cm90b3R5cGVgLgorICovCisKK2Z1bmN0aW9uIEYoKXt9OworRi5wcm90b3R5cGUgPSBCYXNlLnBy
b3RvdHlwZTsKK0xpc3QucHJvdG90eXBlID0gbmV3IEY7CitMaXN0LnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IExpc3Q7CisKKworfSk7IC8vIG1vZHVsZTogcmVwb3J0ZXJzL2xpc3QuanMKKworcmVx
dWlyZS5yZWdpc3RlcigicmVwb3J0ZXJzL21hcmtkb3duLmpzIiwgZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzLCByZXF1aXJlKXsKKy8qKgorICogTW9kdWxlIGRlcGVuZGVuY2llcy4KKyAqLworCit2
YXIgQmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpCisgICwgdXRpbHMgPSByZXF1aXJlKCcuLi91dGls
cycpOworCisvKioKKyAqIEV4cG9zZSBgTWFya2Rvd25gLgorICovCisKK2V4cG9ydHMgPSBtb2R1
bGUuZXhwb3J0cyA9IE1hcmtkb3duOworCisvKioKKyAqIEluaXRpYWxpemUgYSBuZXcgYE1hcmtk
b3duYCByZXBvcnRlci4KKyAqCisgKiBAcGFyYW0ge1J1bm5lcn0gcnVubmVyCisgKiBAYXBpIHB1
YmxpYworICovCisKK2Z1bmN0aW9uIE1hcmtkb3duKHJ1bm5lcikgeworICBCYXNlLmNhbGwodGhp
cywgcnVubmVyKTsKKworICB2YXIgc2VsZiA9IHRoaXMKKyAgICAsIHN0YXRzID0gdGhpcy5zdGF0
cworICAgICwgbGV2ZWwgPSAwCisgICAgLCBidWYgPSAnJzsKKworICBmdW5jdGlvbiB0aXRsZShz
dHIpIHsKKyAgICByZXR1cm4gQXJyYXkobGV2ZWwpLmpvaW4oJyMnKSArICcgJyArIHN0cjsKKyAg
fQorCisgIGZ1bmN0aW9uIGluZGVudCgpIHsKKyAgICByZXR1cm4gQXJyYXkobGV2ZWwpLmpvaW4o
JyAgJyk7CisgIH0KKworICBmdW5jdGlvbiBtYXBUT0Moc3VpdGUsIG9iaikgeworICAgIHZhciBy
ZXQgPSBvYmo7CisgICAgb2JqID0gb2JqW3N1aXRlLnRpdGxlXSA9IG9ialtzdWl0ZS50aXRsZV0g
fHwgeyBzdWl0ZTogc3VpdGUgfTsKKyAgICBzdWl0ZS5zdWl0ZXMuZm9yRWFjaChmdW5jdGlvbihz
dWl0ZSl7CisgICAgICBtYXBUT0Moc3VpdGUsIG9iaik7CisgICAgfSk7CisgICAgcmV0dXJuIHJl
dDsKKyAgfQorCisgIGZ1bmN0aW9uIHN0cmluZ2lmeVRPQyhvYmosIGxldmVsKSB7CisgICAgKyts
ZXZlbDsKKyAgICB2YXIgYnVmID0gJyc7CisgICAgdmFyIGxpbms7CisgICAgZm9yICh2YXIga2V5
IGluIG9iaikgeworICAgICAgaWYgKCdzdWl0ZScgPT0ga2V5KSBjb250aW51ZTsKKyAgICAgIGlm
IChrZXkpIGxpbmsgPSAnIC0gWycgKyBrZXkgKyAnXSgjJyArIHV0aWxzLnNsdWcob2JqW2tleV0u
c3VpdGUuZnVsbFRpdGxlKCkpICsgJylcbic7CisgICAgICBpZiAoa2V5KSBidWYgKz0gQXJyYXko
bGV2ZWwpLmpvaW4oJyAgJykgKyBsaW5rOworICAgICAgYnVmICs9IHN0cmluZ2lmeVRPQyhvYmpb
a2V5XSwgbGV2ZWwpOworICAgIH0KKyAgICAtLWxldmVsOworICAgIHJldHVybiBidWY7CisgIH0K
KworICBmdW5jdGlvbiBnZW5lcmF0ZVRPQyhzdWl0ZSkgeworICAgIHZhciBvYmogPSBtYXBUT0Mo
c3VpdGUsIHt9KTsKKyAgICByZXR1cm4gc3RyaW5naWZ5VE9DKG9iaiwgMCk7CisgIH0KKworICBn
ZW5lcmF0ZVRPQyhydW5uZXIuc3VpdGUpOworCisgIHJ1bm5lci5vbignc3VpdGUnLCBmdW5jdGlv
bihzdWl0ZSl7CisgICAgKytsZXZlbDsKKyAgICB2YXIgc2x1ZyA9IHV0aWxzLnNsdWcoc3VpdGUu
ZnVsbFRpdGxlKCkpOworICAgIGJ1ZiArPSAnPGEgbmFtZT0iJyArIHNsdWcgKyAnIj48L2E+JyAr
ICdcbic7CisgICAgYnVmICs9IHRpdGxlKHN1aXRlLnRpdGxlKSArICdcbic7CisgIH0pOworCisg
IHJ1bm5lci5vbignc3VpdGUgZW5kJywgZnVuY3Rpb24oc3VpdGUpeworICAgIC0tbGV2ZWw7Cisg
IH0pOworCisgIHJ1bm5lci5vbigncGFzcycsIGZ1bmN0aW9uKHRlc3QpeworICAgIHZhciBjb2Rl
ID0gdXRpbHMuY2xlYW4odGVzdC5mbi50b1N0cmluZygpKTsKKyAgICBidWYgKz0gdGVzdC50aXRs
ZSArICcuXG4nOworICAgIGJ1ZiArPSAnXG5gYGBqc1xuJzsKKyAgICBidWYgKz0gY29kZSArICdc
bic7CisgICAgYnVmICs9ICdgYGBcblxuJzsKKyAgfSk7CisKKyAgcnVubmVyLm9uKCdlbmQnLCBm
dW5jdGlvbigpeworICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcjIFRPQ1xuJyk7CisgICAgcHJv
Y2Vzcy5zdGRvdXQud3JpdGUoZ2VuZXJhdGVUT0MocnVubmVyLnN1aXRlKSk7CisgICAgcHJvY2Vz
cy5zdGRvdXQud3JpdGUoYnVmKTsKKyAgfSk7Cit9Cit9KTsgLy8gbW9kdWxlOiByZXBvcnRlcnMv
bWFya2Rvd24uanMKKworcmVxdWlyZS5yZWdpc3RlcigicmVwb3J0ZXJzL21pbi5qcyIsIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7CisKKy8qKgorICogTW9kdWxlIGRlcGVuZGVu
Y2llcy4KKyAqLworCit2YXIgQmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpOworCisvKioKKyAqIEV4
cG9zZSBgTWluYC4KKyAqLworCitleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBNaW47CisKKy8q
KgorICogSW5pdGlhbGl6ZSBhIG5ldyBgTWluYCBtaW5pbWFsIHRlc3QgcmVwb3J0ZXIgKGJlc3Qg
dXNlZCB3aXRoIC0td2F0Y2gpLgorICoKKyAqIEBwYXJhbSB7UnVubmVyfSBydW5uZXIKKyAqIEBh
cGkgcHVibGljCisgKi8KKworZnVuY3Rpb24gTWluKHJ1bm5lcikgeworICBCYXNlLmNhbGwodGhp
cywgcnVubmVyKTsKKworICBydW5uZXIub24oJ3N0YXJ0JywgZnVuY3Rpb24oKXsKKyAgICAvLyBj
bGVhciBzY3JlZW4KKyAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnXHUwMDFiWzJKJyk7CisgICAg
Ly8gc2V0IGN1cnNvciBwb3NpdGlvbgorICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCdcdTAwMWJb
MTszSCcpOworICB9KTsKKworICBydW5uZXIub24oJ2VuZCcsIHRoaXMuZXBpbG9ndWUuYmluZCh0
aGlzKSk7Cit9CisKKy8qKgorICogSW5oZXJpdCBmcm9tIGBCYXNlLnByb3RvdHlwZWAuCisgKi8K
KworZnVuY3Rpb24gRigpe307CitGLnByb3RvdHlwZSA9IEJhc2UucHJvdG90eXBlOworTWluLnBy
b3RvdHlwZSA9IG5ldyBGOworTWluLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1pbjsKKworCit9
KTsgLy8gbW9kdWxlOiByZXBvcnRlcnMvbWluLmpzCisKK3JlcXVpcmUucmVnaXN0ZXIoInJlcG9y
dGVycy9ueWFuLmpzIiwgZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCByZXF1aXJlKXsKKy8qKgor
ICogTW9kdWxlIGRlcGVuZGVuY2llcy4KKyAqLworCit2YXIgQmFzZSA9IHJlcXVpcmUoJy4vYmFz
ZScpCisgICwgY29sb3IgPSBCYXNlLmNvbG9yOworCisvKioKKyAqIEV4cG9zZSBgRG90YC4KKyAq
LworCitleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBOeWFuQ2F0OworCisvKioKKyAqIEluaXRp
YWxpemUgYSBuZXcgYERvdGAgbWF0cml4IHRlc3QgcmVwb3J0ZXIuCisgKgorICogQHBhcmFtIHtS
dW5uZXJ9IHJ1bm5lcgorICogQGFwaSBwdWJsaWMKKyAqLworCitmdW5jdGlvbiBOeWFuQ2F0KHJ1
bm5lcikgeworICBCYXNlLmNhbGwodGhpcywgcnVubmVyKTsKKyAgdmFyIHNlbGYgPSB0aGlzCisg
ICAgLCBzdGF0cyA9IHRoaXMuc3RhdHMKKyAgICAsIHdpZHRoID0gQmFzZS53aW5kb3cud2lkdGgg
KiAuNzUgfCAwCisgICAgLCByYWluYm93Q29sb3JzID0gdGhpcy5yYWluYm93Q29sb3JzID0gc2Vs
Zi5nZW5lcmF0ZUNvbG9ycygpCisgICAgLCBjb2xvckluZGV4ID0gdGhpcy5jb2xvckluZGV4ID0g
MAorICAgICwgbnVtZXJPZkxpbmVzID0gdGhpcy5udW1iZXJPZkxpbmVzID0gNAorICAgICwgdHJh
amVjdG9yaWVzID0gdGhpcy50cmFqZWN0b3JpZXMgPSBbW10sIFtdLCBbXSwgW11dCisgICAgLCBu
eWFuQ2F0V2lkdGggPSB0aGlzLm55YW5DYXRXaWR0aCA9IDExCisgICAgLCB0cmFqZWN0b3J5V2lk
dGhNYXggPSB0aGlzLnRyYWplY3RvcnlXaWR0aE1heCA9ICh3aWR0aCAtIG55YW5DYXRXaWR0aCkK
KyAgICAsIHNjb3JlYm9hcmRXaWR0aCA9IHRoaXMuc2NvcmVib2FyZFdpZHRoID0gNQorICAgICwg
dGljayA9IHRoaXMudGljayA9IDAKKyAgICAsIG4gPSAwOworCisgIHJ1bm5lci5vbignc3RhcnQn
LCBmdW5jdGlvbigpeworICAgIEJhc2UuY3Vyc29yLmhpZGUoKTsKKyAgICBzZWxmLmRyYXcoKTsK
KyAgfSk7CisKKyAgcnVubmVyLm9uKCdwZW5kaW5nJywgZnVuY3Rpb24odGVzdCl7CisgICAgc2Vs
Zi5kcmF3KCk7CisgIH0pOworCisgIHJ1bm5lci5vbigncGFzcycsIGZ1bmN0aW9uKHRlc3Qpewor
ICAgIHNlbGYuZHJhdygpOworICB9KTsKKworICBydW5uZXIub24oJ2ZhaWwnLCBmdW5jdGlvbih0
ZXN0LCBlcnIpeworICAgIHNlbGYuZHJhdygpOworICB9KTsKKworICBydW5uZXIub24oJ2VuZCcs
IGZ1bmN0aW9uKCl7CisgICAgQmFzZS5jdXJzb3Iuc2hvdygpOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgc2VsZi5udW1iZXJPZkxpbmVzOyBpKyspIHdyaXRlKCdcbicpOworICAgIHNlbGYuZXBp
bG9ndWUoKTsKKyAgfSk7Cit9CisKKy8qKgorICogRHJhdyB0aGUgbnlhbiBjYXQKKyAqCisgKiBA
YXBpIHByaXZhdGUKKyAqLworCitOeWFuQ2F0LnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24oKXsK
KyAgdGhpcy5hcHBlbmRSYWluYm93KCk7CisgIHRoaXMuZHJhd1Njb3JlYm9hcmQoKTsKKyAgdGhp
cy5kcmF3UmFpbmJvdygpOworICB0aGlzLmRyYXdOeWFuQ2F0KCk7CisgIHRoaXMudGljayA9ICF0
aGlzLnRpY2s7Cit9OworCisvKioKKyAqIERyYXcgdGhlICJzY29yZWJvYXJkIiBzaG93aW5nIHRo
ZSBudW1iZXIKKyAqIG9mIHBhc3NlcywgZmFpbHVyZXMgYW5kIHBlbmRpbmcgdGVzdHMuCisgKgor
ICogQGFwaSBwcml2YXRlCisgKi8KKworTnlhbkNhdC5wcm90b3R5cGUuZHJhd1Njb3JlYm9hcmQg
PSBmdW5jdGlvbigpeworICB2YXIgc3RhdHMgPSB0aGlzLnN0YXRzOworICB2YXIgY29sb3JzID0g
QmFzZS5jb2xvcnM7CisKKyAgZnVuY3Rpb24gZHJhdyhjb2xvciwgbikgeworICAgIHdyaXRlKCcg
Jyk7CisgICAgd3JpdGUoJ1x1MDAxYlsnICsgY29sb3IgKyAnbScgKyBuICsgJ1x1MDAxYlswbScp
OworICAgIHdyaXRlKCdcbicpOworICB9CisKKyAgZHJhdyhjb2xvcnMuZ3JlZW4sIHN0YXRzLnBh
c3Nlcyk7CisgIGRyYXcoY29sb3JzLmZhaWwsIHN0YXRzLmZhaWx1cmVzKTsKKyAgZHJhdyhjb2xv
cnMucGVuZGluZywgc3RhdHMucGVuZGluZyk7CisgIHdyaXRlKCdcbicpOworCisgIHRoaXMuY3Vy
c29yVXAodGhpcy5udW1iZXJPZkxpbmVzKTsKK307CisKKy8qKgorICogQXBwZW5kIHRoZSByYWlu
Ym93LgorICoKKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK055YW5DYXQucHJvdG90eXBlLmFwcGVu
ZFJhaW5ib3cgPSBmdW5jdGlvbigpeworICB2YXIgc2VnbWVudCA9IHRoaXMudGljayA/ICdfJyA6
ICctJzsKKyAgdmFyIHJhaW5ib3dpZmllZCA9IHRoaXMucmFpbmJvd2lmeShzZWdtZW50KTsKKwor
ICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5udW1iZXJPZkxpbmVzOyBpbmRleCsr
KSB7CisgICAgdmFyIHRyYWplY3RvcnkgPSB0aGlzLnRyYWplY3Rvcmllc1tpbmRleF07CisgICAg
aWYgKHRyYWplY3RvcnkubGVuZ3RoID49IHRoaXMudHJhamVjdG9yeVdpZHRoTWF4KSB0cmFqZWN0
b3J5LnNoaWZ0KCk7CisgICAgdHJhamVjdG9yeS5wdXNoKHJhaW5ib3dpZmllZCk7CisgIH0KK307
CisKKy8qKgorICogRHJhdyB0aGUgcmFpbmJvdy4KKyAqCisgKiBAYXBpIHByaXZhdGUKKyAqLwor
CitOeWFuQ2F0LnByb3RvdHlwZS5kcmF3UmFpbmJvdyA9IGZ1bmN0aW9uKCl7CisgIHZhciBzZWxm
ID0gdGhpczsKKworICB0aGlzLnRyYWplY3Rvcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGxpbmUsIGlu
ZGV4KSB7CisgICAgd3JpdGUoJ1x1MDAxYlsnICsgc2VsZi5zY29yZWJvYXJkV2lkdGggKyAnQycp
OworICAgIHdyaXRlKGxpbmUuam9pbignJykpOworICAgIHdyaXRlKCdcbicpOworICB9KTsKKwor
ICB0aGlzLmN1cnNvclVwKHRoaXMubnVtYmVyT2ZMaW5lcyk7Cit9OworCisvKioKKyAqIERyYXcg
dGhlIG55YW4gY2F0CisgKgorICogQGFwaSBwcml2YXRlCisgKi8KKworTnlhbkNhdC5wcm90b3R5
cGUuZHJhd055YW5DYXQgPSBmdW5jdGlvbigpIHsKKyAgdmFyIHNlbGYgPSB0aGlzOworICB2YXIg
c3RhcnRXaWR0aCA9IHRoaXMuc2NvcmVib2FyZFdpZHRoICsgdGhpcy50cmFqZWN0b3JpZXNbMF0u
bGVuZ3RoOworICB2YXIgY29sb3IgPSAnXHUwMDFiWycgKyBzdGFydFdpZHRoICsgJ0MnOworICB2
YXIgcGFkZGluZyA9ICcnOworCisgIHdyaXRlKGNvbG9yKTsKKyAgd3JpdGUoJ18sLS0tLS0tLCcp
OworICB3cml0ZSgnXG4nKTsKKworICB3cml0ZShjb2xvcik7CisgIHBhZGRpbmcgPSBzZWxmLnRp
Y2sgPyAnICAnIDogJyAgICc7CisgIHdyaXRlKCdffCcgKyBwYWRkaW5nICsgJy9cXF8vXFwgJyk7
CisgIHdyaXRlKCdcbicpOworCisgIHdyaXRlKGNvbG9yKTsKKyAgcGFkZGluZyA9IHNlbGYudGlj
ayA/ICdfJyA6ICdfXyc7CisgIHZhciB0YWlsID0gc2VsZi50aWNrID8gJ34nIDogJ14nOworICB2
YXIgZmFjZTsKKyAgd3JpdGUodGFpbCArICd8JyArIHBhZGRpbmcgKyB0aGlzLmZhY2UoKSArICcg
Jyk7CisgIHdyaXRlKCdcbicpOworCisgIHdyaXRlKGNvbG9yKTsKKyAgcGFkZGluZyA9IHNlbGYu
dGljayA/ICcgJyA6ICcgICc7CisgIHdyaXRlKHBhZGRpbmcgKyAnIiIgICIiICcpOworICB3cml0
ZSgnXG4nKTsKKworICB0aGlzLmN1cnNvclVwKHRoaXMubnVtYmVyT2ZMaW5lcyk7Cit9OworCisv
KioKKyAqIERyYXcgbnlhbiBjYXQgZmFjZS4KKyAqCisgKiBAcmV0dXJuIHtTdHJpbmd9CisgKiBA
YXBpIHByaXZhdGUKKyAqLworCitOeWFuQ2F0LnByb3RvdHlwZS5mYWNlID0gZnVuY3Rpb24oKSB7
CisgIHZhciBzdGF0cyA9IHRoaXMuc3RhdHM7CisgIGlmIChzdGF0cy5mYWlsdXJlcykgeworICAg
IHJldHVybiAnKCB4IC54KSc7CisgIH0gZWxzZSBpZiAoc3RhdHMucGVuZGluZykgeworICAgIHJl
dHVybiAnKCBvIC5vKSc7CisgIH0gZWxzZSBpZihzdGF0cy5wYXNzZXMpIHsKKyAgICByZXR1cm4g
JyggXiAuXiknOworICB9IGVsc2UgeworICAgIHJldHVybiAnKCAtIC4tKSc7CisgIH0KK30KKwor
LyoqCisgKiBNb3ZlIGN1cnNvciB1cCBgbmAuCisgKgorICogQHBhcmFtIHtOdW1iZXJ9IG4KKyAq
IEBhcGkgcHJpdmF0ZQorICovCisKK055YW5DYXQucHJvdG90eXBlLmN1cnNvclVwID0gZnVuY3Rp
b24obikgeworICB3cml0ZSgnXHUwMDFiWycgKyBuICsgJ0EnKTsKK307CisKKy8qKgorICogTW92
ZSBjdXJzb3IgZG93biBgbmAuCisgKgorICogQHBhcmFtIHtOdW1iZXJ9IG4KKyAqIEBhcGkgcHJp
dmF0ZQorICovCisKK055YW5DYXQucHJvdG90eXBlLmN1cnNvckRvd24gPSBmdW5jdGlvbihuKSB7
CisgIHdyaXRlKCdcdTAwMWJbJyArIG4gKyAnQicpOworfTsKKworLyoqCisgKiBHZW5lcmF0ZSBy
YWluYm93IGNvbG9ycy4KKyAqCisgKiBAcmV0dXJuIHtBcnJheX0KKyAqIEBhcGkgcHJpdmF0ZQor
ICovCisKK055YW5DYXQucHJvdG90eXBlLmdlbmVyYXRlQ29sb3JzID0gZnVuY3Rpb24oKXsKKyAg
dmFyIGNvbG9ycyA9IFtdOworCisgIGZvciAodmFyIGkgPSAwOyBpIDwgKDYgKiA3KTsgaSsrKSB7
CisgICAgdmFyIHBpMyA9IE1hdGguZmxvb3IoTWF0aC5QSSAvIDMpOworICAgIHZhciBuID0gKGkg
KiAoMS4wIC8gNikpOworICAgIHZhciByID0gTWF0aC5mbG9vcigzICogTWF0aC5zaW4obikgKyAz
KTsKKyAgICB2YXIgZyA9IE1hdGguZmxvb3IoMyAqIE1hdGguc2luKG4gKyAyICogcGkzKSArIDMp
OworICAgIHZhciBiID0gTWF0aC5mbG9vcigzICogTWF0aC5zaW4obiArIDQgKiBwaTMpICsgMyk7
CisgICAgY29sb3JzLnB1c2goMzYgKiByICsgNiAqIGcgKyBiICsgMTYpOworICB9CisKKyAgcmV0
dXJuIGNvbG9yczsKK307CisKKy8qKgorICogQXBwbHkgcmFpbmJvdyB0byB0aGUgZ2l2ZW4gYHN0
cmAuCisgKgorICogQHBhcmFtIHtTdHJpbmd9IHN0cgorICogQHJldHVybiB7U3RyaW5nfQorICog
QGFwaSBwcml2YXRlCisgKi8KKworTnlhbkNhdC5wcm90b3R5cGUucmFpbmJvd2lmeSA9IGZ1bmN0
aW9uKHN0cil7CisgIHZhciBjb2xvciA9IHRoaXMucmFpbmJvd0NvbG9yc1t0aGlzLmNvbG9ySW5k
ZXggJSB0aGlzLnJhaW5ib3dDb2xvcnMubGVuZ3RoXTsKKyAgdGhpcy5jb2xvckluZGV4ICs9IDE7
CisgIHJldHVybiAnXHUwMDFiWzM4OzU7JyArIGNvbG9yICsgJ20nICsgc3RyICsgJ1x1MDAxYlsw
bSc7Cit9OworCisvKioKKyAqIFN0ZG91dCBoZWxwZXIuCisgKi8KKworZnVuY3Rpb24gd3JpdGUo
c3RyaW5nKSB7CisgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKHN0cmluZyk7Cit9CisKKy8qKgorICog
SW5oZXJpdCBmcm9tIGBCYXNlLnByb3RvdHlwZWAuCisgKi8KKworZnVuY3Rpb24gRigpe307CitG
LnByb3RvdHlwZSA9IEJhc2UucHJvdG90eXBlOworTnlhbkNhdC5wcm90b3R5cGUgPSBuZXcgRjsK
K055YW5DYXQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTnlhbkNhdDsKKworCit9KTsgLy8gbW9k
dWxlOiByZXBvcnRlcnMvbnlhbi5qcworCityZXF1aXJlLnJlZ2lzdGVyKCJyZXBvcnRlcnMvcHJv
Z3Jlc3MuanMiLCBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUpeworLyoqCisgKiBN
b2R1bGUgZGVwZW5kZW5jaWVzLgorICovCisKK3ZhciBCYXNlID0gcmVxdWlyZSgnLi9iYXNlJykK
KyAgLCBjdXJzb3IgPSBCYXNlLmN1cnNvcgorICAsIGNvbG9yID0gQmFzZS5jb2xvcjsKKworLyoq
CisgKiBFeHBvc2UgYFByb2dyZXNzYC4KKyAqLworCitleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMg
PSBQcm9ncmVzczsKKworLyoqCisgKiBHZW5lcmFsIHByb2dyZXNzIGJhciBjb2xvci4KKyAqLwor
CitCYXNlLmNvbG9ycy5wcm9ncmVzcyA9IDkwOworCisvKioKKyAqIEluaXRpYWxpemUgYSBuZXcg
YFByb2dyZXNzYCBiYXIgdGVzdCByZXBvcnRlci4KKyAqCisgKiBAcGFyYW0ge1J1bm5lcn0gcnVu
bmVyCisgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucworICogQGFwaSBwdWJsaWMKKyAqLworCitm
dW5jdGlvbiBQcm9ncmVzcyhydW5uZXIsIG9wdGlvbnMpIHsKKyAgQmFzZS5jYWxsKHRoaXMsIHJ1
bm5lcik7CisKKyAgdmFyIHNlbGYgPSB0aGlzCisgICAgLCBvcHRpb25zID0gb3B0aW9ucyB8fCB7
fQorICAgICwgc3RhdHMgPSB0aGlzLnN0YXRzCisgICAgLCB3aWR0aCA9IEJhc2Uud2luZG93Lndp
ZHRoICogLjUwIHwgMAorICAgICwgdG90YWwgPSBydW5uZXIudG90YWwKKyAgICAsIGNvbXBsZXRl
ID0gMAorICAgICwgbWF4ID0gTWF0aC5tYXgKKyAgICAsIGxhc3ROID0gLTE7CisKKyAgLy8gZGVm
YXVsdCBjaGFycworICBvcHRpb25zLm9wZW4gPSBvcHRpb25zLm9wZW4gfHwgJ1snOworICBvcHRp
b25zLmNvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZSB8fCAn4pasJzsKKyAgb3B0aW9ucy5pbmNv
bXBsZXRlID0gb3B0aW9ucy5pbmNvbXBsZXRlIHx8IEJhc2Uuc3ltYm9scy5kb3Q7CisgIG9wdGlv
bnMuY2xvc2UgPSBvcHRpb25zLmNsb3NlIHx8ICddJzsKKyAgb3B0aW9ucy52ZXJib3NlID0gZmFs
c2U7CisKKyAgLy8gdGVzdHMgc3RhcnRlZAorICBydW5uZXIub24oJ3N0YXJ0JywgZnVuY3Rpb24o
KXsKKyAgICBjb25zb2xlLmxvZygpOworICAgIGN1cnNvci5oaWRlKCk7CisgIH0pOworCisgIC8v
IHRlc3RzIGNvbXBsZXRlCisgIHJ1bm5lci5vbigndGVzdCBlbmQnLCBmdW5jdGlvbigpeworICAg
IGNvbXBsZXRlKys7CisgICAgdmFyIGluY29tcGxldGUgPSB0b3RhbCAtIGNvbXBsZXRlCisgICAg
ICAsIHBlcmNlbnQgPSBjb21wbGV0ZSAvIHRvdGFsCisgICAgICAsIG4gPSB3aWR0aCAqIHBlcmNl
bnQgfCAwCisgICAgICAsIGkgPSB3aWR0aCAtIG47CisKKyAgICBpZiAobGFzdE4gPT09IG4gJiYg
IW9wdGlvbnMudmVyYm9zZSkgeworICAgICAgLy8gRG9uJ3QgcmUtcmVuZGVyIHRoZSBsaW5lIGlm
IGl0IGhhc24ndCBjaGFuZ2VkCisgICAgICByZXR1cm47CisgICAgfQorICAgIGxhc3ROID0gbjsK
KworICAgIGN1cnNvci5DUigpOworICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCdcdTAwMWJbSicp
OworICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGNvbG9yKCdwcm9ncmVzcycsICcgICcgKyBvcHRp
b25zLm9wZW4pKTsKKyAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShBcnJheShuKS5qb2luKG9wdGlv
bnMuY29tcGxldGUpKTsKKyAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShBcnJheShpKS5qb2luKG9w
dGlvbnMuaW5jb21wbGV0ZSkpOworICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGNvbG9yKCdwcm9n
cmVzcycsIG9wdGlvbnMuY2xvc2UpKTsKKyAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7CisgICAg
ICBwcm9jZXNzLnN0ZG91dC53cml0ZShjb2xvcigncHJvZ3Jlc3MnLCAnICcgKyBjb21wbGV0ZSAr
ICcgb2YgJyArIHRvdGFsKSk7CisgICAgfQorICB9KTsKKworICAvLyB0ZXN0cyBhcmUgY29tcGxl
dGUsIG91dHB1dCBzb21lIHN0YXRzCisgIC8vIGFuZCB0aGUgZmFpbHVyZXMgaWYgYW55CisgIHJ1
bm5lci5vbignZW5kJywgZnVuY3Rpb24oKXsKKyAgICBjdXJzb3Iuc2hvdygpOworICAgIGNvbnNv
bGUubG9nKCk7CisgICAgc2VsZi5lcGlsb2d1ZSgpOworICB9KTsKK30KKworLyoqCisgKiBJbmhl
cml0IGZyb20gYEJhc2UucHJvdG90eXBlYC4KKyAqLworCitmdW5jdGlvbiBGKCl7fTsKK0YucHJv
dG90eXBlID0gQmFzZS5wcm90b3R5cGU7CitQcm9ncmVzcy5wcm90b3R5cGUgPSBuZXcgRjsKK1By
b2dyZXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFByb2dyZXNzOworCisKK30pOyAvLyBtb2R1
bGU6IHJlcG9ydGVycy9wcm9ncmVzcy5qcworCityZXF1aXJlLnJlZ2lzdGVyKCJyZXBvcnRlcnMv
c3BlYy5qcyIsIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7CisKKy8qKgorICog
TW9kdWxlIGRlcGVuZGVuY2llcy4KKyAqLworCit2YXIgQmFzZSA9IHJlcXVpcmUoJy4vYmFzZScp
CisgICwgY3Vyc29yID0gQmFzZS5jdXJzb3IKKyAgLCBjb2xvciA9IEJhc2UuY29sb3I7CisKKy8q
KgorICogRXhwb3NlIGBTcGVjYC4KKyAqLworCitleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBT
cGVjOworCisvKioKKyAqIEluaXRpYWxpemUgYSBuZXcgYFNwZWNgIHRlc3QgcmVwb3J0ZXIuCisg
KgorICogQHBhcmFtIHtSdW5uZXJ9IHJ1bm5lcgorICogQGFwaSBwdWJsaWMKKyAqLworCitmdW5j
dGlvbiBTcGVjKHJ1bm5lcikgeworICBCYXNlLmNhbGwodGhpcywgcnVubmVyKTsKKworICB2YXIg
c2VsZiA9IHRoaXMKKyAgICAsIHN0YXRzID0gdGhpcy5zdGF0cworICAgICwgaW5kZW50cyA9IDAK
KyAgICAsIG4gPSAwOworCisgIGZ1bmN0aW9uIGluZGVudCgpIHsKKyAgICByZXR1cm4gQXJyYXko
aW5kZW50cykuam9pbignICAnKQorICB9CisKKyAgcnVubmVyLm9uKCdzdGFydCcsIGZ1bmN0aW9u
KCl7CisgICAgY29uc29sZS5sb2coKTsKKyAgfSk7CisKKyAgcnVubmVyLm9uKCdzdWl0ZScsIGZ1
bmN0aW9uKHN1aXRlKXsKKyAgICArK2luZGVudHM7CisgICAgY29uc29sZS5sb2coY29sb3IoJ3N1
aXRlJywgJyVzJXMnKSwgaW5kZW50KCksIHN1aXRlLnRpdGxlKTsKKyAgfSk7CisKKyAgcnVubmVy
Lm9uKCdzdWl0ZSBlbmQnLCBmdW5jdGlvbihzdWl0ZSl7CisgICAgLS1pbmRlbnRzOworICAgIGlm
ICgxID09IGluZGVudHMpIGNvbnNvbGUubG9nKCk7CisgIH0pOworCisgIHJ1bm5lci5vbigncGVu
ZGluZycsIGZ1bmN0aW9uKHRlc3QpeworICAgIHZhciBmbXQgPSBpbmRlbnQoKSArIGNvbG9yKCdw
ZW5kaW5nJywgJyAgLSAlcycpOworICAgIGNvbnNvbGUubG9nKGZtdCwgdGVzdC50aXRsZSk7Cisg
IH0pOworCisgIHJ1bm5lci5vbigncGFzcycsIGZ1bmN0aW9uKHRlc3QpeworICAgIGlmICgnZmFz
dCcgPT0gdGVzdC5zcGVlZCkgeworICAgICAgdmFyIGZtdCA9IGluZGVudCgpCisgICAgICAgICsg
Y29sb3IoJ2NoZWNrbWFyaycsICcgICcgKyBCYXNlLnN5bWJvbHMub2spCisgICAgICAgICsgY29s
b3IoJ3Bhc3MnLCAnICVzICcpOworICAgICAgY3Vyc29yLkNSKCk7CisgICAgICBjb25zb2xlLmxv
ZyhmbXQsIHRlc3QudGl0bGUpOworICAgIH0gZWxzZSB7CisgICAgICB2YXIgZm10ID0gaW5kZW50
KCkKKyAgICAgICAgKyBjb2xvcignY2hlY2ttYXJrJywgJyAgJyArIEJhc2Uuc3ltYm9scy5vaykK
KyAgICAgICAgKyBjb2xvcigncGFzcycsICcgJXMgJykKKyAgICAgICAgKyBjb2xvcih0ZXN0LnNw
ZWVkLCAnKCVkbXMpJyk7CisgICAgICBjdXJzb3IuQ1IoKTsKKyAgICAgIGNvbnNvbGUubG9nKGZt
dCwgdGVzdC50aXRsZSwgdGVzdC5kdXJhdGlvbik7CisgICAgfQorICB9KTsKKworICBydW5uZXIu
b24oJ2ZhaWwnLCBmdW5jdGlvbih0ZXN0LCBlcnIpeworICAgIGN1cnNvci5DUigpOworICAgIGNv
bnNvbGUubG9nKGluZGVudCgpICsgY29sb3IoJ2ZhaWwnLCAnICAlZCkgJXMnKSwgKytuLCB0ZXN0
LnRpdGxlKTsKKyAgfSk7CisKKyAgcnVubmVyLm9uKCdlbmQnLCBzZWxmLmVwaWxvZ3VlLmJpbmQo
c2VsZikpOworfQorCisvKioKKyAqIEluaGVyaXQgZnJvbSBgQmFzZS5wcm90b3R5cGVgLgorICov
CisKK2Z1bmN0aW9uIEYoKXt9OworRi5wcm90b3R5cGUgPSBCYXNlLnByb3RvdHlwZTsKK1NwZWMu
cHJvdG90eXBlID0gbmV3IEY7CitTcGVjLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNwZWM7CisK
KworfSk7IC8vIG1vZHVsZTogcmVwb3J0ZXJzL3NwZWMuanMKKworcmVxdWlyZS5yZWdpc3Rlcigi
cmVwb3J0ZXJzL3RhcC5qcyIsIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7CisK
Ky8qKgorICogTW9kdWxlIGRlcGVuZGVuY2llcy4KKyAqLworCit2YXIgQmFzZSA9IHJlcXVpcmUo
Jy4vYmFzZScpCisgICwgY3Vyc29yID0gQmFzZS5jdXJzb3IKKyAgLCBjb2xvciA9IEJhc2UuY29s
b3I7CisKKy8qKgorICogRXhwb3NlIGBUQVBgLgorICovCisKK2V4cG9ydHMgPSBtb2R1bGUuZXhw
b3J0cyA9IFRBUDsKKworLyoqCisgKiBJbml0aWFsaXplIGEgbmV3IGBUQVBgIHJlcG9ydGVyLgor
ICoKKyAqIEBwYXJhbSB7UnVubmVyfSBydW5uZXIKKyAqIEBhcGkgcHVibGljCisgKi8KKworZnVu
Y3Rpb24gVEFQKHJ1bm5lcikgeworICBCYXNlLmNhbGwodGhpcywgcnVubmVyKTsKKworICB2YXIg
c2VsZiA9IHRoaXMKKyAgICAsIHN0YXRzID0gdGhpcy5zdGF0cworICAgICwgbiA9IDEKKyAgICAs
IHBhc3NlcyA9IDAKKyAgICAsIGZhaWx1cmVzID0gMDsKKworICBydW5uZXIub24oJ3N0YXJ0Jywg
ZnVuY3Rpb24oKXsKKyAgICB2YXIgdG90YWwgPSBydW5uZXIuZ3JlcFRvdGFsKHJ1bm5lci5zdWl0
ZSk7CisgICAgY29uc29sZS5sb2coJyVkLi4lZCcsIDEsIHRvdGFsKTsKKyAgfSk7CisKKyAgcnVu
bmVyLm9uKCd0ZXN0IGVuZCcsIGZ1bmN0aW9uKCl7CisgICAgKytuOworICB9KTsKKworICBydW5u
ZXIub24oJ3BlbmRpbmcnLCBmdW5jdGlvbih0ZXN0KXsKKyAgICBjb25zb2xlLmxvZygnb2sgJWQg
JXMgIyBTS0lQIC0nLCBuLCB0aXRsZSh0ZXN0KSk7CisgIH0pOworCisgIHJ1bm5lci5vbigncGFz
cycsIGZ1bmN0aW9uKHRlc3QpeworICAgIHBhc3NlcysrOworICAgIGNvbnNvbGUubG9nKCdvayAl
ZCAlcycsIG4sIHRpdGxlKHRlc3QpKTsKKyAgfSk7CisKKyAgcnVubmVyLm9uKCdmYWlsJywgZnVu
Y3Rpb24odGVzdCwgZXJyKXsKKyAgICBmYWlsdXJlcysrOworICAgIGNvbnNvbGUubG9nKCdub3Qg
b2sgJWQgJXMnLCBuLCB0aXRsZSh0ZXN0KSk7CisgICAgaWYgKGVyci5zdGFjaykgY29uc29sZS5s
b2coZXJyLnN0YWNrLnJlcGxhY2UoL14vZ20sICcgICcpKTsKKyAgfSk7CisKKyAgcnVubmVyLm9u
KCdlbmQnLCBmdW5jdGlvbigpeworICAgIGNvbnNvbGUubG9nKCcjIHRlc3RzICcgKyAocGFzc2Vz
ICsgZmFpbHVyZXMpKTsKKyAgICBjb25zb2xlLmxvZygnIyBwYXNzICcgKyBwYXNzZXMpOworICAg
IGNvbnNvbGUubG9nKCcjIGZhaWwgJyArIGZhaWx1cmVzKTsKKyAgfSk7Cit9CisKKy8qKgorICog
UmV0dXJuIGEgVEFQLXNhZmUgdGl0bGUgb2YgYHRlc3RgCisgKgorICogQHBhcmFtIHtPYmplY3R9
IHRlc3QKKyAqIEByZXR1cm4ge1N0cmluZ30KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK2Z1bmN0
aW9uIHRpdGxlKHRlc3QpIHsKKyAgcmV0dXJuIHRlc3QuZnVsbFRpdGxlKCkucmVwbGFjZSgvIy9n
LCAnJyk7Cit9CisKK30pOyAvLyBtb2R1bGU6IHJlcG9ydGVycy90YXAuanMKKworcmVxdWlyZS5y
ZWdpc3RlcigicmVwb3J0ZXJzL3h1bml0LmpzIiwgZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBy
ZXF1aXJlKXsKKworLyoqCisgKiBNb2R1bGUgZGVwZW5kZW5jaWVzLgorICovCisKK3ZhciBCYXNl
ID0gcmVxdWlyZSgnLi9iYXNlJykKKyAgLCB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJykKKyAg
LCBlc2NhcGUgPSB1dGlscy5lc2NhcGU7CisKKy8qKgorICogU2F2ZSB0aW1lciByZWZlcmVuY2Vz
IHRvIGF2b2lkIFNpbm9uIGludGVyZmVyaW5nIChzZWUgR0gtMjM3KS4KKyAqLworCit2YXIgRGF0
ZSA9IGdsb2JhbC5EYXRlCisgICwgc2V0VGltZW91dCA9IGdsb2JhbC5zZXRUaW1lb3V0CisgICwg
c2V0SW50ZXJ2YWwgPSBnbG9iYWwuc2V0SW50ZXJ2YWwKKyAgLCBjbGVhclRpbWVvdXQgPSBnbG9i
YWwuY2xlYXJUaW1lb3V0CisgICwgY2xlYXJJbnRlcnZhbCA9IGdsb2JhbC5jbGVhckludGVydmFs
OworCisvKioKKyAqIEV4cG9zZSBgWFVuaXRgLgorICovCisKK2V4cG9ydHMgPSBtb2R1bGUuZXhw
b3J0cyA9IFhVbml0OworCisvKioKKyAqIEluaXRpYWxpemUgYSBuZXcgYFhVbml0YCByZXBvcnRl
ci4KKyAqCisgKiBAcGFyYW0ge1J1bm5lcn0gcnVubmVyCisgKiBAYXBpIHB1YmxpYworICovCisK
K2Z1bmN0aW9uIFhVbml0KHJ1bm5lcikgeworICBCYXNlLmNhbGwodGhpcywgcnVubmVyKTsKKyAg
dmFyIHN0YXRzID0gdGhpcy5zdGF0cworICAgICwgdGVzdHMgPSBbXQorICAgICwgc2VsZiA9IHRo
aXM7CisKKyAgcnVubmVyLm9uKCdwZW5kaW5nJywgZnVuY3Rpb24odGVzdCl7CisgICAgdGVzdHMu
cHVzaCh0ZXN0KTsKKyAgfSk7CisKKyAgcnVubmVyLm9uKCdwYXNzJywgZnVuY3Rpb24odGVzdCl7
CisgICAgdGVzdHMucHVzaCh0ZXN0KTsKKyAgfSk7CisKKyAgcnVubmVyLm9uKCdmYWlsJywgZnVu
Y3Rpb24odGVzdCl7CisgICAgdGVzdHMucHVzaCh0ZXN0KTsKKyAgfSk7CisKKyAgcnVubmVyLm9u
KCdlbmQnLCBmdW5jdGlvbigpeworICAgIGNvbnNvbGUubG9nKHRhZygndGVzdHN1aXRlJywgewor
ICAgICAgICBuYW1lOiAnTW9jaGEgVGVzdHMnCisgICAgICAsIHRlc3RzOiBzdGF0cy50ZXN0cwor
ICAgICAgLCBmYWlsdXJlczogc3RhdHMuZmFpbHVyZXMKKyAgICAgICwgZXJyb3JzOiBzdGF0cy5m
YWlsdXJlcworICAgICAgLCBza2lwcGVkOiBzdGF0cy50ZXN0cyAtIHN0YXRzLmZhaWx1cmVzIC0g
c3RhdHMucGFzc2VzCisgICAgICAsIHRpbWVzdGFtcDogKG5ldyBEYXRlKS50b1VUQ1N0cmluZygp
CisgICAgICAsIHRpbWU6IChzdGF0cy5kdXJhdGlvbiAvIDEwMDApIHx8IDAKKyAgICB9LCBmYWxz
ZSkpOworCisgICAgdGVzdHMuZm9yRWFjaCh0ZXN0KTsKKyAgICBjb25zb2xlLmxvZygnPC90ZXN0
c3VpdGU+Jyk7CisgIH0pOworfQorCisvKioKKyAqIEluaGVyaXQgZnJvbSBgQmFzZS5wcm90b3R5
cGVgLgorICovCisKK2Z1bmN0aW9uIEYoKXt9OworRi5wcm90b3R5cGUgPSBCYXNlLnByb3RvdHlw
ZTsKK1hVbml0LnByb3RvdHlwZSA9IG5ldyBGOworWFVuaXQucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gWFVuaXQ7CisKKworLyoqCisgKiBPdXRwdXQgdGFnIGZvciB0aGUgZ2l2ZW4gYHRlc3QuYAor
ICovCisKK2Z1bmN0aW9uIHRlc3QodGVzdCkgeworICB2YXIgYXR0cnMgPSB7CisgICAgICBjbGFz
c25hbWU6IHRlc3QucGFyZW50LmZ1bGxUaXRsZSgpCisgICAgLCBuYW1lOiB0ZXN0LnRpdGxlCisg
ICAgLCB0aW1lOiAodGVzdC5kdXJhdGlvbiAvIDEwMDApIHx8IDAKKyAgfTsKKworICBpZiAoJ2Zh
aWxlZCcgPT0gdGVzdC5zdGF0ZSkgeworICAgIHZhciBlcnIgPSB0ZXN0LmVycjsKKyAgICBjb25z
b2xlLmxvZyh0YWcoJ3Rlc3RjYXNlJywgYXR0cnMsIGZhbHNlLCB0YWcoJ2ZhaWx1cmUnLCB7fSwg
ZmFsc2UsIGNkYXRhKGVzY2FwZShlcnIubWVzc2FnZSkgKyAiXG4iICsgZXJyLnN0YWNrKSkpKTsK
KyAgfSBlbHNlIGlmICh0ZXN0LnBlbmRpbmcpIHsKKyAgICBjb25zb2xlLmxvZyh0YWcoJ3Rlc3Rj
YXNlJywgYXR0cnMsIGZhbHNlLCB0YWcoJ3NraXBwZWQnLCB7fSwgdHJ1ZSkpKTsKKyAgfSBlbHNl
IHsKKyAgICBjb25zb2xlLmxvZyh0YWcoJ3Rlc3RjYXNlJywgYXR0cnMsIHRydWUpICk7CisgIH0K
K30KKworLyoqCisgKiBIVE1MIHRhZyBoZWxwZXIuCisgKi8KKworZnVuY3Rpb24gdGFnKG5hbWUs
IGF0dHJzLCBjbG9zZSwgY29udGVudCkgeworICB2YXIgZW5kID0gY2xvc2UgPyAnLz4nIDogJz4n
CisgICAgLCBwYWlycyA9IFtdCisgICAgLCB0YWc7CisKKyAgZm9yICh2YXIga2V5IGluIGF0dHJz
KSB7CisgICAgcGFpcnMucHVzaChrZXkgKyAnPSInICsgZXNjYXBlKGF0dHJzW2tleV0pICsgJyIn
KTsKKyAgfQorCisgIHRhZyA9ICc8JyArIG5hbWUgKyAocGFpcnMubGVuZ3RoID8gJyAnICsgcGFp
cnMuam9pbignICcpIDogJycpICsgZW5kOworICBpZiAoY29udGVudCkgdGFnICs9IGNvbnRlbnQg
KyAnPC8nICsgbmFtZSArIGVuZDsKKyAgcmV0dXJuIHRhZzsKK30KKworLyoqCisgKiBSZXR1cm4g
Y2RhdGEgZXNjYXBlZCBDREFUQSBgc3RyYC4KKyAqLworCitmdW5jdGlvbiBjZGF0YShzdHIpIHsK
KyAgcmV0dXJuICc8IVtDREFUQVsnICsgZXNjYXBlKHN0cikgKyAnXV0+JzsKK30KKworfSk7IC8v
IG1vZHVsZTogcmVwb3J0ZXJzL3h1bml0LmpzCisKK3JlcXVpcmUucmVnaXN0ZXIoInJ1bm5hYmxl
LmpzIiwgZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCByZXF1aXJlKXsKKworLyoqCisgKiBNb2R1
bGUgZGVwZW5kZW5jaWVzLgorICovCisKK3ZhciBFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCdicm93
c2VyL2V2ZW50cycpLkV2ZW50RW1pdHRlcgorICAsIGRlYnVnID0gcmVxdWlyZSgnYnJvd3Nlci9k
ZWJ1ZycpKCdtb2NoYTpydW5uYWJsZScpCisgICwgbWlsbGlzZWNvbmRzID0gcmVxdWlyZSgnLi9t
cycpOworCisvKioKKyAqIFNhdmUgdGltZXIgcmVmZXJlbmNlcyB0byBhdm9pZCBTaW5vbiBpbnRl
cmZlcmluZyAoc2VlIEdILTIzNykuCisgKi8KKwordmFyIERhdGUgPSBnbG9iYWwuRGF0ZQorICAs
IHNldFRpbWVvdXQgPSBnbG9iYWwuc2V0VGltZW91dAorICAsIHNldEludGVydmFsID0gZ2xvYmFs
LnNldEludGVydmFsCisgICwgY2xlYXJUaW1lb3V0ID0gZ2xvYmFsLmNsZWFyVGltZW91dAorICAs
IGNsZWFySW50ZXJ2YWwgPSBnbG9iYWwuY2xlYXJJbnRlcnZhbDsKKworLyoqCisgKiBPYmplY3Qj
dG9TdHJpbmcoKS4KKyAqLworCit2YXIgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3Ry
aW5nOworCisvKioKKyAqIEV4cG9zZSBgUnVubmFibGVgLgorICovCisKK21vZHVsZS5leHBvcnRz
ID0gUnVubmFibGU7CisKKy8qKgorICogSW5pdGlhbGl6ZSBhIG5ldyBgUnVubmFibGVgIHdpdGgg
dGhlIGdpdmVuIGB0aXRsZWAgYW5kIGNhbGxiYWNrIGBmbmAuCisgKgorICogQHBhcmFtIHtTdHJp
bmd9IHRpdGxlCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbgorICogQGFwaSBwcml2YXRlCisgKi8K
KworZnVuY3Rpb24gUnVubmFibGUodGl0bGUsIGZuKSB7CisgIHRoaXMudGl0bGUgPSB0aXRsZTsK
KyAgdGhpcy5mbiA9IGZuOworICB0aGlzLmFzeW5jID0gZm4gJiYgZm4ubGVuZ3RoOworICB0aGlz
LnN5bmMgPSAhIHRoaXMuYXN5bmM7CisgIHRoaXMuX3RpbWVvdXQgPSAyMDAwOworICB0aGlzLl9z
bG93ID0gNzU7CisgIHRoaXMuX2VuYWJsZVRpbWVvdXRzID0gdHJ1ZTsKKyAgdGhpcy50aW1lZE91
dCA9IGZhbHNlOworfQorCisvKioKKyAqIEluaGVyaXQgZnJvbSBgRXZlbnRFbWl0dGVyLnByb3Rv
dHlwZWAuCisgKi8KKworZnVuY3Rpb24gRigpe307CitGLnByb3RvdHlwZSA9IEV2ZW50RW1pdHRl
ci5wcm90b3R5cGU7CitSdW5uYWJsZS5wcm90b3R5cGUgPSBuZXcgRjsKK1J1bm5hYmxlLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IFJ1bm5hYmxlOworCisKKy8qKgorICogU2V0ICYgZ2V0IHRpbWVv
dXQgYG1zYC4KKyAqCisgKiBAcGFyYW0ge051bWJlcnxTdHJpbmd9IG1zCisgKiBAcmV0dXJuIHtS
dW5uYWJsZXxOdW1iZXJ9IG1zIG9yIHNlbGYKKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1J1bm5h
YmxlLnByb3RvdHlwZS50aW1lb3V0ID0gZnVuY3Rpb24obXMpeworICBpZiAoMCA9PSBhcmd1bWVu
dHMubGVuZ3RoKSByZXR1cm4gdGhpcy5fdGltZW91dDsKKyAgaWYgKCdzdHJpbmcnID09IHR5cGVv
ZiBtcykgbXMgPSBtaWxsaXNlY29uZHMobXMpOworICBkZWJ1ZygndGltZW91dCAlZCcsIG1zKTsK
KyAgdGhpcy5fdGltZW91dCA9IG1zOworICBpZiAodGhpcy50aW1lcikgdGhpcy5yZXNldFRpbWVv
dXQoKTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIFNldCAmIGdldCBzbG93IGBtc2Au
CisgKgorICogQHBhcmFtIHtOdW1iZXJ8U3RyaW5nfSBtcworICogQHJldHVybiB7UnVubmFibGV8
TnVtYmVyfSBtcyBvciBzZWxmCisgKiBAYXBpIHByaXZhdGUKKyAqLworCitSdW5uYWJsZS5wcm90
b3R5cGUuc2xvdyA9IGZ1bmN0aW9uKG1zKXsKKyAgaWYgKDAgPT09IGFyZ3VtZW50cy5sZW5ndGgp
IHJldHVybiB0aGlzLl9zbG93OworICBpZiAoJ3N0cmluZycgPT0gdHlwZW9mIG1zKSBtcyA9IG1p
bGxpc2Vjb25kcyhtcyk7CisgIGRlYnVnKCd0aW1lb3V0ICVkJywgbXMpOworICB0aGlzLl9zbG93
ID0gbXM7CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBTZXQgYW5kICYgZ2V0IHRpbWVv
dXQgYGVuYWJsZWRgLgorICoKKyAqIEBwYXJhbSB7Qm9vbGVhbn0gZW5hYmxlZAorICogQHJldHVy
biB7UnVubmFibGV8Qm9vbGVhbn0gZW5hYmxlZCBvciBzZWxmCisgKiBAYXBpIHByaXZhdGUKKyAq
LworCitSdW5uYWJsZS5wcm90b3R5cGUuZW5hYmxlVGltZW91dHMgPSBmdW5jdGlvbihlbmFibGVk
KXsKKyAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHJldHVybiB0aGlzLl9lbmFibGVUaW1l
b3V0czsKKyAgZGVidWcoJ2VuYWJsZVRpbWVvdXRzICVzJywgZW5hYmxlZCk7CisgIHRoaXMuX2Vu
YWJsZVRpbWVvdXRzID0gZW5hYmxlZDsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIFJl
dHVybiB0aGUgZnVsbCB0aXRsZSBnZW5lcmF0ZWQgYnkgcmVjdXJzaXZlbHkKKyAqIGNvbmNhdGVu
YXRpbmcgdGhlIHBhcmVudCdzIGZ1bGwgdGl0bGUuCisgKgorICogQHJldHVybiB7U3RyaW5nfQor
ICogQGFwaSBwdWJsaWMKKyAqLworCitSdW5uYWJsZS5wcm90b3R5cGUuZnVsbFRpdGxlID0gZnVu
Y3Rpb24oKXsKKyAgcmV0dXJuIHRoaXMucGFyZW50LmZ1bGxUaXRsZSgpICsgJyAnICsgdGhpcy50
aXRsZTsKK307CisKKy8qKgorICogQ2xlYXIgdGhlIHRpbWVvdXQuCisgKgorICogQGFwaSBwcml2
YXRlCisgKi8KKworUnVubmFibGUucHJvdG90eXBlLmNsZWFyVGltZW91dCA9IGZ1bmN0aW9uKCl7
CisgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTsKK307CisKKy8qKgorICogSW5zcGVjdCB0aGUg
cnVubmFibGUgdm9pZCBvZiBwcml2YXRlIHByb3BlcnRpZXMuCisgKgorICogQHJldHVybiB7U3Ry
aW5nfQorICogQGFwaSBwcml2YXRlCisgKi8KKworUnVubmFibGUucHJvdG90eXBlLmluc3BlY3Qg
PSBmdW5jdGlvbigpeworICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcywgZnVuY3Rpb24oa2V5
LCB2YWwpeworICAgIGlmICgnXycgPT0ga2V5WzBdKSByZXR1cm47CisgICAgaWYgKCdwYXJlbnQn
ID09IGtleSkgcmV0dXJuICcjPFN1aXRlPic7CisgICAgaWYgKCdjdHgnID09IGtleSkgcmV0dXJu
ICcjPENvbnRleHQ+JzsKKyAgICByZXR1cm4gdmFsOworICB9LCAyKTsKK307CisKKy8qKgorICog
UmVzZXQgdGhlIHRpbWVvdXQuCisgKgorICogQGFwaSBwcml2YXRlCisgKi8KKworUnVubmFibGUu
cHJvdG90eXBlLnJlc2V0VGltZW91dCA9IGZ1bmN0aW9uKCl7CisgIHZhciBzZWxmID0gdGhpczsK
KyAgdmFyIG1zID0gdGhpcy50aW1lb3V0KCkgfHwgMWU5OworCisgIGlmICghdGhpcy5fZW5hYmxl
VGltZW91dHMpIHJldHVybjsKKyAgdGhpcy5jbGVhclRpbWVvdXQoKTsKKyAgdGhpcy50aW1lciA9
IHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKKyAgICBzZWxmLmNhbGxiYWNrKG5ldyBFcnJvcigndGlt
ZW91dCBvZiAnICsgbXMgKyAnbXMgZXhjZWVkZWQnKSk7CisgICAgc2VsZi50aW1lZE91dCA9IHRy
dWU7CisgIH0sIG1zKTsKK307CisKKy8qKgorICogV2hpdGVsaXN0IHRoZXNlIGdsb2JhbHMgZm9y
IHRoaXMgdGVzdCBydW4KKyAqCisgKiBAYXBpIHByaXZhdGUKKyAqLworUnVubmFibGUucHJvdG90
eXBlLmdsb2JhbHMgPSBmdW5jdGlvbihhcnIpeworICB2YXIgc2VsZiA9IHRoaXM7CisgIHRoaXMu
X2FsbG93ZWRHbG9iYWxzID0gYXJyOworfTsKKworLyoqCisgKiBSdW4gdGhlIHRlc3QgYW5kIGlu
dm9rZSBgZm4oZXJyKWAuCisgKgorICogQHBhcmFtIHtGdW5jdGlvbn0gZm4KKyAqIEBhcGkgcHJp
dmF0ZQorICovCisKK1J1bm5hYmxlLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbihmbil7CisgIHZh
ciBzZWxmID0gdGhpcworICAgICwgc3RhcnQgPSBuZXcgRGF0ZQorICAgICwgY3R4ID0gdGhpcy5j
dHgKKyAgICAsIGZpbmlzaGVkCisgICAgLCBlbWl0dGVkOworCisgIC8vIFNvbWUgdGltZXMgdGhl
IGN0eCBleGlzdHMgYnV0IGl0IGlzIG5vdCBydW5uYWJsZQorICBpZiAoY3R4ICYmIGN0eC5ydW5u
YWJsZSkgY3R4LnJ1bm5hYmxlKHRoaXMpOworCisgIC8vIGNhbGxlZCBtdWx0aXBsZSB0aW1lcwor
ICBmdW5jdGlvbiBtdWx0aXBsZShlcnIpIHsKKyAgICBpZiAoZW1pdHRlZCkgcmV0dXJuOworICAg
IGVtaXR0ZWQgPSB0cnVlOworICAgIHNlbGYuZW1pdCgnZXJyb3InLCBlcnIgfHwgbmV3IEVycm9y
KCdkb25lKCkgY2FsbGVkIG11bHRpcGxlIHRpbWVzJykpOworICB9CisKKyAgLy8gZmluaXNoZWQK
KyAgZnVuY3Rpb24gZG9uZShlcnIpIHsKKyAgICB2YXIgbXMgPSBzZWxmLnRpbWVvdXQoKTsKKyAg
ICBpZiAoc2VsZi50aW1lZE91dCkgcmV0dXJuOworICAgIGlmIChmaW5pc2hlZCkgcmV0dXJuIG11
bHRpcGxlKGVycik7CisgICAgc2VsZi5jbGVhclRpbWVvdXQoKTsKKyAgICBzZWxmLmR1cmF0aW9u
ID0gbmV3IERhdGUgLSBzdGFydDsKKyAgICBmaW5pc2hlZCA9IHRydWU7CisgICAgaWYgKCFlcnIg
JiYgc2VsZi5kdXJhdGlvbiA+IG1zICYmIHNlbGYuX2VuYWJsZVRpbWVvdXRzKSBlcnIgPSBuZXcg
RXJyb3IoJ3RpbWVvdXQgb2YgJyArIG1zICsgJ21zIGV4Y2VlZGVkJyk7CisgICAgZm4oZXJyKTsK
KyAgfQorCisgIC8vIGZvciAucmVzZXRUaW1lb3V0KCkKKyAgdGhpcy5jYWxsYmFjayA9IGRvbmU7
CisKKyAgLy8gZXhwbGljaXQgYXN5bmMgd2l0aCBgZG9uZWAgYXJndW1lbnQKKyAgaWYgKHRoaXMu
YXN5bmMpIHsKKyAgICB0aGlzLnJlc2V0VGltZW91dCgpOworCisgICAgdHJ5IHsKKyAgICAgIHRo
aXMuZm4uY2FsbChjdHgsIGZ1bmN0aW9uKGVycil7CisgICAgICAgIGlmIChlcnIgaW5zdGFuY2Vv
ZiBFcnJvciB8fCB0b1N0cmluZy5jYWxsKGVycikgPT09ICJbb2JqZWN0IEVycm9yXSIpIHJldHVy
biBkb25lKGVycik7CisgICAgICAgIGlmIChudWxsICE9IGVycikgeworICAgICAgICAgIGlmIChP
YmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZXJyKSA9PT0gJ1tvYmplY3QgT2JqZWN0XScp
IHsKKyAgICAgICAgICAgIHJldHVybiBkb25lKG5ldyBFcnJvcignZG9uZSgpIGludm9rZWQgd2l0
aCBub24tRXJyb3I6ICcgKyBKU09OLnN0cmluZ2lmeShlcnIpKSk7CisgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHJldHVybiBkb25lKG5ldyBFcnJvcignZG9uZSgpIGludm9rZWQgd2l0
aCBub24tRXJyb3I6ICcgKyBlcnIpKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
ZG9uZSgpOworICAgICAgfSk7CisgICAgfSBjYXRjaCAoZXJyKSB7CisgICAgICBkb25lKGVycik7
CisgICAgfQorICAgIHJldHVybjsKKyAgfQorCisgIGlmICh0aGlzLmFzeW5jT25seSkgeworICAg
IHJldHVybiBkb25lKG5ldyBFcnJvcignLS1hc3luYy1vbmx5IG9wdGlvbiBpbiB1c2Ugd2l0aG91
dCBkZWNsYXJpbmcgYGRvbmUoKWAnKSk7CisgIH0KKworICAvLyBzeW5jIG9yIHByb21pc2UtcmV0
dXJuaW5nCisgIHRyeSB7CisgICAgaWYgKHRoaXMucGVuZGluZykgeworICAgICAgZG9uZSgpOwor
ICAgIH0gZWxzZSB7CisgICAgICBjYWxsRm4odGhpcy5mbik7CisgICAgfQorICB9IGNhdGNoIChl
cnIpIHsKKyAgICBkb25lKGVycik7CisgIH0KKworICBmdW5jdGlvbiBjYWxsRm4oZm4pIHsKKyAg
ICB2YXIgcmVzdWx0ID0gZm4uY2FsbChjdHgpOworICAgIGlmIChyZXN1bHQgJiYgdHlwZW9mIHJl
c3VsdC50aGVuID09PSAnZnVuY3Rpb24nKSB7CisgICAgICBzZWxmLnJlc2V0VGltZW91dCgpOwor
ICAgICAgcmVzdWx0CisgICAgICAgIC50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgIGRvbmUo
KQorICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbihyZWFzb24pIHsKKyAgICAgICAgICBkb25l
KHJlYXNvbiB8fCBuZXcgRXJyb3IoJ1Byb21pc2UgcmVqZWN0ZWQgd2l0aCBubyBvciBmYWxzeSBy
ZWFzb24nKSkKKyAgICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGRvbmUoKTsKKyAgICB9
CisgIH0KK307CisKK30pOyAvLyBtb2R1bGU6IHJ1bm5hYmxlLmpzCisKK3JlcXVpcmUucmVnaXN0
ZXIoInJ1bm5lci5qcyIsIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7CisvKioK
KyAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuCisgKi8KKwordmFyIEV2ZW50RW1pdHRlciA9IHJlcXVp
cmUoJ2Jyb3dzZXIvZXZlbnRzJykuRXZlbnRFbWl0dGVyCisgICwgZGVidWcgPSByZXF1aXJlKCdi
cm93c2VyL2RlYnVnJykoJ21vY2hhOnJ1bm5lcicpCisgICwgVGVzdCA9IHJlcXVpcmUoJy4vdGVz
dCcpCisgICwgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJykKKyAgLCBmaWx0ZXIgPSB1dGlscy5m
aWx0ZXIKKyAgLCBrZXlzID0gdXRpbHMua2V5czsKKworLyoqCisgKiBOb24tZW51bWVyYWJsZSBn
bG9iYWxzLgorICovCisKK3ZhciBnbG9iYWxzID0gWworICAnc2V0VGltZW91dCcsCisgICdjbGVh
clRpbWVvdXQnLAorICAnc2V0SW50ZXJ2YWwnLAorICAnY2xlYXJJbnRlcnZhbCcsCisgICdYTUxI
dHRwUmVxdWVzdCcsCisgICdEYXRlJworXTsKKworLyoqCisgKiBFeHBvc2UgYFJ1bm5lcmAuCisg
Ki8KKworbW9kdWxlLmV4cG9ydHMgPSBSdW5uZXI7CisKKy8qKgorICogSW5pdGlhbGl6ZSBhIGBS
dW5uZXJgIGZvciB0aGUgZ2l2ZW4gYHN1aXRlYC4KKyAqCisgKiBFdmVudHM6CisgKgorICogICAt
IGBzdGFydGAgIGV4ZWN1dGlvbiBzdGFydGVkCisgKiAgIC0gYGVuZGAgIGV4ZWN1dGlvbiBjb21w
bGV0ZQorICogICAtIGBzdWl0ZWAgIChzdWl0ZSkgdGVzdCBzdWl0ZSBleGVjdXRpb24gc3RhcnRl
ZAorICogICAtIGBzdWl0ZSBlbmRgICAoc3VpdGUpIGFsbCB0ZXN0cyAoYW5kIHN1Yi1zdWl0ZXMp
IGhhdmUgZmluaXNoZWQKKyAqICAgLSBgdGVzdGAgICh0ZXN0KSB0ZXN0IGV4ZWN1dGlvbiBzdGFy
dGVkCisgKiAgIC0gYHRlc3QgZW5kYCAgKHRlc3QpIHRlc3QgY29tcGxldGVkCisgKiAgIC0gYGhv
b2tgICAoaG9vaykgaG9vayBleGVjdXRpb24gc3RhcnRlZAorICogICAtIGBob29rIGVuZGAgICho
b29rKSBob29rIGNvbXBsZXRlCisgKiAgIC0gYHBhc3NgICAodGVzdCkgdGVzdCBwYXNzZWQKKyAq
ICAgLSBgZmFpbGAgICh0ZXN0LCBlcnIpIHRlc3QgZmFpbGVkCisgKiAgIC0gYHBlbmRpbmdgICAo
dGVzdCkgdGVzdCBwZW5kaW5nCisgKgorICogQGFwaSBwdWJsaWMKKyAqLworCitmdW5jdGlvbiBS
dW5uZXIoc3VpdGUpIHsKKyAgdmFyIHNlbGYgPSB0aGlzOworICB0aGlzLl9nbG9iYWxzID0gW107
CisgIHRoaXMuX2Fib3J0ID0gZmFsc2U7CisgIHRoaXMuc3VpdGUgPSBzdWl0ZTsKKyAgdGhpcy50
b3RhbCA9IHN1aXRlLnRvdGFsKCk7CisgIHRoaXMuZmFpbHVyZXMgPSAwOworICB0aGlzLm9uKCd0
ZXN0IGVuZCcsIGZ1bmN0aW9uKHRlc3QpeyBzZWxmLmNoZWNrR2xvYmFscyh0ZXN0KTsgfSk7Cisg
IHRoaXMub24oJ2hvb2sgZW5kJywgZnVuY3Rpb24oaG9vayl7IHNlbGYuY2hlY2tHbG9iYWxzKGhv
b2spOyB9KTsKKyAgdGhpcy5ncmVwKC8uKi8pOworICB0aGlzLmdsb2JhbHModGhpcy5nbG9iYWxQ
cm9wcygpLmNvbmNhdChleHRyYUdsb2JhbHMoKSkpOworfQorCisvKioKKyAqIFdyYXBwZXIgZm9y
IHNldEltbWVkaWF0ZSwgcHJvY2Vzcy5uZXh0VGljaywgb3IgYnJvd3NlciBwb2x5ZmlsbC4KKyAq
CisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbgorICogQGFwaSBwcml2YXRlCisgKi8KKworUnVubmVy
LmltbWVkaWF0ZWx5ID0gZ2xvYmFsLnNldEltbWVkaWF0ZSB8fCBwcm9jZXNzLm5leHRUaWNrOwor
CisvKioKKyAqIEluaGVyaXQgZnJvbSBgRXZlbnRFbWl0dGVyLnByb3RvdHlwZWAuCisgKi8KKwor
ZnVuY3Rpb24gRigpe307CitGLnByb3RvdHlwZSA9IEV2ZW50RW1pdHRlci5wcm90b3R5cGU7CitS
dW5uZXIucHJvdG90eXBlID0gbmV3IEY7CitSdW5uZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0g
UnVubmVyOworCisKKy8qKgorICogUnVuIHRlc3RzIHdpdGggZnVsbCB0aXRsZXMgbWF0Y2hpbmcg
YHJlYC4gVXBkYXRlcyBydW5uZXIudG90YWwKKyAqIHdpdGggbnVtYmVyIG9mIHRlc3RzIG1hdGNo
ZWQuCisgKgorICogQHBhcmFtIHtSZWdFeHB9IHJlCisgKiBAcGFyYW0ge0Jvb2xlYW59IGludmVy
dAorICogQHJldHVybiB7UnVubmVyfSBmb3IgY2hhaW5pbmcKKyAqIEBhcGkgcHVibGljCisgKi8K
KworUnVubmVyLnByb3RvdHlwZS5ncmVwID0gZnVuY3Rpb24ocmUsIGludmVydCl7CisgIGRlYnVn
KCdncmVwICVzJywgcmUpOworICB0aGlzLl9ncmVwID0gcmU7CisgIHRoaXMuX2ludmVydCA9IGlu
dmVydDsKKyAgdGhpcy50b3RhbCA9IHRoaXMuZ3JlcFRvdGFsKHRoaXMuc3VpdGUpOworICByZXR1
cm4gdGhpczsKK307CisKKy8qKgorICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHRlc3RzIG1hdGNo
aW5nIHRoZSBncmVwIHNlYXJjaCBmb3IgdGhlCisgKiBnaXZlbiBzdWl0ZS4KKyAqCisgKiBAcGFy
YW0ge1N1aXRlfSBzdWl0ZQorICogQHJldHVybiB7TnVtYmVyfQorICogQGFwaSBwdWJsaWMKKyAq
LworCitSdW5uZXIucHJvdG90eXBlLmdyZXBUb3RhbCA9IGZ1bmN0aW9uKHN1aXRlKSB7CisgIHZh
ciBzZWxmID0gdGhpczsKKyAgdmFyIHRvdGFsID0gMDsKKworICBzdWl0ZS5lYWNoVGVzdChmdW5j
dGlvbih0ZXN0KXsKKyAgICB2YXIgbWF0Y2ggPSBzZWxmLl9ncmVwLnRlc3QodGVzdC5mdWxsVGl0
bGUoKSk7CisgICAgaWYgKHNlbGYuX2ludmVydCkgbWF0Y2ggPSAhbWF0Y2g7CisgICAgaWYgKG1h
dGNoKSB0b3RhbCsrOworICB9KTsKKworICByZXR1cm4gdG90YWw7Cit9OworCisvKioKKyAqIFJl
dHVybiBhIGxpc3Qgb2YgZ2xvYmFsIHByb3BlcnRpZXMuCisgKgorICogQHJldHVybiB7QXJyYXl9
CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitSdW5uZXIucHJvdG90eXBlLmdsb2JhbFByb3BzID0g
ZnVuY3Rpb24oKSB7CisgIHZhciBwcm9wcyA9IHV0aWxzLmtleXMoZ2xvYmFsKTsKKworICAvLyBu
b24tZW51bWVyYWJsZXMKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBnbG9iYWxzLmxlbmd0aDsgKytp
KSB7CisgICAgaWYgKH51dGlscy5pbmRleE9mKHByb3BzLCBnbG9iYWxzW2ldKSkgY29udGludWU7
CisgICAgcHJvcHMucHVzaChnbG9iYWxzW2ldKTsKKyAgfQorCisgIHJldHVybiBwcm9wczsKK307
CisKKy8qKgorICogQWxsb3cgdGhlIGdpdmVuIGBhcnJgIG9mIGdsb2JhbHMuCisgKgorICogQHBh
cmFtIHtBcnJheX0gYXJyCisgKiBAcmV0dXJuIHtSdW5uZXJ9IGZvciBjaGFpbmluZworICogQGFw
aSBwdWJsaWMKKyAqLworCitSdW5uZXIucHJvdG90eXBlLmdsb2JhbHMgPSBmdW5jdGlvbihhcnIp
eworICBpZiAoMCA9PSBhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gdGhpcy5fZ2xvYmFsczsKKyAg
ZGVidWcoJ2dsb2JhbHMgJWonLCBhcnIpOworICB0aGlzLl9nbG9iYWxzID0gdGhpcy5fZ2xvYmFs
cy5jb25jYXQoYXJyKTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIENoZWNrIGZvciBn
bG9iYWwgdmFyaWFibGUgbGVha3MuCisgKgorICogQGFwaSBwcml2YXRlCisgKi8KKworUnVubmVy
LnByb3RvdHlwZS5jaGVja0dsb2JhbHMgPSBmdW5jdGlvbih0ZXN0KXsKKyAgaWYgKHRoaXMuaWdu
b3JlTGVha3MpIHJldHVybjsKKyAgdmFyIG9rID0gdGhpcy5fZ2xvYmFsczsKKworICB2YXIgZ2xv
YmFscyA9IHRoaXMuZ2xvYmFsUHJvcHMoKTsKKyAgdmFyIGxlYWtzOworCisgIGlmICh0ZXN0KSB7
CisgICAgb2sgPSBvay5jb25jYXQodGVzdC5fYWxsb3dlZEdsb2JhbHMgfHwgW10pOworICB9CisK
KyAgaWYodGhpcy5wcmV2R2xvYmFsc0xlbmd0aCA9PSBnbG9iYWxzLmxlbmd0aCkgcmV0dXJuOwor
ICB0aGlzLnByZXZHbG9iYWxzTGVuZ3RoID0gZ2xvYmFscy5sZW5ndGg7CisKKyAgbGVha3MgPSBm
aWx0ZXJMZWFrcyhvaywgZ2xvYmFscyk7CisgIHRoaXMuX2dsb2JhbHMgPSB0aGlzLl9nbG9iYWxz
LmNvbmNhdChsZWFrcyk7CisKKyAgaWYgKGxlYWtzLmxlbmd0aCA+IDEpIHsKKyAgICB0aGlzLmZh
aWwodGVzdCwgbmV3IEVycm9yKCdnbG9iYWwgbGVha3MgZGV0ZWN0ZWQ6ICcgKyBsZWFrcy5qb2lu
KCcsICcpICsgJycpKTsKKyAgfSBlbHNlIGlmIChsZWFrcy5sZW5ndGgpIHsKKyAgICB0aGlzLmZh
aWwodGVzdCwgbmV3IEVycm9yKCdnbG9iYWwgbGVhayBkZXRlY3RlZDogJyArIGxlYWtzWzBdKSk7
CisgIH0KK307CisKKy8qKgorICogRmFpbCB0aGUgZ2l2ZW4gYHRlc3RgLgorICoKKyAqIEBwYXJh
bSB7VGVzdH0gdGVzdAorICogQHBhcmFtIHtFcnJvcn0gZXJyCisgKiBAYXBpIHByaXZhdGUKKyAq
LworCitSdW5uZXIucHJvdG90eXBlLmZhaWwgPSBmdW5jdGlvbih0ZXN0LCBlcnIpeworICArK3Ro
aXMuZmFpbHVyZXM7CisgIHRlc3Quc3RhdGUgPSAnZmFpbGVkJzsKKworICBpZiAoJ3N0cmluZycg
PT0gdHlwZW9mIGVycikgeworICAgIGVyciA9IG5ldyBFcnJvcigndGhlIHN0cmluZyAiJyArIGVy
ciArICciIHdhcyB0aHJvd24sIHRocm93IGFuIEVycm9yIDopJyk7CisgIH0KKworICB0aGlzLmVt
aXQoJ2ZhaWwnLCB0ZXN0LCBlcnIpOworfTsKKworLyoqCisgKiBGYWlsIHRoZSBnaXZlbiBgaG9v
a2Agd2l0aCBgZXJyYC4KKyAqCisgKiBIb29rIGZhaWx1cmVzIHdvcmsgaW4gdGhlIGZvbGxvd2lu
ZyBwYXR0ZXJuOgorICogLSBJZiBiYWlsLCB0aGVuIGV4aXQKKyAqIC0gRmFpbGVkIGBiZWZvcmVg
IGhvb2sgc2tpcHMgYWxsIHRlc3RzIGluIGEgc3VpdGUgYW5kIHN1YnN1aXRlcywKKyAqICAgYnV0
IGp1bXBzIHRvIGNvcnJlc3BvbmRpbmcgYGFmdGVyYCBob29rCisgKiAtIEZhaWxlZCBgYmVmb3Jl
IGVhY2hgIGhvb2sgc2tpcHMgcmVtYWluaW5nIHRlc3RzIGluIGEKKyAqICAgc3VpdGUgYW5kIGp1
bXBzIHRvIGNvcnJlc3BvbmRpbmcgYGFmdGVyIGVhY2hgIGhvb2ssCisgKiAgIHdoaWNoIGlzIHJ1
biBvbmx5IG9uY2UKKyAqIC0gRmFpbGVkIGBhZnRlcmAgaG9vayBkb2VzIG5vdCBhbHRlcgorICog
ICBleGVjdXRpb24gb3JkZXIKKyAqIC0gRmFpbGVkIGBhZnRlciBlYWNoYCBob29rIHNraXBzIHJl
bWFpbmluZyB0ZXN0cyBpbiBhCisgKiAgIHN1aXRlIGFuZCBzdWJzdWl0ZXMsIGJ1dCBleGVjdXRl
cyBvdGhlciBgYWZ0ZXIgZWFjaGAKKyAqICAgaG9va3MKKyAqCisgKiBAcGFyYW0ge0hvb2t9IGhv
b2sKKyAqIEBwYXJhbSB7RXJyb3J9IGVycgorICogQGFwaSBwcml2YXRlCisgKi8KKworUnVubmVy
LnByb3RvdHlwZS5mYWlsSG9vayA9IGZ1bmN0aW9uKGhvb2ssIGVycil7CisgIHRoaXMuZmFpbCho
b29rLCBlcnIpOworICBpZiAodGhpcy5zdWl0ZS5iYWlsKCkpIHsKKyAgICB0aGlzLmVtaXQoJ2Vu
ZCcpOworICB9Cit9OworCisvKioKKyAqIFJ1biBob29rIGBuYW1lYCBjYWxsYmFja3MgYW5kIHRo
ZW4gaW52b2tlIGBmbigpYC4KKyAqCisgKiBAcGFyYW0ge1N0cmluZ30gbmFtZQorICogQHBhcmFt
IHtGdW5jdGlvbn0gZnVuY3Rpb24KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1J1bm5lci5wcm90
b3R5cGUuaG9vayA9IGZ1bmN0aW9uKG5hbWUsIGZuKXsKKyAgdmFyIHN1aXRlID0gdGhpcy5zdWl0
ZQorICAgICwgaG9va3MgPSBzdWl0ZVsnXycgKyBuYW1lXQorICAgICwgc2VsZiA9IHRoaXMKKyAg
ICAsIHRpbWVyOworCisgIGZ1bmN0aW9uIG5leHQoaSkgeworICAgIHZhciBob29rID0gaG9va3Nb
aV07CisgICAgaWYgKCFob29rKSByZXR1cm4gZm4oKTsKKyAgICBpZiAoc2VsZi5mYWlsdXJlcyAm
JiBzdWl0ZS5iYWlsKCkpIHJldHVybiBmbigpOworICAgIHNlbGYuY3VycmVudFJ1bm5hYmxlID0g
aG9vazsKKworICAgIGhvb2suY3R4LmN1cnJlbnRUZXN0ID0gc2VsZi50ZXN0OworCisgICAgc2Vs
Zi5lbWl0KCdob29rJywgaG9vayk7CisKKyAgICBob29rLm9uKCdlcnJvcicsIGZ1bmN0aW9uKGVy
cil7CisgICAgICBzZWxmLmZhaWxIb29rKGhvb2ssIGVycik7CisgICAgfSk7CisKKyAgICBob29r
LnJ1bihmdW5jdGlvbihlcnIpeworICAgICAgaG9vay5yZW1vdmVBbGxMaXN0ZW5lcnMoJ2Vycm9y
Jyk7CisgICAgICB2YXIgdGVzdEVycm9yID0gaG9vay5lcnJvcigpOworICAgICAgaWYgKHRlc3RF
cnJvcikgc2VsZi5mYWlsKHNlbGYudGVzdCwgdGVzdEVycm9yKTsKKyAgICAgIGlmIChlcnIpIHsK
KyAgICAgICAgc2VsZi5mYWlsSG9vayhob29rLCBlcnIpOworCisgICAgICAgIC8vIHN0b3AgZXhl
Y3V0aW5nIGhvb2tzLCBub3RpZnkgY2FsbGVlIG9mIGhvb2sgZXJyCisgICAgICAgIHJldHVybiBm
bihlcnIpOworICAgICAgfQorICAgICAgc2VsZi5lbWl0KCdob29rIGVuZCcsIGhvb2spOworICAg
ICAgZGVsZXRlIGhvb2suY3R4LmN1cnJlbnRUZXN0OworICAgICAgbmV4dCgrK2kpOworICAgIH0p
OworICB9CisKKyAgUnVubmVyLmltbWVkaWF0ZWx5KGZ1bmN0aW9uKCl7CisgICAgbmV4dCgwKTsK
KyAgfSk7Cit9OworCisvKioKKyAqIFJ1biBob29rIGBuYW1lYCBmb3IgdGhlIGdpdmVuIGFycmF5
IG9mIGBzdWl0ZXNgCisgKiBpbiBvcmRlciwgYW5kIGNhbGxiYWNrIGBmbihlcnIsIGVyclN1aXRl
KWAuCisgKgorICogQHBhcmFtIHtTdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7QXJyYXl9IHN1aXRl
cworICogQHBhcmFtIHtGdW5jdGlvbn0gZm4KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1J1bm5l
ci5wcm90b3R5cGUuaG9va3MgPSBmdW5jdGlvbihuYW1lLCBzdWl0ZXMsIGZuKXsKKyAgdmFyIHNl
bGYgPSB0aGlzCisgICAgLCBvcmlnID0gdGhpcy5zdWl0ZTsKKworICBmdW5jdGlvbiBuZXh0KHN1
aXRlKSB7CisgICAgc2VsZi5zdWl0ZSA9IHN1aXRlOworCisgICAgaWYgKCFzdWl0ZSkgeworICAg
ICAgc2VsZi5zdWl0ZSA9IG9yaWc7CisgICAgICByZXR1cm4gZm4oKTsKKyAgICB9CisKKyAgICBz
ZWxmLmhvb2sobmFtZSwgZnVuY3Rpb24oZXJyKXsKKyAgICAgIGlmIChlcnIpIHsKKyAgICAgICAg
dmFyIGVyclN1aXRlID0gc2VsZi5zdWl0ZTsKKyAgICAgICAgc2VsZi5zdWl0ZSA9IG9yaWc7Cisg
ICAgICAgIHJldHVybiBmbihlcnIsIGVyclN1aXRlKTsKKyAgICAgIH0KKworICAgICAgbmV4dChz
dWl0ZXMucG9wKCkpOworICAgIH0pOworICB9CisKKyAgbmV4dChzdWl0ZXMucG9wKCkpOworfTsK
KworLyoqCisgKiBSdW4gaG9va3MgZnJvbSB0aGUgdG9wIGxldmVsIGRvd24uCisgKgorICogQHBh
cmFtIHtTdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7RnVuY3Rpb259IGZuCisgKiBAYXBpIHByaXZh
dGUKKyAqLworCitSdW5uZXIucHJvdG90eXBlLmhvb2tVcCA9IGZ1bmN0aW9uKG5hbWUsIGZuKXsK
KyAgdmFyIHN1aXRlcyA9IFt0aGlzLnN1aXRlXS5jb25jYXQodGhpcy5wYXJlbnRzKCkpLnJldmVy
c2UoKTsKKyAgdGhpcy5ob29rcyhuYW1lLCBzdWl0ZXMsIGZuKTsKK307CisKKy8qKgorICogUnVu
IGhvb2tzIGZyb20gdGhlIGJvdHRvbSB1cC4KKyAqCisgKiBAcGFyYW0ge1N0cmluZ30gbmFtZQor
ICogQHBhcmFtIHtGdW5jdGlvbn0gZm4KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1J1bm5lci5w
cm90b3R5cGUuaG9va0Rvd24gPSBmdW5jdGlvbihuYW1lLCBmbil7CisgIHZhciBzdWl0ZXMgPSBb
dGhpcy5zdWl0ZV0uY29uY2F0KHRoaXMucGFyZW50cygpKTsKKyAgdGhpcy5ob29rcyhuYW1lLCBz
dWl0ZXMsIGZuKTsKK307CisKKy8qKgorICogUmV0dXJuIGFuIGFycmF5IG9mIHBhcmVudCBTdWl0
ZXMgZnJvbQorICogY2xvc2VzdCB0byBmdXJ0aGVzdC4KKyAqCisgKiBAcmV0dXJuIHtBcnJheX0K
KyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1J1bm5lci5wcm90b3R5cGUucGFyZW50cyA9IGZ1bmN0
aW9uKCl7CisgIHZhciBzdWl0ZSA9IHRoaXMuc3VpdGUKKyAgICAsIHN1aXRlcyA9IFtdOworICB3
aGlsZSAoc3VpdGUgPSBzdWl0ZS5wYXJlbnQpIHN1aXRlcy5wdXNoKHN1aXRlKTsKKyAgcmV0dXJu
IHN1aXRlczsKK307CisKKy8qKgorICogUnVuIHRoZSBjdXJyZW50IHRlc3QgYW5kIGNhbGxiYWNr
IGBmbihlcnIpYC4KKyAqCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbgorICogQGFwaSBwcml2YXRl
CisgKi8KKworUnVubmVyLnByb3RvdHlwZS5ydW5UZXN0ID0gZnVuY3Rpb24oZm4peworICB2YXIg
dGVzdCA9IHRoaXMudGVzdAorICAgICwgc2VsZiA9IHRoaXM7CisKKyAgaWYgKHRoaXMuYXN5bmNP
bmx5KSB0ZXN0LmFzeW5jT25seSA9IHRydWU7CisKKyAgdHJ5IHsKKyAgICB0ZXN0Lm9uKCdlcnJv
cicsIGZ1bmN0aW9uKGVycil7CisgICAgICBzZWxmLmZhaWwodGVzdCwgZXJyKTsKKyAgICB9KTsK
KyAgICB0ZXN0LnJ1bihmbik7CisgIH0gY2F0Y2ggKGVycikgeworICAgIGZuKGVycik7CisgIH0K
K307CisKKy8qKgorICogUnVuIHRlc3RzIGluIHRoZSBnaXZlbiBgc3VpdGVgIGFuZCBpbnZva2UK
KyAqIHRoZSBjYWxsYmFjayBgZm4oKWAgd2hlbiBjb21wbGV0ZS4KKyAqCisgKiBAcGFyYW0ge1N1
aXRlfSBzdWl0ZQorICogQHBhcmFtIHtGdW5jdGlvbn0gZm4KKyAqIEBhcGkgcHJpdmF0ZQorICov
CisKK1J1bm5lci5wcm90b3R5cGUucnVuVGVzdHMgPSBmdW5jdGlvbihzdWl0ZSwgZm4peworICB2
YXIgc2VsZiA9IHRoaXMKKyAgICAsIHRlc3RzID0gc3VpdGUudGVzdHMuc2xpY2UoKQorICAgICwg
dGVzdDsKKworCisgIGZ1bmN0aW9uIGhvb2tFcnIoZXJyLCBlcnJTdWl0ZSwgYWZ0ZXIpIHsKKyAg
ICAvLyBiZWZvcmUvYWZ0ZXIgRWFjaCBob29rIGZvciBlcnJTdWl0ZSBmYWlsZWQ6CisgICAgdmFy
IG9yaWcgPSBzZWxmLnN1aXRlOworCisgICAgLy8gZm9yIGZhaWxlZCAnYWZ0ZXIgZWFjaCcgaG9v
ayBzdGFydCBmcm9tIGVyclN1aXRlIHBhcmVudCwKKyAgICAvLyBvdGhlcndpc2Ugc3RhcnQgZnJv
bSBlcnJTdWl0ZSBpdHNlbGYKKyAgICBzZWxmLnN1aXRlID0gYWZ0ZXIgPyBlcnJTdWl0ZS5wYXJl
bnQgOiBlcnJTdWl0ZTsKKworICAgIGlmIChzZWxmLnN1aXRlKSB7CisgICAgICAvLyBjYWxsIGhv
b2tVcCBhZnRlckVhY2gKKyAgICAgIHNlbGYuaG9va1VwKCdhZnRlckVhY2gnLCBmdW5jdGlvbihl
cnIyLCBlcnJTdWl0ZTIpIHsKKyAgICAgICAgc2VsZi5zdWl0ZSA9IG9yaWc7CisgICAgICAgIC8v
IHNvbWUgaG9va3MgbWF5IGZhaWwgZXZlbiBub3cKKyAgICAgICAgaWYgKGVycjIpIHJldHVybiBo
b29rRXJyKGVycjIsIGVyclN1aXRlMiwgdHJ1ZSk7CisgICAgICAgIC8vIHJlcG9ydCBlcnJvciBz
dWl0ZQorICAgICAgICBmbihlcnJTdWl0ZSk7CisgICAgICB9KTsKKyAgICB9IGVsc2UgeworICAg
ICAgLy8gdGhlcmUgaXMgbm8gbmVlZCBjYWxsaW5nIG90aGVyICdhZnRlciBlYWNoJyBob29rcwor
ICAgICAgc2VsZi5zdWl0ZSA9IG9yaWc7CisgICAgICBmbihlcnJTdWl0ZSk7CisgICAgfQorICB9
CisKKyAgZnVuY3Rpb24gbmV4dChlcnIsIGVyclN1aXRlKSB7CisgICAgLy8gaWYgd2UgYmFpbCBh
ZnRlciBmaXJzdCBlcnIKKyAgICBpZiAoc2VsZi5mYWlsdXJlcyAmJiBzdWl0ZS5fYmFpbCkgcmV0
dXJuIGZuKCk7CisKKyAgICBpZiAoc2VsZi5fYWJvcnQpIHJldHVybiBmbigpOworCisgICAgaWYg
KGVycikgcmV0dXJuIGhvb2tFcnIoZXJyLCBlcnJTdWl0ZSwgdHJ1ZSk7CisKKyAgICAvLyBuZXh0
IHRlc3QKKyAgICB0ZXN0ID0gdGVzdHMuc2hpZnQoKTsKKworICAgIC8vIGFsbCBkb25lCisgICAg
aWYgKCF0ZXN0KSByZXR1cm4gZm4oKTsKKworICAgIC8vIGdyZXAKKyAgICB2YXIgbWF0Y2ggPSBz
ZWxmLl9ncmVwLnRlc3QodGVzdC5mdWxsVGl0bGUoKSk7CisgICAgaWYgKHNlbGYuX2ludmVydCkg
bWF0Y2ggPSAhbWF0Y2g7CisgICAgaWYgKCFtYXRjaCkgcmV0dXJuIG5leHQoKTsKKworICAgIC8v
IHBlbmRpbmcKKyAgICBpZiAodGVzdC5wZW5kaW5nKSB7CisgICAgICBzZWxmLmVtaXQoJ3BlbmRp
bmcnLCB0ZXN0KTsKKyAgICAgIHNlbGYuZW1pdCgndGVzdCBlbmQnLCB0ZXN0KTsKKyAgICAgIHJl
dHVybiBuZXh0KCk7CisgICAgfQorCisgICAgLy8gZXhlY3V0ZSB0ZXN0IGFuZCBob29rKHMpCisg
ICAgc2VsZi5lbWl0KCd0ZXN0Jywgc2VsZi50ZXN0ID0gdGVzdCk7CisgICAgc2VsZi5ob29rRG93
bignYmVmb3JlRWFjaCcsIGZ1bmN0aW9uKGVyciwgZXJyU3VpdGUpeworCisgICAgICBpZiAoZXJy
KSByZXR1cm4gaG9va0VycihlcnIsIGVyclN1aXRlLCBmYWxzZSk7CisKKyAgICAgIHNlbGYuY3Vy
cmVudFJ1bm5hYmxlID0gc2VsZi50ZXN0OworICAgICAgc2VsZi5ydW5UZXN0KGZ1bmN0aW9uKGVy
cil7CisgICAgICAgIHRlc3QgPSBzZWxmLnRlc3Q7CisKKyAgICAgICAgaWYgKGVycikgeworICAg
ICAgICAgIHNlbGYuZmFpbCh0ZXN0LCBlcnIpOworICAgICAgICAgIHNlbGYuZW1pdCgndGVzdCBl
bmQnLCB0ZXN0KTsKKyAgICAgICAgICByZXR1cm4gc2VsZi5ob29rVXAoJ2FmdGVyRWFjaCcsIG5l
eHQpOworICAgICAgICB9CisKKyAgICAgICAgdGVzdC5zdGF0ZSA9ICdwYXNzZWQnOworICAgICAg
ICBzZWxmLmVtaXQoJ3Bhc3MnLCB0ZXN0KTsKKyAgICAgICAgc2VsZi5lbWl0KCd0ZXN0IGVuZCcs
IHRlc3QpOworICAgICAgICBzZWxmLmhvb2tVcCgnYWZ0ZXJFYWNoJywgbmV4dCk7CisgICAgICB9
KTsKKyAgICB9KTsKKyAgfQorCisgIHRoaXMubmV4dCA9IG5leHQ7CisgIG5leHQoKTsKK307CisK
Ky8qKgorICogUnVuIHRoZSBnaXZlbiBgc3VpdGVgIGFuZCBpbnZva2UgdGhlCisgKiBjYWxsYmFj
ayBgZm4oKWAgd2hlbiBjb21wbGV0ZS4KKyAqCisgKiBAcGFyYW0ge1N1aXRlfSBzdWl0ZQorICog
QHBhcmFtIHtGdW5jdGlvbn0gZm4KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1J1bm5lci5wcm90
b3R5cGUucnVuU3VpdGUgPSBmdW5jdGlvbihzdWl0ZSwgZm4peworICB2YXIgdG90YWwgPSB0aGlz
LmdyZXBUb3RhbChzdWl0ZSkKKyAgICAsIHNlbGYgPSB0aGlzCisgICAgLCBpID0gMDsKKworICBk
ZWJ1ZygncnVuIHN1aXRlICVzJywgc3VpdGUuZnVsbFRpdGxlKCkpOworCisgIGlmICghdG90YWwp
IHJldHVybiBmbigpOworCisgIHRoaXMuZW1pdCgnc3VpdGUnLCB0aGlzLnN1aXRlID0gc3VpdGUp
OworCisgIGZ1bmN0aW9uIG5leHQoZXJyU3VpdGUpIHsKKyAgICBpZiAoZXJyU3VpdGUpIHsKKyAg
ICAgIC8vIGN1cnJlbnQgc3VpdGUgZmFpbGVkIG9uIGEgaG9vayBmcm9tIGVyclN1aXRlCisgICAg
ICBpZiAoZXJyU3VpdGUgPT0gc3VpdGUpIHsKKyAgICAgICAgLy8gaWYgZXJyU3VpdGUgaXMgY3Vy
cmVudCBzdWl0ZQorICAgICAgICAvLyBjb250aW51ZSB0byB0aGUgbmV4dCBzaWJsaW5nIHN1aXRl
CisgICAgICAgIHJldHVybiBkb25lKCk7CisgICAgICB9IGVsc2UgeworICAgICAgICAvLyBlcnJT
dWl0ZSBpcyBhbW9uZyB0aGUgcGFyZW50cyBvZiBjdXJyZW50IHN1aXRlCisgICAgICAgIC8vIHN0
b3AgZXhlY3V0aW9uIG9mIGVyclN1aXRlIGFuZCBhbGwgc3ViLXN1aXRlcworICAgICAgICByZXR1
cm4gZG9uZShlcnJTdWl0ZSk7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKHNlbGYuX2Fib3J0
KSByZXR1cm4gZG9uZSgpOworCisgICAgdmFyIGN1cnIgPSBzdWl0ZS5zdWl0ZXNbaSsrXTsKKyAg
ICBpZiAoIWN1cnIpIHJldHVybiBkb25lKCk7CisgICAgc2VsZi5ydW5TdWl0ZShjdXJyLCBuZXh0
KTsKKyAgfQorCisgIGZ1bmN0aW9uIGRvbmUoZXJyU3VpdGUpIHsKKyAgICBzZWxmLnN1aXRlID0g
c3VpdGU7CisgICAgc2VsZi5ob29rKCdhZnRlckFsbCcsIGZ1bmN0aW9uKCl7CisgICAgICBzZWxm
LmVtaXQoJ3N1aXRlIGVuZCcsIHN1aXRlKTsKKyAgICAgIGZuKGVyclN1aXRlKTsKKyAgICB9KTsK
KyAgfQorCisgIHRoaXMuaG9vaygnYmVmb3JlQWxsJywgZnVuY3Rpb24oZXJyKXsKKyAgICBpZiAo
ZXJyKSByZXR1cm4gZG9uZSgpOworICAgIHNlbGYucnVuVGVzdHMoc3VpdGUsIG5leHQpOworICB9
KTsKK307CisKKy8qKgorICogSGFuZGxlIHVuY2F1Z2h0IGV4Y2VwdGlvbnMuCisgKgorICogQHBh
cmFtIHtFcnJvcn0gZXJyCisgKiBAYXBpIHByaXZhdGUKKyAqLworCitSdW5uZXIucHJvdG90eXBl
LnVuY2F1Z2h0ID0gZnVuY3Rpb24oZXJyKXsKKyAgaWYgKGVycikgeworICAgIGRlYnVnKCd1bmNh
dWdodCBleGNlcHRpb24gJXMnLCBlcnIubWVzc2FnZSk7CisgIH0gZWxzZSB7CisgICAgZGVidWco
J3VuY2F1Z2h0IHVuZGVmaW5lZCBleGNlcHRpb24nKTsKKyAgICBlcnIgPSBuZXcgRXJyb3IoJ0Nh
dGNoZWQgdW5kZWZpbmVkIGVycm9yLCBkaWQgeW91IHRocm93IHdpdGhvdXQgc3BlY2lmeWluZyB3
aGF0PycpOworICB9CisgIAorICB2YXIgcnVubmFibGUgPSB0aGlzLmN1cnJlbnRSdW5uYWJsZTsK
KyAgaWYgKCFydW5uYWJsZSB8fCAnZmFpbGVkJyA9PSBydW5uYWJsZS5zdGF0ZSkgcmV0dXJuOwor
ICBydW5uYWJsZS5jbGVhclRpbWVvdXQoKTsKKyAgZXJyLnVuY2F1Z2h0ID0gdHJ1ZTsKKyAgdGhp
cy5mYWlsKHJ1bm5hYmxlLCBlcnIpOworCisgIC8vIHJlY292ZXIgZnJvbSB0ZXN0CisgIGlmICgn
dGVzdCcgPT0gcnVubmFibGUudHlwZSkgeworICAgIHRoaXMuZW1pdCgndGVzdCBlbmQnLCBydW5u
YWJsZSk7CisgICAgdGhpcy5ob29rVXAoJ2FmdGVyRWFjaCcsIHRoaXMubmV4dCk7CisgICAgcmV0
dXJuOworICB9CisKKyAgLy8gYmFpbCBvbiBob29rcworICB0aGlzLmVtaXQoJ2VuZCcpOworfTsK
KworLyoqCisgKiBSdW4gdGhlIHJvb3Qgc3VpdGUgYW5kIGludm9rZSBgZm4oZmFpbHVyZXMpYAor
ICogb24gY29tcGxldGlvbi4KKyAqCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbgorICogQHJldHVy
biB7UnVubmVyfSBmb3IgY2hhaW5pbmcKKyAqIEBhcGkgcHVibGljCisgKi8KKworUnVubmVyLnBy
b3RvdHlwZS5ydW4gPSBmdW5jdGlvbihmbil7CisgIHZhciBzZWxmID0gdGhpcworICAgICwgZm4g
PSBmbiB8fCBmdW5jdGlvbigpe307CisKKyAgZnVuY3Rpb24gdW5jYXVnaHQoZXJyKXsKKyAgICBz
ZWxmLnVuY2F1Z2h0KGVycik7CisgIH0KKworICBkZWJ1Zygnc3RhcnQnKTsKKworICAvLyBjYWxs
YmFjaworICB0aGlzLm9uKCdlbmQnLCBmdW5jdGlvbigpeworICAgIGRlYnVnKCdlbmQnKTsKKyAg
ICBwcm9jZXNzLnJlbW92ZUxpc3RlbmVyKCd1bmNhdWdodEV4Y2VwdGlvbicsIHVuY2F1Z2h0KTsK
KyAgICBmbihzZWxmLmZhaWx1cmVzKTsKKyAgfSk7CisKKyAgLy8gcnVuIHN1aXRlcworICB0aGlz
LmVtaXQoJ3N0YXJ0Jyk7CisgIHRoaXMucnVuU3VpdGUodGhpcy5zdWl0ZSwgZnVuY3Rpb24oKXsK
KyAgICBkZWJ1ZygnZmluaXNoZWQgcnVubmluZycpOworICAgIHNlbGYuZW1pdCgnZW5kJyk7Cisg
IH0pOworCisgIC8vIHVuY2F1Z2h0IGV4Y2VwdGlvbgorICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4
Y2VwdGlvbicsIHVuY2F1Z2h0KTsKKworICByZXR1cm4gdGhpczsKK307CisKKy8qKgorICogQ2xl
YW5seSBhYm9ydCBleGVjdXRpb24KKyAqCisgKiBAcmV0dXJuIHtSdW5uZXJ9IGZvciBjaGFpbmlu
ZworICogQGFwaSBwdWJsaWMKKyAqLworUnVubmVyLnByb3RvdHlwZS5hYm9ydCA9IGZ1bmN0aW9u
KCl7CisgIGRlYnVnKCdhYm9ydGluZycpOworICB0aGlzLl9hYm9ydCA9IHRydWU7Cit9CisKKy8q
KgorICogRmlsdGVyIGxlYWtzIHdpdGggdGhlIGdpdmVuIGdsb2JhbHMgZmxhZ2dlZCBhcyBgb2tg
LgorICoKKyAqIEBwYXJhbSB7QXJyYXl9IG9rCisgKiBAcGFyYW0ge0FycmF5fSBnbG9iYWxzCisg
KiBAcmV0dXJuIHtBcnJheX0KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK2Z1bmN0aW9uIGZpbHRl
ckxlYWtzKG9rLCBnbG9iYWxzKSB7CisgIHJldHVybiBmaWx0ZXIoZ2xvYmFscywgZnVuY3Rpb24o
a2V5KXsKKyAgICAvLyBGaXJlZm94IGFuZCBDaHJvbWUgZXhwb3NlcyBpZnJhbWVzIGFzIGluZGV4
IGluc2lkZSB0aGUgd2luZG93IG9iamVjdAorICAgIGlmICgvXmQrLy50ZXN0KGtleSkpIHJldHVy
biBmYWxzZTsKKworICAgIC8vIGluIGZpcmVmb3gKKyAgICAvLyBpZiBydW5uZXIgcnVucyBpbiBh
biBpZnJhbWUsIHRoaXMgaWZyYW1lJ3Mgd2luZG93LmdldEludGVyZmFjZSBtZXRob2Qgbm90IGlu
aXQgYXQgZmlyc3QKKyAgICAvLyBpdCBpcyBhc3NpZ25lZCBpbiBzb21lIHNlY29uZHMKKyAgICBp
ZiAoZ2xvYmFsLm5hdmlnYXRvciAmJiAvXmdldEludGVyZmFjZS8udGVzdChrZXkpKSByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyBhbiBpZnJhbWUgY291bGQgYmUgYXBwcm9hY2hlZCBieSB3aW5kb3db
aWZyYW1lSW5kZXhdCisgICAgLy8gaW4gaWU2LDcsOCBhbmQgb3BlcmEsIGlmcmFtZUluZGV4IGlz
IGVudW1lcmFibGUsIHRoaXMgY291bGQgY2F1c2UgbGVhaworICAgIGlmIChnbG9iYWwubmF2aWdh
dG9yICYmIC9eXGQrLy50ZXN0KGtleSkpIHJldHVybiBmYWxzZTsKKworICAgIC8vIE9wZXJhIGFu
ZCBJRSBleHBvc2UgZ2xvYmFsIHZhcmlhYmxlcyBmb3IgSFRNTCBlbGVtZW50IElEcyAoaXNzdWUg
IzI0MykKKyAgICBpZiAoL15tb2NoYS0vLnRlc3Qoa2V5KSkgcmV0dXJuIGZhbHNlOworCisgICAg
dmFyIG1hdGNoZWQgPSBmaWx0ZXIob2ssIGZ1bmN0aW9uKG9rKXsKKyAgICAgIGlmICh+b2suaW5k
ZXhPZignKicpKSByZXR1cm4gMCA9PSBrZXkuaW5kZXhPZihvay5zcGxpdCgnKicpWzBdKTsKKyAg
ICAgIHJldHVybiBrZXkgPT0gb2s7CisgICAgfSk7CisgICAgcmV0dXJuIG1hdGNoZWQubGVuZ3Ro
ID09IDAgJiYgKCFnbG9iYWwubmF2aWdhdG9yIHx8ICdvbmVycm9yJyAhPT0ga2V5KTsKKyAgfSk7
Cit9CisKKy8qKgorICogQXJyYXkgb2YgZ2xvYmFscyBkZXBlbmRlbnQgb24gdGhlIGVudmlyb25t
ZW50LgorICoKKyAqIEByZXR1cm4ge0FycmF5fQorICogQGFwaSBwcml2YXRlCisgKi8KKworIGZ1
bmN0aW9uIGV4dHJhR2xvYmFscygpIHsKKyAgaWYgKHR5cGVvZihwcm9jZXNzKSA9PT0gJ29iamVj
dCcgJiYKKyAgICAgIHR5cGVvZihwcm9jZXNzLnZlcnNpb24pID09PSAnc3RyaW5nJykgeworCisg
ICAgdmFyIG5vZGVWZXJzaW9uID0gcHJvY2Vzcy52ZXJzaW9uLnNwbGl0KCcuJykucmVkdWNlKGZ1
bmN0aW9uKGEsIHYpIHsKKyAgICAgIHJldHVybiBhIDw8IDggfCB2OworICAgIH0pOworCisgICAg
Ly8gJ2Vycm5vJyB3YXMgcmVuYW1lZCB0byBwcm9jZXNzLl9lcnJubyBpbiB2MC45LjExLgorCisg
ICAgaWYgKG5vZGVWZXJzaW9uIDwgMHgwMDA5MEIpIHsKKyAgICAgIHJldHVybiBbJ2Vycm5vJ107
CisgICAgfQorICB9CisKKyAgcmV0dXJuIFtdOworIH0KKworfSk7IC8vIG1vZHVsZTogcnVubmVy
LmpzCisKK3JlcXVpcmUucmVnaXN0ZXIoInN1aXRlLmpzIiwgZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCByZXF1aXJlKXsKKworLyoqCisgKiBNb2R1bGUgZGVwZW5kZW5jaWVzLgorICovCisKK3Zh
ciBFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCdicm93c2VyL2V2ZW50cycpLkV2ZW50RW1pdHRlcgor
ICAsIGRlYnVnID0gcmVxdWlyZSgnYnJvd3Nlci9kZWJ1ZycpKCdtb2NoYTpzdWl0ZScpCisgICwg
bWlsbGlzZWNvbmRzID0gcmVxdWlyZSgnLi9tcycpCisgICwgdXRpbHMgPSByZXF1aXJlKCcuL3V0
aWxzJykKKyAgLCBIb29rID0gcmVxdWlyZSgnLi9ob29rJyk7CisKKy8qKgorICogRXhwb3NlIGBT
dWl0ZWAuCisgKi8KKworZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gU3VpdGU7CisKKy8qKgor
ICogQ3JlYXRlIGEgbmV3IGBTdWl0ZWAgd2l0aCB0aGUgZ2l2ZW4gYHRpdGxlYAorICogYW5kIHBh
cmVudCBgU3VpdGVgLiBXaGVuIGEgc3VpdGUgd2l0aCB0aGUKKyAqIHNhbWUgdGl0bGUgaXMgYWxy
ZWFkeSBwcmVzZW50LCB0aGF0IHN1aXRlCisgKiBpcyByZXR1cm5lZCB0byBwcm92aWRlIG5pY2Vy
IHJlcG9ydGVyCisgKiBhbmQgbW9yZSBmbGV4aWJsZSBtZXRhLXRlc3RpbmcuCisgKgorICogQHBh
cmFtIHtTdWl0ZX0gcGFyZW50CisgKiBAcGFyYW0ge1N0cmluZ30gdGl0bGUKKyAqIEByZXR1cm4g
e1N1aXRlfQorICogQGFwaSBwdWJsaWMKKyAqLworCitleHBvcnRzLmNyZWF0ZSA9IGZ1bmN0aW9u
KHBhcmVudCwgdGl0bGUpeworICB2YXIgc3VpdGUgPSBuZXcgU3VpdGUodGl0bGUsIHBhcmVudC5j
dHgpOworICBzdWl0ZS5wYXJlbnQgPSBwYXJlbnQ7CisgIGlmIChwYXJlbnQucGVuZGluZykgc3Vp
dGUucGVuZGluZyA9IHRydWU7CisgIHRpdGxlID0gc3VpdGUuZnVsbFRpdGxlKCk7CisgIHBhcmVu
dC5hZGRTdWl0ZShzdWl0ZSk7CisgIHJldHVybiBzdWl0ZTsKK307CisKKy8qKgorICogSW5pdGlh
bGl6ZSBhIG5ldyBgU3VpdGVgIHdpdGggdGhlIGdpdmVuCisgKiBgdGl0bGVgIGFuZCBgY3R4YC4K
KyAqCisgKiBAcGFyYW0ge1N0cmluZ30gdGl0bGUKKyAqIEBwYXJhbSB7Q29udGV4dH0gY3R4Cisg
KiBAYXBpIHByaXZhdGUKKyAqLworCitmdW5jdGlvbiBTdWl0ZSh0aXRsZSwgcGFyZW50Q29udGV4
dCkgeworICB0aGlzLnRpdGxlID0gdGl0bGU7CisgIHZhciBjb250ZXh0ID0gZnVuY3Rpb24oKSB7
fTsKKyAgY29udGV4dC5wcm90b3R5cGUgPSBwYXJlbnRDb250ZXh0OworICB0aGlzLmN0eCA9IG5l
dyBjb250ZXh0KCk7CisgIHRoaXMuc3VpdGVzID0gW107CisgIHRoaXMudGVzdHMgPSBbXTsKKyAg
dGhpcy5wZW5kaW5nID0gZmFsc2U7CisgIHRoaXMuX2JlZm9yZUVhY2ggPSBbXTsKKyAgdGhpcy5f
YmVmb3JlQWxsID0gW107CisgIHRoaXMuX2FmdGVyRWFjaCA9IFtdOworICB0aGlzLl9hZnRlckFs
bCA9IFtdOworICB0aGlzLnJvb3QgPSAhdGl0bGU7CisgIHRoaXMuX3RpbWVvdXQgPSAyMDAwOwor
ICB0aGlzLl9lbmFibGVUaW1lb3V0cyA9IHRydWU7CisgIHRoaXMuX3Nsb3cgPSA3NTsKKyAgdGhp
cy5fYmFpbCA9IGZhbHNlOworfQorCisvKioKKyAqIEluaGVyaXQgZnJvbSBgRXZlbnRFbWl0dGVy
LnByb3RvdHlwZWAuCisgKi8KKworZnVuY3Rpb24gRigpe307CitGLnByb3RvdHlwZSA9IEV2ZW50
RW1pdHRlci5wcm90b3R5cGU7CitTdWl0ZS5wcm90b3R5cGUgPSBuZXcgRjsKK1N1aXRlLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IFN1aXRlOworCisKKy8qKgorICogUmV0dXJuIGEgY2xvbmUgb2Yg
dGhpcyBgU3VpdGVgLgorICoKKyAqIEByZXR1cm4ge1N1aXRlfQorICogQGFwaSBwcml2YXRlCisg
Ki8KKworU3VpdGUucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKXsKKyAgdmFyIHN1aXRlID0g
bmV3IFN1aXRlKHRoaXMudGl0bGUpOworICBkZWJ1ZygnY2xvbmUnKTsKKyAgc3VpdGUuY3R4ID0g
dGhpcy5jdHg7CisgIHN1aXRlLnRpbWVvdXQodGhpcy50aW1lb3V0KCkpOworICBzdWl0ZS5lbmFi
bGVUaW1lb3V0cyh0aGlzLmVuYWJsZVRpbWVvdXRzKCkpOworICBzdWl0ZS5zbG93KHRoaXMuc2xv
dygpKTsKKyAgc3VpdGUuYmFpbCh0aGlzLmJhaWwoKSk7CisgIHJldHVybiBzdWl0ZTsKK307CisK
Ky8qKgorICogU2V0IHRpbWVvdXQgYG1zYCBvciBzaG9ydC1oYW5kIHN1Y2ggYXMgIjJzIi4KKyAq
CisgKiBAcGFyYW0ge051bWJlcnxTdHJpbmd9IG1zCisgKiBAcmV0dXJuIHtTdWl0ZXxOdW1iZXJ9
IGZvciBjaGFpbmluZworICogQGFwaSBwcml2YXRlCisgKi8KKworU3VpdGUucHJvdG90eXBlLnRp
bWVvdXQgPSBmdW5jdGlvbihtcyl7CisgIGlmICgwID09IGFyZ3VtZW50cy5sZW5ndGgpIHJldHVy
biB0aGlzLl90aW1lb3V0OworICBpZiAoJ3N0cmluZycgPT0gdHlwZW9mIG1zKSBtcyA9IG1pbGxp
c2Vjb25kcyhtcyk7CisgIGRlYnVnKCd0aW1lb3V0ICVkJywgbXMpOworICB0aGlzLl90aW1lb3V0
ID0gcGFyc2VJbnQobXMsIDEwKTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAgKiBTZXQg
dGltZW91dCBgZW5hYmxlZGAuCisgICoKKyAgKiBAcGFyYW0ge0Jvb2xlYW59IGVuYWJsZWQKKyAg
KiBAcmV0dXJuIHtTdWl0ZXxCb29sZWFufSBzZWxmIG9yIGVuYWJsZWQKKyAgKiBAYXBpIHByaXZh
dGUKKyAgKi8KKworU3VpdGUucHJvdG90eXBlLmVuYWJsZVRpbWVvdXRzID0gZnVuY3Rpb24oZW5h
YmxlZCl7CisgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gdGhpcy5fZW5hYmxl
VGltZW91dHM7CisgIGRlYnVnKCdlbmFibGVUaW1lb3V0cyAlcycsIGVuYWJsZWQpOworICB0aGlz
Ll9lbmFibGVUaW1lb3V0cyA9IGVuYWJsZWQ7CisgIHJldHVybiB0aGlzOworfQorCisvKioKKyAq
IFNldCBzbG93IGBtc2Agb3Igc2hvcnQtaGFuZCBzdWNoIGFzICIycyIuCisgKgorICogQHBhcmFt
IHtOdW1iZXJ8U3RyaW5nfSBtcworICogQHJldHVybiB7U3VpdGV8TnVtYmVyfSBmb3IgY2hhaW5p
bmcKKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1N1aXRlLnByb3RvdHlwZS5zbG93ID0gZnVuY3Rp
b24obXMpeworICBpZiAoMCA9PT0gYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIHRoaXMuX3Nsb3c7
CisgIGlmICgnc3RyaW5nJyA9PSB0eXBlb2YgbXMpIG1zID0gbWlsbGlzZWNvbmRzKG1zKTsKKyAg
ZGVidWcoJ3Nsb3cgJWQnLCBtcyk7CisgIHRoaXMuX3Nsb3cgPSBtczsKKyAgcmV0dXJuIHRoaXM7
Cit9OworCisvKioKKyAqIFNldHMgd2hldGhlciB0byBiYWlsIGFmdGVyIGZpcnN0IGVycm9yLgor
ICoKKyAqIEBwYXJtYSB7Qm9vbGVhbn0gYmFpbAorICogQHJldHVybiB7U3VpdGV8TnVtYmVyfSBm
b3IgY2hhaW5pbmcKKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1N1aXRlLnByb3RvdHlwZS5iYWls
ID0gZnVuY3Rpb24oYmFpbCl7CisgIGlmICgwID09IGFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiB0
aGlzLl9iYWlsOworICBkZWJ1ZygnYmFpbCAlcycsIGJhaWwpOworICB0aGlzLl9iYWlsID0gYmFp
bDsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIFJ1biBgZm4odGVzdFssIGRvbmVdKWAg
YmVmb3JlIHJ1bm5pbmcgdGVzdHMuCisgKgorICogQHBhcmFtIHtGdW5jdGlvbn0gZm4KKyAqIEBy
ZXR1cm4ge1N1aXRlfSBmb3IgY2hhaW5pbmcKKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1N1aXRl
LnByb3RvdHlwZS5iZWZvcmVBbGwgPSBmdW5jdGlvbih0aXRsZSwgZm4peworICBpZiAodGhpcy5w
ZW5kaW5nKSByZXR1cm4gdGhpczsKKyAgaWYgKCdmdW5jdGlvbicgPT09IHR5cGVvZiB0aXRsZSkg
eworICAgIGZuID0gdGl0bGU7CisgICAgdGl0bGUgPSBmbi5uYW1lOworICB9CisgIHRpdGxlID0g
JyJiZWZvcmUgYWxsIiBob29rJyArICh0aXRsZSA/ICc6ICcgKyB0aXRsZSA6ICcnKTsKKworICB2
YXIgaG9vayA9IG5ldyBIb29rKHRpdGxlLCBmbik7CisgIGhvb2sucGFyZW50ID0gdGhpczsKKyAg
aG9vay50aW1lb3V0KHRoaXMudGltZW91dCgpKTsKKyAgaG9vay5lbmFibGVUaW1lb3V0cyh0aGlz
LmVuYWJsZVRpbWVvdXRzKCkpOworICBob29rLnNsb3codGhpcy5zbG93KCkpOworICBob29rLmN0
eCA9IHRoaXMuY3R4OworICB0aGlzLl9iZWZvcmVBbGwucHVzaChob29rKTsKKyAgdGhpcy5lbWl0
KCdiZWZvcmVBbGwnLCBob29rKTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIFJ1biBg
Zm4odGVzdFssIGRvbmVdKWAgYWZ0ZXIgcnVubmluZyB0ZXN0cy4KKyAqCisgKiBAcGFyYW0ge0Z1
bmN0aW9ufSBmbgorICogQHJldHVybiB7U3VpdGV9IGZvciBjaGFpbmluZworICogQGFwaSBwcml2
YXRlCisgKi8KKworU3VpdGUucHJvdG90eXBlLmFmdGVyQWxsID0gZnVuY3Rpb24odGl0bGUsIGZu
KXsKKyAgaWYgKHRoaXMucGVuZGluZykgcmV0dXJuIHRoaXM7CisgIGlmICgnZnVuY3Rpb24nID09
PSB0eXBlb2YgdGl0bGUpIHsKKyAgICBmbiA9IHRpdGxlOworICAgIHRpdGxlID0gZm4ubmFtZTsK
KyAgfQorICB0aXRsZSA9ICciYWZ0ZXIgYWxsIiBob29rJyArICh0aXRsZSA/ICc6ICcgKyB0aXRs
ZSA6ICcnKTsKKworICB2YXIgaG9vayA9IG5ldyBIb29rKHRpdGxlLCBmbik7CisgIGhvb2sucGFy
ZW50ID0gdGhpczsKKyAgaG9vay50aW1lb3V0KHRoaXMudGltZW91dCgpKTsKKyAgaG9vay5lbmFi
bGVUaW1lb3V0cyh0aGlzLmVuYWJsZVRpbWVvdXRzKCkpOworICBob29rLnNsb3codGhpcy5zbG93
KCkpOworICBob29rLmN0eCA9IHRoaXMuY3R4OworICB0aGlzLl9hZnRlckFsbC5wdXNoKGhvb2sp
OworICB0aGlzLmVtaXQoJ2FmdGVyQWxsJywgaG9vayk7CisgIHJldHVybiB0aGlzOworfTsKKwor
LyoqCisgKiBSdW4gYGZuKHRlc3RbLCBkb25lXSlgIGJlZm9yZSBlYWNoIHRlc3QgY2FzZS4KKyAq
CisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbgorICogQHJldHVybiB7U3VpdGV9IGZvciBjaGFpbmlu
ZworICogQGFwaSBwcml2YXRlCisgKi8KKworU3VpdGUucHJvdG90eXBlLmJlZm9yZUVhY2ggPSBm
dW5jdGlvbih0aXRsZSwgZm4peworICBpZiAodGhpcy5wZW5kaW5nKSByZXR1cm4gdGhpczsKKyAg
aWYgKCdmdW5jdGlvbicgPT09IHR5cGVvZiB0aXRsZSkgeworICAgIGZuID0gdGl0bGU7CisgICAg
dGl0bGUgPSBmbi5uYW1lOworICB9CisgIHRpdGxlID0gJyJiZWZvcmUgZWFjaCIgaG9vaycgKyAo
dGl0bGUgPyAnOiAnICsgdGl0bGUgOiAnJyk7CisKKyAgdmFyIGhvb2sgPSBuZXcgSG9vayh0aXRs
ZSwgZm4pOworICBob29rLnBhcmVudCA9IHRoaXM7CisgIGhvb2sudGltZW91dCh0aGlzLnRpbWVv
dXQoKSk7CisgIGhvb2suZW5hYmxlVGltZW91dHModGhpcy5lbmFibGVUaW1lb3V0cygpKTsKKyAg
aG9vay5zbG93KHRoaXMuc2xvdygpKTsKKyAgaG9vay5jdHggPSB0aGlzLmN0eDsKKyAgdGhpcy5f
YmVmb3JlRWFjaC5wdXNoKGhvb2spOworICB0aGlzLmVtaXQoJ2JlZm9yZUVhY2gnLCBob29rKTsK
KyAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIFJ1biBgZm4odGVzdFssIGRvbmVdKWAgYWZ0
ZXIgZWFjaCB0ZXN0IGNhc2UuCisgKgorICogQHBhcmFtIHtGdW5jdGlvbn0gZm4KKyAqIEByZXR1
cm4ge1N1aXRlfSBmb3IgY2hhaW5pbmcKKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1N1aXRlLnBy
b3RvdHlwZS5hZnRlckVhY2ggPSBmdW5jdGlvbih0aXRsZSwgZm4peworICBpZiAodGhpcy5wZW5k
aW5nKSByZXR1cm4gdGhpczsKKyAgaWYgKCdmdW5jdGlvbicgPT09IHR5cGVvZiB0aXRsZSkgewor
ICAgIGZuID0gdGl0bGU7CisgICAgdGl0bGUgPSBmbi5uYW1lOworICB9CisgIHRpdGxlID0gJyJh
ZnRlciBlYWNoIiBob29rJyArICh0aXRsZSA/ICc6ICcgKyB0aXRsZSA6ICcnKTsKKworICB2YXIg
aG9vayA9IG5ldyBIb29rKHRpdGxlLCBmbik7CisgIGhvb2sucGFyZW50ID0gdGhpczsKKyAgaG9v
ay50aW1lb3V0KHRoaXMudGltZW91dCgpKTsKKyAgaG9vay5lbmFibGVUaW1lb3V0cyh0aGlzLmVu
YWJsZVRpbWVvdXRzKCkpOworICBob29rLnNsb3codGhpcy5zbG93KCkpOworICBob29rLmN0eCA9
IHRoaXMuY3R4OworICB0aGlzLl9hZnRlckVhY2gucHVzaChob29rKTsKKyAgdGhpcy5lbWl0KCdh
ZnRlckVhY2gnLCBob29rKTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIEFkZCBhIHRl
c3QgYHN1aXRlYC4KKyAqCisgKiBAcGFyYW0ge1N1aXRlfSBzdWl0ZQorICogQHJldHVybiB7U3Vp
dGV9IGZvciBjaGFpbmluZworICogQGFwaSBwcml2YXRlCisgKi8KKworU3VpdGUucHJvdG90eXBl
LmFkZFN1aXRlID0gZnVuY3Rpb24oc3VpdGUpeworICBzdWl0ZS5wYXJlbnQgPSB0aGlzOworICBz
dWl0ZS50aW1lb3V0KHRoaXMudGltZW91dCgpKTsKKyAgc3VpdGUuZW5hYmxlVGltZW91dHModGhp
cy5lbmFibGVUaW1lb3V0cygpKTsKKyAgc3VpdGUuc2xvdyh0aGlzLnNsb3coKSk7CisgIHN1aXRl
LmJhaWwodGhpcy5iYWlsKCkpOworICB0aGlzLnN1aXRlcy5wdXNoKHN1aXRlKTsKKyAgdGhpcy5l
bWl0KCdzdWl0ZScsIHN1aXRlKTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIEFkZCBh
IGB0ZXN0YCB0byB0aGlzIHN1aXRlLgorICoKKyAqIEBwYXJhbSB7VGVzdH0gdGVzdAorICogQHJl
dHVybiB7U3VpdGV9IGZvciBjaGFpbmluZworICogQGFwaSBwcml2YXRlCisgKi8KKworU3VpdGUu
cHJvdG90eXBlLmFkZFRlc3QgPSBmdW5jdGlvbih0ZXN0KXsKKyAgdGVzdC5wYXJlbnQgPSB0aGlz
OworICB0ZXN0LnRpbWVvdXQodGhpcy50aW1lb3V0KCkpOworICB0ZXN0LmVuYWJsZVRpbWVvdXRz
KHRoaXMuZW5hYmxlVGltZW91dHMoKSk7CisgIHRlc3Quc2xvdyh0aGlzLnNsb3coKSk7CisgIHRl
c3QuY3R4ID0gdGhpcy5jdHg7CisgIHRoaXMudGVzdHMucHVzaCh0ZXN0KTsKKyAgdGhpcy5lbWl0
KCd0ZXN0JywgdGVzdCk7CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBSZXR1cm4gdGhl
IGZ1bGwgdGl0bGUgZ2VuZXJhdGVkIGJ5IHJlY3Vyc2l2ZWx5CisgKiBjb25jYXRlbmF0aW5nIHRo
ZSBwYXJlbnQncyBmdWxsIHRpdGxlLgorICoKKyAqIEByZXR1cm4ge1N0cmluZ30KKyAqIEBhcGkg
cHVibGljCisgKi8KKworU3VpdGUucHJvdG90eXBlLmZ1bGxUaXRsZSA9IGZ1bmN0aW9uKCl7Cisg
IGlmICh0aGlzLnBhcmVudCkgeworICAgIHZhciBmdWxsID0gdGhpcy5wYXJlbnQuZnVsbFRpdGxl
KCk7CisgICAgaWYgKGZ1bGwpIHJldHVybiBmdWxsICsgJyAnICsgdGhpcy50aXRsZTsKKyAgfQor
ICByZXR1cm4gdGhpcy50aXRsZTsKK307CisKKy8qKgorICogUmV0dXJuIHRoZSB0b3RhbCBudW1i
ZXIgb2YgdGVzdHMuCisgKgorICogQHJldHVybiB7TnVtYmVyfQorICogQGFwaSBwdWJsaWMKKyAq
LworCitTdWl0ZS5wcm90b3R5cGUudG90YWwgPSBmdW5jdGlvbigpeworICByZXR1cm4gdXRpbHMu
cmVkdWNlKHRoaXMuc3VpdGVzLCBmdW5jdGlvbihzdW0sIHN1aXRlKXsKKyAgICByZXR1cm4gc3Vt
ICsgc3VpdGUudG90YWwoKTsKKyAgfSwgMCkgKyB0aGlzLnRlc3RzLmxlbmd0aDsKK307CisKKy8q
KgorICogSXRlcmF0ZXMgdGhyb3VnaCBlYWNoIHN1aXRlIHJlY3Vyc2l2ZWx5IHRvIGZpbmQKKyAq
IGFsbCB0ZXN0cy4gQXBwbGllcyBhIGZ1bmN0aW9uIGluIHRoZSBmb3JtYXQKKyAqIGBmbih0ZXN0
KWAuCisgKgorICogQHBhcmFtIHtGdW5jdGlvbn0gZm4KKyAqIEByZXR1cm4ge1N1aXRlfQorICog
QGFwaSBwcml2YXRlCisgKi8KKworU3VpdGUucHJvdG90eXBlLmVhY2hUZXN0ID0gZnVuY3Rpb24o
Zm4peworICB1dGlscy5mb3JFYWNoKHRoaXMudGVzdHMsIGZuKTsKKyAgdXRpbHMuZm9yRWFjaCh0
aGlzLnN1aXRlcywgZnVuY3Rpb24oc3VpdGUpeworICAgIHN1aXRlLmVhY2hUZXN0KGZuKTsKKyAg
fSk7CisgIHJldHVybiB0aGlzOworfTsKKworfSk7IC8vIG1vZHVsZTogc3VpdGUuanMKKworcmVx
dWlyZS5yZWdpc3RlcigidGVzdC5qcyIsIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgcmVxdWly
ZSl7CisKKy8qKgorICogTW9kdWxlIGRlcGVuZGVuY2llcy4KKyAqLworCit2YXIgUnVubmFibGUg
PSByZXF1aXJlKCcuL3J1bm5hYmxlJyk7CisKKy8qKgorICogRXhwb3NlIGBUZXN0YC4KKyAqLwor
Cittb2R1bGUuZXhwb3J0cyA9IFRlc3Q7CisKKy8qKgorICogSW5pdGlhbGl6ZSBhIG5ldyBgVGVz
dGAgd2l0aCB0aGUgZ2l2ZW4gYHRpdGxlYCBhbmQgY2FsbGJhY2sgYGZuYC4KKyAqCisgKiBAcGFy
YW0ge1N0cmluZ30gdGl0bGUKKyAqIEBwYXJhbSB7RnVuY3Rpb259IGZuCisgKiBAYXBpIHByaXZh
dGUKKyAqLworCitmdW5jdGlvbiBUZXN0KHRpdGxlLCBmbikgeworICBSdW5uYWJsZS5jYWxsKHRo
aXMsIHRpdGxlLCBmbik7CisgIHRoaXMucGVuZGluZyA9ICFmbjsKKyAgdGhpcy50eXBlID0gJ3Rl
c3QnOworfQorCisvKioKKyAqIEluaGVyaXQgZnJvbSBgUnVubmFibGUucHJvdG90eXBlYC4KKyAq
LworCitmdW5jdGlvbiBGKCl7fTsKK0YucHJvdG90eXBlID0gUnVubmFibGUucHJvdG90eXBlOwor
VGVzdC5wcm90b3R5cGUgPSBuZXcgRjsKK1Rlc3QucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVGVz
dDsKKworCit9KTsgLy8gbW9kdWxlOiB0ZXN0LmpzCisKK3JlcXVpcmUucmVnaXN0ZXIoInV0aWxz
LmpzIiwgZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCByZXF1aXJlKXsKKy8qKgorICogTW9kdWxl
IGRlcGVuZGVuY2llcy4KKyAqLworCit2YXIgZnMgPSByZXF1aXJlKCdicm93c2VyL2ZzJykKKyAg
LCBwYXRoID0gcmVxdWlyZSgnYnJvd3Nlci9wYXRoJykKKyAgLCBqb2luID0gcGF0aC5qb2luCisg
ICwgZGVidWcgPSByZXF1aXJlKCdicm93c2VyL2RlYnVnJykoJ21vY2hhOndhdGNoJyk7CisKKy8q
KgorICogSWdub3JlZCBkaXJlY3Rvcmllcy4KKyAqLworCit2YXIgaWdub3JlID0gWydub2RlX21v
ZHVsZXMnLCAnLmdpdCddOworCisvKioKKyAqIEVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4g
dGhlIGdpdmVuIHN0cmluZyBvZiBodG1sLgorICoKKyAqIEBwYXJhbSAge1N0cmluZ30gaHRtbAor
ICogQHJldHVybiB7U3RyaW5nfQorICogQGFwaSBwcml2YXRlCisgKi8KKworZXhwb3J0cy5lc2Nh
cGUgPSBmdW5jdGlvbihodG1sKXsKKyAgcmV0dXJuIFN0cmluZyhodG1sKQorICAgIC5yZXBsYWNl
KC8mL2csICcmYW1wOycpCisgICAgLnJlcGxhY2UoLyIvZywgJyZxdW90OycpCisgICAgLnJlcGxh
Y2UoLzwvZywgJyZsdDsnKQorICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7Jyk7Cit9OworCisvKioK
KyAqIEFycmF5I2ZvckVhY2ggKDw9SUU4KQorICoKKyAqIEBwYXJhbSB7QXJyYXl9IGFycmF5Cisg
KiBAcGFyYW0ge0Z1bmN0aW9ufSBmbgorICogQHBhcmFtIHtPYmplY3R9IHNjb3BlCisgKiBAYXBp
IHByaXZhdGUKKyAqLworCitleHBvcnRzLmZvckVhY2ggPSBmdW5jdGlvbihhcnIsIGZuLCBzY29w
ZSl7CisgIGZvciAodmFyIGkgPSAwLCBsID0gYXJyLmxlbmd0aDsgaSA8IGw7IGkrKykKKyAgICBm
bi5jYWxsKHNjb3BlLCBhcnJbaV0sIGkpOworfTsKKworLyoqCisgKiBBcnJheSNtYXAgKDw9SUU4
KQorICoKKyAqIEBwYXJhbSB7QXJyYXl9IGFycmF5CisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbgor
ICogQHBhcmFtIHtPYmplY3R9IHNjb3BlCisgKiBAYXBpIHByaXZhdGUKKyAqLworCitleHBvcnRz
Lm1hcCA9IGZ1bmN0aW9uKGFyciwgZm4sIHNjb3BlKXsKKyAgdmFyIHJlc3VsdCA9IFtdOworICBm
b3IgKHZhciBpID0gMCwgbCA9IGFyci5sZW5ndGg7IGkgPCBsOyBpKyspCisgICAgcmVzdWx0LnB1
c2goZm4uY2FsbChzY29wZSwgYXJyW2ldLCBpKSk7CisgIHJldHVybiByZXN1bHQ7Cit9OworCisv
KioKKyAqIEFycmF5I2luZGV4T2YgKDw9SUU4KQorICoKKyAqIEBwYXJtYSB7QXJyYXl9IGFycgor
ICogQHBhcmFtIHtPYmplY3R9IG9iaiB0byBmaW5kIGluZGV4IG9mCisgKiBAcGFyYW0ge051bWJl
cn0gc3RhcnQKKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK2V4cG9ydHMuaW5kZXhPZiA9IGZ1bmN0
aW9uKGFyciwgb2JqLCBzdGFydCl7CisgIGZvciAodmFyIGkgPSBzdGFydCB8fCAwLCBsID0gYXJy
Lmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgIGlmIChhcnJbaV0gPT09IG9iaikKKyAgICAgIHJl
dHVybiBpOworICB9CisgIHJldHVybiAtMTsKK307CisKKy8qKgorICogQXJyYXkjcmVkdWNlICg8
PUlFOCkKKyAqCisgKiBAcGFyYW0ge0FycmF5fSBhcnJheQorICogQHBhcmFtIHtGdW5jdGlvbn0g
Zm4KKyAqIEBwYXJhbSB7T2JqZWN0fSBpbml0aWFsIHZhbHVlCisgKiBAYXBpIHByaXZhdGUKKyAq
LworCitleHBvcnRzLnJlZHVjZSA9IGZ1bmN0aW9uKGFyciwgZm4sIHZhbCl7CisgIHZhciBydmFs
ID0gdmFsOworCisgIGZvciAodmFyIGkgPSAwLCBsID0gYXJyLmxlbmd0aDsgaSA8IGw7IGkrKykg
eworICAgIHJ2YWwgPSBmbihydmFsLCBhcnJbaV0sIGksIGFycik7CisgIH0KKworICByZXR1cm4g
cnZhbDsKK307CisKKy8qKgorICogQXJyYXkjZmlsdGVyICg8PUlFOCkKKyAqCisgKiBAcGFyYW0g
e0FycmF5fSBhcnJheQorICogQHBhcmFtIHtGdW5jdGlvbn0gZm4KKyAqIEBhcGkgcHJpdmF0ZQor
ICovCisKK2V4cG9ydHMuZmlsdGVyID0gZnVuY3Rpb24oYXJyLCBmbil7CisgIHZhciByZXQgPSBb
XTsKKworICBmb3IgKHZhciBpID0gMCwgbCA9IGFyci5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAg
ICB2YXIgdmFsID0gYXJyW2ldOworICAgIGlmIChmbih2YWwsIGksIGFycikpIHJldC5wdXNoKHZh
bCk7CisgIH0KKworICByZXR1cm4gcmV0OworfTsKKworLyoqCisgKiBPYmplY3Qua2V5cyAoPD1J
RTgpCisgKgorICogQHBhcmFtIHtPYmplY3R9IG9iagorICogQHJldHVybiB7QXJyYXl9IGtleXMK
KyAqIEBhcGkgcHJpdmF0ZQorICovCisKK2V4cG9ydHMua2V5cyA9IE9iamVjdC5rZXlzIHx8IGZ1
bmN0aW9uKG9iaikgeworICB2YXIga2V5cyA9IFtdCisgICAgLCBoYXMgPSBPYmplY3QucHJvdG90
eXBlLmhhc093blByb3BlcnR5IC8vIGZvciBgd2luZG93YCBvbiA8PUlFOAorCisgIGZvciAodmFy
IGtleSBpbiBvYmopIHsKKyAgICBpZiAoaGFzLmNhbGwob2JqLCBrZXkpKSB7CisgICAgICBrZXlz
LnB1c2goa2V5KTsKKyAgICB9CisgIH0KKworICByZXR1cm4ga2V5czsKK307CisKKy8qKgorICog
V2F0Y2ggdGhlIGdpdmVuIGBmaWxlc2AgZm9yIGNoYW5nZXMKKyAqIGFuZCBpbnZva2UgYGZuKGZp
bGUpYCBvbiBtb2RpZmljYXRpb24uCisgKgorICogQHBhcmFtIHtBcnJheX0gZmlsZXMKKyAqIEBw
YXJhbSB7RnVuY3Rpb259IGZuCisgKiBAYXBpIHByaXZhdGUKKyAqLworCitleHBvcnRzLndhdGNo
ID0gZnVuY3Rpb24oZmlsZXMsIGZuKXsKKyAgdmFyIG9wdGlvbnMgPSB7IGludGVydmFsOiAxMDAg
fTsKKyAgZmlsZXMuZm9yRWFjaChmdW5jdGlvbihmaWxlKXsKKyAgICBkZWJ1ZygnZmlsZSAlcycs
IGZpbGUpOworICAgIGZzLndhdGNoRmlsZShmaWxlLCBvcHRpb25zLCBmdW5jdGlvbihjdXJyLCBw
cmV2KXsKKyAgICAgIGlmIChwcmV2Lm10aW1lIDwgY3Vyci5tdGltZSkgZm4oZmlsZSk7CisgICAg
fSk7CisgIH0pOworfTsKKworLyoqCisgKiBJZ25vcmVkIGZpbGVzLgorICovCisKK2Z1bmN0aW9u
IGlnbm9yZWQocGF0aCl7CisgIHJldHVybiAhfmlnbm9yZS5pbmRleE9mKHBhdGgpOworfQorCisv
KioKKyAqIExvb2t1cCBmaWxlcyBpbiB0aGUgZ2l2ZW4gYGRpcmAuCisgKgorICogQHJldHVybiB7
QXJyYXl9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitleHBvcnRzLmZpbGVzID0gZnVuY3Rpb24o
ZGlyLCBleHQsIHJldCl7CisgIHJldCA9IHJldCB8fCBbXTsKKyAgZXh0ID0gZXh0IHx8IFsnanMn
XTsKKworICB2YXIgcmUgPSBuZXcgUmVnRXhwKCdcXC4oJyArIGV4dC5qb2luKCd8JykgKyAnKSQn
KTsKKworICBmcy5yZWFkZGlyU3luYyhkaXIpCisgIC5maWx0ZXIoaWdub3JlZCkKKyAgLmZvckVh
Y2goZnVuY3Rpb24ocGF0aCl7CisgICAgcGF0aCA9IGpvaW4oZGlyLCBwYXRoKTsKKyAgICBpZiAo
ZnMuc3RhdFN5bmMocGF0aCkuaXNEaXJlY3RvcnkoKSkgeworICAgICAgZXhwb3J0cy5maWxlcyhw
YXRoLCBleHQsIHJldCk7CisgICAgfSBlbHNlIGlmIChwYXRoLm1hdGNoKHJlKSkgeworICAgICAg
cmV0LnB1c2gocGF0aCk7CisgICAgfQorICB9KTsKKworICByZXR1cm4gcmV0OworfTsKKworLyoq
CisgKiBDb21wdXRlIGEgc2x1ZyBmcm9tIHRoZSBnaXZlbiBgc3RyYC4KKyAqCisgKiBAcGFyYW0g
e1N0cmluZ30gc3RyCisgKiBAcmV0dXJuIHtTdHJpbmd9CisgKiBAYXBpIHByaXZhdGUKKyAqLwor
CitleHBvcnRzLnNsdWcgPSBmdW5jdGlvbihzdHIpeworICByZXR1cm4gc3RyCisgICAgLnRvTG93
ZXJDYXNlKCkKKyAgICAucmVwbGFjZSgvICsvZywgJy0nKQorICAgIC5yZXBsYWNlKC9bXi1cd10v
ZywgJycpOworfTsKKworLyoqCisgKiBTdHJpcCB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBmcm9t
IGBzdHJgLAorICogYW5kIHJlLWluZGVudCBmb3IgcHJlIHdoaXRlc3BhY2UuCisgKi8KKworZXhw
b3J0cy5jbGVhbiA9IGZ1bmN0aW9uKHN0cikgeworICBzdHIgPSBzdHIKKyAgICAucmVwbGFjZSgv
XHJcbj98W1xuXHUyMDI4XHUyMDI5XS9nLCAiXG4iKS5yZXBsYWNlKC9eXHVGRUZGLywgJycpCisg
ICAgLnJlcGxhY2UoL15mdW5jdGlvbiAqXCguKlwpICp7fFwoLipcKSAqPT4gKns/LywgJycpCisg
ICAgLnJlcGxhY2UoL1xzK1x9JC8sICcnKTsKKworICB2YXIgc3BhY2VzID0gc3RyLm1hdGNoKC9e
XG4/KCAqKS8pWzFdLmxlbmd0aAorICAgICwgdGFicyA9IHN0ci5tYXRjaCgvXlxuPyhcdCopLylb
MV0ubGVuZ3RoCisgICAgLCByZSA9IG5ldyBSZWdFeHAoJ15cbj8nICsgKHRhYnMgPyAnXHQnIDog
JyAnKSArICd7JyArICh0YWJzID8gdGFicyA6IHNwYWNlcykgKyAnfScsICdnbScpOworCisgIHN0
ciA9IHN0ci5yZXBsYWNlKHJlLCAnJyk7CisKKyAgcmV0dXJuIGV4cG9ydHMudHJpbShzdHIpOwor
fTsKKworLyoqCisgKiBFc2NhcGUgcmVndWxhciBleHByZXNzaW9uIGNoYXJhY3RlcnMgaW4gYHN0
cmAuCisgKgorICogQHBhcmFtIHtTdHJpbmd9IHN0cgorICogQHJldHVybiB7U3RyaW5nfQorICog
QGFwaSBwcml2YXRlCisgKi8KKworZXhwb3J0cy5lc2NhcGVSZWdleHAgPSBmdW5jdGlvbihzdHIp
eworICByZXR1cm4gc3RyLnJlcGxhY2UoL1stXFxeJCorPy4oKXxbXF17fV0vZywgIlxcJCYiKTsK
K307CisKKy8qKgorICogVHJpbSB0aGUgZ2l2ZW4gYHN0cmAuCisgKgorICogQHBhcmFtIHtTdHJp
bmd9IHN0cgorICogQHJldHVybiB7U3RyaW5nfQorICogQGFwaSBwcml2YXRlCisgKi8KKworZXhw
b3J0cy50cmltID0gZnVuY3Rpb24oc3RyKXsKKyAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXHMrfFxz
KyQvZywgJycpOworfTsKKworLyoqCisgKiBQYXJzZSB0aGUgZ2l2ZW4gYHFzYC4KKyAqCisgKiBA
cGFyYW0ge1N0cmluZ30gcXMKKyAqIEByZXR1cm4ge09iamVjdH0KKyAqIEBhcGkgcHJpdmF0ZQor
ICovCisKK2V4cG9ydHMucGFyc2VRdWVyeSA9IGZ1bmN0aW9uKHFzKXsKKyAgcmV0dXJuIGV4cG9y
dHMucmVkdWNlKHFzLnJlcGxhY2UoJz8nLCAnJykuc3BsaXQoJyYnKSwgZnVuY3Rpb24ob2JqLCBw
YWlyKXsKKyAgICB2YXIgaSA9IHBhaXIuaW5kZXhPZignPScpCisgICAgICAsIGtleSA9IHBhaXIu
c2xpY2UoMCwgaSkKKyAgICAgICwgdmFsID0gcGFpci5zbGljZSgrK2kpOworCisgICAgb2JqW2tl
eV0gPSBkZWNvZGVVUklDb21wb25lbnQodmFsKTsKKyAgICByZXR1cm4gb2JqOworICB9LCB7fSk7
Cit9OworCisvKioKKyAqIEhpZ2hsaWdodCB0aGUgZ2l2ZW4gc3RyaW5nIG9mIGBqc2AuCisgKgor
ICogQHBhcmFtIHtTdHJpbmd9IGpzCisgKiBAcmV0dXJuIHtTdHJpbmd9CisgKiBAYXBpIHByaXZh
dGUKKyAqLworCitmdW5jdGlvbiBoaWdobGlnaHQoanMpIHsKKyAgcmV0dXJuIGpzCisgICAgLnJl
cGxhY2UoLzwvZywgJyZsdDsnKQorICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7JykKKyAgICAucmVw
bGFjZSgvXC9cLyguKikvZ20sICc8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8kMTwvc3Bhbj4nKQor
ICAgIC5yZXBsYWNlKC8oJy4qPycpL2dtLCAnPHNwYW4gY2xhc3M9InN0cmluZyI+JDE8L3NwYW4+
JykKKyAgICAucmVwbGFjZSgvKFxkK1wuXGQrKS9nbSwgJzxzcGFuIGNsYXNzPSJudW1iZXIiPiQx
PC9zcGFuPicpCisgICAgLnJlcGxhY2UoLyhcZCspL2dtLCAnPHNwYW4gY2xhc3M9Im51bWJlciI+
JDE8L3NwYW4+JykKKyAgICAucmVwbGFjZSgvXGJuZXdbIFx0XSsoXHcrKS9nbSwgJzxzcGFuIGNs
YXNzPSJrZXl3b3JkIj5uZXc8L3NwYW4+IDxzcGFuIGNsYXNzPSJpbml0Ij4kMTwvc3Bhbj4nKQor
ICAgIC5yZXBsYWNlKC9cYihmdW5jdGlvbnxuZXd8dGhyb3d8cmV0dXJufHZhcnxpZnxlbHNlKVxi
L2dtLCAnPHNwYW4gY2xhc3M9ImtleXdvcmQiPiQxPC9zcGFuPicpCit9CisKKy8qKgorICogSGln
aGxpZ2h0IHRoZSBjb250ZW50cyBvZiB0YWcgYG5hbWVgLgorICoKKyAqIEBwYXJhbSB7U3RyaW5n
fSBuYW1lCisgKiBAYXBpIHByaXZhdGUKKyAqLworCitleHBvcnRzLmhpZ2hsaWdodFRhZ3MgPSBm
dW5jdGlvbihuYW1lKSB7CisgIHZhciBjb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUobmFtZSk7CisgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBjb2RlLmxlbmd0aDsgaSA8IGxlbjsg
KytpKSB7CisgICAgY29kZVtpXS5pbm5lckhUTUwgPSBoaWdobGlnaHQoY29kZVtpXS5pbm5lckhU
TUwpOworICB9Cit9OworCisKKy8qKgorICogU3RyaW5naWZ5IGBvYmpgLgorICoKKyAqIEBwYXJh
bSB7T2JqZWN0fSBvYmoKKyAqIEByZXR1cm4ge1N0cmluZ30KKyAqIEBhcGkgcHJpdmF0ZQorICov
CisKK2V4cG9ydHMuc3RyaW5naWZ5ID0gZnVuY3Rpb24ob2JqKSB7CisgIGlmIChvYmogaW5zdGFu
Y2VvZiBSZWdFeHApIHJldHVybiBvYmoudG9TdHJpbmcoKTsKKyAgcmV0dXJuIEpTT04uc3RyaW5n
aWZ5KGV4cG9ydHMuY2Fub25pY2FsaXplKG9iaiksIG51bGwsIDIpLnJlcGxhY2UoLywoXG58JCkv
ZywgJyQxJyk7Cit9CisKKy8qKgorICogUmV0dXJuIGEgbmV3IG9iamVjdCB0aGF0IGhhcyB0aGUg
a2V5cyBpbiBzb3J0ZWQgb3JkZXIuCisgKiBAcGFyYW0ge09iamVjdH0gb2JqCisgKiBAcmV0dXJu
IHtPYmplY3R9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitleHBvcnRzLmNhbm9uaWNhbGl6ZSA9
IGZ1bmN0aW9uKG9iaiwgc3RhY2spIHsKKyAgIHN0YWNrID0gc3RhY2sgfHwgW107CisKKyAgIGlm
IChleHBvcnRzLmluZGV4T2Yoc3RhY2ssIG9iaikgIT09IC0xKSByZXR1cm4gJ1tDaXJjdWxhcl0n
OworCisgICB2YXIgY2Fub25pY2FsaXplZE9iajsKKworICAgaWYgKHt9LnRvU3RyaW5nLmNhbGwo
b2JqKSA9PT0gJ1tvYmplY3QgQXJyYXldJykgeworICAgICBzdGFjay5wdXNoKG9iaik7CisgICAg
IGNhbm9uaWNhbGl6ZWRPYmogPSBleHBvcnRzLm1hcChvYmosIGZ1bmN0aW9uKGl0ZW0pIHsKKyAg
ICAgICByZXR1cm4gZXhwb3J0cy5jYW5vbmljYWxpemUoaXRlbSwgc3RhY2spOworICAgICB9KTsK
KyAgICAgc3RhY2sucG9wKCk7CisgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3Qn
ICYmIG9iaiAhPT0gbnVsbCkgeworICAgICBzdGFjay5wdXNoKG9iaik7CisgICAgIGNhbm9uaWNh
bGl6ZWRPYmogPSB7fTsKKyAgICAgZXhwb3J0cy5mb3JFYWNoKGV4cG9ydHMua2V5cyhvYmopLnNv
cnQoKSwgZnVuY3Rpb24oa2V5KSB7CisgICAgICAgY2Fub25pY2FsaXplZE9ialtrZXldID0gZXhw
b3J0cy5jYW5vbmljYWxpemUob2JqW2tleV0sIHN0YWNrKTsKKyAgICAgfSk7CisgICAgIHN0YWNr
LnBvcCgpOworICAgfSBlbHNlIHsKKyAgICAgY2Fub25pY2FsaXplZE9iaiA9IG9iajsKKyAgIH0K
KworICAgcmV0dXJuIGNhbm9uaWNhbGl6ZWRPYmo7CisgfQorCit9KTsgLy8gbW9kdWxlOiB1dGls
cy5qcworLy8gVGhlIGdsb2JhbCBvYmplY3QgaXMgInNlbGYiIGluIFdlYiBXb3JrZXJzLgordmFy
IGdsb2JhbCA9IChmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pKCk7CisKKy8qKgorICogU2F2
ZSB0aW1lciByZWZlcmVuY2VzIHRvIGF2b2lkIFNpbm9uIGludGVyZmVyaW5nIChzZWUgR0gtMjM3
KS4KKyAqLworCit2YXIgRGF0ZSA9IGdsb2JhbC5EYXRlOwordmFyIHNldFRpbWVvdXQgPSBnbG9i
YWwuc2V0VGltZW91dDsKK3ZhciBzZXRJbnRlcnZhbCA9IGdsb2JhbC5zZXRJbnRlcnZhbDsKK3Zh
ciBjbGVhclRpbWVvdXQgPSBnbG9iYWwuY2xlYXJUaW1lb3V0OwordmFyIGNsZWFySW50ZXJ2YWwg
PSBnbG9iYWwuY2xlYXJJbnRlcnZhbDsKKworLyoqCisgKiBOb2RlIHNoaW1zLgorICoKKyAqIFRo
ZXNlIGFyZSBtZWFudCBvbmx5IHRvIGFsbG93CisgKiBtb2NoYS5qcyB0byBydW4gdW50b3VjaGVk
LCBub3QKKyAqIHRvIGFsbG93IHJ1bm5pbmcgbm9kZSBjb2RlIGluCisgKiB0aGUgYnJvd3Nlci4K
KyAqLworCit2YXIgcHJvY2VzcyA9IHt9OworcHJvY2Vzcy5leGl0ID0gZnVuY3Rpb24oc3RhdHVz
KXt9OworcHJvY2Vzcy5zdGRvdXQgPSB7fTsKKwordmFyIHVuY2F1Z2h0RXhjZXB0aW9uSGFuZGxl
cnMgPSBbXTsKKwordmFyIG9yaWdpbmFsT25lcnJvckhhbmRsZXIgPSBnbG9iYWwub25lcnJvcjsK
KworLyoqCisgKiBSZW1vdmUgdW5jYXVnaHRFeGNlcHRpb24gbGlzdGVuZXIuCisgKiBSZXZlcnQg
dG8gb3JpZ2luYWwgb25lcnJvciBoYW5kbGVyIGlmIHByZXZpb3VzbHkgZGVmaW5lZC4KKyAqLwor
Citwcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gZnVuY3Rpb24oZSwgZm4peworICBpZiAoJ3VuY2F1
Z2h0RXhjZXB0aW9uJyA9PSBlKSB7CisgICAgaWYgKG9yaWdpbmFsT25lcnJvckhhbmRsZXIpIHsK
KyAgICAgIGdsb2JhbC5vbmVycm9yID0gb3JpZ2luYWxPbmVycm9ySGFuZGxlcjsKKyAgICB9IGVs
c2UgeworICAgICAgZ2xvYmFsLm9uZXJyb3IgPSBmdW5jdGlvbigpIHt9OworICAgIH0KKyAgICB2
YXIgaSA9IE1vY2hhLnV0aWxzLmluZGV4T2YodW5jYXVnaHRFeGNlcHRpb25IYW5kbGVycywgZm4p
OworICAgIGlmIChpICE9IC0xKSB7IHVuY2F1Z2h0RXhjZXB0aW9uSGFuZGxlcnMuc3BsaWNlKGks
IDEpOyB9CisgIH0KK307CisKKy8qKgorICogSW1wbGVtZW50cyB1bmNhdWdodEV4Y2VwdGlvbiBs
aXN0ZW5lci4KKyAqLworCitwcm9jZXNzLm9uID0gZnVuY3Rpb24oZSwgZm4peworICBpZiAoJ3Vu
Y2F1Z2h0RXhjZXB0aW9uJyA9PSBlKSB7CisgICAgZ2xvYmFsLm9uZXJyb3IgPSBmdW5jdGlvbihl
cnIsIHVybCwgbGluZSl7CisgICAgICBmbihuZXcgRXJyb3IoZXJyICsgJyAoJyArIHVybCArICc6
JyArIGxpbmUgKyAnKScpKTsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH07CisgICAgdW5jYXVn
aHRFeGNlcHRpb25IYW5kbGVycy5wdXNoKGZuKTsKKyAgfQorfTsKKworLyoqCisgKiBFeHBvc2Ug
bW9jaGEuCisgKi8KKwordmFyIE1vY2hhID0gZ2xvYmFsLk1vY2hhID0gcmVxdWlyZSgnbW9jaGEn
KSwKKyAgICBtb2NoYSA9IGdsb2JhbC5tb2NoYSA9IG5ldyBNb2NoYSh7IHJlcG9ydGVyOiAnaHRt
bCcgfSk7CisKKy8vIFRoZSBCREQgVUkgaXMgcmVnaXN0ZXJlZCBieSBkZWZhdWx0LCBidXQgbm8g
VUkgd2lsbCBiZSBmdW5jdGlvbmFsIGluIHRoZQorLy8gYnJvd3NlciB3aXRob3V0IGFuIGV4cGxp
Y2l0IGNhbGwgdG8gdGhlIG92ZXJyaWRkZW4gYG1vY2hhLnVpYCAoc2VlIGJlbG93KS4KKy8vIEVu
c3VyZSB0aGF0IHRoaXMgZGVmYXVsdCBVSSBkb2VzIG5vdCBleHBvc2UgaXRzIG1ldGhvZHMgdG8g
dGhlIGdsb2JhbCBzY29wZS4KK21vY2hhLnN1aXRlLnJlbW92ZUFsbExpc3RlbmVycygncHJlLXJl
cXVpcmUnKTsKKwordmFyIGltbWVkaWF0ZVF1ZXVlID0gW10KKyAgLCBpbW1lZGlhdGVUaW1lb3V0
OworCitmdW5jdGlvbiB0aW1lc2xpY2UoKSB7CisgIHZhciBpbW1lZGlhdGVTdGFydCA9IG5ldyBE
YXRlKCkuZ2V0VGltZSgpOworICB3aGlsZSAoaW1tZWRpYXRlUXVldWUubGVuZ3RoICYmIChuZXcg
RGF0ZSgpLmdldFRpbWUoKSAtIGltbWVkaWF0ZVN0YXJ0KSA8IDEwMCkgeworICAgIGltbWVkaWF0
ZVF1ZXVlLnNoaWZ0KCkoKTsKKyAgfQorICBpZiAoaW1tZWRpYXRlUXVldWUubGVuZ3RoKSB7Cisg
ICAgaW1tZWRpYXRlVGltZW91dCA9IHNldFRpbWVvdXQodGltZXNsaWNlLCAwKTsKKyAgfSBlbHNl
IHsKKyAgICBpbW1lZGlhdGVUaW1lb3V0ID0gbnVsbDsKKyAgfQorfQorCisvKioKKyAqIEhpZ2gt
cGVyZm9ybWFuY2Ugb3ZlcnJpZGUgb2YgUnVubmVyLmltbWVkaWF0ZWx5LgorICovCisKK01vY2hh
LlJ1bm5lci5pbW1lZGlhdGVseSA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CisgIGltbWVkaWF0ZVF1
ZXVlLnB1c2goY2FsbGJhY2spOworICBpZiAoIWltbWVkaWF0ZVRpbWVvdXQpIHsKKyAgICBpbW1l
ZGlhdGVUaW1lb3V0ID0gc2V0VGltZW91dCh0aW1lc2xpY2UsIDApOworICB9Cit9OworCisvKioK
KyAqIEZ1bmN0aW9uIHRvIGFsbG93IGFzc2VydGlvbiBsaWJyYXJpZXMgdG8gdGhyb3cgZXJyb3Jz
IGRpcmVjdGx5IGludG8gbW9jaGEuCisgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHJ1bm5pbmcgdGVz
dHMgaW4gYSBicm93c2VyIGJlY2F1c2Ugd2luZG93Lm9uZXJyb3Igd2lsbAorICogb25seSByZWNl
aXZlIHRoZSAnbWVzc2FnZScgYXR0cmlidXRlIG9mIHRoZSBFcnJvci4KKyAqLworbW9jaGEudGhy
b3dFcnJvciA9IGZ1bmN0aW9uKGVycikgeworICBNb2NoYS51dGlscy5mb3JFYWNoKHVuY2F1Z2h0
RXhjZXB0aW9uSGFuZGxlcnMsIGZ1bmN0aW9uIChmbikgeworICAgIGZuKGVycik7CisgIH0pOwor
ICB0aHJvdyBlcnI7Cit9OworCisvKioKKyAqIE92ZXJyaWRlIHVpIHRvIGVuc3VyZSB0aGF0IHRo
ZSB1aSBmdW5jdGlvbnMgYXJlIGluaXRpYWxpemVkLgorICogTm9ybWFsbHkgdGhpcyB3b3VsZCBo
YXBwZW4gaW4gTW9jaGEucHJvdG90eXBlLmxvYWRGaWxlcy4KKyAqLworCittb2NoYS51aSA9IGZ1
bmN0aW9uKHVpKXsKKyAgTW9jaGEucHJvdG90eXBlLnVpLmNhbGwodGhpcywgdWkpOworICB0aGlz
LnN1aXRlLmVtaXQoJ3ByZS1yZXF1aXJlJywgZ2xvYmFsLCBudWxsLCB0aGlzKTsKKyAgcmV0dXJu
IHRoaXM7Cit9OworCisvKioKKyAqIFNldHVwIG1vY2hhIHdpdGggdGhlIGdpdmVuIHNldHRpbmcg
b3B0aW9ucy4KKyAqLworCittb2NoYS5zZXR1cCA9IGZ1bmN0aW9uKG9wdHMpeworICBpZiAoJ3N0
cmluZycgPT0gdHlwZW9mIG9wdHMpIG9wdHMgPSB7IHVpOiBvcHRzIH07CisgIGZvciAodmFyIG9w
dCBpbiBvcHRzKSB0aGlzW29wdF0ob3B0c1tvcHRdKTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisv
KioKKyAqIFJ1biBtb2NoYSwgcmV0dXJuaW5nIHRoZSBSdW5uZXIuCisgKi8KKworbW9jaGEucnVu
ID0gZnVuY3Rpb24oZm4peworICB2YXIgb3B0aW9ucyA9IG1vY2hhLm9wdGlvbnM7CisgIG1vY2hh
Lmdsb2JhbHMoJ2xvY2F0aW9uJyk7CisKKyAgdmFyIHF1ZXJ5ID0gTW9jaGEudXRpbHMucGFyc2VR
dWVyeShnbG9iYWwubG9jYXRpb24uc2VhcmNoIHx8ICcnKTsKKyAgaWYgKHF1ZXJ5LmdyZXApIG1v
Y2hhLmdyZXAocXVlcnkuZ3JlcCk7CisgIGlmIChxdWVyeS5pbnZlcnQpIG1vY2hhLmludmVydCgp
OworCisgIHJldHVybiBNb2NoYS5wcm90b3R5cGUucnVuLmNhbGwobW9jaGEsIGZ1bmN0aW9uKGVy
cil7CisgICAgLy8gVGhlIERPTSBEb2N1bWVudCBpcyBub3QgYXZhaWxhYmxlIGluIFdlYiBXb3Jr
ZXJzLgorICAgIGlmIChnbG9iYWwuZG9jdW1lbnQpIHsKKyAgICAgIE1vY2hhLnV0aWxzLmhpZ2hs
aWdodFRhZ3MoJ2NvZGUnKTsKKyAgICB9CisgICAgaWYgKGZuKSBmbihlcnIpOworICB9KTsKK307
CisKKy8qKgorICogRXhwb3NlIHRoZSBwcm9jZXNzIHNoaW0uCisgKi8KKworTW9jaGEucHJvY2Vz
cyA9IHByb2Nlc3M7Cit9KSgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Npbm9uanMuTElDRU5TRSBiL0xheW91
dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Npbm9uanMuTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lN2Y1
MGQxMjNiMGQ4MDZmZGZmNTQ3M2U2YWZhMTI0M2RhOTcwNDc0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvc2lub25qcy5MSUNFTlNFCkBAIC0wLDAgKzEs
MjcgQEAKKyhUaGUgQlNEIExpY2Vuc2UpCisKK0NvcHlyaWdodCAoYykgMjAxMC0yMDE0LCBDaHJp
c3RpYW4gSm9oYW5zZW4sIGNocmlzdGlhbkBjam9oYW5zZW4ubm8KK0FsbCByaWdodHMgcmVzZXJ2
ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCithcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisKKyAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj
ZSwKKyAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisg
ICAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgQ2hyaXN0aWFuIEpvaGFuc2VuIG5vciB0aGUg
bmFtZXMgb2YgaGlzIGNvbnRyaWJ1dG9ycworICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCisgICAgICB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORAorQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKK1dBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKK0RJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUKK0ZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCitEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKK0NBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCitPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239108</attachid>
            <date>2014-10-02 07:59:24 -0700</date>
            <delta_ts>2014-10-03 19:41:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136878-20141002235952.patch</filename>
            <type>text/plain</type>
            <size>873736</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0MjA5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTdlY2FlNzdlZWQ2NjE1Y2VkOTU5
NGUxZDFmMWYxYjE5NWI4ZjQ2NC4uNTY4MTExYzNhZDgwN2Q5MGQzMzI4ZTQzNjk5ZWRiYTA5NDA2
ZTAxYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NyBAQAorMjAxNC0xMC0wMiAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgUHJvbWlzZSBBKyB0
ZXN0cyBpbnRvIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM2ODc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVG8gZW5zdXJlIFdlYktpdCBQcm9taXNlIHN0YWJpbGl0eSwgaW50cm9kdWNpbmcg
UHJvbWlzZSBBKyB0ZXN0c1sxXSBpbnRvIFdlYktpdC4KKyAgICAgICAgSXQncyBhbHNvIHVzZWQg
dG8gdGVzdCBWOCBQcm9taXNlWzJdLgorICAgICAgICBTbyB0aGUgdGVzdHMgZ3VhcmFudGVlIHRo
YXQgV2ViS2l0IFByb21pc2UncyBzcGVjIHZhbGlkaXR5IGFuZCBpbnRlcmNoYW5nZWFiaWxpdHkK
KyAgICAgICAgdG8gdGhlIG90aGVyIGJyb3dzZXIncyBQcm9taXNlIGltcGxlbWVudGF0aW9uLgor
CisgICAgICAgIFByb21pc2UgQSsgdGVzdHMgYXNzdW1lcyB0aGF0IGl0IHdvcmtzIG9uIHRoZSBO
b2RlLmpzIGVudmlyb25tZW50LiBUbyB3b3JrIGl0IG9uCisgICAgICAgIExheW91dFRlc3RzIGNv
cnJlY3RseSwgd2UgbmVlZCB0byB0cmFuc2Zvcm0gTm9kZS5qcyBzdHlsZWQgSmF2YVNjcmlwdCBj
b2RlIGludG8KKyAgICAgICAgYnJvd3NlciBzdHlsZWQgY29kZS4gSW4gdGhpcyBwYXRjaCwgd2Ug
dXNlIGJyb3dzZXJpZnlbM10gdG8gdHJhbnNmb3JtIHRoZSB0ZXN0IGNvZGUuCisgICAgICAgIFRo
cm91Z2ggdHJhbnNmb3JtaW5nIHBpcGVsaW5lLCBzb21lIGRlcGVuZGVudCBKUyBjb2RlIGlzIGJ1
bmRsZWQgaW50byB0aGUgcHJvZHVjZWQgY29kZS4KKyAgICAgICAgU28gYWRkZWQgU2lub25KU1s0
XSBhbmQgYnJvd3NlcmlmeSdzIGxpY2Vuc2UgZmlsZXMgaW50byB0aGUgdGVzdCBkaXJlY3Rvcnku
CisKKyAgICAgICAgQW5kIHRlc3RzIGFzc3VtZSB0aGF0IGl0IGlzIHVzZWQgd2l0aCBNb2NoYVs1
XSB0ZXN0IHJ1bm5lci4gU28gaW50cm9kdWNpbmcgbW9jaGEuanMgYW5kCisgICAgICAgIGFkZGVk
IExJQ0VOU0UgZmlsZSBpbnRvIHRoaXMgZGlyZWN0b3J5LgorCisgICAgICAgIEFuZCBzaW5jZSBQ
cm9taXNlcy9BKyAyLjMuMyBoYXMgbWFueSB0ZXN0cywgaXQgY29uc3VtZXMgbXVjaCB0aW1lICgx
M3MgaW4gR1RLIGRlYnVnIGJ1aWxkKS4KKyAgICAgICAgU28gbWFyayBpdCBhcyBhIFNsb3cgdGVz
dC4KKworICAgICAgICBbMV06IGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9taXNlcy1hcGx1cy9wcm9t
aXNlcy10ZXN0cworICAgICAgICBbMl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3Avdjgvc291
cmNlL2Jyb3dzZSNzdm4lMkZ0cnVuayUyRnRlc3QlMkZwcm9taXNlcy1hcGx1cworICAgICAgICBb
M106IGh0dHA6Ly9icm93c2VyaWZ5Lm9yZy8KKyAgICAgICAgWzRdOiBodHRwOi8vc2lub25qcy5v
cmcvCisgICAgICAgIFs1XTogaHR0cDovL3Zpc2lvbm1lZGlhLmdpdGh1Yi5pby9tb2NoYS8KKwor
ICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICoganMvcHJvbWlzZXMtdGVzdHMv
UkVBRE1FOiBBZGRlZC4KKyAgICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9icm93c2VyaWZ5LWVu
dHJ5LXBvaW50LmpzOiBBZGRlZC4KKyAgICAgICAgKC4pOgorICAgICAgICAqIGpzL3Byb21pc2Vz
LXRlc3RzL2Jyb3dzZXJpZnkuTElDRU5TRTogQWRkZWQuCisgICAgICAgICoganMvcHJvbWlzZXMt
dGVzdHMvbW9jaGEuTElDRU5TRTogQWRkZWQuCisgICAgICAgICoganMvcHJvbWlzZXMtdGVzdHMv
cHJvbWlzZXMtdGVzdHMtMi0xLTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9w
cm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTEtMi5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTEtMy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMS0zLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTIt
Mi0xLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcHJvbWlzZXMtdGVzdHMvcHJv
bWlzZXMtdGVzdHMtMi0yLTEuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcHJvbWlzZXMtdGVz
dHMvcHJvbWlzZXMtdGVzdHMtMi0yLTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBq
cy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTItMi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTItMy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMi0z
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3Rz
LTItMi00LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcHJvbWlzZXMtdGVzdHMv
cHJvbWlzZXMtdGVzdHMtMi0yLTQuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcHJvbWlzZXMt
dGVzdHMvcHJvbWlzZXMtdGVzdHMtMi0yLTUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTItNS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTItNi1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTIt
Mi02Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRl
c3RzLTItMi03LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcHJvbWlzZXMtdGVz
dHMvcHJvbWlzZXMtdGVzdHMtMi0yLTcuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcHJvbWlz
ZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMtMi0zLTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTMtMS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTMtMi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3Rz
LTItMy0yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL3Byb21pc2Vz
LXRlc3RzLTItMy0zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcHJvbWlzZXMt
dGVzdHMvcHJvbWlzZXMtdGVzdHMtMi0zLTMuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcHJv
bWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMtMi0zLTQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTMtNC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy5MSUNFTlNFOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy5qczogQWRk
ZWQuCisgICAgICAgICguKToKKyAgICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10
ZXN0cy8uZ2l0aWdub3JlOiBBZGRlZC4KKyAgICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9t
aXNlcy10ZXN0cy8uanNoaW50cmM6IEFkZGVkLgorICAgICAgICAqIGpzL3Byb21pc2VzLXRlc3Rz
L3Byb21pc2VzLXRlc3RzLy5ucG1pZ25vcmU6IEFkZGVkLgorICAgICAgICAqIGpzL3Byb21pc2Vz
LXRlc3RzL3Byb21pc2VzLXRlc3RzL0xJQ0VOU0UudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9w
cm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9SRUFETUUubWQ6IEFkZGVkLgorICAgICAgICAq
IGpzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi9jbGkuanM6IEFkZGVkLgorICAg
ICAgICAoZ2V0QWRhcHRlckZpbGVQYXRoKToKKyAgICAgICAgKGFkYXB0ZXJPYmplY3RGcm9tRmls
ZVBhdGgpOgorICAgICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi9n
ZXRNb2NoYU9wdHMuanM6IEFkZGVkLgorICAgICAgICAobW9kdWxlLmV4cG9ydHMpOgorICAgICAg
ICAqIGpzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi9wcm9ncmFtbWF0aWNSdW5u
ZXIuanM6IEFkZGVkLgorICAgICAgICAobm9ybWFsaXplQWRhcHRlci5hZGFwdGVyLnJlc29sdmVk
KToKKyAgICAgICAgKG5vcm1hbGl6ZUFkYXB0ZXIuYWRhcHRlci5yZWplY3RlZCk6CisgICAgICAg
IChub3JtYWxpemVBZGFwdGVyKToKKyAgICAgICAgKC5jYik6CisgICAgICAgICguKToKKyAgICAg
ICAgKG1vZHVsZS5leHBvcnRzKToKKyAgICAgICAgKG1vZHVsZS5leHBvcnRzLm1vY2hhKToKKyAg
ICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4xLjIu
anM6IEFkZGVkLgorICAgICAgICAoLik6CisgICAgICAgICoganMvcHJvbWlzZXMtdGVzdHMvcHJv
bWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMS4zLmpzOiBBZGRlZC4KKyAgICAgICAgKC4pOgorICAg
ICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjIuMS5q
czogQWRkZWQuCisgICAgICAgICoganMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGli
L3Rlc3RzLzIuMi4yLmpzOiBBZGRlZC4KKyAgICAgICAgKC4pOgorICAgICAgICAqIGpzL3Byb21p
c2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjIuMy5qczogQWRkZWQuCisgICAg
ICAgICguKToKKyAgICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIv
dGVzdHMvMi4yLjQuanM6IEFkZGVkLgorICAgICAgICAoLik6CisgICAgICAgICoganMvcHJvbWlz
ZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi41LmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4yLjYuanM6
IEFkZGVkLgorICAgICAgICAoLnJldHVybi5pZik6CisgICAgICAgIChjYWxsYmFja0FnZ3JlZ2F0
b3IpOgorICAgICAgICAoLik6CisgICAgICAgICoganMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMt
dGVzdHMvbGliL3Rlc3RzLzIuMi43LmpzOiBBZGRlZC4KKyAgICAgICAgKC4pOgorICAgICAgICAq
IGpzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjMuMS5qczogQWRk
ZWQuCisgICAgICAgICguKToKKyAgICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10
ZXN0cy9saWIvdGVzdHMvMi4zLjIuanM6IEFkZGVkLgorICAgICAgICAoLik6CisgICAgICAgICh0
ZXN0UHJvbWlzZVJlc29sdXRpb24pOgorICAgICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL3Byb21p
c2VzLXRlc3RzL2xpYi90ZXN0cy8yLjMuMy5qczogQWRkZWQuCisgICAgICAgICguKToKKyAgICAg
ICAgKHRlc3RQcm9taXNlUmVzb2x1dGlvbik6CisgICAgICAgICh0ZXN0Q2FsbGluZ1Jlc29sdmVQ
cm9taXNlUmVqZWN0c1dpdGgpOgorICAgICAgICAodGVzdENhbGxpbmdSZWplY3RQcm9taXNlUmVq
ZWN0c1dpdGgpOgorICAgICAgICAoZGVzY3JpYmUpOgorICAgICAgICAqIGpzL3Byb21pc2VzLXRl
c3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjMuNC5qczogQWRkZWQuCisgICAgICAgICgu
KToKKyAgICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMv
aGVscGVycy9yZWFzb25zLmpzOiBBZGRlZC4KKyAgICAgICAgKGV4cG9ydHMuc3RyaW5nX2FwcGVh
cmVkX2hlcmUpOgorICAgICAgICAoZXhwb3J0cy5zdHJpbmdfYXBwZWFyZWRfaGVyZS5yZXR1cm4u
dGhlbik6CisgICAgICAgICoganMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rl
c3RzL2hlbHBlcnMvdGVzdFRocmVlQ2FzZXMuanM6IEFkZGVkLgorICAgICAgICAoLnNwZWNpZnkp
OgorICAgICAgICAoLik6CisgICAgICAgIChleHBvcnRzLnRlc3RGdWxmaWxsZWQpOgorICAgICAg
ICAoZXhwb3J0cy50ZXN0UmVqZWN0ZWQpOgorICAgICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL3By
b21pc2VzLXRlc3RzL2xpYi90ZXN0cy9oZWxwZXJzL3RoZW5hYmxlcy5qczogQWRkZWQuCisgICAg
ICAgIChleHBvcnRzLmZ1bGZpbGxlZC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5yZXR1cm4udGhlbik6
CisgICAgICAgIChleHBvcnRzLmZ1bGZpbGxlZC5zdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAg
ICAgIChleHBvcnRzLmZ1bGZpbGxlZC5zdHJpbmdfYXBwZWFyZWRfaGVyZS4pOgorICAgICAgICAo
ZXhwb3J0cy5mdWxmaWxsZWQuZ2V0IHN0cmluZ19hcHBlYXJlZF9oZXJlLnJldHVybi50aGVuKToK
KyAgICAgICAgKGV4cG9ydHMuZnVsZmlsbGVkLmdldCBzdHJpbmdfYXBwZWFyZWRfaGVyZSk6Cisg
ICAgICAgIChleHBvcnRzLnJlamVjdGVkLnN0cmluZ19hcHBlYXJlZF9oZXJlLnJldHVybi50aGVu
KToKKyAgICAgICAgKGV4cG9ydHMucmVqZWN0ZWQuc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAg
ICAgICAoZXhwb3J0cy5yZWplY3RlZC5zdHJpbmdfYXBwZWFyZWRfaGVyZS4pOgorICAgICAgICAo
ZXhwb3J0cy5yZWplY3RlZC5nZXQgc3RyaW5nX2FwcGVhcmVkX2hlcmUucmV0dXJuLnRoZW4pOgor
ICAgICAgICAoZXhwb3J0cy5yZWplY3RlZC5nZXQgc3RyaW5nX2FwcGVhcmVkX2hlcmUpOgorICAg
ICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL3BhY2thZ2UuanNvbjogQWRk
ZWQuCisgICAgICAgICoganMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvdGVzdC9nZXRN
b2NoYU9wdHNUZXN0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9wcm9taXNlcy10ZXN0cy9yZXNv
dXJjZXMvYWRhcHRlci5qczogQWRkZWQuCisgICAgICAgIChMYXlvdXRUZXN0c1JlcG9ydGVyLnJ1
bm5lcik6CisgICAgICAgICh3aW5kb3cuYWRhcHRlci5yZXNvbHZlZCk6CisgICAgICAgICh3aW5k
b3cuYWRhcHRlci5yZWplY3RlZCk6CisgICAgICAgICh3aW5kb3cuYWRhcHRlci5kZWZlcnJlZCk6
CisgICAgICAgICoganMvcHJvbWlzZXMtdGVzdHMvcmVzb3VyY2VzL21vY2hhLmpzOiBBZGRlZC4K
KyAgICAgICAgKC4pOgorICAgICAgICAqIGpzL3Byb21pc2VzLXRlc3RzL3Npbm9uanMuTElDRU5T
RTogQWRkZWQuCisKIDIwMTQtMTAtMDIgIEppbndvbyBTb25nICA8amlud29vNy5zb25nQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFVucmV2aWV3ZWQgRUZMIGdhcmRlbmluZy4gUmViYXNl
bGluZSBhZnRlciByMTc0MTYwLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYWQ0NTBmOGJhOGZiNzI4
MTJkNjIzNWJlZGMyZTk2ZjQ1ZTg0ODZiZC4uZTY5M2Y3MWIzZDUwYWEzMDVlMWRhNzBmYjI5ZjI4
MDllNTRlMGI0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMjQsMyArMjI0LDYgQEAgd2Via2l0
Lm9yZy9iLzEzNzE2NyBqcy9kb20vZnVuY3Rpb24tZG90LWFyZ3VtZW50czIuaHRtbCBbIEZhaWx1
cmUgXQogd2Via2l0Lm9yZy9iLzEzNzE2NyBqcy9mdW5jdGlvbi1kb3QtYXJndW1lbnRzLmh0bWwg
WyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMzcxNjcganMva2RlL2Z1bmN0aW9uLmh0bWwgWyBG
YWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMzcxNjcganMva2RlL2Z1bmN0aW9uX2FyZ3VtZW50cy5o
dG1sIFsgRmFpbHVyZSBdCisKKyMgUHJvbWlzZXMvQSsgMi4zLjMgaGFzIG1hbnkgdGVzdHMgYW5k
IGl0IHNvbWV0aW1lcyBleGNlZWRzIHRoZSB0aW1lIGxpbWl0Lgord2Via2l0Lm9yZy9iLzEzNjg3
OCBqcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTMtMy5odG1sIFsgU2xvdyBdCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9SRUFETUUgYi9MYXlvdXRU
ZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAzMjgzNDA0MDIzYWNm
ZGI0ZGMyZGZkNGJiYTRhM2I2MDYxMzQzZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL3Byb21pc2VzLXRlc3RzL1JFQURNRQpAQCAtMCwwICsxLDI4IEBACitUaGlzIGRpcmVjdG9y
eSBjb250YWlucyB0aGUgY29udGVudHMgb2YgUHJvbWlzZSBBKyB0ZXN0cyAyLjAuNVsxXSBwb3J0
ZWQgaW50byBXZWJLaXQuCitUbyB1c2UgdGhpcyB0ZXN0cyBpbnNpZGUgV2ViS2l0IExheW91dFRl
c3RzLCB3ZSBzdWUgYnJvd3NlcmlmeSB0byBnZW5lcmF0ZSBgcHJvbWlzZS10ZXN0cy5qc2AuCisK
K0FkZGl0aW9uYWxseSwgdGhpcyBkaXJlY3RvcnkgY29udGFpbnMgdGhlIGZvbGxvd2luZyBjb250
ZW50cy4KKworLSBwcm9taXNlcy10ZXN0cworCitwcm9taXNlcy10ZXN0cyBpcyBQcm9taXNlIEEr
IHRlc3Qgc3VpdGUuIEl0IGFzc3VtZXMgdGhhdCBpdCB3b3JrcyBvbiB0aGUgTm9kZS5qcyBlbnZp
cm9ubWVudC4KK1RvIHVzZSBpdCBpbiBMYXlvdXRUZXN0cywgd2UgdXNlIGJyb3dzZXJpZnkgdG8g
dHJhbnNmb3JtIE5vZGUuanMgc3R5bGVkIEpTIGNvZGUgdG8KK2Jyb3dzZXIgc3R5bGVkIEpTIGNv
ZGUuCisKKy0gbW9jaGEKKworTW9jaGFbMl0gaXMgYSB0ZXN0IHJ1bm5lciB1c2VkIGluIHRoZSBw
cm9taXNlLXRlc3RzLiBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBtb2NoYS5qcworZm9yIGJyb3dz
ZXIgZW52aXJvbm1lbnQgaW4gcmVzb3VyY2UvbW9jaGEuanMgKHZlcnNpb24gMS4yMS40KS4KKwor
LSBicm93c2VyaWZ5CisKK3Byb21pc2UtdGVzdHMuanMgaXMgZ2VuZXJhdGVkIGJ5IGJyb3dzZXJp
ZnlbM10sIGZvbGxvd2luZyBpbnN0cnVjdGlvbnMuCisKKzEuIGNkIHByb21pc2UtdGVzdHMKKzIu
IG5wbSBpbnN0YWxsCiszLiBjZCAuLi8KKzQuIGJyb3dzZXJpZnkgYnJvd3NlcmlmeS1lbnRyeS1w
b2ludC5qcyAtbyBwcm9taXNlcy10ZXN0cy5qcworCitbMV06IGh0dHBzOi8vZ2l0aHViLmNvbS9w
cm9taXNlcy1hcGx1cy9wcm9taXNlcy10ZXN0cworWzJdOiBodHRwOi8vdmlzaW9ubWVkaWEuZ2l0
aHViLmlvL21vY2hhLworWzNdOiBodHRwOi8vYnJvd3NlcmlmeS5vcmcvCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9icm93c2VyaWZ5LWVudHJ5LXBvaW50LmpzIGIv
TGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvYnJvd3NlcmlmeS1lbnRyeS1wb2ludC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMjk3N2ViN2RkMzBmNTAzYWY5Njc1ZGM4NjgxZTE4OWYyYjAzMzE3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvYnJvd3NlcmlmeS1l
bnRyeS1wb2ludC5qcwpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworKGZ1bmN0
aW9uICgpIHsKKyAgICAndXNlIHN0cmljdCc7CisKKyAgICAvKiBUbyBidW5kbGUgYWxsIGNvZGUg
aW50byBicm93c2VyaWZpZWQgSlMgZmlsZSwgY2FsbCBgcmVxdWlyZWAgdG8gdGhlIGVhY2ggdGVz
dCBmaWxlIGV4cGxpY2l0bHk7CisgICAgICogcmVxdWlyaW5nIGRlcGVuZGVudCBmaWxlcyBhcyBz
dHJpbmcgbGl0ZXJhbHMgZm9ybSB0byBtYWtlIHRoZW0gYW5hbHl6YWJsZSBieSBicm93c2VyaWZ5
LgorICAgICAqIEFuZCBleHBvcnQgaXQgdG8gdGhlIGdsb2JhbCBuYW1lc3BhY2UgYXMgYHByb21p
c2VUZXN0c2AuCisgICAgICovCisgICAgZ2xvYmFsLnByb21pc2VUZXN0cyA9IHsKKyAgICAgICAg
dGVzdHMyXzFfMjogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmUoJy4v
cHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMS4yJyk7CisgICAgICAgIH0sCisKKyAgICAgICAg
dGVzdHMyXzFfMzogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmUoJy4v
cHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMS4zJyk7CisgICAgICAgIH0sCisKKyAgICAgICAg
dGVzdHMyXzJfMTogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmUoJy4v
cHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi4xJyk7CisgICAgICAgIH0sCisKKyAgICAgICAg
dGVzdHMyXzJfMjogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmUoJy4v
cHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi4yJyk7CisgICAgICAgIH0sCisKKyAgICAgICAg
dGVzdHMyXzJfMzogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmUoJy4v
cHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi4zJyk7CisgICAgICAgIH0sCisKKyAgICAgICAg
dGVzdHMyXzJfNDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmUoJy4v
cHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi40Jyk7CisgICAgICAgIH0sCisKKyAgICAgICAg
dGVzdHMyXzJfNTogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmUoJy4v
cHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi41Jyk7CisgICAgICAgIH0sCisKKyAgICAgICAg
dGVzdHMyXzJfNjogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmUoJy4v
cHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi42Jyk7CisgICAgICAgIH0sCisKKyAgICAgICAg
dGVzdHMyXzJfNzogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmUoJy4v
cHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi43Jyk7CisgICAgICAgIH0sCisKKyAgICAgICAg
dGVzdHMyXzNfMTogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmUoJy4v
cHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMy4xJyk7CisgICAgICAgIH0sCisKKyAgICAgICAg
dGVzdHMyXzNfMjogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmUoJy4v
cHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMy4yJyk7CisgICAgICAgIH0sCisKKyAgICAgICAg
dGVzdHMyXzNfMzogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmUoJy4v
cHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMy4zJyk7CisgICAgICAgIH0sCisKKyAgICAgICAg
dGVzdHMyXzNfNDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmUoJy4v
cHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMy40Jyk7CisgICAgICAgIH0KKyAgICB9OworfSgp
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL2Jyb3dzZXJpZnku
TElDRU5TRSBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL2Jyb3dzZXJpZnkuTElDRU5T
RQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kMDMyODM0MDQwMjNhY2ZkYjRkYzJkZmQ0YmJhNGEzYjYwNjEzNDNlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvYnJvd3Nlcmlm
eS5MSUNFTlNFCkBAIC0wLDAgKzEsMjggQEAKK1RoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBj
b250ZW50cyBvZiBQcm9taXNlIEErIHRlc3RzIDIuMC41WzFdIHBvcnRlZCBpbnRvIFdlYktpdC4K
K1RvIHVzZSB0aGlzIHRlc3RzIGluc2lkZSBXZWJLaXQgTGF5b3V0VGVzdHMsIHdlIHN1ZSBicm93
c2VyaWZ5IHRvIGdlbmVyYXRlIGBwcm9taXNlLXRlc3RzLmpzYC4KKworQWRkaXRpb25hbGx5LCB0
aGlzIGRpcmVjdG9yeSBjb250YWlucyB0aGUgZm9sbG93aW5nIGNvbnRlbnRzLgorCistIHByb21p
c2VzLXRlc3RzCisKK3Byb21pc2VzLXRlc3RzIGlzIFByb21pc2UgQSsgdGVzdCBzdWl0ZS4gSXQg
YXNzdW1lcyB0aGF0IGl0IHdvcmtzIG9uIHRoZSBOb2RlLmpzIGVudmlyb25tZW50LgorVG8gdXNl
IGl0IGluIExheW91dFRlc3RzLCB3ZSB1c2UgYnJvd3NlcmlmeSB0byB0cmFuc2Zvcm0gTm9kZS5q
cyBzdHlsZWQgSlMgY29kZSB0bworYnJvd3NlciBzdHlsZWQgSlMgY29kZS4KKworLSBtb2NoYQor
CitNb2NoYVsyXSBpcyBhIHRlc3QgcnVubmVyIHVzZWQgaW4gdGhlIHByb21pc2UtdGVzdHMuIFRo
aXMgZGlyZWN0b3J5IGNvbnRhaW5zIG1vY2hhLmpzCitmb3IgYnJvd3NlciBlbnZpcm9ubWVudCBp
biByZXNvdXJjZS9tb2NoYS5qcyAodmVyc2lvbiAxLjIxLjQpLgorCistIGJyb3dzZXJpZnkKKwor
cHJvbWlzZS10ZXN0cy5qcyBpcyBnZW5lcmF0ZWQgYnkgYnJvd3NlcmlmeVszXSwgZm9sbG93aW5n
IGluc3RydWN0aW9ucy4KKworMS4gY2QgcHJvbWlzZS10ZXN0cworMi4gbnBtIGluc3RhbGwKKzMu
IGNkIC4uLworNC4gYnJvd3NlcmlmeSBicm93c2VyaWZ5LWVudHJ5LXBvaW50LmpzIC1vIHByb21p
c2VzLXRlc3RzLmpzCisKK1sxXTogaHR0cHM6Ly9naXRodWIuY29tL3Byb21pc2VzLWFwbHVzL3By
b21pc2VzLXRlc3RzCitbMl06IGh0dHA6Ly92aXNpb25tZWRpYS5naXRodWIuaW8vbW9jaGEvCitb
M106IGh0dHA6Ly9icm93c2VyaWZ5Lm9yZy8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3By
b21pc2VzLXRlc3RzL21vY2hhLkxJQ0VOU0UgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0
cy9tb2NoYS5MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjNWQ3ZmE4NzM2NjdmYzUzNmM5YjViYTcxZGU2
Mjc2NzRlMTRlYmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10
ZXN0cy9tb2NoYS5MSUNFTlNFCkBAIC0wLDAgKzEsMjIgQEAKKyhUaGUgTUlUIExpY2Vuc2UpCisK
K0NvcHlyaWdodCAoYykgMjAxMS0yMDE0IFRKIEhvbG93YXljaHVrIDx0akB2aXNpb24tbWVkaWEu
Y2E+CisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh
bnkgcGVyc29uIG9idGFpbmluZworYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0
ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisnU29mdHdhcmUnKSwgdG8gZGVhbCBpbiB0aGUg
U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCit3aXRob3V0IGxpbWl0YXRp
b24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCitkaXN0
cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh
bmQgdG8KK3Blcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0
byBkbyBzbywgc3ViamVjdCB0bwordGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJv
dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQor
aW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29m
dHdhcmUuCisKK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAnQVMgSVMnLCBXSVRIT1VUIFdBUlJB
TlRZIE9GIEFOWSBLSU5ELAorRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM
SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCitNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCitJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQor
Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP
RiBDT05UUkFDVCwKK1RPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJ
TiBDT05ORUNUSU9OIFdJVEggVEhFCitTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ
TkdTIElOIFRIRSBTT0ZUV0FSRS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Byb21pc2Vz
LXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMS0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pz
L3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMS0yLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xNjA3NGNlODIzODk2OWNhZDg2YmU5ZDNhMmFhNTk4YWU3YjVhYmY2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMtMi0x
LTItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3QgUHJvbWlzZSB3aXRoIFByb21p
c2UgQSsgdGVzdHMgMi4xLjIuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyAy
LjEuMi4xOiBXaGVuIGZ1bGZpbGxlZCwgYSBwcm9taXNlOiBtdXN0IG5vdCB0cmFuc2l0aW9uIHRv
IGFueSBvdGhlciBzdGF0ZS4gYWxyZWFkeS1mdWxmaWxsZWQKK1BBU1MgMi4xLjIuMTogV2hlbiBm
dWxmaWxsZWQsIGEgcHJvbWlzZTogbXVzdCBub3QgdHJhbnNpdGlvbiB0byBhbnkgb3RoZXIgc3Rh
dGUuIGltbWVkaWF0ZWx5LWZ1bGZpbGxlZAorUEFTUyAyLjEuMi4xOiBXaGVuIGZ1bGZpbGxlZCwg
YSBwcm9taXNlOiBtdXN0IG5vdCB0cmFuc2l0aW9uIHRvIGFueSBvdGhlciBzdGF0ZS4gZXZlbnR1
YWxseS1mdWxmaWxsZWQKK1BBU1MgMi4xLjIuMTogV2hlbiBmdWxmaWxsZWQsIGEgcHJvbWlzZTog
bXVzdCBub3QgdHJhbnNpdGlvbiB0byBhbnkgb3RoZXIgc3RhdGUuIHRyeWluZyB0byBmdWxmaWxs
IHRoZW4gaW1tZWRpYXRlbHkgcmVqZWN0CitQQVNTIDIuMS4yLjE6IFdoZW4gZnVsZmlsbGVkLCBh
IHByb21pc2U6IG11c3Qgbm90IHRyYW5zaXRpb24gdG8gYW55IG90aGVyIHN0YXRlLiB0cnlpbmcg
dG8gZnVsZmlsbCB0aGVuIHJlamVjdCwgZGVsYXllZAorUEFTUyAyLjEuMi4xOiBXaGVuIGZ1bGZp
bGxlZCwgYSBwcm9taXNlOiBtdXN0IG5vdCB0cmFuc2l0aW9uIHRvIGFueSBvdGhlciBzdGF0ZS4g
dHJ5aW5nIHRvIGZ1bGZpbGwgaW1tZWRpYXRlbHkgdGhlbiByZWplY3QgZGVsYXllZAorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMS0yLmh0bWwg
Yi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTEtMi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmViNTdmOThmMDczZGU4MjgzODVhNzViODBhYTdkNDhkZTQwN2JiYjMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10
ZXN0cy0yLTEtMi5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hZGFwdGVyLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZSB3aXRoIFBy
b21pc2UgQSsgdGVzdHMgMi4xLjIuJyk7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbW9jaGEuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KK21vY2hhLnNldHVwKHsKKyAgICB1aTogJ2JkZCcsCisgICAgcmVwb3J0ZXI6IExheW91
dFRlc3RzUmVwb3J0ZXIKK30pOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icHJvbWlzZXMtdGVz
dHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3Byb21pc2VUZXN0cy50ZXN0czJfMV8yKCk7Citt
b2NoYS5ydW4oKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMtMi0xLTMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMtMi0xLTMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkN2UyZmExZWE5MDBmMjM5ZDA0NmFhMmU0ZGZlYThk
ZjM3NTJjY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0
cy9wcm9taXNlcy10ZXN0cy0yLTEtMy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVz
dCBQcm9taXNlIHdpdGggUHJvbWlzZSBBKyB0ZXN0cyAyLjEuMy4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCitQQVNTIDIuMS4zLjE6IFdoZW4gcmVqZWN0ZWQsIGEgcHJvbWlzZTogbXVz
dCBub3QgdHJhbnNpdGlvbiB0byBhbnkgb3RoZXIgc3RhdGUuIGFscmVhZHktcmVqZWN0ZWQKK1BB
U1MgMi4xLjMuMTogV2hlbiByZWplY3RlZCwgYSBwcm9taXNlOiBtdXN0IG5vdCB0cmFuc2l0aW9u
IHRvIGFueSBvdGhlciBzdGF0ZS4gaW1tZWRpYXRlbHktcmVqZWN0ZWQKK1BBU1MgMi4xLjMuMTog
V2hlbiByZWplY3RlZCwgYSBwcm9taXNlOiBtdXN0IG5vdCB0cmFuc2l0aW9uIHRvIGFueSBvdGhl
ciBzdGF0ZS4gZXZlbnR1YWxseS1yZWplY3RlZAorUEFTUyAyLjEuMy4xOiBXaGVuIHJlamVjdGVk
LCBhIHByb21pc2U6IG11c3Qgbm90IHRyYW5zaXRpb24gdG8gYW55IG90aGVyIHN0YXRlLiB0cnlp
bmcgdG8gcmVqZWN0IHRoZW4gaW1tZWRpYXRlbHkgZnVsZmlsbAorUEFTUyAyLjEuMy4xOiBXaGVu
IHJlamVjdGVkLCBhIHByb21pc2U6IG11c3Qgbm90IHRyYW5zaXRpb24gdG8gYW55IG90aGVyIHN0
YXRlLiB0cnlpbmcgdG8gcmVqZWN0IHRoZW4gZnVsZmlsbCwgZGVsYXllZAorUEFTUyAyLjEuMy4x
OiBXaGVuIHJlamVjdGVkLCBhIHByb21pc2U6IG11c3Qgbm90IHRyYW5zaXRpb24gdG8gYW55IG90
aGVyIHN0YXRlLiB0cnlpbmcgdG8gcmVqZWN0IGltbWVkaWF0ZWx5IHRoZW4gZnVsZmlsbCBkZWxh
eWVkCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMt
Mi0xLTMuaHRtbCBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3Rz
LTItMS0zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJiNDg1OWY0ZGMzMWM0MWQ2ZDQxZGE2YTU1MjdjYmUw
NjdkOTQxMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3Rz
L3Byb21pc2VzLXRlc3RzLTItMS0zLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIEhU
TUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2FkYXB0ZXIuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9t
aXNlIHdpdGggUHJvbWlzZSBBKyB0ZXN0cyAyLjEuMy4nKTsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9tb2NoYS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorbW9jaGEuc2V0dXAoeworICAgIHVpOiAnYmRkJywKKyAgICByZXBv
cnRlcjogTGF5b3V0VGVzdHNSZXBvcnRlcgorfSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJw
cm9taXNlcy10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorcHJvbWlzZVRlc3RzLnRlc3Rz
Ml8xXzMoKTsKK21vY2hhLnJ1bigpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTIt
MS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10
ZXN0cy0yLTItMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA1NTMyNTU2Yjc1MTg5ZWEwNTA1
M2JjNmI5ODVjMTFkNjNjZDk2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3By
b21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMi0xLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDI4IEBACitUZXN0IFByb21pc2Ugd2l0aCBQcm9taXNlIEErIHRlc3RzIDIuMi4xLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgMi4yLjE6IEJvdGggYG9uRnVsZmlsbGVkYCBh
bmQgYG9uUmVqZWN0ZWRgIGFyZSBvcHRpb25hbCBhcmd1bWVudHMuIDIuMi4xLjE6IElmIGBvbkZ1
bGZpbGxlZGAgaXMgbm90IGEgZnVuY3Rpb24sIGl0IG11c3QgYmUgaWdub3JlZC4gYXBwbGllZCB0
byBhIGRpcmVjdGx5LXJlamVjdGVkIHByb21pc2UgYG9uRnVsZmlsbGVkYCBpcyBgdW5kZWZpbmVk
YAorUEFTUyAyLjIuMTogQm90aCBgb25GdWxmaWxsZWRgIGFuZCBgb25SZWplY3RlZGAgYXJlIG9w
dGlvbmFsIGFyZ3VtZW50cy4gMi4yLjEuMTogSWYgYG9uRnVsZmlsbGVkYCBpcyBub3QgYSBmdW5j
dGlvbiwgaXQgbXVzdCBiZSBpZ25vcmVkLiBhcHBsaWVkIHRvIGEgZGlyZWN0bHktcmVqZWN0ZWQg
cHJvbWlzZSBgb25GdWxmaWxsZWRgIGlzIGBudWxsYAorUEFTUyAyLjIuMTogQm90aCBgb25GdWxm
aWxsZWRgIGFuZCBgb25SZWplY3RlZGAgYXJlIG9wdGlvbmFsIGFyZ3VtZW50cy4gMi4yLjEuMTog
SWYgYG9uRnVsZmlsbGVkYCBpcyBub3QgYSBmdW5jdGlvbiwgaXQgbXVzdCBiZSBpZ25vcmVkLiBh
cHBsaWVkIHRvIGEgZGlyZWN0bHktcmVqZWN0ZWQgcHJvbWlzZSBgb25GdWxmaWxsZWRgIGlzIGBm
YWxzZWAKK1BBU1MgMi4yLjE6IEJvdGggYG9uRnVsZmlsbGVkYCBhbmQgYG9uUmVqZWN0ZWRgIGFy
ZSBvcHRpb25hbCBhcmd1bWVudHMuIDIuMi4xLjE6IElmIGBvbkZ1bGZpbGxlZGAgaXMgbm90IGEg
ZnVuY3Rpb24sIGl0IG11c3QgYmUgaWdub3JlZC4gYXBwbGllZCB0byBhIGRpcmVjdGx5LXJlamVj
dGVkIHByb21pc2UgYG9uRnVsZmlsbGVkYCBpcyBgNWAKK1BBU1MgMi4yLjE6IEJvdGggYG9uRnVs
ZmlsbGVkYCBhbmQgYG9uUmVqZWN0ZWRgIGFyZSBvcHRpb25hbCBhcmd1bWVudHMuIDIuMi4xLjE6
IElmIGBvbkZ1bGZpbGxlZGAgaXMgbm90IGEgZnVuY3Rpb24sIGl0IG11c3QgYmUgaWdub3JlZC4g
YXBwbGllZCB0byBhIGRpcmVjdGx5LXJlamVjdGVkIHByb21pc2UgYG9uRnVsZmlsbGVkYCBpcyBh
biBvYmplY3QKK1BBU1MgMi4yLjE6IEJvdGggYG9uRnVsZmlsbGVkYCBhbmQgYG9uUmVqZWN0ZWRg
IGFyZSBvcHRpb25hbCBhcmd1bWVudHMuIDIuMi4xLjE6IElmIGBvbkZ1bGZpbGxlZGAgaXMgbm90
IGEgZnVuY3Rpb24sIGl0IG11c3QgYmUgaWdub3JlZC4gYXBwbGllZCB0byBhIHByb21pc2UgcmVq
ZWN0ZWQgYW5kIHRoZW4gY2hhaW5lZCBvZmYgb2YgYG9uRnVsZmlsbGVkYCBpcyBgdW5kZWZpbmVk
YAorUEFTUyAyLjIuMTogQm90aCBgb25GdWxmaWxsZWRgIGFuZCBgb25SZWplY3RlZGAgYXJlIG9w
dGlvbmFsIGFyZ3VtZW50cy4gMi4yLjEuMTogSWYgYG9uRnVsZmlsbGVkYCBpcyBub3QgYSBmdW5j
dGlvbiwgaXQgbXVzdCBiZSBpZ25vcmVkLiBhcHBsaWVkIHRvIGEgcHJvbWlzZSByZWplY3RlZCBh
bmQgdGhlbiBjaGFpbmVkIG9mZiBvZiBgb25GdWxmaWxsZWRgIGlzIGBudWxsYAorUEFTUyAyLjIu
MTogQm90aCBgb25GdWxmaWxsZWRgIGFuZCBgb25SZWplY3RlZGAgYXJlIG9wdGlvbmFsIGFyZ3Vt
ZW50cy4gMi4yLjEuMTogSWYgYG9uRnVsZmlsbGVkYCBpcyBub3QgYSBmdW5jdGlvbiwgaXQgbXVz
dCBiZSBpZ25vcmVkLiBhcHBsaWVkIHRvIGEgcHJvbWlzZSByZWplY3RlZCBhbmQgdGhlbiBjaGFp
bmVkIG9mZiBvZiBgb25GdWxmaWxsZWRgIGlzIGBmYWxzZWAKK1BBU1MgMi4yLjE6IEJvdGggYG9u
RnVsZmlsbGVkYCBhbmQgYG9uUmVqZWN0ZWRgIGFyZSBvcHRpb25hbCBhcmd1bWVudHMuIDIuMi4x
LjE6IElmIGBvbkZ1bGZpbGxlZGAgaXMgbm90IGEgZnVuY3Rpb24sIGl0IG11c3QgYmUgaWdub3Jl
ZC4gYXBwbGllZCB0byBhIHByb21pc2UgcmVqZWN0ZWQgYW5kIHRoZW4gY2hhaW5lZCBvZmYgb2Yg
YG9uRnVsZmlsbGVkYCBpcyBgNWAKK1BBU1MgMi4yLjE6IEJvdGggYG9uRnVsZmlsbGVkYCBhbmQg
YG9uUmVqZWN0ZWRgIGFyZSBvcHRpb25hbCBhcmd1bWVudHMuIDIuMi4xLjE6IElmIGBvbkZ1bGZp
bGxlZGAgaXMgbm90IGEgZnVuY3Rpb24sIGl0IG11c3QgYmUgaWdub3JlZC4gYXBwbGllZCB0byBh
IHByb21pc2UgcmVqZWN0ZWQgYW5kIHRoZW4gY2hhaW5lZCBvZmYgb2YgYG9uRnVsZmlsbGVkYCBp
cyBhbiBvYmplY3QKK1BBU1MgMi4yLjE6IEJvdGggYG9uRnVsZmlsbGVkYCBhbmQgYG9uUmVqZWN0
ZWRgIGFyZSBvcHRpb25hbCBhcmd1bWVudHMuIDIuMi4xLjI6IElmIGBvblJlamVjdGVkYCBpcyBu
b3QgYSBmdW5jdGlvbiwgaXQgbXVzdCBiZSBpZ25vcmVkLiBhcHBsaWVkIHRvIGEgZGlyZWN0bHkt
ZnVsZmlsbGVkIHByb21pc2UgYG9uUmVqZWN0ZWRgIGlzIGB1bmRlZmluZWRgCitQQVNTIDIuMi4x
OiBCb3RoIGBvbkZ1bGZpbGxlZGAgYW5kIGBvblJlamVjdGVkYCBhcmUgb3B0aW9uYWwgYXJndW1l
bnRzLiAyLjIuMS4yOiBJZiBgb25SZWplY3RlZGAgaXMgbm90IGEgZnVuY3Rpb24sIGl0IG11c3Qg
YmUgaWdub3JlZC4gYXBwbGllZCB0byBhIGRpcmVjdGx5LWZ1bGZpbGxlZCBwcm9taXNlIGBvblJl
amVjdGVkYCBpcyBgbnVsbGAKK1BBU1MgMi4yLjE6IEJvdGggYG9uRnVsZmlsbGVkYCBhbmQgYG9u
UmVqZWN0ZWRgIGFyZSBvcHRpb25hbCBhcmd1bWVudHMuIDIuMi4xLjI6IElmIGBvblJlamVjdGVk
YCBpcyBub3QgYSBmdW5jdGlvbiwgaXQgbXVzdCBiZSBpZ25vcmVkLiBhcHBsaWVkIHRvIGEgZGly
ZWN0bHktZnVsZmlsbGVkIHByb21pc2UgYG9uUmVqZWN0ZWRgIGlzIGBmYWxzZWAKK1BBU1MgMi4y
LjE6IEJvdGggYG9uRnVsZmlsbGVkYCBhbmQgYG9uUmVqZWN0ZWRgIGFyZSBvcHRpb25hbCBhcmd1
bWVudHMuIDIuMi4xLjI6IElmIGBvblJlamVjdGVkYCBpcyBub3QgYSBmdW5jdGlvbiwgaXQgbXVz
dCBiZSBpZ25vcmVkLiBhcHBsaWVkIHRvIGEgZGlyZWN0bHktZnVsZmlsbGVkIHByb21pc2UgYG9u
UmVqZWN0ZWRgIGlzIGA1YAorUEFTUyAyLjIuMTogQm90aCBgb25GdWxmaWxsZWRgIGFuZCBgb25S
ZWplY3RlZGAgYXJlIG9wdGlvbmFsIGFyZ3VtZW50cy4gMi4yLjEuMjogSWYgYG9uUmVqZWN0ZWRg
IGlzIG5vdCBhIGZ1bmN0aW9uLCBpdCBtdXN0IGJlIGlnbm9yZWQuIGFwcGxpZWQgdG8gYSBkaXJl
Y3RseS1mdWxmaWxsZWQgcHJvbWlzZSBgb25SZWplY3RlZGAgaXMgYW4gb2JqZWN0CitQQVNTIDIu
Mi4xOiBCb3RoIGBvbkZ1bGZpbGxlZGAgYW5kIGBvblJlamVjdGVkYCBhcmUgb3B0aW9uYWwgYXJn
dW1lbnRzLiAyLjIuMS4yOiBJZiBgb25SZWplY3RlZGAgaXMgbm90IGEgZnVuY3Rpb24sIGl0IG11
c3QgYmUgaWdub3JlZC4gYXBwbGllZCB0byBhIHByb21pc2UgZnVsZmlsbGVkIGFuZCB0aGVuIGNo
YWluZWQgb2ZmIG9mIGBvbkZ1bGZpbGxlZGAgaXMgYHVuZGVmaW5lZGAKK1BBU1MgMi4yLjE6IEJv
dGggYG9uRnVsZmlsbGVkYCBhbmQgYG9uUmVqZWN0ZWRgIGFyZSBvcHRpb25hbCBhcmd1bWVudHMu
IDIuMi4xLjI6IElmIGBvblJlamVjdGVkYCBpcyBub3QgYSBmdW5jdGlvbiwgaXQgbXVzdCBiZSBp
Z25vcmVkLiBhcHBsaWVkIHRvIGEgcHJvbWlzZSBmdWxmaWxsZWQgYW5kIHRoZW4gY2hhaW5lZCBv
ZmYgb2YgYG9uRnVsZmlsbGVkYCBpcyBgbnVsbGAKK1BBU1MgMi4yLjE6IEJvdGggYG9uRnVsZmls
bGVkYCBhbmQgYG9uUmVqZWN0ZWRgIGFyZSBvcHRpb25hbCBhcmd1bWVudHMuIDIuMi4xLjI6IElm
IGBvblJlamVjdGVkYCBpcyBub3QgYSBmdW5jdGlvbiwgaXQgbXVzdCBiZSBpZ25vcmVkLiBhcHBs
aWVkIHRvIGEgcHJvbWlzZSBmdWxmaWxsZWQgYW5kIHRoZW4gY2hhaW5lZCBvZmYgb2YgYG9uRnVs
ZmlsbGVkYCBpcyBgZmFsc2VgCitQQVNTIDIuMi4xOiBCb3RoIGBvbkZ1bGZpbGxlZGAgYW5kIGBv
blJlamVjdGVkYCBhcmUgb3B0aW9uYWwgYXJndW1lbnRzLiAyLjIuMS4yOiBJZiBgb25SZWplY3Rl
ZGAgaXMgbm90IGEgZnVuY3Rpb24sIGl0IG11c3QgYmUgaWdub3JlZC4gYXBwbGllZCB0byBhIHBy
b21pc2UgZnVsZmlsbGVkIGFuZCB0aGVuIGNoYWluZWQgb2ZmIG9mIGBvbkZ1bGZpbGxlZGAgaXMg
YDVgCitQQVNTIDIuMi4xOiBCb3RoIGBvbkZ1bGZpbGxlZGAgYW5kIGBvblJlamVjdGVkYCBhcmUg
b3B0aW9uYWwgYXJndW1lbnRzLiAyLjIuMS4yOiBJZiBgb25SZWplY3RlZGAgaXMgbm90IGEgZnVu
Y3Rpb24sIGl0IG11c3QgYmUgaWdub3JlZC4gYXBwbGllZCB0byBhIHByb21pc2UgZnVsZmlsbGVk
IGFuZCB0aGVuIGNoYWluZWQgb2ZmIG9mIGBvbkZ1bGZpbGxlZGAgaXMgYW4gb2JqZWN0CitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMtMi0yLTEuaHRt
bCBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMi0xLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGY4NzI3MDFlOGJhNzYyNjQ0Yzg5MGNmYTI5N2YxOTNjMjE0MTcxYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2Vz
LXRlc3RzLTItMi0xLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2FkYXB0ZXIuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlIHdpdGgg
UHJvbWlzZSBBKyB0ZXN0cyAyLjIuMS4nKTsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9tb2NoYS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorbW9jaGEuc2V0dXAoeworICAgIHVpOiAnYmRkJywKKyAgICByZXBvcnRlcjogTGF5
b3V0VGVzdHNSZXBvcnRlcgorfSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJwcm9taXNlcy10
ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorcHJvbWlzZVRlc3RzLnRlc3RzMl8yXzEoKTsK
K21vY2hhLnJ1bigpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTItMi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTIt
Mi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWU4ZWI0NzA3Y2UwNDNlYzFiNjA2ZjY0MzBkNGE3
MTdmZjkzYWU1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRl
c3RzL3Byb21pc2VzLXRlc3RzLTItMi0yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitU
ZXN0IFByb21pc2Ugd2l0aCBQcm9taXNlIEErIHRlc3RzIDIuMi4yLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKK1BBU1MgMi4yLjI6IElmIGBvbkZ1bGZpbGxlZGAgaXMgYSBmdW5jdGlv
biwgMi4yLjIuMTogaXQgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgYHByb21pc2VgIGlzIGZ1bGZpbGxl
ZCwgd2l0aCBgcHJvbWlzZWDDouKCrOKEonMgZnVsZmlsbG1lbnQgdmFsdWUgYXMgaXRzIGZpcnN0
IGFyZ3VtZW50LiBhbHJlYWR5LWZ1bGZpbGxlZAorUEFTUyAyLjIuMjogSWYgYG9uRnVsZmlsbGVk
YCBpcyBhIGZ1bmN0aW9uLCAyLjIuMi4xOiBpdCBtdXN0IGJlIGNhbGxlZCBhZnRlciBgcHJvbWlz
ZWAgaXMgZnVsZmlsbGVkLCB3aXRoIGBwcm9taXNlYMOi4oKs4oSicyBmdWxmaWxsbWVudCB2YWx1
ZSBhcyBpdHMgZmlyc3QgYXJndW1lbnQuIGltbWVkaWF0ZWx5LWZ1bGZpbGxlZAorUEFTUyAyLjIu
MjogSWYgYG9uRnVsZmlsbGVkYCBpcyBhIGZ1bmN0aW9uLCAyLjIuMi4xOiBpdCBtdXN0IGJlIGNh
bGxlZCBhZnRlciBgcHJvbWlzZWAgaXMgZnVsZmlsbGVkLCB3aXRoIGBwcm9taXNlYMOi4oKs4oSi
cyBmdWxmaWxsbWVudCB2YWx1ZSBhcyBpdHMgZmlyc3QgYXJndW1lbnQuIGV2ZW50dWFsbHktZnVs
ZmlsbGVkCitQQVNTIDIuMi4yOiBJZiBgb25GdWxmaWxsZWRgIGlzIGEgZnVuY3Rpb24sIDIuMi4y
LjI6IGl0IG11c3Qgbm90IGJlIGNhbGxlZCBiZWZvcmUgYHByb21pc2VgIGlzIGZ1bGZpbGxlZCBm
dWxmaWxsZWQgYWZ0ZXIgYSBkZWxheQorUEFTUyAyLjIuMjogSWYgYG9uRnVsZmlsbGVkYCBpcyBh
IGZ1bmN0aW9uLCAyLjIuMi4yOiBpdCBtdXN0IG5vdCBiZSBjYWxsZWQgYmVmb3JlIGBwcm9taXNl
YCBpcyBmdWxmaWxsZWQgbmV2ZXIgZnVsZmlsbGVkCitQQVNTIDIuMi4yOiBJZiBgb25GdWxmaWxs
ZWRgIGlzIGEgZnVuY3Rpb24sIDIuMi4yLjM6IGl0IG11c3Qgbm90IGJlIGNhbGxlZCBtb3JlIHRo
YW4gb25jZS4gYWxyZWFkeS1mdWxmaWxsZWQKK1BBU1MgMi4yLjI6IElmIGBvbkZ1bGZpbGxlZGAg
aXMgYSBmdW5jdGlvbiwgMi4yLjIuMzogaXQgbXVzdCBub3QgYmUgY2FsbGVkIG1vcmUgdGhhbiBv
bmNlLiB0cnlpbmcgdG8gZnVsZmlsbCBhIHBlbmRpbmcgcHJvbWlzZSBtb3JlIHRoYW4gb25jZSwg
aW1tZWRpYXRlbHkKK1BBU1MgMi4yLjI6IElmIGBvbkZ1bGZpbGxlZGAgaXMgYSBmdW5jdGlvbiwg
Mi4yLjIuMzogaXQgbXVzdCBub3QgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLiB0cnlpbmcgdG8g
ZnVsZmlsbCBhIHBlbmRpbmcgcHJvbWlzZSBtb3JlIHRoYW4gb25jZSwgZGVsYXllZAorUEFTUyAy
LjIuMjogSWYgYG9uRnVsZmlsbGVkYCBpcyBhIGZ1bmN0aW9uLCAyLjIuMi4zOiBpdCBtdXN0IG5v
dCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuIHRyeWluZyB0byBmdWxmaWxsIGEgcGVuZGluZyBw
cm9taXNlIG1vcmUgdGhhbiBvbmNlLCBpbW1lZGlhdGVseSB0aGVuIGRlbGF5ZWQKK1BBU1MgMi4y
LjI6IElmIGBvbkZ1bGZpbGxlZGAgaXMgYSBmdW5jdGlvbiwgMi4yLjIuMzogaXQgbXVzdCBub3Qg
YmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLiB3aGVuIG11bHRpcGxlIGB0aGVuYCBjYWxscyBhcmUg
bWFkZSwgc3BhY2VkIGFwYXJ0IGluIHRpbWUKK1BBU1MgMi4yLjI6IElmIGBvbkZ1bGZpbGxlZGAg
aXMgYSBmdW5jdGlvbiwgMi4yLjIuMzogaXQgbXVzdCBub3QgYmUgY2FsbGVkIG1vcmUgdGhhbiBv
bmNlLiB3aGVuIGB0aGVuYCBpcyBpbnRlcmxlYXZlZCB3aXRoIGZ1bGZpbGxtZW50CitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMtMi0yLTIuaHRtbCBi
L0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMi0yLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTZjMDgwNGZlYTk3MTBmMTVlOGNlYWRiOTE3YzI1ZDFjNWE3NDA5ZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRl
c3RzLTItMi0yLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2FkYXB0ZXIuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlIHdpdGggUHJv
bWlzZSBBKyB0ZXN0cyAyLjIuMi4nKTsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9tb2NoYS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorbW9jaGEuc2V0dXAoeworICAgIHVpOiAnYmRkJywKKyAgICByZXBvcnRlcjogTGF5b3V0
VGVzdHNSZXBvcnRlcgorfSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJwcm9taXNlcy10ZXN0
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorcHJvbWlzZVRlc3RzLnRlc3RzMl8yXzIoKTsKK21v
Y2hhLnJ1bigpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTItMy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTItMy1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDEyYjY4NjA3MWI1YjQ1YzlkYzk4NmVlMzQzNTI0YTFm
ODMwZjNmZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3Rz
L3Byb21pc2VzLXRlc3RzLTItMi0zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitUZXN0
IFByb21pc2Ugd2l0aCBQcm9taXNlIEErIHRlc3RzIDIuMi4zLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKK1BBU1MgMi4yLjM6IElmIGBvblJlamVjdGVkYCBpcyBhIGZ1bmN0aW9uLCAy
LjIuMy4xOiBpdCBtdXN0IGJlIGNhbGxlZCBhZnRlciBgcHJvbWlzZWAgaXMgcmVqZWN0ZWQsIHdp
dGggYHByb21pc2Vgw6LigqzihKJzIHJlamVjdGlvbiByZWFzb24gYXMgaXRzIGZpcnN0IGFyZ3Vt
ZW50LiBhbHJlYWR5LXJlamVjdGVkCitQQVNTIDIuMi4zOiBJZiBgb25SZWplY3RlZGAgaXMgYSBm
dW5jdGlvbiwgMi4yLjMuMTogaXQgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgYHByb21pc2VgIGlzIHJl
amVjdGVkLCB3aXRoIGBwcm9taXNlYMOi4oKs4oSicyByZWplY3Rpb24gcmVhc29uIGFzIGl0cyBm
aXJzdCBhcmd1bWVudC4gaW1tZWRpYXRlbHktcmVqZWN0ZWQKK1BBU1MgMi4yLjM6IElmIGBvblJl
amVjdGVkYCBpcyBhIGZ1bmN0aW9uLCAyLjIuMy4xOiBpdCBtdXN0IGJlIGNhbGxlZCBhZnRlciBg
cHJvbWlzZWAgaXMgcmVqZWN0ZWQsIHdpdGggYHByb21pc2Vgw6LigqzihKJzIHJlamVjdGlvbiBy
ZWFzb24gYXMgaXRzIGZpcnN0IGFyZ3VtZW50LiBldmVudHVhbGx5LXJlamVjdGVkCitQQVNTIDIu
Mi4zOiBJZiBgb25SZWplY3RlZGAgaXMgYSBmdW5jdGlvbiwgMi4yLjMuMjogaXQgbXVzdCBub3Qg
YmUgY2FsbGVkIGJlZm9yZSBgcHJvbWlzZWAgaXMgcmVqZWN0ZWQgcmVqZWN0ZWQgYWZ0ZXIgYSBk
ZWxheQorUEFTUyAyLjIuMzogSWYgYG9uUmVqZWN0ZWRgIGlzIGEgZnVuY3Rpb24sIDIuMi4zLjI6
IGl0IG11c3Qgbm90IGJlIGNhbGxlZCBiZWZvcmUgYHByb21pc2VgIGlzIHJlamVjdGVkIG5ldmVy
IHJlamVjdGVkCitQQVNTIDIuMi4zOiBJZiBgb25SZWplY3RlZGAgaXMgYSBmdW5jdGlvbiwgMi4y
LjMuMzogaXQgbXVzdCBub3QgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLiBhbHJlYWR5LXJlamVj
dGVkCitQQVNTIDIuMi4zOiBJZiBgb25SZWplY3RlZGAgaXMgYSBmdW5jdGlvbiwgMi4yLjMuMzog
aXQgbXVzdCBub3QgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLiB0cnlpbmcgdG8gcmVqZWN0IGEg
cGVuZGluZyBwcm9taXNlIG1vcmUgdGhhbiBvbmNlLCBpbW1lZGlhdGVseQorUEFTUyAyLjIuMzog
SWYgYG9uUmVqZWN0ZWRgIGlzIGEgZnVuY3Rpb24sIDIuMi4zLjM6IGl0IG11c3Qgbm90IGJlIGNh
bGxlZCBtb3JlIHRoYW4gb25jZS4gdHJ5aW5nIHRvIHJlamVjdCBhIHBlbmRpbmcgcHJvbWlzZSBt
b3JlIHRoYW4gb25jZSwgZGVsYXllZAorUEFTUyAyLjIuMzogSWYgYG9uUmVqZWN0ZWRgIGlzIGEg
ZnVuY3Rpb24sIDIuMi4zLjM6IGl0IG11c3Qgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZS4g
dHJ5aW5nIHRvIHJlamVjdCBhIHBlbmRpbmcgcHJvbWlzZSBtb3JlIHRoYW4gb25jZSwgaW1tZWRp
YXRlbHkgdGhlbiBkZWxheWVkCitQQVNTIDIuMi4zOiBJZiBgb25SZWplY3RlZGAgaXMgYSBmdW5j
dGlvbiwgMi4yLjMuMzogaXQgbXVzdCBub3QgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLiB3aGVu
IG11bHRpcGxlIGB0aGVuYCBjYWxscyBhcmUgbWFkZSwgc3BhY2VkIGFwYXJ0IGluIHRpbWUKK1BB
U1MgMi4yLjM6IElmIGBvblJlamVjdGVkYCBpcyBhIGZ1bmN0aW9uLCAyLjIuMy4zOiBpdCBtdXN0
IG5vdCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuIHdoZW4gYHRoZW5gIGlzIGludGVybGVhdmVk
IHdpdGggcmVqZWN0aW9uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJv
bWlzZXMtdGVzdHMtMi0yLTMuaHRtbCBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3By
b21pc2VzLXRlc3RzLTItMi0zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDg3MmU2MzliNTMyZGZhOGI2N2Y4
Yzk4YzZmYjU2ZGQ4YTc2MTYwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3By
b21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMi0zLmh0bWwKQEAgLTAsMCArMSwyOCBAQAor
PCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Fk
YXB0ZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bignVGVzdCBQcm9taXNlIHdpdGggUHJvbWlzZSBBKyB0ZXN0cyAyLjIuMy4nKTsKK3dpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9t
b2NoYS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorbW9jaGEuc2V0dXAoeworICAgIHVpOiAnYmRk
JywKKyAgICByZXBvcnRlcjogTGF5b3V0VGVzdHNSZXBvcnRlcgorfSk7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJwcm9taXNlcy10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorcHJvbWlz
ZVRlc3RzLnRlc3RzMl8yXzMoKTsKK21vY2hhLnJ1bigpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNl
cy10ZXN0cy0yLTItNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0
cy9wcm9taXNlcy10ZXN0cy0yLTItNC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRjNWQ1NjEz
MTk3MmQzZGZmYzE5ZjcxOTIxNzkyNjU2NGY2NjEzZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMi00LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDI0IEBACitUZXN0IFByb21pc2Ugd2l0aCBQcm9taXNlIEErIHRlc3RzIDIu
Mi40LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgMi4yLjQ6IGBvbkZ1bGZp
bGxlZGAgb3IgYG9uUmVqZWN0ZWRgIG11c3Qgbm90IGJlIGNhbGxlZCB1bnRpbCB0aGUgZXhlY3V0
aW9uIGNvbnRleHQgc3RhY2sgY29udGFpbnMgb25seSBwbGF0Zm9ybSBjb2RlLiBgdGhlbmAgcmV0
dXJucyBiZWZvcmUgdGhlIHByb21pc2UgYmVjb21lcyBmdWxmaWxsZWQgb3IgcmVqZWN0ZWQgYWxy
ZWFkeS1mdWxmaWxsZWQKK1BBU1MgMi4yLjQ6IGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRg
IG11c3Qgbm90IGJlIGNhbGxlZCB1bnRpbCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgc3RhY2sgY29u
dGFpbnMgb25seSBwbGF0Zm9ybSBjb2RlLiBgdGhlbmAgcmV0dXJucyBiZWZvcmUgdGhlIHByb21p
c2UgYmVjb21lcyBmdWxmaWxsZWQgb3IgcmVqZWN0ZWQgaW1tZWRpYXRlbHktZnVsZmlsbGVkCitQ
QVNTIDIuMi40OiBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCBtdXN0IG5vdCBiZSBjYWxs
ZWQgdW50aWwgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHN0YWNrIGNvbnRhaW5zIG9ubHkgcGxhdGZv
cm0gY29kZS4gYHRoZW5gIHJldHVybnMgYmVmb3JlIHRoZSBwcm9taXNlIGJlY29tZXMgZnVsZmls
bGVkIG9yIHJlamVjdGVkIGV2ZW50dWFsbHktZnVsZmlsbGVkCitQQVNTIDIuMi40OiBgb25GdWxm
aWxsZWRgIG9yIGBvblJlamVjdGVkYCBtdXN0IG5vdCBiZSBjYWxsZWQgdW50aWwgdGhlIGV4ZWN1
dGlvbiBjb250ZXh0IHN0YWNrIGNvbnRhaW5zIG9ubHkgcGxhdGZvcm0gY29kZS4gYHRoZW5gIHJl
dHVybnMgYmVmb3JlIHRoZSBwcm9taXNlIGJlY29tZXMgZnVsZmlsbGVkIG9yIHJlamVjdGVkIGFs
cmVhZHktcmVqZWN0ZWQKK1BBU1MgMi4yLjQ6IGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRg
IG11c3Qgbm90IGJlIGNhbGxlZCB1bnRpbCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgc3RhY2sgY29u
dGFpbnMgb25seSBwbGF0Zm9ybSBjb2RlLiBgdGhlbmAgcmV0dXJucyBiZWZvcmUgdGhlIHByb21p
c2UgYmVjb21lcyBmdWxmaWxsZWQgb3IgcmVqZWN0ZWQgaW1tZWRpYXRlbHktcmVqZWN0ZWQKK1BB
U1MgMi4yLjQ6IGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIG11c3Qgbm90IGJlIGNhbGxl
ZCB1bnRpbCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgc3RhY2sgY29udGFpbnMgb25seSBwbGF0Zm9y
bSBjb2RlLiBgdGhlbmAgcmV0dXJucyBiZWZvcmUgdGhlIHByb21pc2UgYmVjb21lcyBmdWxmaWxs
ZWQgb3IgcmVqZWN0ZWQgZXZlbnR1YWxseS1yZWplY3RlZAorUEFTUyAyLjIuNDogYG9uRnVsZmls
bGVkYCBvciBgb25SZWplY3RlZGAgbXVzdCBub3QgYmUgY2FsbGVkIHVudGlsIHRoZSBleGVjdXRp
b24gY29udGV4dCBzdGFjayBjb250YWlucyBvbmx5IHBsYXRmb3JtIGNvZGUuIENsZWFuLXN0YWNr
IGV4ZWN1dGlvbiBvcmRlcmluZyB0ZXN0cyAoZnVsZmlsbG1lbnQgY2FzZSkgd2hlbiBgb25GdWxm
aWxsZWRgIGlzIGFkZGVkIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgcHJvbWlzZSBpcyBmdWxmaWxs
ZWQKK1BBU1MgMi4yLjQ6IGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIG11c3Qgbm90IGJl
IGNhbGxlZCB1bnRpbCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgc3RhY2sgY29udGFpbnMgb25seSBw
bGF0Zm9ybSBjb2RlLiBDbGVhbi1zdGFjayBleGVjdXRpb24gb3JkZXJpbmcgdGVzdHMgKGZ1bGZp
bGxtZW50IGNhc2UpIHdoZW4gYG9uRnVsZmlsbGVkYCBpcyBhZGRlZCBpbW1lZGlhdGVseSBhZnRl
ciB0aGUgcHJvbWlzZSBpcyBmdWxmaWxsZWQKK1BBU1MgMi4yLjQ6IGBvbkZ1bGZpbGxlZGAgb3Ig
YG9uUmVqZWN0ZWRgIG11c3Qgbm90IGJlIGNhbGxlZCB1bnRpbCB0aGUgZXhlY3V0aW9uIGNvbnRl
eHQgc3RhY2sgY29udGFpbnMgb25seSBwbGF0Zm9ybSBjb2RlLiBDbGVhbi1zdGFjayBleGVjdXRp
b24gb3JkZXJpbmcgdGVzdHMgKGZ1bGZpbGxtZW50IGNhc2UpIHdoZW4gb25lIGBvbkZ1bGZpbGxl
ZGAgaXMgYWRkZWQgaW5zaWRlIGFub3RoZXIgYG9uRnVsZmlsbGVkYAorUEFTUyAyLjIuNDogYG9u
RnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgbXVzdCBub3QgYmUgY2FsbGVkIHVudGlsIHRoZSBl
eGVjdXRpb24gY29udGV4dCBzdGFjayBjb250YWlucyBvbmx5IHBsYXRmb3JtIGNvZGUuIENsZWFu
LXN0YWNrIGV4ZWN1dGlvbiBvcmRlcmluZyB0ZXN0cyAoZnVsZmlsbG1lbnQgY2FzZSkgd2hlbiBg
b25GdWxmaWxsZWRgIGlzIGFkZGVkIGluc2lkZSBhbiBgb25SZWplY3RlZGAKK1BBU1MgMi4yLjQ6
IGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIG11c3Qgbm90IGJlIGNhbGxlZCB1bnRpbCB0
aGUgZXhlY3V0aW9uIGNvbnRleHQgc3RhY2sgY29udGFpbnMgb25seSBwbGF0Zm9ybSBjb2RlLiBD
bGVhbi1zdGFjayBleGVjdXRpb24gb3JkZXJpbmcgdGVzdHMgKGZ1bGZpbGxtZW50IGNhc2UpIHdo
ZW4gdGhlIHByb21pc2UgaXMgZnVsZmlsbGVkIGFzeW5jaHJvbm91c2x5CitQQVNTIDIuMi40OiBg
b25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCBtdXN0IG5vdCBiZSBjYWxsZWQgdW50aWwgdGhl
IGV4ZWN1dGlvbiBjb250ZXh0IHN0YWNrIGNvbnRhaW5zIG9ubHkgcGxhdGZvcm0gY29kZS4gQ2xl
YW4tc3RhY2sgZXhlY3V0aW9uIG9yZGVyaW5nIHRlc3RzIChyZWplY3Rpb24gY2FzZSkgd2hlbiBg
b25SZWplY3RlZGAgaXMgYWRkZWQgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBwcm9taXNlIGlzIHJl
amVjdGVkCitQQVNTIDIuMi40OiBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCBtdXN0IG5v
dCBiZSBjYWxsZWQgdW50aWwgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHN0YWNrIGNvbnRhaW5zIG9u
bHkgcGxhdGZvcm0gY29kZS4gQ2xlYW4tc3RhY2sgZXhlY3V0aW9uIG9yZGVyaW5nIHRlc3RzIChy
ZWplY3Rpb24gY2FzZSkgd2hlbiBgb25SZWplY3RlZGAgaXMgYWRkZWQgaW1tZWRpYXRlbHkgYWZ0
ZXIgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQKK1BBU1MgMi4yLjQ6IGBvbkZ1bGZpbGxlZGAgb3Ig
YG9uUmVqZWN0ZWRgIG11c3Qgbm90IGJlIGNhbGxlZCB1bnRpbCB0aGUgZXhlY3V0aW9uIGNvbnRl
eHQgc3RhY2sgY29udGFpbnMgb25seSBwbGF0Zm9ybSBjb2RlLiBDbGVhbi1zdGFjayBleGVjdXRp
b24gb3JkZXJpbmcgdGVzdHMgKHJlamVjdGlvbiBjYXNlKSB3aGVuIGBvblJlamVjdGVkYCBpcyBh
ZGRlZCBpbnNpZGUgYW4gYG9uRnVsZmlsbGVkYAorUEFTUyAyLjIuNDogYG9uRnVsZmlsbGVkYCBv
ciBgb25SZWplY3RlZGAgbXVzdCBub3QgYmUgY2FsbGVkIHVudGlsIHRoZSBleGVjdXRpb24gY29u
dGV4dCBzdGFjayBjb250YWlucyBvbmx5IHBsYXRmb3JtIGNvZGUuIENsZWFuLXN0YWNrIGV4ZWN1
dGlvbiBvcmRlcmluZyB0ZXN0cyAocmVqZWN0aW9uIGNhc2UpIHdoZW4gb25lIGBvblJlamVjdGVk
YCBpcyBhZGRlZCBpbnNpZGUgYW5vdGhlciBgb25SZWplY3RlZGAKK1BBU1MgMi4yLjQ6IGBvbkZ1
bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIG11c3Qgbm90IGJlIGNhbGxlZCB1bnRpbCB0aGUgZXhl
Y3V0aW9uIGNvbnRleHQgc3RhY2sgY29udGFpbnMgb25seSBwbGF0Zm9ybSBjb2RlLiBDbGVhbi1z
dGFjayBleGVjdXRpb24gb3JkZXJpbmcgdGVzdHMgKHJlamVjdGlvbiBjYXNlKSB3aGVuIHRoZSBw
cm9taXNlIGlzIHJlamVjdGVkIGFzeW5jaHJvbm91c2x5CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
cHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMtMi0yLTQuaHRtbCBiL0xheW91dFRlc3RzL2pz
L3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMi00Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRj
MWU3ODI0MTU2ODBlNTJhZTM5MWU5NmQ4MDkyNDg5ZDAyNzQ0NQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMi00Lmh0bWwK
QEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2FkYXB0ZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlIHdpdGggUHJvbWlzZSBBKyB0ZXN0cyAy
LjIuNC4nKTsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9tb2NoYS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorbW9jaGEuc2V0
dXAoeworICAgIHVpOiAnYmRkJywKKyAgICByZXBvcnRlcjogTGF5b3V0VGVzdHNSZXBvcnRlcgor
fSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJwcm9taXNlcy10ZXN0cy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorcHJvbWlzZVRlc3RzLnRlc3RzMl8yXzQoKTsKK21vY2hhLnJ1bigpOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9t
aXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTItNS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTItNS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmYxM2I1NDZhMTg1OTE5NGE5M2IyZmNiZjNjZWE4Y2U1OTJiYjUwNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3Rz
LTItMi01LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0IFByb21pc2Ugd2l0aCBQ
cm9taXNlIEErIHRlc3RzIDIuMi41LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BB
U1MgMi4yLjUgYG9uRnVsZmlsbGVkYCBhbmQgYG9uUmVqZWN0ZWRgIG11c3QgYmUgY2FsbGVkIGFz
IGZ1bmN0aW9ucyAoaS5lLiB3aXRoIG5vIGB0aGlzYCB2YWx1ZSkuIHN0cmljdCBtb2RlIGZ1bGZp
bGxlZAorUEFTUyAyLjIuNSBgb25GdWxmaWxsZWRgIGFuZCBgb25SZWplY3RlZGAgbXVzdCBiZSBj
YWxsZWQgYXMgZnVuY3Rpb25zIChpLmUuIHdpdGggbm8gYHRoaXNgIHZhbHVlKS4gc3RyaWN0IG1v
ZGUgcmVqZWN0ZWQKK1BBU1MgMi4yLjUgYG9uRnVsZmlsbGVkYCBhbmQgYG9uUmVqZWN0ZWRgIG11
c3QgYmUgY2FsbGVkIGFzIGZ1bmN0aW9ucyAoaS5lLiB3aXRoIG5vIGB0aGlzYCB2YWx1ZSkuIHNs
b3BweSBtb2RlIGZ1bGZpbGxlZAorUEFTUyAyLjIuNSBgb25GdWxmaWxsZWRgIGFuZCBgb25SZWpl
Y3RlZGAgbXVzdCBiZSBjYWxsZWQgYXMgZnVuY3Rpb25zIChpLmUuIHdpdGggbm8gYHRoaXNgIHZh
bHVlKS4gc2xvcHB5IG1vZGUgcmVqZWN0ZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNl
cy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTItNS5odG1sIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlz
ZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMtMi0yLTUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmRhY2NmYjA5
NGJhZjJjMTQ4YmFjYzJiNzk0NzkwOTliOTUwYzYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMtMi0yLTUuaHRtbApAQCAtMCww
ICsxLDI4IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvYWRhcHRlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
K2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2Ugd2l0aCBQcm9taXNlIEErIHRlc3RzIDIuMi41Licp
Oword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL21vY2hhLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cittb2NoYS5zZXR1cCh7Cisg
ICAgdWk6ICdiZGQnLAorICAgIHJlcG9ydGVyOiBMYXlvdXRUZXN0c1JlcG9ydGVyCit9KTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InByb21pc2VzLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Citwcm9taXNlVGVzdHMudGVzdHMyXzJfNSgpOworbW9jaGEucnVuKCk7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRl
c3RzL3Byb21pc2VzLXRlc3RzLTItMi02LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3By
b21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMi02LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ODcyMWViMGZjMTRmMzUyYzg1YTFkMGY4YjJjMjIzNjYyZTgzYTI1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMtMi0yLTYt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzggQEAKK1Rlc3QgUHJvbWlzZSB3aXRoIFByb21pc2Ug
QSsgdGVzdHMgMi4yLjYuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyAyLjIu
NjogYHRoZW5gIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgb24gdGhlIHNhbWUgcHJvbWlz
ZS4gMi4yLjYuMTogSWYvd2hlbiBgcHJvbWlzZWAgaXMgZnVsZmlsbGVkLCBhbGwgcmVzcGVjdGl2
ZSBgb25GdWxmaWxsZWRgIGNhbGxiYWNrcyBtdXN0IGV4ZWN1dGUgaW4gdGhlIG9yZGVyIG9mIHRo
ZWlyIG9yaWdpbmF0aW5nIGNhbGxzIHRvIGB0aGVuYC4gbXVsdGlwbGUgYm9yaW5nIGZ1bGZpbGxt
ZW50IGhhbmRsZXJzIGFscmVhZHktZnVsZmlsbGVkCitQQVNTIDIuMi42OiBgdGhlbmAgbWF5IGJl
IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4xOiBJZi93
aGVuIGBwcm9taXNlYCBpcyBmdWxmaWxsZWQsIGFsbCByZXNwZWN0aXZlIGBvbkZ1bGZpbGxlZGAg
Y2FsbGJhY2tzIG11c3QgZXhlY3V0ZSBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgb3JpZ2luYXRpbmcg
Y2FsbHMgdG8gYHRoZW5gLiBtdWx0aXBsZSBib3JpbmcgZnVsZmlsbG1lbnQgaGFuZGxlcnMgaW1t
ZWRpYXRlbHktZnVsZmlsbGVkCitQQVNTIDIuMi42OiBgdGhlbmAgbWF5IGJlIGNhbGxlZCBtdWx0
aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4xOiBJZi93aGVuIGBwcm9taXNl
YCBpcyBmdWxmaWxsZWQsIGFsbCByZXNwZWN0aXZlIGBvbkZ1bGZpbGxlZGAgY2FsbGJhY2tzIG11
c3QgZXhlY3V0ZSBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgb3JpZ2luYXRpbmcgY2FsbHMgdG8gYHRo
ZW5gLiBtdWx0aXBsZSBib3JpbmcgZnVsZmlsbG1lbnQgaGFuZGxlcnMgZXZlbnR1YWxseS1mdWxm
aWxsZWQKK1BBU1MgMi4yLjY6IGB0aGVuYCBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIG9u
IHRoZSBzYW1lIHByb21pc2UuIDIuMi42LjE6IElmL3doZW4gYHByb21pc2VgIGlzIGZ1bGZpbGxl
ZCwgYWxsIHJlc3BlY3RpdmUgYG9uRnVsZmlsbGVkYCBjYWxsYmFja3MgbXVzdCBleGVjdXRlIGlu
IHRoZSBvcmRlciBvZiB0aGVpciBvcmlnaW5hdGluZyBjYWxscyB0byBgdGhlbmAuIG11bHRpcGxl
IGZ1bGZpbGxtZW50IGhhbmRsZXJzLCBvbmUgb2Ygd2hpY2ggdGhyb3dzIGFscmVhZHktZnVsZmls
bGVkCitQQVNTIDIuMi42OiBgdGhlbmAgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiB0
aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4xOiBJZi93aGVuIGBwcm9taXNlYCBpcyBmdWxmaWxsZWQs
IGFsbCByZXNwZWN0aXZlIGBvbkZ1bGZpbGxlZGAgY2FsbGJhY2tzIG11c3QgZXhlY3V0ZSBpbiB0
aGUgb3JkZXIgb2YgdGhlaXIgb3JpZ2luYXRpbmcgY2FsbHMgdG8gYHRoZW5gLiBtdWx0aXBsZSBm
dWxmaWxsbWVudCBoYW5kbGVycywgb25lIG9mIHdoaWNoIHRocm93cyBpbW1lZGlhdGVseS1mdWxm
aWxsZWQKK1BBU1MgMi4yLjY6IGB0aGVuYCBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIG9u
IHRoZSBzYW1lIHByb21pc2UuIDIuMi42LjE6IElmL3doZW4gYHByb21pc2VgIGlzIGZ1bGZpbGxl
ZCwgYWxsIHJlc3BlY3RpdmUgYG9uRnVsZmlsbGVkYCBjYWxsYmFja3MgbXVzdCBleGVjdXRlIGlu
IHRoZSBvcmRlciBvZiB0aGVpciBvcmlnaW5hdGluZyBjYWxscyB0byBgdGhlbmAuIG11bHRpcGxl
IGZ1bGZpbGxtZW50IGhhbmRsZXJzLCBvbmUgb2Ygd2hpY2ggdGhyb3dzIGV2ZW50dWFsbHktZnVs
ZmlsbGVkCitQQVNTIDIuMi42OiBgdGhlbmAgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBv
biB0aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4xOiBJZi93aGVuIGBwcm9taXNlYCBpcyBmdWxmaWxs
ZWQsIGFsbCByZXNwZWN0aXZlIGBvbkZ1bGZpbGxlZGAgY2FsbGJhY2tzIG11c3QgZXhlY3V0ZSBp
biB0aGUgb3JkZXIgb2YgdGhlaXIgb3JpZ2luYXRpbmcgY2FsbHMgdG8gYHRoZW5gLiByZXN1bHRz
IGluIG11bHRpcGxlIGJyYW5jaGluZyBjaGFpbnMgd2l0aCB0aGVpciBvd24gZnVsZmlsbG1lbnQg
dmFsdWVzIGFscmVhZHktZnVsZmlsbGVkCitQQVNTIDIuMi42OiBgdGhlbmAgbWF5IGJlIGNhbGxl
ZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4xOiBJZi93aGVuIGBw
cm9taXNlYCBpcyBmdWxmaWxsZWQsIGFsbCByZXNwZWN0aXZlIGBvbkZ1bGZpbGxlZGAgY2FsbGJh
Y2tzIG11c3QgZXhlY3V0ZSBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgb3JpZ2luYXRpbmcgY2FsbHMg
dG8gYHRoZW5gLiByZXN1bHRzIGluIG11bHRpcGxlIGJyYW5jaGluZyBjaGFpbnMgd2l0aCB0aGVp
ciBvd24gZnVsZmlsbG1lbnQgdmFsdWVzIGltbWVkaWF0ZWx5LWZ1bGZpbGxlZAorUEFTUyAyLjIu
NjogYHRoZW5gIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgb24gdGhlIHNhbWUgcHJvbWlz
ZS4gMi4yLjYuMTogSWYvd2hlbiBgcHJvbWlzZWAgaXMgZnVsZmlsbGVkLCBhbGwgcmVzcGVjdGl2
ZSBgb25GdWxmaWxsZWRgIGNhbGxiYWNrcyBtdXN0IGV4ZWN1dGUgaW4gdGhlIG9yZGVyIG9mIHRo
ZWlyIG9yaWdpbmF0aW5nIGNhbGxzIHRvIGB0aGVuYC4gcmVzdWx0cyBpbiBtdWx0aXBsZSBicmFu
Y2hpbmcgY2hhaW5zIHdpdGggdGhlaXIgb3duIGZ1bGZpbGxtZW50IHZhbHVlcyBldmVudHVhbGx5
LWZ1bGZpbGxlZAorUEFTUyAyLjIuNjogYHRoZW5gIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGlt
ZXMgb24gdGhlIHNhbWUgcHJvbWlzZS4gMi4yLjYuMTogSWYvd2hlbiBgcHJvbWlzZWAgaXMgZnVs
ZmlsbGVkLCBhbGwgcmVzcGVjdGl2ZSBgb25GdWxmaWxsZWRgIGNhbGxiYWNrcyBtdXN0IGV4ZWN1
dGUgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5nIGNhbGxzIHRvIGB0aGVuYC4gYG9u
RnVsZmlsbGVkYCBoYW5kbGVycyBhcmUgY2FsbGVkIGluIHRoZSBvcmlnaW5hbCBvcmRlciBhbHJl
YWR5LWZ1bGZpbGxlZAorUEFTUyAyLjIuNjogYHRoZW5gIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUg
dGltZXMgb24gdGhlIHNhbWUgcHJvbWlzZS4gMi4yLjYuMTogSWYvd2hlbiBgcHJvbWlzZWAgaXMg
ZnVsZmlsbGVkLCBhbGwgcmVzcGVjdGl2ZSBgb25GdWxmaWxsZWRgIGNhbGxiYWNrcyBtdXN0IGV4
ZWN1dGUgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5nIGNhbGxzIHRvIGB0aGVuYC4g
YG9uRnVsZmlsbGVkYCBoYW5kbGVycyBhcmUgY2FsbGVkIGluIHRoZSBvcmlnaW5hbCBvcmRlciBp
bW1lZGlhdGVseS1mdWxmaWxsZWQKK1BBU1MgMi4yLjY6IGB0aGVuYCBtYXkgYmUgY2FsbGVkIG11
bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHByb21pc2UuIDIuMi42LjE6IElmL3doZW4gYHByb21p
c2VgIGlzIGZ1bGZpbGxlZCwgYWxsIHJlc3BlY3RpdmUgYG9uRnVsZmlsbGVkYCBjYWxsYmFja3Mg
bXVzdCBleGVjdXRlIGluIHRoZSBvcmRlciBvZiB0aGVpciBvcmlnaW5hdGluZyBjYWxscyB0byBg
dGhlbmAuIGBvbkZ1bGZpbGxlZGAgaGFuZGxlcnMgYXJlIGNhbGxlZCBpbiB0aGUgb3JpZ2luYWwg
b3JkZXIgZXZlbnR1YWxseS1mdWxmaWxsZWQKK1BBU1MgMi4yLjY6IGB0aGVuYCBtYXkgYmUgY2Fs
bGVkIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHByb21pc2UuIDIuMi42LjE6IElmL3doZW4g
YHByb21pc2VgIGlzIGZ1bGZpbGxlZCwgYWxsIHJlc3BlY3RpdmUgYG9uRnVsZmlsbGVkYCBjYWxs
YmFja3MgbXVzdCBleGVjdXRlIGluIHRoZSBvcmRlciBvZiB0aGVpciBvcmlnaW5hdGluZyBjYWxs
cyB0byBgdGhlbmAuIGBvbkZ1bGZpbGxlZGAgaGFuZGxlcnMgYXJlIGNhbGxlZCBpbiB0aGUgb3Jp
Z2luYWwgb3JkZXIgZXZlbiB3aGVuIG9uZSBoYW5kbGVyIGlzIGFkZGVkIGluc2lkZSBhbm90aGVy
IGhhbmRsZXIgYWxyZWFkeS1mdWxmaWxsZWQKK1BBU1MgMi4yLjY6IGB0aGVuYCBtYXkgYmUgY2Fs
bGVkIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHByb21pc2UuIDIuMi42LjE6IElmL3doZW4g
YHByb21pc2VgIGlzIGZ1bGZpbGxlZCwgYWxsIHJlc3BlY3RpdmUgYG9uRnVsZmlsbGVkYCBjYWxs
YmFja3MgbXVzdCBleGVjdXRlIGluIHRoZSBvcmRlciBvZiB0aGVpciBvcmlnaW5hdGluZyBjYWxs
cyB0byBgdGhlbmAuIGBvbkZ1bGZpbGxlZGAgaGFuZGxlcnMgYXJlIGNhbGxlZCBpbiB0aGUgb3Jp
Z2luYWwgb3JkZXIgZXZlbiB3aGVuIG9uZSBoYW5kbGVyIGlzIGFkZGVkIGluc2lkZSBhbm90aGVy
IGhhbmRsZXIgaW1tZWRpYXRlbHktZnVsZmlsbGVkCitQQVNTIDIuMi42OiBgdGhlbmAgbWF5IGJl
IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4xOiBJZi93
aGVuIGBwcm9taXNlYCBpcyBmdWxmaWxsZWQsIGFsbCByZXNwZWN0aXZlIGBvbkZ1bGZpbGxlZGAg
Y2FsbGJhY2tzIG11c3QgZXhlY3V0ZSBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgb3JpZ2luYXRpbmcg
Y2FsbHMgdG8gYHRoZW5gLiBgb25GdWxmaWxsZWRgIGhhbmRsZXJzIGFyZSBjYWxsZWQgaW4gdGhl
IG9yaWdpbmFsIG9yZGVyIGV2ZW4gd2hlbiBvbmUgaGFuZGxlciBpcyBhZGRlZCBpbnNpZGUgYW5v
dGhlciBoYW5kbGVyIGV2ZW50dWFsbHktZnVsZmlsbGVkCitQQVNTIDIuMi42OiBgdGhlbmAgbWF5
IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4yOiBJ
Zi93aGVuIGBwcm9taXNlYCBpcyByZWplY3RlZCwgYWxsIHJlc3BlY3RpdmUgYG9uUmVqZWN0ZWRg
IGNhbGxiYWNrcyBtdXN0IGV4ZWN1dGUgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5n
IGNhbGxzIHRvIGB0aGVuYC4gbXVsdGlwbGUgYm9yaW5nIHJlamVjdGlvbiBoYW5kbGVycyBhbHJl
YWR5LXJlamVjdGVkCitQQVNTIDIuMi42OiBgdGhlbmAgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0
aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4yOiBJZi93aGVuIGBwcm9taXNlYCBpcyBy
ZWplY3RlZCwgYWxsIHJlc3BlY3RpdmUgYG9uUmVqZWN0ZWRgIGNhbGxiYWNrcyBtdXN0IGV4ZWN1
dGUgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5nIGNhbGxzIHRvIGB0aGVuYC4gbXVs
dGlwbGUgYm9yaW5nIHJlamVjdGlvbiBoYW5kbGVycyBpbW1lZGlhdGVseS1yZWplY3RlZAorUEFT
UyAyLjIuNjogYHRoZW5gIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgb24gdGhlIHNhbWUg
cHJvbWlzZS4gMi4yLjYuMjogSWYvd2hlbiBgcHJvbWlzZWAgaXMgcmVqZWN0ZWQsIGFsbCByZXNw
ZWN0aXZlIGBvblJlamVjdGVkYCBjYWxsYmFja3MgbXVzdCBleGVjdXRlIGluIHRoZSBvcmRlciBv
ZiB0aGVpciBvcmlnaW5hdGluZyBjYWxscyB0byBgdGhlbmAuIG11bHRpcGxlIGJvcmluZyByZWpl
Y3Rpb24gaGFuZGxlcnMgZXZlbnR1YWxseS1yZWplY3RlZAorUEFTUyAyLjIuNjogYHRoZW5gIG1h
eSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgb24gdGhlIHNhbWUgcHJvbWlzZS4gMi4yLjYuMjog
SWYvd2hlbiBgcHJvbWlzZWAgaXMgcmVqZWN0ZWQsIGFsbCByZXNwZWN0aXZlIGBvblJlamVjdGVk
YCBjYWxsYmFja3MgbXVzdCBleGVjdXRlIGluIHRoZSBvcmRlciBvZiB0aGVpciBvcmlnaW5hdGlu
ZyBjYWxscyB0byBgdGhlbmAuIG11bHRpcGxlIHJlamVjdGlvbiBoYW5kbGVycywgb25lIG9mIHdo
aWNoIHRocm93cyBhbHJlYWR5LXJlamVjdGVkCitQQVNTIDIuMi42OiBgdGhlbmAgbWF5IGJlIGNh
bGxlZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4yOiBJZi93aGVu
IGBwcm9taXNlYCBpcyByZWplY3RlZCwgYWxsIHJlc3BlY3RpdmUgYG9uUmVqZWN0ZWRgIGNhbGxi
YWNrcyBtdXN0IGV4ZWN1dGUgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5nIGNhbGxz
IHRvIGB0aGVuYC4gbXVsdGlwbGUgcmVqZWN0aW9uIGhhbmRsZXJzLCBvbmUgb2Ygd2hpY2ggdGhy
b3dzIGltbWVkaWF0ZWx5LXJlamVjdGVkCitQQVNTIDIuMi42OiBgdGhlbmAgbWF5IGJlIGNhbGxl
ZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4yOiBJZi93aGVuIGBw
cm9taXNlYCBpcyByZWplY3RlZCwgYWxsIHJlc3BlY3RpdmUgYG9uUmVqZWN0ZWRgIGNhbGxiYWNr
cyBtdXN0IGV4ZWN1dGUgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5nIGNhbGxzIHRv
IGB0aGVuYC4gbXVsdGlwbGUgcmVqZWN0aW9uIGhhbmRsZXJzLCBvbmUgb2Ygd2hpY2ggdGhyb3dz
IGV2ZW50dWFsbHktcmVqZWN0ZWQKK1BBU1MgMi4yLjY6IGB0aGVuYCBtYXkgYmUgY2FsbGVkIG11
bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHByb21pc2UuIDIuMi42LjI6IElmL3doZW4gYHByb21p
c2VgIGlzIHJlamVjdGVkLCBhbGwgcmVzcGVjdGl2ZSBgb25SZWplY3RlZGAgY2FsbGJhY2tzIG11
c3QgZXhlY3V0ZSBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgb3JpZ2luYXRpbmcgY2FsbHMgdG8gYHRo
ZW5gLiByZXN1bHRzIGluIG11bHRpcGxlIGJyYW5jaGluZyBjaGFpbnMgd2l0aCB0aGVpciBvd24g
ZnVsZmlsbG1lbnQgdmFsdWVzIGFscmVhZHktcmVqZWN0ZWQKK1BBU1MgMi4yLjY6IGB0aGVuYCBt
YXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHByb21pc2UuIDIuMi42LjI6
IElmL3doZW4gYHByb21pc2VgIGlzIHJlamVjdGVkLCBhbGwgcmVzcGVjdGl2ZSBgb25SZWplY3Rl
ZGAgY2FsbGJhY2tzIG11c3QgZXhlY3V0ZSBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgb3JpZ2luYXRp
bmcgY2FsbHMgdG8gYHRoZW5gLiByZXN1bHRzIGluIG11bHRpcGxlIGJyYW5jaGluZyBjaGFpbnMg
d2l0aCB0aGVpciBvd24gZnVsZmlsbG1lbnQgdmFsdWVzIGltbWVkaWF0ZWx5LXJlamVjdGVkCitQ
QVNTIDIuMi42OiBgdGhlbmAgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2Ft
ZSBwcm9taXNlLiAyLjIuNi4yOiBJZi93aGVuIGBwcm9taXNlYCBpcyByZWplY3RlZCwgYWxsIHJl
c3BlY3RpdmUgYG9uUmVqZWN0ZWRgIGNhbGxiYWNrcyBtdXN0IGV4ZWN1dGUgaW4gdGhlIG9yZGVy
IG9mIHRoZWlyIG9yaWdpbmF0aW5nIGNhbGxzIHRvIGB0aGVuYC4gcmVzdWx0cyBpbiBtdWx0aXBs
ZSBicmFuY2hpbmcgY2hhaW5zIHdpdGggdGhlaXIgb3duIGZ1bGZpbGxtZW50IHZhbHVlcyBldmVu
dHVhbGx5LXJlamVjdGVkCitQQVNTIDIuMi42OiBgdGhlbmAgbWF5IGJlIGNhbGxlZCBtdWx0aXBs
ZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4yOiBJZi93aGVuIGBwcm9taXNlYCBp
cyByZWplY3RlZCwgYWxsIHJlc3BlY3RpdmUgYG9uUmVqZWN0ZWRgIGNhbGxiYWNrcyBtdXN0IGV4
ZWN1dGUgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5nIGNhbGxzIHRvIGB0aGVuYC4g
YG9uUmVqZWN0ZWRgIGhhbmRsZXJzIGFyZSBjYWxsZWQgaW4gdGhlIG9yaWdpbmFsIG9yZGVyIGFs
cmVhZHktcmVqZWN0ZWQKK1BBU1MgMi4yLjY6IGB0aGVuYCBtYXkgYmUgY2FsbGVkIG11bHRpcGxl
IHRpbWVzIG9uIHRoZSBzYW1lIHByb21pc2UuIDIuMi42LjI6IElmL3doZW4gYHByb21pc2VgIGlz
IHJlamVjdGVkLCBhbGwgcmVzcGVjdGl2ZSBgb25SZWplY3RlZGAgY2FsbGJhY2tzIG11c3QgZXhl
Y3V0ZSBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgb3JpZ2luYXRpbmcgY2FsbHMgdG8gYHRoZW5gLiBg
b25SZWplY3RlZGAgaGFuZGxlcnMgYXJlIGNhbGxlZCBpbiB0aGUgb3JpZ2luYWwgb3JkZXIgaW1t
ZWRpYXRlbHktcmVqZWN0ZWQKK1BBU1MgMi4yLjY6IGB0aGVuYCBtYXkgYmUgY2FsbGVkIG11bHRp
cGxlIHRpbWVzIG9uIHRoZSBzYW1lIHByb21pc2UuIDIuMi42LjI6IElmL3doZW4gYHByb21pc2Vg
IGlzIHJlamVjdGVkLCBhbGwgcmVzcGVjdGl2ZSBgb25SZWplY3RlZGAgY2FsbGJhY2tzIG11c3Qg
ZXhlY3V0ZSBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgb3JpZ2luYXRpbmcgY2FsbHMgdG8gYHRoZW5g
LiBgb25SZWplY3RlZGAgaGFuZGxlcnMgYXJlIGNhbGxlZCBpbiB0aGUgb3JpZ2luYWwgb3JkZXIg
ZXZlbnR1YWxseS1yZWplY3RlZAorUEFTUyAyLjIuNjogYHRoZW5gIG1heSBiZSBjYWxsZWQgbXVs
dGlwbGUgdGltZXMgb24gdGhlIHNhbWUgcHJvbWlzZS4gMi4yLjYuMjogSWYvd2hlbiBgcHJvbWlz
ZWAgaXMgcmVqZWN0ZWQsIGFsbCByZXNwZWN0aXZlIGBvblJlamVjdGVkYCBjYWxsYmFja3MgbXVz
dCBleGVjdXRlIGluIHRoZSBvcmRlciBvZiB0aGVpciBvcmlnaW5hdGluZyBjYWxscyB0byBgdGhl
bmAuIGBvblJlamVjdGVkYCBoYW5kbGVycyBhcmUgY2FsbGVkIGluIHRoZSBvcmlnaW5hbCBvcmRl
ciBldmVuIHdoZW4gb25lIGhhbmRsZXIgaXMgYWRkZWQgaW5zaWRlIGFub3RoZXIgaGFuZGxlciBh
bHJlYWR5LXJlamVjdGVkCitQQVNTIDIuMi42OiBgdGhlbmAgbWF5IGJlIGNhbGxlZCBtdWx0aXBs
ZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4yOiBJZi93aGVuIGBwcm9taXNlYCBp
cyByZWplY3RlZCwgYWxsIHJlc3BlY3RpdmUgYG9uUmVqZWN0ZWRgIGNhbGxiYWNrcyBtdXN0IGV4
ZWN1dGUgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5nIGNhbGxzIHRvIGB0aGVuYC4g
YG9uUmVqZWN0ZWRgIGhhbmRsZXJzIGFyZSBjYWxsZWQgaW4gdGhlIG9yaWdpbmFsIG9yZGVyIGV2
ZW4gd2hlbiBvbmUgaGFuZGxlciBpcyBhZGRlZCBpbnNpZGUgYW5vdGhlciBoYW5kbGVyIGltbWVk
aWF0ZWx5LXJlamVjdGVkCitQQVNTIDIuMi42OiBgdGhlbmAgbWF5IGJlIGNhbGxlZCBtdWx0aXBs
ZSB0aW1lcyBvbiB0aGUgc2FtZSBwcm9taXNlLiAyLjIuNi4yOiBJZi93aGVuIGBwcm9taXNlYCBp
cyByZWplY3RlZCwgYWxsIHJlc3BlY3RpdmUgYG9uUmVqZWN0ZWRgIGNhbGxiYWNrcyBtdXN0IGV4
ZWN1dGUgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5nIGNhbGxzIHRvIGB0aGVuYC4g
YG9uUmVqZWN0ZWRgIGhhbmRsZXJzIGFyZSBjYWxsZWQgaW4gdGhlIG9yaWdpbmFsIG9yZGVyIGV2
ZW4gd2hlbiBvbmUgaGFuZGxlciBpcyBhZGRlZCBpbnNpZGUgYW5vdGhlciBoYW5kbGVyIGV2ZW50
dWFsbHktcmVqZWN0ZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9t
aXNlcy10ZXN0cy0yLTItNi5odG1sIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJv
bWlzZXMtdGVzdHMtMi0yLTYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2RlOWIzZmI0MTk4MWQ1YTYzNjg0
MWI0YjA3MWY2OTY0MjZmM2EzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJv
bWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMtMi0yLTYuaHRtbApAQCAtMCwwICsxLDI4IEBACis8
IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYWRh
cHRlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCdUZXN0IFByb21pc2Ugd2l0aCBQcm9taXNlIEErIHRlc3RzIDIuMi42LicpOword2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21v
Y2hhLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cittb2NoYS5zZXR1cCh7CisgICAgdWk6ICdiZGQn
LAorICAgIHJlcG9ydGVyOiBMYXlvdXRUZXN0c1JlcG9ydGVyCit9KTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InByb21pc2VzLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citwcm9taXNl
VGVzdHMudGVzdHMyXzJfNigpOworbW9jaGEucnVuKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2Vz
LXRlc3RzLTItMi03LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3Rz
L3Byb21pc2VzLXRlc3RzLTItMi03LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTgzOTRlMmQ0
YzBmMDA2OWRlZDc3YmNjMTI1YzVlMGRjYTIwZjNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMtMi0yLTctZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTEyIEBACitUZXN0IFByb21pc2Ugd2l0aCBQcm9taXNlIEErIHRlc3RzIDIu
Mi43LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgMi4yLjc6IGB0aGVuYCBt
dXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxs
ZWQsIG9uUmVqZWN0ZWQpYCBpcyBhIHByb21pc2UKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJl
dHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9u
UmVqZWN0ZWQpYCAyLjIuNy4xOiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3Rl
ZGAgcmV0dXJucyBhIHZhbHVlIGB4YCwgcnVuIHRoZSBQcm9taXNlIFJlc29sdXRpb24gUHJvY2Vk
dXJlIGBbW1Jlc29sdmVdXShwcm9taXNlMiwgeClgIHNlZSBzZXBhcmF0ZSAzLjMgdGVzdHMKK1BB
U1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21p
c2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9u
RnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9t
aXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29u
IGlzIGB1bmRlZmluZWRgIGFscmVhZHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVz
dCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVk
LCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVq
ZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0
ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBgdW5kZWZpbmVkYCBpbW1l
ZGlhdGVseS1mdWxmaWxsZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21p
c2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAy
LjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFu
IGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0
aGUgcmVhc29uLiBUaGUgcmVhc29uIGlzIGB1bmRlZmluZWRgIGV2ZW50dWFsbHktZnVsZmlsbGVk
CitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBw
cm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVy
IGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBg
cHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJl
YXNvbiBpcyBgdW5kZWZpbmVkYCBhbHJlYWR5LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAg
bXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmls
bGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9u
UmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVq
ZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBgdW5kZWZpbmVkYCBp
bW1lZGlhdGVseS1yZWplY3RlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJv
bWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClg
IDIuMi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3Mg
YW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFz
IHRoZSByZWFzb24uIFRoZSByZWFzb24gaXMgYHVuZGVmaW5lZGAgZXZlbnR1YWxseS1yZWplY3Rl
ZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0g
cHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhl
ciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwg
YHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSBy
ZWFzb24gaXMgYG51bGxgIGFscmVhZHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVz
dCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVk
LCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVq
ZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0
ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBgbnVsbGAgaW1tZWRpYXRl
bHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBg
cHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcu
MjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNl
cHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJl
YXNvbi4gVGhlIHJlYXNvbiBpcyBgbnVsbGAgZXZlbnR1YWxseS1mdWxmaWxsZWQKK1BBU1MgMi4y
Ljc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRo
ZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVsZmls
bGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNlMmAg
bXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29uIGlzIGBu
dWxsYCBhbHJlYWR5LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBw
cm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVk
KWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93
cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAg
YXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBgbnVsbGAgaW1tZWRpYXRlbHktcmVqZWN0ZWQK
K1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHBy
b21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIg
YG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBw
cm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVh
c29uIGlzIGBudWxsYCBldmVudHVhbGx5LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVz
dCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVk
LCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVq
ZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0
ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBgZmFsc2VgIGFscmVhZHkt
ZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJv
bWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjog
SWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRp
b24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNv
bi4gVGhlIHJlYXNvbiBpcyBgZmFsc2VgIGltbWVkaWF0ZWx5LWZ1bGZpbGxlZAorUEFTUyAyLjIu
NzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhl
bihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxs
ZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBt
dXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSByZWFzb24gaXMgYGZh
bHNlYCBldmVudHVhbGx5LWZ1bGZpbGxlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJu
IGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWpl
Y3RlZClgIDIuMi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0
aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGgg
YGVgIGFzIHRoZSByZWFzb24uIFRoZSByZWFzb24gaXMgYGZhbHNlYCBhbHJlYWR5LXJlamVjdGVk
CitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBw
cm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVy
IGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBg
cHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJl
YXNvbiBpcyBgZmFsc2VgIGltbWVkaWF0ZWx5LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAg
bXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmls
bGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9u
UmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVq
ZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBgZmFsc2VgIGV2ZW50
dWFsbHktcmVqZWN0ZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6
IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIu
Ny4yOiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4
Y2VwdGlvbiBgZWAsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUg
cmVhc29uLiBUaGUgcmVhc29uIGlzIGAwYCBhbHJlYWR5LWZ1bGZpbGxlZAorUEFTUyAyLjIuNzog
YHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihv
bkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRg
IG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0
IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSByZWFzb24gaXMgYDBgIGlt
bWVkaWF0ZWx5LWZ1bGZpbGxlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJv
bWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClg
IDIuMi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3Mg
YW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFz
IHRoZSByZWFzb24uIFRoZSByZWFzb24gaXMgYDBgIGV2ZW50dWFsbHktZnVsZmlsbGVkCitQQVNT
IDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNl
MS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1
bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlz
ZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBp
cyBgMGAgYWxyZWFkeS1yZWplY3RlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEg
cHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3Rl
ZClgIDIuMi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJv
d3MgYW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVg
IGFzIHRoZSByZWFzb24uIFRoZSByZWFzb24gaXMgYDBgIGltbWVkaWF0ZWx5LXJlamVjdGVkCitQ
QVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9t
aXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBv
bkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJv
bWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNv
biBpcyBgMGAgZXZlbnR1YWxseS1yZWplY3RlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0
dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25S
ZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVk
YCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdp
dGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSByZWFzb24gaXMgYW4gZXJyb3IgYWxyZWFkeS1mdWxm
aWxsZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNl
MiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBl
aXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBg
ZWAsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBU
aGUgcmVhc29uIGlzIGFuIGVycm9yIGltbWVkaWF0ZWx5LWZ1bGZpbGxlZAorUEFTUyAyLjIuNzog
YHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihv
bkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRg
IG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0
IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSByZWFzb24gaXMgYW4gZXJy
b3IgZXZlbnR1YWxseS1mdWxmaWxsZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBh
IHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0
ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhy
b3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBl
YCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29uIGlzIGFuIGVycm9yIGFscmVhZHktcmVqZWN0ZWQK
K1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHBy
b21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIg
YG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBw
cm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVh
c29uIGlzIGFuIGVycm9yIGltbWVkaWF0ZWx5LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAg
bXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmls
bGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9u
UmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVq
ZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBhbiBlcnJvciBldmVu
dHVhbGx5LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNl
OiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4y
LjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBl
eGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhl
IHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBhbiBlcnJvciB3aXRob3V0IGEgc3RhY2sgYWxyZWFkeS1m
dWxmaWxsZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9t
aXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJ
ZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlv
biBgZWAsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29u
LiBUaGUgcmVhc29uIGlzIGFuIGVycm9yIHdpdGhvdXQgYSBzdGFjayBpbW1lZGlhdGVseS1mdWxm
aWxsZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNl
MiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBl
aXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBg
ZWAsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBU
aGUgcmVhc29uIGlzIGFuIGVycm9yIHdpdGhvdXQgYSBzdGFjayBldmVudHVhbGx5LWZ1bGZpbGxl
ZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0g
cHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhl
ciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwg
YHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSBy
ZWFzb24gaXMgYW4gZXJyb3Igd2l0aG91dCBhIHN0YWNrIGFscmVhZHktcmVqZWN0ZWQKK1BBU1Mg
Mi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2Ux
LnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVs
ZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNl
MmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29uIGlz
IGFuIGVycm9yIHdpdGhvdXQgYSBzdGFjayBpbW1lZGlhdGVseS1yZWplY3RlZAorUEFTUyAyLjIu
NzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhl
bihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxs
ZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBt
dXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSByZWFzb24gaXMgYW4g
ZXJyb3Igd2l0aG91dCBhIHN0YWNrIGV2ZW50dWFsbHktcmVqZWN0ZWQKK1BBU1MgMi4yLjc6IGB0
aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25G
dWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBv
ciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNlMmAgbXVzdCBi
ZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29uIGlzIGEgZGF0ZSBh
bHJlYWR5LWZ1bGZpbGxlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlz
ZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIu
Mi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4g
ZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRo
ZSByZWFzb24uIFRoZSByZWFzb24gaXMgYSBkYXRlIGltbWVkaWF0ZWx5LWZ1bGZpbGxlZAorUEFT
UyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlz
ZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhlciBgb25G
dWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHByb21p
c2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSByZWFzb24g
aXMgYSBkYXRlIGV2ZW50dWFsbHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCBy
ZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBv
blJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0
ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQg
d2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBhIGRhdGUgYWxyZWFkeS1yZWpl
Y3RlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2Uy
ID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVp
dGhlciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBl
YCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRo
ZSByZWFzb24gaXMgYSBkYXRlIGltbWVkaWF0ZWx5LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhl
bmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVs
ZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3Ig
YG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUg
cmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBhIGRhdGUgZXZl
bnR1YWxseS1yZWplY3RlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlz
ZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIu
Mi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4g
ZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRo
ZSByZWFzb24uIFRoZSByZWFzb24gaXMgYW4gb2JqZWN0IGFscmVhZHktZnVsZmlsbGVkCitQQVNT
IDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNl
MS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1
bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlz
ZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBp
cyBhbiBvYmplY3QgaW1tZWRpYXRlbHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVz
dCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVk
LCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVq
ZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0
ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBhbiBvYmplY3QgZXZlbnR1
YWxseS1mdWxmaWxsZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6
IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIu
Ny4yOiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4
Y2VwdGlvbiBgZWAsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUg
cmVhc29uLiBUaGUgcmVhc29uIGlzIGFuIG9iamVjdCBhbHJlYWR5LXJlamVjdGVkCitQQVNTIDIu
Mi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50
aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZp
bGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJg
IG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBh
biBvYmplY3QgaW1tZWRpYXRlbHktcmVqZWN0ZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJl
dHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9u
UmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3Rl
ZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3
aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29uIGlzIGFuIG9iamVjdCBldmVudHVhbGx5
LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJv
bWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjog
SWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRp
b24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNv
bi4gVGhlIHJlYXNvbiBpcyBhbiBhbHdheXMtcGVuZGluZyB0aGVuYWJsZSBhbHJlYWR5LWZ1bGZp
bGxlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2Uy
ID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVp
dGhlciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBl
YCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRo
ZSByZWFzb24gaXMgYW4gYWx3YXlzLXBlbmRpbmcgdGhlbmFibGUgaW1tZWRpYXRlbHktZnVsZmls
bGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIg
PSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0
aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVg
LCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhl
IHJlYXNvbiBpcyBhbiBhbHdheXMtcGVuZGluZyB0aGVuYWJsZSBldmVudHVhbGx5LWZ1bGZpbGxl
ZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0g
cHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhl
ciBgb25GdWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwg
YHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSBy
ZWFzb24gaXMgYW4gYWx3YXlzLXBlbmRpbmcgdGhlbmFibGUgYWxyZWFkeS1yZWplY3RlZAorUEFT
UyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlz
ZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhlciBgb25G
dWxmaWxsZWRgIG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHByb21p
c2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSByZWFzb24g
aXMgYW4gYWx3YXlzLXBlbmRpbmcgdGhlbmFibGUgaW1tZWRpYXRlbHktcmVqZWN0ZWQKK1BBU1Mg
Mi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2Ux
LnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVs
ZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNl
MmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29uIGlz
IGFuIGFsd2F5cy1wZW5kaW5nIHRoZW5hYmxlIGV2ZW50dWFsbHktcmVqZWN0ZWQKK1BBU1MgMi4y
Ljc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRo
ZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVsZmls
bGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNlMmAg
bXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29uIGlzIGEg
ZnVsZmlsbGVkIHByb21pc2UgYWxyZWFkeS1mdWxmaWxsZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBt
dXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxs
ZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25S
ZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNlMmAgbXVzdCBiZSByZWpl
Y3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29uIGlzIGEgZnVsZmlsbGVkIHBy
b21pc2UgaW1tZWRpYXRlbHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1
cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJl
amVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRg
IHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0
aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBhIGZ1bGZpbGxlZCBwcm9taXNlIGV2
ZW50dWFsbHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9t
aXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAg
Mi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBh
biBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMg
dGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBhIGZ1bGZpbGxlZCBwcm9taXNlIGFscmVhZHktcmVq
ZWN0ZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNl
MiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBl
aXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBg
ZWAsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBU
aGUgcmVhc29uIGlzIGEgZnVsZmlsbGVkIHByb21pc2UgaW1tZWRpYXRlbHktcmVqZWN0ZWQKK1BB
U1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21p
c2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9u
RnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9t
aXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29u
IGlzIGEgZnVsZmlsbGVkIHByb21pc2UgZXZlbnR1YWxseS1yZWplY3RlZAorUEFTUyAyLjIuNzog
YHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihv
bkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRg
IG9yIGBvblJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0
IGJlIHJlamVjdGVkIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIFRoZSByZWFzb24gaXMgYSByZWpl
Y3RlZCBwcm9taXNlIGFscmVhZHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCBy
ZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBv
blJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0
ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQg
d2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBhIHJlamVjdGVkIHByb21pc2Ug
aW1tZWRpYXRlbHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBw
cm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVk
KWAgMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93
cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAg
YXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNvbiBpcyBhIHJlamVjdGVkIHByb21pc2UgZXZlbnR1YWxs
eS1mdWxmaWxsZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBw
cm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4y
OiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2Vw
dGlvbiBgZWAsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVh
c29uLiBUaGUgcmVhc29uIGlzIGEgcmVqZWN0ZWQgcHJvbWlzZSBhbHJlYWR5LXJlamVjdGVkCitQ
QVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9t
aXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMjogSWYgZWl0aGVyIGBv
bkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJv
bWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gVGhlIHJlYXNv
biBpcyBhIHJlamVjdGVkIHByb21pc2UgaW1tZWRpYXRlbHktcmVqZWN0ZWQKK1BBU1MgMi4yLjc6
IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4o
b25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4yOiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVk
YCBvciBgb25SZWplY3RlZGAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIGBwcm9taXNlMmAgbXVz
dCBiZSByZWplY3RlZCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBUaGUgcmVhc29uIGlzIGEgcmVq
ZWN0ZWQgcHJvbWlzZSBldmVudHVhbGx5LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVz
dCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVk
LCBvblJlamVjdGVkKWAgMi4yLjcuMzogSWYgYG9uRnVsZmlsbGVkYCBpcyBub3QgYSBmdW5jdGlv
biBhbmQgYHByb21pc2UxYCBpcyBmdWxmaWxsZWQsIGBwcm9taXNlMmAgbXVzdCBiZSBmdWxmaWxs
ZWQgd2l0aCB0aGUgc2FtZSB2YWx1ZS4gYG9uRnVsZmlsbGVkYCBpcyBgdW5kZWZpbmVkYCBhbHJl
YWR5LWZ1bGZpbGxlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTog
YHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43
LjM6IElmIGBvbkZ1bGZpbGxlZGAgaXMgbm90IGEgZnVuY3Rpb24gYW5kIGBwcm9taXNlMWAgaXMg
ZnVsZmlsbGVkLCBgcHJvbWlzZTJgIG11c3QgYmUgZnVsZmlsbGVkIHdpdGggdGhlIHNhbWUgdmFs
dWUuIGBvbkZ1bGZpbGxlZGAgaXMgYHVuZGVmaW5lZGAgaW1tZWRpYXRlbHktZnVsZmlsbGVkCitQ
QVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9t
aXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMzogSWYgYG9uRnVsZmls
bGVkYCBpcyBub3QgYSBmdW5jdGlvbiBhbmQgYHByb21pc2UxYCBpcyBmdWxmaWxsZWQsIGBwcm9t
aXNlMmAgbXVzdCBiZSBmdWxmaWxsZWQgd2l0aCB0aGUgc2FtZSB2YWx1ZS4gYG9uRnVsZmlsbGVk
YCBpcyBgdW5kZWZpbmVkYCBldmVudHVhbGx5LWZ1bGZpbGxlZAorUEFTUyAyLjIuNzogYHRoZW5g
IG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZp
bGxlZCwgb25SZWplY3RlZClgIDIuMi43LjM6IElmIGBvbkZ1bGZpbGxlZGAgaXMgbm90IGEgZnVu
Y3Rpb24gYW5kIGBwcm9taXNlMWAgaXMgZnVsZmlsbGVkLCBgcHJvbWlzZTJgIG11c3QgYmUgZnVs
ZmlsbGVkIHdpdGggdGhlIHNhbWUgdmFsdWUuIGBvbkZ1bGZpbGxlZGAgaXMgYG51bGxgIGFscmVh
ZHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBg
cHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcu
MzogSWYgYG9uRnVsZmlsbGVkYCBpcyBub3QgYSBmdW5jdGlvbiBhbmQgYHByb21pc2UxYCBpcyBm
dWxmaWxsZWQsIGBwcm9taXNlMmAgbXVzdCBiZSBmdWxmaWxsZWQgd2l0aCB0aGUgc2FtZSB2YWx1
ZS4gYG9uRnVsZmlsbGVkYCBpcyBgbnVsbGAgaW1tZWRpYXRlbHktZnVsZmlsbGVkCitQQVNTIDIu
Mi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50
aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMzogSWYgYG9uRnVsZmlsbGVkYCBp
cyBub3QgYSBmdW5jdGlvbiBhbmQgYHByb21pc2UxYCBpcyBmdWxmaWxsZWQsIGBwcm9taXNlMmAg
bXVzdCBiZSBmdWxmaWxsZWQgd2l0aCB0aGUgc2FtZSB2YWx1ZS4gYG9uRnVsZmlsbGVkYCBpcyBg
bnVsbGAgZXZlbnR1YWxseS1mdWxmaWxsZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVy
biBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVq
ZWN0ZWQpYCAyLjIuNy4zOiBJZiBgb25GdWxmaWxsZWRgIGlzIG5vdCBhIGZ1bmN0aW9uIGFuZCBg
cHJvbWlzZTFgIGlzIGZ1bGZpbGxlZCwgYHByb21pc2UyYCBtdXN0IGJlIGZ1bGZpbGxlZCB3aXRo
IHRoZSBzYW1lIHZhbHVlLiBgb25GdWxmaWxsZWRgIGlzIGBmYWxzZWAgYWxyZWFkeS1mdWxmaWxs
ZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9
IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4zOiBJZiBgb25G
dWxmaWxsZWRgIGlzIG5vdCBhIGZ1bmN0aW9uIGFuZCBgcHJvbWlzZTFgIGlzIGZ1bGZpbGxlZCwg
YHByb21pc2UyYCBtdXN0IGJlIGZ1bGZpbGxlZCB3aXRoIHRoZSBzYW1lIHZhbHVlLiBgb25GdWxm
aWxsZWRgIGlzIGBmYWxzZWAgaW1tZWRpYXRlbHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhl
bmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVs
ZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuMzogSWYgYG9uRnVsZmlsbGVkYCBpcyBub3QgYSBm
dW5jdGlvbiBhbmQgYHByb21pc2UxYCBpcyBmdWxmaWxsZWQsIGBwcm9taXNlMmAgbXVzdCBiZSBm
dWxmaWxsZWQgd2l0aCB0aGUgc2FtZSB2YWx1ZS4gYG9uRnVsZmlsbGVkYCBpcyBgZmFsc2VgIGV2
ZW50dWFsbHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9t
aXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAg
Mi4yLjcuMzogSWYgYG9uRnVsZmlsbGVkYCBpcyBub3QgYSBmdW5jdGlvbiBhbmQgYHByb21pc2Ux
YCBpcyBmdWxmaWxsZWQsIGBwcm9taXNlMmAgbXVzdCBiZSBmdWxmaWxsZWQgd2l0aCB0aGUgc2Ft
ZSB2YWx1ZS4gYG9uRnVsZmlsbGVkYCBpcyBgNWAgYWxyZWFkeS1mdWxmaWxsZWQKK1BBU1MgMi4y
Ljc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRo
ZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4zOiBJZiBgb25GdWxmaWxsZWRgIGlz
IG5vdCBhIGZ1bmN0aW9uIGFuZCBgcHJvbWlzZTFgIGlzIGZ1bGZpbGxlZCwgYHByb21pc2UyYCBt
dXN0IGJlIGZ1bGZpbGxlZCB3aXRoIHRoZSBzYW1lIHZhbHVlLiBgb25GdWxmaWxsZWRgIGlzIGA1
YCBpbW1lZGlhdGVseS1mdWxmaWxsZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBh
IHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0
ZWQpYCAyLjIuNy4zOiBJZiBgb25GdWxmaWxsZWRgIGlzIG5vdCBhIGZ1bmN0aW9uIGFuZCBgcHJv
bWlzZTFgIGlzIGZ1bGZpbGxlZCwgYHByb21pc2UyYCBtdXN0IGJlIGZ1bGZpbGxlZCB3aXRoIHRo
ZSBzYW1lIHZhbHVlLiBgb25GdWxmaWxsZWRgIGlzIGA1YCBldmVudHVhbGx5LWZ1bGZpbGxlZAor
UEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJv
bWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjM6IElmIGBvbkZ1bGZp
bGxlZGAgaXMgbm90IGEgZnVuY3Rpb24gYW5kIGBwcm9taXNlMWAgaXMgZnVsZmlsbGVkLCBgcHJv
bWlzZTJgIG11c3QgYmUgZnVsZmlsbGVkIHdpdGggdGhlIHNhbWUgdmFsdWUuIGBvbkZ1bGZpbGxl
ZGAgaXMgYW4gb2JqZWN0IGFscmVhZHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVz
dCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVk
LCBvblJlamVjdGVkKWAgMi4yLjcuMzogSWYgYG9uRnVsZmlsbGVkYCBpcyBub3QgYSBmdW5jdGlv
biBhbmQgYHByb21pc2UxYCBpcyBmdWxmaWxsZWQsIGBwcm9taXNlMmAgbXVzdCBiZSBmdWxmaWxs
ZWQgd2l0aCB0aGUgc2FtZSB2YWx1ZS4gYG9uRnVsZmlsbGVkYCBpcyBhbiBvYmplY3QgaW1tZWRp
YXRlbHktZnVsZmlsbGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNl
OiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4y
LjcuMzogSWYgYG9uRnVsZmlsbGVkYCBpcyBub3QgYSBmdW5jdGlvbiBhbmQgYHByb21pc2UxYCBp
cyBmdWxmaWxsZWQsIGBwcm9taXNlMmAgbXVzdCBiZSBmdWxmaWxsZWQgd2l0aCB0aGUgc2FtZSB2
YWx1ZS4gYG9uRnVsZmlsbGVkYCBpcyBhbiBvYmplY3QgZXZlbnR1YWxseS1mdWxmaWxsZWQKK1BB
U1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21p
c2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy4zOiBJZiBgb25GdWxmaWxs
ZWRgIGlzIG5vdCBhIGZ1bmN0aW9uIGFuZCBgcHJvbWlzZTFgIGlzIGZ1bGZpbGxlZCwgYHByb21p
c2UyYCBtdXN0IGJlIGZ1bGZpbGxlZCB3aXRoIHRoZSBzYW1lIHZhbHVlLiBgb25GdWxmaWxsZWRg
IGlzIGFuIGFycmF5IGNvbnRhaW5pbmcgYSBmdW5jdGlvbiBhbHJlYWR5LWZ1bGZpbGxlZAorUEFT
UyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlz
ZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjM6IElmIGBvbkZ1bGZpbGxl
ZGAgaXMgbm90IGEgZnVuY3Rpb24gYW5kIGBwcm9taXNlMWAgaXMgZnVsZmlsbGVkLCBgcHJvbWlz
ZTJgIG11c3QgYmUgZnVsZmlsbGVkIHdpdGggdGhlIHNhbWUgdmFsdWUuIGBvbkZ1bGZpbGxlZGAg
aXMgYW4gYXJyYXkgY29udGFpbmluZyBhIGZ1bmN0aW9uIGltbWVkaWF0ZWx5LWZ1bGZpbGxlZAor
UEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJv
bWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjM6IElmIGBvbkZ1bGZp
bGxlZGAgaXMgbm90IGEgZnVuY3Rpb24gYW5kIGBwcm9taXNlMWAgaXMgZnVsZmlsbGVkLCBgcHJv
bWlzZTJgIG11c3QgYmUgZnVsZmlsbGVkIHdpdGggdGhlIHNhbWUgdmFsdWUuIGBvbkZ1bGZpbGxl
ZGAgaXMgYW4gYXJyYXkgY29udGFpbmluZyBhIGZ1bmN0aW9uIGV2ZW50dWFsbHktZnVsZmlsbGVk
CitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBw
cm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuNDogSWYgYG9uUmVq
ZWN0ZWRgIGlzIG5vdCBhIGZ1bmN0aW9uIGFuZCBgcHJvbWlzZTFgIGlzIHJlamVjdGVkLCBgcHJv
bWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZSByZWFzb24uIGBvblJlamVjdGVk
YCBpcyBgdW5kZWZpbmVkYCBhbHJlYWR5LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVz
dCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVk
LCBvblJlamVjdGVkKWAgMi4yLjcuNDogSWYgYG9uUmVqZWN0ZWRgIGlzIG5vdCBhIGZ1bmN0aW9u
IGFuZCBgcHJvbWlzZTFgIGlzIHJlamVjdGVkLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQg
d2l0aCB0aGUgc2FtZSByZWFzb24uIGBvblJlamVjdGVkYCBpcyBgdW5kZWZpbmVkYCBpbW1lZGlh
dGVseS1yZWplY3RlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTog
YHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43
LjQ6IElmIGBvblJlamVjdGVkYCBpcyBub3QgYSBmdW5jdGlvbiBhbmQgYHByb21pc2UxYCBpcyBy
ZWplY3RlZCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggdGhlIHNhbWUgcmVhc29u
LiBgb25SZWplY3RlZGAgaXMgYHVuZGVmaW5lZGAgZXZlbnR1YWxseS1yZWplY3RlZAorUEFTUyAy
LjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEu
dGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjQ6IElmIGBvblJlamVjdGVkYCBp
cyBub3QgYSBmdW5jdGlvbiBhbmQgYHByb21pc2UxYCBpcyByZWplY3RlZCwgYHByb21pc2UyYCBt
dXN0IGJlIHJlamVjdGVkIHdpdGggdGhlIHNhbWUgcmVhc29uLiBgb25SZWplY3RlZGAgaXMgYG51
bGxgIGFscmVhZHktcmVqZWN0ZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHBy
b21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQp
YCAyLjIuNy40OiBJZiBgb25SZWplY3RlZGAgaXMgbm90IGEgZnVuY3Rpb24gYW5kIGBwcm9taXNl
MWAgaXMgcmVqZWN0ZWQsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIHRoZSBzYW1l
IHJlYXNvbi4gYG9uUmVqZWN0ZWRgIGlzIGBudWxsYCBpbW1lZGlhdGVseS1yZWplY3RlZAorUEFT
UyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlz
ZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjQ6IElmIGBvblJlamVjdGVk
YCBpcyBub3QgYSBmdW5jdGlvbiBhbmQgYHByb21pc2UxYCBpcyByZWplY3RlZCwgYHByb21pc2Uy
YCBtdXN0IGJlIHJlamVjdGVkIHdpdGggdGhlIHNhbWUgcmVhc29uLiBgb25SZWplY3RlZGAgaXMg
YG51bGxgIGV2ZW50dWFsbHktcmVqZWN0ZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVy
biBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVq
ZWN0ZWQpYCAyLjIuNy40OiBJZiBgb25SZWplY3RlZGAgaXMgbm90IGEgZnVuY3Rpb24gYW5kIGBw
cm9taXNlMWAgaXMgcmVqZWN0ZWQsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIHRo
ZSBzYW1lIHJlYXNvbi4gYG9uUmVqZWN0ZWRgIGlzIGBmYWxzZWAgYWxyZWFkeS1yZWplY3RlZAor
UEFTUyAyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJv
bWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjQ6IElmIGBvblJlamVj
dGVkYCBpcyBub3QgYSBmdW5jdGlvbiBhbmQgYHByb21pc2UxYCBpcyByZWplY3RlZCwgYHByb21p
c2UyYCBtdXN0IGJlIHJlamVjdGVkIHdpdGggdGhlIHNhbWUgcmVhc29uLiBgb25SZWplY3RlZGAg
aXMgYGZhbHNlYCBpbW1lZGlhdGVseS1yZWplY3RlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3Qg
cmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwg
b25SZWplY3RlZClgIDIuMi43LjQ6IElmIGBvblJlamVjdGVkYCBpcyBub3QgYSBmdW5jdGlvbiBh
bmQgYHByb21pc2UxYCBpcyByZWplY3RlZCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdp
dGggdGhlIHNhbWUgcmVhc29uLiBgb25SZWplY3RlZGAgaXMgYGZhbHNlYCBldmVudHVhbGx5LXJl
amVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlz
ZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuNDogSWYg
YG9uUmVqZWN0ZWRgIGlzIG5vdCBhIGZ1bmN0aW9uIGFuZCBgcHJvbWlzZTFgIGlzIHJlamVjdGVk
LCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZSByZWFzb24uIGBvblJl
amVjdGVkYCBpcyBgNWAgYWxyZWFkeS1yZWplY3RlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3Qg
cmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwg
b25SZWplY3RlZClgIDIuMi43LjQ6IElmIGBvblJlamVjdGVkYCBpcyBub3QgYSBmdW5jdGlvbiBh
bmQgYHByb21pc2UxYCBpcyByZWplY3RlZCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdp
dGggdGhlIHNhbWUgcmVhc29uLiBgb25SZWplY3RlZGAgaXMgYDVgIGltbWVkaWF0ZWx5LXJlamVj
dGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBgcHJvbWlzZTIg
PSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcuNDogSWYgYG9u
UmVqZWN0ZWRgIGlzIG5vdCBhIGZ1bmN0aW9uIGFuZCBgcHJvbWlzZTFgIGlzIHJlamVjdGVkLCBg
cHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZSByZWFzb24uIGBvblJlamVj
dGVkYCBpcyBgNWAgZXZlbnR1YWxseS1yZWplY3RlZAorUEFTUyAyLjIuNzogYHRoZW5gIG11c3Qg
cmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwg
b25SZWplY3RlZClgIDIuMi43LjQ6IElmIGBvblJlamVjdGVkYCBpcyBub3QgYSBmdW5jdGlvbiBh
bmQgYHByb21pc2UxYCBpcyByZWplY3RlZCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkIHdp
dGggdGhlIHNhbWUgcmVhc29uLiBgb25SZWplY3RlZGAgaXMgYW4gb2JqZWN0IGFscmVhZHktcmVq
ZWN0ZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNl
MiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy40OiBJZiBg
b25SZWplY3RlZGAgaXMgbm90IGEgZnVuY3Rpb24gYW5kIGBwcm9taXNlMWAgaXMgcmVqZWN0ZWQs
IGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIHRoZSBzYW1lIHJlYXNvbi4gYG9uUmVq
ZWN0ZWRgIGlzIGFuIG9iamVjdCBpbW1lZGlhdGVseS1yZWplY3RlZAorUEFTUyAyLjIuNzogYHRo
ZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0gcHJvbWlzZTEudGhlbihvbkZ1
bGZpbGxlZCwgb25SZWplY3RlZClgIDIuMi43LjQ6IElmIGBvblJlamVjdGVkYCBpcyBub3QgYSBm
dW5jdGlvbiBhbmQgYHByb21pc2UxYCBpcyByZWplY3RlZCwgYHByb21pc2UyYCBtdXN0IGJlIHJl
amVjdGVkIHdpdGggdGhlIHNhbWUgcmVhc29uLiBgb25SZWplY3RlZGAgaXMgYW4gb2JqZWN0IGV2
ZW50dWFsbHktcmVqZWN0ZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21p
c2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAy
LjIuNy40OiBJZiBgb25SZWplY3RlZGAgaXMgbm90IGEgZnVuY3Rpb24gYW5kIGBwcm9taXNlMWAg
aXMgcmVqZWN0ZWQsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIHRoZSBzYW1lIHJl
YXNvbi4gYG9uUmVqZWN0ZWRgIGlzIGFuIGFycmF5IGNvbnRhaW5pbmcgYSBmdW5jdGlvbiBhbHJl
YWR5LXJlamVjdGVkCitQQVNTIDIuMi43OiBgdGhlbmAgbXVzdCByZXR1cm4gYSBwcm9taXNlOiBg
cHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKWAgMi4yLjcu
NDogSWYgYG9uUmVqZWN0ZWRgIGlzIG5vdCBhIGZ1bmN0aW9uIGFuZCBgcHJvbWlzZTFgIGlzIHJl
amVjdGVkLCBgcHJvbWlzZTJgIG11c3QgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZSByZWFzb24u
IGBvblJlamVjdGVkYCBpcyBhbiBhcnJheSBjb250YWluaW5nIGEgZnVuY3Rpb24gaW1tZWRpYXRl
bHktcmVqZWN0ZWQKK1BBU1MgMi4yLjc6IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBw
cm9taXNlMiA9IHByb21pc2UxLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCAyLjIuNy40
OiBJZiBgb25SZWplY3RlZGAgaXMgbm90IGEgZnVuY3Rpb24gYW5kIGBwcm9taXNlMWAgaXMgcmVq
ZWN0ZWQsIGBwcm9taXNlMmAgbXVzdCBiZSByZWplY3RlZCB3aXRoIHRoZSBzYW1lIHJlYXNvbi4g
YG9uUmVqZWN0ZWRgIGlzIGFuIGFycmF5IGNvbnRhaW5pbmcgYSBmdW5jdGlvbiBldmVudHVhbGx5
LXJlamVjdGVkCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMt
dGVzdHMtMi0yLTcuaHRtbCBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2Vz
LXRlc3RzLTItMi03Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2U4MDhhM2RkOWE4YmQ5ZDI1OTI1MDMxNmQz
MTM3NmM1ZmE3OWM5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2Vz
LXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMi03Lmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NU
WVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2FkYXB0ZXIu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVz
dCBQcm9taXNlIHdpdGggUHJvbWlzZSBBKyB0ZXN0cyAyLjIuNy4nKTsKK3dpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9tb2NoYS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorbW9jaGEuc2V0dXAoeworICAgIHVpOiAnYmRkJywKKyAg
ICByZXBvcnRlcjogTGF5b3V0VGVzdHNSZXBvcnRlcgorfSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJwcm9taXNlcy10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorcHJvbWlzZVRlc3Rz
LnRlc3RzMl8yXzcoKTsKK21vY2hhLnJ1bigpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0
cy0yLTMtMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9t
aXNlcy10ZXN0cy0yLTMtMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJlOGRjOWIxN2E0MTNk
ZGI4ODYwYmQzMDhjZDAyYTExN2Q1NWEyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMy0xLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEwIEBACitUZXN0IFByb21pc2Ugd2l0aCBQcm9taXNlIEErIHRlc3RzIDIuMy4xLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgMi4zLjE6IElmIGBwcm9taXNlYCBh
bmQgYHhgIHJlZmVyIHRvIHRoZSBzYW1lIG9iamVjdCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGEg
YFR5cGVFcnJvcicgYXMgdGhlIHJlYXNvbi4gdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHBy
b21pc2UKK1BBU1MgMi4zLjE6IElmIGBwcm9taXNlYCBhbmQgYHhgIHJlZmVyIHRvIHRoZSBzYW1l
IG9iamVjdCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGEgYFR5cGVFcnJvcicgYXMgdGhlIHJlYXNv
bi4gdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMy0xLmh0bWwgYi9MYXlvdXRUZXN0
cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTMtMS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjExNTczOWYyOWE1ZWM0MjMyOGNmYjU5NTA3ZmU1YWY4MTQzZDljYjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTMtMS5o
dG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9hZGFwdGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZSB3aXRoIFByb21pc2UgQSsgdGVz
dHMgMi4zLjEuJyk7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvbW9jaGEuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK21vY2hh
LnNldHVwKHsKKyAgICB1aTogJ2JkZCcsCisgICAgcmVwb3J0ZXI6IExheW91dFRlc3RzUmVwb3J0
ZXIKK30pOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icHJvbWlzZXMtdGVzdHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK3Byb21pc2VUZXN0cy50ZXN0czJfM18xKCk7Cittb2NoYS5ydW4oKTsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
cHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMtMi0zLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMtMi0zLTItZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA4NzY1ZDUwNzIzMTlkYTUwODY1M2FlZmU5MWE2MjkzZjA2ZjExMjIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10
ZXN0cy0yLTMtMi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGVzdCBQcm9taXNlIHdp
dGggUHJvbWlzZSBBKyB0ZXN0cyAyLjMuMi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CitQQVNTIDIuMy4yOiBJZiBgeGAgaXMgYSBwcm9taXNlLCBhZG9wdCBpdHMgc3RhdGUgMi4zLjIu
MTogSWYgYHhgIGlzIHBlbmRpbmcsIGBwcm9taXNlYCBtdXN0IHJlbWFpbiBwZW5kaW5nIHVudGls
IGB4YCBpcyBmdWxmaWxsZWQgb3IgcmVqZWN0ZWQuIHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxl
ZCBwcm9taXNlCitQQVNTIDIuMy4yOiBJZiBgeGAgaXMgYSBwcm9taXNlLCBhZG9wdCBpdHMgc3Rh
dGUgMi4zLjIuMTogSWYgYHhgIGlzIHBlbmRpbmcsIGBwcm9taXNlYCBtdXN0IHJlbWFpbiBwZW5k
aW5nIHVudGlsIGB4YCBpcyBmdWxmaWxsZWQgb3IgcmVqZWN0ZWQuIHZpYSByZXR1cm4gZnJvbSBh
IHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjI6IElmIGB4YCBpcyBhIHByb21pc2UsIGFkb3B0
IGl0cyBzdGF0ZSAyLjMuMi4yOiBJZi93aGVuIGB4YCBpcyBmdWxmaWxsZWQsIGZ1bGZpbGwgYHBy
b21pc2VgIHdpdGggdGhlIHNhbWUgdmFsdWUuIGB4YCBpcyBhbHJlYWR5LWZ1bGZpbGxlZCB2aWEg
cmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMjogSWYgYHhgIGlzIGEg
cHJvbWlzZSwgYWRvcHQgaXRzIHN0YXRlIDIuMy4yLjI6IElmL3doZW4gYHhgIGlzIGZ1bGZpbGxl
ZCwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCB0aGUgc2FtZSB2YWx1ZS4gYHhgIGlzIGFscmVhZHkt
ZnVsZmlsbGVkIHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjI6
IElmIGB4YCBpcyBhIHByb21pc2UsIGFkb3B0IGl0cyBzdGF0ZSAyLjMuMi4yOiBJZi93aGVuIGB4
YCBpcyBmdWxmaWxsZWQsIGZ1bGZpbGwgYHByb21pc2VgIHdpdGggdGhlIHNhbWUgdmFsdWUuIGB4
YCBpcyBldmVudHVhbGx5LWZ1bGZpbGxlZCB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJv
bWlzZQorUEFTUyAyLjMuMjogSWYgYHhgIGlzIGEgcHJvbWlzZSwgYWRvcHQgaXRzIHN0YXRlIDIu
My4yLjI6IElmL3doZW4gYHhgIGlzIGZ1bGZpbGxlZCwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCB0
aGUgc2FtZSB2YWx1ZS4gYHhgIGlzIGV2ZW50dWFsbHktZnVsZmlsbGVkIHZpYSByZXR1cm4gZnJv
bSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjI6IElmIGB4YCBpcyBhIHByb21pc2UsIGFk
b3B0IGl0cyBzdGF0ZSAyLjMuMi4zOiBJZi93aGVuIGB4YCBpcyByZWplY3RlZCwgcmVqZWN0IGBw
cm9taXNlYCB3aXRoIHRoZSBzYW1lIHJlYXNvbi4gYHhgIGlzIGFscmVhZHktcmVqZWN0ZWQgdmlh
IHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjI6IElmIGB4YCBpcyBh
IHByb21pc2UsIGFkb3B0IGl0cyBzdGF0ZSAyLjMuMi4zOiBJZi93aGVuIGB4YCBpcyByZWplY3Rl
ZCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIHRoZSBzYW1lIHJlYXNvbi4gYHhgIGlzIGFscmVhZHkt
cmVqZWN0ZWQgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMjog
SWYgYHhgIGlzIGEgcHJvbWlzZSwgYWRvcHQgaXRzIHN0YXRlIDIuMy4yLjM6IElmL3doZW4gYHhg
IGlzIHJlamVjdGVkLCByZWplY3QgYHByb21pc2VgIHdpdGggdGhlIHNhbWUgcmVhc29uLiBgeGAg
aXMgZXZlbnR1YWxseS1yZWplY3RlZCB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMjogSWYgYHhgIGlzIGEgcHJvbWlzZSwgYWRvcHQgaXRzIHN0YXRlIDIuMy4y
LjM6IElmL3doZW4gYHhgIGlzIHJlamVjdGVkLCByZWplY3QgYHByb21pc2VgIHdpdGggdGhlIHNh
bWUgcmVhc29uLiBgeGAgaXMgZXZlbnR1YWxseS1yZWplY3RlZCB2aWEgcmV0dXJuIGZyb20gYSBy
ZWplY3RlZCBwcm9taXNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJv
bWlzZXMtdGVzdHMtMi0zLTIuaHRtbCBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3By
b21pc2VzLXRlc3RzLTItMy0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmExMzIxNjRlMzQ3MWQxNTA0MjVl
YWYwMzZmODM2ODEwMGJjMzU5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3By
b21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMy0yLmh0bWwKQEAgLTAsMCArMSwyOCBAQAor
PCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Fk
YXB0ZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bignVGVzdCBQcm9taXNlIHdpdGggUHJvbWlzZSBBKyB0ZXN0cyAyLjMuMi4nKTsKK3dpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9t
b2NoYS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorbW9jaGEuc2V0dXAoeworICAgIHVpOiAnYmRk
JywKKyAgICByZXBvcnRlcjogTGF5b3V0VGVzdHNSZXBvcnRlcgorfSk7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJwcm9taXNlcy10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorcHJvbWlz
ZVRlc3RzLnRlc3RzMl8zXzIoKTsKK21vY2hhLnJ1bigpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNl
cy10ZXN0cy0yLTMtMy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0
cy9wcm9taXNlcy10ZXN0cy0yLTMtMy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTIwNzIxZjkz
NmYzMWQ1ZGQ3ZTY1OTY2YzFhNWE1OWEyN2E2MjEwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMy0zLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDYxOCBAQAorVGVzdCBQcm9taXNlIHdpdGggUHJvbWlzZSBBKyB0ZXN0cyAy
LjMuMy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjE6IExldCBgdGhlbmAg
YmUgYHgudGhlbmAgYHhgIGlzIGFuIG9iamVjdCB3aXRoIG51bGwgcHJvdG90eXBlIHZpYSByZXR1
cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4
YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjE6IExldCBgdGhlbmAgYmUgYHgudGhl
bmAgYHhgIGlzIGFuIG9iamVjdCB3aXRoIG51bGwgcHJvdG90eXBlIHZpYSByZXR1cm4gZnJvbSBh
IHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMTogTGV0IGB0aGVuYCBiZSBgeC50aGVuYCBgeGAgaXMg
YW4gb2JqZWN0IHdpdGggbm9ybWFsIE9iamVjdC5wcm90b3R5cGUgdmlhIHJldHVybiBmcm9tIGEg
ZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMTogTGV0IGB0aGVuYCBiZSBgeC50aGVuYCBgeGAgaXMg
YW4gb2JqZWN0IHdpdGggbm9ybWFsIE9iamVjdC5wcm90b3R5cGUgdmlhIHJldHVybiBmcm9tIGEg
cmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4xOiBMZXQgYHRoZW5gIGJlIGB4LnRoZW5gIGB4YCBpcyBh
IGZ1bmN0aW9uIHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4z
OiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjE6IExl
dCBgdGhlbmAgYmUgYHgudGhlbmAgYHhgIGlzIGEgZnVuY3Rpb24gdmlhIHJldHVybiBmcm9tIGEg
cmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4yOiBJZiByZXRyaWV2aW5nIHRoZSBwcm9wZXJ0eSBgeC50
aGVuYCByZXN1bHRzIGluIGEgdGhyb3duIGV4Y2VwdGlvbiBgZWAsIHJlamVjdCBgcHJvbWlzZWAg
d2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gYGVgIGlzIGB1bmRlZmluZWRgIHZpYSByZXR1cm4gZnJv
bSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjI6IElmIHJldHJpZXZpbmcgdGhlIHByb3BlcnR5
IGB4LnRoZW5gIHJlc3VsdHMgaW4gYSB0aHJvd24gZXhjZXB0aW9uIGBlYCwgcmVqZWN0IGBwcm9t
aXNlYCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBgZWAgaXMgYHVuZGVmaW5lZGAgdmlhIHJldHVy
biBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4yOiBJZiByZXRyaWV2aW5nIHRoZSBwcm9w
ZXJ0eSBgeC50aGVuYCByZXN1bHRzIGluIGEgdGhyb3duIGV4Y2VwdGlvbiBgZWAsIHJlamVjdCBg
cHJvbWlzZWAgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gYGVgIGlzIGBudWxsYCB2aWEgcmV0dXJu
IGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4yOiBJZiByZXRyaWV2aW5nIHRoZSBwcm9w
ZXJ0eSBgeC50aGVuYCByZXN1bHRzIGluIGEgdGhyb3duIGV4Y2VwdGlvbiBgZWAsIHJlamVjdCBg
cHJvbWlzZWAgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gYGVgIGlzIGBudWxsYCB2aWEgcmV0dXJu
IGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjI6IElmIHJldHJpZXZpbmcgdGhlIHByb3Bl
cnR5IGB4LnRoZW5gIHJlc3VsdHMgaW4gYSB0aHJvd24gZXhjZXB0aW9uIGBlYCwgcmVqZWN0IGBw
cm9taXNlYCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBgZWAgaXMgYGZhbHNlYCB2aWEgcmV0dXJu
IGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4yOiBJZiByZXRyaWV2aW5nIHRoZSBwcm9w
ZXJ0eSBgeC50aGVuYCByZXN1bHRzIGluIGEgdGhyb3duIGV4Y2VwdGlvbiBgZWAsIHJlamVjdCBg
cHJvbWlzZWAgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gYGVgIGlzIGBmYWxzZWAgdmlhIHJldHVy
biBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4yOiBJZiByZXRyaWV2aW5nIHRoZSBwcm9w
ZXJ0eSBgeC50aGVuYCByZXN1bHRzIGluIGEgdGhyb3duIGV4Y2VwdGlvbiBgZWAsIHJlamVjdCBg
cHJvbWlzZWAgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gYGVgIGlzIGAwYCB2aWEgcmV0dXJuIGZy
b20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMg
YW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4yOiBJZiByZXRyaWV2aW5nIHRoZSBwcm9wZXJ0
eSBgeC50aGVuYCByZXN1bHRzIGluIGEgdGhyb3duIGV4Y2VwdGlvbiBgZWAsIHJlamVjdCBgcHJv
bWlzZWAgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gYGVgIGlzIGAwYCB2aWEgcmV0dXJuIGZyb20g
YSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjI6IElmIHJldHJpZXZpbmcgdGhlIHByb3BlcnR5IGB4
LnRoZW5gIHJlc3VsdHMgaW4gYSB0aHJvd24gZXhjZXB0aW9uIGBlYCwgcmVqZWN0IGBwcm9taXNl
YCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBgZWAgaXMgYW4gZXJyb3IgdmlhIHJldHVybiBmcm9t
IGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFu
IG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMjogSWYgcmV0cmlldmluZyB0aGUgcHJvcGVydHkg
YHgudGhlbmAgcmVzdWx0cyBpbiBhIHRocm93biBleGNlcHRpb24gYGVgLCByZWplY3QgYHByb21p
c2VgIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIGBlYCBpcyBhbiBlcnJvciB2aWEgcmV0dXJuIGZy
b20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjI6IElmIHJldHJpZXZpbmcgdGhlIHByb3BlcnR5
IGB4LnRoZW5gIHJlc3VsdHMgaW4gYSB0aHJvd24gZXhjZXB0aW9uIGBlYCwgcmVqZWN0IGBwcm9t
aXNlYCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBgZWAgaXMgYW4gZXJyb3Igd2l0aG91dCBhIHN0
YWNrIHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjI6IElmIHJldHJp
ZXZpbmcgdGhlIHByb3BlcnR5IGB4LnRoZW5gIHJlc3VsdHMgaW4gYSB0aHJvd24gZXhjZXB0aW9u
IGBlYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBgZWAgaXMgYW4g
ZXJyb3Igd2l0aG91dCBhIHN0YWNrIHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMjogSWYgcmV0cmlldmluZyB0aGUgcHJvcGVydHkgYHgudGhlbmAgcmVzdWx0cyBpbiBh
IHRocm93biBleGNlcHRpb24gYGVgLCByZWplY3QgYHByb21pc2VgIHdpdGggYGVgIGFzIHRoZSBy
ZWFzb24uIGBlYCBpcyBhIGRhdGUgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMjogSWYgcmV0cmlldmluZyB0aGUgcHJvcGVydHkgYHgudGhlbmAgcmVzdWx0cyBpbiBh
IHRocm93biBleGNlcHRpb24gYGVgLCByZWplY3QgYHByb21pc2VgIHdpdGggYGVgIGFzIHRoZSBy
ZWFzb24uIGBlYCBpcyBhIGRhdGUgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4yOiBJZiByZXRyaWV2aW5nIHRoZSBwcm9wZXJ0eSBgeC50aGVuYCByZXN1bHRzIGluIGEg
dGhyb3duIGV4Y2VwdGlvbiBgZWAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgZWAgYXMgdGhlIHJl
YXNvbi4gYGVgIGlzIGFuIG9iamVjdCB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4yOiBJZiByZXRyaWV2aW5nIHRoZSBwcm9wZXJ0eSBgeC50aGVuYCByZXN1bHRzIGlu
IGEgdGhyb3duIGV4Y2VwdGlvbiBgZWAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgZWAgYXMgdGhl
IHJlYXNvbi4gYGVgIGlzIGFuIG9iamVjdCB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjI6IElmIHJldHJpZXZpbmcgdGhlIHByb3BlcnR5IGB4LnRoZW5gIHJlc3VsdHMg
aW4gYSB0aHJvd24gZXhjZXB0aW9uIGBlYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGBlYCBhcyB0
aGUgcmVhc29uLiBgZWAgaXMgYW4gYWx3YXlzLXBlbmRpbmcgdGhlbmFibGUgdmlhIHJldHVybiBm
cm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMjogSWYgcmV0cmlldmluZyB0aGUgcHJvcGVy
dHkgYHgudGhlbmAgcmVzdWx0cyBpbiBhIHRocm93biBleGNlcHRpb24gYGVgLCByZWplY3QgYHBy
b21pc2VgIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIGBlYCBpcyBhbiBhbHdheXMtcGVuZGluZyB0
aGVuYWJsZSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjI6IElmIHJl
dHJpZXZpbmcgdGhlIHByb3BlcnR5IGB4LnRoZW5gIHJlc3VsdHMgaW4gYSB0aHJvd24gZXhjZXB0
aW9uIGBlYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiBgZWAgaXMg
YSBmdWxmaWxsZWQgcHJvbWlzZSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4yOiBJZiByZXRyaWV2aW5nIHRoZSBwcm9wZXJ0eSBgeC50aGVuYCByZXN1bHRzIGluIGEg
dGhyb3duIGV4Y2VwdGlvbiBgZWAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgZWAgYXMgdGhlIHJl
YXNvbi4gYGVgIGlzIGEgZnVsZmlsbGVkIHByb21pc2UgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4yOiBJZiByZXRyaWV2aW5nIHRoZSBwcm9wZXJ0eSBgeC50aGVuYCBy
ZXN1bHRzIGluIGEgdGhyb3duIGV4Y2VwdGlvbiBgZWAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBg
ZWAgYXMgdGhlIHJlYXNvbi4gYGVgIGlzIGEgcmVqZWN0ZWQgcHJvbWlzZSB2aWEgcmV0dXJuIGZy
b20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMg
YW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4yOiBJZiByZXRyaWV2aW5nIHRoZSBwcm9wZXJ0
eSBgeC50aGVuYCByZXN1bHRzIGluIGEgdGhyb3duIGV4Y2VwdGlvbiBgZWAsIHJlamVjdCBgcHJv
bWlzZWAgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gYGVgIGlzIGEgcmVqZWN0ZWQgcHJvbWlzZSB2
aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgQ2FsbHMg
d2l0aCBgeGAgYXMgYHRoaXNgIGFuZCB0d28gZnVuY3Rpb24gYXJndW1lbnRzIHZpYSByZXR1cm4g
ZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgQ2FsbHMgd2l0aCBgeGAg
YXMgYHRoaXNgIGFuZCB0d28gZnVuY3Rpb24gYXJndW1lbnRzIHZpYSByZXR1cm4gZnJvbSBhIHJl
amVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQg
d2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQg
c2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCBVc2VzIHRoZSBvcmlnaW5hbCB2YWx1ZSBv
ZiBgdGhlbmAgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6
IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYg
YHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBh
cmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9t
aXNlYCBVc2VzIHRoZSBvcmlnaW5hbCB2YWx1ZSBvZiBgdGhlbmAgdmlhIHJldHVybiBmcm9tIGEg
cmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBp
dCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFu
ZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVz
b2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShw
cm9taXNlLCB5KWAgYHlgIGlzIG5vdCBhIHRoZW5hYmxlIGB5YCBpcyBgdW5kZWZpbmVkYCBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxs
IGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwg
YW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGBy
ZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1d
KHByb21pc2UsIHkpYCBgeWAgaXMgbm90IGEgdGhlbmFibGUgYHlgIGlzIGB1bmRlZmluZWRgIGB0
aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9t
IGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4g
b2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2Fs
bCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAs
IGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBg
cmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVd
XShwcm9taXNlLCB5KWAgYHlgIGlzIG5vdCBhIHRoZW5hYmxlIGB5YCBpcyBgdW5kZWZpbmVkYCBg
dGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZy
b20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMg
YW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwg
Y2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlz
ZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hl
biBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29s
dmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIG5vdCBhIHRoZW5hYmxlIGB5YCBpcyBgdW5kZWZpbmVk
YCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJu
IGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93
aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVz
b2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgbm90IGEgdGhlbmFibGUgYHlgIGlzIGBudWxsYCBg
dGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJv
bSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVu
IGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2
ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgbm90IGEgdGhlbmFibGUgYHlgIGlzIGBudWxsYCBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJl
c29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0o
cHJvbWlzZSwgeSlgIGB5YCBpcyBub3QgYSB0aGVuYWJsZSBgeWAgaXMgYG51bGxgIGB0aGVuYCBj
YWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1
bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNv
bHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHBy
b21pc2UsIHkpYCBgeWAgaXMgbm90IGEgdGhlbmFibGUgYHlgIGlzIGBudWxsYCBgdGhlbmAgY2Fs
bHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWpl
Y3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qg
b3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdp
dGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNl
Y29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZl
UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21p
c2UsIHkpYCBgeWAgaXMgbm90IGEgdGhlbmFibGUgYHlgIGlzIGBmYWxzZWAgYHRoZW5gIGNhbGxz
IGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxs
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRo
IGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNv
bmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVBy
b21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNl
LCB5KWAgYHlgIGlzIG5vdCBhIHRoZW5hYmxlIGB5YCBpcyBgZmFsc2VgIGB0aGVuYCBjYWxscyBg
cmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQg
cHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1
bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4
YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQg
YXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21p
c2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5
KWAgYHlgIGlzIG5vdCBhIHRoZW5hYmxlIGB5YCBpcyBgZmFsc2VgIGB0aGVuYCBjYWxscyBgcmVz
b2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlz
ZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkp
YCBgeWAgaXMgbm90IGEgdGhlbmFibGUgYHlgIGlzIGBmYWxzZWAgYHRoZW5gIGNhbGxzIGByZXNv
bHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIG5vdCBhIHRoZW5hYmxlIGB5YCBpcyBgNWAgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJv
bWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNh
bGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlz
IG5vdCBhIHRoZW5hYmxlIGB5YCBpcyBgNWAgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAg
c3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6
IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmly
c3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0
UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdp
dGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgbm90IGEg
dGhlbmFibGUgYHlgIGlzIGA1YCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hy
b25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzog
T3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBg
dGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFy
Z3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21p
c2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZh
bHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIG5vdCBhIHRoZW5h
YmxlIGB5YCBpcyBgNWAgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5
YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIG5vdCBhIHRoZW5hYmxlIGB5
YCBpcyBhbiBvYmplY3QgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNs
eSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5
YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIG5vdCBhIHRoZW5hYmxlIGB5
YCBpcyBhbiBvYmplY3QgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNs
eSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4z
LjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlg
LCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgbm90IGEgdGhlbmFibGUgYHlg
IGlzIGFuIG9iamVjdCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNs
eSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5
YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIG5vdCBhIHRoZW5hYmxlIGB5
YCBpcyBhbiBvYmplY3QgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5
YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIG5vdCBhIHRoZW5hYmxlIGB5
YCBpcyBhbiBhcnJheSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4z
LjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlg
LCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgbm90IGEgdGhlbmFibGUgYHlg
IGlzIGFuIGFycmF5IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkg
dmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNl
LCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMg
YSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGBy
ZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4z
LjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwg
cnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIG5vdCBhIHRoZW5hYmxlIGB5YCBp
cyBhbiBhcnJheSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNl
LCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMg
YSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGBy
ZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4z
LjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwg
cnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIG5vdCBhIHRoZW5hYmxlIGB5YCBp
cyBhbiBhcnJheSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMgYSBz
eW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNv
bHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9t
IHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlh
IHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBp
ZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBm
dW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNv
bHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMu
MTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVu
IGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGEgc3lu
Y2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2
ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAg
aXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBg
eWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20g
dGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlh
IHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBp
ZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBm
dW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNv
bHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMu
MTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVu
IGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFz
eW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNv
bHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0
b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMgYW4g
YXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJl
c29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQg
cHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1
bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4
YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQg
YXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21p
c2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5
KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBj
dXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5
YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlz
IGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxz
IGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxs
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRo
IGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNv
bmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVBy
b21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNl
LCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQg
b25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVu
YCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1l
bnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAg
Mi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUg
YHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAg
aXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2Fs
bHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxm
aWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0
IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3
aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBz
ZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2
ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9t
aXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxs
ZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzog
T3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBg
dGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFy
Z3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21p
c2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZh
bHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUg
YHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmls
bGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQ
cm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlz
ZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8g
ZnVsZmlsbCB0d2ljZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBh
IHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxs
IHR3aWNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSBy
ZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYg
YHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVu
Y3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2
ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6
IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBg
W1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5h
YmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVBy
b21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBp
cyBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhy
b3dzIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVy
biBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlv
biwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJv
bWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYv
d2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jl
c29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUg
dGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlz
ZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxs
ZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBh
IHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dz
IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4g
ZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3do
ZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNv
bHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1
bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5g
IGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVu
dCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAy
LjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBg
eWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBp
cyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21p
c2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFT
UyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMu
My4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2As
IGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJl
amVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxl
ZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEg
dGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgYHRoZW5gIGNhbGxz
IGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmls
bGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQ
cm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlz
ZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9t
aXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVh
bGx5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6
IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYg
YHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBh
cmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9t
aXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2
YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxl
IGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVz
b2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2Ug
YHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBm
cm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3do
ZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNv
bHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5
LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJv
bm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90
aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRo
ZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1
bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNl
YCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1
ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5
YCBpcyBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmls
bGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQ
cm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlz
ZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQg
Y3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5
YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlz
IGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGBy
ZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9t
aXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwg
eSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3Vz
dG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBh
biBhc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGBy
ZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQg
cHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1
bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4
YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQg
YXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21p
c2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5
KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1
c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBh
biBhc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGBy
ZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9t
aXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwg
eSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25vdXNseS1yZWplY3RlZCBj
dXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5
YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlz
IGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMg
YHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2Us
IHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIG9u
ZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5
YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlz
IGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMg
YHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxs
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRo
IGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNv
bmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVBy
b21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNl
LCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBv
bmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVu
YCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1l
bnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAg
Mi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUg
YHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAg
aXMgYSB0aGVuYWJsZSB0aGF0IGltbWVkaWF0ZWx5IHRocm93cyBpbiBgdGhlbmAgYHRoZW5gIGNh
bGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxm
aWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0
IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3
aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBz
ZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2
ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9t
aXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBpbW1lZGlh
dGVseSB0aHJvd3MgaW4gYHRoZW5gIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzog
T3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBg
dGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFy
Z3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21p
c2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZh
bHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUg
YHlgIGlzIGEgdGhlbmFibGUgdGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgaW4gYHRoZW5gIGB0aGVu
YCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxs
IGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwg
YW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGBy
ZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1d
KHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGlt
bWVkaWF0ZWx5IHRocm93cyBpbiBgdGhlbmAgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAg
YXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4z
OiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZp
cnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVj
dFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3
aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhl
bmFibGUgYHlgIGlzIGFuIG9iamVjdCB3aXRoIGEgdGhyb3dpbmcgYHRoZW5gIGFjY2Vzc29yIGB0
aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9t
IGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFu
IG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNh
bGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2Vg
LCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4g
YHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZl
XV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBhbiBvYmplY3Qgd2l0aCBh
IHRocm93aW5nIGB0aGVuYCBhY2Nlc3NvciBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBz
eW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4z
LjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzog
SWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJz
dCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQ
cm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5h
YmxlIGB5YCBpcyBhbiBvYmplY3Qgd2l0aCBhIHRocm93aW5nIGB0aGVuYCBhY2Nlc3NvciBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20g
YSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4g
b2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2Fs
bCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAs
IGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBg
cmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVd
XShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGFuIG9iamVjdCB3aXRoIGEg
dGhyb3dpbmcgYHRoZW5gIGFjY2Vzc29yIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFz
eW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4z
LjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzog
SWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJz
dCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQ
cm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5h
YmxlIGB5YCBpcyBhbiBhbHJlYWR5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNv
bHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJl
c29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0o
cHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LXJlamVjdGVk
IHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlh
IHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGB5YCBpcyBhbiBh
bHJlYWR5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5
bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMu
MzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJ
ZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0
IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFBy
b21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRo
IHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFi
bGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJl
c29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlz
ZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkp
YCBgeWAgaXMgYSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1yZWplY3RlZCBwcm9taXNl
IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBm
cm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMg
YW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwg
Y2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlz
ZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hl
biBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29s
dmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHkt
cmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3Ro
ZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhl
bmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3Vt
ZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2Vg
IDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVl
IGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgYHlg
IGlzIGFuIGV2ZW50dWFsbHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNl
CitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24s
IDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0
aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVu
dCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMg
Y2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAg
aXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZp
bGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9t
IHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlh
IHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5h
YmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3Ig
YSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGBy
ZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlz
ZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkp
YCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5
LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQg
Y3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91
c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVu
YCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1l
bnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAg
Mi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUg
YHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3Ig
YSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFi
bGUgZm9yIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBj
YWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJl
amVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQg
d2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQg
c2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29s
dmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJv
bWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNo
cm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gYXN5bmNocm9ub3VzbHkt
ZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBz
eW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6
IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmly
c3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0
UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdp
dGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVu
YWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0
b20gdGhlbmFibGUgZm9yIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFi
bGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJu
IGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93
aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVz
b2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAg
aXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGFuIGFzeW5j
aHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZl
UHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBp
cyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5
YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVs
ZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1
c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNs
eSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4z
LjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlg
LCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0
aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUg
Zm9yIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNh
bGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxm
aWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0
IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3
aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBz
ZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2
ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9t
aXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hy
b25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHN5bmNocm9ub3VzbHktZnVs
ZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5
bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMu
MzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJ
ZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0
IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFBy
b21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRo
IHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFi
bGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9t
IHRoZW5hYmxlIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxl
IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4g
ZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93
aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVz
b2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAg
aXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgc3luY2hy
b25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZl
UHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlg
IGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxm
aWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmls
bCB0d2ljZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSBy
ZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJs
ZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEg
dGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGB0aGVuYCBjYWxscyBgcmVzb2x2
ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlg
IGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxm
aWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmls
bCB0d2ljZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBp
ZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBm
dW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNv
bHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMu
MTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVu
IGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFi
bGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBh
IHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAg
aXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBg
eWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1
bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQg
dGhlbiB0aHJvd3MgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNl
LCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMg
YSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGBy
ZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4z
LjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwg
cnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhl
bmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZv
ciBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGB0aGVuYCBjYWxscyBg
cmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQg
cHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1
bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4
YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQg
YXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21p
c2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5
KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNs
eS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMg
YnV0IHRoZW4gdGhyb3dzIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91
c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVu
YCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1l
bnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAg
Mi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUg
YHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3Ig
YSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFi
bGUgZm9yIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgYHRoZW5gIGNh
bGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVq
ZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0
IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3
aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBz
ZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2
ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9t
aXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hy
b25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhbiBhbHJlYWR5LWZ1bGZpbGxl
ZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlh
IHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5h
YmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3Ig
YW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNl
YCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1Mg
Mi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMu
MzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBm
aXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWpl
Y3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQg
d2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRo
ZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1
c3RvbSB0aGVuYWJsZSBmb3IgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2Fs
bHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxm
aWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0
IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3
aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBz
ZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2
ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9t
aXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hy
b25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhbiBhbHJlYWR5LWZ1bGZpbGxl
ZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5h
YmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3Ig
YW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9t
aXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQ
QVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIu
My4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlz
YCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBg
cmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2Fs
bGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMg
YSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxl
ZCBjdXN0b20gdGhlbmFibGUgZm9yIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgYHRo
ZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20g
YSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxs
IGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwg
YW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGBy
ZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1d
KHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBz
eW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGFuIGV2ZW50dWFsbHkt
ZnVsZmlsbGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9u
b3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90
aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRo
ZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1
bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNl
YCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1
ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZv
ciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVu
YWJsZSBmb3IgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJl
c29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlz
ZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkp
YCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5
LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBj
dXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNs
eSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5
YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEg
dGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxl
IGZvciBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRo
IGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNv
bmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVBy
b21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNl
LCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25v
dXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHN5bmNocm9ub3VzbHktcmVqZWN0
ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJv
bm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFs
dWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBm
b3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhl
bmFibGUgZm9yIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5g
IGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEg
cmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBp
dCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFu
ZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVz
b2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShw
cm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3lu
Y2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhbiBhc3luY2hyb25vdXNs
eS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAg
c3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4z
OiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZp
cnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVj
dFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3
aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhl
bmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3Vz
dG9tIHRoZW5hYmxlIGZvciBhbiBhc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFi
bGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJu
IGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93
aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVz
b2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAg
aXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGFuIGFzeW5j
aHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlg
IGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxm
aWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhbiBhc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0
b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkg
dmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNl
LCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMg
YSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGBy
ZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4z
LjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwg
cnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhl
bmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZv
ciBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxz
IGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxs
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRo
IGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNv
bmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVBy
b21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNl
LCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25v
dXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHN5bmNocm9ub3VzbHktcmVqZWN0
ZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hy
b25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFs
dWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBm
b3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhl
bmFibGUgZm9yIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20g
YSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4g
b2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2Fs
bCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAs
IGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBg
cmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVd
XShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEg
c3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHN5bmNocm9ub3Vz
bHktcmVqZWN0ZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlz
ZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFT
UyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMu
My4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2As
IGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJl
amVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxl
ZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEg
dGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQg
Y3VzdG9tIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIHRoYXQgaW1tZWRpYXRlbHkgdGhyb3dzIGlu
IGB0aGVuYCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSBy
ZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJs
ZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEg
dGhlbmFibGUgdGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgaW4gYHRoZW5gIGB0aGVuYCBjYWxscyBg
cmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQg
cHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1
bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4
YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQg
YXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21p
c2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5
KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNs
eS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIHRoYXQgaW1tZWRpYXRl
bHkgdGhyb3dzIGluIGB0aGVuYCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hy
b25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzog
T3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBg
dGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFy
Z3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21p
c2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZh
bHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUg
Zm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRo
ZW5hYmxlIGZvciBhIHRoZW5hYmxlIHRoYXQgaW1tZWRpYXRlbHkgdGhyb3dzIGluIGB0aGVuYCBg
dGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZy
b20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVu
IGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2
ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMg
YSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGFuIG9iamVjdCB3
aXRoIGEgdGhyb3dpbmcgYHRoZW5gIGFjY2Vzc29yIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21p
c2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxs
ZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBh
IHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVk
IGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gb2JqZWN0IHdpdGggYSB0aHJvd2luZyBgdGhlbmAgYWNj
ZXNzb3IgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0
dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4
YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0
aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQ
cm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJ
Zi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtb
UmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBg
eWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGFuIG9i
amVjdCB3aXRoIGEgdGhyb3dpbmcgYHRoZW5gIGFjY2Vzc29yIGB0aGVuYCBjYWxscyBgcmVzb2x2
ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAg
aXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBg
eWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1
bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGFuIG9iamVjdCB3aXRoIGEgdGhyb3dpbmcgYHRo
ZW5gIGFjY2Vzc29yIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBm
b3IgYW4gYWxyZWFkeS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21p
c2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxs
ZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBh
IHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVk
IGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gYWxyZWFkeS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBj
YWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVq
ZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0
IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3
aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBz
ZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2
ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9t
aXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hy
b25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhbiBhbHJlYWR5LXJlamVjdGVk
IHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlh
IHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5h
YmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3Ig
YW4gYWxyZWFkeS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2Vg
IGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1Mg
Mi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMu
MzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBm
aXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWpl
Y3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQg
d2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRo
ZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1
c3RvbSB0aGVuYWJsZSBmb3IgYW4gZXZlbnR1YWxseS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBj
YWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVs
ZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQg
d2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQg
c2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29s
dmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJv
bWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNo
cm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gZXZlbnR1YWxseS1yZWpl
Y3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkg
dmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNl
LCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMg
YSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGBy
ZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4z
LjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwg
cnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhl
bmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZv
ciBhbiBldmVudHVhbGx5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJv
bWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBp
cyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmls
bGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gZXZlbnR1YWxseS1yZWplY3RlZCBwcm9taXNlIGB0
aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJv
bSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFu
IG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNh
bGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2Vg
LCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4g
YHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZl
XV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBh
biBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHN5bmNocm9u
b3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9t
aXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQ
QVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIu
My4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlz
YCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBg
cmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2Fs
bGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMg
YSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmls
bGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20g
dGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJs
ZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3Ig
YSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGBy
ZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9t
aXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwg
eSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25v
dXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmls
bGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hy
b25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFs
dWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBm
b3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0
aGVuYWJsZSBmb3IgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBg
dGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJv
bSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVu
IGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2
ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMg
YW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gYXN5bmNo
cm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBp
cyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxm
aWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3Vz
dG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4z
LjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlg
LCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0
aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJs
ZSBmb3IgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAg
Y2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBy
ZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNv
bHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHBy
b21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5
bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYSBzeW5jaHJvbm91c2x5
LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNl
YCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVk
IHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVk
IGN1c3RvbSB0aGVuYWJsZSBmb3IgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0
aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSBy
ZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYg
YHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVu
Y3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2
ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6
IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBg
W1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxl
IGB5YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBh
IHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBg
cmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2Us
IHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9u
b3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYSBzeW5jaHJvbm91c2x5LWZ1bGZp
bGxlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3lu
Y2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4z
OiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElm
IGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3Qg
YXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJv
bWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGgg
dmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJs
ZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3Rv
bSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgYHRo
ZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20g
YSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4g
b2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2Fs
bCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAs
IGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBg
cmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVd
XShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFu
IGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgdGhlbmFibGUg
dGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2Vg
IHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4z
OiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZp
cnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVj
dFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3
aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhl
bmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBj
dXN0b20gdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNl
IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4g
ZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93
aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVz
b2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAg
aXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJv
bWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNh
bGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlz
IGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZp
bGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhl
biB0aHJvd3MgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBp
ZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBm
dW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNv
bHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMu
MTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVu
IGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFi
bGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9y
IGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgYHRoZW5gIGNhbGxzIGBy
ZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlz
ZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkp
YCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3Vz
bHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxz
IGJ1dCB0aGVuIHRocm93cyBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3Ro
ZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhl
bmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3Vt
ZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2Vg
IDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVl
IGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9y
IGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhl
bmFibGUgZm9yIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgYHRoZW5g
IGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEg
cmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBp
dCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFu
ZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVz
b2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShw
cm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFz
eW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGFuIGFscmVhZHktZnVs
ZmlsbGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNs
eSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5
YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEg
dGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFi
bGUgZm9yIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZl
UHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNl
CitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24s
IDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0
aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVu
dCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMg
Y2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAg
aXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVs
ZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBg
dGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZy
b20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMg
YW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwg
Y2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlz
ZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hl
biBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29s
dmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlz
IGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGFuIGFscmVh
ZHktZnVsZmlsbGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzog
T3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBg
dGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFy
Z3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21p
c2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZh
bHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUg
Zm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20g
dGhlbmFibGUgZm9yIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgYHRoZW5gIGNhbGxz
IGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxs
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRo
IGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNv
bmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVBy
b21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNl
LCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJv
bm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGFuIGV2ZW50dWFsbHktZnVsZmls
bGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBm
b3IgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlg
IGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1
bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21p
c2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVy
biBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlv
biwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJv
bWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYv
d2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jl
c29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlg
IGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgc3lu
Y2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZl
UHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlg
IGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1
bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0
b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBm
b3IgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMg
YHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxs
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRo
IGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNv
bmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVBy
b21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNl
LCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJv
bm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGEgc3luY2hyb25vdXNseS1yZWpl
Y3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzog
T3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBg
dGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFy
Z3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21p
c2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZh
bHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUg
Zm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20g
dGhlbmFibGUgZm9yIGFuIGFzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBg
dGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJv
bSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVu
IGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2
ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMg
YW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gYXN5bmNo
cm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVBy
b21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNh
bGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlz
IGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZp
bGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGFuIGFzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3Rv
bSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNl
LCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMg
YSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGBy
ZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4z
LjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwg
cnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhl
bmFibGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUg
Zm9yIGFuIGFzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2Fs
bHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWpl
Y3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qg
b3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdp
dGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNl
Y29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZl
UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21p
c2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNo
cm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYSBzeW5jaHJvbm91c2x5LXJl
amVjdGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5
bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4z
LjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzog
SWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJz
dCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQ
cm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5h
YmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3Vz
dG9tIHRoZW5hYmxlIGZvciBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgb25lLXRpbWUgdGhlbmFi
bGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJu
IGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93
aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVz
b2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAg
aXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYSBzeW5j
aHJvbm91c2x5LXJlamVjdGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2
ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAg
aXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBg
eWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHkt
ZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIG9u
ZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91
c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5g
IGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVu
dCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAy
LjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBg
eWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBh
IHRoZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5h
YmxlIGZvciBhIHRoZW5hYmxlIHRoYXQgaW1tZWRpYXRlbHkgdGhyb3dzIGluIGB0aGVuYCBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxs
IGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwg
YW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGBy
ZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1d
KHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4g
YXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSB0
aGF0IGltbWVkaWF0ZWx5IHRocm93cyBpbiBgdGhlbmAgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJv
bWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQ
QVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIu
My4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlz
YCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBg
cmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2Fs
bGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMg
YSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmls
bGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSB0aGF0IGltbWVkaWF0ZWx5IHRocm93
cyBpbiBgdGhlbmAgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkg
dmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxl
IGZvciBhIHRoZW5hYmxlIHRoYXQgaW1tZWRpYXRlbHkgdGhyb3dzIGluIGB0aGVuYCBgdGhlbmAg
Y2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBy
ZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNv
bHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHBy
b21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5
bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gb2JqZWN0IHdpdGgg
YSB0aHJvd2luZyBgdGhlbmAgYWNjZXNzb3IgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAg
c3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4z
OiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZp
cnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVj
dFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3
aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhl
bmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBj
dXN0b20gdGhlbmFibGUgZm9yIGFuIG9iamVjdCB3aXRoIGEgdGhyb3dpbmcgYHRoZW5gIGFjY2Vz
c29yIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVy
biBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlv
biwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJv
bWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYv
d2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jl
c29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlg
IGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGFuIG9i
amVjdCB3aXRoIGEgdGhyb3dpbmcgYHRoZW5gIGFjY2Vzc29yIGB0aGVuYCBjYWxscyBgcmVzb2x2
ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAg
aXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBg
eWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHkt
ZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gb2JqZWN0IHdpdGggYSB0aHJvd2luZyBg
dGhlbmAgYWNjZXNzb3IgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5
YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEg
dGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFi
bGUgZm9yIGFuIGFscmVhZHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNl
CitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24s
IDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0
aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVu
dCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMg
Y2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAg
aXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVs
ZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gYWxyZWFkeS1yZWplY3RlZCBwcm9taXNlIGB0
aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9t
IGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4g
b2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2Fs
bCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAs
IGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBg
cmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVd
XShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFu
IGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgZm9yIGFuIGFscmVhZHkt
cmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3Ro
ZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhl
bmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3Vt
ZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2Vg
IDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVl
IGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9y
IGEgdGhlbmFibGUgYHlgIGlzIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhl
bmFibGUgZm9yIGFuIGFscmVhZHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAg
aXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBg
eWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHkt
ZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gZXZlbnR1YWxseS1yZWplY3RlZCBwcm9t
aXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVy
biBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGZvciBhbiBl
dmVudHVhbGx5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAg
c3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6
IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmly
c3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0
UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdp
dGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVu
YWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1
c3RvbSB0aGVuYWJsZSBmb3IgYW4gZXZlbnR1YWxseS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBj
YWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1
bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNv
bHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHBy
b21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYXN5
bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBmb3IgYW4gZXZlbnR1YWxseS1y
ZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91
c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5g
IGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVu
dCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAy
LjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBg
eWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBh
IHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5h
YmxlIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAg
Y2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1
bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNv
bHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHBy
b21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5j
aHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYSBzeW5jaHJvbm91c2x5
LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAg
c3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6
IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmly
c3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0
UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdp
dGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVu
YWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUt
dGltZSB0aGVuYWJsZSBmb3IgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFi
bGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVy
biBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBhIHN5
bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAg
aXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBg
eWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1
bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVk
IGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91
c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVu
YCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1l
bnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAg
Mi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUg
YHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3Ig
YSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVu
YWJsZSBmb3IgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJl
c29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0o
cHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5
bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBhbiBhc3luY2hyb25v
dXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21p
c2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQ
QVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIu
My4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlz
YCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBg
cmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2Fs
bGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMg
YSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxl
ZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3Rv
bSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBm
b3IgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2Fs
bHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZp
bGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qg
b3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdp
dGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNl
Y29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZl
UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21p
c2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJv
bm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYSBzeW5jaHJvbm91c2x5LWZ1
bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBz
eW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4z
LjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzog
SWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJz
dCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQ
cm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5h
YmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10
aW1lIHRoZW5hYmxlIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5h
YmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4
YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0
aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQ
cm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJ
Zi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtb
UmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBg
eWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYSBz
eW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJl
c29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlz
ZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkp
YCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5
LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRv
IGZ1bGZpbGwgdHdpY2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNs
eSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5
YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEg
dGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFi
bGUgZm9yIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRo
IGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNv
bmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVBy
b21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNl
LCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25v
dXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgdGhhdCB0cmll
cyB0byBmdWxmaWxsIHR3aWNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJv
bm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFs
dWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBm
b3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgYHRoZW5g
IGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEg
cmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBp
dCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFu
ZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVz
b2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShw
cm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3lu
Y2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgdGhh
dCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAg
c3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4z
OiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZp
cnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVj
dFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3
aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhl
bmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25l
LXRpbWUgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJv
d3MgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJu
IGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93
aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVz
b2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAg
aXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlg
IGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxm
aWxsZWQgb25lLXRpbWUgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQg
dGhlbiB0aHJvd3MgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkg
dmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNl
LCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMg
YSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGBy
ZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4z
LjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwg
cnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhl
bmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUg
Zm9yIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJv
bWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNh
bGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlz
IGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxs
ZWQgb25lLXRpbWUgdGhlbmFibGUgZm9yIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgYHRo
ZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20g
YSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxs
IGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwg
YW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGBy
ZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1d
KHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBz
eW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYW4gYWxyZWFkeS1m
dWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3Ro
ZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhl
bmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3Vt
ZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2Vg
IDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVl
IGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9y
IGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhl
bmFibGUgZm9yIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNv
bHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1m
dWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgZm9yIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHBy
b21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0
dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTog
SWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBb
W1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUg
YHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgZm9yIGFu
IGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlz
ZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVk
IHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBv
bmUtdGltZSB0aGVuYWJsZSBmb3IgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20g
YSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4g
b2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2Fs
bCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAs
IGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBg
cmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVd
XShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEg
c3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgZm9yIGFuIGV2ZW50dWFs
bHktZnVsZmlsbGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzog
T3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBg
dGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFy
Z3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21p
c2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZh
bHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUg
Zm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUg
dGhlbmFibGUgZm9yIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRo
ZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20g
YSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4g
b2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2Fs
bCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAs
IGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBg
cmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVd
XShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEg
c3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgZm9yIGEgc3luY2hyb25v
dXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlz
ZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVk
IHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBv
bmUtdGltZSB0aGVuYWJsZSBmb3IgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVu
YWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0
dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTog
SWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBb
W1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUg
YHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgZm9yIGEg
c3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNv
bHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1m
dWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgZm9yIGFuIGFzeW5jaHJvbm91c2x5LXJlamVjdGVk
IGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91
c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVu
YCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1l
bnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAg
Mi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUg
YHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3Ig
YSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVu
YWJsZSBmb3IgYW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVu
YCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEg
cmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBp
dCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFu
ZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVz
b2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShw
cm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3lu
Y2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgZm9yIGFuIGFzeW5jaHJvbm91
c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNl
YCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFT
UyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMu
My4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2As
IGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJl
amVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxl
ZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEg
dGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQg
b25lLXRpbWUgdGhlbmFibGUgZm9yIGFuIGFzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0
aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJs
ZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3Ig
YSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBg
cmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9t
aXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwg
eSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3Vz
bHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBhIHN5bmNocm9ub3VzbHktcmVqZWN0
ZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hy
b25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFs
dWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBm
b3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0
aGVuYWJsZSBmb3IgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0
aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJv
bSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVu
IGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2
ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMg
YSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYSBzeW5jaHJv
bm91c2x5LXJlamVjdGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVBy
b21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBp
cyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmls
bGVkIG9uZS10aW1lIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIHRoYXQgaW1tZWRpYXRlbHkgdGhy
b3dzIGluIGB0aGVuYCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4z
LjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlg
LCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0
aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJs
ZSBmb3IgYSB0aGVuYWJsZSB0aGF0IGltbWVkaWF0ZWx5IHRocm93cyBpbiBgdGhlbmAgYHRoZW5g
IGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBy
ZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNv
bHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHBy
b21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5j
aHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSB0aGF0
IGltbWVkaWF0ZWx5IHRocm93cyBpbiBgdGhlbmAgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlz
ZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxs
ZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBh
IHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVk
IG9uZS10aW1lIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIHRoYXQgaW1tZWRpYXRlbHkgdGhyb3dz
IGluIGB0aGVuYCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBm
b3IgYW4gb2JqZWN0IHdpdGggYSB0aHJvd2luZyBgdGhlbmAgYWNjZXNzb3IgYHRoZW5gIGNhbGxz
IGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxs
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRo
IGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNv
bmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVBy
b21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNl
LCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25v
dXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgZm9yIGFuIG9iamVjdCB3aXRoIGEgdGhy
b3dpbmcgYHRoZW5gIGFjY2Vzc29yIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzog
T3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBg
dGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFy
Z3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21p
c2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZh
bHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUg
Zm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUg
dGhlbmFibGUgZm9yIGFuIG9iamVjdCB3aXRoIGEgdGhyb3dpbmcgYHRoZW5gIGFjY2Vzc29yIGB0
aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJv
bSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVu
IGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2
ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMg
YSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYW4gb2JqZWN0
IHdpdGggYSB0aHJvd2luZyBgdGhlbmAgYWNjZXNzb3IgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJv
bWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNh
bGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlz
IGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxs
ZWQgb25lLXRpbWUgdGhlbmFibGUgZm9yIGFuIGFscmVhZHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxs
IGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwg
YW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGBy
ZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1d
KHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBz
eW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYW4gYWxyZWFkeS1y
ZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5
YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEg
dGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFi
bGUgZm9yIGFuIGFscmVhZHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlg
IGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgc3luY2hyb25vdXNseS1mdWxm
aWxsZWQgb25lLXRpbWUgdGhlbmFibGUgZm9yIGFuIGFscmVhZHktcmVqZWN0ZWQgcHJvbWlzZSBg
dGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZy
b20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVu
IGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2
ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMg
YSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYW4gZXZlbnR1
YWxseS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6
IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYg
YHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBh
cmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9t
aXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2
YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxl
IGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1l
IHRoZW5hYmxlIGZvciBhbiBldmVudHVhbGx5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxz
IGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3Rl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2Us
IHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91
c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBmb3IgYW4gZXZlbnR1YWxseS1yZWplY3Rl
ZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBm
b3IgYW4gZXZlbnR1YWxseS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVBy
b21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBp
cyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMg
dG8gZnVsZmlsbCB0d2ljZSBmb3IgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhl
bmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0
dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTog
SWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBb
W1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUg
YHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBhIHN5bmNo
cm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBp
cyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMg
dG8gZnVsZmlsbCB0d2ljZSBmb3IgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhl
bmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJl
dHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYg
YHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVu
Y3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2
ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6
IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBg
W1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxl
IGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYSBzeW5j
aHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZl
UHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlg
IGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmll
cyB0byBmdWxmaWxsIHR3aWNlIGZvciBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9t
IHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlh
IHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5h
YmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYW4g
YXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJl
c29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlg
IGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQg
dHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1
c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNs
eSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5
YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEg
dGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGZv
ciBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVj
dGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQ
cm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlz
ZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxl
IHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxl
ZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJv
bm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFs
dWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBm
b3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdp
Y2UgZm9yIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5g
IGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBy
ZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNv
bHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHBy
b21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVu
YWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGEgc3luY2hyb25vdXNseS1mdWxm
aWxsZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5
bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4z
LjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzog
SWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJz
dCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQ
cm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5h
YmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmls
bCB0d2ljZSBmb3IgYSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSBg
dGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZy
b20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVu
IGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2
ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMg
YSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGEgdGhlbmFibGUgdGhh
dCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5
bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4z
LjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzog
SWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJz
dCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQ
cm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5h
YmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmls
bCB0d2ljZSBmb3IgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgYHRoZW5g
IGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBy
ZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNv
bHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHBy
b21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVu
YWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGEgdGhlbmFibGUgdGhhdCB0cmll
cyB0byBmdWxmaWxsIHR3aWNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJv
bm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFs
dWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBm
b3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdp
Y2UgZm9yIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVj
dGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQ
cm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlz
ZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxl
IHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxz
IGJ1dCB0aGVuIHRocm93cyBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91
c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVu
YCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1l
bnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAg
Mi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUg
YHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3Ig
YSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2Ug
Zm9yIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgYHRoZW5gIGNhbGxz
IGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3Rl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2Us
IHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0
aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBi
dXQgdGhlbiB0aHJvd3MgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5g
IGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVu
dCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAy
LjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBg
eWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBh
IHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBm
b3IgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBgdGhlbmAgY2FsbHMg
YHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3Rl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2Us
IHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0
aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21p
c2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJu
IGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlv
biwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJv
bWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYv
d2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jl
c29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlg
IGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBhbiBhbHJlYWR5
LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9u
b3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3Ro
ZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhl
bmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3Vt
ZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2Vg
IDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVl
IGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9y
IGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNl
IGZvciBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVBy
b21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNl
CitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24s
IDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0
aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVu
dCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMg
Y2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAg
aXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVz
IHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgYHRoZW5g
IGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEg
cmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBp
dCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFu
ZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVz
b2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShw
cm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhl
bmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBhbiBldmVudHVhbGx5LWZ1bGZp
bGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkg
dmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3Ig
YW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9t
aXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxs
ZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBh
IHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8g
ZnVsZmlsbCB0d2ljZSBmb3IgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAg
Y2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBm
dWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBp
dCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFu
ZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVz
b2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShw
cm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhl
bmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBhbiBldmVudHVhbGx5LWZ1bGZp
bGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3Ig
YSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJl
c29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlz
ZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkp
YCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0
IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0
b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGEg
c3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNv
bHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlg
IGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQg
dHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3Rv
bSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGFu
IGFzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJl
c29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlz
ZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkp
YCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0
IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGFuIGFzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1
c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3Ig
YW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBg
cmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2Us
IHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0
aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGFuIGFzeW5jaHJvbm91c2x5LXJlamVjdGVk
IGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVu
YCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1l
bnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAg
Mi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUg
YHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3Ig
YSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2Ug
Zm9yIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2Fs
bHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZp
bGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qg
b3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdp
dGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNl
Y29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZl
UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21p
c2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJs
ZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGEgc3luY2hyb25vdXNseS1yZWplY3Rl
ZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJv
bm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90
aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRo
ZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1
bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNl
YCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1
ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZv
ciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2lj
ZSBmb3IgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBj
YWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1
bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNv
bHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHBy
b21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVu
YWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGEgc3luY2hyb25vdXNseS1yZWpl
Y3RlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3lu
Y2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4z
OiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElm
IGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3Qg
YXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJv
bWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGgg
dmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJs
ZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwg
dHdpY2UgZm9yIGEgdGhlbmFibGUgdGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgaW4gYHRoZW5gIGB0
aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9t
IGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFu
IG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNh
bGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2Vg
LCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4g
YHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZl
XV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBh
IHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYSB0aGVuYWJsZSB0aGF0
IGltbWVkaWF0ZWx5IHRocm93cyBpbiBgdGhlbmAgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlz
ZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVk
IHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1
bGZpbGwgdHdpY2UgZm9yIGEgdGhlbmFibGUgdGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgaW4gYHRo
ZW5gIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4
YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0
aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQ
cm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJ
Zi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtb
UmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBg
eWAgaXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGEgdGhlbmFi
bGUgdGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgaW4gYHRoZW5gIGB0aGVuYCBjYWxscyBgcmVzb2x2
ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBp
cyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5
YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJp
ZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYW4gb2JqZWN0IHdpdGggYSB0aHJvd2luZyBgdGhlbmAg
YWNjZXNzb3IgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBp
ZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBm
dW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNv
bHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMu
MTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVu
IGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFi
bGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBhbiBv
YmplY3Qgd2l0aCBhIHRocm93aW5nIGB0aGVuYCBhY2Nlc3NvciBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBp
cyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5
YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJp
ZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYW4gb2JqZWN0IHdpdGggYSB0aHJvd2luZyBgdGhlbmAg
YWNjZXNzb3IgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlh
IHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5h
YmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBmb3IgYW4g
b2JqZWN0IHdpdGggYSB0aHJvd2luZyBgdGhlbmAgYWNjZXNzb3IgYHRoZW5gIGNhbGxzIGByZXNv
bHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0
cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBhbiBhbHJlYWR5LXJlamVjdGVkIHByb21pc2UgYHRo
ZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20g
YSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4g
b2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2Fs
bCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAs
IGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBg
cmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVd
XShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEg
dGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBhbiBhbHJlYWR5LXJlamVj
dGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgZm9yIGFu
IGFscmVhZHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBh
c3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4z
OiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZp
cnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVj
dFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3
aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhl
bmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxm
aWxsIHR3aWNlIGZvciBhbiBhbHJlYWR5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGBy
ZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQg
cHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1
bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4
YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQg
YXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21p
c2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5
KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhh
dCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBhbiBldmVudHVhbGx5LXJlamVjdGVkIHByb21p
c2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJu
IGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAg
aXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlv
biwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJv
bWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYv
d2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jl
c29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlg
IGlzIGEgdGhlbmFibGUgdGhhdCB0cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBhbiBldmVudHVh
bGx5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hy
b25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFs
dWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBm
b3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdp
Y2UgZm9yIGFuIGV2ZW50dWFsbHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJv
bWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBh
cyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJn
dW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2Vg
IGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAg
YHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCB0
cmllcyB0byBmdWxmaWxsIHR3aWNlIGZvciBhbiBldmVudHVhbGx5LXJlamVjdGVkIHByb21pc2Ug
YHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBm
cm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMg
YW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwg
Y2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlz
ZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hl
biBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29s
dmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlz
IGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGEgc3luY2hyb25v
dXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21p
c2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxs
ZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBh
IHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMg
YnV0IHRoZW4gdGhyb3dzIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVu
YWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhIHN5bmNo
cm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlg
IGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxm
aWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9t
IHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5h
YmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBh
biBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBg
cmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9t
aXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwg
eSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRo
YXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxs
ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9u
b3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3Ro
ZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhl
bmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3Vt
ZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2Vg
IDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVl
IGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9y
IGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJv
d3MgZm9yIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5g
IGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEg
ZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJl
c29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0o
cHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRo
ZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhbiBhc3luY2hyb25vdXNs
eS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2Vg
IGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1Mg
Mi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMu
MzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBm
aXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWpl
Y3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQg
d2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRo
ZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0
IHRoZW4gdGhyb3dzIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5h
YmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVy
biBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhIHN5bmNo
cm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2
ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlg
IGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxm
aWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25lLXRp
bWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkg
dmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZv
ciBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVj
dGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQ
cm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlz
ZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxl
IHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhIHRoZW5hYmxlIHRoYXQgdHJpZXMg
dG8gZnVsZmlsbCB0d2ljZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91
c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVu
YCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1l
bnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAg
Mi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUg
YHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3Ig
YSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93
cyBmb3IgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgYHRoZW5gIGNhbGxz
IGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3Rl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2Us
IHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0
aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBmb3IgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRv
IGZ1bGZpbGwgdHdpY2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5g
IGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVu
dCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAy
LjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBg
eWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBh
IHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dz
IGZvciBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBgdGhlbmAgY2FsbHMg
YHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3Rl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2Us
IHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0
aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBmb3IgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxz
IGJ1dCB0aGVuIHRocm93cyBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91
c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVu
YCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1l
bnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAg
Mi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUg
YHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3Ig
YSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93
cyBmb3IgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBgdGhlbmAgY2Fs
bHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVj
dGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQ
cm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlz
ZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxl
IHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhIHRoZW5hYmxlIHRoYXQgZnVsZmls
bHMgYnV0IHRoZW4gdGhyb3dzIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJv
bm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFs
dWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBm
b3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRo
cm93cyBmb3IgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBgdGhlbmAg
Y2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBy
ZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNv
bHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHBy
b21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVu
YWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBmb3IgYW4gYWxyZWFkeS1mdWxmaWxs
ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBmb3Ig
YW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNl
YCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1Mg
Mi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMu
MzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBm
aXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWpl
Y3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQg
d2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRo
ZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0
IHRoZW4gdGhyb3dzIGZvciBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZp
bGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qg
b3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdp
dGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNl
Y29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZl
UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21p
c2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJs
ZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBmb3IgYW4gYWxyZWFkeS1mdWxmaWxsZWQg
cHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJs
ZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBmb3IgYW4g
ZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNl
YCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVk
IHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1
dCB0aGVuIHRocm93cyBmb3IgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAg
Y2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJl
amVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQg
d2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQg
c2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29s
dmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJv
bWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5h
YmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhbiBldmVudHVhbGx5LWZ1bGZp
bGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4z
LjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlg
LCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0
aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBm
b3IgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNl
CitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24s
IDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0
aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVu
dCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMg
Y2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAg
aXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1bGZp
bGxzIGJ1dCB0aGVuIHRocm93cyBmb3IgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0
aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSBy
ZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJs
ZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBmb3IgYSBz
eW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBp
cyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5
YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVs
ZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9t
IHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBmb3Ig
YSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJl
c29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlz
ZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkp
YCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0
IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBmb3IgYW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQg
Y3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5g
IGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVu
dCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAy
LjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBg
eWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBh
IHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dz
IGZvciBhbiBhc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNh
bGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWpl
Y3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qg
b3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdp
dGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNl
Y29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZl
UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21p
c2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJs
ZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBmb3IgYW4gYXN5bmNocm9ub3VzbHktcmVq
ZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5j
aHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4z
OiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElm
IGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3Qg
YXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJv
bWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGgg
dmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJs
ZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVu
IHRocm93cyBmb3IgYW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0
aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJv
bSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFu
IG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNh
bGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2Vg
LCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4g
YHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZl
XV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBh
IHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhIHN5bmNocm9ub3Vz
bHktcmVqZWN0ZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlz
ZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFT
UyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMu
My4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2As
IGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJl
amVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxl
ZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEg
dGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBi
dXQgdGhlbiB0aHJvd3MgZm9yIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBvbmUtdGltZSB0aGVu
YWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhIHN5bmNo
cm9ub3VzbHktcmVqZWN0ZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZl
UHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBp
cyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5
YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVs
ZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgb25lLXRp
bWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkg
dmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNl
LCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMg
YSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGBy
ZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4z
LjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwg
cnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhl
bmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgZm9y
IGEgdGhlbmFibGUgdGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgaW4gYHRoZW5gIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmls
bGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQ
cm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlz
ZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxl
IHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhIHRoZW5hYmxlIHRoYXQgaW1tZWRp
YXRlbHkgdGhyb3dzIGluIGB0aGVuYCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5j
aHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6
IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYg
YHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBh
cmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9t
aXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2
YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxl
IGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4g
dGhyb3dzIGZvciBhIHRoZW5hYmxlIHRoYXQgaW1tZWRpYXRlbHkgdGhyb3dzIGluIGB0aGVuYCBg
dGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZy
b20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMg
YW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwg
Y2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlz
ZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hl
biBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29s
dmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlz
IGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3MgZm9yIGEgdGhlbmFibGUg
dGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgaW4gYHRoZW5gIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVBy
b21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBp
cyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmls
bHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhbiBvYmplY3Qgd2l0aCBhIHRocm93aW5nIGB0aGVuYCBh
Y2Nlc3NvciBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSBy
ZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJs
ZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBmb3IgYW4g
b2JqZWN0IHdpdGggYSB0aHJvd2luZyBgdGhlbmAgYWNjZXNzb3IgYHRoZW5gIGNhbGxzIGByZXNv
bHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAg
aXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBg
eWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1
bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBmb3IgYW4gb2JqZWN0IHdpdGggYSB0aHJvd2luZyBgdGhl
bmAgYWNjZXNzb3IgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkg
dmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZv
ciBhbiBvYmplY3Qgd2l0aCBhIHRocm93aW5nIGB0aGVuYCBhY2Nlc3NvciBgdGhlbmAgY2FsbHMg
YHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3Rl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2Us
IHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0
aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBmb3IgYW4gYWxyZWFkeS1yZWplY3RlZCBwcm9t
aXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVy
biBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhbiBhbHJl
YWR5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hy
b25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFs
dWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBm
b3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRo
cm93cyBmb3IgYW4gYWxyZWFkeS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2
ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAg
aXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBg
eWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYSB0aGVuYWJsZSB0aGF0IGZ1
bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBmb3IgYW4gYWxyZWFkeS1yZWplY3RlZCBwcm9taXNlIGB0
aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJv
bSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFu
IG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNh
bGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2Vg
LCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4g
YHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZl
XV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBh
IHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhbiBldmVudHVhbGx5
LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3Ro
ZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhl
bmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3Vt
ZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2Vg
IDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVl
IGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9y
IGEgdGhlbmFibGUgYHlgIGlzIGEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJv
d3MgZm9yIGFuIGV2ZW50dWFsbHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBp
cyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5
YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhIHRoZW5hYmxlIHRoYXQgZnVs
ZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhbiBldmVudHVhbGx5LXJlamVjdGVkIHByb21pc2Ug
YHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBm
cm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3do
ZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNv
bHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBp
cyBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGZvciBhbiBldmVudHVh
bGx5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzog
T3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBg
dGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFy
Z3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21p
c2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZh
bHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUg
Zm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEg
c3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVz
b2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlg
IGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZp
bGxlZCBwcm9taXNlIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJs
ZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4g
ZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3do
ZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNv
bHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBp
cyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmls
bGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hy
b25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzog
T3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBg
dGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFy
Z3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21p
c2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZh
bHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUg
Zm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEg
c3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVz
b2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlg
IGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZp
bGxlZCBwcm9taXNlIGZvciBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5h
YmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVy
biBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhc3luY2hyb25vdXNseS1m
dWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5
bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMu
MzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJ
ZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0
IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFBy
b21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRo
IHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFi
bGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgZm9y
IGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxz
IGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmls
bGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQ
cm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlz
ZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5
LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9t
IHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5h
YmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHN5bmNocm9ub3Vz
bHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21p
c2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxs
ZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBh
IHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9t
aXNlIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVu
YCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEg
cmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBp
dCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFu
ZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVz
b2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShw
cm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFs
cmVhZHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQgb25l
LXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5g
IGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVu
dCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAy
LjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBg
eWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBh
IHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHN5bmNo
cm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2
ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBp
cyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5
YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxl
ZCBwcm9taXNlIGZvciBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxs
IGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwg
YW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGBy
ZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1d
KHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4g
YWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1
bGZpbGwgdHdpY2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYSB0aGVuYWJsZSB0
aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAg
YXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1Mg
Mi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMu
MzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBm
aXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWpl
Y3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQg
d2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRo
ZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNl
IGZvciBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSBgdGhlbmAgY2FsbHMg
YHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3Rl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2Us
IHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYWxyZWFkeS1m
dWxmaWxsZWQgcHJvbWlzZSBmb3IgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRo
cm93cyBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4
YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0
aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQ
cm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJ
Zi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtb
UmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBg
eWAgaXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYSB0aGVuYWJsZSB0aGF0IGZ1
bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5j
aHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6
IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYg
YHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBh
cmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9t
aXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2
YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxl
IGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBh
IHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIGB0aGVuYCBjYWxscyBgcmVz
b2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlz
ZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkp
YCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYWxyZWFkeS1mdWxm
aWxsZWQgcHJvbWlzZSBmb3IgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93
cyBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJu
IGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93
aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVz
b2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAg
aXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4gYWxyZWFkeS1mdWxmaWxsZWQg
cHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSBy
ZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJs
ZSBgeWAgaXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4gYWxyZWFkeS1mdWxm
aWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhbHJlYWR5
LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJv
bm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFs
dWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBm
b3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4g
YWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBh
c3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6
IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmly
c3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0
UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdp
dGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVu
YWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBm
b3IgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNl
CitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24s
IDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0
aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVu
dCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMg
Y2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAg
aXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQg
cHJvbWlzZSBmb3IgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMg
YHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9t
aXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwg
eSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1
bGZpbGxlZCBwcm9taXNlIGZvciBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVu
YCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxs
IGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwg
YW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGBy
ZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1d
KHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4g
YWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJv
bWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0
dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4
YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0
aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQ
cm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJ
Zi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtb
UmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBg
eWAgaXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYSBzeW5jaHJvbm91c2x5LXJl
amVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5j
aHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4z
OiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElm
IGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3Qg
YXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJv
bWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGgg
dmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJs
ZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3Ig
YSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJl
c29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlg
IGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZp
bGxlZCBwcm9taXNlIGZvciBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxl
IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4g
ZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93
aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVz
b2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAg
aXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYSBzeW5jaHJvbm91c2x5LXJlamVj
dGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hy
b25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFs
dWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBm
b3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4g
YXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVz
b2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlg
IGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZp
bGxlZCBwcm9taXNlIGZvciBhbiBhc3luY2hyb25vdXNseS1yZWplY3RlZCBjdXN0b20gdGhlbmFi
bGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJu
IGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93
aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVz
b2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAg
aXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4gYXN5bmNocm9ub3VzbHktcmVq
ZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5j
aHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4z
OiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElm
IGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3Qg
YXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJv
bWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGgg
dmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJs
ZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3Ig
YW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBg
cmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9t
aXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwg
eSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1
bGZpbGxlZCBwcm9taXNlIGZvciBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgb25lLXRpbWUgdGhl
bmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0
dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTog
SWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBb
W1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUg
YHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgc3luY2hyb25vdXNseS1y
ZWplY3RlZCBvbmUtdGltZSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBz
eW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4z
LjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzog
SWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJz
dCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQ
cm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5h
YmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZv
ciBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxz
IGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmls
bGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQ
cm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlz
ZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5
LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgb25lLXRpbWUg
dGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlh
IHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBp
ZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBm
dW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNv
bHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMu
MTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVu
IGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFi
bGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgdGhlbmFibGUgdGhh
dCBpbW1lZGlhdGVseSB0aHJvd3MgaW4gYHRoZW5gIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21p
c2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxs
ZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBh
IHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9t
aXNlIGZvciBhIHRoZW5hYmxlIHRoYXQgaW1tZWRpYXRlbHkgdGhyb3dzIGluIGB0aGVuYCBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJl
c29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0o
cHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBh
bHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHRoZW5hYmxlIHRoYXQgaW1tZWRpYXRlbHkg
dGhyb3dzIGluIGB0aGVuYCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3Ro
ZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhl
bmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3Vt
ZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2Vg
IDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVl
IGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9y
IGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgdGhl
bmFibGUgdGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgaW4gYHRoZW5gIGB0aGVuYCBjYWxscyBgcmVz
b2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlg
IGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZp
bGxlZCBwcm9taXNlIGZvciBhbiBvYmplY3Qgd2l0aCBhIHRocm93aW5nIGB0aGVuYCBhY2Nlc3Nv
ciBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4g
ZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93
aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVz
b2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAg
aXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4gb2JqZWN0IHdpdGggYSB0aHJv
d2luZyBgdGhlbmAgYWNjZXNzb3IgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hy
b25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFs
dWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBm
b3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4g
b2JqZWN0IHdpdGggYSB0aHJvd2luZyBgdGhlbmAgYWNjZXNzb3IgYHRoZW5gIGNhbGxzIGByZXNv
bHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlg
IGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZp
bGxlZCBwcm9taXNlIGZvciBhbiBvYmplY3Qgd2l0aCBhIHRocm93aW5nIGB0aGVuYCBhY2Nlc3Nv
ciBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJu
IGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93
aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVz
b2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAg
aXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4gYWxyZWFkeS1yZWplY3RlZCBw
cm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJl
dHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYg
YHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVu
Y3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2
ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6
IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBg
W1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxl
IGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhbHJlYWR5LXJlamVj
dGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4gYWxyZWFkeS1y
ZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91
c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVu
YCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1l
bnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAg
Mi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUg
YHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3Ig
YSB0aGVuYWJsZSBgeWAgaXMgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4gYWxy
ZWFkeS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5j
aHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6
IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYg
YHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBh
cmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9t
aXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2
YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxl
IGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBh
biBldmVudHVhbGx5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlz
ZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFT
UyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMu
My4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2As
IGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJl
amVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxl
ZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEg
dGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGFscmVhZHktZnVsZmlsbGVkIHByb21p
c2UgZm9yIGFuIGV2ZW50dWFsbHktcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBp
cyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5
YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5LWZ1bGZpbGxl
ZCBwcm9taXNlIGZvciBhbiBldmVudHVhbGx5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxz
IGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmls
bGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQ
cm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlz
ZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBhbHJlYWR5
LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBldmVudHVhbGx5LXJlamVjdGVkIHByb21pc2UgYHRo
ZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9t
IGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4g
b2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2Fs
bCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAs
IGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBg
cmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVd
XShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFu
IGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgc3luY2hyb25vdXNseS1mdWxmaWxs
ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9u
b3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90
aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRo
ZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1
bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNl
YCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1
ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZv
ciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBh
IHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJl
c29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlg
IGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1
bGZpbGxlZCBwcm9taXNlIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVu
YWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0
dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTog
SWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBb
W1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUg
YHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgc3luY2hyb25vdXNs
eS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2Vg
IGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1Mg
Mi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMu
MzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBm
aXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWpl
Y3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQg
d2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRo
ZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9t
aXNlIGZvciBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVu
YCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEg
ZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJl
c29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0o
cHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBl
dmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxs
ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9u
b3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3Ro
ZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhl
bmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3Vt
ZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2Vg
IDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVl
IGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9y
IGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGFu
IGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGBy
ZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9t
aXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwg
eSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5
LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9t
IHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1
biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5h
YmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHN5bmNocm9u
b3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVBy
b21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBp
cyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxl
ZCBwcm9taXNlIGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxl
IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBm
cm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMg
YW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwg
Y2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlz
ZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hl
biBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29s
dmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlz
IGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgc3luY2hyb25vdXNseS1mdWxm
aWxsZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5
bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4z
LjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzog
SWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJz
dCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQ
cm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5h
YmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNl
IGZvciBhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIG9uZS10aW1lIHRoZW5hYmxlIGB0aGVuYCBj
YWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJl
amVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQg
d2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQg
c2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29s
dmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJv
bWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVu
dHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVs
ZmlsbCB0d2ljZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYSB0aGVuYWJs
ZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlz
ZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVk
IHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJv
bWlzZSBmb3IgYSB0aGVuYWJsZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UgYHRoZW5gIGNh
bGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVs
ZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQg
d2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQg
c2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29s
dmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJv
bWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVu
dHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVs
ZmlsbCB0d2ljZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2
aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBy
dW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVu
YWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYSB0aGVuYWJs
ZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9t
aXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQ
QVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIu
My4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlz
YCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBg
cmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2Fs
bGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMg
YSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQg
cHJvbWlzZSBmb3IgYSB0aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBgdGhl
bmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJl
c29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0o
cHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBl
dmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMg
YnV0IHRoZW4gdGhyb3dzIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91
c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVu
YCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1l
bnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAg
Mi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUg
YHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3Ig
YSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYSB0
aGVuYWJsZSB0aGF0IGZ1bGZpbGxzIGJ1dCB0aGVuIHRocm93cyBgdGhlbmAgY2FsbHMgYHJlc29s
dmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAg
aXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBg
eWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxm
aWxsZWQgcHJvbWlzZSBmb3IgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2Fs
bHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZp
bGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qg
b3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdp
dGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNl
Y29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZl
UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21p
c2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1
YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4gYWxyZWFkeS1mdWxmaWxsZWQgcHJvbWlzZSBg
dGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJv
bSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFu
IG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNh
bGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2Vg
LCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4g
YHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZl
XV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBh
biBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhbHJlYWR5LWZ1bGZpbGxlZCBw
cm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSBy
ZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJs
ZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4gYWxyZWFkeS1m
dWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVu
YCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1l
bnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAg
Mi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUg
YHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3Ig
YSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4g
ZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNl
YCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVk
IHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJv
bWlzZSBmb3IgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJl
c29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlg
IGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1
bGZpbGxlZCBwcm9taXNlIGZvciBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGB0aGVu
YCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxs
IGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwg
YW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGBy
ZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1d
KHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4g
ZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQg
cHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJs
ZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYSBzeW5jaHJvbm91
c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNl
YCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVk
IHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0
aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJv
bWlzZSBmb3IgYSBzeW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAg
Y2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJl
amVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQg
d2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQg
c2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29s
dmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJv
bWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVu
dHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3Vz
dG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4z
LjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlg
LCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0
aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYSBzeW5j
aHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNl
CitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24s
IDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0
aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVu
dCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMg
Y2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAg
aXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxmaWxs
ZWQgcHJvbWlzZSBmb3IgYW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxl
IGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBm
cm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3do
ZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNv
bHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBp
cyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBhc3luY2hyb25vdXNseS1y
ZWplY3RlZCBjdXN0b20gdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3lu
Y2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4z
OiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElm
IGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3Qg
YXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJv
bWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGgg
dmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJs
ZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBm
b3IgYW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxs
cyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZp
bGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qg
b3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdp
dGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNl
Y29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZl
UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21p
c2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1
YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3Vz
dG9tIHRoZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lz
ZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlz
IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBg
cmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRo
ZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHN5bmNo
cm9ub3VzbHktcmVqZWN0ZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZl
UHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlg
IGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmls
bGVkIHByb21pc2UgZm9yIGEgc3luY2hyb25vdXNseS1yZWplY3RlZCBvbmUtdGltZSB0aGVuYWJs
ZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4g
ZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3do
ZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNv
bHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBp
cyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHN5bmNocm9ub3VzbHktcmVq
ZWN0ZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5
bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4z
LjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzog
SWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJz
dCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQ
cm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5h
YmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNl
IGZvciBhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgb25lLXRpbWUgdGhlbmFibGUgYHRoZW5gIGNh
bGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVq
ZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0
IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3
aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBz
ZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVzb2x2
ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShwcm9t
aXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2ZW50
dWFsbHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgdGhlbmFibGUgdGhhdCBpbW1lZGlhdGVseSB0
aHJvd3MgaW4gYHRoZW5gIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5g
IGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVu
dCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAy
LjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBg
eWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBh
IHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhIHRo
ZW5hYmxlIHRoYXQgaW1tZWRpYXRlbHkgdGhyb3dzIGluIGB0aGVuYCBgdGhlbmAgY2FsbHMgYHJl
c29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlg
IGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1
bGZpbGxlZCBwcm9taXNlIGZvciBhIHRoZW5hYmxlIHRoYXQgaW1tZWRpYXRlbHkgdGhyb3dzIGlu
IGB0aGVuYCBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBp
ZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBm
dW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNv
bHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMu
MTogSWYvd2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVu
IGBbW1Jlc29sdmVdXShwcm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFi
bGUgYHlgIGlzIGFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGEgdGhlbmFibGUg
dGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgaW4gYHRoZW5gIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVBy
b21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBp
cyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxl
ZCBwcm9taXNlIGZvciBhbiBvYmplY3Qgd2l0aCBhIHRocm93aW5nIGB0aGVuYCBhY2Nlc3NvciBg
dGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJv
bSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVu
IGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2
ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMg
YW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4gb2JqZWN0IHdpdGggYSB0aHJv
d2luZyBgdGhlbmAgYWNjZXNzb3IgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hy
b25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFs
dWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBm
b3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBmb3Ig
YW4gb2JqZWN0IHdpdGggYSB0aHJvd2luZyBgdGhlbmAgYWNjZXNzb3IgYHRoZW5gIGNhbGxzIGBy
ZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9t
aXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwg
eSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5
LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBvYmplY3Qgd2l0aCBhIHRocm93aW5nIGB0aGVuYCBh
Y2Nlc3NvciBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4x
OiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggdmFsdWUgYHlgLCBydW4g
YFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJs
ZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4gYWxyZWFkeS1y
ZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5g
IGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVu
dCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAy
LjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBg
eWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBh
IHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBh
bHJlYWR5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3lu
Y2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4z
OiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElm
IGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3Qg
YXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJv
bWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIHdpdGgg
dmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMgYSB0aGVuYWJs
ZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQgcHJvbWlzZSBm
b3IgYW4gYWxyZWFkeS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21p
c2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQ
QVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIu
My4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlz
YCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBg
cmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4xOiBJZi93aGVuIGByZXNvbHZlUHJvbWlzZWAgaXMgY2Fs
bGVkIHdpdGggdmFsdWUgYHlgLCBydW4gYFtbUmVzb2x2ZV1dKHByb21pc2UsIHkpYCBgeWAgaXMg
YSB0aGVuYWJsZSBmb3IgYSB0aGVuYWJsZSBgeWAgaXMgYW4gZXZlbnR1YWxseS1mdWxmaWxsZWQg
cHJvbWlzZSBmb3IgYW4gYWxyZWFkeS1yZWplY3RlZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVz
b2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlg
IGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1
bGZpbGxlZCBwcm9taXNlIGZvciBhbiBldmVudHVhbGx5LXJlamVjdGVkIHByb21pc2UgYHRoZW5g
IGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBm
dWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBp
dCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFu
ZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMTogSWYvd2hlbiBgcmVz
b2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jlc29sdmVdXShw
cm9taXNlLCB5KWAgYHlgIGlzIGEgdGhlbmFibGUgZm9yIGEgdGhlbmFibGUgYHlgIGlzIGFuIGV2
ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UgZm9yIGFuIGV2ZW50dWFsbHktcmVqZWN0ZWQgcHJv
bWlzZSBgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjE6IElm
L3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAsIHJ1biBgW1tS
ZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxlIGB5
YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBldmVudHVhbGx5LXJl
amVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAgYXN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5g
IGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVu
dCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAy
LjMuMy4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBg
eWAsIHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIGB5YCBpcyBhIHRoZW5hYmxlIGZvciBh
IHRoZW5hYmxlIGB5YCBpcyBhbiBldmVudHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBl
dmVudHVhbGx5LXJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZXNvbHZlUHJvbWlzZWAg
YXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAy
LjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4z
OiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZp
cnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVj
dFByb21pc2VgIDIuMy4zLjMuMjogSWYvd2hlbiBgcmVqZWN0UHJvbWlzZWAgaXMgY2FsbGVkIHdp
dGggcmVhc29uIGByYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGByYCBgcmAgaXMgYHVuZGVmaW5l
ZGAgYHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4g
ZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBp
cyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9u
LCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9t
aXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93
aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3QgYHBy
b21pc2VgIHdpdGggYHJgIGByYCBpcyBgdW5kZWZpbmVkYCBgdGhlbmAgY2FsbHMgYHJlamVjdFBy
b21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMjogSWYvd2hlbiBgcmVqZWN0UHJvbWlzZWAgaXMgY2Fs
bGVkIHdpdGggcmVhc29uIGByYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGByYCBgcmAgaXMgYHVu
ZGVmaW5lZGAgYHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBp
ZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBm
dW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNv
bHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMu
MjogSWYvd2hlbiBgcmVqZWN0UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggcmVhc29uIGByYCwgcmVq
ZWN0IGBwcm9taXNlYCB3aXRoIGByYCBgcmAgaXMgYHVuZGVmaW5lZGAgYHRoZW5gIGNhbGxzIGBy
ZWplY3RQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBw
cm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhg
IGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBh
cmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGByZWplY3RQcm9taXNl
YCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3QgYHByb21pc2VgIHdpdGggYHJgIGBy
YCBpcyBgbnVsbGAgYHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4yOiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCBy
ZWplY3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBgbnVsbGAgYHRoZW5gIGNhbGxzIGByZWpl
Y3RQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3doZW4gYHJlamVjdFByb21pc2VgIGlz
IGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgcmAgYHJgIGlz
IGBudWxsYCBgdGhlbmAgY2FsbHMgYHJlamVjdFByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSBy
ZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4y
OiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWpl
Y3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBgbnVsbGAgYHRoZW5gIGNhbGxzIGByZWplY3RQ
cm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNl
CitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24s
IDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0
aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVu
dCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBg
ZmFsc2VgIGB0aGVuYCBjYWxscyBgcmVqZWN0UHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0
dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMjog
SWYvd2hlbiBgcmVqZWN0UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggcmVhc29uIGByYCwgcmVqZWN0
IGBwcm9taXNlYCB3aXRoIGByYCBgcmAgaXMgYGZhbHNlYCBgdGhlbmAgY2FsbHMgYHJlamVjdFBy
b21pc2VgIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMjogSWYvd2hlbiBgcmVqZWN0UHJvbWlzZWAgaXMgY2Fs
bGVkIHdpdGggcmVhc29uIGByYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGByYCBgcmAgaXMgYGZh
bHNlYCBgdGhlbmAgY2FsbHMgYHJlamVjdFByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4
YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0
aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQ
cm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4yOiBJ
Zi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3Qg
YHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBgZmFsc2VgIGB0aGVuYCBjYWxscyBgcmVqZWN0UHJv
bWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMjogSWYvd2hlbiBgcmVqZWN0UHJvbWlzZWAgaXMgY2Fs
bGVkIHdpdGggcmVhc29uIGByYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGByYCBgcmAgaXMgYDBg
IGB0aGVuYCBjYWxscyBgcmVqZWN0UHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZy
b20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMg
YW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwg
Y2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlz
ZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMjogSWYvd2hl
biBgcmVqZWN0UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggcmVhc29uIGByYCwgcmVqZWN0IGBwcm9t
aXNlYCB3aXRoIGByYCBgcmAgaXMgYDBgIGB0aGVuYCBjYWxscyBgcmVqZWN0UHJvbWlzZWAgc3lu
Y2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4z
OiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElm
IGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3Qg
YXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJv
bWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCBy
ZWFzb24gYHJgLCByZWplY3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBgMGAgYHRoZW5gIGNh
bGxzIGByZWplY3RQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxm
aWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0
IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3
aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBz
ZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMjogSWYvd2hlbiBgcmVqZWN0
UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggcmVhc29uIGByYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRo
IGByYCBgcmAgaXMgYDBgIGB0aGVuYCBjYWxscyBgcmVqZWN0UHJvbWlzZWAgYXN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMjogSWYvd2hlbiBgcmVqZWN0UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggcmVhc29uIGBy
YCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGByYCBgcmAgaXMgYW4gZXJyb3IgYHRoZW5gIGNhbGxz
IGByZWplY3RQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGByZWplY3RQcm9t
aXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3QgYHByb21pc2VgIHdpdGggYHJg
IGByYCBpcyBhbiBlcnJvciBgdGhlbmAgY2FsbHMgYHJlamVjdFByb21pc2VgIHN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMjogSWYvd2hlbiBgcmVqZWN0UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggcmVhc29uIGBy
YCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGByYCBgcmAgaXMgYW4gZXJyb3IgYHRoZW5gIGNhbGxz
IGByZWplY3RQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxs
ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRo
IGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNv
bmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMjogSWYvd2hlbiBgcmVqZWN0UHJv
bWlzZWAgaXMgY2FsbGVkIHdpdGggcmVhc29uIGByYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGBy
YCBgcmAgaXMgYW4gZXJyb3IgYHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBhc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVu
YCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1l
bnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAg
Mi4zLjMuMy4yOiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24g
YHJgLCByZWplY3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBhbiBlcnJvciB3aXRob3V0IGEg
c3RhY2sgYHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1
cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4
YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0
aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQ
cm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4yOiBJ
Zi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3Qg
YHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBhbiBlcnJvciB3aXRob3V0IGEgc3RhY2sgYHRoZW5g
IGNhbGxzIGByZWplY3RQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJl
amVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQg
d2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQg
c2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3doZW4gYHJlamVj
dFByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0
aCBgcmAgYHJgIGlzIGFuIGVycm9yIHdpdGhvdXQgYSBzdGFjayBgdGhlbmAgY2FsbHMgYHJlamVj
dFByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBp
cyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBp
cyBhbiBlcnJvciB3aXRob3V0IGEgc3RhY2sgYHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBh
c3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6
IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmly
c3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0
UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCByZWFzb24gYHJgLCByZWplY3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBhIGRhdGUgYHRo
ZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxs
IGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwg
YW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGBy
ZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3QgYHByb21pc2Vg
IHdpdGggYHJgIGByYCBpcyBhIGRhdGUgYHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBzeW5j
aHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6
IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYg
YHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBh
cmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9t
aXNlYCAyLjMuMy4zLjI6IElmL3doZW4gYHJlamVjdFByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHJl
YXNvbiBgcmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgcmAgYHJgIGlzIGEgZGF0ZSBgdGhlbmAg
Y2FsbHMgYHJlamVjdFByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1
bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGByZWpl
Y3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3QgYHByb21pc2VgIHdp
dGggYHJgIGByYCBpcyBhIGRhdGUgYHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBhc3luY2hy
b25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4yOiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFz
b24gYHJgLCByZWplY3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBhbiBvYmplY3QgYHRoZW5g
IGNhbGxzIGByZWplY3RQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1
bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0
IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5k
IHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGByZWpl
Y3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3QgYHByb21pc2VgIHdp
dGggYHJgIGByYCBpcyBhbiBvYmplY3QgYHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBzeW5j
aHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6
IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYg
YHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBh
cmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9t
aXNlYCAyLjMuMy4zLjI6IElmL3doZW4gYHJlamVjdFByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHJl
YXNvbiBgcmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgcmAgYHJgIGlzIGFuIG9iamVjdCBgdGhl
bmAgY2FsbHMgYHJlamVjdFByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxs
IGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwg
YW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGBy
ZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3QgYHByb21pc2Vg
IHdpdGggYHJgIGByYCBpcyBhbiBvYmplY3QgYHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBh
c3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6
IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmly
c3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0
UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCByZWFzb24gYHJgLCByZWplY3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBhbiBhbHdheXMt
cGVuZGluZyB0aGVuYWJsZSBgdGhlbmAgY2FsbHMgYHJlamVjdFByb21pc2VgIHN5bmNocm9ub3Vz
bHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5g
IGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVu
dCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAy
LjMuMy4zLjI6IElmL3doZW4gYHJlamVjdFByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBg
cmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgcmAgYHJgIGlzIGFuIGFsd2F5cy1wZW5kaW5nIHRo
ZW5hYmxlIGB0aGVuYCBjYWxscyBgcmVqZWN0UHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEgcmV0
dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4
YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0
aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQ
cm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4yOiBJ
Zi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3Qg
YHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBhbiBhbHdheXMtcGVuZGluZyB0aGVuYWJsZSBgdGhl
bmAgY2FsbHMgYHJlamVjdFByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxs
IGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwg
YW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGBy
ZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3QgYHByb21pc2Vg
IHdpdGggYHJgIGByYCBpcyBhbiBhbHdheXMtcGVuZGluZyB0aGVuYWJsZSBgdGhlbmAgY2FsbHMg
YHJlamVjdFByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVk
IHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25k
IGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3doZW4gYHJlamVjdFByb21p
c2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgcmAg
YHJgIGlzIGEgZnVsZmlsbGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBz
eW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6
IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmly
c3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0
UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0
aCByZWFzb24gYHJgLCByZWplY3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBhIGZ1bGZpbGxl
ZCBwcm9taXNlIGB0aGVuYCBjYWxscyBgcmVqZWN0UHJvbWlzZWAgc3luY2hyb25vdXNseSB2aWEg
cmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlm
IGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1
bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29s
dmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4y
OiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWpl
Y3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBhIGZ1bGZpbGxlZCBwcm9taXNlIGB0aGVuYCBj
YWxscyBgcmVqZWN0UHJvbWlzZWAgYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVs
ZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQg
d2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQg
c2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3doZW4gYHJlamVj
dFByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJvbWlzZWAgd2l0
aCBgcmAgYHJgIGlzIGEgZnVsZmlsbGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZWplY3RQcm9t
aXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQ
QVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIu
My4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlz
YCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBg
cmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxs
ZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBhIHJl
amVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBzeW5jaHJvbm91c2x5
IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4z
LjMuMy4yOiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJg
LCByZWplY3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBhIHJlamVjdGVkIHByb21pc2UgYHRo
ZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjI6IElmL3doZW4gYHJl
amVjdFByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHJlYXNvbiBgcmAsIHJlamVjdCBgcHJvbWlzZWAg
d2l0aCBgcmAgYHJgIGlzIGEgcmVqZWN0ZWQgcHJvbWlzZSBgdGhlbmAgY2FsbHMgYHJlamVjdFBy
b21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNl
CitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24s
IDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0
aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVu
dCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4yOiBJZi93aGVuIGByZWplY3RQcm9taXNlYCBpcyBj
YWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3QgYHByb21pc2VgIHdpdGggYHJgIGByYCBpcyBh
IHJlamVjdGVkIHByb21pc2UgYHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBhc3luY2hyb25v
dXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVu
YCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1l
bnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAg
Mi4zLjMuMy4zOiBJZiBib3RoIGByZXNvbHZlUHJvbWlzZWAgYW5kIGByZWplY3RQcm9taXNlYCBh
cmUgY2FsbGVkLCBvciBtdWx0aXBsZSBjYWxscyB0byB0aGUgc2FtZSBhcmd1bWVudCBhcmUgbWFk
ZSwgdGhlIGZpcnN0IGNhbGwgdGFrZXMgcHJlY2VkZW5jZSwgYW5kIGFueSBmdXJ0aGVyIGNhbGxz
IGFyZSBpZ25vcmVkLiBjYWxsaW5nIGByZXNvbHZlUHJvbWlzZWAgdGhlbiBgcmVqZWN0UHJvbWlz
ZWAsIGJvdGggc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMzogSWYgYm90aCBgcmVzb2x2ZVByb21pc2VgIGFu
ZCBgcmVqZWN0UHJvbWlzZWAgYXJlIGNhbGxlZCwgb3IgbXVsdGlwbGUgY2FsbHMgdG8gdGhlIHNh
bWUgYXJndW1lbnQgYXJlIG1hZGUsIHRoZSBmaXJzdCBjYWxsIHRha2VzIHByZWNlZGVuY2UsIGFu
ZCBhbnkgZnVydGhlciBjYWxscyBhcmUgaWdub3JlZC4gY2FsbGluZyBgcmVzb2x2ZVByb21pc2Vg
IHRoZW4gYHJlamVjdFByb21pc2VgLCBib3RoIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9t
IGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4g
b2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2Fs
bCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAs
IGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMzogSWYgYm90aCBg
cmVzb2x2ZVByb21pc2VgIGFuZCBgcmVqZWN0UHJvbWlzZWAgYXJlIGNhbGxlZCwgb3IgbXVsdGlw
bGUgY2FsbHMgdG8gdGhlIHNhbWUgYXJndW1lbnQgYXJlIG1hZGUsIHRoZSBmaXJzdCBjYWxsIHRh
a2VzIHByZWNlZGVuY2UsIGFuZCBhbnkgZnVydGhlciBjYWxscyBhcmUgaWdub3JlZC4gY2FsbGlu
ZyBgcmVzb2x2ZVByb21pc2VgIHN5bmNocm9ub3VzbHkgdGhlbiBgcmVqZWN0UHJvbWlzZWAgYXN5
bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4z
LjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzog
SWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJz
dCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQ
cm9taXNlYCAyLjMuMy4zLjM6IElmIGJvdGggYHJlc29sdmVQcm9taXNlYCBhbmQgYHJlamVjdFBy
b21pc2VgIGFyZSBjYWxsZWQsIG9yIG11bHRpcGxlIGNhbGxzIHRvIHRoZSBzYW1lIGFyZ3VtZW50
IGFyZSBtYWRlLCB0aGUgZmlyc3QgY2FsbCB0YWtlcyBwcmVjZWRlbmNlLCBhbmQgYW55IGZ1cnRo
ZXIgY2FsbHMgYXJlIGlnbm9yZWQuIGNhbGxpbmcgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91
c2x5IHRoZW4gYHJlamVjdFByb21pc2VgIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBh
IHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9i
amVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwg
aXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBh
bmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjM6IElmIGJvdGggYHJl
c29sdmVQcm9taXNlYCBhbmQgYHJlamVjdFByb21pc2VgIGFyZSBjYWxsZWQsIG9yIG11bHRpcGxl
IGNhbGxzIHRvIHRoZSBzYW1lIGFyZ3VtZW50IGFyZSBtYWRlLCB0aGUgZmlyc3QgY2FsbCB0YWtl
cyBwcmVjZWRlbmNlLCBhbmQgYW55IGZ1cnRoZXIgY2FsbHMgYXJlIGlnbm9yZWQuIGNhbGxpbmcg
YHJlc29sdmVQcm9taXNlYCB0aGVuIGByZWplY3RQcm9taXNlYCwgYm90aCBhc3luY2hyb25vdXNs
eSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuMzogSWYgYm90aCBgcmVzb2x2ZVByb21pc2VgIGFuZCBgcmVqZWN0UHJvbWlzZWAgYXJl
IGNhbGxlZCwgb3IgbXVsdGlwbGUgY2FsbHMgdG8gdGhlIHNhbWUgYXJndW1lbnQgYXJlIG1hZGUs
IHRoZSBmaXJzdCBjYWxsIHRha2VzIHByZWNlZGVuY2UsIGFuZCBhbnkgZnVydGhlciBjYWxscyBh
cmUgaWdub3JlZC4gY2FsbGluZyBgcmVzb2x2ZVByb21pc2VgIHRoZW4gYHJlamVjdFByb21pc2Vg
LCBib3RoIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjM6IElmIGJvdGggYHJlc29sdmVQcm9taXNlYCBhbmQg
YHJlamVjdFByb21pc2VgIGFyZSBjYWxsZWQsIG9yIG11bHRpcGxlIGNhbGxzIHRvIHRoZSBzYW1l
IGFyZ3VtZW50IGFyZSBtYWRlLCB0aGUgZmlyc3QgY2FsbCB0YWtlcyBwcmVjZWRlbmNlLCBhbmQg
YW55IGZ1cnRoZXIgY2FsbHMgYXJlIGlnbm9yZWQuIGNhbGxpbmcgYHJlc29sdmVQcm9taXNlYCB3
aXRoIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBwcm9taXNlLCB0aGVuIGNhbGxpbmcgYHJl
amVjdFByb21pc2VgLCBib3RoIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmls
bGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjM6IElmIGJvdGggYHJlc29sdmVQ
cm9taXNlYCBhbmQgYHJlamVjdFByb21pc2VgIGFyZSBjYWxsZWQsIG9yIG11bHRpcGxlIGNhbGxz
IHRvIHRoZSBzYW1lIGFyZ3VtZW50IGFyZSBtYWRlLCB0aGUgZmlyc3QgY2FsbCB0YWtlcyBwcmVj
ZWRlbmNlLCBhbmQgYW55IGZ1cnRoZXIgY2FsbHMgYXJlIGlnbm9yZWQuIGNhbGxpbmcgYHJlc29s
dmVQcm9taXNlYCB3aXRoIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBwcm9taXNlLCB0aGVu
IGNhbGxpbmcgYHJlamVjdFByb21pc2VgLCBib3RoIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBm
cm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMg
YW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwg
Y2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlz
ZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMzogSWYgYm90
aCBgcmVzb2x2ZVByb21pc2VgIGFuZCBgcmVqZWN0UHJvbWlzZWAgYXJlIGNhbGxlZCwgb3IgbXVs
dGlwbGUgY2FsbHMgdG8gdGhlIHNhbWUgYXJndW1lbnQgYXJlIG1hZGUsIHRoZSBmaXJzdCBjYWxs
IHRha2VzIHByZWNlZGVuY2UsIGFuZCBhbnkgZnVydGhlciBjYWxscyBhcmUgaWdub3JlZC4gY2Fs
bGluZyBgcmVzb2x2ZVByb21pc2VgIHdpdGggYW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgcHJv
bWlzZSwgdGhlbiBjYWxsaW5nIGByZWplY3RQcm9taXNlYCwgYm90aCBzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2Us
IGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBh
IGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJl
c29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMu
My4zOiBJZiBib3RoIGByZXNvbHZlUHJvbWlzZWAgYW5kIGByZWplY3RQcm9taXNlYCBhcmUgY2Fs
bGVkLCBvciBtdWx0aXBsZSBjYWxscyB0byB0aGUgc2FtZSBhcmd1bWVudCBhcmUgbWFkZSwgdGhl
IGZpcnN0IGNhbGwgdGFrZXMgcHJlY2VkZW5jZSwgYW5kIGFueSBmdXJ0aGVyIGNhbGxzIGFyZSBp
Z25vcmVkLiBjYWxsaW5nIGByZXNvbHZlUHJvbWlzZWAgd2l0aCBhbiBhc3luY2hyb25vdXNseS1y
ZWplY3RlZCBwcm9taXNlLCB0aGVuIGNhbGxpbmcgYHJlamVjdFByb21pc2VgLCBib3RoIHN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzog
T3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBg
dGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFy
Z3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21p
c2VgIDIuMy4zLjMuMzogSWYgYm90aCBgcmVzb2x2ZVByb21pc2VgIGFuZCBgcmVqZWN0UHJvbWlz
ZWAgYXJlIGNhbGxlZCwgb3IgbXVsdGlwbGUgY2FsbHMgdG8gdGhlIHNhbWUgYXJndW1lbnQgYXJl
IG1hZGUsIHRoZSBmaXJzdCBjYWxsIHRha2VzIHByZWNlZGVuY2UsIGFuZCBhbnkgZnVydGhlciBj
YWxscyBhcmUgaWdub3JlZC4gY2FsbGluZyBgcmVqZWN0UHJvbWlzZWAgdGhlbiBgcmVzb2x2ZVBy
b21pc2VgLCBib3RoIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjM6IElmIGJvdGggYHJlc29sdmVQcm9taXNl
YCBhbmQgYHJlamVjdFByb21pc2VgIGFyZSBjYWxsZWQsIG9yIG11bHRpcGxlIGNhbGxzIHRvIHRo
ZSBzYW1lIGFyZ3VtZW50IGFyZSBtYWRlLCB0aGUgZmlyc3QgY2FsbCB0YWtlcyBwcmVjZWRlbmNl
LCBhbmQgYW55IGZ1cnRoZXIgY2FsbHMgYXJlIGlnbm9yZWQuIGNhbGxpbmcgYHJlamVjdFByb21p
c2VgIHRoZW4gYHJlc29sdmVQcm9taXNlYCwgYm90aCBzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4g
ZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjM6IElmIGJv
dGggYHJlc29sdmVQcm9taXNlYCBhbmQgYHJlamVjdFByb21pc2VgIGFyZSBjYWxsZWQsIG9yIG11
bHRpcGxlIGNhbGxzIHRvIHRoZSBzYW1lIGFyZ3VtZW50IGFyZSBtYWRlLCB0aGUgZmlyc3QgY2Fs
bCB0YWtlcyBwcmVjZWRlbmNlLCBhbmQgYW55IGZ1cnRoZXIgY2FsbHMgYXJlIGlnbm9yZWQuIGNh
bGxpbmcgYHJlamVjdFByb21pc2VgIHN5bmNocm9ub3VzbHkgdGhlbiBgcmVzb2x2ZVByb21pc2Vg
IGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4zOiBJZiBib3RoIGByZXNvbHZlUHJvbWlzZWAgYW5kIGByZWpl
Y3RQcm9taXNlYCBhcmUgY2FsbGVkLCBvciBtdWx0aXBsZSBjYWxscyB0byB0aGUgc2FtZSBhcmd1
bWVudCBhcmUgbWFkZSwgdGhlIGZpcnN0IGNhbGwgdGFrZXMgcHJlY2VkZW5jZSwgYW5kIGFueSBm
dXJ0aGVyIGNhbGxzIGFyZSBpZ25vcmVkLiBjYWxsaW5nIGByZWplY3RQcm9taXNlYCBzeW5jaHJv
bm91c2x5IHRoZW4gYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZy
b20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4zOiBJZiBib3Ro
IGByZXNvbHZlUHJvbWlzZWAgYW5kIGByZWplY3RQcm9taXNlYCBhcmUgY2FsbGVkLCBvciBtdWx0
aXBsZSBjYWxscyB0byB0aGUgc2FtZSBhcmd1bWVudCBhcmUgbWFkZSwgdGhlIGZpcnN0IGNhbGwg
dGFrZXMgcHJlY2VkZW5jZSwgYW5kIGFueSBmdXJ0aGVyIGNhbGxzIGFyZSBpZ25vcmVkLiBjYWxs
aW5nIGByZWplY3RQcm9taXNlYCB0aGVuIGByZXNvbHZlUHJvbWlzZWAsIGJvdGggYXN5bmNocm9u
b3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90
aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRo
ZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1
bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNl
YCAyLjMuMy4zLjM6IElmIGJvdGggYHJlc29sdmVQcm9taXNlYCBhbmQgYHJlamVjdFByb21pc2Vg
IGFyZSBjYWxsZWQsIG9yIG11bHRpcGxlIGNhbGxzIHRvIHRoZSBzYW1lIGFyZ3VtZW50IGFyZSBt
YWRlLCB0aGUgZmlyc3QgY2FsbCB0YWtlcyBwcmVjZWRlbmNlLCBhbmQgYW55IGZ1cnRoZXIgY2Fs
bHMgYXJlIGlnbm9yZWQuIGNhbGxpbmcgYHJlamVjdFByb21pc2VgIHRoZW4gYHJlc29sdmVQcm9t
aXNlYCwgYm90aCBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9t
aXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFz
IGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1
bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy4zOiBJZiBib3RoIGByZXNvbHZlUHJvbWlzZWAg
YW5kIGByZWplY3RQcm9taXNlYCBhcmUgY2FsbGVkLCBvciBtdWx0aXBsZSBjYWxscyB0byB0aGUg
c2FtZSBhcmd1bWVudCBhcmUgbWFkZSwgdGhlIGZpcnN0IGNhbGwgdGFrZXMgcHJlY2VkZW5jZSwg
YW5kIGFueSBmdXJ0aGVyIGNhbGxzIGFyZSBpZ25vcmVkLiBjYWxsaW5nIGByZXNvbHZlUHJvbWlz
ZWAgdHdpY2Ugc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMzogSWYgYm90aCBgcmVzb2x2ZVByb21pc2VgIGFu
ZCBgcmVqZWN0UHJvbWlzZWAgYXJlIGNhbGxlZCwgb3IgbXVsdGlwbGUgY2FsbHMgdG8gdGhlIHNh
bWUgYXJndW1lbnQgYXJlIG1hZGUsIHRoZSBmaXJzdCBjYWxsIHRha2VzIHByZWNlZGVuY2UsIGFu
ZCBhbnkgZnVydGhlciBjYWxscyBhcmUgaWdub3JlZC4gY2FsbGluZyBgcmVzb2x2ZVByb21pc2Vg
IHR3aWNlIHN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhp
c2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQg
YHJlamVjdFByb21pc2VgIDIuMy4zLjMuMzogSWYgYm90aCBgcmVzb2x2ZVByb21pc2VgIGFuZCBg
cmVqZWN0UHJvbWlzZWAgYXJlIGNhbGxlZCwgb3IgbXVsdGlwbGUgY2FsbHMgdG8gdGhlIHNhbWUg
YXJndW1lbnQgYXJlIG1hZGUsIHRoZSBmaXJzdCBjYWxsIHRha2VzIHByZWNlZGVuY2UsIGFuZCBh
bnkgZnVydGhlciBjYWxscyBhcmUgaWdub3JlZC4gY2FsbGluZyBgcmVzb2x2ZVByb21pc2VgIHR3
aWNlLCBmaXJzdCBzeW5jaHJvbm91c2x5IHRoZW4gYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBm
cm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjM6IElmIGJv
dGggYHJlc29sdmVQcm9taXNlYCBhbmQgYHJlamVjdFByb21pc2VgIGFyZSBjYWxsZWQsIG9yIG11
bHRpcGxlIGNhbGxzIHRvIHRoZSBzYW1lIGFyZ3VtZW50IGFyZSBtYWRlLCB0aGUgZmlyc3QgY2Fs
bCB0YWtlcyBwcmVjZWRlbmNlLCBhbmQgYW55IGZ1cnRoZXIgY2FsbHMgYXJlIGlnbm9yZWQuIGNh
bGxpbmcgYHJlc29sdmVQcm9taXNlYCB0d2ljZSwgZmlyc3Qgc3luY2hyb25vdXNseSB0aGVuIGFz
eW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4z
LjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzog
SWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJz
dCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQ
cm9taXNlYCAyLjMuMy4zLjM6IElmIGJvdGggYHJlc29sdmVQcm9taXNlYCBhbmQgYHJlamVjdFBy
b21pc2VgIGFyZSBjYWxsZWQsIG9yIG11bHRpcGxlIGNhbGxzIHRvIHRoZSBzYW1lIGFyZ3VtZW50
IGFyZSBtYWRlLCB0aGUgZmlyc3QgY2FsbCB0YWtlcyBwcmVjZWRlbmNlLCBhbmQgYW55IGZ1cnRo
ZXIgY2FsbHMgYXJlIGlnbm9yZWQuIGNhbGxpbmcgYHJlc29sdmVQcm9taXNlYCB0d2ljZSwgYm90
aCB0aW1lcyBhc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlz
ZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBg
dGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1l
bnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMzogSWYgYm90aCBgcmVzb2x2ZVByb21pc2VgIGFu
ZCBgcmVqZWN0UHJvbWlzZWAgYXJlIGNhbGxlZCwgb3IgbXVsdGlwbGUgY2FsbHMgdG8gdGhlIHNh
bWUgYXJndW1lbnQgYXJlIG1hZGUsIHRoZSBmaXJzdCBjYWxsIHRha2VzIHByZWNlZGVuY2UsIGFu
ZCBhbnkgZnVydGhlciBjYWxscyBhcmUgaWdub3JlZC4gY2FsbGluZyBgcmVzb2x2ZVByb21pc2Vg
IHR3aWNlLCBib3RoIHRpbWVzIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVj
dGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjM6IElmIGJvdGggYHJlc29sdmVQ
cm9taXNlYCBhbmQgYHJlamVjdFByb21pc2VgIGFyZSBjYWxsZWQsIG9yIG11bHRpcGxlIGNhbGxz
IHRvIHRoZSBzYW1lIGFyZ3VtZW50IGFyZSBtYWRlLCB0aGUgZmlyc3QgY2FsbCB0YWtlcyBwcmVj
ZWRlbmNlLCBhbmQgYW55IGZ1cnRoZXIgY2FsbHMgYXJlIGlnbm9yZWQuIGNhbGxpbmcgYHJlc29s
dmVQcm9taXNlYCB3aXRoIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBwcm9taXNlLCB0aGVu
IGNhbGxpbmcgaXQgYWdhaW4sIGJvdGggdGltZXMgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZy
b20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMg
YW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwg
Y2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlz
ZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuMzogSWYgYm90
aCBgcmVzb2x2ZVByb21pc2VgIGFuZCBgcmVqZWN0UHJvbWlzZWAgYXJlIGNhbGxlZCwgb3IgbXVs
dGlwbGUgY2FsbHMgdG8gdGhlIHNhbWUgYXJndW1lbnQgYXJlIG1hZGUsIHRoZSBmaXJzdCBjYWxs
IHRha2VzIHByZWNlZGVuY2UsIGFuZCBhbnkgZnVydGhlciBjYWxscyBhcmUgaWdub3JlZC4gY2Fs
bGluZyBgcmVzb2x2ZVByb21pc2VgIHdpdGggYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIHBy
b21pc2UsIHRoZW4gY2FsbGluZyBpdCBhZ2FpbiwgYm90aCB0aW1lcyBzeW5jaHJvbm91c2x5IHZp
YSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjM6IElmIGJvdGggYHJlc29sdmVQcm9taXNlYCBhbmQgYHJlamVjdFByb21pc2VgIGFyZSBjYWxs
ZWQsIG9yIG11bHRpcGxlIGNhbGxzIHRvIHRoZSBzYW1lIGFyZ3VtZW50IGFyZSBtYWRlLCB0aGUg
Zmlyc3QgY2FsbCB0YWtlcyBwcmVjZWRlbmNlLCBhbmQgYW55IGZ1cnRoZXIgY2FsbHMgYXJlIGln
bm9yZWQuIGNhbGxpbmcgYHJlc29sdmVQcm9taXNlYCB3aXRoIGFuIGFzeW5jaHJvbm91c2x5LXJl
amVjdGVkIHByb21pc2UsIHRoZW4gY2FsbGluZyBpdCBhZ2FpbiwgYm90aCB0aW1lcyBzeW5jaHJv
bm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBP
dGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0
aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJn
dW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlz
ZWAgMi4zLjMuMy4zOiBJZiBib3RoIGByZXNvbHZlUHJvbWlzZWAgYW5kIGByZWplY3RQcm9taXNl
YCBhcmUgY2FsbGVkLCBvciBtdWx0aXBsZSBjYWxscyB0byB0aGUgc2FtZSBhcmd1bWVudCBhcmUg
bWFkZSwgdGhlIGZpcnN0IGNhbGwgdGFrZXMgcHJlY2VkZW5jZSwgYW5kIGFueSBmdXJ0aGVyIGNh
bGxzIGFyZSBpZ25vcmVkLiBjYWxsaW5nIGByZXNvbHZlUHJvbWlzZWAgd2l0aCBhbiBhc3luY2hy
b25vdXNseS1yZWplY3RlZCBwcm9taXNlLCB0aGVuIGNhbGxpbmcgaXQgYWdhaW4sIGJvdGggdGlt
ZXMgc3luY2hyb25vdXNseSB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNT
IDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4z
LjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwg
Zmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVq
ZWN0UHJvbWlzZWAgMi4zLjMuMy4zOiBJZiBib3RoIGByZXNvbHZlUHJvbWlzZWAgYW5kIGByZWpl
Y3RQcm9taXNlYCBhcmUgY2FsbGVkLCBvciBtdWx0aXBsZSBjYWxscyB0byB0aGUgc2FtZSBhcmd1
bWVudCBhcmUgbWFkZSwgdGhlIGZpcnN0IGNhbGwgdGFrZXMgcHJlY2VkZW5jZSwgYW5kIGFueSBm
dXJ0aGVyIGNhbGxzIGFyZSBpZ25vcmVkLiBjYWxsaW5nIGByZWplY3RQcm9taXNlYCB0d2ljZSBz
eW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIu
My4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6
IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmly
c3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0
UHJvbWlzZWAgMi4zLjMuMy4zOiBJZiBib3RoIGByZXNvbHZlUHJvbWlzZWAgYW5kIGByZWplY3RQ
cm9taXNlYCBhcmUgY2FsbGVkLCBvciBtdWx0aXBsZSBjYWxscyB0byB0aGUgc2FtZSBhcmd1bWVu
dCBhcmUgbWFkZSwgdGhlIGZpcnN0IGNhbGwgdGFrZXMgcHJlY2VkZW5jZSwgYW5kIGFueSBmdXJ0
aGVyIGNhbGxzIGFyZSBpZ25vcmVkLiBjYWxsaW5nIGByZWplY3RQcm9taXNlYCB0d2ljZSBzeW5j
aHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6
IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYg
YHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBh
cmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9t
aXNlYCAyLjMuMy4zLjM6IElmIGJvdGggYHJlc29sdmVQcm9taXNlYCBhbmQgYHJlamVjdFByb21p
c2VgIGFyZSBjYWxsZWQsIG9yIG11bHRpcGxlIGNhbGxzIHRvIHRoZSBzYW1lIGFyZ3VtZW50IGFy
ZSBtYWRlLCB0aGUgZmlyc3QgY2FsbCB0YWtlcyBwcmVjZWRlbmNlLCBhbmQgYW55IGZ1cnRoZXIg
Y2FsbHMgYXJlIGlnbm9yZWQuIGNhbGxpbmcgYHJlamVjdFByb21pc2VgIHR3aWNlLCBmaXJzdCBz
eW5jaHJvbm91c2x5IHRoZW4gYXN5bmNocm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmls
bGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0
aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vj
b25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjM6IElmIGJvdGggYHJlc29sdmVQ
cm9taXNlYCBhbmQgYHJlamVjdFByb21pc2VgIGFyZSBjYWxsZWQsIG9yIG11bHRpcGxlIGNhbGxz
IHRvIHRoZSBzYW1lIGFyZ3VtZW50IGFyZSBtYWRlLCB0aGUgZmlyc3QgY2FsbCB0YWtlcyBwcmVj
ZWRlbmNlLCBhbmQgYW55IGZ1cnRoZXIgY2FsbHMgYXJlIGlnbm9yZWQuIGNhbGxpbmcgYHJlamVj
dFByb21pc2VgIHR3aWNlLCBmaXJzdCBzeW5jaHJvbm91c2x5IHRoZW4gYXN5bmNocm9ub3VzbHkg
dmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNl
LCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMg
YSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGBy
ZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4z
LjMuMzogSWYgYm90aCBgcmVzb2x2ZVByb21pc2VgIGFuZCBgcmVqZWN0UHJvbWlzZWAgYXJlIGNh
bGxlZCwgb3IgbXVsdGlwbGUgY2FsbHMgdG8gdGhlIHNhbWUgYXJndW1lbnQgYXJlIG1hZGUsIHRo
ZSBmaXJzdCBjYWxsIHRha2VzIHByZWNlZGVuY2UsIGFuZCBhbnkgZnVydGhlciBjYWxscyBhcmUg
aWdub3JlZC4gY2FsbGluZyBgcmVqZWN0UHJvbWlzZWAgdHdpY2UsIGJvdGggdGltZXMgYXN5bmNo
cm9ub3VzbHkgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6
IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYg
YHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBh
cmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9t
aXNlYCAyLjMuMy4zLjM6IElmIGJvdGggYHJlc29sdmVQcm9taXNlYCBhbmQgYHJlamVjdFByb21p
c2VgIGFyZSBjYWxsZWQsIG9yIG11bHRpcGxlIGNhbGxzIHRvIHRoZSBzYW1lIGFyZ3VtZW50IGFy
ZSBtYWRlLCB0aGUgZmlyc3QgY2FsbCB0YWtlcyBwcmVjZWRlbmNlLCBhbmQgYW55IGZ1cnRoZXIg
Y2FsbHMgYXJlIGlnbm9yZWQuIGNhbGxpbmcgYHJlamVjdFByb21pc2VgIHR3aWNlLCBib3RoIHRp
bWVzIGFzeW5jaHJvbm91c2x5IHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BB
U1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4z
LjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNg
LCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGBy
ZWplY3RQcm9taXNlYCAyLjMuMy4zLjM6IElmIGJvdGggYHJlc29sdmVQcm9taXNlYCBhbmQgYHJl
amVjdFByb21pc2VgIGFyZSBjYWxsZWQsIG9yIG11bHRpcGxlIGNhbGxzIHRvIHRoZSBzYW1lIGFy
Z3VtZW50IGFyZSBtYWRlLCB0aGUgZmlyc3QgY2FsbCB0YWtlcyBwcmVjZWRlbmNlLCBhbmQgYW55
IGZ1cnRoZXIgY2FsbHMgYXJlIGlnbm9yZWQuIHNhdmluZyBhbmQgYWJ1c2luZyBgcmVzb2x2ZVBy
b21pc2VgIGFuZCBgcmVqZWN0UHJvbWlzZWAgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHBy
b21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAg
YXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFy
Z3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjM6IElmIGJvdGggYHJlc29sdmVQcm9taXNl
YCBhbmQgYHJlamVjdFByb21pc2VgIGFyZSBjYWxsZWQsIG9yIG11bHRpcGxlIGNhbGxzIHRvIHRo
ZSBzYW1lIGFyZ3VtZW50IGFyZSBtYWRlLCB0aGUgZmlyc3QgY2FsbCB0YWtlcyBwcmVjZWRlbmNl
LCBhbmQgYW55IGZ1cnRoZXIgY2FsbHMgYXJlIGlnbm9yZWQuIHNhdmluZyBhbmQgYWJ1c2luZyBg
cmVzb2x2ZVByb21pc2VgIGFuZCBgcmVqZWN0UHJvbWlzZWAgdmlhIHJldHVybiBmcm9tIGEgcmVq
ZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0
IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3
aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBz
ZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuNDogSWYgY2FsbGluZyBgdGhl
bmAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIDIuMy4zLjMuNC4xOiBJZiBgcmVzb2x2ZVByb21p
c2VgIG9yIGByZWplY3RQcm9taXNlYCBoYXZlIGJlZW4gY2FsbGVkLCBpZ25vcmUgaXQuIGByZXNv
bHZlUHJvbWlzZWAgd2FzIGNhbGxlZCB3aXRoIGEgbm9uLXRoZW5hYmxlIHZpYSByZXR1cm4gZnJv
bSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBj
YWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNl
YCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy40OiBJZiBjYWxs
aW5nIGB0aGVuYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgMi4zLjMuMy40LjE6IElmIGByZXNv
bHZlUHJvbWlzZWAgb3IgYHJlamVjdFByb21pc2VgIGhhdmUgYmVlbiBjYWxsZWQsIGlnbm9yZSBp
dC4gYHJlc29sdmVQcm9taXNlYCB3YXMgY2FsbGVkIHdpdGggYSBub24tdGhlbmFibGUgdmlhIHJl
dHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuNDog
SWYgY2FsbGluZyBgdGhlbmAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIDIuMy4zLjMuNC4xOiBJ
ZiBgcmVzb2x2ZVByb21pc2VgIG9yIGByZWplY3RQcm9taXNlYCBoYXZlIGJlZW4gY2FsbGVkLCBp
Z25vcmUgaXQuIGByZXNvbHZlUHJvbWlzZWAgd2FzIGNhbGxlZCB3aXRoIGFuIGFzeW5jaHJvbm91
c2x5LWZ1bGZpbGxlZCBwcm9taXNlIHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNl
CitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24s
IDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0
aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVu
dCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy40OiBJZiBjYWxsaW5nIGB0aGVuYCB0aHJvd3MgYW4g
ZXhjZXB0aW9uIGBlYCwgMi4zLjMuMy40LjE6IElmIGByZXNvbHZlUHJvbWlzZWAgb3IgYHJlamVj
dFByb21pc2VgIGhhdmUgYmVlbiBjYWxsZWQsIGlnbm9yZSBpdC4gYHJlc29sdmVQcm9taXNlYCB3
YXMgY2FsbGVkIHdpdGggYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIHByb21pc2UgdmlhIHJl
dHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuNDog
SWYgY2FsbGluZyBgdGhlbmAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIDIuMy4zLjMuNC4xOiBJ
ZiBgcmVzb2x2ZVByb21pc2VgIG9yIGByZWplY3RQcm9taXNlYCBoYXZlIGJlZW4gY2FsbGVkLCBp
Z25vcmUgaXQuIGByZXNvbHZlUHJvbWlzZWAgd2FzIGNhbGxlZCB3aXRoIGFuIGFzeW5jaHJvbm91
c2x5LXJlamVjdGVkIHByb21pc2UgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjQ6IElmIGNhbGxpbmcgYHRoZW5gIHRocm93cyBhbiBl
eGNlcHRpb24gYGVgLCAyLjMuMy4zLjQuMTogSWYgYHJlc29sdmVQcm9taXNlYCBvciBgcmVqZWN0
UHJvbWlzZWAgaGF2ZSBiZWVuIGNhbGxlZCwgaWdub3JlIGl0LiBgcmVzb2x2ZVByb21pc2VgIHdh
cyBjYWxsZWQgd2l0aCBhbiBhc3luY2hyb25vdXNseS1yZWplY3RlZCBwcm9taXNlIHZpYSByZXR1
cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhg
IGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rp
b24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVBy
b21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjQ6IElm
IGNhbGxpbmcgYHRoZW5gIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCAyLjMuMy4zLjQuMTogSWYg
YHJlc29sdmVQcm9taXNlYCBvciBgcmVqZWN0UHJvbWlzZWAgaGF2ZSBiZWVuIGNhbGxlZCwgaWdu
b3JlIGl0LiBgcmVqZWN0UHJvbWlzZWAgd2FzIGNhbGxlZCB2aWEgcmV0dXJuIGZyb20gYSBmdWxm
aWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0
IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3
aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBz
ZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuNDogSWYgY2FsbGluZyBgdGhl
bmAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIDIuMy4zLjMuNC4xOiBJZiBgcmVzb2x2ZVByb21p
c2VgIG9yIGByZWplY3RQcm9taXNlYCBoYXZlIGJlZW4gY2FsbGVkLCBpZ25vcmUgaXQuIGByZWpl
Y3RQcm9taXNlYCB3YXMgY2FsbGVkIHZpYSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UK
K1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
Mi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRo
aXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50
IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjQ6IElmIGNhbGxpbmcgYHRoZW5gIHRocm93cyBhbiBl
eGNlcHRpb24gYGVgLCAyLjMuMy4zLjQuMTogSWYgYHJlc29sdmVQcm9taXNlYCBvciBgcmVqZWN0
UHJvbWlzZWAgaGF2ZSBiZWVuIGNhbGxlZCwgaWdub3JlIGl0LiBgcmVzb2x2ZVByb21pc2VgIHRo
ZW4gYHJlamVjdFByb21pc2VgIHdlcmUgY2FsbGVkIHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxl
ZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3Ig
ZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGgg
YHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29u
ZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy40OiBJZiBjYWxsaW5nIGB0aGVuYCB0
aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgMi4zLjMuMy40LjE6IElmIGByZXNvbHZlUHJvbWlzZWAg
b3IgYHJlamVjdFByb21pc2VgIGhhdmUgYmVlbiBjYWxsZWQsIGlnbm9yZSBpdC4gYHJlc29sdmVQ
cm9taXNlYCB0aGVuIGByZWplY3RQcm9taXNlYCB3ZXJlIGNhbGxlZCB2aWEgcmV0dXJuIGZyb20g
YSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBv
YmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxs
IGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwg
YW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4zLjMuMy40OiBJZiBjYWxsaW5n
IGB0aGVuYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgMi4zLjMuMy40LjE6IElmIGByZXNvbHZl
UHJvbWlzZWAgb3IgYHJlamVjdFByb21pc2VgIGhhdmUgYmVlbiBjYWxsZWQsIGlnbm9yZSBpdC4g
YHJlamVjdFByb21pc2VgIHRoZW4gYHJlc29sdmVQcm9taXNlYCB3ZXJlIGNhbGxlZCB2aWEgcmV0
dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuNDog
SWYgY2FsbGluZyBgdGhlbmAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIDIuMy4zLjMuNC4xOiBJ
ZiBgcmVzb2x2ZVByb21pc2VgIG9yIGByZWplY3RQcm9taXNlYCBoYXZlIGJlZW4gY2FsbGVkLCBp
Z25vcmUgaXQuIGByZWplY3RQcm9taXNlYCB0aGVuIGByZXNvbHZlUHJvbWlzZWAgd2VyZSBjYWxs
ZWQgdmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3
aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAg
aXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50
IGByZXNvbHZlUHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIu
My4zLjMuNDogSWYgY2FsbGluZyBgdGhlbmAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIDIuMy4z
LjMuNC4yOiBPdGhlcndpc2UsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgZWAgYXMgdGhlIHJlYXNv
bi4gc3RyYWlnaHRmb3J3YXJkIGNhc2UgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21p
c2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlv
biwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMg
YHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3Vt
ZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjQ6IElmIGNhbGxpbmcgYHRoZW5gIHRocm93cyBh
biBleGNlcHRpb24gYGVgLCAyLjMuMy4zLjQuMjogT3RoZXJ3aXNlLCByZWplY3QgYHByb21pc2Vg
IHdpdGggYGVgIGFzIHRoZSByZWFzb24uIHN0cmFpZ2h0Zm9yd2FyZCBjYXNlIHZpYSByZXR1cm4g
ZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlz
IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24s
IGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21p
c2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4zLjQ6IElmIGNh
bGxpbmcgYHRoZW5gIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCAyLjMuMy4zLjQuMjogT3RoZXJ3
aXNlLCByZWplY3QgYHByb21pc2VgIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIGByZXNvbHZlUHJv
bWlzZWAgaXMgY2FsbGVkIGFzeW5jaHJvbm91c2x5IGJlZm9yZSB0aGUgYHRocm93YCB2aWEgcmV0
dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBg
eGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAyLjMuMy4zOiBJZiBgdGhlbmAgaXMgYSBmdW5j
dGlvbiwgY2FsbCBpdCB3aXRoIGB4YCBhcyBgdGhpc2AsIGZpcnN0IGFyZ3VtZW50IGByZXNvbHZl
UHJvbWlzZWAsIGFuZCBzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIDIuMy4zLjMuNDog
SWYgY2FsbGluZyBgdGhlbmAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIDIuMy4zLjMuNC4yOiBP
dGhlcndpc2UsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgZWAgYXMgdGhlIHJlYXNvbi4gYHJlc29s
dmVQcm9taXNlYCBpcyBjYWxsZWQgYXN5bmNocm9ub3VzbHkgYmVmb3JlIHRoZSBgdGhyb3dgIHZp
YSByZXR1cm4gZnJvbSBhIHJlamVjdGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwg
aWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEg
ZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBgeGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVz
b2x2ZVByb21pc2VgLCBhbmQgc2Vjb25kIGFyZ3VtZW50IGByZWplY3RQcm9taXNlYCAyLjMuMy4z
LjQ6IElmIGNhbGxpbmcgYHRoZW5gIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCAyLjMuMy4zLjQu
MjogT3RoZXJ3aXNlLCByZWplY3QgYHByb21pc2VgIHdpdGggYGVgIGFzIHRoZSByZWFzb24uIGBy
ZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgYXN5bmNocm9ub3VzbHkgYmVmb3JlIHRoZSBgdGhyb3dg
IHZpYSByZXR1cm4gZnJvbSBhIGZ1bGZpbGxlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjM6IElmIGB0aGVuYCBp
cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQg
YHJlc29sdmVQcm9taXNlYCwgYW5kIHNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAgMi4z
LjMuMy40OiBJZiBjYWxsaW5nIGB0aGVuYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgMi4zLjMu
My40LjI6IE90aGVyd2lzZSwgcmVqZWN0IGBwcm9taXNlYCB3aXRoIGBlYCBhcyB0aGUgcmVhc29u
LiBgcmVqZWN0UHJvbWlzZWAgaXMgY2FsbGVkIGFzeW5jaHJvbm91c2x5IGJlZm9yZSB0aGUgYHRo
cm93YCB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjQ6IElmIGB0aGVu
YCBpcyBub3QgYSBmdW5jdGlvbiwgZnVsZmlsbCBwcm9taXNlIHdpdGggYHhgIGB0aGVuYCBpcyBg
NWAgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVy
d2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuNDogSWYgYHRoZW5g
IGlzIG5vdCBhIGZ1bmN0aW9uLCBmdWxmaWxsIHByb21pc2Ugd2l0aCBgeGAgYHRoZW5gIGlzIGA1
YCB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhlcndp
c2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjQ6IElmIGB0aGVuYCBp
cyBub3QgYSBmdW5jdGlvbiwgZnVsZmlsbCBwcm9taXNlIHdpdGggYHhgIGB0aGVuYCBpcyBhbiBv
YmplY3QgdmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90
aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiwgMi4zLjMuNDogSWYgYHRo
ZW5gIGlzIG5vdCBhIGZ1bmN0aW9uLCBmdWxmaWxsIHByb21pc2Ugd2l0aCBgeGAgYHRoZW5gIGlz
IGFuIG9iamVjdCB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4z
OiBPdGhlcndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjQ6IElm
IGB0aGVuYCBpcyBub3QgYSBmdW5jdGlvbiwgZnVsZmlsbCBwcm9taXNlIHdpdGggYHhgIGB0aGVu
YCBpcyBhbiBhcnJheSBjb250YWluaW5nIGEgZnVuY3Rpb24gdmlhIHJldHVybiBmcm9tIGEgZnVs
ZmlsbGVkIHByb21pc2UKK1BBU1MgMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVj
dCBvciBmdW5jdGlvbiwgMi4zLjMuNDogSWYgYHRoZW5gIGlzIG5vdCBhIGZ1bmN0aW9uLCBmdWxm
aWxsIHByb21pc2Ugd2l0aCBgeGAgYHRoZW5gIGlzIGFuIGFycmF5IGNvbnRhaW5pbmcgYSBmdW5j
dGlvbiB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIDIuMy4zOiBPdGhl
cndpc2UsIGlmIGB4YCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIDIuMy4zLjQ6IElmIGB0aGVu
YCBpcyBub3QgYSBmdW5jdGlvbiwgZnVsZmlsbCBwcm9taXNlIHdpdGggYHhgIGB0aGVuYCBpcyBh
IHJlZ3VsYXIgZXhwcmVzc2lvbiB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy40OiBJZiBgdGhlbmAgaXMgbm90IGEgZnVuY3Rpb24sIGZ1bGZpbGwgcHJvbWlzZSB3aXRo
IGB4YCBgdGhlbmAgaXMgYSByZWd1bGFyIGV4cHJlc3Npb24gdmlhIHJldHVybiBmcm9tIGEgcmVq
ZWN0ZWQgcHJvbWlzZQorUEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0
IG9yIGZ1bmN0aW9uLCAyLjMuMy40OiBJZiBgdGhlbmAgaXMgbm90IGEgZnVuY3Rpb24sIGZ1bGZp
bGwgcHJvbWlzZSB3aXRoIGB4YCBgdGhlbmAgaXMgYW4gb2JqZWN0IGluaGVyaXRpbmcgZnJvbSBg
RnVuY3Rpb24ucHJvdG90eXBlYCB2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJvbWlzZQor
UEFTUyAyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCAy
LjMuMy40OiBJZiBgdGhlbmAgaXMgbm90IGEgZnVuY3Rpb24sIGZ1bGZpbGwgcHJvbWlzZSB3aXRo
IGB4YCBgdGhlbmAgaXMgYW4gb2JqZWN0IGluaGVyaXRpbmcgZnJvbSBgRnVuY3Rpb24ucHJvdG90
eXBlYCB2aWEgcmV0dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMtMi0zLTMuaHRtbCBiL0xheW91dFRl
c3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMy0zLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWYxOWViYTI4ZjI5NTM3NGJmYmI1OGIyMzljYzM5MzI5M2Q3ODJhYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLTItMy0z
Lmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2FkYXB0ZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlIHdpdGggUHJvbWlzZSBBKyB0
ZXN0cyAyLjMuMy4nKTsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9tb2NoYS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorbW9j
aGEuc2V0dXAoeworICAgIHVpOiAnYmRkJywKKyAgICByZXBvcnRlcjogTGF5b3V0VGVzdHNSZXBv
cnRlcgorfSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJwcm9taXNlcy10ZXN0cy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorcHJvbWlzZVRlc3RzLnRlc3RzMl8zXzMoKTsKK21vY2hhLnJ1bigp
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTMtNC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTMtNC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmRhN2MzMjNjNTJkMWUyODk1MWE2MDU1MmZiNzQ3YTk3OTUzYjY5MQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2Vz
LXRlc3RzLTItMy00LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUwIEBACitUZXN0IFByb21pc2Ug
d2l0aCBQcm9taXNlIEErIHRlc3RzIDIuMy40LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxm
aWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYHVuZGVmaW5lZGAgYWxyZWFkeS1m
dWxmaWxsZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9u
LCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYHVuZGVmaW5lZGAgaW1t
ZWRpYXRlbHktZnVsZmlsbGVkCitQQVNTIDIuMy40OiBJZiBgeGAgaXMgbm90IGFuIG9iamVjdCBv
ciBmdW5jdGlvbiwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCBgeGAgVGhlIHZhbHVlIGlzIGB1bmRl
ZmluZWRgIGV2ZW50dWFsbHktZnVsZmlsbGVkCitQQVNTIDIuMy40OiBJZiBgeGAgaXMgbm90IGFu
IG9iamVjdCBvciBmdW5jdGlvbiwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCBgeGAgVGhlIHZhbHVl
IGlzIGB1bmRlZmluZWRgIGFscmVhZHktcmVqZWN0ZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBu
b3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUg
dmFsdWUgaXMgYHVuZGVmaW5lZGAgaW1tZWRpYXRlbHktcmVqZWN0ZWQKK1BBU1MgMi4zLjQ6IElm
IGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRo
IGB4YCBUaGUgdmFsdWUgaXMgYHVuZGVmaW5lZGAgZXZlbnR1YWxseS1yZWplY3RlZAorUEFTUyAy
LjMuNDogSWYgYHhgIGlzIG5vdCBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIGZ1bGZpbGwgYHByb21p
c2VgIHdpdGggYHhgIFRoZSB2YWx1ZSBpcyBgbnVsbGAgYWxyZWFkeS1mdWxmaWxsZWQKK1BBU1Mg
Mi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9t
aXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYG51bGxgIGltbWVkaWF0ZWx5LWZ1bGZpbGxlZAor
UEFTUyAyLjMuNDogSWYgYHhgIGlzIG5vdCBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIGZ1bGZpbGwg
YHByb21pc2VgIHdpdGggYHhgIFRoZSB2YWx1ZSBpcyBgbnVsbGAgZXZlbnR1YWxseS1mdWxmaWxs
ZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxm
aWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYG51bGxgIGFscmVhZHktcmVqZWN0
ZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxm
aWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYG51bGxgIGltbWVkaWF0ZWx5LXJl
amVjdGVkCitQQVNTIDIuMy40OiBJZiBgeGAgaXMgbm90IGFuIG9iamVjdCBvciBmdW5jdGlvbiwg
ZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCBgeGAgVGhlIHZhbHVlIGlzIGBudWxsYCBldmVudHVhbGx5
LXJlamVjdGVkCitQQVNTIDIuMy40OiBJZiBgeGAgaXMgbm90IGFuIG9iamVjdCBvciBmdW5jdGlv
biwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCBgeGAgVGhlIHZhbHVlIGlzIGBmYWxzZWAgYWxyZWFk
eS1mdWxmaWxsZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0
aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYGZhbHNlYCBpbW1l
ZGlhdGVseS1mdWxmaWxsZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9y
IGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYGZhbHNl
YCBldmVudHVhbGx5LWZ1bGZpbGxlZAorUEFTUyAyLjMuNDogSWYgYHhgIGlzIG5vdCBhbiBvYmpl
Y3Qgb3IgZnVuY3Rpb24sIGZ1bGZpbGwgYHByb21pc2VgIHdpdGggYHhgIFRoZSB2YWx1ZSBpcyBg
ZmFsc2VgIGFscmVhZHktcmVqZWN0ZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMg
YGZhbHNlYCBpbW1lZGlhdGVseS1yZWplY3RlZAorUEFTUyAyLjMuNDogSWYgYHhgIGlzIG5vdCBh
biBvYmplY3Qgb3IgZnVuY3Rpb24sIGZ1bGZpbGwgYHByb21pc2VgIHdpdGggYHhgIFRoZSB2YWx1
ZSBpcyBgZmFsc2VgIGV2ZW50dWFsbHktcmVqZWN0ZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBu
b3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUg
dmFsdWUgaXMgYHRydWVgIGFscmVhZHktZnVsZmlsbGVkCitQQVNTIDIuMy40OiBJZiBgeGAgaXMg
bm90IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCBgeGAgVGhl
IHZhbHVlIGlzIGB0cnVlYCBpbW1lZGlhdGVseS1mdWxmaWxsZWQKK1BBU1MgMi4zLjQ6IElmIGB4
YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4
YCBUaGUgdmFsdWUgaXMgYHRydWVgIGV2ZW50dWFsbHktZnVsZmlsbGVkCitQQVNTIDIuMy40OiBJ
ZiBgeGAgaXMgbm90IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0
aCBgeGAgVGhlIHZhbHVlIGlzIGB0cnVlYCBhbHJlYWR5LXJlamVjdGVkCitQQVNTIDIuMy40OiBJ
ZiBgeGAgaXMgbm90IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0
aCBgeGAgVGhlIHZhbHVlIGlzIGB0cnVlYCBpbW1lZGlhdGVseS1yZWplY3RlZAorUEFTUyAyLjMu
NDogSWYgYHhgIGlzIG5vdCBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIGZ1bGZpbGwgYHByb21pc2Vg
IHdpdGggYHhgIFRoZSB2YWx1ZSBpcyBgdHJ1ZWAgZXZlbnR1YWxseS1yZWplY3RlZAorUEFTUyAy
LjMuNDogSWYgYHhgIGlzIG5vdCBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIGZ1bGZpbGwgYHByb21p
c2VgIHdpdGggYHhgIFRoZSB2YWx1ZSBpcyBgMGAgYWxyZWFkeS1mdWxmaWxsZWQKK1BBU1MgMi4z
LjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNl
YCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYDBgIGltbWVkaWF0ZWx5LWZ1bGZpbGxlZAorUEFTUyAy
LjMuNDogSWYgYHhgIGlzIG5vdCBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIGZ1bGZpbGwgYHByb21p
c2VgIHdpdGggYHhgIFRoZSB2YWx1ZSBpcyBgMGAgZXZlbnR1YWxseS1mdWxmaWxsZWQKK1BBU1Mg
Mi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9t
aXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYDBgIGFscmVhZHktcmVqZWN0ZWQKK1BBU1MgMi4z
LjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNl
YCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYDBgIGltbWVkaWF0ZWx5LXJlamVjdGVkCitQQVNTIDIu
My40OiBJZiBgeGAgaXMgbm90IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgZnVsZmlsbCBgcHJvbWlz
ZWAgd2l0aCBgeGAgVGhlIHZhbHVlIGlzIGAwYCBldmVudHVhbGx5LXJlamVjdGVkCitQQVNTIDIu
My40OiBJZiBgeGAgaXMgbm90IGFuIG9iamVjdCBvciBmdW5jdGlvbiwgZnVsZmlsbCBgcHJvbWlz
ZWAgd2l0aCBgeGAgVGhlIHZhbHVlIGlzIGB0cnVlYCB3aXRoIGBCb29sZWFuLnByb3RvdHlwZWAg
bW9kaWZpZWQgdG8gaGF2ZSBhIGB0aGVuYCBtZXRob2QgYWxyZWFkeS1mdWxmaWxsZWQKK1BBU1Mg
Mi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9t
aXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYHRydWVgIHdpdGggYEJvb2xlYW4ucHJvdG90eXBl
YCBtb2RpZmllZCB0byBoYXZlIGEgYHRoZW5gIG1ldGhvZCBpbW1lZGlhdGVseS1mdWxmaWxsZWQK
K1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxs
IGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYHRydWVgIHdpdGggYEJvb2xlYW4ucHJv
dG90eXBlYCBtb2RpZmllZCB0byBoYXZlIGEgYHRoZW5gIG1ldGhvZCBldmVudHVhbGx5LWZ1bGZp
bGxlZAorUEFTUyAyLjMuNDogSWYgYHhgIGlzIG5vdCBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIGZ1
bGZpbGwgYHByb21pc2VgIHdpdGggYHhgIFRoZSB2YWx1ZSBpcyBgdHJ1ZWAgd2l0aCBgQm9vbGVh
bi5wcm90b3R5cGVgIG1vZGlmaWVkIHRvIGhhdmUgYSBgdGhlbmAgbWV0aG9kIGFscmVhZHktcmVq
ZWN0ZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCBm
dWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYHRydWVgIHdpdGggYEJvb2xl
YW4ucHJvdG90eXBlYCBtb2RpZmllZCB0byBoYXZlIGEgYHRoZW5gIG1ldGhvZCBpbW1lZGlhdGVs
eS1yZWplY3RlZAorUEFTUyAyLjMuNDogSWYgYHhgIGlzIG5vdCBhbiBvYmplY3Qgb3IgZnVuY3Rp
b24sIGZ1bGZpbGwgYHByb21pc2VgIHdpdGggYHhgIFRoZSB2YWx1ZSBpcyBgdHJ1ZWAgd2l0aCBg
Qm9vbGVhbi5wcm90b3R5cGVgIG1vZGlmaWVkIHRvIGhhdmUgYSBgdGhlbmAgbWV0aG9kIGV2ZW50
dWFsbHktcmVqZWN0ZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1
bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYDFgIHdpdGgg
YE51bWJlci5wcm90b3R5cGVgIG1vZGlmaWVkIHRvIGhhdmUgYSBgdGhlbmAgbWV0aG9kIGFscmVh
ZHktZnVsZmlsbGVkCitQQVNTIDIuMy40OiBJZiBgeGAgaXMgbm90IGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCBgeGAgVGhlIHZhbHVlIGlzIGAxYCB3aXRoIGBO
dW1iZXIucHJvdG90eXBlYCBtb2RpZmllZCB0byBoYXZlIGEgYHRoZW5gIG1ldGhvZCBpbW1lZGlh
dGVseS1mdWxmaWxsZWQKK1BBU1MgMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2JqZWN0IG9yIGZ1
bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCBUaGUgdmFsdWUgaXMgYDFgIHdpdGgg
YE51bWJlci5wcm90b3R5cGVgIG1vZGlmaWVkIHRvIGhhdmUgYSBgdGhlbmAgbWV0aG9kIGV2ZW50
dWFsbHktZnVsZmlsbGVkCitQQVNTIDIuMy40OiBJZiBgeGAgaXMgbm90IGFuIG9iamVjdCBvciBm
dW5jdGlvbiwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCBgeGAgVGhlIHZhbHVlIGlzIGAxYCB3aXRo
IGBOdW1iZXIucHJvdG90eXBlYCBtb2RpZmllZCB0byBoYXZlIGEgYHRoZW5gIG1ldGhvZCBhbHJl
YWR5LXJlamVjdGVkCitQQVNTIDIuMy40OiBJZiBgeGAgaXMgbm90IGFuIG9iamVjdCBvciBmdW5j
dGlvbiwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCBgeGAgVGhlIHZhbHVlIGlzIGAxYCB3aXRoIGBO
dW1iZXIucHJvdG90eXBlYCBtb2RpZmllZCB0byBoYXZlIGEgYHRoZW5gIG1ldGhvZCBpbW1lZGlh
dGVseS1yZWplY3RlZAorUEFTUyAyLjMuNDogSWYgYHhgIGlzIG5vdCBhbiBvYmplY3Qgb3IgZnVu
Y3Rpb24sIGZ1bGZpbGwgYHByb21pc2VgIHdpdGggYHhgIFRoZSB2YWx1ZSBpcyBgMWAgd2l0aCBg
TnVtYmVyLnByb3RvdHlwZWAgbW9kaWZpZWQgdG8gaGF2ZSBhIGB0aGVuYCBtZXRob2QgZXZlbnR1
YWxseS1yZWplY3RlZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21p
c2VzLXRlc3RzLTItMy00Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9t
aXNlcy10ZXN0cy0yLTMtNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MWM0YzJhMmU5ZjdmNWUwMDA1MGNk
YWMyOGNhYjljYTA0YzRkYzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9t
aXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy0yLTMtNC5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwh
RE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hZGFw
dGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
J1Rlc3QgUHJvbWlzZSB3aXRoIFByb21pc2UgQSsgdGVzdHMgMi4zLjQuJyk7Cit3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbW9j
aGEuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK21vY2hhLnNldHVwKHsKKyAgICB1aTogJ2JkZCcs
CisgICAgcmVwb3J0ZXI6IExheW91dFRlc3RzUmVwb3J0ZXIKK30pOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icHJvbWlzZXMtdGVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3Byb21pc2VU
ZXN0cy50ZXN0czJfM180KCk7Cittb2NoYS5ydW4oKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMt
dGVzdHMuTElDRU5TRSBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRl
c3RzLkxJQ0VOU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDg3YzMxMmIxZWZjZTYxMDBiMmQxY2QzNTRlZTQ4YWY3
YzM2MjYzMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3Rz
L3Byb21pc2VzLXRlc3RzLkxJQ0VOU0UKQEAgLTAsMCArMSwxNCBAQAorICAgICAgICAgICAgRE8g
V0hBVCBUSEUgRlVDSyBZT1UgV0FOVCBUTyBQVUJMSUMgTElDRU5TRQorICAgICAgICAgICAgICAg
ICAgICBWZXJzaW9uIDIsIERlY2VtYmVyIDIwMDQKKworIENvcHlyaWdodCAoQykgMjAxMiBEb21l
bmljIERlbmljb2xhIDxkb21lbmljQGRvbWVuaWNkZW5pY29sYS5jb20+CisKKyBFdmVyeW9uZSBp
cyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBvciBtb2RpZmllZAor
IGNvcGllcyBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGFuZCBjaGFuZ2luZyBpdCBpcyBhbGxv
d2VkIGFzIGxvbmcKKyBhcyB0aGUgbmFtZSBpcyBjaGFuZ2VkLgorCisgICAgICAgICAgICBETyBX
SEFUIFRIRSBGVUNLIFlPVSBXQU5UIFRPIFBVQkxJQyBMSUNFTlNFCisgICBURVJNUyBBTkQgQ09O
RElUSU9OUyBGT1IgQ09QWUlORywgRElTVFJJQlVUSU9OIEFORCBNT0RJRklDQVRJT04KKworICAw
LiBZb3UganVzdCBETyBXSEFUIFRIRSBGVUNLIFlPVSBXQU5UIFRPLgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy5qcyBiL0xheW91dFRl
c3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhZWQw
MWVhYzhhNzdkNDA2OGRhMmUzMzE0MWQ1MjIzNzllZjAwYmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy5qcwpAQCAtMCwwICsx
LDc2NzUgQEAKKyhmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lm
KCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09ImZ1bmN0aW9uIiYmcmVxdWlyZTtpZighdSYm
YSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcigiQ2Fu
bm90IGZpbmQgbW9kdWxlICciK28rIiciKTt0aHJvdyBmLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQi
LGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlv
bihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4s
cil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09ImZ1bmN0aW9uIiYm
cmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkoezE6
W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLy8gaHR0cDovL3dpa2kuY29tbW9u
anMub3JnL3dpa2kvVW5pdF9UZXN0aW5nLzEuMAorLy8KKy8vIFRISVMgSVMgTk9UIFRFU1RFRCBO
T1IgTElLRUxZIFRPIFdPUksgT1VUU0lERSBWOCEKKy8vCisvLyBPcmlnaW5hbGx5IGZyb20gbmFy
d2hhbC5qcyAoaHR0cDovL25hcndoYWxqcy5vcmcpCisvLyBDb3B5cmlnaHQgKGMpIDIwMDkgVGhv
bWFzIFJvYmluc29uIDwyODBub3J0aC5jb20+CisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkg
Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQor
Ly8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0
aGUgJ1NvZnR3YXJlJyksIHRvCisvLyBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry
aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorLy8gcmlnaHRzIHRvIHVz
ZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwg
YW5kL29yCisvLyBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVy
c29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq
ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy8vCisvLyBUaGUgYWJvdmUgY29weXJp
Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBp
bgorLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUu
CisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICdBUyBJUycsIFdJVEhPVVQgV0FSUkFO
VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U
IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorLy8gRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFCisvLyBBVVRIT1JTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT
IE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTgorLy8gQUNUSU9OIE9GIENPTlRSQUNU
LCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP
TgorLy8gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBU
SEUgU09GVFdBUkUuCisKKy8vIHdoZW4gdXNlZCBpbiBub2RlLCB0aGlzIHdpbGwgYWN0dWFsbHkg
bG9hZCB0aGUgdXRpbCBtb2R1bGUgd2UgZGVwZW5kIG9uCisvLyB2ZXJzdXMgbG9hZGluZyB0aGUg
YnVpbHRpbiB1dGlsIG1vZHVsZSBhcyBoYXBwZW5zIG90aGVyd2lzZQorLy8gdGhpcyBpcyBhIGJ1
ZyBpbiBub2RlIG1vZHVsZSBsb2FkaW5nIGFzIGZhciBhcyBJIGFtIGNvbmNlcm5lZAordmFyIHV0
aWwgPSByZXF1aXJlKCd1dGlsLycpOworCit2YXIgcFNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNs
aWNlOwordmFyIGhhc093biA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7CisKKy8v
IDEuIFRoZSBhc3NlcnQgbW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9ucyB0aGF0IHRocm93CisvLyBB
c3NlcnRpb25FcnJvcidzIHdoZW4gcGFydGljdWxhciBjb25kaXRpb25zIGFyZSBub3QgbWV0LiBU
aGUKKy8vIGFzc2VydCBtb2R1bGUgbXVzdCBjb25mb3JtIHRvIHRoZSBmb2xsb3dpbmcgaW50ZXJm
YWNlLgorCit2YXIgYXNzZXJ0ID0gbW9kdWxlLmV4cG9ydHMgPSBvazsKKworLy8gMi4gVGhlIEFz
c2VydGlvbkVycm9yIGlzIGRlZmluZWQgaW4gYXNzZXJ0LgorLy8gbmV3IGFzc2VydC5Bc3NlcnRp
b25FcnJvcih7IG1lc3NhZ2U6IG1lc3NhZ2UsCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWN0dWFsOiBhY3R1YWwsCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWQ6IGV4cGVjdGVkIH0pCisKK2Fzc2VydC5Bc3NlcnRpb25FcnJvciA9IGZ1bmN0aW9uIEFzc2Vy
dGlvbkVycm9yKG9wdGlvbnMpIHsKKyAgdGhpcy5uYW1lID0gJ0Fzc2VydGlvbkVycm9yJzsKKyAg
dGhpcy5hY3R1YWwgPSBvcHRpb25zLmFjdHVhbDsKKyAgdGhpcy5leHBlY3RlZCA9IG9wdGlvbnMu
ZXhwZWN0ZWQ7CisgIHRoaXMub3BlcmF0b3IgPSBvcHRpb25zLm9wZXJhdG9yOworICBpZiAob3B0
aW9ucy5tZXNzYWdlKSB7CisgICAgdGhpcy5tZXNzYWdlID0gb3B0aW9ucy5tZXNzYWdlOworICAg
IHRoaXMuZ2VuZXJhdGVkTWVzc2FnZSA9IGZhbHNlOworICB9IGVsc2UgeworICAgIHRoaXMubWVz
c2FnZSA9IGdldE1lc3NhZ2UodGhpcyk7CisgICAgdGhpcy5nZW5lcmF0ZWRNZXNzYWdlID0gdHJ1
ZTsKKyAgfQorICB2YXIgc3RhY2tTdGFydEZ1bmN0aW9uID0gb3B0aW9ucy5zdGFja1N0YXJ0RnVu
Y3Rpb24gfHwgZmFpbDsKKworICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHsKKyAgICBF
cnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBzdGFja1N0YXJ0RnVuY3Rpb24pOworICB9Cisg
IGVsc2UgeworICAgIC8vIG5vbiB2OCBicm93c2VycyBzbyB3ZSBjYW4gaGF2ZSBhIHN0YWNrdHJh
Y2UKKyAgICB2YXIgZXJyID0gbmV3IEVycm9yKCk7CisgICAgaWYgKGVyci5zdGFjaykgeworICAg
ICAgdmFyIG91dCA9IGVyci5zdGFjazsKKworICAgICAgLy8gdHJ5IHRvIHN0cmlwIHVzZWxlc3Mg
ZnJhbWVzCisgICAgICB2YXIgZm5fbmFtZSA9IHN0YWNrU3RhcnRGdW5jdGlvbi5uYW1lOworICAg
ICAgdmFyIGlkeCA9IG91dC5pbmRleE9mKCdcbicgKyBmbl9uYW1lKTsKKyAgICAgIGlmIChpZHgg
Pj0gMCkgeworICAgICAgICAvLyBvbmNlIHdlIGhhdmUgbG9jYXRlZCB0aGUgZnVuY3Rpb24gZnJh
bWUKKyAgICAgICAgLy8gd2UgbmVlZCB0byBzdHJpcCBvdXQgZXZlcnl0aGluZyBiZWZvcmUgaXQg
KGFuZCBpdHMgbGluZSkKKyAgICAgICAgdmFyIG5leHRfbGluZSA9IG91dC5pbmRleE9mKCdcbics
IGlkeCArIDEpOworICAgICAgICBvdXQgPSBvdXQuc3Vic3RyaW5nKG5leHRfbGluZSArIDEpOwor
ICAgICAgfQorCisgICAgICB0aGlzLnN0YWNrID0gb3V0OworICAgIH0KKyAgfQorfTsKKworLy8g
YXNzZXJ0LkFzc2VydGlvbkVycm9yIGluc3RhbmNlb2YgRXJyb3IKK3V0aWwuaW5oZXJpdHMoYXNz
ZXJ0LkFzc2VydGlvbkVycm9yLCBFcnJvcik7CisKK2Z1bmN0aW9uIHJlcGxhY2VyKGtleSwgdmFs
dWUpIHsKKyAgaWYgKHV0aWwuaXNVbmRlZmluZWQodmFsdWUpKSB7CisgICAgcmV0dXJuICcnICsg
dmFsdWU7CisgIH0KKyAgaWYgKHV0aWwuaXNOdW1iZXIodmFsdWUpICYmIChpc05hTih2YWx1ZSkg
fHwgIWlzRmluaXRlKHZhbHVlKSkpIHsKKyAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTsKKyAg
fQorICBpZiAodXRpbC5pc0Z1bmN0aW9uKHZhbHVlKSB8fCB1dGlsLmlzUmVnRXhwKHZhbHVlKSkg
eworICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpOworICB9CisgIHJldHVybiB2YWx1ZTsKK30K
KworZnVuY3Rpb24gdHJ1bmNhdGUocywgbikgeworICBpZiAodXRpbC5pc1N0cmluZyhzKSkgewor
ICAgIHJldHVybiBzLmxlbmd0aCA8IG4gPyBzIDogcy5zbGljZSgwLCBuKTsKKyAgfSBlbHNlIHsK
KyAgICByZXR1cm4gczsKKyAgfQorfQorCitmdW5jdGlvbiBnZXRNZXNzYWdlKHNlbGYpIHsKKyAg
cmV0dXJuIHRydW5jYXRlKEpTT04uc3RyaW5naWZ5KHNlbGYuYWN0dWFsLCByZXBsYWNlciksIDEy
OCkgKyAnICcgKworICAgICAgICAgc2VsZi5vcGVyYXRvciArICcgJyArCisgICAgICAgICB0cnVu
Y2F0ZShKU09OLnN0cmluZ2lmeShzZWxmLmV4cGVjdGVkLCByZXBsYWNlciksIDEyOCk7Cit9CisK
Ky8vIEF0IHByZXNlbnQgb25seSB0aGUgdGhyZWUga2V5cyBtZW50aW9uZWQgYWJvdmUgYXJlIHVz
ZWQgYW5kCisvLyB1bmRlcnN0b29kIGJ5IHRoZSBzcGVjLiBJbXBsZW1lbnRhdGlvbnMgb3Igc3Vi
IG1vZHVsZXMgY2FuIHBhc3MKKy8vIG90aGVyIGtleXMgdG8gdGhlIEFzc2VydGlvbkVycm9yJ3Mg
Y29uc3RydWN0b3IgLSB0aGV5IHdpbGwgYmUKKy8vIGlnbm9yZWQuCisKKy8vIDMuIEFsbCBvZiB0
aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBtdXN0IHRocm93IGFuIEFzc2VydGlvbkVycm9yCisvLyB3
aGVuIGEgY29ycmVzcG9uZGluZyBjb25kaXRpb24gaXMgbm90IG1ldCwgd2l0aCBhIG1lc3NhZ2Ug
dGhhdAorLy8gbWF5IGJlIHVuZGVmaW5lZCBpZiBub3QgcHJvdmlkZWQuICBBbGwgYXNzZXJ0aW9u
IG1ldGhvZHMgcHJvdmlkZQorLy8gYm90aCB0aGUgYWN0dWFsIGFuZCBleHBlY3RlZCB2YWx1ZXMg
dG8gdGhlIGFzc2VydGlvbiBlcnJvciBmb3IKKy8vIGRpc3BsYXkgcHVycG9zZXMuCisKK2Z1bmN0
aW9uIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgb3BlcmF0b3IsIHN0YWNrU3RhcnRG
dW5jdGlvbikgeworICB0aHJvdyBuZXcgYXNzZXJ0LkFzc2VydGlvbkVycm9yKHsKKyAgICBtZXNz
YWdlOiBtZXNzYWdlLAorICAgIGFjdHVhbDogYWN0dWFsLAorICAgIGV4cGVjdGVkOiBleHBlY3Rl
ZCwKKyAgICBvcGVyYXRvcjogb3BlcmF0b3IsCisgICAgc3RhY2tTdGFydEZ1bmN0aW9uOiBzdGFj
a1N0YXJ0RnVuY3Rpb24KKyAgfSk7Cit9CisKKy8vIEVYVEVOU0lPTiEgYWxsb3dzIGZvciB3ZWxs
IGJlaGF2ZWQgZXJyb3JzIGRlZmluZWQgZWxzZXdoZXJlLgorYXNzZXJ0LmZhaWwgPSBmYWlsOwor
CisvLyA0LiBQdXJlIGFzc2VydGlvbiB0ZXN0cyB3aGV0aGVyIGEgdmFsdWUgaXMgdHJ1dGh5LCBh
cyBkZXRlcm1pbmVkCisvLyBieSAhIWd1YXJkLgorLy8gYXNzZXJ0Lm9rKGd1YXJkLCBtZXNzYWdl
X29wdCk7CisvLyBUaGlzIHN0YXRlbWVudCBpcyBlcXVpdmFsZW50IHRvIGFzc2VydC5lcXVhbCh0
cnVlLCAhIWd1YXJkLAorLy8gbWVzc2FnZV9vcHQpOy4gVG8gdGVzdCBzdHJpY3RseSBmb3IgdGhl
IHZhbHVlIHRydWUsIHVzZQorLy8gYXNzZXJ0LnN0cmljdEVxdWFsKHRydWUsIGd1YXJkLCBtZXNz
YWdlX29wdCk7LgorCitmdW5jdGlvbiBvayh2YWx1ZSwgbWVzc2FnZSkgeworICBpZiAoIXZhbHVl
KSBmYWlsKHZhbHVlLCB0cnVlLCBtZXNzYWdlLCAnPT0nLCBhc3NlcnQub2spOworfQorYXNzZXJ0
Lm9rID0gb2s7CisKKy8vIDUuIFRoZSBlcXVhbGl0eSBhc3NlcnRpb24gdGVzdHMgc2hhbGxvdywg
Y29lcmNpdmUgZXF1YWxpdHkgd2l0aAorLy8gPT0uCisvLyBhc3NlcnQuZXF1YWwoYWN0dWFsLCBl
eHBlY3RlZCwgbWVzc2FnZV9vcHQpOworCithc3NlcnQuZXF1YWwgPSBmdW5jdGlvbiBlcXVhbChh
Y3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpIGZh
aWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJz09JywgYXNzZXJ0LmVxdWFsKTsKK307CisK
Ky8vIDYuIFRoZSBub24tZXF1YWxpdHkgYXNzZXJ0aW9uIHRlc3RzIGZvciB3aGV0aGVyIHR3byBv
YmplY3RzIGFyZSBub3QgZXF1YWwKKy8vIHdpdGggIT0gYXNzZXJ0Lm5vdEVxdWFsKGFjdHVhbCwg
ZXhwZWN0ZWQsIG1lc3NhZ2Vfb3B0KTsKKworYXNzZXJ0Lm5vdEVxdWFsID0gZnVuY3Rpb24gbm90
RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICBpZiAoYWN0dWFsID09IGV4cGVj
dGVkKSB7CisgICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnIT0nLCBhc3NlcnQu
bm90RXF1YWwpOworICB9Cit9OworCisvLyA3LiBUaGUgZXF1aXZhbGVuY2UgYXNzZXJ0aW9uIHRl
c3RzIGEgZGVlcCBlcXVhbGl0eSByZWxhdGlvbi4KKy8vIGFzc2VydC5kZWVwRXF1YWwoYWN0dWFs
LCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpOworCithc3NlcnQuZGVlcEVxdWFsID0gZnVuY3Rpb24g
ZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKCFfZGVlcEVxdWFs
KGFjdHVhbCwgZXhwZWN0ZWQpKSB7CisgICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdl
LCAnZGVlcEVxdWFsJywgYXNzZXJ0LmRlZXBFcXVhbCk7CisgIH0KK307CisKK2Z1bmN0aW9uIF9k
ZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCkgeworICAvLyA3LjEuIEFsbCBpZGVudGljYWwgdmFs
dWVzIGFyZSBlcXVpdmFsZW50LCBhcyBkZXRlcm1pbmVkIGJ5ID09PS4KKyAgaWYgKGFjdHVhbCA9
PT0gZXhwZWN0ZWQpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKworICB9IGVsc2UgaWYgKHV0aWwuaXNC
dWZmZXIoYWN0dWFsKSAmJiB1dGlsLmlzQnVmZmVyKGV4cGVjdGVkKSkgeworICAgIGlmIChhY3R1
YWwubGVuZ3RoICE9IGV4cGVjdGVkLmxlbmd0aCkgcmV0dXJuIGZhbHNlOworCisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBhY3R1YWwubGVuZ3RoOyBpKyspIHsKKyAgICAgIGlmIChhY3R1YWxbaV0g
IT09IGV4cGVjdGVkW2ldKSByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7
CisKKyAgLy8gNy4yLiBJZiB0aGUgZXhwZWN0ZWQgdmFsdWUgaXMgYSBEYXRlIG9iamVjdCwgdGhl
IGFjdHVhbCB2YWx1ZSBpcworICAvLyBlcXVpdmFsZW50IGlmIGl0IGlzIGFsc28gYSBEYXRlIG9i
amVjdCB0aGF0IHJlZmVycyB0byB0aGUgc2FtZSB0aW1lLgorICB9IGVsc2UgaWYgKHV0aWwuaXNE
YXRlKGFjdHVhbCkgJiYgdXRpbC5pc0RhdGUoZXhwZWN0ZWQpKSB7CisgICAgcmV0dXJuIGFjdHVh
bC5nZXRUaW1lKCkgPT09IGV4cGVjdGVkLmdldFRpbWUoKTsKKworICAvLyA3LjMgSWYgdGhlIGV4
cGVjdGVkIHZhbHVlIGlzIGEgUmVnRXhwIG9iamVjdCwgdGhlIGFjdHVhbCB2YWx1ZSBpcworICAv
LyBlcXVpdmFsZW50IGlmIGl0IGlzIGFsc28gYSBSZWdFeHAgb2JqZWN0IHdpdGggdGhlIHNhbWUg
c291cmNlIGFuZAorICAvLyBwcm9wZXJ0aWVzIChgZ2xvYmFsYCwgYG11bHRpbGluZWAsIGBsYXN0
SW5kZXhgLCBgaWdub3JlQ2FzZWApLgorICB9IGVsc2UgaWYgKHV0aWwuaXNSZWdFeHAoYWN0dWFs
KSAmJiB1dGlsLmlzUmVnRXhwKGV4cGVjdGVkKSkgeworICAgIHJldHVybiBhY3R1YWwuc291cmNl
ID09PSBleHBlY3RlZC5zb3VyY2UgJiYKKyAgICAgICAgICAgYWN0dWFsLmdsb2JhbCA9PT0gZXhw
ZWN0ZWQuZ2xvYmFsICYmCisgICAgICAgICAgIGFjdHVhbC5tdWx0aWxpbmUgPT09IGV4cGVjdGVk
Lm11bHRpbGluZSAmJgorICAgICAgICAgICBhY3R1YWwubGFzdEluZGV4ID09PSBleHBlY3RlZC5s
YXN0SW5kZXggJiYKKyAgICAgICAgICAgYWN0dWFsLmlnbm9yZUNhc2UgPT09IGV4cGVjdGVkLmln
bm9yZUNhc2U7CisKKyAgLy8gNy40LiBPdGhlciBwYWlycyB0aGF0IGRvIG5vdCBib3RoIHBhc3Mg
dHlwZW9mIHZhbHVlID09ICdvYmplY3QnLAorICAvLyBlcXVpdmFsZW5jZSBpcyBkZXRlcm1pbmVk
IGJ5ID09LgorICB9IGVsc2UgaWYgKCF1dGlsLmlzT2JqZWN0KGFjdHVhbCkgJiYgIXV0aWwuaXNP
YmplY3QoZXhwZWN0ZWQpKSB7CisgICAgcmV0dXJuIGFjdHVhbCA9PSBleHBlY3RlZDsKKworICAv
LyA3LjUgRm9yIGFsbCBvdGhlciBPYmplY3QgcGFpcnMsIGluY2x1ZGluZyBBcnJheSBvYmplY3Rz
LCBlcXVpdmFsZW5jZSBpcworICAvLyBkZXRlcm1pbmVkIGJ5IGhhdmluZyB0aGUgc2FtZSBudW1i
ZXIgb2Ygb3duZWQgcHJvcGVydGllcyAoYXMgdmVyaWZpZWQKKyAgLy8gd2l0aCBPYmplY3QucHJv
dG90eXBlLmhhc093blByb3BlcnR5LmNhbGwpLCB0aGUgc2FtZSBzZXQgb2Yga2V5cworICAvLyAo
YWx0aG91Z2ggbm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIG9yZGVyKSwgZXF1aXZhbGVudCB2YWx1
ZXMgZm9yIGV2ZXJ5CisgIC8vIGNvcnJlc3BvbmRpbmcga2V5LCBhbmQgYW4gaWRlbnRpY2FsICdw
cm90b3R5cGUnIHByb3BlcnR5LiBOb3RlOiB0aGlzCisgIC8vIGFjY291bnRzIGZvciBib3RoIG5h
bWVkIGFuZCBpbmRleGVkIHByb3BlcnRpZXMgb24gQXJyYXlzLgorICB9IGVsc2UgeworICAgIHJl
dHVybiBvYmpFcXVpdihhY3R1YWwsIGV4cGVjdGVkKTsKKyAgfQorfQorCitmdW5jdGlvbiBpc0Fy
Z3VtZW50cyhvYmplY3QpIHsKKyAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2Fs
bChvYmplY3QpID09ICdbb2JqZWN0IEFyZ3VtZW50c10nOworfQorCitmdW5jdGlvbiBvYmpFcXVp
dihhLCBiKSB7CisgIGlmICh1dGlsLmlzTnVsbE9yVW5kZWZpbmVkKGEpIHx8IHV0aWwuaXNOdWxs
T3JVbmRlZmluZWQoYikpCisgICAgcmV0dXJuIGZhbHNlOworICAvLyBhbiBpZGVudGljYWwgJ3By
b3RvdHlwZScgcHJvcGVydHkuCisgIGlmIChhLnByb3RvdHlwZSAhPT0gYi5wcm90b3R5cGUpIHJl
dHVybiBmYWxzZTsKKyAgLy9+fn5JJ3ZlIG1hbmFnZWQgdG8gYnJlYWsgT2JqZWN0LmtleXMgdGhy
b3VnaCBzY3Jld3kgYXJndW1lbnRzIHBhc3NpbmcuCisgIC8vICAgQ29udmVydGluZyB0byBhcnJh
eSBzb2x2ZXMgdGhlIHByb2JsZW0uCisgIGlmIChpc0FyZ3VtZW50cyhhKSkgeworICAgIGlmICgh
aXNBcmd1bWVudHMoYikpIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgYSA9IHBT
bGljZS5jYWxsKGEpOworICAgIGIgPSBwU2xpY2UuY2FsbChiKTsKKyAgICByZXR1cm4gX2RlZXBF
cXVhbChhLCBiKTsKKyAgfQorICB0cnkgeworICAgIHZhciBrYSA9IG9iamVjdEtleXMoYSksCisg
ICAgICAgIGtiID0gb2JqZWN0S2V5cyhiKSwKKyAgICAgICAga2V5LCBpOworICB9IGNhdGNoIChl
KSB7Ly9oYXBwZW5zIHdoZW4gb25lIGlzIGEgc3RyaW5nIGxpdGVyYWwgYW5kIHRoZSBvdGhlciBp
c24ndAorICAgIHJldHVybiBmYWxzZTsKKyAgfQorICAvLyBoYXZpbmcgdGhlIHNhbWUgbnVtYmVy
IG9mIG93bmVkIHByb3BlcnRpZXMgKGtleXMgaW5jb3Jwb3JhdGVzCisgIC8vIGhhc093blByb3Bl
cnR5KQorICBpZiAoa2EubGVuZ3RoICE9IGtiLmxlbmd0aCkKKyAgICByZXR1cm4gZmFsc2U7Cisg
IC8vdGhlIHNhbWUgc2V0IG9mIGtleXMgKGFsdGhvdWdoIG5vdCBuZWNlc3NhcmlseSB0aGUgc2Ft
ZSBvcmRlciksCisgIGthLnNvcnQoKTsKKyAga2Iuc29ydCgpOworICAvL35+fmNoZWFwIGtleSB0
ZXN0CisgIGZvciAoaSA9IGthLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgaWYgKGth
W2ldICE9IGtiW2ldKQorICAgICAgcmV0dXJuIGZhbHNlOworICB9CisgIC8vZXF1aXZhbGVudCB2
YWx1ZXMgZm9yIGV2ZXJ5IGNvcnJlc3BvbmRpbmcga2V5LCBhbmQKKyAgLy9+fn5wb3NzaWJseSBl
eHBlbnNpdmUgZGVlcCB0ZXN0CisgIGZvciAoaSA9IGthLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0t
KSB7CisgICAga2V5ID0ga2FbaV07CisgICAgaWYgKCFfZGVlcEVxdWFsKGFba2V5XSwgYltrZXld
KSkgcmV0dXJuIGZhbHNlOworICB9CisgIHJldHVybiB0cnVlOworfQorCisvLyA4LiBUaGUgbm9u
LWVxdWl2YWxlbmNlIGFzc2VydGlvbiB0ZXN0cyBmb3IgYW55IGRlZXAgaW5lcXVhbGl0eS4KKy8v
IGFzc2VydC5ub3REZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpOworCith
c3NlcnQubm90RGVlcEVxdWFsID0gZnVuY3Rpb24gbm90RGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0
ZWQsIG1lc3NhZ2UpIHsKKyAgaWYgKF9kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCkpIHsKKyAg
ICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICdub3REZWVwRXF1YWwnLCBhc3NlcnQu
bm90RGVlcEVxdWFsKTsKKyAgfQorfTsKKworLy8gOS4gVGhlIHN0cmljdCBlcXVhbGl0eSBhc3Nl
cnRpb24gdGVzdHMgc3RyaWN0IGVxdWFsaXR5LCBhcyBkZXRlcm1pbmVkIGJ5ID09PS4KKy8vIGFz
c2VydC5zdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlX29wdCk7CisKK2Fzc2Vy
dC5zdHJpY3RFcXVhbCA9IGZ1bmN0aW9uIHN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1l
c3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICBmYWlsKGFjdHVhbCwg
ZXhwZWN0ZWQsIG1lc3NhZ2UsICc9PT0nLCBhc3NlcnQuc3RyaWN0RXF1YWwpOworICB9Cit9Owor
CisvLyAxMC4gVGhlIHN0cmljdCBub24tZXF1YWxpdHkgYXNzZXJ0aW9uIHRlc3RzIGZvciBzdHJp
Y3QgaW5lcXVhbGl0eSwgYXMKKy8vIGRldGVybWluZWQgYnkgIT09LiAgYXNzZXJ0Lm5vdFN0cmlj
dEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Vfb3B0KTsKKworYXNzZXJ0Lm5vdFN0cmlj
dEVxdWFsID0gZnVuY3Rpb24gbm90U3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2Fn
ZSkgeworICBpZiAoYWN0dWFsID09PSBleHBlY3RlZCkgeworICAgIGZhaWwoYWN0dWFsLCBleHBl
Y3RlZCwgbWVzc2FnZSwgJyE9PScsIGFzc2VydC5ub3RTdHJpY3RFcXVhbCk7CisgIH0KK307CisK
K2Z1bmN0aW9uIGV4cGVjdGVkRXhjZXB0aW9uKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgaWYgKCFh
Y3R1YWwgfHwgIWV4cGVjdGVkKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgaWYgKE9i
amVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChleHBlY3RlZCkgPT0gJ1tvYmplY3QgUmVnRXhw
XScpIHsKKyAgICByZXR1cm4gZXhwZWN0ZWQudGVzdChhY3R1YWwpOworICB9IGVsc2UgaWYgKGFj
dHVhbCBpbnN0YW5jZW9mIGV4cGVjdGVkKSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0gZWxzZSBp
ZiAoZXhwZWN0ZWQuY2FsbCh7fSwgYWN0dWFsKSA9PT0gdHJ1ZSkgeworICAgIHJldHVybiB0cnVl
OworICB9CisKKyAgcmV0dXJuIGZhbHNlOworfQorCitmdW5jdGlvbiBfdGhyb3dzKHNob3VsZFRo
cm93LCBibG9jaywgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgdmFyIGFjdHVhbDsKKworICBpZiAo
dXRpbC5pc1N0cmluZyhleHBlY3RlZCkpIHsKKyAgICBtZXNzYWdlID0gZXhwZWN0ZWQ7CisgICAg
ZXhwZWN0ZWQgPSBudWxsOworICB9CisKKyAgdHJ5IHsKKyAgICBibG9jaygpOworICB9IGNhdGNo
IChlKSB7CisgICAgYWN0dWFsID0gZTsKKyAgfQorCisgIG1lc3NhZ2UgPSAoZXhwZWN0ZWQgJiYg
ZXhwZWN0ZWQubmFtZSA/ICcgKCcgKyBleHBlY3RlZC5uYW1lICsgJykuJyA6ICcuJykgKworICAg
ICAgICAgICAgKG1lc3NhZ2UgPyAnICcgKyBtZXNzYWdlIDogJy4nKTsKKworICBpZiAoc2hvdWxk
VGhyb3cgJiYgIWFjdHVhbCkgeworICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgJ01pc3Npbmcg
ZXhwZWN0ZWQgZXhjZXB0aW9uJyArIG1lc3NhZ2UpOworICB9CisKKyAgaWYgKCFzaG91bGRUaHJv
dyAmJiBleHBlY3RlZEV4Y2VwdGlvbihhY3R1YWwsIGV4cGVjdGVkKSkgeworICAgIGZhaWwoYWN0
dWFsLCBleHBlY3RlZCwgJ0dvdCB1bndhbnRlZCBleGNlcHRpb24nICsgbWVzc2FnZSk7CisgIH0K
KworICBpZiAoKHNob3VsZFRocm93ICYmIGFjdHVhbCAmJiBleHBlY3RlZCAmJgorICAgICAgIWV4
cGVjdGVkRXhjZXB0aW9uKGFjdHVhbCwgZXhwZWN0ZWQpKSB8fCAoIXNob3VsZFRocm93ICYmIGFj
dHVhbCkpIHsKKyAgICB0aHJvdyBhY3R1YWw7CisgIH0KK30KKworLy8gMTEuIEV4cGVjdGVkIHRv
IHRocm93IGFuIGVycm9yOgorLy8gYXNzZXJ0LnRocm93cyhibG9jaywgRXJyb3Jfb3B0LCBtZXNz
YWdlX29wdCk7CisKK2Fzc2VydC50aHJvd3MgPSBmdW5jdGlvbihibG9jaywgLypvcHRpb25hbCov
ZXJyb3IsIC8qb3B0aW9uYWwqL21lc3NhZ2UpIHsKKyAgX3Rocm93cy5hcHBseSh0aGlzLCBbdHJ1
ZV0uY29uY2F0KHBTbGljZS5jYWxsKGFyZ3VtZW50cykpKTsKK307CisKKy8vIEVYVEVOU0lPTiEg
VGhpcyBpcyBhbm5veWluZyB0byB3cml0ZSBvdXRzaWRlIHRoaXMgbW9kdWxlLgorYXNzZXJ0LmRv
ZXNOb3RUaHJvdyA9IGZ1bmN0aW9uKGJsb2NrLCAvKm9wdGlvbmFsKi9tZXNzYWdlKSB7CisgIF90
aHJvd3MuYXBwbHkodGhpcywgW2ZhbHNlXS5jb25jYXQocFNsaWNlLmNhbGwoYXJndW1lbnRzKSkp
OworfTsKKworYXNzZXJ0LmlmRXJyb3IgPSBmdW5jdGlvbihlcnIpIHsgaWYgKGVycikge3Rocm93
IGVycjt9fTsKKwordmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2Jq
KSB7CisgIHZhciBrZXlzID0gW107CisgIGZvciAodmFyIGtleSBpbiBvYmopIHsKKyAgICBpZiAo
aGFzT3duLmNhbGwob2JqLCBrZXkpKSBrZXlzLnB1c2goa2V5KTsKKyAgfQorICByZXR1cm4ga2V5
czsKK307CisKK30seyJ1dGlsLyI6NX1dLDI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9y
dHMpeworaWYgKHR5cGVvZiBPYmplY3QuY3JlYXRlID09PSAnZnVuY3Rpb24nKSB7CisgIC8vIGlt
cGxlbWVudGF0aW9uIGZyb20gc3RhbmRhcmQgbm9kZS5qcyAndXRpbCcgbW9kdWxlCisgIG1vZHVs
ZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7CisgICAgY3Rv
ci5zdXBlcl8gPSBzdXBlckN0b3IKKyAgICBjdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
c3VwZXJDdG9yLnByb3RvdHlwZSwgeworICAgICAgY29uc3RydWN0b3I6IHsKKyAgICAgICAgdmFs
dWU6IGN0b3IsCisgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLAorICAgICAgICB3cml0YWJsZTog
dHJ1ZSwKKyAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlCisgICAgICB9CisgICAgfSk7CisgIH07
Cit9IGVsc2UgeworICAvLyBvbGQgc2Nob29sIHNoaW0gZm9yIG9sZCBicm93c2VycworICBtb2R1
bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3RvcikgeworICAgIGN0
b3Iuc3VwZXJfID0gc3VwZXJDdG9yCisgICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge30K
KyAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlCisgICAgY3Rvci5w
cm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKQorICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9y
ID0gY3RvcgorICB9Cit9CisKK30se31dLDM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9y
dHMpeworLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyCisKK3ZhciBwcm9jZXNz
ID0gbW9kdWxlLmV4cG9ydHMgPSB7fTsKKworcHJvY2Vzcy5uZXh0VGljayA9IChmdW5jdGlvbiAo
KSB7CisgICAgdmFyIGNhblNldEltbWVkaWF0ZSA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmlu
ZWQnCisgICAgJiYgd2luZG93LnNldEltbWVkaWF0ZTsKKyAgICB2YXIgY2FuUG9zdCA9IHR5cGVv
ZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnCisgICAgJiYgd2luZG93LnBvc3RNZXNzYWdlICYmIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyCisgICAgOworCisgICAgaWYgKGNhblNldEltbWVkaWF0ZSkg
eworICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGYpIHsgcmV0dXJuIHdpbmRvdy5zZXRJbW1lZGlh
dGUoZikgfTsKKyAgICB9CisKKyAgICBpZiAoY2FuUG9zdCkgeworICAgICAgICB2YXIgcXVldWUg
PSBbXTsKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBmdW5jdGlv
biAoZXYpIHsKKyAgICAgICAgICAgIHZhciBzb3VyY2UgPSBldi5zb3VyY2U7CisgICAgICAgICAg
ICBpZiAoKHNvdXJjZSA9PT0gd2luZG93IHx8IHNvdXJjZSA9PT0gbnVsbCkgJiYgZXYuZGF0YSA9
PT0gJ3Byb2Nlc3MtdGljaycpIHsKKyAgICAgICAgICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24o
KTsKKyAgICAgICAgICAgICAgICBpZiAocXVldWUubGVuZ3RoID4gMCkgeworICAgICAgICAgICAg
ICAgICAgICB2YXIgZm4gPSBxdWV1ZS5zaGlmdCgpOworICAgICAgICAgICAgICAgICAgICBmbigp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwgdHJ1ZSk7CisK
KyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIG5leHRUaWNrKGZuKSB7CisgICAgICAgICAgICBxdWV1
ZS5wdXNoKGZuKTsKKyAgICAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZSgncHJvY2Vzcy10aWNr
JywgJyonKTsKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICByZXR1cm4gZnVuY3Rpb24gbmV4dFRp
Y2soZm4pIHsKKyAgICAgICAgc2V0VGltZW91dChmbiwgMCk7CisgICAgfTsKK30pKCk7CisKK3By
b2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7Citwcm9jZXNzLmJyb3dzZXIgPSB0cnVlOworcHJvY2Vz
cy5lbnYgPSB7fTsKK3Byb2Nlc3MuYXJndiA9IFtdOworCitmdW5jdGlvbiBub29wKCkge30KKwor
cHJvY2Vzcy5vbiA9IG5vb3A7Citwcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDsKK3Byb2Nlc3Mu
b25jZSA9IG5vb3A7Citwcm9jZXNzLm9mZiA9IG5vb3A7Citwcm9jZXNzLnJlbW92ZUxpc3RlbmVy
ID0gbm9vcDsKK3Byb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDsKK3Byb2Nlc3MuZW1p
dCA9IG5vb3A7CisKK3Byb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7CisgICAgdGhy
b3cgbmV3IEVycm9yKCdwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpOworfQorCisv
LyBUT0RPKHNodHlsbWFuKQorcHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycg
fTsKK3Byb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7CisgICAgdGhyb3cgbmV3IEVycm9y
KCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTsKK307CisKK30se31dLDQ6W2Z1bmN0
aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBp
c0J1ZmZlcihhcmcpIHsKKyAgcmV0dXJuIGFyZyAmJiB0eXBlb2YgYXJnID09PSAnb2JqZWN0Jwor
ICAgICYmIHR5cGVvZiBhcmcuY29weSA9PT0gJ2Z1bmN0aW9uJworICAgICYmIHR5cGVvZiBhcmcu
ZmlsbCA9PT0gJ2Z1bmN0aW9uJworICAgICYmIHR5cGVvZiBhcmcucmVhZFVJbnQ4ID09PSAnZnVu
Y3Rpb24nOworfQorfSx7fV0sNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ciso
ZnVuY3Rpb24gKHByb2Nlc3MsZ2xvYmFsKXsKKy8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5k
IG90aGVyIE5vZGUgY29udHJpYnV0b3JzLgorLy8KKy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy
YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisvLyBjb3B5
IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl
CisvLyAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj
dGlvbiwgaW5jbHVkaW5nCisvLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2Us
IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisvLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNl
LCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0CisvLyBw
ZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj
dCB0byB0aGUKKy8vIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5
cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVk
CisvLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2Fy
ZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS
QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUworLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO
T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTgorLy8g
Tk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF
IEZPUiBBTlkgQ0xBSU0sCisvLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IKKy8vIE9USEVSV0lTRSwgQVJJU0lORyBG
Uk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUKKy8v
IFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisKK3ZhciBmb3JtYXRSZWdF
eHAgPSAvJVtzZGolXS9nOworZXhwb3J0cy5mb3JtYXQgPSBmdW5jdGlvbihmKSB7CisgIGlmICgh
aXNTdHJpbmcoZikpIHsKKyAgICB2YXIgb2JqZWN0cyA9IFtdOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CisgICAgICBvYmplY3RzLnB1c2goaW5zcGVj
dChhcmd1bWVudHNbaV0pKTsKKyAgICB9CisgICAgcmV0dXJuIG9iamVjdHMuam9pbignICcpOwor
ICB9CisKKyAgdmFyIGkgPSAxOworICB2YXIgYXJncyA9IGFyZ3VtZW50czsKKyAgdmFyIGxlbiA9
IGFyZ3MubGVuZ3RoOworICB2YXIgc3RyID0gU3RyaW5nKGYpLnJlcGxhY2UoZm9ybWF0UmVnRXhw
LCBmdW5jdGlvbih4KSB7CisgICAgaWYgKHggPT09ICclJScpIHJldHVybiAnJSc7CisgICAgaWYg
KGkgPj0gbGVuKSByZXR1cm4geDsKKyAgICBzd2l0Y2ggKHgpIHsKKyAgICAgIGNhc2UgJyVzJzog
cmV0dXJuIFN0cmluZyhhcmdzW2krK10pOworICAgICAgY2FzZSAnJWQnOiByZXR1cm4gTnVtYmVy
KGFyZ3NbaSsrXSk7CisgICAgICBjYXNlICclaic6CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
cmV0dXJuIEpTT04uc3RyaW5naWZ5KGFyZ3NbaSsrXSk7CisgICAgICAgIH0gY2F0Y2ggKF8pIHsK
KyAgICAgICAgICByZXR1cm4gJ1tDaXJjdWxhcl0nOworICAgICAgICB9CisgICAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4geDsKKyAgICB9CisgIH0pOworICBmb3IgKHZhciB4ID0gYXJnc1tp
XTsgaSA8IGxlbjsgeCA9IGFyZ3NbKytpXSkgeworICAgIGlmIChpc051bGwoeCkgfHwgIWlzT2Jq
ZWN0KHgpKSB7CisgICAgICBzdHIgKz0gJyAnICsgeDsKKyAgICB9IGVsc2UgeworICAgICAgc3Ry
ICs9ICcgJyArIGluc3BlY3QoeCk7CisgICAgfQorICB9CisgIHJldHVybiBzdHI7Cit9OworCisK
Ky8vIE1hcmsgdGhhdCBhIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWQuCisvLyBSZXR1cm5zIGEg
bW9kaWZpZWQgZnVuY3Rpb24gd2hpY2ggd2FybnMgb25jZSBieSBkZWZhdWx0LgorLy8gSWYgLS1u
by1kZXByZWNhdGlvbiBpcyBzZXQsIHRoZW4gaXQgaXMgYSBuby1vcC4KK2V4cG9ydHMuZGVwcmVj
YXRlID0gZnVuY3Rpb24oZm4sIG1zZykgeworICAvLyBBbGxvdyBmb3IgZGVwcmVjYXRpbmcgdGhp
bmdzIGluIHRoZSBwcm9jZXNzIG9mIHN0YXJ0aW5nIHVwLgorICBpZiAoaXNVbmRlZmluZWQoZ2xv
YmFsLnByb2Nlc3MpKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIGV4
cG9ydHMuZGVwcmVjYXRlKGZuLCBtc2cpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgfTsK
KyAgfQorCisgIGlmIChwcm9jZXNzLm5vRGVwcmVjYXRpb24gPT09IHRydWUpIHsKKyAgICByZXR1
cm4gZm47CisgIH0KKworICB2YXIgd2FybmVkID0gZmFsc2U7CisgIGZ1bmN0aW9uIGRlcHJlY2F0
ZWQoKSB7CisgICAgaWYgKCF3YXJuZWQpIHsKKyAgICAgIGlmIChwcm9jZXNzLnRocm93RGVwcmVj
YXRpb24pIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7CisgICAgICB9IGVsc2UgaWYg
KHByb2Nlc3MudHJhY2VEZXByZWNhdGlvbikgeworICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7
CisgICAgICB9IGVsc2UgeworICAgICAgICBjb25zb2xlLmVycm9yKG1zZyk7CisgICAgICB9Cisg
ICAgICB3YXJuZWQgPSB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJn
dW1lbnRzKTsKKyAgfQorCisgIHJldHVybiBkZXByZWNhdGVkOworfTsKKworCit2YXIgZGVidWdz
ID0ge307Cit2YXIgZGVidWdFbnZpcm9uOworZXhwb3J0cy5kZWJ1Z2xvZyA9IGZ1bmN0aW9uKHNl
dCkgeworICBpZiAoaXNVbmRlZmluZWQoZGVidWdFbnZpcm9uKSkKKyAgICBkZWJ1Z0Vudmlyb24g
PSBwcm9jZXNzLmVudi5OT0RFX0RFQlVHIHx8ICcnOworICBzZXQgPSBzZXQudG9VcHBlckNhc2Uo
KTsKKyAgaWYgKCFkZWJ1Z3Nbc2V0XSkgeworICAgIGlmIChuZXcgUmVnRXhwKCdcXGInICsgc2V0
ICsgJ1xcYicsICdpJykudGVzdChkZWJ1Z0Vudmlyb24pKSB7CisgICAgICB2YXIgcGlkID0gcHJv
Y2Vzcy5waWQ7CisgICAgICBkZWJ1Z3Nbc2V0XSA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIg
bXNnID0gZXhwb3J0cy5mb3JtYXQuYXBwbHkoZXhwb3J0cywgYXJndW1lbnRzKTsKKyAgICAgICAg
Y29uc29sZS5lcnJvcignJXMgJWQ6ICVzJywgc2V0LCBwaWQsIG1zZyk7CisgICAgICB9OworICAg
IH0gZWxzZSB7CisgICAgICBkZWJ1Z3Nbc2V0XSA9IGZ1bmN0aW9uKCkge307CisgICAgfQorICB9
CisgIHJldHVybiBkZWJ1Z3Nbc2V0XTsKK307CisKKworLyoqCisgKiBFY2hvcyB0aGUgdmFsdWUg
b2YgYSB2YWx1ZS4gVHJ5cyB0byBwcmludCB0aGUgdmFsdWUgb3V0CisgKiBpbiB0aGUgYmVzdCB3
YXkgcG9zc2libGUgZ2l2ZW4gdGhlIGRpZmZlcmVudCB0eXBlcy4KKyAqCisgKiBAcGFyYW0ge09i
amVjdH0gb2JqIFRoZSBvYmplY3QgdG8gcHJpbnQgb3V0LgorICogQHBhcmFtIHtPYmplY3R9IG9w
dHMgT3B0aW9uYWwgb3B0aW9ucyBvYmplY3QgdGhhdCBhbHRlcnMgdGhlIG91dHB1dC4KKyAqLwor
LyogbGVnYWN5OiBvYmosIHNob3dIaWRkZW4sIGRlcHRoLCBjb2xvcnMqLworZnVuY3Rpb24gaW5z
cGVjdChvYmosIG9wdHMpIHsKKyAgLy8gZGVmYXVsdCBvcHRpb25zCisgIHZhciBjdHggPSB7Cisg
ICAgc2VlbjogW10sCisgICAgc3R5bGl6ZTogc3R5bGl6ZU5vQ29sb3IKKyAgfTsKKyAgLy8gbGVn
YWN5Li4uCisgIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDMpIGN0eC5kZXB0aCA9IGFyZ3VtZW50
c1syXTsKKyAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gNCkgY3R4LmNvbG9ycyA9IGFyZ3VtZW50
c1szXTsKKyAgaWYgKGlzQm9vbGVhbihvcHRzKSkgeworICAgIC8vIGxlZ2FjeS4uLgorICAgIGN0
eC5zaG93SGlkZGVuID0gb3B0czsKKyAgfSBlbHNlIGlmIChvcHRzKSB7CisgICAgLy8gZ290IGFu
ICJvcHRpb25zIiBvYmplY3QKKyAgICBleHBvcnRzLl9leHRlbmQoY3R4LCBvcHRzKTsKKyAgfQor
ICAvLyBzZXQgZGVmYXVsdCBvcHRpb25zCisgIGlmIChpc1VuZGVmaW5lZChjdHguc2hvd0hpZGRl
bikpIGN0eC5zaG93SGlkZGVuID0gZmFsc2U7CisgIGlmIChpc1VuZGVmaW5lZChjdHguZGVwdGgp
KSBjdHguZGVwdGggPSAyOworICBpZiAoaXNVbmRlZmluZWQoY3R4LmNvbG9ycykpIGN0eC5jb2xv
cnMgPSBmYWxzZTsKKyAgaWYgKGlzVW5kZWZpbmVkKGN0eC5jdXN0b21JbnNwZWN0KSkgY3R4LmN1
c3RvbUluc3BlY3QgPSB0cnVlOworICBpZiAoY3R4LmNvbG9ycykgY3R4LnN0eWxpemUgPSBzdHls
aXplV2l0aENvbG9yOworICByZXR1cm4gZm9ybWF0VmFsdWUoY3R4LCBvYmosIGN0eC5kZXB0aCk7
Cit9CitleHBvcnRzLmluc3BlY3QgPSBpbnNwZWN0OworCisKKy8vIGh0dHA6Ly9lbi53aWtpcGVk
aWEub3JnL3dpa2kvQU5TSV9lc2NhcGVfY29kZSNncmFwaGljcworaW5zcGVjdC5jb2xvcnMgPSB7
CisgICdib2xkJyA6IFsxLCAyMl0sCisgICdpdGFsaWMnIDogWzMsIDIzXSwKKyAgJ3VuZGVybGlu
ZScgOiBbNCwgMjRdLAorICAnaW52ZXJzZScgOiBbNywgMjddLAorICAnd2hpdGUnIDogWzM3LCAz
OV0sCisgICdncmV5JyA6IFs5MCwgMzldLAorICAnYmxhY2snIDogWzMwLCAzOV0sCisgICdibHVl
JyA6IFszNCwgMzldLAorICAnY3lhbicgOiBbMzYsIDM5XSwKKyAgJ2dyZWVuJyA6IFszMiwgMzld
LAorICAnbWFnZW50YScgOiBbMzUsIDM5XSwKKyAgJ3JlZCcgOiBbMzEsIDM5XSwKKyAgJ3llbGxv
dycgOiBbMzMsIDM5XQorfTsKKworLy8gRG9uJ3QgdXNlICdibHVlJyBub3QgdmlzaWJsZSBvbiBj
bWQuZXhlCitpbnNwZWN0LnN0eWxlcyA9IHsKKyAgJ3NwZWNpYWwnOiAnY3lhbicsCisgICdudW1i
ZXInOiAneWVsbG93JywKKyAgJ2Jvb2xlYW4nOiAneWVsbG93JywKKyAgJ3VuZGVmaW5lZCc6ICdn
cmV5JywKKyAgJ251bGwnOiAnYm9sZCcsCisgICdzdHJpbmcnOiAnZ3JlZW4nLAorICAnZGF0ZSc6
ICdtYWdlbnRhJywKKyAgLy8gIm5hbWUiOiBpbnRlbnRpb25hbGx5IG5vdCBzdHlsaW5nCisgICdy
ZWdleHAnOiAncmVkJworfTsKKworCitmdW5jdGlvbiBzdHlsaXplV2l0aENvbG9yKHN0ciwgc3R5
bGVUeXBlKSB7CisgIHZhciBzdHlsZSA9IGluc3BlY3Quc3R5bGVzW3N0eWxlVHlwZV07CisKKyAg
aWYgKHN0eWxlKSB7CisgICAgcmV0dXJuICdcdTAwMWJbJyArIGluc3BlY3QuY29sb3JzW3N0eWxl
XVswXSArICdtJyArIHN0ciArCisgICAgICAgICAgICdcdTAwMWJbJyArIGluc3BlY3QuY29sb3Jz
W3N0eWxlXVsxXSArICdtJzsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gc3RyOworICB9Cit9CisK
KworZnVuY3Rpb24gc3R5bGl6ZU5vQ29sb3Ioc3RyLCBzdHlsZVR5cGUpIHsKKyAgcmV0dXJuIHN0
cjsKK30KKworCitmdW5jdGlvbiBhcnJheVRvSGFzaChhcnJheSkgeworICB2YXIgaGFzaCA9IHt9
OworCisgIGFycmF5LmZvckVhY2goZnVuY3Rpb24odmFsLCBpZHgpIHsKKyAgICBoYXNoW3ZhbF0g
PSB0cnVlOworICB9KTsKKworICByZXR1cm4gaGFzaDsKK30KKworCitmdW5jdGlvbiBmb3JtYXRW
YWx1ZShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMpIHsKKyAgLy8gUHJvdmlkZSBhIGhvb2sgZm9y
IHVzZXItc3BlY2lmaWVkIGluc3BlY3QgZnVuY3Rpb25zLgorICAvLyBDaGVjayB0aGF0IHZhbHVl
IGlzIGFuIG9iamVjdCB3aXRoIGFuIGluc3BlY3QgZnVuY3Rpb24gb24gaXQKKyAgaWYgKGN0eC5j
dXN0b21JbnNwZWN0ICYmCisgICAgICB2YWx1ZSAmJgorICAgICAgaXNGdW5jdGlvbih2YWx1ZS5p
bnNwZWN0KSAmJgorICAgICAgLy8gRmlsdGVyIG91dCB0aGUgdXRpbCBtb2R1bGUsIGl0J3MgaW5z
cGVjdCBmdW5jdGlvbiBpcyBzcGVjaWFsCisgICAgICB2YWx1ZS5pbnNwZWN0ICE9PSBleHBvcnRz
Lmluc3BlY3QgJiYKKyAgICAgIC8vIEFsc28gZmlsdGVyIG91dCBhbnkgcHJvdG90eXBlIG9iamVj
dHMgdXNpbmcgdGhlIGNpcmN1bGFyIGNoZWNrLgorICAgICAgISh2YWx1ZS5jb25zdHJ1Y3RvciAm
JiB2YWx1ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgPT09IHZhbHVlKSkgeworICAgIHZhciByZXQg
PSB2YWx1ZS5pbnNwZWN0KHJlY3Vyc2VUaW1lcywgY3R4KTsKKyAgICBpZiAoIWlzU3RyaW5nKHJl
dCkpIHsKKyAgICAgIHJldCA9IGZvcm1hdFZhbHVlKGN0eCwgcmV0LCByZWN1cnNlVGltZXMpOwor
ICAgIH0KKyAgICByZXR1cm4gcmV0OworICB9CisKKyAgLy8gUHJpbWl0aXZlIHR5cGVzIGNhbm5v
dCBoYXZlIHByb3BlcnRpZXMKKyAgdmFyIHByaW1pdGl2ZSA9IGZvcm1hdFByaW1pdGl2ZShjdHgs
IHZhbHVlKTsKKyAgaWYgKHByaW1pdGl2ZSkgeworICAgIHJldHVybiBwcmltaXRpdmU7CisgIH0K
KworICAvLyBMb29rIHVwIHRoZSBrZXlzIG9mIHRoZSBvYmplY3QuCisgIHZhciBrZXlzID0gT2Jq
ZWN0LmtleXModmFsdWUpOworICB2YXIgdmlzaWJsZUtleXMgPSBhcnJheVRvSGFzaChrZXlzKTsK
KworICBpZiAoY3R4LnNob3dIaWRkZW4pIHsKKyAgICBrZXlzID0gT2JqZWN0LmdldE93blByb3Bl
cnR5TmFtZXModmFsdWUpOworICB9CisKKyAgLy8gSUUgZG9lc24ndCBtYWtlIGVycm9yIGZpZWxk
cyBub24tZW51bWVyYWJsZQorICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xp
YnJhcnkvaWUvZHd3NTJzYnQodj12cy45NCkuYXNweAorICBpZiAoaXNFcnJvcih2YWx1ZSkKKyAg
ICAgICYmIChrZXlzLmluZGV4T2YoJ21lc3NhZ2UnKSA+PSAwIHx8IGtleXMuaW5kZXhPZignZGVz
Y3JpcHRpb24nKSA+PSAwKSkgeworICAgIHJldHVybiBmb3JtYXRFcnJvcih2YWx1ZSk7CisgIH0K
KworICAvLyBTb21lIHR5cGUgb2Ygb2JqZWN0IHdpdGhvdXQgcHJvcGVydGllcyBjYW4gYmUgc2hv
cnRjdXR0ZWQuCisgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgeworICAgIGlmIChpc0Z1bmN0aW9u
KHZhbHVlKSkgeworICAgICAgdmFyIG5hbWUgPSB2YWx1ZS5uYW1lID8gJzogJyArIHZhbHVlLm5h
bWUgOiAnJzsKKyAgICAgIHJldHVybiBjdHguc3R5bGl6ZSgnW0Z1bmN0aW9uJyArIG5hbWUgKyAn
XScsICdzcGVjaWFsJyk7CisgICAgfQorICAgIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHsKKyAgICAg
IHJldHVybiBjdHguc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUp
LCAncmVnZXhwJyk7CisgICAgfQorICAgIGlmIChpc0RhdGUodmFsdWUpKSB7CisgICAgICByZXR1
cm4gY3R4LnN0eWxpemUoRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdkYXRl
Jyk7CisgICAgfQorICAgIGlmIChpc0Vycm9yKHZhbHVlKSkgeworICAgICAgcmV0dXJuIGZvcm1h
dEVycm9yKHZhbHVlKTsKKyAgICB9CisgIH0KKworICB2YXIgYmFzZSA9ICcnLCBhcnJheSA9IGZh
bHNlLCBicmFjZXMgPSBbJ3snLCAnfSddOworCisgIC8vIE1ha2UgQXJyYXkgc2F5IHRoYXQgdGhl
eSBhcmUgQXJyYXkKKyAgaWYgKGlzQXJyYXkodmFsdWUpKSB7CisgICAgYXJyYXkgPSB0cnVlOwor
ICAgIGJyYWNlcyA9IFsnWycsICddJ107CisgIH0KKworICAvLyBNYWtlIGZ1bmN0aW9ucyBzYXkg
dGhhdCB0aGV5IGFyZSBmdW5jdGlvbnMKKyAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7CisgICAg
dmFyIG4gPSB2YWx1ZS5uYW1lID8gJzogJyArIHZhbHVlLm5hbWUgOiAnJzsKKyAgICBiYXNlID0g
JyBbRnVuY3Rpb24nICsgbiArICddJzsKKyAgfQorCisgIC8vIE1ha2UgUmVnRXhwcyBzYXkgdGhh
dCB0aGV5IGFyZSBSZWdFeHBzCisgIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHsKKyAgICBiYXNlID0g
JyAnICsgUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKTsKKyAgfQorCisgIC8v
IE1ha2UgZGF0ZXMgd2l0aCBwcm9wZXJ0aWVzIGZpcnN0IHNheSB0aGUgZGF0ZQorICBpZiAoaXNE
YXRlKHZhbHVlKSkgeworICAgIGJhc2UgPSAnICcgKyBEYXRlLnByb3RvdHlwZS50b1VUQ1N0cmlu
Zy5jYWxsKHZhbHVlKTsKKyAgfQorCisgIC8vIE1ha2UgZXJyb3Igd2l0aCBtZXNzYWdlIGZpcnN0
IHNheSB0aGUgZXJyb3IKKyAgaWYgKGlzRXJyb3IodmFsdWUpKSB7CisgICAgYmFzZSA9ICcgJyAr
IGZvcm1hdEVycm9yKHZhbHVlKTsKKyAgfQorCisgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCAmJiAo
IWFycmF5IHx8IHZhbHVlLmxlbmd0aCA9PSAwKSkgeworICAgIHJldHVybiBicmFjZXNbMF0gKyBi
YXNlICsgYnJhY2VzWzFdOworICB9CisKKyAgaWYgKHJlY3Vyc2VUaW1lcyA8IDApIHsKKyAgICBp
ZiAoaXNSZWdFeHAodmFsdWUpKSB7CisgICAgICByZXR1cm4gY3R4LnN0eWxpemUoUmVnRXhwLnBy
b3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSwgJ3JlZ2V4cCcpOworICAgIH0gZWxzZSB7Cisg
ICAgICByZXR1cm4gY3R4LnN0eWxpemUoJ1tPYmplY3RdJywgJ3NwZWNpYWwnKTsKKyAgICB9Cisg
IH0KKworICBjdHguc2Vlbi5wdXNoKHZhbHVlKTsKKworICB2YXIgb3V0cHV0OworICBpZiAoYXJy
YXkpIHsKKyAgICBvdXRwdXQgPSBmb3JtYXRBcnJheShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMs
IHZpc2libGVLZXlzLCBrZXlzKTsKKyAgfSBlbHNlIHsKKyAgICBvdXRwdXQgPSBrZXlzLm1hcChm
dW5jdGlvbihrZXkpIHsKKyAgICAgIHJldHVybiBmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCBy
ZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLCBrZXksIGFycmF5KTsKKyAgICB9KTsKKyAgfQorCisg
IGN0eC5zZWVuLnBvcCgpOworCisgIHJldHVybiByZWR1Y2VUb1NpbmdsZVN0cmluZyhvdXRwdXQs
IGJhc2UsIGJyYWNlcyk7Cit9CisKKworZnVuY3Rpb24gZm9ybWF0UHJpbWl0aXZlKGN0eCwgdmFs
dWUpIHsKKyAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlKSkKKyAgICByZXR1cm4gY3R4LnN0eWxpemUo
J3VuZGVmaW5lZCcsICd1bmRlZmluZWQnKTsKKyAgaWYgKGlzU3RyaW5nKHZhbHVlKSkgeworICAg
IHZhciBzaW1wbGUgPSAnXCcnICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpLnJlcGxhY2UoL14ifCIk
L2csICcnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJl
cGxhY2UoLycvZywgIlxcJyIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAucmVwbGFjZSgvXFwiL2csICciJykgKyAnXCcnOworICAgIHJldHVybiBjdHguc3R5
bGl6ZShzaW1wbGUsICdzdHJpbmcnKTsKKyAgfQorICBpZiAoaXNOdW1iZXIodmFsdWUpKQorICAg
IHJldHVybiBjdHguc3R5bGl6ZSgnJyArIHZhbHVlLCAnbnVtYmVyJyk7CisgIGlmIChpc0Jvb2xl
YW4odmFsdWUpKQorICAgIHJldHVybiBjdHguc3R5bGl6ZSgnJyArIHZhbHVlLCAnYm9vbGVhbicp
OworICAvLyBGb3Igc29tZSByZWFzb24gdHlwZW9mIG51bGwgaXMgIm9iamVjdCIsIHNvIHNwZWNp
YWwgY2FzZSBoZXJlLgorICBpZiAoaXNOdWxsKHZhbHVlKSkKKyAgICByZXR1cm4gY3R4LnN0eWxp
emUoJ251bGwnLCAnbnVsbCcpOworfQorCisKK2Z1bmN0aW9uIGZvcm1hdEVycm9yKHZhbHVlKSB7
CisgIHJldHVybiAnWycgKyBFcnJvci5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgKyAn
XSc7Cit9CisKKworZnVuY3Rpb24gZm9ybWF0QXJyYXkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVz
LCB2aXNpYmxlS2V5cywga2V5cykgeworICB2YXIgb3V0cHV0ID0gW107CisgIGZvciAodmFyIGkg
PSAwLCBsID0gdmFsdWUubGVuZ3RoOyBpIDwgbDsgKytpKSB7CisgICAgaWYgKGhhc093blByb3Bl
cnR5KHZhbHVlLCBTdHJpbmcoaSkpKSB7CisgICAgICBvdXRwdXQucHVzaChmb3JtYXRQcm9wZXJ0
eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLAorICAgICAgICAgIFN0cmlu
ZyhpKSwgdHJ1ZSkpOworICAgIH0gZWxzZSB7CisgICAgICBvdXRwdXQucHVzaCgnJyk7CisgICAg
fQorICB9CisgIGtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKKyAgICBpZiAoIWtleS5tYXRj
aCgvXlxkKyQvKSkgeworICAgICAgb3V0cHV0LnB1c2goZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1
ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywKKyAgICAgICAgICBrZXksIHRydWUpKTsKKyAg
ICB9CisgIH0pOworICByZXR1cm4gb3V0cHV0OworfQorCisKK2Z1bmN0aW9uIGZvcm1hdFByb3Bl
cnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleSwgYXJyYXkpIHsK
KyAgdmFyIG5hbWUsIHN0ciwgZGVzYzsKKyAgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IodmFsdWUsIGtleSkgfHwgeyB2YWx1ZTogdmFsdWVba2V5XSB9OworICBpZiAoZGVz
Yy5nZXQpIHsKKyAgICBpZiAoZGVzYy5zZXQpIHsKKyAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdb
R2V0dGVyL1NldHRlcl0nLCAnc3BlY2lhbCcpOworICAgIH0gZWxzZSB7CisgICAgICBzdHIgPSBj
dHguc3R5bGl6ZSgnW0dldHRlcl0nLCAnc3BlY2lhbCcpOworICAgIH0KKyAgfSBlbHNlIHsKKyAg
ICBpZiAoZGVzYy5zZXQpIHsKKyAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbU2V0dGVyXScsICdz
cGVjaWFsJyk7CisgICAgfQorICB9CisgIGlmICghaGFzT3duUHJvcGVydHkodmlzaWJsZUtleXMs
IGtleSkpIHsKKyAgICBuYW1lID0gJ1snICsga2V5ICsgJ10nOworICB9CisgIGlmICghc3RyKSB7
CisgICAgaWYgKGN0eC5zZWVuLmluZGV4T2YoZGVzYy52YWx1ZSkgPCAwKSB7CisgICAgICBpZiAo
aXNOdWxsKHJlY3Vyc2VUaW1lcykpIHsKKyAgICAgICAgc3RyID0gZm9ybWF0VmFsdWUoY3R4LCBk
ZXNjLnZhbHVlLCBudWxsKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHN0ciA9IGZvcm1hdFZh
bHVlKGN0eCwgZGVzYy52YWx1ZSwgcmVjdXJzZVRpbWVzIC0gMSk7CisgICAgICB9CisgICAgICBp
ZiAoc3RyLmluZGV4T2YoJ1xuJykgPiAtMSkgeworICAgICAgICBpZiAoYXJyYXkpIHsKKyAgICAg
ICAgICBzdHIgPSBzdHIuc3BsaXQoJ1xuJykubWFwKGZ1bmN0aW9uKGxpbmUpIHsKKyAgICAgICAg
ICAgIHJldHVybiAnICAnICsgbGluZTsKKyAgICAgICAgICB9KS5qb2luKCdcbicpLnN1YnN0cigy
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBzdHIgPSAnXG4nICsgc3RyLnNwbGl0KCdc
bicpLm1hcChmdW5jdGlvbihsaW5lKSB7CisgICAgICAgICAgICByZXR1cm4gJyAgICcgKyBsaW5l
OworICAgICAgICAgIH0pLmpvaW4oJ1xuJyk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IGVs
c2UgeworICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tDaXJjdWxhcl0nLCAnc3BlY2lhbCcpOwor
ICAgIH0KKyAgfQorICBpZiAoaXNVbmRlZmluZWQobmFtZSkpIHsKKyAgICBpZiAoYXJyYXkgJiYg
a2V5Lm1hdGNoKC9eXGQrJC8pKSB7CisgICAgICByZXR1cm4gc3RyOworICAgIH0KKyAgICBuYW1l
ID0gSlNPTi5zdHJpbmdpZnkoJycgKyBrZXkpOworICAgIGlmIChuYW1lLm1hdGNoKC9eIihbYS16
QS1aX11bYS16QS1aXzAtOV0qKSIkLykpIHsKKyAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cigxLCBu
YW1lLmxlbmd0aCAtIDIpOworICAgICAgbmFtZSA9IGN0eC5zdHlsaXplKG5hbWUsICduYW1lJyk7
CisgICAgfSBlbHNlIHsKKyAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoLycvZywgIlxcJyIpCisg
ICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXCIvZywgJyInKQorICAgICAgICAgICAgICAgICAu
cmVwbGFjZSgvKF4ifCIkKS9nLCAiJyIpOworICAgICAgbmFtZSA9IGN0eC5zdHlsaXplKG5hbWUs
ICdzdHJpbmcnKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gbmFtZSArICc6ICcgKyBzdHI7Cit9
CisKKworZnVuY3Rpb24gcmVkdWNlVG9TaW5nbGVTdHJpbmcob3V0cHV0LCBiYXNlLCBicmFjZXMp
IHsKKyAgdmFyIG51bUxpbmVzRXN0ID0gMDsKKyAgdmFyIGxlbmd0aCA9IG91dHB1dC5yZWR1Y2Uo
ZnVuY3Rpb24ocHJldiwgY3VyKSB7CisgICAgbnVtTGluZXNFc3QrKzsKKyAgICBpZiAoY3VyLmlu
ZGV4T2YoJ1xuJykgPj0gMCkgbnVtTGluZXNFc3QrKzsKKyAgICByZXR1cm4gcHJldiArIGN1ci5y
ZXBsYWNlKC9cdTAwMWJcW1xkXGQ/bS9nLCAnJykubGVuZ3RoICsgMTsKKyAgfSwgMCk7CisKKyAg
aWYgKGxlbmd0aCA+IDYwKSB7CisgICAgcmV0dXJuIGJyYWNlc1swXSArCisgICAgICAgICAgIChi
YXNlID09PSAnJyA/ICcnIDogYmFzZSArICdcbiAnKSArCisgICAgICAgICAgICcgJyArCisgICAg
ICAgICAgIG91dHB1dC5qb2luKCcsXG4gICcpICsKKyAgICAgICAgICAgJyAnICsKKyAgICAgICAg
ICAgYnJhY2VzWzFdOworICB9CisKKyAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyAnICcgKyBv
dXRwdXQuam9pbignLCAnKSArICcgJyArIGJyYWNlc1sxXTsKK30KKworCisvLyBOT1RFOiBUaGVz
ZSB0eXBlIGNoZWNraW5nIGZ1bmN0aW9ucyBpbnRlbnRpb25hbGx5IGRvbid0IHVzZSBgaW5zdGFu
Y2VvZmAKKy8vIGJlY2F1c2UgaXQgaXMgZnJhZ2lsZSBhbmQgY2FuIGJlIGVhc2lseSBmYWtlZCB3
aXRoIGBPYmplY3QuY3JlYXRlKClgLgorZnVuY3Rpb24gaXNBcnJheShhcikgeworICByZXR1cm4g
QXJyYXkuaXNBcnJheShhcik7Cit9CitleHBvcnRzLmlzQXJyYXkgPSBpc0FycmF5OworCitmdW5j
dGlvbiBpc0Jvb2xlYW4oYXJnKSB7CisgIHJldHVybiB0eXBlb2YgYXJnID09PSAnYm9vbGVhbic7
Cit9CitleHBvcnRzLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjsKKworZnVuY3Rpb24gaXNOdWxsKGFy
ZykgeworICByZXR1cm4gYXJnID09PSBudWxsOworfQorZXhwb3J0cy5pc051bGwgPSBpc051bGw7
CisKK2Z1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKGFyZykgeworICByZXR1cm4gYXJnID09IG51
bGw7Cit9CitleHBvcnRzLmlzTnVsbE9yVW5kZWZpbmVkID0gaXNOdWxsT3JVbmRlZmluZWQ7CisK
K2Z1bmN0aW9uIGlzTnVtYmVyKGFyZykgeworICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ251bWJl
cic7Cit9CitleHBvcnRzLmlzTnVtYmVyID0gaXNOdW1iZXI7CisKK2Z1bmN0aW9uIGlzU3RyaW5n
KGFyZykgeworICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ3N0cmluZyc7Cit9CitleHBvcnRzLmlz
U3RyaW5nID0gaXNTdHJpbmc7CisKK2Z1bmN0aW9uIGlzU3ltYm9sKGFyZykgeworICByZXR1cm4g
dHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCc7Cit9CitleHBvcnRzLmlzU3ltYm9sID0gaXNTeW1ib2w7
CisKK2Z1bmN0aW9uIGlzVW5kZWZpbmVkKGFyZykgeworICByZXR1cm4gYXJnID09PSB2b2lkIDA7
Cit9CitleHBvcnRzLmlzVW5kZWZpbmVkID0gaXNVbmRlZmluZWQ7CisKK2Z1bmN0aW9uIGlzUmVn
RXhwKHJlKSB7CisgIHJldHVybiBpc09iamVjdChyZSkgJiYgb2JqZWN0VG9TdHJpbmcocmUpID09
PSAnW29iamVjdCBSZWdFeHBdJzsKK30KK2V4cG9ydHMuaXNSZWdFeHAgPSBpc1JlZ0V4cDsKKwor
ZnVuY3Rpb24gaXNPYmplY3QoYXJnKSB7CisgIHJldHVybiB0eXBlb2YgYXJnID09PSAnb2JqZWN0
JyAmJiBhcmcgIT09IG51bGw7Cit9CitleHBvcnRzLmlzT2JqZWN0ID0gaXNPYmplY3Q7CisKK2Z1
bmN0aW9uIGlzRGF0ZShkKSB7CisgIHJldHVybiBpc09iamVjdChkKSAmJiBvYmplY3RUb1N0cmlu
ZyhkKSA9PT0gJ1tvYmplY3QgRGF0ZV0nOworfQorZXhwb3J0cy5pc0RhdGUgPSBpc0RhdGU7CisK
K2Z1bmN0aW9uIGlzRXJyb3IoZSkgeworICByZXR1cm4gaXNPYmplY3QoZSkgJiYKKyAgICAgIChv
YmplY3RUb1N0cmluZyhlKSA9PT0gJ1tvYmplY3QgRXJyb3JdJyB8fCBlIGluc3RhbmNlb2YgRXJy
b3IpOworfQorZXhwb3J0cy5pc0Vycm9yID0gaXNFcnJvcjsKKworZnVuY3Rpb24gaXNGdW5jdGlv
bihhcmcpIHsKKyAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbic7Cit9CitleHBvcnRz
LmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uOworCitmdW5jdGlvbiBpc1ByaW1pdGl2ZShhcmcpIHsK
KyAgcmV0dXJuIGFyZyA9PT0gbnVsbCB8fAorICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ2Jvb2xl
YW4nIHx8CisgICAgICAgICB0eXBlb2YgYXJnID09PSAnbnVtYmVyJyB8fAorICAgICAgICAgdHlw
ZW9mIGFyZyA9PT0gJ3N0cmluZycgfHwKKyAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wn
IHx8ICAvLyBFUzYgc3ltYm9sCisgICAgICAgICB0eXBlb2YgYXJnID09PSAndW5kZWZpbmVkJzsK
K30KK2V4cG9ydHMuaXNQcmltaXRpdmUgPSBpc1ByaW1pdGl2ZTsKKworZXhwb3J0cy5pc0J1ZmZl
ciA9IHJlcXVpcmUoJy4vc3VwcG9ydC9pc0J1ZmZlcicpOworCitmdW5jdGlvbiBvYmplY3RUb1N0
cmluZyhvKSB7CisgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobyk7Cit9
CisKKworZnVuY3Rpb24gcGFkKG4pIHsKKyAgcmV0dXJuIG4gPCAxMCA/ICcwJyArIG4udG9TdHJp
bmcoMTApIDogbi50b1N0cmluZygxMCk7Cit9CisKKwordmFyIG1vbnRocyA9IFsnSmFuJywgJ0Zl
YicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLAorICAg
ICAgICAgICAgICAnT2N0JywgJ05vdicsICdEZWMnXTsKKworLy8gMjYgRmViIDE2OjE5OjM0Citm
dW5jdGlvbiB0aW1lc3RhbXAoKSB7CisgIHZhciBkID0gbmV3IERhdGUoKTsKKyAgdmFyIHRpbWUg
PSBbcGFkKGQuZ2V0SG91cnMoKSksCisgICAgICAgICAgICAgIHBhZChkLmdldE1pbnV0ZXMoKSks
CisgICAgICAgICAgICAgIHBhZChkLmdldFNlY29uZHMoKSldLmpvaW4oJzonKTsKKyAgcmV0dXJu
IFtkLmdldERhdGUoKSwgbW9udGhzW2QuZ2V0TW9udGgoKV0sIHRpbWVdLmpvaW4oJyAnKTsKK30K
KworCisvLyBsb2cgaXMganVzdCBhIHRoaW4gd3JhcHBlciB0byBjb25zb2xlLmxvZyB0aGF0IHBy
ZXBlbmRzIGEgdGltZXN0YW1wCitleHBvcnRzLmxvZyA9IGZ1bmN0aW9uKCkgeworICBjb25zb2xl
LmxvZygnJXMgLSAlcycsIHRpbWVzdGFtcCgpLCBleHBvcnRzLmZvcm1hdC5hcHBseShleHBvcnRz
LCBhcmd1bWVudHMpKTsKK307CisKKworLyoqCisgKiBJbmhlcml0IHRoZSBwcm90b3R5cGUgbWV0
aG9kcyBmcm9tIG9uZSBjb25zdHJ1Y3RvciBpbnRvIGFub3RoZXIuCisgKgorICogVGhlIEZ1bmN0
aW9uLnByb3RvdHlwZS5pbmhlcml0cyBmcm9tIGxhbmcuanMgcmV3cml0dGVuIGFzIGEgc3RhbmRh
bG9uZQorICogZnVuY3Rpb24gKG5vdCBvbiBGdW5jdGlvbi5wcm90b3R5cGUpLiBOT1RFOiBJZiB0
aGlzIGZpbGUgaXMgdG8gYmUgbG9hZGVkCisgKiBkdXJpbmcgYm9vdHN0cmFwcGluZyB0aGlzIGZ1
bmN0aW9uIG5lZWRzIHRvIGJlIHJld3JpdHRlbiB1c2luZyBzb21lIG5hdGl2ZQorICogZnVuY3Rp
b25zIGFzIHByb3RvdHlwZSBzZXR1cCB1c2luZyBub3JtYWwgSmF2YVNjcmlwdCBkb2VzIG5vdCB3
b3JrIGFzCisgKiBleHBlY3RlZCBkdXJpbmcgYm9vdHN0cmFwcGluZyAoc2VlIG1pcnJvci5qcyBp
biByMTE0OTAzKS4KKyAqCisgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjdG9yIENvbnN0cnVjdG9yIGZ1
bmN0aW9uIHdoaWNoIG5lZWRzIHRvIGluaGVyaXQgdGhlCisgKiAgICAgcHJvdG90eXBlLgorICog
QHBhcmFtIHtmdW5jdGlvbn0gc3VwZXJDdG9yIENvbnN0cnVjdG9yIGZ1bmN0aW9uIHRvIGluaGVy
aXQgcHJvdG90eXBlIGZyb20uCisgKi8KK2V4cG9ydHMuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhl
cml0cycpOworCitleHBvcnRzLl9leHRlbmQgPSBmdW5jdGlvbihvcmlnaW4sIGFkZCkgeworICAv
LyBEb24ndCBkbyBhbnl0aGluZyBpZiBhZGQgaXNuJ3QgYW4gb2JqZWN0CisgIGlmICghYWRkIHx8
ICFpc09iamVjdChhZGQpKSByZXR1cm4gb3JpZ2luOworCisgIHZhciBrZXlzID0gT2JqZWN0Lmtl
eXMoYWRkKTsKKyAgdmFyIGkgPSBrZXlzLmxlbmd0aDsKKyAgd2hpbGUgKGktLSkgeworICAgIG9y
aWdpbltrZXlzW2ldXSA9IGFkZFtrZXlzW2ldXTsKKyAgfQorICByZXR1cm4gb3JpZ2luOworfTsK
KworZnVuY3Rpb24gaGFzT3duUHJvcGVydHkob2JqLCBwcm9wKSB7CisgIHJldHVybiBPYmplY3Qu
cHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsKK30KKworfSkuY2FsbCh0
aGlzLHJlcXVpcmUoJ19wcm9jZXNzJyksdHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgPyBn
bG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gInVuZGVmaW5lZCIgPyBzZWxmIDogdHlwZW9mIHdpbmRv
dyAhPT0gInVuZGVmaW5lZCIgPyB3aW5kb3cgOiB7fSkKK30seyIuL3N1cHBvcnQvaXNCdWZmZXIi
OjQsIl9wcm9jZXNzIjozLCJpbmhlcml0cyI6Mn1dLDY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxl
LGV4cG9ydHMpeworKGZ1bmN0aW9uIChnbG9iYWwpeworLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyhmdW5j
dGlvbiAoKSB7CisgICAgJ3VzZSBzdHJpY3QnOworCisgICAgLyogVG8gYnVuZGxlIGFsbCBjb2Rl
IGludG8gYnJvd3NlcmlmaWVkIEpTIGZpbGUsIGNhbGwgYHJlcXVpcmVgIHRvIHRoZSBlYWNoIHRl
c3QgZmlsZSBleHBsaWNpdGx5LgorICAgICAqIEFuZCBleHBvcnQgaXQgdG8gdGhlIGdsb2JhbCBu
YW1lc3BhY2UgYXMgYHByb21pc2VUZXN0c2AuCisgICAgICovCisgICAgZ2xvYmFsLnByb21pc2VU
ZXN0cyA9IHsKKyAgICAgICAgdGVzdHMyXzFfMjogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
cmV0dXJuIHJlcXVpcmUoJy4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMS4yJyk7CisgICAg
ICAgIH0sCisKKyAgICAgICAgdGVzdHMyXzFfMzogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
cmV0dXJuIHJlcXVpcmUoJy4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMS4zJyk7CisgICAg
ICAgIH0sCisKKyAgICAgICAgdGVzdHMyXzJfMTogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
cmV0dXJuIHJlcXVpcmUoJy4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi4xJyk7CisgICAg
ICAgIH0sCisKKyAgICAgICAgdGVzdHMyXzJfMjogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
cmV0dXJuIHJlcXVpcmUoJy4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi4yJyk7CisgICAg
ICAgIH0sCisKKyAgICAgICAgdGVzdHMyXzJfMzogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
cmV0dXJuIHJlcXVpcmUoJy4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi4zJyk7CisgICAg
ICAgIH0sCisKKyAgICAgICAgdGVzdHMyXzJfNDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
cmV0dXJuIHJlcXVpcmUoJy4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi40Jyk7CisgICAg
ICAgIH0sCisKKyAgICAgICAgdGVzdHMyXzJfNTogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
cmV0dXJuIHJlcXVpcmUoJy4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi41Jyk7CisgICAg
ICAgIH0sCisKKyAgICAgICAgdGVzdHMyXzJfNjogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
cmV0dXJuIHJlcXVpcmUoJy4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi42Jyk7CisgICAg
ICAgIH0sCisKKyAgICAgICAgdGVzdHMyXzJfNzogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
cmV0dXJuIHJlcXVpcmUoJy4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi43Jyk7CisgICAg
ICAgIH0sCisKKyAgICAgICAgdGVzdHMyXzNfMTogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
cmV0dXJuIHJlcXVpcmUoJy4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMy4xJyk7CisgICAg
ICAgIH0sCisKKyAgICAgICAgdGVzdHMyXzNfMjogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
cmV0dXJuIHJlcXVpcmUoJy4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMy4yJyk7CisgICAg
ICAgIH0sCisKKyAgICAgICAgdGVzdHMyXzNfMzogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
cmV0dXJuIHJlcXVpcmUoJy4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMy4zJyk7CisgICAg
ICAgIH0sCisKKyAgICAgICAgdGVzdHMyXzNfNDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
cmV0dXJuIHJlcXVpcmUoJy4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMy40Jyk7CisgICAg
ICAgIH0KKyAgICB9OworfSgpKTsKKworfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09ICJ1
bmRlZmluZWQiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICJ1bmRlZmluZWQiID8gc2VsZiA6
IHR5cGVvZiB3aW5kb3cgIT09ICJ1bmRlZmluZWQiID8gd2luZG93IDoge30pCit9LHsiLi9wcm9t
aXNlcy10ZXN0cy9saWIvdGVzdHMvMi4xLjIiOjcsIi4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3Rz
LzIuMS4zIjo4LCIuL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjIuMSI6OSwiLi9wcm9taXNl
cy10ZXN0cy9saWIvdGVzdHMvMi4yLjIiOjEwLCIuL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8y
LjIuMyI6MTEsIi4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi40IjoxMiwiLi9wcm9taXNl
cy10ZXN0cy9saWIvdGVzdHMvMi4yLjUiOjEzLCIuL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8y
LjIuNiI6MTQsIi4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi43IjoxNSwiLi9wcm9taXNl
cy10ZXN0cy9saWIvdGVzdHMvMi4zLjEiOjE2LCIuL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8y
LjMuMiI6MTcsIi4vcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMy4zIjoxOCwiLi9wcm9taXNl
cy10ZXN0cy9saWIvdGVzdHMvMi4zLjQiOjE5fV0sNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUs
ZXhwb3J0cyl7CisoZnVuY3Rpb24gKGdsb2JhbCl7CisidXNlIHN0cmljdCI7CisKK3ZhciBhc3Nl
cnQgPSByZXF1aXJlKCJhc3NlcnQiKTsKK3ZhciB0ZXN0RnVsZmlsbGVkID0gcmVxdWlyZSgiLi9o
ZWxwZXJzL3Rlc3RUaHJlZUNhc2VzIikudGVzdEZ1bGZpbGxlZDsKKwordmFyIGFkYXB0ZXIgPSBn
bG9iYWwuYWRhcHRlcjsKK3ZhciBkZWZlcnJlZCA9IGFkYXB0ZXIuZGVmZXJyZWQ7CisKK3ZhciBk
dW1teSA9IHsgZHVtbXk6ICJkdW1teSIgfTsgLy8gd2UgZnVsZmlsbCBvciByZWplY3Qgd2l0aCB0
aGlzIHdoZW4gd2UgZG9uJ3QgaW50ZW5kIHRvIHRlc3QgYWdhaW5zdCBpdAorCitkZXNjcmliZSgi
Mi4xLjIuMTogV2hlbiBmdWxmaWxsZWQsIGEgcHJvbWlzZTogbXVzdCBub3QgdHJhbnNpdGlvbiB0
byBhbnkgb3RoZXIgc3RhdGUuIiwgZnVuY3Rpb24gKCkgeworICAgIHRlc3RGdWxmaWxsZWQoZHVt
bXksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgIHZhciBvbkZ1bGZpbGxlZENh
bGxlZCA9IGZhbHNlOworCisgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxl
ZCgpIHsKKyAgICAgICAgICAgIG9uRnVsZmlsbGVkQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfSwg
ZnVuY3Rpb24gb25SZWplY3RlZCgpIHsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChv
bkZ1bGZpbGxlZENhbGxlZCwgZmFsc2UpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9
KTsKKworICAgICAgICBzZXRUaW1lb3V0KGRvbmUsIDEwMCk7CisgICAgfSk7CisKKyAgICBzcGVj
aWZ5KCJ0cnlpbmcgdG8gZnVsZmlsbCB0aGVuIGltbWVkaWF0ZWx5IHJlamVjdCIsIGZ1bmN0aW9u
IChkb25lKSB7CisgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgdmFyIG9uRnVs
ZmlsbGVkQ2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgZC5wcm9taXNlLnRoZW4oZnVuY3Rpb24g
b25GdWxmaWxsZWQoKSB7CisgICAgICAgICAgICBvbkZ1bGZpbGxlZENhbGxlZCA9IHRydWU7Cisg
ICAgICAgIH0sIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwob25GdWxmaWxsZWRDYWxsZWQsIGZhbHNlKTsKKyAgICAgICAgICAgIGRvbmUoKTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgZC5yZXNvbHZlKGR1bW15KTsKKyAgICAgICAgZC5yZWpl
Y3QoZHVtbXkpOworICAgICAgICBzZXRUaW1lb3V0KGRvbmUsIDEwMCk7CisgICAgfSk7CisKKyAg
ICBzcGVjaWZ5KCJ0cnlpbmcgdG8gZnVsZmlsbCB0aGVuIHJlamVjdCwgZGVsYXllZCIsIGZ1bmN0
aW9uIChkb25lKSB7CisgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgdmFyIG9u
RnVsZmlsbGVkQ2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgZC5wcm9taXNlLnRoZW4oZnVuY3Rp
b24gb25GdWxmaWxsZWQoKSB7CisgICAgICAgICAgICBvbkZ1bGZpbGxlZENhbGxlZCA9IHRydWU7
CisgICAgICAgIH0sIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwob25GdWxmaWxsZWRDYWxsZWQsIGZhbHNlKTsKKyAgICAgICAgICAgIGRvbmUo
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICBkLnJlc29sdmUoZHVtbXkpOworICAgICAgICAgICAgZC5yZWplY3QoZHVtbXkpOwor
ICAgICAgICB9LCA1MCk7CisgICAgICAgIHNldFRpbWVvdXQoZG9uZSwgMTAwKTsKKyAgICB9KTsK
KworICAgIHNwZWNpZnkoInRyeWluZyB0byBmdWxmaWxsIGltbWVkaWF0ZWx5IHRoZW4gcmVqZWN0
IGRlbGF5ZWQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7
CisgICAgICAgIHZhciBvbkZ1bGZpbGxlZENhbGxlZCA9IGZhbHNlOworCisgICAgICAgIGQucHJv
bWlzZS50aGVuKGZ1bmN0aW9uIG9uRnVsZmlsbGVkKCkgeworICAgICAgICAgICAgb25GdWxmaWxs
ZWRDYWxsZWQgPSB0cnVlOworICAgICAgICB9LCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9uRnVsZmlsbGVkQ2FsbGVkLCBmYWxzZSk7Cisg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0pOworCisgICAgICAgIGQucmVzb2x2ZShkdW1t
eSk7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZC5yZWpl
Y3QoZHVtbXkpOworICAgICAgICB9LCA1MCk7CisgICAgICAgIHNldFRpbWVvdXQoZG9uZSwgMTAw
KTsKKyAgICB9KTsKK30pOworCit9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gInVuZGVm
aW5lZCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gInVuZGVmaW5lZCIgPyBzZWxmIDogdHlw
ZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgPyB3aW5kb3cgOiB7fSkKK30seyIuL2hlbHBlcnMv
dGVzdFRocmVlQ2FzZXMiOjIxLCJhc3NlcnQiOjF9XSw4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVs
ZSxleHBvcnRzKXsKKyhmdW5jdGlvbiAoZ2xvYmFsKXsKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIGFz
c2VydCA9IHJlcXVpcmUoImFzc2VydCIpOwordmFyIHRlc3RSZWplY3RlZCA9IHJlcXVpcmUoIi4v
aGVscGVycy90ZXN0VGhyZWVDYXNlcyIpLnRlc3RSZWplY3RlZDsKKwordmFyIGFkYXB0ZXIgPSBn
bG9iYWwuYWRhcHRlcjsKK3ZhciBkZWZlcnJlZCA9IGFkYXB0ZXIuZGVmZXJyZWQ7CisKK3ZhciBk
dW1teSA9IHsgZHVtbXk6ICJkdW1teSIgfTsgLy8gd2UgZnVsZmlsbCBvciByZWplY3Qgd2l0aCB0
aGlzIHdoZW4gd2UgZG9uJ3QgaW50ZW5kIHRvIHRlc3QgYWdhaW5zdCBpdAorCitkZXNjcmliZSgi
Mi4xLjMuMTogV2hlbiByZWplY3RlZCwgYSBwcm9taXNlOiBtdXN0IG5vdCB0cmFuc2l0aW9uIHRv
IGFueSBvdGhlciBzdGF0ZS4iLCBmdW5jdGlvbiAoKSB7CisgICAgdGVzdFJlamVjdGVkKGR1bW15
LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICB2YXIgb25SZWplY3RlZENhbGxl
ZCA9IGZhbHNlOworCisgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgp
IHsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChvblJlamVjdGVkQ2FsbGVkLCBmYWxz
ZSk7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0sIGZ1bmN0aW9uIG9uUmVqZWN0ZWQo
KSB7CisgICAgICAgICAgICBvblJlamVjdGVkQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgc2V0VGltZW91dChkb25lLCAxMDApOworICAgIH0pOworCisgICAgc3BlY2lmeSgi
dHJ5aW5nIHRvIHJlamVjdCB0aGVuIGltbWVkaWF0ZWx5IGZ1bGZpbGwiLCBmdW5jdGlvbiAoZG9u
ZSkgeworICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgIHZhciBvblJlamVjdGVk
Q2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgZC5wcm9taXNlLnRoZW4oZnVuY3Rpb24gb25GdWxm
aWxsZWQoKSB7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwob25SZWplY3RlZENhbGxl
ZCwgZmFsc2UpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9LCBmdW5jdGlvbiBvblJl
amVjdGVkKCkgeworICAgICAgICAgICAgb25SZWplY3RlZENhbGxlZCA9IHRydWU7CisgICAgICAg
IH0pOworCisgICAgICAgIGQucmVqZWN0KGR1bW15KTsKKyAgICAgICAgZC5yZXNvbHZlKGR1bW15
KTsKKyAgICAgICAgc2V0VGltZW91dChkb25lLCAxMDApOworICAgIH0pOworCisgICAgc3BlY2lm
eSgidHJ5aW5nIHRvIHJlamVjdCB0aGVuIGZ1bGZpbGwsIGRlbGF5ZWQiLCBmdW5jdGlvbiAoZG9u
ZSkgeworICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgIHZhciBvblJlamVjdGVk
Q2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgZC5wcm9taXNlLnRoZW4oZnVuY3Rpb24gb25GdWxm
aWxsZWQoKSB7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwob25SZWplY3RlZENhbGxl
ZCwgZmFsc2UpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9LCBmdW5jdGlvbiBvblJl
amVjdGVkKCkgeworICAgICAgICAgICAgb25SZWplY3RlZENhbGxlZCA9IHRydWU7CisgICAgICAg
IH0pOworCisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZC5y
ZWplY3QoZHVtbXkpOworICAgICAgICAgICAgZC5yZXNvbHZlKGR1bW15KTsKKyAgICAgICAgfSwg
NTApOworICAgICAgICBzZXRUaW1lb3V0KGRvbmUsIDEwMCk7CisgICAgfSk7CisKKyAgICBzcGVj
aWZ5KCJ0cnlpbmcgdG8gcmVqZWN0IGltbWVkaWF0ZWx5IHRoZW4gZnVsZmlsbCBkZWxheWVkIiwg
ZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICB2
YXIgb25SZWplY3RlZENhbGxlZCA9IGZhbHNlOworCisgICAgICAgIGQucHJvbWlzZS50aGVuKGZ1
bmN0aW9uIG9uRnVsZmlsbGVkKCkgeworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9u
UmVqZWN0ZWRDYWxsZWQsIGZhbHNlKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfSwg
ZnVuY3Rpb24gb25SZWplY3RlZCgpIHsKKyAgICAgICAgICAgIG9uUmVqZWN0ZWRDYWxsZWQgPSB0
cnVlOworICAgICAgICB9KTsKKworICAgICAgICBkLnJlamVjdChkdW1teSk7CisgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZC5yZXNvbHZlKGR1bW15KTsKKyAg
ICAgICAgfSwgNTApOworICAgICAgICBzZXRUaW1lb3V0KGRvbmUsIDEwMCk7CisgICAgfSk7Cit9
KTsKKworfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09ICJ1bmRlZmluZWQiID8gZ2xvYmFs
IDogdHlwZW9mIHNlbGYgIT09ICJ1bmRlZmluZWQiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09
ICJ1bmRlZmluZWQiID8gd2luZG93IDoge30pCit9LHsiLi9oZWxwZXJzL3Rlc3RUaHJlZUNhc2Vz
IjoyMSwiYXNzZXJ0IjoxfV0sOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Ciso
ZnVuY3Rpb24gKGdsb2JhbCl7CisidXNlIHN0cmljdCI7CisKK3ZhciBhZGFwdGVyID0gZ2xvYmFs
LmFkYXB0ZXI7Cit2YXIgcmVzb2x2ZWQgPSBhZGFwdGVyLnJlc29sdmVkOwordmFyIHJlamVjdGVk
ID0gYWRhcHRlci5yZWplY3RlZDsKKwordmFyIGR1bW15ID0geyBkdW1teTogImR1bW15IiB9OyAv
LyB3ZSBmdWxmaWxsIG9yIHJlamVjdCB3aXRoIHRoaXMgd2hlbiB3ZSBkb24ndCBpbnRlbmQgdG8g
dGVzdCBhZ2FpbnN0IGl0CisKK2Rlc2NyaWJlKCIyLjIuMTogQm90aCBgb25GdWxmaWxsZWRgIGFu
ZCBgb25SZWplY3RlZGAgYXJlIG9wdGlvbmFsIGFyZ3VtZW50cy4iLCBmdW5jdGlvbiAoKSB7Cisg
ICAgZGVzY3JpYmUoIjIuMi4xLjE6IElmIGBvbkZ1bGZpbGxlZGAgaXMgbm90IGEgZnVuY3Rpb24s
IGl0IG11c3QgYmUgaWdub3JlZC4iLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRlc2NyaWJlKCJh
cHBsaWVkIHRvIGEgZGlyZWN0bHktcmVqZWN0ZWQgcHJvbWlzZSIsIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHRlc3ROb25GdW5jdGlvbihub25GdW5jdGlvbiwgc3RyaW5nUmVw
cmVzZW50YXRpb24pIHsKKyAgICAgICAgICAgICAgICBzcGVjaWZ5KCJgb25GdWxmaWxsZWRgIGlz
ICIgKyBzdHJpbmdSZXByZXNlbnRhdGlvbiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmVqZWN0ZWQoZHVtbXkpLnRoZW4obm9uRnVuY3Rpb24sIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRlc3RO
b25GdW5jdGlvbih1bmRlZmluZWQsICJgdW5kZWZpbmVkYCIpOworICAgICAgICAgICAgdGVzdE5v
bkZ1bmN0aW9uKG51bGwsICJgbnVsbGAiKTsKKyAgICAgICAgICAgIHRlc3ROb25GdW5jdGlvbihm
YWxzZSwgImBmYWxzZWAiKTsKKyAgICAgICAgICAgIHRlc3ROb25GdW5jdGlvbig1LCAiYDVgIik7
CisgICAgICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24oe30sICJhbiBvYmplY3QiKTsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgZGVzY3JpYmUoImFwcGxpZWQgdG8gYSBwcm9taXNlIHJlamVjdGVkIGFu
ZCB0aGVuIGNoYWluZWQgb2ZmIG9mIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZnVuY3Rp
b24gdGVzdE5vbkZ1bmN0aW9uKG5vbkZ1bmN0aW9uLCBzdHJpbmdSZXByZXNlbnRhdGlvbikgewor
ICAgICAgICAgICAgICAgIHNwZWNpZnkoImBvbkZ1bGZpbGxlZGAgaXMgIiArIHN0cmluZ1JlcHJl
c2VudGF0aW9uLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgICAgICAgICByZWplY3Rl
ZChkdW1teSkudGhlbihmdW5jdGlvbiAoKSB7IH0sIHVuZGVmaW5lZCkudGhlbihub25GdW5jdGlv
biwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdGVzdE5vbkZ1bmN0aW9uKHVuZGVmaW5lZCwgImB1bmRlZmluZWRgIik7Cisg
ICAgICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24obnVsbCwgImBudWxsYCIpOworICAgICAgICAgICAg
dGVzdE5vbkZ1bmN0aW9uKGZhbHNlLCAiYGZhbHNlYCIpOworICAgICAgICAgICAgdGVzdE5vbkZ1
bmN0aW9uKDUsICJgNWAiKTsKKyAgICAgICAgICAgIHRlc3ROb25GdW5jdGlvbih7fSwgImFuIG9i
amVjdCIpOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCIyLjIuMS4yOiBJ
ZiBgb25SZWplY3RlZGAgaXMgbm90IGEgZnVuY3Rpb24sIGl0IG11c3QgYmUgaWdub3JlZC4iLCBm
dW5jdGlvbiAoKSB7CisgICAgICAgIGRlc2NyaWJlKCJhcHBsaWVkIHRvIGEgZGlyZWN0bHktZnVs
ZmlsbGVkIHByb21pc2UiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0
Tm9uRnVuY3Rpb24obm9uRnVuY3Rpb24sIHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7CisgICAgICAg
ICAgICAgICAgc3BlY2lmeSgiYG9uUmVqZWN0ZWRgIGlzICIgKyBzdHJpbmdSZXByZXNlbnRhdGlv
biwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWQoZHVtbXkp
LnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAg
ICAgICAgICAgICAgICAgICB9LCBub25GdW5jdGlvbik7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRlc3ROb25GdW5jdGlvbih1bmRlZmluZWQsICJg
dW5kZWZpbmVkYCIpOworICAgICAgICAgICAgdGVzdE5vbkZ1bmN0aW9uKG51bGwsICJgbnVsbGAi
KTsKKyAgICAgICAgICAgIHRlc3ROb25GdW5jdGlvbihmYWxzZSwgImBmYWxzZWAiKTsKKyAgICAg
ICAgICAgIHRlc3ROb25GdW5jdGlvbig1LCAiYDVgIik7CisgICAgICAgICAgICB0ZXN0Tm9uRnVu
Y3Rpb24oe30sICJhbiBvYmplY3QiKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3JpYmUo
ImFwcGxpZWQgdG8gYSBwcm9taXNlIGZ1bGZpbGxlZCBhbmQgdGhlbiBjaGFpbmVkIG9mZiBvZiIs
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3ROb25GdW5jdGlvbihub25G
dW5jdGlvbiwgc3RyaW5nUmVwcmVzZW50YXRpb24pIHsKKyAgICAgICAgICAgICAgICBzcGVjaWZ5
KCJgb25GdWxmaWxsZWRgIGlzICIgKyBzdHJpbmdSZXByZXNlbnRhdGlvbiwgZnVuY3Rpb24gKGRv
bmUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWQoZHVtbXkpLnRoZW4odW5kZWZpbmVk
LCBmdW5jdGlvbiAoKSB7IH0pLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9LCBub25GdW5jdGlvbik7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRlc3ROb25GdW5j
dGlvbih1bmRlZmluZWQsICJgdW5kZWZpbmVkYCIpOworICAgICAgICAgICAgdGVzdE5vbkZ1bmN0
aW9uKG51bGwsICJgbnVsbGAiKTsKKyAgICAgICAgICAgIHRlc3ROb25GdW5jdGlvbihmYWxzZSwg
ImBmYWxzZWAiKTsKKyAgICAgICAgICAgIHRlc3ROb25GdW5jdGlvbig1LCAiYDVgIik7CisgICAg
ICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24oe30sICJhbiBvYmplY3QiKTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7Cit9KTsKKworfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09ICJ1bmRlZmluZWQi
ID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICJ1bmRlZmluZWQiID8gc2VsZiA6IHR5cGVvZiB3
aW5kb3cgIT09ICJ1bmRlZmluZWQiID8gd2luZG93IDoge30pCit9LHt9XSwxMDpbZnVuY3Rpb24o
cmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24gKGdsb2JhbCl7CisidXNlIHN0cmlj
dCI7CisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCJhc3NlcnQiKTsKK3ZhciB0ZXN0RnVsZmlsbGVk
ID0gcmVxdWlyZSgiLi9oZWxwZXJzL3Rlc3RUaHJlZUNhc2VzIikudGVzdEZ1bGZpbGxlZDsKKwor
dmFyIGFkYXB0ZXIgPSBnbG9iYWwuYWRhcHRlcjsKK3ZhciByZXNvbHZlZCA9IGFkYXB0ZXIucmVz
b2x2ZWQ7Cit2YXIgZGVmZXJyZWQgPSBhZGFwdGVyLmRlZmVycmVkOworCit2YXIgZHVtbXkgPSB7
IGR1bW15OiAiZHVtbXkiIH07IC8vIHdlIGZ1bGZpbGwgb3IgcmVqZWN0IHdpdGggdGhpcyB3aGVu
IHdlIGRvbid0IGludGVuZCB0byB0ZXN0IGFnYWluc3QgaXQKK3ZhciBzZW50aW5lbCA9IHsgc2Vu
dGluZWw6ICJzZW50aW5lbCIgfTsgLy8gYSBzZW50aW5lbCBmdWxmaWxsbWVudCB2YWx1ZSB0byB0
ZXN0IGZvciB3aXRoIHN0cmljdCBlcXVhbGl0eQorCitkZXNjcmliZSgiMi4yLjI6IElmIGBvbkZ1
bGZpbGxlZGAgaXMgYSBmdW5jdGlvbiwiLCBmdW5jdGlvbiAoKSB7CisgICAgZGVzY3JpYmUoIjIu
Mi4yLjE6IGl0IG11c3QgYmUgY2FsbGVkIGFmdGVyIGBwcm9taXNlYCBpcyBmdWxmaWxsZWQsIHdp
dGggYHByb21pc2Vg4oCZcyBmdWxmaWxsbWVudCB2YWx1ZSBhcyBpdHMgIiArCisgICAgICAgICAg
ICAgImZpcnN0IGFyZ3VtZW50LiIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGVzdEZ1bGZpbGxl
ZChzZW50aW5lbCwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgIHByb21p
c2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCh2YWx1ZSkgeworICAgICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbCh2YWx1ZSwgc2VudGluZWwpOworICAgICAgICAgICAgICAgIGRvbmUo
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJl
KCIyLjIuMi4yOiBpdCBtdXN0IG5vdCBiZSBjYWxsZWQgYmVmb3JlIGBwcm9taXNlYCBpcyBmdWxm
aWxsZWQiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHNwZWNpZnkoImZ1bGZpbGxlZCBhZnRlciBh
IGRlbGF5IiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgIHZhciBkID0gZGVmZXJyZWQo
KTsKKyAgICAgICAgICAgIHZhciBpc0Z1bGZpbGxlZCA9IGZhbHNlOworCisgICAgICAgICAgICBk
LnByb21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoaXNGdWxmaWxsZWQsIHRydWUpOworICAgICAgICAgICAgICAgIGRv
bmUoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICBkLnJlc29sdmUoZHVtbXkpOworICAgICAgICAgICAgICAg
IGlzRnVsZmlsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0sIDUwKTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgc3BlY2lmeSgibmV2ZXIgZnVsZmlsbGVkIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAg
ICAgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgICAgIHZhciBvbkZ1bGZpbGxl
ZENhbGxlZCA9IGZhbHNlOworCisgICAgICAgICAgICBkLnByb21pc2UudGhlbihmdW5jdGlvbiBv
bkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgICAgICBvbkZ1bGZpbGxlZENhbGxlZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChvbkZ1bGZpbGxlZENhbGxlZCwgZmFsc2UpOworICAgICAgICAgICAgICAgIGRvbmUoKTsK
KyAgICAgICAgICAgIH0sIDE1MCk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3Jp
YmUoIjIuMi4yLjM6IGl0IG11c3Qgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZS4iLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgIHNwZWNpZnkoImFscmVhZHktZnVsZmlsbGVkIiwgZnVuY3Rpb24g
KGRvbmUpIHsKKyAgICAgICAgICAgIHZhciB0aW1lc0NhbGxlZCA9IDA7CisKKyAgICAgICAgICAg
IHJlc29sdmVkKGR1bW15KS50aGVuKGZ1bmN0aW9uIG9uRnVsZmlsbGVkKCkgeworICAgICAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkLCAxKTsKKyAgICAgICAgICAg
ICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc3Bl
Y2lmeSgidHJ5aW5nIHRvIGZ1bGZpbGwgYSBwZW5kaW5nIHByb21pc2UgbW9yZSB0aGFuIG9uY2Us
IGltbWVkaWF0ZWx5IiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgIHZhciBkID0gZGVm
ZXJyZWQoKTsKKyAgICAgICAgICAgIHZhciB0aW1lc0NhbGxlZCA9IDA7CisKKyAgICAgICAgICAg
IGQucHJvbWlzZS50aGVuKGZ1bmN0aW9uIG9uRnVsZmlsbGVkKCkgeworICAgICAgICAgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkLCAxKTsKKyAgICAgICAgICAgICAgICBk
b25lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZC5yZXNvbHZlKGR1bW15KTsK
KyAgICAgICAgICAgIGQucmVzb2x2ZShkdW1teSk7CisgICAgICAgIH0pOworCisgICAgICAgIHNw
ZWNpZnkoInRyeWluZyB0byBmdWxmaWxsIGEgcGVuZGluZyBwcm9taXNlIG1vcmUgdGhhbiBvbmNl
LCBkZWxheWVkIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgIHZhciBkID0gZGVmZXJy
ZWQoKTsKKyAgICAgICAgICAgIHZhciB0aW1lc0NhbGxlZCA9IDA7CisKKyAgICAgICAgICAgIGQu
cHJvbWlzZS50aGVuKGZ1bmN0aW9uIG9uRnVsZmlsbGVkKCkgeworICAgICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkLCAxKTsKKyAgICAgICAgICAgICAgICBkb25l
KCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgZC5yZXNvbHZlKGR1bW15KTsKKyAgICAgICAgICAgICAgICBk
LnJlc29sdmUoZHVtbXkpOworICAgICAgICAgICAgfSwgNTApOworICAgICAgICB9KTsKKworICAg
ICAgICBzcGVjaWZ5KCJ0cnlpbmcgdG8gZnVsZmlsbCBhIHBlbmRpbmcgcHJvbWlzZSBtb3JlIHRo
YW4gb25jZSwgaW1tZWRpYXRlbHkgdGhlbiBkZWxheWVkIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAg
ICAgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgICAgIHZhciB0aW1lc0NhbGxl
ZCA9IDA7CisKKyAgICAgICAgICAgIGQucHJvbWlzZS50aGVuKGZ1bmN0aW9uIG9uRnVsZmlsbGVk
KCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkLCAx
KTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgZC5yZXNvbHZlKGR1bW15KTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgIGQucmVzb2x2ZShkdW1teSk7CisgICAgICAgICAgICB9LCA1MCk7
CisgICAgICAgIH0pOworCisgICAgICAgIHNwZWNpZnkoIndoZW4gbXVsdGlwbGUgYHRoZW5gIGNh
bGxzIGFyZSBtYWRlLCBzcGFjZWQgYXBhcnQgaW4gdGltZSIsIGZ1bmN0aW9uIChkb25lKSB7Cisg
ICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICB2YXIgdGltZXNDYWxs
ZWQgPSBbMCwgMCwgMF07CisKKyAgICAgICAgICAgIGQucHJvbWlzZS50aGVuKGZ1bmN0aW9uIG9u
RnVsZmlsbGVkKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVz
Q2FsbGVkWzBdLCAxKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBkLnByb21pc2UudGhlbihmdW5jdGlvbiBv
bkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCsr
dGltZXNDYWxsZWRbMV0sIDEpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSwg
NTApOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICBkLnByb21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCsrdGltZXNDYWxsZWRbMl0sIDEpOworICAgICAg
ICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
LCAxMDApOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICBkLnJlc29sdmUoZHVtbXkpOworICAgICAgICAgICAgfSwgMTUwKTsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgc3BlY2lmeSgid2hlbiBgdGhlbmAgaXMgaW50ZXJsZWF2ZWQgd2l0aCBm
dWxmaWxsbWVudCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICB2YXIgZCA9IGRlZmVy
cmVkKCk7CisgICAgICAgICAgICB2YXIgdGltZXNDYWxsZWQgPSBbMCwgMF07CisKKyAgICAgICAg
ICAgIGQucHJvbWlzZS50aGVuKGZ1bmN0aW9uIG9uRnVsZmlsbGVkKCkgeworICAgICAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkWzBdLCAxKTsKKyAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICBkLnJlc29sdmUoZHVtbXkpOworCisgICAgICAgICAgICBkLnBy
b21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwoKyt0aW1lc0NhbGxlZFsxXSwgMSk7CisgICAgICAgICAgICAgICAgZG9u
ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfSk7CisKK30pLmNh
bGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSAidW5kZWZpbmVkIiA/IGdsb2JhbCA6IHR5cGVvZiBz
ZWxmICE9PSAidW5kZWZpbmVkIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSAidW5kZWZpbmVk
IiA/IHdpbmRvdyA6IHt9KQorfSx7Ii4vaGVscGVycy90ZXN0VGhyZWVDYXNlcyI6MjEsImFzc2Vy
dCI6MX1dLDExOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyhmdW5jdGlvbiAo
Z2xvYmFsKXsKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIGFzc2VydCA9IHJlcXVpcmUoImFzc2VydCIp
OwordmFyIHRlc3RSZWplY3RlZCA9IHJlcXVpcmUoIi4vaGVscGVycy90ZXN0VGhyZWVDYXNlcyIp
LnRlc3RSZWplY3RlZDsKKwordmFyIGFkYXB0ZXIgPSBnbG9iYWwuYWRhcHRlcjsKK3ZhciByZWpl
Y3RlZCA9IGFkYXB0ZXIucmVqZWN0ZWQ7Cit2YXIgZGVmZXJyZWQgPSBhZGFwdGVyLmRlZmVycmVk
OworCit2YXIgZHVtbXkgPSB7IGR1bW15OiAiZHVtbXkiIH07IC8vIHdlIGZ1bGZpbGwgb3IgcmVq
ZWN0IHdpdGggdGhpcyB3aGVuIHdlIGRvbid0IGludGVuZCB0byB0ZXN0IGFnYWluc3QgaXQKK3Zh
ciBzZW50aW5lbCA9IHsgc2VudGluZWw6ICJzZW50aW5lbCIgfTsgLy8gYSBzZW50aW5lbCBmdWxm
aWxsbWVudCB2YWx1ZSB0byB0ZXN0IGZvciB3aXRoIHN0cmljdCBlcXVhbGl0eQorCitkZXNjcmli
ZSgiMi4yLjM6IElmIGBvblJlamVjdGVkYCBpcyBhIGZ1bmN0aW9uLCIsIGZ1bmN0aW9uICgpIHsK
KyAgICBkZXNjcmliZSgiMi4yLjMuMTogaXQgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgYHByb21pc2Vg
IGlzIHJlamVjdGVkLCB3aXRoIGBwcm9taXNlYOKAmXMgcmVqZWN0aW9uIHJlYXNvbiBhcyBpdHMg
IiArCisgICAgICAgICAgICAgImZpcnN0IGFyZ3VtZW50LiIsIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgdGVzdFJlamVjdGVkKHNlbnRpbmVsLCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAg
ICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUmVqZWN0ZWQocmVhc29uKSB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgc2VudGluZWwpOwor
ICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg
ICB9KTsKKworICAgIGRlc2NyaWJlKCIyLjIuMy4yOiBpdCBtdXN0IG5vdCBiZSBjYWxsZWQgYmVm
b3JlIGBwcm9taXNlYCBpcyByZWplY3RlZCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgc3BlY2lm
eSgicmVqZWN0ZWQgYWZ0ZXIgYSBkZWxheSIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAg
ICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICB2YXIgaXNSZWplY3RlZCA9IGZhbHNl
OworCisgICAgICAgICAgICBkLnByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBvblJlamVjdGVk
KCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc1JlamVjdGVkLCB0cnVl
KTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZC5yZWplY3QoZHVt
bXkpOworICAgICAgICAgICAgICAgIGlzUmVqZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgfSwg
NTApOworICAgICAgICB9KTsKKworICAgICAgICBzcGVjaWZ5KCJuZXZlciByZWplY3RlZCIsIGZ1
bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAg
ICAgICB2YXIgb25SZWplY3RlZENhbGxlZCA9IGZhbHNlOworCisgICAgICAgICAgICBkLnByb21p
c2UudGhlbihudWxsLCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAgICAgICAgICAgICAgIG9u
UmVqZWN0ZWRDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwob25SZWplY3RlZENhbGxlZCwgZmFsc2UpOworICAg
ICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0sIDE1MCk7CisgICAgICAgIH0pOwor
ICAgIH0pOworCisgICAgZGVzY3JpYmUoIjIuMi4zLjM6IGl0IG11c3Qgbm90IGJlIGNhbGxlZCBt
b3JlIHRoYW4gb25jZS4iLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHNwZWNpZnkoImFscmVhZHkt
cmVqZWN0ZWQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFyIHRpbWVzQ2FsbGVk
ID0gMDsKKworICAgICAgICAgICAgcmVqZWN0ZWQoZHVtbXkpLnRoZW4obnVsbCwgZnVuY3Rpb24g
b25SZWplY3RlZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoKyt0aW1l
c0NhbGxlZCwgMSk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0pOworCisgICAgICAgIHNwZWNpZnkoInRyeWluZyB0byByZWplY3QgYSBwZW5kaW5n
IHByb21pc2UgbW9yZSB0aGFuIG9uY2UsIGltbWVkaWF0ZWx5IiwgZnVuY3Rpb24gKGRvbmUpIHsK
KyAgICAgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgICAgIHZhciB0aW1lc0Nh
bGxlZCA9IDA7CisKKyAgICAgICAgICAgIGQucHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIG9u
UmVqZWN0ZWQoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCsrdGltZXND
YWxsZWQsIDEpOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICBkLnJlamVjdChkdW1teSk7CisgICAgICAgICAgICBkLnJlamVjdChkdW1teSk7
CisgICAgICAgIH0pOworCisgICAgICAgIHNwZWNpZnkoInRyeWluZyB0byByZWplY3QgYSBwZW5k
aW5nIHByb21pc2UgbW9yZSB0aGFuIG9uY2UsIGRlbGF5ZWQiLCBmdW5jdGlvbiAoZG9uZSkgewor
ICAgICAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAgICAgdmFyIHRpbWVzQ2Fs
bGVkID0gMDsKKworICAgICAgICAgICAgZC5wcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gb25S
ZWplY3RlZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoKyt0aW1lc0Nh
bGxlZCwgMSk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGQucmVq
ZWN0KGR1bW15KTsKKyAgICAgICAgICAgICAgICBkLnJlamVjdChkdW1teSk7CisgICAgICAgICAg
ICB9LCA1MCk7CisgICAgICAgIH0pOworCisgICAgICAgIHNwZWNpZnkoInRyeWluZyB0byByZWpl
Y3QgYSBwZW5kaW5nIHByb21pc2UgbW9yZSB0aGFuIG9uY2UsIGltbWVkaWF0ZWx5IHRoZW4gZGVs
YXllZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7
CisgICAgICAgICAgICB2YXIgdGltZXNDYWxsZWQgPSAwOworCisgICAgICAgICAgICBkLnByb21p
c2UudGhlbihudWxsLCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAgICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkLCAxKTsKKyAgICAgICAgICAgICAgICBkb25l
KCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZC5yZWplY3QoZHVtbXkpOworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZC5yZWpl
Y3QoZHVtbXkpOworICAgICAgICAgICAgfSwgNTApOworICAgICAgICB9KTsKKworICAgICAgICBz
cGVjaWZ5KCJ3aGVuIG11bHRpcGxlIGB0aGVuYCBjYWxscyBhcmUgbWFkZSwgc3BhY2VkIGFwYXJ0
IGluIHRpbWUiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFyIGQgPSBkZWZlcnJl
ZCgpOworICAgICAgICAgICAgdmFyIHRpbWVzQ2FsbGVkID0gWzAsIDAsIDBdOworCisgICAgICAg
ICAgICBkLnByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAgICAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkWzBdLCAxKTsKKyAgICAg
ICAgICAgIH0pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICBkLnByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBvblJlamVjdGVkKCkgewor
ICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoKyt0aW1lc0NhbGxlZFsxXSwg
MSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LCA1MCk7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGQucHJvbWlzZS50
aGVuKG51bGwsIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICAgICAgICAgIGFz
c2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkWzJdLCAxKTsKKyAgICAgICAgICAgICAgICAg
ICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSwgMTAwKTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZC5y
ZWplY3QoZHVtbXkpOworICAgICAgICAgICAgfSwgMTUwKTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgc3BlY2lmeSgid2hlbiBgdGhlbmAgaXMgaW50ZXJsZWF2ZWQgd2l0aCByZWplY3Rpb24iLCBm
dW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAg
ICAgICAgdmFyIHRpbWVzQ2FsbGVkID0gWzAsIDBdOworCisgICAgICAgICAgICBkLnByb21pc2Uu
dGhlbihudWxsLCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAgICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkWzBdLCAxKTsKKyAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICBkLnJlamVjdChkdW1teSk7CisKKyAgICAgICAgICAgIGQucHJvbWlzZS50aGVu
KG51bGwsIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKCsrdGltZXNDYWxsZWRbMV0sIDEpOworICAgICAgICAgICAgICAgIGRvbmUoKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30pOworCit9KS5jYWxsKHRo
aXMsdHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAh
PT0gInVuZGVmaW5lZCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgPyB3
aW5kb3cgOiB7fSkKK30seyIuL2hlbHBlcnMvdGVzdFRocmVlQ2FzZXMiOjIxLCJhc3NlcnQiOjF9
XSwxMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24gKGdsb2Jh
bCl7CisidXNlIHN0cmljdCI7CisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCJhc3NlcnQiKTsKK3Zh
ciB0ZXN0RnVsZmlsbGVkID0gcmVxdWlyZSgiLi9oZWxwZXJzL3Rlc3RUaHJlZUNhc2VzIikudGVz
dEZ1bGZpbGxlZDsKK3ZhciB0ZXN0UmVqZWN0ZWQgPSByZXF1aXJlKCIuL2hlbHBlcnMvdGVzdFRo
cmVlQ2FzZXMiKS50ZXN0UmVqZWN0ZWQ7CisKK3ZhciBhZGFwdGVyID0gZ2xvYmFsLmFkYXB0ZXI7
Cit2YXIgcmVzb2x2ZWQgPSBhZGFwdGVyLnJlc29sdmVkOwordmFyIHJlamVjdGVkID0gYWRhcHRl
ci5yZWplY3RlZDsKK3ZhciBkZWZlcnJlZCA9IGFkYXB0ZXIuZGVmZXJyZWQ7CisKK3ZhciBkdW1t
eSA9IHsgZHVtbXk6ICJkdW1teSIgfTsgLy8gd2UgZnVsZmlsbCBvciByZWplY3Qgd2l0aCB0aGlz
IHdoZW4gd2UgZG9uJ3QgaW50ZW5kIHRvIHRlc3QgYWdhaW5zdCBpdAorCitkZXNjcmliZSgiMi4y
LjQ6IGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIG11c3Qgbm90IGJlIGNhbGxlZCB1bnRp
bCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgc3RhY2sgY29udGFpbnMgb25seSAiICsKKyAgICAgICAg
ICJwbGF0Zm9ybSBjb2RlLiIsIGZ1bmN0aW9uICgpIHsKKyAgICBkZXNjcmliZSgiYHRoZW5gIHJl
dHVybnMgYmVmb3JlIHRoZSBwcm9taXNlIGJlY29tZXMgZnVsZmlsbGVkIG9yIHJlamVjdGVkIiwg
ZnVuY3Rpb24gKCkgeworICAgICAgICB0ZXN0RnVsZmlsbGVkKGR1bW15LCBmdW5jdGlvbiAocHJv
bWlzZSwgZG9uZSkgeworICAgICAgICAgICAgdmFyIHRoZW5IYXNSZXR1cm5lZCA9IGZhbHNlOwor
CisgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxsZWQoKSB7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRoZW5IYXNSZXR1cm5lZCwgdHJ1ZSk7Cisg
ICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHRo
ZW5IYXNSZXR1cm5lZCA9IHRydWU7CisgICAgICAgIH0pOworICAgICAgICB0ZXN0UmVqZWN0ZWQo
ZHVtbXksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICB2YXIgdGhlbkhh
c1JldHVybmVkID0gZmFsc2U7CisKKyAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5j
dGlvbiBvblJlamVjdGVkKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0
aGVuSGFzUmV0dXJuZWQsIHRydWUpOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICB0aGVuSGFzUmV0dXJuZWQgPSB0cnVlOworICAgICAgICB9
KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCJDbGVhbi1zdGFjayBleGVjdXRpb24gb3JkZXJp
bmcgdGVzdHMgKGZ1bGZpbGxtZW50IGNhc2UpIiwgZnVuY3Rpb24gKCkgeworICAgICAgICBzcGVj
aWZ5KCJ3aGVuIGBvbkZ1bGZpbGxlZGAgaXMgYWRkZWQgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBw
cm9taXNlIGlzIGZ1bGZpbGxlZCIsCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAgICAgdmFyIG9uRnVsZmlsbGVk
Q2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgICAgIGQucHJvbWlzZS50aGVuKGZ1bmN0aW9uIG9u
RnVsZmlsbGVkKCkgeworICAgICAgICAgICAgICAgIG9uRnVsZmlsbGVkQ2FsbGVkID0gdHJ1ZTsK
KyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBkLnJlc29sdmUoZHVtbXkpOworCisgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwob25GdWxmaWxsZWRDYWxsZWQsIGZhbHNlKTsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgc3BlY2lmeSgid2hlbiBgb25GdWxmaWxsZWRgIGlzIGFkZGVk
IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBwcm9taXNlIGlzIGZ1bGZpbGxlZCIsCisgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAg
ICAgICAgICAgdmFyIG9uRnVsZmlsbGVkQ2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgICAgIGQu
cmVzb2x2ZShkdW1teSk7CisKKyAgICAgICAgICAgIGQucHJvbWlzZS50aGVuKGZ1bmN0aW9uIG9u
RnVsZmlsbGVkKCkgeworICAgICAgICAgICAgICAgIG9uRnVsZmlsbGVkQ2FsbGVkID0gdHJ1ZTsK
KyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwob25GdWxm
aWxsZWRDYWxsZWQsIGZhbHNlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc3BlY2lmeSgid2hl
biBvbmUgYG9uRnVsZmlsbGVkYCBpcyBhZGRlZCBpbnNpZGUgYW5vdGhlciBgb25GdWxmaWxsZWRg
IiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgIHZhciBwcm9taXNlID0gcmVzb2x2ZWQo
KTsKKyAgICAgICAgICAgIHZhciBmaXJzdE9uRnVsZmlsbGVkRmluaXNoZWQgPSBmYWxzZTsKKwor
ICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBw
cm9taXNlLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwoZmlyc3RPbkZ1bGZpbGxlZEZpbmlzaGVkLCB0cnVlKTsKKyAgICAgICAgICAgICAg
ICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGZpcnN0
T25GdWxmaWxsZWRGaW5pc2hlZCA9IHRydWU7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgc3BlY2lmeSgid2hlbiBgb25GdWxmaWxsZWRgIGlzIGFkZGVkIGluc2lkZSBh
biBgb25SZWplY3RlZGAiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFyIHByb21p
c2UgPSByZWplY3RlZCgpOworICAgICAgICAgICAgdmFyIHByb21pc2UyID0gcmVzb2x2ZWQoKTsK
KyAgICAgICAgICAgIHZhciBmaXJzdE9uUmVqZWN0ZWRGaW5pc2hlZCA9IGZhbHNlOworCisgICAg
ICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
IHByb21pc2UyLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQu
c3RyaWN0RXF1YWwoZmlyc3RPblJlamVjdGVkRmluaXNoZWQsIHRydWUpOworICAgICAgICAgICAg
ICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgZmly
c3RPblJlamVjdGVkRmluaXNoZWQgPSB0cnVlOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OworCisgICAgICAgIHNwZWNpZnkoIndoZW4gdGhlIHByb21pc2UgaXMgZnVsZmlsbGVkIGFzeW5j
aHJvbm91c2x5IiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgIHZhciBkID0gZGVmZXJy
ZWQoKTsKKyAgICAgICAgICAgIHZhciBmaXJzdFN0YWNrRmluaXNoZWQgPSBmYWxzZTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZC5yZXNv
bHZlKGR1bW15KTsKKyAgICAgICAgICAgICAgICBmaXJzdFN0YWNrRmluaXNoZWQgPSB0cnVlOwor
ICAgICAgICAgICAgfSwgMCk7CisKKyAgICAgICAgICAgIGQucHJvbWlzZS50aGVuKGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZmlyc3RTdGFja0Zpbmlz
aGVkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgiQ2xlYW4tc3RhY2sgZXhlY3V0aW9u
IG9yZGVyaW5nIHRlc3RzIChyZWplY3Rpb24gY2FzZSkiLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
IHNwZWNpZnkoIndoZW4gYG9uUmVqZWN0ZWRgIGlzIGFkZGVkIGltbWVkaWF0ZWx5IGJlZm9yZSB0
aGUgcHJvbWlzZSBpcyByZWplY3RlZCIsCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAgICAgdmFyIG9uUmVqZWN0
ZWRDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICAgICAgZC5wcm9taXNlLnRoZW4obnVsbCwgZnVu
Y3Rpb24gb25SZWplY3RlZCgpIHsKKyAgICAgICAgICAgICAgICBvblJlamVjdGVkQ2FsbGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBkLnJlamVjdChkdW1teSk7CisK
KyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChvblJlamVjdGVkQ2FsbGVkLCBmYWxzZSk7
CisgICAgICAgIH0pOworCisgICAgICAgIHNwZWNpZnkoIndoZW4gYG9uUmVqZWN0ZWRgIGlzIGFk
ZGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIiwKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7Cisg
ICAgICAgICAgICB2YXIgb25SZWplY3RlZENhbGxlZCA9IGZhbHNlOworCisgICAgICAgICAgICBk
LnJlamVjdChkdW1teSk7CisKKyAgICAgICAgICAgIGQucHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0
aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICAgICAgb25SZWplY3RlZENhbGxlZCA9IHRy
dWU7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9u
UmVqZWN0ZWRDYWxsZWQsIGZhbHNlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc3BlY2lmeSgi
d2hlbiBgb25SZWplY3RlZGAgaXMgYWRkZWQgaW5zaWRlIGFuIGBvbkZ1bGZpbGxlZGAiLCBmdW5j
dGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFyIHByb21pc2UgPSByZXNvbHZlZCgpOworICAg
ICAgICAgICAgdmFyIHByb21pc2UyID0gcmVqZWN0ZWQoKTsKKyAgICAgICAgICAgIHZhciBmaXJz
dE9uRnVsZmlsbGVkRmluaXNoZWQgPSBmYWxzZTsKKworICAgICAgICAgICAgcHJvbWlzZS50aGVu
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlMi50aGVuKG51bGwsIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGZpcnN0T25G
dWxmaWxsZWRGaW5pc2hlZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBmaXJzdE9uRnVsZmlsbGVkRmluaXNo
ZWQgPSB0cnVlOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIHNwZWNp
ZnkoIndoZW4gb25lIGBvblJlamVjdGVkYCBpcyBhZGRlZCBpbnNpZGUgYW5vdGhlciBgb25SZWpl
Y3RlZGAiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFyIHByb21pc2UgPSByZWpl
Y3RlZCgpOworICAgICAgICAgICAgdmFyIGZpcnN0T25SZWplY3RlZEZpbmlzaGVkID0gZmFsc2U7
CisKKyAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGZpcnN0T25SZWplY3RlZEZpbmlzaGVkLCB0cnVlKTsK
KyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIGZpcnN0T25SZWplY3RlZEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9KTsKKworICAgICAgICBzcGVjaWZ5KCJ3aGVuIHRoZSBwcm9taXNlIGlzIHJl
amVjdGVkIGFzeW5jaHJvbm91c2x5IiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgICAgIHZh
ciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgICAgIHZhciBmaXJzdFN0YWNrRmluaXNoZWQgPSBm
YWxzZTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgZC5yZWplY3QoZHVtbXkpOworICAgICAgICAgICAgICAgIGZpcnN0U3RhY2tGaW5pc2hl
ZCA9IHRydWU7CisgICAgICAgICAgICB9LCAwKTsKKworICAgICAgICAgICAgZC5wcm9taXNlLnRo
ZW4obnVsbCwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChmaXJzdFN0YWNrRmluaXNoZWQsIHRydWUpOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30pOworCit9KS5jYWxsKHRoaXMs
dHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0g
InVuZGVmaW5lZCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgPyB3aW5k
b3cgOiB7fSkKK30seyIuL2hlbHBlcnMvdGVzdFRocmVlQ2FzZXMiOjIxLCJhc3NlcnQiOjF9XSwx
MzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24gKGdsb2JhbCl7
CisvKmpzaGludCBzdHJpY3Q6IGZhbHNlICovCisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCJhc3Nl
cnQiKTsKKwordmFyIGFkYXB0ZXIgPSBnbG9iYWwuYWRhcHRlcjsKK3ZhciByZXNvbHZlZCA9IGFk
YXB0ZXIucmVzb2x2ZWQ7Cit2YXIgcmVqZWN0ZWQgPSBhZGFwdGVyLnJlamVjdGVkOworCit2YXIg
ZHVtbXkgPSB7IGR1bW15OiAiZHVtbXkiIH07IC8vIHdlIGZ1bGZpbGwgb3IgcmVqZWN0IHdpdGgg
dGhpcyB3aGVuIHdlIGRvbid0IGludGVuZCB0byB0ZXN0IGFnYWluc3QgaXQKKworZGVzY3JpYmUo
IjIuMi41IGBvbkZ1bGZpbGxlZGAgYW5kIGBvblJlamVjdGVkYCBtdXN0IGJlIGNhbGxlZCBhcyBm
dW5jdGlvbnMgKGkuZS4gd2l0aCBubyBgdGhpc2AgdmFsdWUpLiIsIGZ1bmN0aW9uICgpIHsKKyAg
ICBkZXNjcmliZSgic3RyaWN0IG1vZGUiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHNwZWNpZnko
ImZ1bGZpbGxlZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICByZXNvbHZlZChkdW1t
eSkudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgICAgICAidXNlIHN0
cmljdCI7CisKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGhpcywgdW5kZWZp
bmVkKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgc3BlY2lmeSgicmVqZWN0ZWQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAg
ICAgICAgICAgcmVqZWN0ZWQoZHVtbXkpLnRoZW4obnVsbCwgZnVuY3Rpb24gb25SZWplY3RlZCgp
IHsKKyAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CisKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwodGhpcywgdW5kZWZpbmVkKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgi
c2xvcHB5IG1vZGUiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHNwZWNpZnkoImZ1bGZpbGxlZCIs
IGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICByZXNvbHZlZChkdW1teSkudGhlbihmdW5j
dGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
dGhpcywgZ2xvYmFsKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgc3BlY2lmeSgicmVqZWN0ZWQiLCBmdW5jdGlvbiAoZG9u
ZSkgeworICAgICAgICAgICAgcmVqZWN0ZWQoZHVtbXkpLnRoZW4obnVsbCwgZnVuY3Rpb24gb25S
ZWplY3RlZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGhpcywgZ2xv
YmFsKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisgICAgfSk7Cit9KTsKKworfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09ICJ1bmRl
ZmluZWQiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICJ1bmRlZmluZWQiID8gc2VsZiA6IHR5
cGVvZiB3aW5kb3cgIT09ICJ1bmRlZmluZWQiID8gd2luZG93IDoge30pCit9LHsiYXNzZXJ0Ijox
fV0sMTQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworInVzZSBzdHJpY3QiOwor
Cit2YXIgYXNzZXJ0ID0gcmVxdWlyZSgiYXNzZXJ0Iik7Cit2YXIgc2lub24gPSByZXF1aXJlKCJz
aW5vbiIpOwordmFyIHRlc3RGdWxmaWxsZWQgPSByZXF1aXJlKCIuL2hlbHBlcnMvdGVzdFRocmVl
Q2FzZXMiKS50ZXN0RnVsZmlsbGVkOwordmFyIHRlc3RSZWplY3RlZCA9IHJlcXVpcmUoIi4vaGVs
cGVycy90ZXN0VGhyZWVDYXNlcyIpLnRlc3RSZWplY3RlZDsKKwordmFyIGR1bW15ID0geyBkdW1t
eTogImR1bW15IiB9OyAvLyB3ZSBmdWxmaWxsIG9yIHJlamVjdCB3aXRoIHRoaXMgd2hlbiB3ZSBk
b24ndCBpbnRlbmQgdG8gdGVzdCBhZ2FpbnN0IGl0Cit2YXIgb3RoZXIgPSB7IG90aGVyOiAib3Ro
ZXIiIH07IC8vIGEgdmFsdWUgd2UgZG9uJ3Qgd2FudCB0byBiZSBzdHJpY3QgZXF1YWwgdG8KK3Zh
ciBzZW50aW5lbCA9IHsgc2VudGluZWw6ICJzZW50aW5lbCIgfTsgLy8gYSBzZW50aW5lbCBmdWxm
aWxsbWVudCB2YWx1ZSB0byB0ZXN0IGZvciB3aXRoIHN0cmljdCBlcXVhbGl0eQordmFyIHNlbnRp
bmVsMiA9IHsgc2VudGluZWwyOiAic2VudGluZWwyIiB9OwordmFyIHNlbnRpbmVsMyA9IHsgc2Vu
dGluZWwzOiAic2VudGluZWwzIiB9OworCitmdW5jdGlvbiBjYWxsYmFja0FnZ3JlZ2F0b3IodGlt
ZXMsIHVsdGltYXRlQ2FsbGJhY2spIHsKKyAgICB2YXIgc29GYXIgPSAwOworICAgIHJldHVybiBm
dW5jdGlvbiAoKSB7CisgICAgICAgIGlmICgrK3NvRmFyID09PSB0aW1lcykgeworICAgICAgICAg
ICAgdWx0aW1hdGVDYWxsYmFjaygpOworICAgICAgICB9CisgICAgfTsKK30KKworZGVzY3JpYmUo
IjIuMi42OiBgdGhlbmAgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBw
cm9taXNlLiIsIGZ1bmN0aW9uICgpIHsKKyAgICBkZXNjcmliZSgiMi4yLjYuMTogSWYvd2hlbiBg
cHJvbWlzZWAgaXMgZnVsZmlsbGVkLCBhbGwgcmVzcGVjdGl2ZSBgb25GdWxmaWxsZWRgIGNhbGxi
YWNrcyBtdXN0IGV4ZWN1dGUgaW4gdGhlICIgKworICAgICAgICAgICAgICJvcmRlciBvZiB0aGVp
ciBvcmlnaW5hdGluZyBjYWxscyB0byBgdGhlbmAuIiwgZnVuY3Rpb24gKCkgeworICAgICAgICBk
ZXNjcmliZSgibXVsdGlwbGUgYm9yaW5nIGZ1bGZpbGxtZW50IGhhbmRsZXJzIiwgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgdGVzdEZ1bGZpbGxlZChzZW50aW5lbCwgZnVuY3Rpb24gKHByb21p
c2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICB2YXIgaGFuZGxlcjEgPSBzaW5vbi5zdHViKCku
cmV0dXJucyhvdGhlcik7CisgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIyID0gc2lub24uc3R1
YigpLnJldHVybnMob3RoZXIpOworICAgICAgICAgICAgICAgIHZhciBoYW5kbGVyMyA9IHNpbm9u
LnN0dWIoKS5yZXR1cm5zKG90aGVyKTsKKworICAgICAgICAgICAgICAgIHZhciBzcHkgPSBzaW5v
bi5zcHkoKTsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oaGFuZGxlcjEsIHNweSk7Cisg
ICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGhhbmRsZXIyLCBzcHkpOworICAgICAgICAgICAg
ICAgIHByb21pc2UudGhlbihoYW5kbGVyMywgc3B5KTsKKworICAgICAgICAgICAgICAgIHByb21p
c2UudGhlbihmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHZhbHVlLCBzZW50aW5lbCk7CisKKyAgICAgICAgICAgICAgICAgICAgc2lub24u
YXNzZXJ0LmNhbGxlZFdpdGgoaGFuZGxlcjEsIHNpbm9uLm1hdGNoLnNhbWUoc2VudGluZWwpKTsK
KyAgICAgICAgICAgICAgICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgoaGFuZGxlcjIsIHNp
bm9uLm1hdGNoLnNhbWUoc2VudGluZWwpKTsKKyAgICAgICAgICAgICAgICAgICAgc2lub24uYXNz
ZXJ0LmNhbGxlZFdpdGgoaGFuZGxlcjMsIHNpbm9uLm1hdGNoLnNhbWUoc2VudGluZWwpKTsKKyAg
ICAgICAgICAgICAgICAgICAgc2lub24uYXNzZXJ0Lm5vdENhbGxlZChzcHkpOworCisgICAgICAg
ICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9KTsKKworICAgICAgICBkZXNjcmliZSgibXVsdGlwbGUgZnVsZmlsbG1lbnQg
aGFuZGxlcnMsIG9uZSBvZiB3aGljaCB0aHJvd3MiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICB0ZXN0RnVsZmlsbGVkKHNlbnRpbmVsLCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAg
ICAgICAgICAgICAgIHZhciBoYW5kbGVyMSA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG90aGVyKTsK
KyAgICAgICAgICAgICAgICB2YXIgaGFuZGxlcjIgPSBzaW5vbi5zdHViKCkudGhyb3dzKG90aGVy
KTsKKyAgICAgICAgICAgICAgICB2YXIgaGFuZGxlcjMgPSBzaW5vbi5zdHViKCkucmV0dXJucyhv
dGhlcik7CisKKyAgICAgICAgICAgICAgICB2YXIgc3B5ID0gc2lub24uc3B5KCk7CisgICAgICAg
ICAgICAgICAgcHJvbWlzZS50aGVuKGhhbmRsZXIxLCBzcHkpOworICAgICAgICAgICAgICAgIHBy
b21pc2UudGhlbihoYW5kbGVyMiwgc3B5KTsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4o
aGFuZGxlcjMsIHNweSk7CisKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24g
KHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWx1ZSwg
c2VudGluZWwpOworCisgICAgICAgICAgICAgICAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRo
KGhhbmRsZXIxLCBzaW5vbi5tYXRjaC5zYW1lKHNlbnRpbmVsKSk7CisgICAgICAgICAgICAgICAg
ICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKGhhbmRsZXIyLCBzaW5vbi5tYXRjaC5zYW1lKHNl
bnRpbmVsKSk7CisgICAgICAgICAgICAgICAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKGhh
bmRsZXIzLCBzaW5vbi5tYXRjaC5zYW1lKHNlbnRpbmVsKSk7CisgICAgICAgICAgICAgICAgICAg
IHNpbm9uLmFzc2VydC5ub3RDYWxsZWQoc3B5KTsKKworICAgICAgICAgICAgICAgICAgICBkb25l
KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgZGVzY3JpYmUoInJlc3VsdHMgaW4gbXVsdGlwbGUgYnJhbmNoaW5nIGNoYWlucyB3
aXRoIHRoZWlyIG93biBmdWxmaWxsbWVudCB2YWx1ZXMiLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICB0ZXN0RnVsZmlsbGVkKGR1bW15LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAg
ICAgICAgICAgICAgIHZhciBzZW1pRG9uZSA9IGNhbGxiYWNrQWdncmVnYXRvcigzLCBkb25lKTsK
KworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzZW50aW5lbDsKKyAgICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0
aW9uICh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFs
dWUsIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtaURvbmUoKTsKKyAgICAgICAg
ICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgIHRocm93IHNlbnRpbmVsMjsKKyAgICAgICAgICAgICAgICB9
KS50aGVuKG51bGwsIGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgc2VudGluZWwyKTsKKyAgICAgICAgICAgICAgICAgICAg
c2VtaURvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIHByb21p
c2UudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW50aW5l
bDM7CisgICAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbHVlLCBzZW50aW5lbDMpOworICAgICAg
ICAgICAgICAgICAgICBzZW1pRG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGRlc2NyaWJlKCJgb25GdWxmaWxsZWRgIGhh
bmRsZXJzIGFyZSBjYWxsZWQgaW4gdGhlIG9yaWdpbmFsIG9yZGVyIiwgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgdGVzdEZ1bGZpbGxlZChkdW1teSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUp
IHsKKyAgICAgICAgICAgICAgICB2YXIgaGFuZGxlcjEgPSBzaW5vbi5zcHkoZnVuY3Rpb24gaGFu
ZGxlcjEoKSB7fSk7CisgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIyID0gc2lub24uc3B5KGZ1
bmN0aW9uIGhhbmRsZXIyKCkge30pOworICAgICAgICAgICAgICAgIHZhciBoYW5kbGVyMyA9IHNp
bm9uLnNweShmdW5jdGlvbiBoYW5kbGVyMygpIHt9KTsKKworICAgICAgICAgICAgICAgIHByb21p
c2UudGhlbihoYW5kbGVyMSk7CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGhhbmRsZXIy
KTsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oaGFuZGxlcjMpOworCisgICAgICAgICAg
ICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgc2lu
b24uYXNzZXJ0LmNhbGxPcmRlcihoYW5kbGVyMSwgaGFuZGxlcjIsIGhhbmRsZXIzKTsKKyAgICAg
ICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJldmVuIHdoZW4gb25lIGhhbmRsZXIgaXMgYWRk
ZWQgaW5zaWRlIGFub3RoZXIgaGFuZGxlciIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICB0ZXN0RnVsZmlsbGVkKGR1bW15LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAg
ICAgICAgICAgICAgICB2YXIgaGFuZGxlcjEgPSBzaW5vbi5zcHkoZnVuY3Rpb24gaGFuZGxlcjEo
KSB7fSk7CisgICAgICAgICAgICAgICAgICAgIHZhciBoYW5kbGVyMiA9IHNpbm9uLnNweShmdW5j
dGlvbiBoYW5kbGVyMigpIHt9KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIzID0g
c2lub24uc3B5KGZ1bmN0aW9uIGhhbmRsZXIzKCkge30pOworCisgICAgICAgICAgICAgICAgICAg
IHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBoYW5k
bGVyMSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGhhbmRsZXIzKTsK
KyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhl
bihoYW5kbGVyMik7CisKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdpdmUgaW1wbGVtZW50YXRpb25zIGEg
Yml0IG9mIGV4dHJhIHRpbWUgdG8gZmx1c2ggdGhlaXIgaW50ZXJuYWwgcXVldWUsIGlmIG5lY2Vz
c2FyeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbm9uLmFzc2VydC5jYWxsT3JkZXIoaGFuZGxl
cjEsIGhhbmRsZXIyLCBoYW5kbGVyMyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9u
ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTUpOworICAgICAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsK
KyAgICB9KTsKKworICAgIGRlc2NyaWJlKCIyLjIuNi4yOiBJZi93aGVuIGBwcm9taXNlYCBpcyBy
ZWplY3RlZCwgYWxsIHJlc3BlY3RpdmUgYG9uUmVqZWN0ZWRgIGNhbGxiYWNrcyBtdXN0IGV4ZWN1
dGUgaW4gdGhlICIgKworICAgICAgICAgICAgICJvcmRlciBvZiB0aGVpciBvcmlnaW5hdGluZyBj
YWxscyB0byBgdGhlbmAuIiwgZnVuY3Rpb24gKCkgeworICAgICAgICBkZXNjcmliZSgibXVsdGlw
bGUgYm9yaW5nIHJlamVjdGlvbiBoYW5kbGVycyIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IHRlc3RSZWplY3RlZChzZW50aW5lbCwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAg
ICAgICAgICAgICB2YXIgaGFuZGxlcjEgPSBzaW5vbi5zdHViKCkucmV0dXJucyhvdGhlcik7Cisg
ICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIyID0gc2lub24uc3R1YigpLnJldHVybnMob3RoZXIp
OworICAgICAgICAgICAgICAgIHZhciBoYW5kbGVyMyA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG90
aGVyKTsKKworICAgICAgICAgICAgICAgIHZhciBzcHkgPSBzaW5vbi5zcHkoKTsKKyAgICAgICAg
ICAgICAgICBwcm9taXNlLnRoZW4oc3B5LCBoYW5kbGVyMSk7CisgICAgICAgICAgICAgICAgcHJv
bWlzZS50aGVuKHNweSwgaGFuZGxlcjIpOworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihz
cHksIGhhbmRsZXIzKTsKKworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5j
dGlvbiAocmVhc29uKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChy
ZWFzb24sIHNlbnRpbmVsKTsKKworICAgICAgICAgICAgICAgICAgICBzaW5vbi5hc3NlcnQuY2Fs
bGVkV2l0aChoYW5kbGVyMSwgc2lub24ubWF0Y2guc2FtZShzZW50aW5lbCkpOworICAgICAgICAg
ICAgICAgICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChoYW5kbGVyMiwgc2lub24ubWF0Y2gu
c2FtZShzZW50aW5lbCkpOworICAgICAgICAgICAgICAgICAgICBzaW5vbi5hc3NlcnQuY2FsbGVk
V2l0aChoYW5kbGVyMywgc2lub24ubWF0Y2guc2FtZShzZW50aW5lbCkpOworICAgICAgICAgICAg
ICAgICAgICBzaW5vbi5hc3NlcnQubm90Q2FsbGVkKHNweSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworCisgICAgICAgIGRlc2NyaWJlKCJtdWx0aXBsZSByZWplY3Rpb24gaGFuZGxlcnMsIG9u
ZSBvZiB3aGljaCB0aHJvd3MiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0UmVqZWN0
ZWQoc2VudGluZWwsIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAg
dmFyIGhhbmRsZXIxID0gc2lub24uc3R1YigpLnJldHVybnMob3RoZXIpOworICAgICAgICAgICAg
ICAgIHZhciBoYW5kbGVyMiA9IHNpbm9uLnN0dWIoKS50aHJvd3Mob3RoZXIpOworICAgICAgICAg
ICAgICAgIHZhciBoYW5kbGVyMyA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG90aGVyKTsKKworICAg
ICAgICAgICAgICAgIHZhciBzcHkgPSBzaW5vbi5zcHkoKTsKKyAgICAgICAgICAgICAgICBwcm9t
aXNlLnRoZW4oc3B5LCBoYW5kbGVyMSk7CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKHNw
eSwgaGFuZGxlcjIpOworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihzcHksIGhhbmRsZXIz
KTsKKworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiAocmVhc29u
KSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZWFzb24sIHNlbnRp
bmVsKTsKKworICAgICAgICAgICAgICAgICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChoYW5k
bGVyMSwgc2lub24ubWF0Y2guc2FtZShzZW50aW5lbCkpOworICAgICAgICAgICAgICAgICAgICBz
aW5vbi5hc3NlcnQuY2FsbGVkV2l0aChoYW5kbGVyMiwgc2lub24ubWF0Y2guc2FtZShzZW50aW5l
bCkpOworICAgICAgICAgICAgICAgICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChoYW5kbGVy
Mywgc2lub24ubWF0Y2guc2FtZShzZW50aW5lbCkpOworICAgICAgICAgICAgICAgICAgICBzaW5v
bi5hc3NlcnQubm90Q2FsbGVkKHNweSk7CisKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAg
ICAgIGRlc2NyaWJlKCJyZXN1bHRzIGluIG11bHRpcGxlIGJyYW5jaGluZyBjaGFpbnMgd2l0aCB0
aGVpciBvd24gZnVsZmlsbG1lbnQgdmFsdWVzIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
dGVzdFJlamVjdGVkKHNlbnRpbmVsLCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAg
ICAgICAgICAgIHZhciBzZW1pRG9uZSA9IGNhbGxiYWNrQWdncmVnYXRvcigzLCBkb25lKTsKKwor
ICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzZW50aW5lbDsKKyAgICAgICAgICAgICAgICB9KS50aGVuKGZ1
bmN0aW9uICh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
dmFsdWUsIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtaURvbmUoKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IHNlbnRpbmVsMjsKKyAgICAgICAg
ICAgICAgICB9KS50aGVuKG51bGwsIGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgc2VudGluZWwyKTsKKyAgICAgICAgICAg
ICAgICAgICAgc2VtaURvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
ICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBzZW50aW5lbDM7CisgICAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAodmFs
dWUpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbHVlLCBzZW50
aW5lbDMpOworICAgICAgICAgICAgICAgICAgICBzZW1pRG9uZSgpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGRlc2NyaWJlKCJg
b25SZWplY3RlZGAgaGFuZGxlcnMgYXJlIGNhbGxlZCBpbiB0aGUgb3JpZ2luYWwgb3JkZXIiLCBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0UmVqZWN0ZWQoZHVtbXksIGZ1bmN0aW9uIChw
cm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIxID0gc2lub24uc3B5
KGZ1bmN0aW9uIGhhbmRsZXIxKCkge30pOworICAgICAgICAgICAgICAgIHZhciBoYW5kbGVyMiA9
IHNpbm9uLnNweShmdW5jdGlvbiBoYW5kbGVyMigpIHt9KTsKKyAgICAgICAgICAgICAgICB2YXIg
aGFuZGxlcjMgPSBzaW5vbi5zcHkoZnVuY3Rpb24gaGFuZGxlcjMoKSB7fSk7CisKKyAgICAgICAg
ICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgaGFuZGxlcjEpOworICAgICAgICAgICAgICAgIHBy
b21pc2UudGhlbihudWxsLCBoYW5kbGVyMik7CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVu
KG51bGwsIGhhbmRsZXIzKTsKKworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHNpbm9uLmFzc2VydC5jYWxsT3JkZXIo
aGFuZGxlcjEsIGhhbmRsZXIyLCBoYW5kbGVyMyk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUo
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBk
ZXNjcmliZSgiZXZlbiB3aGVuIG9uZSBoYW5kbGVyIGlzIGFkZGVkIGluc2lkZSBhbm90aGVyIGhh
bmRsZXIiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdGVzdFJlamVjdGVkKGR1bW15
LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgaGFu
ZGxlcjEgPSBzaW5vbi5zcHkoZnVuY3Rpb24gaGFuZGxlcjEoKSB7fSk7CisgICAgICAgICAgICAg
ICAgICAgIHZhciBoYW5kbGVyMiA9IHNpbm9uLnNweShmdW5jdGlvbiBoYW5kbGVyMigpIHt9KTsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIzID0gc2lub24uc3B5KGZ1bmN0aW9uIGhh
bmRsZXIzKCkge30pOworCisgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyMSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGhhbmRsZXIzKTsKKyAgICAgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBo
YW5kbGVyMik7CisKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdpdmUgaW1wbGVtZW50YXRpb25z
IGEgYml0IG9mIGV4dHJhIHRpbWUgdG8gZmx1c2ggdGhlaXIgaW50ZXJuYWwgcXVldWUsIGlmIG5l
Y2Vzc2FyeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbm9uLmFzc2VydC5jYWxsT3JkZXIoaGFu
ZGxlcjEsIGhhbmRsZXIyLCBoYW5kbGVyMyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG9uZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTUpOworICAgICAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKyAgICB9KTsKK30pOworCit9LHsiLi9oZWxwZXJzL3Rlc3RUaHJlZUNhc2VzIjoyMSwiYXNz
ZXJ0IjoxLCJzaW5vbiI6MjN9XSwxNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7
CisoZnVuY3Rpb24gKGdsb2JhbCl7CisidXNlIHN0cmljdCI7CisKK3ZhciBhc3NlcnQgPSByZXF1
aXJlKCJhc3NlcnQiKTsKK3ZhciB0ZXN0RnVsZmlsbGVkID0gcmVxdWlyZSgiLi9oZWxwZXJzL3Rl
c3RUaHJlZUNhc2VzIikudGVzdEZ1bGZpbGxlZDsKK3ZhciB0ZXN0UmVqZWN0ZWQgPSByZXF1aXJl
KCIuL2hlbHBlcnMvdGVzdFRocmVlQ2FzZXMiKS50ZXN0UmVqZWN0ZWQ7Cit2YXIgcmVhc29ucyA9
IHJlcXVpcmUoIi4vaGVscGVycy9yZWFzb25zIik7CisKK3ZhciBhZGFwdGVyID0gZ2xvYmFsLmFk
YXB0ZXI7Cit2YXIgZGVmZXJyZWQgPSBhZGFwdGVyLmRlZmVycmVkOworCit2YXIgZHVtbXkgPSB7
IGR1bW15OiAiZHVtbXkiIH07IC8vIHdlIGZ1bGZpbGwgb3IgcmVqZWN0IHdpdGggdGhpcyB3aGVu
IHdlIGRvbid0IGludGVuZCB0byB0ZXN0IGFnYWluc3QgaXQKK3ZhciBzZW50aW5lbCA9IHsgc2Vu
dGluZWw6ICJzZW50aW5lbCIgfTsgLy8gYSBzZW50aW5lbCBmdWxmaWxsbWVudCB2YWx1ZSB0byB0
ZXN0IGZvciB3aXRoIHN0cmljdCBlcXVhbGl0eQordmFyIG90aGVyID0geyBvdGhlcjogIm90aGVy
IiB9OyAvLyBhIHZhbHVlIHdlIGRvbid0IHdhbnQgdG8gYmUgc3RyaWN0IGVxdWFsIHRvCisKK2Rl
c2NyaWJlKCIyLjIuNzogYHRoZW5gIG11c3QgcmV0dXJuIGEgcHJvbWlzZTogYHByb21pc2UyID0g
cHJvbWlzZTEudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClgIiwgZnVuY3Rpb24gKCkgewor
ICAgIHNwZWNpZnkoImlzIGEgcHJvbWlzZSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIHBy
b21pc2UxID0gZGVmZXJyZWQoKS5wcm9taXNlOworICAgICAgICB2YXIgcHJvbWlzZTIgPSBwcm9t
aXNlMS50aGVuKCk7CisKKyAgICAgICAgYXNzZXJ0KHR5cGVvZiBwcm9taXNlMiA9PT0gIm9iamVj
dCIgfHwgdHlwZW9mIHByb21pc2UyID09PSAiZnVuY3Rpb24iKTsKKyAgICAgICAgYXNzZXJ0Lm5v
dFN0cmljdEVxdWFsKHByb21pc2UyLCBudWxsKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KHR5cGVvZiBwcm9taXNlMi50aGVuLCAiZnVuY3Rpb24iKTsKKyAgICB9KTsKKworICAgIGRlc2Ny
aWJlKCIyLjIuNy4xOiBJZiBlaXRoZXIgYG9uRnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgcmV0
dXJucyBhIHZhbHVlIGB4YCwgcnVuIHRoZSBQcm9taXNlIFJlc29sdXRpb24gIiArCisgICAgICAg
ICAgICAgIlByb2NlZHVyZSBgW1tSZXNvbHZlXV0ocHJvbWlzZTIsIHgpYCIsIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgc3BlY2lmeSgic2VlIHNlcGFyYXRlIDMuMyB0ZXN0cyIsIGZ1bmN0aW9uICgp
IHsgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgiMi4yLjcuMjogSWYgZWl0aGVyIGBvbkZ1
bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHRocm93cyBhbiBleGNlcHRpb24gYGVgLCBgcHJvbWlz
ZTJgIG11c3QgYmUgcmVqZWN0ZWQgIiArCisgICAgICAgICAgICAgIndpdGggYGVgIGFzIHRoZSBy
ZWFzb24uIiwgZnVuY3Rpb24gKCkgeworICAgICAgICBmdW5jdGlvbiB0ZXN0UmVhc29uKGV4cGVj
dGVkUmVhc29uLCBzdHJpbmdSZXByZXNlbnRhdGlvbikgeworICAgICAgICAgICAgZGVzY3JpYmUo
IlRoZSByZWFzb24gaXMgIiArIHN0cmluZ1JlcHJlc2VudGF0aW9uLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgdGVzdEZ1bGZpbGxlZChkdW1teSwgZnVuY3Rpb24gKHByb21pc2UxLCBk
b25lKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4o
ZnVuY3Rpb24gb25GdWxmaWxsZWQoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBl
eHBlY3RlZFJlYXNvbjsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgcHJvbWlzZTIudGhlbihudWxsLCBmdW5jdGlvbiBvblByb21pc2UyUmVqZWN0ZWQoYWN0
dWFsUmVhc29uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
YWN0dWFsUmVhc29uLCBleHBlY3RlZFJlYXNvbik7CisgICAgICAgICAgICAgICAgICAgICAgICBk
b25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgICAgIHRlc3RSZWplY3RlZChkdW1teSwgZnVuY3Rpb24gKHByb21pc2UxLCBkb25l
KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4obnVs
bCwgZnVuY3Rpb24gb25SZWplY3RlZCgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93
IGV4cGVjdGVkUmVhc29uOworICAgICAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
ICAgICAgICBwcm9taXNlMi50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUHJvbWlzZTJSZWplY3RlZChh
Y3R1YWxSZWFzb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChhY3R1YWxSZWFzb24sIGV4cGVjdGVkUmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIE9iamVjdC5rZXlzKHJlYXNvbnMp
LmZvckVhY2goZnVuY3Rpb24gKHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7CisgICAgICAgICAgICB0
ZXN0UmVhc29uKHJlYXNvbnNbc3RyaW5nUmVwcmVzZW50YXRpb25dLCBzdHJpbmdSZXByZXNlbnRh
dGlvbik7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoIjIuMi43LjM6IElm
IGBvbkZ1bGZpbGxlZGAgaXMgbm90IGEgZnVuY3Rpb24gYW5kIGBwcm9taXNlMWAgaXMgZnVsZmls
bGVkLCBgcHJvbWlzZTJgIG11c3QgYmUgZnVsZmlsbGVkICIgKworICAgICAgICAgICAgICJ3aXRo
IHRoZSBzYW1lIHZhbHVlLiIsIGZ1bmN0aW9uICgpIHsKKworICAgICAgICBmdW5jdGlvbiB0ZXN0
Tm9uRnVuY3Rpb24obm9uRnVuY3Rpb24sIHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7CisgICAgICAg
ICAgICBkZXNjcmliZSgiYG9uRnVsZmlsbGVkYCBpcyAiICsgc3RyaW5nUmVwcmVzZW50YXRpb24s
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0RnVsZmlsbGVkKHNlbnRpbmVsLCBm
dW5jdGlvbiAocHJvbWlzZTEsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHByb21p
c2UyID0gcHJvbWlzZTEudGhlbihub25GdW5jdGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAg
cHJvbWlzZTIudGhlbihmdW5jdGlvbiBvblByb21pc2UyRnVsZmlsbGVkKHZhbHVlKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFsdWUsIHNlbnRpbmVsKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIHRlc3ROb25GdW5jdGlvbih1bmRlZmluZWQsICJgdW5kZWZpbmVkYCIpOworICAgICAgICB0
ZXN0Tm9uRnVuY3Rpb24obnVsbCwgImBudWxsYCIpOworICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24o
ZmFsc2UsICJgZmFsc2VgIik7CisgICAgICAgIHRlc3ROb25GdW5jdGlvbig1LCAiYDVgIik7Cisg
ICAgICAgIHRlc3ROb25GdW5jdGlvbih7fSwgImFuIG9iamVjdCIpOworICAgICAgICB0ZXN0Tm9u
RnVuY3Rpb24oW2Z1bmN0aW9uICgpIHsgcmV0dXJuIG90aGVyOyB9XSwgImFuIGFycmF5IGNvbnRh
aW5pbmcgYSBmdW5jdGlvbiIpOworICAgIH0pOworCisgICAgZGVzY3JpYmUoIjIuMi43LjQ6IElm
IGBvblJlamVjdGVkYCBpcyBub3QgYSBmdW5jdGlvbiBhbmQgYHByb21pc2UxYCBpcyByZWplY3Rl
ZCwgYHByb21pc2UyYCBtdXN0IGJlIHJlamVjdGVkICIgKworICAgICAgICAgICAgICJ3aXRoIHRo
ZSBzYW1lIHJlYXNvbi4iLCBmdW5jdGlvbiAoKSB7CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdE5v
bkZ1bmN0aW9uKG5vbkZ1bmN0aW9uLCBzdHJpbmdSZXByZXNlbnRhdGlvbikgeworICAgICAgICAg
ICAgZGVzY3JpYmUoImBvblJlamVjdGVkYCBpcyAiICsgc3RyaW5nUmVwcmVzZW50YXRpb24sIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UmVqZWN0ZWQoc2VudGluZWwsIGZ1bmN0
aW9uIChwcm9taXNlMSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgcHJvbWlzZTIg
PSBwcm9taXNlMS50aGVuKG51bGwsIG5vbkZ1bmN0aW9uKTsKKworICAgICAgICAgICAgICAgICAg
ICBwcm9taXNlMi50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUHJvbWlzZTJSZWplY3RlZChyZWFzb24p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZWFzb24sIHNl
bnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIHRlc3ROb25GdW5jdGlvbih1bmRlZmluZWQsICJgdW5kZWZpbmVkYCIpOwor
ICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24obnVsbCwgImBudWxsYCIpOworICAgICAgICB0ZXN0Tm9u
RnVuY3Rpb24oZmFsc2UsICJgZmFsc2VgIik7CisgICAgICAgIHRlc3ROb25GdW5jdGlvbig1LCAi
YDVgIik7CisgICAgICAgIHRlc3ROb25GdW5jdGlvbih7fSwgImFuIG9iamVjdCIpOworICAgICAg
ICB0ZXN0Tm9uRnVuY3Rpb24oW2Z1bmN0aW9uICgpIHsgcmV0dXJuIG90aGVyOyB9XSwgImFuIGFy
cmF5IGNvbnRhaW5pbmcgYSBmdW5jdGlvbiIpOworICAgIH0pOworfSk7CisKK30pLmNhbGwodGhp
cyx0eXBlb2YgZ2xvYmFsICE9PSAidW5kZWZpbmVkIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9
PSAidW5kZWZpbmVkIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSAidW5kZWZpbmVkIiA/IHdp
bmRvdyA6IHt9KQorfSx7Ii4vaGVscGVycy9yZWFzb25zIjoyMCwiLi9oZWxwZXJzL3Rlc3RUaHJl
ZUNhc2VzIjoyMSwiYXNzZXJ0IjoxfV0sMTY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9y
dHMpeworKGZ1bmN0aW9uIChnbG9iYWwpeworInVzZSBzdHJpY3QiOworCit2YXIgYXNzZXJ0ID0g
cmVxdWlyZSgiYXNzZXJ0Iik7CisKK3ZhciBhZGFwdGVyID0gZ2xvYmFsLmFkYXB0ZXI7Cit2YXIg
cmVzb2x2ZWQgPSBhZGFwdGVyLnJlc29sdmVkOwordmFyIHJlamVjdGVkID0gYWRhcHRlci5yZWpl
Y3RlZDsKKwordmFyIGR1bW15ID0geyBkdW1teTogImR1bW15IiB9OyAvLyB3ZSBmdWxmaWxsIG9y
IHJlamVjdCB3aXRoIHRoaXMgd2hlbiB3ZSBkb24ndCBpbnRlbmQgdG8gdGVzdCBhZ2FpbnN0IGl0
CisKK2Rlc2NyaWJlKCIyLjMuMTogSWYgYHByb21pc2VgIGFuZCBgeGAgcmVmZXIgdG8gdGhlIHNh
bWUgb2JqZWN0LCByZWplY3QgYHByb21pc2VgIHdpdGggYSBgVHlwZUVycm9yJyBhcyB0aGUgcmVh
c29uLiIsCisgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgc3BlY2lmeSgidmlhIHJldHVybiBm
cm9tIGEgZnVsZmlsbGVkIHByb21pc2UiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICB2YXIg
cHJvbWlzZSA9IHJlc29sdmVkKGR1bW15KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IHJldHVybiBwcm9taXNlOworICAgICAgICB9KTsKKworICAgICAgICBwcm9taXNlLnRoZW4obnVs
bCwgZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAgICAgYXNzZXJ0KHJlYXNvbiBpbnN0YW5j
ZW9mIFR5cGVFcnJvcik7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0pOworICAgIH0p
OworCisgICAgc3BlY2lmeSgidmlhIHJldHVybiBmcm9tIGEgcmVqZWN0ZWQgcHJvbWlzZSIsIGZ1
bmN0aW9uIChkb25lKSB7CisgICAgICAgIHZhciBwcm9taXNlID0gcmVqZWN0ZWQoZHVtbXkpLnRo
ZW4obnVsbCwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAg
ICAgIH0pOworCisgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiAocmVhc29uKSB7
CisgICAgICAgICAgICBhc3NlcnQocmVhc29uIGluc3RhbmNlb2YgVHlwZUVycm9yKTsKKyAgICAg
ICAgICAgIGRvbmUoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9KTsKKworfSkuY2FsbCh0aGlz
LHR5cGVvZiBnbG9iYWwgIT09ICJ1bmRlZmluZWQiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09
ICJ1bmRlZmluZWQiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09ICJ1bmRlZmluZWQiID8gd2lu
ZG93IDoge30pCit9LHsiYXNzZXJ0IjoxfV0sMTc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4
cG9ydHMpeworKGZ1bmN0aW9uIChnbG9iYWwpeworInVzZSBzdHJpY3QiOworCit2YXIgYXNzZXJ0
ID0gcmVxdWlyZSgiYXNzZXJ0Iik7CisKK3ZhciBhZGFwdGVyID0gZ2xvYmFsLmFkYXB0ZXI7Cit2
YXIgcmVzb2x2ZWQgPSBhZGFwdGVyLnJlc29sdmVkOwordmFyIHJlamVjdGVkID0gYWRhcHRlci5y
ZWplY3RlZDsKK3ZhciBkZWZlcnJlZCA9IGFkYXB0ZXIuZGVmZXJyZWQ7CisKK3ZhciBkdW1teSA9
IHsgZHVtbXk6ICJkdW1teSIgfTsgLy8gd2UgZnVsZmlsbCBvciByZWplY3Qgd2l0aCB0aGlzIHdo
ZW4gd2UgZG9uJ3QgaW50ZW5kIHRvIHRlc3QgYWdhaW5zdCBpdAordmFyIHNlbnRpbmVsID0geyBz
ZW50aW5lbDogInNlbnRpbmVsIiB9OyAvLyBhIHNlbnRpbmVsIGZ1bGZpbGxtZW50IHZhbHVlIHRv
IHRlc3QgZm9yIHdpdGggc3RyaWN0IGVxdWFsaXR5CisKK2Z1bmN0aW9uIHRlc3RQcm9taXNlUmVz
b2x1dGlvbih4RmFjdG9yeSwgdGVzdCkgeworICAgIHNwZWNpZnkoInZpYSByZXR1cm4gZnJvbSBh
IGZ1bGZpbGxlZCBwcm9taXNlIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgdmFyIHByb21p
c2UgPSByZXNvbHZlZChkdW1teSkudGhlbihmdW5jdGlvbiBvbkJhc2VQcm9taXNlRnVsZmlsbGVk
KCkgeworICAgICAgICAgICAgcmV0dXJuIHhGYWN0b3J5KCk7CisgICAgICAgIH0pOworCisgICAg
ICAgIHRlc3QocHJvbWlzZSwgZG9uZSk7CisgICAgfSk7CisKKyAgICBzcGVjaWZ5KCJ2aWEgcmV0
dXJuIGZyb20gYSByZWplY3RlZCBwcm9taXNlIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAg
dmFyIHByb21pc2UgPSByZWplY3RlZChkdW1teSkudGhlbihudWxsLCBmdW5jdGlvbiBvbkJhc2VQ
cm9taXNlUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICByZXR1cm4geEZhY3RvcnkoKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgdGVzdChwcm9taXNlLCBkb25lKTsKKyAgICB9KTsKK30KKworZGVz
Y3JpYmUoIjIuMy4yOiBJZiBgeGAgaXMgYSBwcm9taXNlLCBhZG9wdCBpdHMgc3RhdGUiLCBmdW5j
dGlvbiAoKSB7CisgICAgZGVzY3JpYmUoIjIuMy4yLjE6IElmIGB4YCBpcyBwZW5kaW5nLCBgcHJv
bWlzZWAgbXVzdCByZW1haW4gcGVuZGluZyB1bnRpbCBgeGAgaXMgZnVsZmlsbGVkIG9yIHJlamVj
dGVkLiIsCisgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICBmdW5jdGlvbiB4RmFj
dG9yeSgpIHsKKyAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZCgpLnByb21pc2U7CisgICAgICAg
IH0KKworICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChw
cm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICB2YXIgd2FzRnVsZmlsbGVkID0gZmFsc2U7Cisg
ICAgICAgICAgICB2YXIgd2FzUmVqZWN0ZWQgPSBmYWxzZTsKKworICAgICAgICAgICAgcHJvbWlz
ZS50aGVuKAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG9uUHJvbWlzZUZ1bGZpbGxlZCgpIHsK
KyAgICAgICAgICAgICAgICAgICAgd2FzRnVsZmlsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG9uUHJvbWlzZVJlamVjdGVkKCkgeworICAg
ICAgICAgICAgICAgICAgICB3YXNSZWplY3RlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHdhc0Z1bGZpbGxlZCwgZmFsc2UpOwor
ICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh3YXNSZWplY3RlZCwgZmFsc2UpOwor
ICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0p
OworICAgIH0pOworCisgICAgZGVzY3JpYmUoIjIuMy4yLjI6IElmL3doZW4gYHhgIGlzIGZ1bGZp
bGxlZCwgZnVsZmlsbCBgcHJvbWlzZWAgd2l0aCB0aGUgc2FtZSB2YWx1ZS4iLCBmdW5jdGlvbiAo
KSB7CisgICAgICAgIGRlc2NyaWJlKCJgeGAgaXMgYWxyZWFkeS1mdWxmaWxsZWQiLCBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzb2x2ZWQoc2VudGluZWwpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25l
KSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uIG9uUHJvbWlzZUZ1bGZp
bGxlZCh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFs
dWUsIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGRlc2NyaWJl
KCJgeGAgaXMgZXZlbnR1YWxseS1mdWxmaWxsZWQiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICB2YXIgZCA9IG51bGw7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAg
ICAgICAgICAgICAgIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBkLnJlc29sdmUoc2VudGluZWwpOwor
ICAgICAgICAgICAgICAgIH0sIDUwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZC5wcm9taXNl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZh
Y3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgcHJvbWlz
ZS50aGVuKGZ1bmN0aW9uIG9uUHJvbWlzZUZ1bGZpbGxlZCh2YWx1ZSkgeworICAgICAgICAgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFsdWUsIHNlbnRpbmVsKTsKKyAgICAgICAgICAg
ICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoIjIuMy4yLjM6IElmL3doZW4gYHhg
IGlzIHJlamVjdGVkLCByZWplY3QgYHByb21pc2VgIHdpdGggdGhlIHNhbWUgcmVhc29uLiIsIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgZGVzY3JpYmUoImB4YCBpcyBhbHJlYWR5LXJlamVjdGVkIiwg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlamVjdGVkKHNlbnRpbmVsKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlz
ZSwgZG9uZSkgeworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBv
blByb21pc2VSZWplY3RlZChyZWFzb24pIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0
cmljdEVxdWFsKHJlYXNvbiwgc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICBkb25lKCk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgZGVzY3JpYmUoImB4YCBpcyBldmVudHVhbGx5LXJlamVjdGVkIiwgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgdmFyIGQgPSBudWxsOworCisgICAgICAgICAgICBmdW5jdGlvbiB4RmFj
dG9yeSgpIHsKKyAgICAgICAgICAgICAgICBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgZC5yZWplY3Qo
c2VudGluZWwpOworICAgICAgICAgICAgICAgIH0sIDUwKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZC5wcm9taXNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZXN0UHJvbWlzZVJl
c29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAg
ICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUHJvbWlzZVJlamVjdGVkKHJlYXNv
bikgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29uLCBzZW50
aW5lbCk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30pOworCit9KS5jYWxsKHRo
aXMsdHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAh
PT0gInVuZGVmaW5lZCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgPyB3
aW5kb3cgOiB7fSkKK30seyJhc3NlcnQiOjF9XSwxODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUs
ZXhwb3J0cyl7CisoZnVuY3Rpb24gKGdsb2JhbCl7CisidXNlIHN0cmljdCI7CisKK3ZhciBhc3Nl
cnQgPSByZXF1aXJlKCJhc3NlcnQiKTsKK3ZhciB0aGVuYWJsZXMgPSByZXF1aXJlKCIuL2hlbHBl
cnMvdGhlbmFibGVzIik7Cit2YXIgcmVhc29ucyA9IHJlcXVpcmUoIi4vaGVscGVycy9yZWFzb25z
Iik7CisKK3ZhciBhZGFwdGVyID0gZ2xvYmFsLmFkYXB0ZXI7Cit2YXIgcmVzb2x2ZWQgPSBhZGFw
dGVyLnJlc29sdmVkOwordmFyIHJlamVjdGVkID0gYWRhcHRlci5yZWplY3RlZDsKK3ZhciBkZWZl
cnJlZCA9IGFkYXB0ZXIuZGVmZXJyZWQ7CisKK3ZhciBkdW1teSA9IHsgZHVtbXk6ICJkdW1teSIg
fTsgLy8gd2UgZnVsZmlsbCBvciByZWplY3Qgd2l0aCB0aGlzIHdoZW4gd2UgZG9uJ3QgaW50ZW5k
IHRvIHRlc3QgYWdhaW5zdCBpdAordmFyIHNlbnRpbmVsID0geyBzZW50aW5lbDogInNlbnRpbmVs
IiB9OyAvLyBhIHNlbnRpbmVsIGZ1bGZpbGxtZW50IHZhbHVlIHRvIHRlc3QgZm9yIHdpdGggc3Ry
aWN0IGVxdWFsaXR5Cit2YXIgb3RoZXIgPSB7IG90aGVyOiAib3RoZXIiIH07IC8vIGEgdmFsdWUg
d2UgZG9uJ3Qgd2FudCB0byBiZSBzdHJpY3QgZXF1YWwgdG8KK3ZhciBzZW50aW5lbEFycmF5ID0g
W3NlbnRpbmVsXTsgLy8gYSBzZW50aW5lbCBmdWxmaWxsbWVudCB2YWx1ZSB0byB0ZXN0IHdoZW4g
d2UgbmVlZCBhbiBhcnJheQorCitmdW5jdGlvbiB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3Rv
cnksIHRlc3QpIHsKKyAgICBzcGVjaWZ5KCJ2aWEgcmV0dXJuIGZyb20gYSBmdWxmaWxsZWQgcHJv
bWlzZSIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIHZhciBwcm9taXNlID0gcmVzb2x2ZWQo
ZHVtbXkpLnRoZW4oZnVuY3Rpb24gb25CYXNlUHJvbWlzZUZ1bGZpbGxlZCgpIHsKKyAgICAgICAg
ICAgIHJldHVybiB4RmFjdG9yeSgpOworICAgICAgICB9KTsKKworICAgICAgICB0ZXN0KHByb21p
c2UsIGRvbmUpOworICAgIH0pOworCisgICAgc3BlY2lmeSgidmlhIHJldHVybiBmcm9tIGEgcmVq
ZWN0ZWQgcHJvbWlzZSIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIHZhciBwcm9taXNlID0g
cmVqZWN0ZWQoZHVtbXkpLnRoZW4obnVsbCwgZnVuY3Rpb24gb25CYXNlUHJvbWlzZVJlamVjdGVk
KCkgeworICAgICAgICAgICAgcmV0dXJuIHhGYWN0b3J5KCk7CisgICAgICAgIH0pOworCisgICAg
ICAgIHRlc3QocHJvbWlzZSwgZG9uZSk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RDYWxs
aW5nUmVzb2x2ZVByb21pc2UoeUZhY3RvcnksIHN0cmluZ1JlcHJlc2VudGF0aW9uLCB0ZXN0KSB7
CisgICAgZGVzY3JpYmUoImB5YCBpcyAiICsgc3RyaW5nUmVwcmVzZW50YXRpb24sIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgZGVzY3JpYmUoImB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIHN5
bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9y
eSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICB0aGVu
OiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
c29sdmVQcm9taXNlKHlGYWN0b3J5KCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGVzdFByb21pc2VSZXNv
bHV0aW9uKHhGYWN0b3J5LCB0ZXN0KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3JpYmUo
ImB0aGVuYCBjYWxscyBgcmVzb2x2ZVByb21pc2VgIGFzeW5jaHJvbm91c2x5IiwgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQcm9t
aXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlUHJvbWlzZSh5RmFjdG9yeSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGVzdFByb21p
c2VSZXNvbHV0aW9uKHhGYWN0b3J5LCB0ZXN0KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisK
K2Z1bmN0aW9uIHRlc3RDYWxsaW5nUmVqZWN0UHJvbWlzZShyLCBzdHJpbmdSZXByZXNlbnRhdGlv
biwgdGVzdCkgeworICAgIGRlc2NyaWJlKCJgcmAgaXMgIiArIHN0cmluZ1JlcHJlc2VudGF0aW9u
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRlc2NyaWJlKCJgdGhlbmAgY2FsbHMgYHJlamVjdFBy
b21pc2VgIHN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBmdW5jdGlv
biB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAg
ICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UsIHJlamVjdFByb21pc2UpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJlamVjdFByb21pc2Uocik7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0
ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIHRlc3QpOworICAgICAgICB9KTsKKworICAg
ICAgICBkZXNjcmliZSgiYHRoZW5gIGNhbGxzIGByZWplY3RQcm9taXNlYCBhc3luY2hyb25vdXNs
eSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAg
ICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9u
IChyZXNvbHZlUHJvbWlzZSwgcmVqZWN0UHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVqZWN0UHJvbWlzZShyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sIDApOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCB0ZXN0KTsKKyAgICAgICAg
fSk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RDYWxsaW5nUmVzb2x2ZVByb21pc2VGdWxm
aWxsc1dpdGgoeUZhY3RvcnksIHN0cmluZ1JlcHJlc2VudGF0aW9uLCBmdWxmaWxsbWVudFZhbHVl
KSB7CisgICAgdGVzdENhbGxpbmdSZXNvbHZlUHJvbWlzZSh5RmFjdG9yeSwgc3RyaW5nUmVwcmVz
ZW50YXRpb24sIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgIHByb21pc2UudGhl
bihmdW5jdGlvbiBvblByb21pc2VGdWxmaWxsZWQodmFsdWUpIHsKKyAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCh2YWx1ZSwgZnVsZmlsbG1lbnRWYWx1ZSk7CisgICAgICAgICAgICBkb25l
KCk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0Q2FsbGluZ1Jlc29s
dmVQcm9taXNlUmVqZWN0c1dpdGgoeUZhY3RvcnksIHN0cmluZ1JlcHJlc2VudGF0aW9uLCByZWpl
Y3Rpb25SZWFzb24pIHsKKyAgICB0ZXN0Q2FsbGluZ1Jlc29sdmVQcm9taXNlKHlGYWN0b3J5LCBz
dHJpbmdSZXByZXNlbnRhdGlvbiwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAg
cHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUHJvbWlzZVJlamVjdGVkKHJlYXNvbikgewor
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgcmVqZWN0aW9uUmVhc29uKTsK
KyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9u
IHRlc3RDYWxsaW5nUmVqZWN0UHJvbWlzZVJlamVjdHNXaXRoKHJlYXNvbiwgc3RyaW5nUmVwcmVz
ZW50YXRpb24pIHsKKyAgICB0ZXN0Q2FsbGluZ1JlamVjdFByb21pc2UocmVhc29uLCBzdHJpbmdS
ZXByZXNlbnRhdGlvbiwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgcHJvbWlz
ZS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUHJvbWlzZVJlamVjdGVkKHJlamVjdGlvblJlYXNvbikg
eworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlamVjdGlvblJlYXNvbiwgcmVhc29u
KTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK2Rlc2Ny
aWJlKCIyLjMuMzogT3RoZXJ3aXNlLCBpZiBgeGAgaXMgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uLCIs
IGZ1bmN0aW9uICgpIHsKKyAgICBkZXNjcmliZSgiMi4zLjMuMTogTGV0IGB0aGVuYCBiZSBgeC50
aGVuYCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZGVzY3JpYmUoImB4YCBpcyBhbiBvYmplY3Qg
d2l0aCBudWxsIHByb3RvdHlwZSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZhciBudW1i
ZXJPZlRpbWVzVGhlbldhc1JldHJpZXZlZCA9IG51bGw7CisKKyAgICAgICAgICAgIGJlZm9yZUVh
Y2goZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIG51bWJlck9mVGltZXNUaGVuV2FzUmV0
cmlldmVkID0gMDsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBmdW5jdGlvbiB4RmFj
dG9yeSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsLCB7Cisg
ICAgICAgICAgICAgICAgICAgIHRoZW46IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldDog
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbnVtYmVyT2ZUaW1l
c1RoZW5XYXNSZXRyaWV2ZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uIHRoZW5NZXRob2RGb3JYKG9uRnVsZmlsbGVkKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9uRnVsZmlsbGVkKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZXN0UHJvbWlz
ZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAg
ICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKG51bWJlck9mVGltZXNUaGVuV2FzUmV0cmlldmVkLCAxKTsKKyAg
ICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGRlc2NyaWJlKCJgeGAgaXMgYW4gb2JqZWN0
IHdpdGggbm9ybWFsIE9iamVjdC5wcm90b3R5cGUiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICB2YXIgbnVtYmVyT2ZUaW1lc1RoZW5XYXNSZXRyaWV2ZWQgPSBudWxsOworCisgICAgICAgICAg
ICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBudW1iZXJPZlRpbWVz
VGhlbldhc1JldHJpZXZlZCA9IDA7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZnVu
Y3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5jcmVhdGUo
T2JqZWN0LnByb3RvdHlwZSwgeworICAgICAgICAgICAgICAgICAgICB0aGVuOiB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICArK251bWJlck9mVGltZXNUaGVuV2FzUmV0cmlldmVkOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiB0aGVuTWV0aG9kRm9yWChvbkZ1bGZpbGxlZCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZ1bGZpbGxlZCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJv
bWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChudW1iZXJPZlRpbWVzVGhl
bldhc1JldHJpZXZlZCwgMSk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBkZXNj
cmliZSgiYHhgIGlzIGEgZnVuY3Rpb24iLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIg
bnVtYmVyT2ZUaW1lc1RoZW5XYXNSZXRyaWV2ZWQgPSBudWxsOworCisgICAgICAgICAgICBiZWZv
cmVFYWNoKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBudW1iZXJPZlRpbWVzVGhlbldh
c1JldHJpZXZlZCA9IDA7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZnVuY3Rpb24g
eEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24geCgpIHsgfQorCisgICAgICAg
ICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHgsICJ0aGVuIiwgeworICAgICAgICAgICAg
ICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbnVt
YmVyT2ZUaW1lc1RoZW5XYXNSZXRyaWV2ZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb24gdGhlbk1ldGhvZEZvclgob25GdWxmaWxsZWQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvbkZ1bGZpbGxlZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRlc3RQcm9taXNl
UmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAg
ICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwobnVtYmVyT2ZUaW1lc1RoZW5XYXNSZXRyaWV2ZWQsIDEpOworICAg
ICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgiMi4zLjMuMjogSWYg
cmV0cmlldmluZyB0aGUgcHJvcGVydHkgYHgudGhlbmAgcmVzdWx0cyBpbiBhIHRocm93biBleGNl
cHRpb24gYGVgLCByZWplY3QgYHByb21pc2VgIHdpdGggIiArCisgICAgICAgICAgICAgImBlYCBh
cyB0aGUgcmVhc29uLiIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZnVuY3Rpb24gdGVzdFJlamVj
dGlvblZpYVRocm93aW5nR2V0dGVyKGUsIHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7CisgICAgICAg
ICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0
LmNyZWF0ZShPYmplY3QucHJvdG90eXBlLCB7CisgICAgICAgICAgICAgICAgICAgIHRoZW46IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZGVzY3JpYmUoImBlYCBpcyAiICsgc3RyaW5nUmVwcmVzZW50YXRpb24sIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3Rv
cnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21p
c2UudGhlbihudWxsLCBmdW5jdGlvbiAocmVhc29uKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29uLCBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIE9iamVjdC5rZXlzKHJlYXNvbnMp
LmZvckVhY2goZnVuY3Rpb24gKHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7CisgICAgICAgICAgICB0
ZXN0UmVqZWN0aW9uVmlhVGhyb3dpbmdHZXR0ZXIocmVhc29uc1tzdHJpbmdSZXByZXNlbnRhdGlv
bl0sIHN0cmluZ1JlcHJlc2VudGF0aW9uKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBk
ZXNjcmliZSgiMi4zLjMuMzogSWYgYHRoZW5gIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCBg
eGAgYXMgYHRoaXNgLCBmaXJzdCBhcmd1bWVudCBgcmVzb2x2ZVByb21pc2VgLCBhbmQgIiArCisg
ICAgICAgICAgICAgInNlY29uZCBhcmd1bWVudCBgcmVqZWN0UHJvbWlzZWAiLCBmdW5jdGlvbiAo
KSB7CisgICAgICAgIGRlc2NyaWJlKCJDYWxscyB3aXRoIGB4YCBhcyBgdGhpc2AgYW5kIHR3byBm
dW5jdGlvbiBhcmd1bWVudHMiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBmdW5jdGlvbiB4
RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICB2YXIgeCA9IHsKKyAgICAgICAgICAgICAgICAg
ICAgdGhlbjogZnVuY3Rpb24gKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGhpcywgeCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHlwZW9mIG9uRnVsZmlsbGVkLCAiZnVuY3Rp
b24iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0eXBlb2Yg
b25SZWplY3RlZCwgImZ1bmN0aW9uIik7CisgICAgICAgICAgICAgICAgICAgICAgICBvbkZ1bGZp
bGxlZCgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGVzdFBy
b21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAg
ICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKKworICAgICAgICBkZXNjcmliZSgiVXNlcyB0aGUgb3JpZ2luYWwgdmFsdWUgb2YgYHRo
ZW5gIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdmFyIG51bWJlck9mVGltZXNUaGVuV2Fz
UmV0cmlldmVkID0gbnVsbDsKKworICAgICAgICAgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgbnVtYmVyT2ZUaW1lc1RoZW5XYXNSZXRyaWV2ZWQgPSAwOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAg
ICAgICAgICAgIHJldHVybiBPYmplY3QuY3JlYXRlKE9iamVjdC5wcm90b3R5cGUsIHsKKyAgICAg
ICAgICAgICAgICAgICAgdGhlbjogeworICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlck9mVGltZXNU
aGVuV2FzUmV0cmlldmVkID09PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmdW5jdGlvbiAob25GdWxmaWxsZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9uRnVsZmlsbGVkKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21p
c2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3JpYmUoIjIuMy4zLjMuMTogSWYv
d2hlbiBgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxlZCB3aXRoIHZhbHVlIGB5YCwgcnVuIGBbW1Jl
c29sdmVdXShwcm9taXNlLCB5KWAiLAorICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICBkZXNjcmliZSgiYHlgIGlzIG5vdCBhIHRoZW5hYmxlIiwgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgIHRlc3RDYWxsaW5nUmVzb2x2ZVByb21pc2VGdWxmaWxsc1dpdGgo
ZnVuY3Rpb24gKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9LCAiYHVuZGVmaW5lZGAiLCB1bmRlZmlu
ZWQpOworICAgICAgICAgICAgICAgIHRlc3RDYWxsaW5nUmVzb2x2ZVByb21pc2VGdWxmaWxsc1dp
dGgoZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVsbDsgfSwgImBudWxsYCIsIG51bGwpOworICAgICAg
ICAgICAgICAgIHRlc3RDYWxsaW5nUmVzb2x2ZVByb21pc2VGdWxmaWxsc1dpdGgoZnVuY3Rpb24g
KCkgeyByZXR1cm4gZmFsc2U7IH0sICJgZmFsc2VgIiwgZmFsc2UpOworICAgICAgICAgICAgICAg
IHRlc3RDYWxsaW5nUmVzb2x2ZVByb21pc2VGdWxmaWxsc1dpdGgoZnVuY3Rpb24gKCkgeyByZXR1
cm4gNTsgfSwgImA1YCIsIDUpOworICAgICAgICAgICAgICAgIHRlc3RDYWxsaW5nUmVzb2x2ZVBy
b21pc2VGdWxmaWxsc1dpdGgoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2VudGluZWw7IH0sICJhbiBv
YmplY3QiLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgdGVzdENhbGxpbmdSZXNvbHZlUHJv
bWlzZUZ1bGZpbGxzV2l0aChmdW5jdGlvbiAoKSB7IHJldHVybiBzZW50aW5lbEFycmF5OyB9LCAi
YW4gYXJyYXkiLCBzZW50aW5lbEFycmF5KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICBkZXNjcmliZSgiYHlgIGlzIGEgdGhlbmFibGUiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgT2JqZWN0LmtleXModGhlbmFibGVzLmZ1bGZpbGxlZCkuZm9yRWFjaChmdW5jdGlvbiAo
c3RyaW5nUmVwcmVzZW50YXRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24geUZh
Y3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhlbmFibGVzLmZ1bGZp
bGxlZFtzdHJpbmdSZXByZXNlbnRhdGlvbl0oc2VudGluZWwpOworICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAgICAgdGVzdENhbGxpbmdSZXNvbHZlUHJvbWlzZUZ1bGZp
bGxzV2l0aCh5RmFjdG9yeSwgc3RyaW5nUmVwcmVzZW50YXRpb24sIHNlbnRpbmVsKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoZW5hYmxlcy5y
ZWplY3RlZCkuZm9yRWFjaChmdW5jdGlvbiAoc3RyaW5nUmVwcmVzZW50YXRpb24pIHsKKyAgICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24geUZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdGhlbmFibGVzLnJlamVjdGVkW3N0cmluZ1JlcHJlc2VudGF0aW9uXShzZW50
aW5lbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB0ZXN0
Q2FsbGluZ1Jlc29sdmVQcm9taXNlUmVqZWN0c1dpdGgoeUZhY3RvcnksIHN0cmluZ1JlcHJlc2Vu
dGF0aW9uLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgZGVzY3JpYmUoImB5YCBpcyBhIHRoZW5hYmxlIGZvciBhIHRoZW5hYmxl
IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoZW5hYmxlcy5m
dWxmaWxsZWQpLmZvckVhY2goZnVuY3Rpb24gKG91dGVyU3RyaW5nUmVwcmVzZW50YXRpb24pIHsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIG91dGVyVGhlbmFibGVGYWN0b3J5ID0gdGhlbmFibGVz
LmZ1bGZpbGxlZFtvdXRlclN0cmluZ1JlcHJlc2VudGF0aW9uXTsKKworICAgICAgICAgICAgICAg
ICAgICBPYmplY3Qua2V5cyh0aGVuYWJsZXMuZnVsZmlsbGVkKS5mb3JFYWNoKGZ1bmN0aW9uIChp
bm5lclN0cmluZ1JlcHJlc2VudGF0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
aW5uZXJUaGVuYWJsZUZhY3RvcnkgPSB0aGVuYWJsZXMuZnVsZmlsbGVkW2lubmVyU3RyaW5nUmVw
cmVzZW50YXRpb25dOworCisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RyaW5nUmVwcmVz
ZW50YXRpb24gPSBvdXRlclN0cmluZ1JlcHJlc2VudGF0aW9uICsgIiBmb3IgIiArIGlubmVyU3Ry
aW5nUmVwcmVzZW50YXRpb247CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHlG
YWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvdXRlclRoZW5h
YmxlRmFjdG9yeShpbm5lclRoZW5hYmxlRmFjdG9yeShzZW50aW5lbCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Q2FsbGluZ1Jlc29s
dmVQcm9taXNlRnVsZmlsbHNXaXRoKHlGYWN0b3J5LCBzdHJpbmdSZXByZXNlbnRhdGlvbiwgc2Vu
dGluZWwpOworICAgICAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgICAgICBP
YmplY3Qua2V5cyh0aGVuYWJsZXMucmVqZWN0ZWQpLmZvckVhY2goZnVuY3Rpb24gKGlubmVyU3Ry
aW5nUmVwcmVzZW50YXRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbm5lclRo
ZW5hYmxlRmFjdG9yeSA9IHRoZW5hYmxlcy5yZWplY3RlZFtpbm5lclN0cmluZ1JlcHJlc2VudGF0
aW9uXTsKKworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0cmluZ1JlcHJlc2VudGF0aW9u
ID0gb3V0ZXJTdHJpbmdSZXByZXNlbnRhdGlvbiArICIgZm9yICIgKyBpbm5lclN0cmluZ1JlcHJl
c2VudGF0aW9uOworCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB5RmFjdG9yeSgp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3V0ZXJUaGVuYWJsZUZhY3Rv
cnkoaW5uZXJUaGVuYWJsZUZhY3Rvcnkoc2VudGluZWwpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdENhbGxpbmdSZXNvbHZlUHJvbWlz
ZVJlamVjdHNXaXRoKHlGYWN0b3J5LCBzdHJpbmdSZXByZXNlbnRhdGlvbiwgc2VudGluZWwpOwor
ICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKKworICAgICAgICBkZXNjcmliZSgiMi4zLjMuMy4yOiBJZi93aGVu
IGByZWplY3RQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCByZWFzb24gYHJgLCByZWplY3QgYHByb21p
c2VgIHdpdGggYHJgIiwKKyAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgT2JqZWN0LmtleXMocmVhc29ucykuZm9yRWFjaChmdW5jdGlvbiAoc3RyaW5nUmVwcmVzZW50
YXRpb24pIHsKKyAgICAgICAgICAgICAgICB0ZXN0Q2FsbGluZ1JlamVjdFByb21pc2VSZWplY3Rz
V2l0aChyZWFzb25zW3N0cmluZ1JlcHJlc2VudGF0aW9uXSwgc3RyaW5nUmVwcmVzZW50YXRpb24p
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGRlc2NyaWJlKCIyLjMu
My4zLjM6IElmIGJvdGggYHJlc29sdmVQcm9taXNlYCBhbmQgYHJlamVjdFByb21pc2VgIGFyZSBj
YWxsZWQsIG9yIG11bHRpcGxlIGNhbGxzIHRvIHRoZSBzYW1lICIgKworICAgICAgICAgICAgICAg
ICAiYXJndW1lbnQgYXJlIG1hZGUsIHRoZSBmaXJzdCBjYWxsIHRha2VzIHByZWNlZGVuY2UsIGFu
ZCBhbnkgZnVydGhlciBjYWxscyBhcmUgaWdub3JlZC4iLAorICAgICAgICAgICAgICAgICBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICBkZXNjcmliZSgiY2FsbGluZyBgcmVzb2x2ZVByb21pc2Vg
IHRoZW4gYHJlamVjdFByb21pc2VgLCBib3RoIHN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVz
b2x2ZVByb21pc2UsIHJlamVjdFByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXNvbHZlUHJvbWlzZShzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVqZWN0UHJvbWlzZShvdGhlcik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGVz
dFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgewor
ICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFsdWUsIHNlbnRpbmVsKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZGVz
Y3JpYmUoImNhbGxpbmcgYHJlc29sdmVQcm9taXNlYCBzeW5jaHJvbm91c2x5IHRoZW4gYHJlamVj
dFByb21pc2VgIGFzeW5jaHJvbm91c2x5IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
IGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4geworICAg
ICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlLCByZWpl
Y3RQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVByb21pc2Uo
c2VudGluZWwpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdFByb21pc2Uo
b3RoZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rp
b24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1
bmN0aW9uICh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKHZhbHVlLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7Cisg
ICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJjYWxsaW5nIGByZXNvbHZlUHJvbWlzZWAgdGhl
biBgcmVqZWN0UHJvbWlzZWAsIGJvdGggYXN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2
ZVByb21pc2UsIHJlamVjdFByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzb2x2ZVByb21pc2Uoc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0s
IDApOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdFByb21pc2Uob3RoZXIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHBy
b21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9u
ICh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZh
bHVlLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgIGRlc2NyaWJlKCJjYWxsaW5nIGByZXNvbHZlUHJvbWlzZWAgd2l0aCBhbiBh
c3luY2hyb25vdXNseS1mdWxmaWxsZWQgcHJvbWlzZSwgdGhlbiBjYWxsaW5nICIgKworICAgICAg
ICAgICAgICAgICAgICAgImByZWplY3RQcm9taXNlYCwgYm90aCBzeW5jaHJvbm91c2x5IiwgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAg
ICAgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZC5yZXNvbHZl
KHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgfSwgNTApOworCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAo
cmVzb2x2ZVByb21pc2UsIHJlamVjdFByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXNvbHZlUHJvbWlzZShkLnByb21pc2UpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlamVjdFByb21pc2Uob3RoZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUp
IHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbHVlLCBzZW50aW5l
bCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
IGRlc2NyaWJlKCJjYWxsaW5nIGByZXNvbHZlUHJvbWlzZWAgd2l0aCBhbiBhc3luY2hyb25vdXNs
eS1yZWplY3RlZCBwcm9taXNlLCB0aGVuIGNhbGxpbmcgIiArCisgICAgICAgICAgICAgICAgICAg
ICAiYHJlamVjdFByb21pc2VgLCBib3RoIHN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAg
IHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkLnJlamVjdChzZW50aW5lbCk7Cisg
ICAgICAgICAgICAgICAgICAgIH0sIDUwKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
eworICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNl
LCByZWplY3RQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVBy
b21pc2UoZC5wcm9taXNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3RQcm9t
aXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJl
c29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAg
ICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiAocmVhc29uKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29uLCBzZW50aW5lbCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlc2Ny
aWJlKCJjYWxsaW5nIGByZWplY3RQcm9taXNlYCB0aGVuIGByZXNvbHZlUHJvbWlzZWAsIGJvdGgg
c3luY2hyb25vdXNseSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB4
RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChyZXNvbHZlUHJvbWlzZSwgcmVqZWN0UHJvbWlzZSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdFByb21pc2Uoc2VudGluZWwpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKG90aGVyKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3Rvcnks
IGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2Uu
dGhlbihudWxsLCBmdW5jdGlvbiAocmVhc29uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwocmVhc29uLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJjYWxsaW5nIGByZWpl
Y3RQcm9taXNlYCBzeW5jaHJvbm91c2x5IHRoZW4gYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25v
dXNseSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRoZW46IGZ1bmN0aW9uIChyZXNvbHZlUHJvbWlzZSwgcmVqZWN0UHJvbWlzZSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlamVjdFByb21pc2Uoc2VudGluZWwpOworCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKG90aGVyKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0
ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7
CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiAocmVhc29u
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29uLCBz
ZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgIGRlc2NyaWJlKCJjYWxsaW5nIGByZWplY3RQcm9taXNlYCB0aGVuIGByZXNvbHZlUHJv
bWlzZWAsIGJvdGggYXN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UsIHJl
amVjdFByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0UHJvbWlz
ZShzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVByb21pc2Uob3RoZXIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUp
IHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIChyZWFz
b24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZWFzb24s
IHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgZGVzY3JpYmUoImNhbGxpbmcgYHJlc29sdmVQcm9taXNlYCB0d2ljZSBzeW5jaHJv
bm91c2x5IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5
KCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAg
ICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzb2x2ZVByb21pc2Uoc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc29sdmVQcm9taXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBk
b25lKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAodmFsdWUp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWx1ZSwgc2Vu
dGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICBkZXNjcmliZSgiY2FsbGluZyBgcmVzb2x2ZVByb21pc2VgIHR3aWNlLCBmaXJzdCBzeW5j
aHJvbm91c2x5IHRoZW4gYXN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7
CisgICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2Up
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlUHJvbWlzZShzZW50aW5lbCk7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVByb21pc2Uob3RoZXIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21p
c2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICh2
YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbHVl
LCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgIGRlc2NyaWJlKCJjYWxsaW5nIGByZXNvbHZlUHJvbWlzZWAgdHdpY2UsIGJvdGgg
dGltZXMgYXN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZnVu
Y3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAg
ICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVByb21pc2Uoc2VudGluZWwpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0sIDApOworCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc29sdmVQcm9taXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRp
b24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAg
ICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWx1ZSwgc2VudGluZWwpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBkZXNjcmliZSgiY2FsbGluZyBg
cmVzb2x2ZVByb21pc2VgIHdpdGggYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIHByb21pc2Us
IHRoZW4gY2FsbGluZyBpdCBhZ2FpbiwgYm90aCAiICsKKyAgICAgICAgICAgICAgICAgICAgICJ0
aW1lcyBzeW5jaHJvbm91c2x5IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGZ1bmN0
aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7
CisgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgZC5yZXNvbHZlKHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAg
fSwgNTApOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXNvbHZlUHJvbWlzZShkLnByb21pc2UpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9t
aXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAo
dmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWx1
ZSwgc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICBkZXNjcmliZSgiY2FsbGluZyBgcmVzb2x2ZVByb21pc2VgIHdpdGggYW4gYXN5
bmNocm9ub3VzbHktcmVqZWN0ZWQgcHJvbWlzZSwgdGhlbiBjYWxsaW5nIGl0IGFnYWluLCBib3Ro
ICIgKworICAgICAgICAgICAgICAgICAgICAgInRpbWVzIHN5bmNocm9ub3VzbHkiLCBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAg
ICAgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkLnJlamVjdChzZW50
aW5lbCk7CisgICAgICAgICAgICAgICAgICAgIH0sIDUwKTsKKworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29s
dmVQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVByb21pc2Uo
ZC5wcm9taXNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlUHJvbWlzZShv
dGhlcik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0
aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAg
ICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgc2VudGluZWwpOworICAgICAg
ICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBkZXNjcmliZSgi
Y2FsbGluZyBgcmVqZWN0UHJvbWlzZWAgdHdpY2Ugc3luY2hyb25vdXNseSIsIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChy
ZXNvbHZlUHJvbWlzZSwgcmVqZWN0UHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlamVjdFByb21pc2Uoc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlamVjdFByb21pc2Uob3RoZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRl
c3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsK
KyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIChyZWFzb24p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZWFzb24sIHNl
bnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgZGVzY3JpYmUoImNhbGxpbmcgYHJlamVjdFByb21pc2VgIHR3aWNlLCBmaXJzdCBzeW5j
aHJvbm91c2x5IHRoZW4gYXN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7
CisgICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2Us
IHJlamVjdFByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3RQcm9t
aXNlKHNlbnRpbmVsKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3RQcm9t
aXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1
bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhl
bihudWxsLCBmdW5jdGlvbiAocmVhc29uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwocmVhc29uLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJjYWxsaW5nIGByZWplY3RQ
cm9taXNlYCB0d2ljZSwgYm90aCB0aW1lcyBhc3luY2hyb25vdXNseSIsIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChyZXNv
bHZlUHJvbWlzZSwgcmVqZWN0UHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWplY3RQcm9taXNlKHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LCAwKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3RQcm9taXNlKG90aGVy
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChw
cm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBm
dW5jdGlvbiAocmVhc29uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwocmVhc29uLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7
CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJzYXZpbmcgYW5kIGFidXNpbmcgYHJlc29s
dmVQcm9taXNlYCBhbmQgYHJlamVjdFByb21pc2VgIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgIHZhciBzYXZlZFJlc29sdmVQcm9taXNlLCBzYXZlZFJlamVjdFByb21pc2U7CisKKyAg
ICAgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChyZXNvbHZl
UHJvbWlzZSwgcmVqZWN0UHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNh
dmVkUmVzb2x2ZVByb21pc2UgPSByZXNvbHZlUHJvbWlzZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzYXZlZFJlamVjdFByb21pc2UgPSByZWplY3RQcm9taXNlOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgICAgICBzYXZlZFJlc29sdmVQcm9taXNlID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAg
c2F2ZWRSZWplY3RQcm9taXNlID0gbnVsbDsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21p
c2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHRpbWVzRnVsZmlsbGVkID0gMDsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIHRpbWVzUmVqZWN0ZWQgPSAwOworCisgICAgICAgICAg
ICAgICAgICAgIHByb21pc2UudGhlbigKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3RpbWVzRnVsZmlsbGVkOworICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3RpbWVzUmVqZWN0ZWQ7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICk7CisKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHNhdmVkUmVzb2x2ZVByb21pc2UgJiYgc2F2ZWRSZWplY3RQcm9taXNl
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzYXZlZFJlc29sdmVQcm9taXNlKGR1bW15KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVkUmVzb2x2ZVByb21pc2UoZHVtbXkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgc2F2ZWRSZWplY3RQcm9taXNlKGR1bW15KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNhdmVkUmVqZWN0UHJvbWlzZShkdW1teSk7CisgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVkUmVzb2x2ZVByb21pc2UoZHVtbXkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgc2F2ZWRSZXNvbHZlUHJvbWlzZShkdW1teSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBzYXZlZFJlamVjdFByb21pc2UoZHVtbXkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgc2F2ZWRSZWplY3RQcm9taXNlKGR1bW15KTsKKyAgICAgICAgICAgICAgICAg
ICAgfSwgNTApOworCisgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRpbWVzRnVsZmls
bGVkLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0aW1l
c1JlamVjdGVkLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9KTsKKworICAgICAgICBkZXNjcmliZSgiMi4zLjMuMy40OiBJZiBjYWxsaW5n
IGB0aGVuYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwiLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICBkZXNjcmliZSgiMi4zLjMuMy40LjE6IElmIGByZXNvbHZlUHJvbWlzZWAgb3IgYHJlamVj
dFByb21pc2VgIGhhdmUgYmVlbiBjYWxsZWQsIGlnbm9yZSBpdC4iLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgZGVzY3JpYmUoImByZXNvbHZlUHJvbWlzZWAgd2FzIGNhbGxlZCB3aXRo
IGEgbm9uLXRoZW5hYmxlIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBmdW5j
dGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKHNlbnRpbmVs
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgb3RoZXI7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1
dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFsdWUsIHNlbnRpbmVsKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgICAgICBkZXNjcmliZSgiYHJlc29sdmVQcm9taXNlYCB3YXMgY2FsbGVkIHdpdGggYW4g
YXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIHByb21pc2UiLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5yZXNvbHZlKHNl
bnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sIDUwKTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBm
dW5jdGlvbiAocmVzb2x2ZVByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzb2x2ZVByb21pc2UoZC5wcm9taXNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhyb3cgb3RoZXI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21p
c2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlv
biAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwodmFsdWUsIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBkZXNjcmliZSgiYHJlc29sdmVQ
cm9taXNlYCB3YXMgY2FsbGVkIHdpdGggYW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgcHJvbWlz
ZSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3Rvcnko
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkLnJlamVjdChzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9LCA1MCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKGQucHJvbWlzZSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG90aGVyOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24o
eEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZWFzb24sIHNlbnRpbmVsKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgICAgICBkZXNjcmliZSgiYHJlamVjdFByb21pc2VgIHdhcyBjYWxsZWQiLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UsIHJlamVjdFByb21pc2UpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0UHJvbWlzZShzZW50aW5lbCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG90aGVyOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZh
Y3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZWFzb24sIHNlbnRpbmVsKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgICAgICBkZXNjcmliZSgiYHJlc29sdmVQcm9taXNlYCB0aGVuIGByZWplY3RQcm9taXNl
YCB3ZXJlIGNhbGxlZCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rp
b24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChyZXNvbHZlUHJvbWlzZSwgcmVq
ZWN0UHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlUHJv
bWlzZShzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdFBy
b21pc2Uob3RoZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBvdGhl
cjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICB9OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBy
b21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWx1ZSwgc2VudGlu
ZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgICAgIGRlc2NyaWJlKCJgcmVqZWN0UHJvbWlzZWAgdGhlbiBgcmVz
b2x2ZVByb21pc2VgIHdlcmUgY2FsbGVkIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
ICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQ
cm9taXNlLCByZWplY3RQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlamVjdFByb21pc2Uoc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXNvbHZlUHJvbWlzZShvdGhlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRocm93IG90aGVyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
ICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBk
b25lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rp
b24gKHJlYXNvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChyZWFzb24sIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25l
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZGVz
Y3JpYmUoIjIuMy4zLjMuNC4yOiBPdGhlcndpc2UsIHJlamVjdCBgcHJvbWlzZWAgd2l0aCBgZWAg
YXMgdGhlIHJlYXNvbi4iLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZGVzY3JpYmUo
InN0cmFpZ2h0Zm9yd2FyZCBjYXNlIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBzZW50aW5lbDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhG
YWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29uLCBzZW50aW5lbCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworCisgICAg
ICAgICAgICAgICAgZGVzY3JpYmUoImByZXNvbHZlUHJvbWlzZWAgaXMgY2FsbGVkIGFzeW5jaHJv
bm91c2x5IGJlZm9yZSB0aGUgYHRocm93YCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChyZXNvbHZl
UHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVQ
cm9taXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHNlbnRpbmVsOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRp
b24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZWFzb24sIHNlbnRpbmVsKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgICAgICBkZXNjcmliZSgiYHJlamVjdFByb21pc2VgIGlzIGNhbGxlZCBhc3lu
Y2hyb25vdXNseSBiZWZvcmUgdGhlIGB0aHJvd2AiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVz
b2x2ZVByb21pc2UsIHJlamVjdFByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWplY3RQcm9taXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHNl
bnRpbmVsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB0
ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJl
YXNvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChy
ZWFzb24sIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisK
KyAgICBkZXNjcmliZSgiMi4zLjMuNDogSWYgYHRoZW5gIGlzIG5vdCBhIGZ1bmN0aW9uLCBmdWxm
aWxsIHByb21pc2Ugd2l0aCBgeGAiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGZ1bmN0aW9uIHRl
c3RGdWxmaWxsVmlhTm9uRnVuY3Rpb24odGhlbiwgc3RyaW5nUmVwcmVzZW50YXRpb24pIHsKKyAg
ICAgICAgICAgIHZhciB4ID0gbnVsbDsKKworICAgICAgICAgICAgYmVmb3JlRWFjaChmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgeCA9IHsgdGhlbjogdGhlbiB9OworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAg
IHJldHVybiB4OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkZXNjcmliZSgiYHRoZW5g
IGlzICIgKyBzdHJpbmdSZXByZXNlbnRhdGlvbiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2UsIGRv
bmUpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbHVlLCB4KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIHRlc3RGdWxmaWxsVmlhTm9uRnVuY3Rpb24oNSwgImA1YCIpOworICAgICAgICB0ZXN0RnVs
ZmlsbFZpYU5vbkZ1bmN0aW9uKHt9LCAiYW4gb2JqZWN0Iik7CisgICAgICAgIHRlc3RGdWxmaWxs
VmlhTm9uRnVuY3Rpb24oW2Z1bmN0aW9uICgpIHsgfV0sICJhbiBhcnJheSBjb250YWluaW5nIGEg
ZnVuY3Rpb24iKTsKKyAgICAgICAgdGVzdEZ1bGZpbGxWaWFOb25GdW5jdGlvbigvYS1iL2ksICJh
IHJlZ3VsYXIgZXhwcmVzc2lvbiIpOworICAgICAgICB0ZXN0RnVsZmlsbFZpYU5vbkZ1bmN0aW9u
KE9iamVjdC5jcmVhdGUoRnVuY3Rpb24ucHJvdG90eXBlKSwgImFuIG9iamVjdCBpbmhlcml0aW5n
IGZyb20gYEZ1bmN0aW9uLnByb3RvdHlwZWAiKTsKKyAgICB9KTsKK30pOworCit9KS5jYWxsKHRo
aXMsdHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAh
PT0gInVuZGVmaW5lZCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgPyB3
aW5kb3cgOiB7fSkKK30seyIuL2hlbHBlcnMvcmVhc29ucyI6MjAsIi4vaGVscGVycy90aGVuYWJs
ZXMiOjIyLCJhc3NlcnQiOjF9XSwxOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7
CisidXNlIHN0cmljdCI7CisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCJhc3NlcnQiKTsKK3ZhciB0
ZXN0RnVsZmlsbGVkID0gcmVxdWlyZSgiLi9oZWxwZXJzL3Rlc3RUaHJlZUNhc2VzIikudGVzdEZ1
bGZpbGxlZDsKK3ZhciB0ZXN0UmVqZWN0ZWQgPSByZXF1aXJlKCIuL2hlbHBlcnMvdGVzdFRocmVl
Q2FzZXMiKS50ZXN0UmVqZWN0ZWQ7CisKK3ZhciBkdW1teSA9IHsgZHVtbXk6ICJkdW1teSIgfTsg
Ly8gd2UgZnVsZmlsbCBvciByZWplY3Qgd2l0aCB0aGlzIHdoZW4gd2UgZG9uJ3QgaW50ZW5kIHRv
IHRlc3QgYWdhaW5zdCBpdAorCitkZXNjcmliZSgiMi4zLjQ6IElmIGB4YCBpcyBub3QgYW4gb2Jq
ZWN0IG9yIGZ1bmN0aW9uLCBmdWxmaWxsIGBwcm9taXNlYCB3aXRoIGB4YCIsIGZ1bmN0aW9uICgp
IHsKKyAgICBmdW5jdGlvbiB0ZXN0VmFsdWUoZXhwZWN0ZWRWYWx1ZSwgc3RyaW5nUmVwcmVzZW50
YXRpb24sIGJlZm9yZUVhY2hIb29rLCBhZnRlckVhY2hIb29rKSB7CisgICAgICAgIGRlc2NyaWJl
KCJUaGUgdmFsdWUgaXMgIiArIHN0cmluZ1JlcHJlc2VudGF0aW9uLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICBpZiAodHlwZW9mIGJlZm9yZUVhY2hIb29rID09PSAiZnVuY3Rpb24iKSB7Cisg
ICAgICAgICAgICAgICAgYmVmb3JlRWFjaChiZWZvcmVFYWNoSG9vayk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAodHlwZW9mIGFmdGVyRWFjaEhvb2sgPT09ICJmdW5jdGlvbiIpIHsK
KyAgICAgICAgICAgICAgICBhZnRlckVhY2goYWZ0ZXJFYWNoSG9vayk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHRlc3RGdWxmaWxsZWQoZHVtbXksIGZ1bmN0aW9uIChwcm9taXNlMSwg
ZG9uZSkgeworICAgICAgICAgICAgICAgIHZhciBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4oZnVu
Y3Rpb24gb25GdWxmaWxsZWQoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBleHBlY3Rl
ZFZhbHVlOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgcHJvbWlzZTIu
dGhlbihmdW5jdGlvbiBvblByb21pc2UyRnVsZmlsbGVkKGFjdHVhbFZhbHVlKSB7CisgICAgICAg
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhY3R1YWxWYWx1ZSwgZXhwZWN0ZWRWYWx1
ZSk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgdGVzdFJlamVjdGVkKGR1bW15LCBmdW5jdGlvbiAo
cHJvbWlzZTEsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICB2YXIgcHJvbWlzZTIgPSBwcm9taXNl
MS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBleHBlY3RlZFZhbHVlOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICAgICAgcHJvbWlzZTIudGhlbihmdW5jdGlvbiBvblByb21pc2UyRnVsZmlsbGVkKGFjdHVhbFZh
bHVlKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhY3R1YWxWYWx1
ZSwgZXhwZWN0ZWRWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICB0
ZXN0VmFsdWUodW5kZWZpbmVkLCAiYHVuZGVmaW5lZGAiKTsKKyAgICB0ZXN0VmFsdWUobnVsbCwg
ImBudWxsYCIpOworICAgIHRlc3RWYWx1ZShmYWxzZSwgImBmYWxzZWAiKTsKKyAgICB0ZXN0VmFs
dWUodHJ1ZSwgImB0cnVlYCIpOworICAgIHRlc3RWYWx1ZSgwLCAiYDBgIik7CisKKyAgICB0ZXN0
VmFsdWUoCisgICAgICAgIHRydWUsCisgICAgICAgICJgdHJ1ZWAgd2l0aCBgQm9vbGVhbi5wcm90
b3R5cGVgIG1vZGlmaWVkIHRvIGhhdmUgYSBgdGhlbmAgbWV0aG9kIiwKKyAgICAgICAgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgQm9vbGVhbi5wcm90b3R5cGUudGhlbiA9IGZ1bmN0aW9uICgp
IHt9OworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBkZWxl
dGUgQm9vbGVhbi5wcm90b3R5cGUudGhlbjsKKyAgICAgICAgfQorICAgICk7CisKKyAgICB0ZXN0
VmFsdWUoCisgICAgICAgIDEsCisgICAgICAgICJgMWAgd2l0aCBgTnVtYmVyLnByb3RvdHlwZWAg
bW9kaWZpZWQgdG8gaGF2ZSBhIGB0aGVuYCBtZXRob2QiLAorICAgICAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICBOdW1iZXIucHJvdG90eXBlLnRoZW4gPSBmdW5jdGlvbiAoKSB7fTsKKyAg
ICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZGVsZXRlIE51bWJl
ci5wcm90b3R5cGUudGhlbjsKKyAgICAgICAgfQorICAgICk7Cit9KTsKKworfSx7Ii4vaGVscGVy
cy90ZXN0VGhyZWVDYXNlcyI6MjEsImFzc2VydCI6MX1dLDIwOltmdW5jdGlvbihyZXF1aXJlLG1v
ZHVsZSxleHBvcnRzKXsKKyhmdW5jdGlvbiAoZ2xvYmFsKXsKKyJ1c2Ugc3RyaWN0IjsKKworLy8g
VGhpcyBtb2R1bGUgZXhwb3J0cyBzb21lIHZhbGlkIHJlamVjdGlvbiByZWFzb24gZmFjdG9yaWVz
LCBrZXllZCBieSBodW1hbi1yZWFkYWJsZSB2ZXJzaW9ucyBvZiB0aGVpciBuYW1lcy4KKwordmFy
IGFkYXB0ZXIgPSBnbG9iYWwuYWRhcHRlcjsKK3ZhciByZXNvbHZlZCA9IGFkYXB0ZXIucmVzb2x2
ZWQ7Cit2YXIgcmVqZWN0ZWQgPSBhZGFwdGVyLnJlamVjdGVkOworCit2YXIgZHVtbXkgPSB7IGR1
bW15OiAiZHVtbXkiIH07CisKK2V4cG9ydHNbImB1bmRlZmluZWRgIl0gPSBmdW5jdGlvbiAoKSB7
CisgICAgcmV0dXJuIHVuZGVmaW5lZDsKK307CisKK2V4cG9ydHNbImBudWxsYCJdID0gZnVuY3Rp
b24gKCkgeworICAgIHJldHVybiBudWxsOworfTsKKworZXhwb3J0c1siYGZhbHNlYCJdID0gZnVu
Y3Rpb24gKCkgeworICAgIHJldHVybiBmYWxzZTsKK307CisKK2V4cG9ydHNbImAwYCJdID0gZnVu
Y3Rpb24gKCkgeworICAgIHJldHVybiAwOworfTsKKworZXhwb3J0c1siYW4gZXJyb3IiXSA9IGZ1
bmN0aW9uICgpIHsKKyAgICByZXR1cm4gbmV3IEVycm9yKCk7Cit9OworCitleHBvcnRzWyJhbiBl
cnJvciB3aXRob3V0IGEgc3RhY2siXSA9IGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgZXJyb3IgPSBu
ZXcgRXJyb3IoKTsKKyAgICBkZWxldGUgZXJyb3Iuc3RhY2s7CisKKyAgICByZXR1cm4gZXJyb3I7
Cit9OworCitleHBvcnRzWyJhIGRhdGUiXSA9IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gbmV3
IERhdGUoKTsKK307CisKK2V4cG9ydHNbImFuIG9iamVjdCJdID0gZnVuY3Rpb24gKCkgeworICAg
IHJldHVybiB7fTsKK307CisKK2V4cG9ydHNbImFuIGFsd2F5cy1wZW5kaW5nIHRoZW5hYmxlIl0g
PSBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIHsgdGhlbjogZnVuY3Rpb24gKCkgeyB9IH07Cit9
OworCitleHBvcnRzWyJhIGZ1bGZpbGxlZCBwcm9taXNlIl0gPSBmdW5jdGlvbiAoKSB7CisgICAg
cmV0dXJuIHJlc29sdmVkKGR1bW15KTsKK307CisKK2V4cG9ydHNbImEgcmVqZWN0ZWQgcHJvbWlz
ZSJdID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiByZWplY3RlZChkdW1teSk7Cit9OworCit9
KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgPyBnbG9iYWwgOiB0eXBl
b2Ygc2VsZiAhPT0gInVuZGVmaW5lZCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gInVuZGVm
aW5lZCIgPyB3aW5kb3cgOiB7fSkKK30se31dLDIxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxl
eHBvcnRzKXsKKyhmdW5jdGlvbiAoZ2xvYmFsKXsKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIGFkYXB0
ZXIgPSBnbG9iYWwuYWRhcHRlcjsKK3ZhciByZXNvbHZlZCA9IGFkYXB0ZXIucmVzb2x2ZWQ7Cit2
YXIgcmVqZWN0ZWQgPSBhZGFwdGVyLnJlamVjdGVkOwordmFyIGRlZmVycmVkID0gYWRhcHRlci5k
ZWZlcnJlZDsKKworZXhwb3J0cy50ZXN0RnVsZmlsbGVkID0gZnVuY3Rpb24gKHZhbHVlLCB0ZXN0
KSB7CisgICAgc3BlY2lmeSgiYWxyZWFkeS1mdWxmaWxsZWQiLCBmdW5jdGlvbiAoZG9uZSkgewor
ICAgICAgICB0ZXN0KHJlc29sdmVkKHZhbHVlKSwgZG9uZSk7CisgICAgfSk7CisKKyAgICBzcGVj
aWZ5KCJpbW1lZGlhdGVseS1mdWxmaWxsZWQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICB2
YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgIHRlc3QoZC5wcm9taXNlLCBkb25lKTsKKyAgICAg
ICAgZC5yZXNvbHZlKHZhbHVlKTsKKyAgICB9KTsKKworICAgIHNwZWNpZnkoImV2ZW50dWFsbHkt
ZnVsZmlsbGVkIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgp
OworICAgICAgICB0ZXN0KGQucHJvbWlzZSwgZG9uZSk7CisgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgZC5yZXNvbHZlKHZhbHVlKTsKKyAgICAgICAgfSwgNTAp
OworICAgIH0pOworfTsKKworZXhwb3J0cy50ZXN0UmVqZWN0ZWQgPSBmdW5jdGlvbiAocmVhc29u
LCB0ZXN0KSB7CisgICAgc3BlY2lmeSgiYWxyZWFkeS1yZWplY3RlZCIsIGZ1bmN0aW9uIChkb25l
KSB7CisgICAgICAgIHRlc3QocmVqZWN0ZWQocmVhc29uKSwgZG9uZSk7CisgICAgfSk7CisKKyAg
ICBzcGVjaWZ5KCJpbW1lZGlhdGVseS1yZWplY3RlZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAg
ICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgdGVzdChkLnByb21pc2UsIGRvbmUpOwor
ICAgICAgICBkLnJlamVjdChyZWFzb24pOworICAgIH0pOworCisgICAgc3BlY2lmeSgiZXZlbnR1
YWxseS1yZWplY3RlZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIHZhciBkID0gZGVmZXJy
ZWQoKTsKKyAgICAgICAgdGVzdChkLnByb21pc2UsIGRvbmUpOworICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGQucmVqZWN0KHJlYXNvbik7CisgICAgICAgIH0s
IDUwKTsKKyAgICB9KTsKK307CisKK30pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSAidW5k
ZWZpbmVkIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSAidW5kZWZpbmVkIiA/IHNlbGYgOiB0
eXBlb2Ygd2luZG93ICE9PSAidW5kZWZpbmVkIiA/IHdpbmRvdyA6IHt9KQorfSx7fV0sMjI6W2Z1
bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworKGZ1bmN0aW9uIChnbG9iYWwpeworInVz
ZSBzdHJpY3QiOworCit2YXIgYWRhcHRlciA9IGdsb2JhbC5hZGFwdGVyOwordmFyIHJlc29sdmVk
ID0gYWRhcHRlci5yZXNvbHZlZDsKK3ZhciByZWplY3RlZCA9IGFkYXB0ZXIucmVqZWN0ZWQ7Cit2
YXIgZGVmZXJyZWQgPSBhZGFwdGVyLmRlZmVycmVkOworCit2YXIgb3RoZXIgPSB7IG90aGVyOiAi
b3RoZXIiIH07IC8vIGEgdmFsdWUgd2UgZG9uJ3Qgd2FudCB0byBiZSBzdHJpY3QgZXF1YWwgdG8K
KworZXhwb3J0cy5mdWxmaWxsZWQgPSB7CisgICAgImEgc3luY2hyb25vdXNseS1mdWxmaWxsZWQg
Y3VzdG9tIHRoZW5hYmxlIjogZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAgIHJldHVybiB7Cisg
ICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAob25GdWxmaWxsZWQpIHsKKyAgICAgICAgICAgICAg
ICBvbkZ1bGZpbGxlZCh2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfSwK
KworICAgICJhbiBhc3luY2hyb25vdXNseS1mdWxmaWxsZWQgY3VzdG9tIHRoZW5hYmxlIjogZnVu
Y3Rpb24gKHZhbHVlKSB7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICB0aGVuOiBmdW5j
dGlvbiAob25GdWxmaWxsZWQpIHsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgb25GdWxmaWxsZWQodmFsdWUpOworICAgICAgICAg
ICAgICAgIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0sCisKKyAgICAi
YSBzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBvbmUtdGltZSB0aGVuYWJsZSI6IGZ1bmN0aW9uICh2
YWx1ZSkgeworICAgICAgICB2YXIgbnVtYmVyT2ZUaW1lc1RoZW5SZXRyaWV2ZWQgPSAwOworICAg
ICAgICByZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsLCB7CisgICAgICAgICAgICB0aGVuOiB7Cisg
ICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChudW1iZXJPZlRpbWVzVGhlblJldHJpZXZlZCA9PT0gMCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgKytudW1iZXJPZlRpbWVzVGhlblJldHJpZXZlZDsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmdW5jdGlvbiAob25GdWxmaWxsZWQpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvbkZ1bGZpbGxlZCh2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfSwKKwor
ICAgICJhIHRoZW5hYmxlIHRoYXQgdHJpZXMgdG8gZnVsZmlsbCB0d2ljZSI6IGZ1bmN0aW9uICh2
YWx1ZSkgeworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKG9u
RnVsZmlsbGVkKSB7CisgICAgICAgICAgICAgICAgb25GdWxmaWxsZWQodmFsdWUpOworICAgICAg
ICAgICAgICAgIG9uRnVsZmlsbGVkKG90aGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsK
KyAgICB9LAorCisgICAgImEgdGhlbmFibGUgdGhhdCBmdWxmaWxscyBidXQgdGhlbiB0aHJvd3Mi
OiBmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHRoZW46
IGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCkgeworICAgICAgICAgICAgICAgIG9uRnVsZmlsbGVkKHZh
bHVlKTsKKyAgICAgICAgICAgICAgICB0aHJvdyBvdGhlcjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfTsKKyAgICB9LAorCisgICAgImFuIGFscmVhZHktZnVsZmlsbGVkIHByb21pc2UiOiBmdW5j
dGlvbiAodmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVkKHZhbHVlKTsKKyAgICB9LAor
CisgICAgImFuIGV2ZW50dWFsbHktZnVsZmlsbGVkIHByb21pc2UiOiBmdW5jdGlvbiAodmFsdWUp
IHsKKyAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIGQucmVzb2x2ZSh2YWx1ZSk7CisgICAgICAgIH0sIDUwKTsK
KyAgICAgICAgcmV0dXJuIGQucHJvbWlzZTsKKyAgICB9Cit9OworCitleHBvcnRzLnJlamVjdGVk
ID0geworICAgICJhIHN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIjogZnVu
Y3Rpb24gKHJlYXNvbikgeworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgdGhlbjogZnVu
Y3Rpb24gKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7CisgICAgICAgICAgICAgICAgb25SZWpl
Y3RlZChyZWFzb24pOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0sCisKKyAgICAi
YW4gYXN5bmNocm9ub3VzbHktcmVqZWN0ZWQgY3VzdG9tIHRoZW5hYmxlIjogZnVuY3Rpb24gKHJl
YXNvbikgeworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKG9u
RnVsZmlsbGVkLCBvblJlamVjdGVkKSB7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIG9uUmVqZWN0ZWQocmVhc29uKTsKKyAgICAg
ICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9LAorCisg
ICAgImEgc3luY2hyb25vdXNseS1yZWplY3RlZCBvbmUtdGltZSB0aGVuYWJsZSI6IGZ1bmN0aW9u
IChyZWFzb24pIHsKKyAgICAgICAgdmFyIG51bWJlck9mVGltZXNUaGVuUmV0cmlldmVkID0gMDsK
KyAgICAgICAgcmV0dXJuIE9iamVjdC5jcmVhdGUobnVsbCwgeworICAgICAgICAgICAgdGhlbjog
eworICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAobnVtYmVyT2ZUaW1lc1RoZW5SZXRyaWV2ZWQgPT09IDApIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICsrbnVtYmVyT2ZUaW1lc1RoZW5SZXRyaWV2ZWQ7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb25SZWplY3RlZChyZWFzb24pOworICAgICAgICAgICAg
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH0pOworICAgIH0sCisKKyAgICAiYSB0aGVuYWJsZSB0aGF0IGltbWVkaWF0ZWx5IHRocm93cyBp
biBgdGhlbmAiOiBmdW5jdGlvbiAocmVhc29uKSB7CisgICAgICAgIHJldHVybiB7CisgICAgICAg
ICAgICB0aGVuOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgcmVhc29uOwor
ICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0sCisKKyAgICAiYW4gb2JqZWN0IHdpdGgg
YSB0aHJvd2luZyBgdGhlbmAgYWNjZXNzb3IiOiBmdW5jdGlvbiAocmVhc29uKSB7CisgICAgICAg
IHJldHVybiBPYmplY3QuY3JlYXRlKG51bGwsIHsKKyAgICAgICAgICAgIHRoZW46IHsKKyAgICAg
ICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cg
cmVhc29uOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7Cisg
ICAgfSwKKworICAgICJhbiBhbHJlYWR5LXJlamVjdGVkIHByb21pc2UiOiBmdW5jdGlvbiAocmVh
c29uKSB7CisgICAgICAgIHJldHVybiByZWplY3RlZChyZWFzb24pOworICAgIH0sCisKKyAgICAi
YW4gZXZlbnR1YWxseS1yZWplY3RlZCBwcm9taXNlIjogZnVuY3Rpb24gKHJlYXNvbikgeworICAg
ICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgZC5yZWplY3QocmVhc29uKTsKKyAgICAgICAgfSwgNTApOworICAgICAg
ICByZXR1cm4gZC5wcm9taXNlOworICAgIH0KK307CisKK30pLmNhbGwodGhpcyx0eXBlb2YgZ2xv
YmFsICE9PSAidW5kZWZpbmVkIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSAidW5kZWZpbmVk
IiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSAidW5kZWZpbmVkIiA/IHdpbmRvdyA6IHt9KQor
fSx7fV0sMjM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLypqc2xpbnQgZXFl
cWVxOiBmYWxzZSwgb25ldmFyOiBmYWxzZSwgZm9yaW46IHRydWUsIG5vbWVuOiBmYWxzZSwgcmVn
ZXhwOiBmYWxzZSwgcGx1c3BsdXM6IGZhbHNlKi8KKy8qZ2xvYmFsIG1vZHVsZSwgcmVxdWlyZSwg
X19kaXJuYW1lLCBkb2N1bWVudCovCisvKioKKyAqIFNpbm9uIGNvcmUgdXRpbGl0aWVzLiBGb3Ig
aW50ZXJuYWwgdXNlIG9ubHkuCisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gSm9oYW5zZW4gKGNo
cmlzdGlhbkBjam9oYW5zZW4ubm8pCisgKiBAbGljZW5zZSBCU0QKKyAqCisgKiBDb3B5cmlnaHQg
KGMpIDIwMTAtMjAxMyBDaHJpc3RpYW4gSm9oYW5zZW4KKyAqLworInVzZSBzdHJpY3QiOworCit2
YXIgc2lub24gPSAoZnVuY3Rpb24gKGZvcm1hdGlvKSB7CisgICAgdmFyIGRpdiA9IHR5cGVvZiBk
b2N1bWVudCAhPSAidW5kZWZpbmVkIiAmJiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICB2YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTsKKworICAg
IGZ1bmN0aW9uIGlzRE9NTm9kZShvYmopIHsKKyAgICAgICAgdmFyIHN1Y2Nlc3MgPSBmYWxzZTsK
KworICAgICAgICB0cnkgeworICAgICAgICAgICAgb2JqLmFwcGVuZENoaWxkKGRpdik7CisgICAg
ICAgICAgICBzdWNjZXNzID0gZGl2LnBhcmVudE5vZGUgPT0gb2JqOworICAgICAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZmluYWxseSB7Cisg
ICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG9iai5yZW1vdmVDaGlsZChkaXYpOwor
ICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBmYWls
ZWQsIG5vdCBtdWNoIHdlIGNhbiBkbyBhYm91dCB0aGF0CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBpc0Vs
ZW1lbnQob2JqKSB7CisgICAgICAgIHJldHVybiBkaXYgJiYgb2JqICYmIG9iai5ub2RlVHlwZSA9
PT0gMSAmJiBpc0RPTU5vZGUob2JqKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBpc0Z1bmN0aW9u
KG9iaikgeworICAgICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gImZ1bmN0aW9uIiB8fCAhIShv
YmogJiYgb2JqLmNvbnN0cnVjdG9yICYmIG9iai5jYWxsICYmIG9iai5hcHBseSk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gaXNSZWFsbHlOYU4odmFsKSB7CisgICAgICAgIHJldHVybiB0eXBlb2Yg
dmFsID09PSAnbnVtYmVyJyAmJiBpc05hTih2YWwpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG1p
cnJvclByb3BlcnRpZXModGFyZ2V0LCBzb3VyY2UpIHsKKyAgICAgICAgZm9yICh2YXIgcHJvcCBp
biBzb3VyY2UpIHsKKyAgICAgICAgICAgIGlmICghaGFzT3duLmNhbGwodGFyZ2V0LCBwcm9wKSkg
eworICAgICAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIGlzUmVzdG9yYWJsZSAob2Jq
KSB7CisgICAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSAiZnVuY3Rpb24iICYmIHR5cGVvZiBv
YmoucmVzdG9yZSA9PT0gImZ1bmN0aW9uIiAmJiBvYmoucmVzdG9yZS5zaW5vbjsKKyAgICB9CisK
KyAgICB2YXIgc2lub24gPSB7CisgICAgICAgIHdyYXBNZXRob2Q6IGZ1bmN0aW9uIHdyYXBNZXRo
b2Qob2JqZWN0LCBwcm9wZXJ0eSwgbWV0aG9kKSB7CisgICAgICAgICAgICBpZiAoIW9iamVjdCkg
eworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIlNob3VsZCB3cmFwIHByb3Bl
cnR5IG9mIG9iamVjdCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodHlwZW9m
IG1ldGhvZCAhPSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVF
cnJvcigiTWV0aG9kIHdyYXBwZXIgc2hvdWxkIGJlIGZ1bmN0aW9uIik7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3cmFwcGVkTWV0aG9kID0gb2JqZWN0W3Byb3BlcnR5XSwKKyAg
ICAgICAgICAgICAgICBlcnJvcjsKKworICAgICAgICAgICAgaWYgKCFpc0Z1bmN0aW9uKHdyYXBw
ZWRNZXRob2QpKSB7CisgICAgICAgICAgICAgICAgZXJyb3IgPSBuZXcgVHlwZUVycm9yKCJBdHRl
bXB0ZWQgdG8gd3JhcCAiICsgKHR5cGVvZiB3cmFwcGVkTWV0aG9kKSArICIgcHJvcGVydHkgIiAr
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eSArICIgYXMgZnVu
Y3Rpb24iKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAod3JhcHBlZE1ldGhvZC5yZXN0b3JlICYm
IHdyYXBwZWRNZXRob2QucmVzdG9yZS5zaW5vbikgeworICAgICAgICAgICAgICAgIGVycm9yID0g
bmV3IFR5cGVFcnJvcigiQXR0ZW1wdGVkIHRvIHdyYXAgIiArIHByb3BlcnR5ICsgIiB3aGljaCBp
cyBhbHJlYWR5IHdyYXBwZWQiKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAod3JhcHBlZE1ldGhv
ZC5jYWxsZWRCZWZvcmUpIHsKKyAgICAgICAgICAgICAgICB2YXIgdmVyYiA9ICEhd3JhcHBlZE1l
dGhvZC5yZXR1cm5zID8gInN0dWJiZWQiIDogInNwaWVkIG9uIjsKKyAgICAgICAgICAgICAgICBl
cnJvciA9IG5ldyBUeXBlRXJyb3IoIkF0dGVtcHRlZCB0byB3cmFwICIgKyBwcm9wZXJ0eSArICIg
d2hpY2ggaXMgYWxyZWFkeSAiICsgdmVyYik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChlcnJvcikgeworICAgICAgICAgICAgICAgIGlmICh3cmFwcGVkTWV0aG9kICYmIHdyYXBw
ZWRNZXRob2QuX3N0YWNrKSB7CisgICAgICAgICAgICAgICAgICAgIGVycm9yLnN0YWNrICs9ICdc
bi0tLS0tLS0tLS0tLS0tXG4nICsgd3JhcHBlZE1ldGhvZC5fc3RhY2s7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHRocm93IGVycm9yOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBJRSA4IGRvZXMgbm90IHN1cHBvcnQgaGFzT3duUHJvcGVydHkgb24gdGhlIHdp
bmRvdyBvYmplY3QgYW5kIEZpcmVmb3ggaGFzIGEgcHJvYmxlbQorICAgICAgICAgICAgLy8gd2hl
biB1c2luZyBoYXNPd24uY2FsbCBvbiBvYmplY3RzIGZyb20gb3RoZXIgZnJhbWVzLgorICAgICAg
ICAgICAgdmFyIG93bmVkID0gb2JqZWN0Lmhhc093blByb3BlcnR5ID8gb2JqZWN0Lmhhc093blBy
b3BlcnR5KHByb3BlcnR5KSA6IGhhc093bi5jYWxsKG9iamVjdCwgcHJvcGVydHkpOworICAgICAg
ICAgICAgb2JqZWN0W3Byb3BlcnR5XSA9IG1ldGhvZDsKKyAgICAgICAgICAgIG1ldGhvZC5kaXNw
bGF5TmFtZSA9IHByb3BlcnR5OworICAgICAgICAgICAgLy8gU2V0IHVwIGEgc3RhY2sgdHJhY2Ug
d2hpY2ggY2FuIGJlIHVzZWQgbGF0ZXIgdG8gZmluZCB3aGF0IGxpbmUgb2YKKyAgICAgICAgICAg
IC8vIGNvZGUgdGhlIG9yaWdpbmFsIG1ldGhvZCB3YXMgY3JlYXRlZCBvbi4KKyAgICAgICAgICAg
IG1ldGhvZC5fc3RhY2sgPSAobmV3IEVycm9yKCdTdGFjayBUcmFjZSBmb3Igb3JpZ2luYWwnKSku
c3RhY2s7CisKKyAgICAgICAgICAgIG1ldGhvZC5yZXN0b3JlID0gZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgIC8vIEZvciBwcm90b3R5cGUgcHJvcGVydGllcyB0cnkgdG8gcmVzZXQgYnkg
ZGVsZXRlIGZpcnN0LgorICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgZmFpbHMgKGV4OiBsb2Nh
bFN0b3JhZ2Ugb24gbW9iaWxlIHNhZmFyaSkgdGhlbiBmb3JjZSBhIHJlc2V0CisgICAgICAgICAg
ICAgICAgLy8gdmlhIGRpcmVjdCBhc3NpZ25tZW50LgorICAgICAgICAgICAgICAgIGlmICghb3du
ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9iamVjdFtwcm9wZXJ0eV07CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChvYmplY3RbcHJvcGVydHldID09PSBt
ZXRob2QpIHsKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0W3Byb3BlcnR5XSA9IHdyYXBwZWRN
ZXRob2Q7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAg
bWV0aG9kLnJlc3RvcmUuc2lub24gPSB0cnVlOworICAgICAgICAgICAgbWlycm9yUHJvcGVydGll
cyhtZXRob2QsIHdyYXBwZWRNZXRob2QpOworCisgICAgICAgICAgICByZXR1cm4gbWV0aG9kOwor
ICAgICAgICB9LAorCisgICAgICAgIGV4dGVuZDogZnVuY3Rpb24gZXh0ZW5kKHRhcmdldCkgewor
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDEsIGwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbDsg
aSArPSAxKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBhcmd1bWVudHNbaV0p
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c1tpXS5oYXNPd25Qcm9wZXJ0eShw
cm9wKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W3Byb3BdID0gYXJndW1lbnRz
W2ldW3Byb3BdOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg
Ly8gRE9OVCBFTlVNIGJ1Zywgb25seSBjYXJlIGFib3V0IHRvU3RyaW5nCisgICAgICAgICAgICAg
ICAgICAgIGlmIChhcmd1bWVudHNbaV0uaGFzT3duUHJvcGVydHkoInRvU3RyaW5nIikgJiYKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1tpXS50b1N0cmluZyAhPSB0YXJnZXQudG9T
dHJpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC50b1N0cmluZyA9IGFyZ3Vt
ZW50c1tpXS50b1N0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICAgICAg
fSwKKworICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uIGNyZWF0ZShwcm90bykgeworICAgICAgICAg
ICAgdmFyIEYgPSBmdW5jdGlvbiAoKSB7fTsKKyAgICAgICAgICAgIEYucHJvdG90eXBlID0gcHJv
dG87CisgICAgICAgICAgICByZXR1cm4gbmV3IEYoKTsKKyAgICAgICAgfSwKKworICAgICAgICBk
ZWVwRXF1YWw6IGZ1bmN0aW9uIGRlZXBFcXVhbChhLCBiKSB7CisgICAgICAgICAgICBpZiAoc2lu
b24ubWF0Y2ggJiYgc2lub24ubWF0Y2guaXNNYXRjaGVyKGEpKSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGEudGVzdChiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHR5cGVv
ZiBhICE9ICdvYmplY3QnIHx8IHR5cGVvZiBiICE9ICdvYmplY3QnKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGlzUmVhbGx5TmFOKGEpICYmIGlzUmVhbGx5TmFOKGIpKSB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBhID09PSBiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKGlzRWxlbWVudChhKSB8fCBpc0VsZW1lbnQoYikpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gYSA9PT0gYjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKGEgPT09IGIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKChhID09PSBudWxsICYmIGIgIT09IG51bGwpIHx8IChh
ICE9PSBudWxsICYmIGIgPT09IG51bGwpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFJlZ0V4cCAm
JiBiIGluc3RhbmNlb2YgUmVnRXhwKSB7CisgICAgICAgICAgICAgIHJldHVybiAoYS5zb3VyY2Ug
PT09IGIuc291cmNlKSAmJiAoYS5nbG9iYWwgPT09IGIuZ2xvYmFsKSAmJgorICAgICAgICAgICAg
ICAgIChhLmlnbm9yZUNhc2UgPT09IGIuaWdub3JlQ2FzZSkgJiYgKGEubXVsdGlsaW5lID09PSBi
Lm11bHRpbGluZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBhU3RyaW5nID0g
T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpOworICAgICAgICAgICAgaWYgKGFTdHJp
bmcgIT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGIpKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYVN0cmlu
ZyA9PSAiW29iamVjdCBEYXRlXSIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYS52YWx1ZU9m
KCkgPT09IGIudmFsdWVPZigpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgcHJv
cCwgYUxlbmd0aCA9IDAsIGJMZW5ndGggPSAwOworCisgICAgICAgICAgICBpZiAoYVN0cmluZyA9
PSAiW29iamVjdCBBcnJheV0iICYmIGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgeworICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChw
cm9wIGluIGEpIHsKKyAgICAgICAgICAgICAgICBhTGVuZ3RoICs9IDE7CisKKyAgICAgICAgICAg
ICAgICBpZiAoIShwcm9wIGluIGIpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIWRlZXBFcXVhbChh
W3Byb3BdLCBiW3Byb3BdKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKHByb3Ag
aW4gYikgeworICAgICAgICAgICAgICAgIGJMZW5ndGggKz0gMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIGFMZW5ndGggPT0gYkxlbmd0aDsKKyAgICAgICAgfSwKKworICAg
ICAgICBmdW5jdGlvbk5hbWU6IGZ1bmN0aW9uIGZ1bmN0aW9uTmFtZShmdW5jKSB7CisgICAgICAg
ICAgICB2YXIgbmFtZSA9IGZ1bmMuZGlzcGxheU5hbWUgfHwgZnVuYy5uYW1lOworCisgICAgICAg
ICAgICAvLyBVc2UgZnVuY3Rpb24gZGVjb21wb3NpdGlvbiBhcyBhIGxhc3QgcmVzb3J0IHRvIGdl
dCBmdW5jdGlvbgorICAgICAgICAgICAgLy8gbmFtZS4gRG9lcyBub3QgcmVseSBvbiBmdW5jdGlv
biBkZWNvbXBvc2l0aW9uIHRvIHdvcmsgLSBpZiBpdAorICAgICAgICAgICAgLy8gZG9lc24ndCBk
ZWJ1Z2dpbmcgd2lsbCBiZSBzbGlnaHRseSBsZXNzIGluZm9ybWF0aXZlCisgICAgICAgICAgICAv
LyAoaS5lLiB0b1N0cmluZyB3aWxsIHNheSAnc3B5JyByYXRoZXIgdGhhbiAnbXlGdW5jJykuCisg
ICAgICAgICAgICBpZiAoIW5hbWUpIHsKKyAgICAgICAgICAgICAgICB2YXIgbWF0Y2hlcyA9IGZ1
bmMudG9TdHJpbmcoKS5tYXRjaCgvZnVuY3Rpb24gKFteXHNcKF0rKS8pOworICAgICAgICAgICAg
ICAgIG5hbWUgPSBtYXRjaGVzICYmIG1hdGNoZXNbMV07CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBuYW1lOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uVG9TdHJp
bmc6IGZ1bmN0aW9uIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgaWYgKHRoaXMuZ2V0Q2FsbCAm
JiB0aGlzLmNhbGxDb3VudCkgeworICAgICAgICAgICAgICAgIHZhciB0aGlzVmFsdWUsIHByb3As
IGkgPSB0aGlzLmNhbGxDb3VudDsKKworICAgICAgICAgICAgICAgIHdoaWxlIChpLS0pIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGhpc1ZhbHVlID0gdGhpcy5nZXRDYWxsKGkpLnRoaXNWYWx1ZTsK
KworICAgICAgICAgICAgICAgICAgICBmb3IgKHByb3AgaW4gdGhpc1ZhbHVlKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodGhpc1ZhbHVlW3Byb3BdID09PSB0aGlzKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3A7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlOYW1lIHx8ICJzaW5vbiBmYWtl
IjsKKyAgICAgICAgfSwKKworICAgICAgICBnZXRDb25maWc6IGZ1bmN0aW9uIChjdXN0b20pIHsK
KyAgICAgICAgICAgIHZhciBjb25maWcgPSB7fTsKKyAgICAgICAgICAgIGN1c3RvbSA9IGN1c3Rv
bSB8fCB7fTsKKyAgICAgICAgICAgIHZhciBkZWZhdWx0cyA9IHNpbm9uLmRlZmF1bHRDb25maWc7
CisKKyAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gZGVmYXVsdHMpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoZGVmYXVsdHMuaGFzT3duUHJvcGVydHkocHJvcCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY29uZmlnW3Byb3BdID0gY3VzdG9tLmhhc093blByb3BlcnR5KHByb3ApID8gY3VzdG9t
W3Byb3BdIDogZGVmYXVsdHNbcHJvcF07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gY29uZmlnOworICAgICAgICB9LAorCisgICAgICAgIGZv
cm1hdDogZnVuY3Rpb24gKHZhbCkgeworICAgICAgICAgICAgcmV0dXJuICIiICsgdmFsOworICAg
ICAgICB9LAorCisgICAgICAgIGRlZmF1bHRDb25maWc6IHsKKyAgICAgICAgICAgIGluamVjdElu
dG9UaGlzOiB0cnVlLAorICAgICAgICAgICAgaW5qZWN0SW50bzogbnVsbCwKKyAgICAgICAgICAg
IHByb3BlcnRpZXM6IFsic3B5IiwgInN0dWIiLCAibW9jayIsICJjbG9jayIsICJzZXJ2ZXIiLCAi
cmVxdWVzdHMiXSwKKyAgICAgICAgICAgIHVzZUZha2VUaW1lcnM6IHRydWUsCisgICAgICAgICAg
ICB1c2VGYWtlU2VydmVyOiB0cnVlCisgICAgICAgIH0sCisKKyAgICAgICAgdGltZXNJbldvcmRz
OiBmdW5jdGlvbiB0aW1lc0luV29yZHMoY291bnQpIHsKKyAgICAgICAgICAgIHJldHVybiBjb3Vu
dCA9PSAxICYmICJvbmNlIiB8fAorICAgICAgICAgICAgICAgIGNvdW50ID09IDIgJiYgInR3aWNl
IiB8fAorICAgICAgICAgICAgICAgIGNvdW50ID09IDMgJiYgInRocmljZSIgfHwKKyAgICAgICAg
ICAgICAgICAoY291bnQgfHwgMCkgKyAiIHRpbWVzIjsKKyAgICAgICAgfSwKKworICAgICAgICBj
YWxsZWRJbk9yZGVyOiBmdW5jdGlvbiAoc3BpZXMpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkg
PSAxLCBsID0gc3BpZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYg
KCFzcGllc1tpIC0gMV0uY2FsbGVkQmVmb3JlKHNwaWVzW2ldKSB8fCAhc3BpZXNbaV0uY2FsbGVk
KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9LAor
CisgICAgICAgIG9yZGVyQnlGaXJzdENhbGw6IGZ1bmN0aW9uIChzcGllcykgeworICAgICAgICAg
ICAgcmV0dXJuIHNwaWVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsKKyAgICAgICAgICAgICAgICAv
LyB1dWlkLCB3b24ndCBldmVyIGJlIGVxdWFsCisgICAgICAgICAgICAgICAgdmFyIGFDYWxsID0g
YS5nZXRDYWxsKDApOworICAgICAgICAgICAgICAgIHZhciBiQ2FsbCA9IGIuZ2V0Q2FsbCgwKTsK
KyAgICAgICAgICAgICAgICB2YXIgYUlkID0gYUNhbGwgJiYgYUNhbGwuY2FsbElkIHx8IC0xOwor
ICAgICAgICAgICAgICAgIHZhciBiSWQgPSBiQ2FsbCAmJiBiQ2FsbC5jYWxsSWQgfHwgLTE7CisK
KyAgICAgICAgICAgICAgICByZXR1cm4gYUlkIDwgYklkID8gLTEgOiAxOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0sCisKKyAgICAgICAgbG9nOiBmdW5jdGlvbiAoKSB7fSwKKworICAgICAg
ICBsb2dFcnJvcjogZnVuY3Rpb24gKGxhYmVsLCBlcnIpIHsKKyAgICAgICAgICAgIHZhciBtc2cg
PSBsYWJlbCArICIgdGhyZXcgZXhjZXB0aW9uOiAiOworICAgICAgICAgICAgc2lub24ubG9nKG1z
ZyArICJbIiArIGVyci5uYW1lICsgIl0gIiArIGVyci5tZXNzYWdlKTsKKyAgICAgICAgICAgIGlm
IChlcnIuc3RhY2spIHsgc2lub24ubG9nKGVyci5zdGFjayk7IH0KKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZXJyLm1lc3NhZ2UgPSBtc2cg
KyBlcnIubWVzc2FnZTsKKyAgICAgICAgICAgICAgICB0aHJvdyBlcnI7CisgICAgICAgICAgICB9
LCAwKTsKKyAgICAgICAgfSwKKworICAgICAgICB0eXBlT2Y6IGZ1bmN0aW9uICh2YWx1ZSkgewor
ICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
ICJudWxsIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09PSB1
bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gInVuZGVmaW5lZCI7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICB2YXIgc3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmlu
Zy5jYWxsKHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmcuc3Vic3RyaW5nKDgsIHN0
cmluZy5sZW5ndGggLSAxKS50b0xvd2VyQ2FzZSgpOworICAgICAgICB9LAorCisgICAgICAgIGNy
ZWF0ZVN0dWJJbnN0YW5jZTogZnVuY3Rpb24gKGNvbnN0cnVjdG9yKSB7CisgICAgICAgICAgICBp
ZiAodHlwZW9mIGNvbnN0cnVjdG9yICE9PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGNvbnN0cnVjdG9yIHNob3VsZCBiZSBhIGZ1bmN0aW9u
LiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHNpbm9uLnN0dWIoc2lub24u
Y3JlYXRlKGNvbnN0cnVjdG9yLnByb3RvdHlwZSkpOworICAgICAgICB9LAorCisgICAgICAgIHJl
c3RvcmU6IGZ1bmN0aW9uIChvYmplY3QpIHsKKyAgICAgICAgICAgIGlmIChvYmplY3QgIT09IG51
bGwgJiYgdHlwZW9mIG9iamVjdCA9PT0gIm9iamVjdCIpIHsKKyAgICAgICAgICAgICAgICBmb3Ig
KHZhciBwcm9wIGluIG9iamVjdCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXNSZXN0b3Jh
YmxlKG9iamVjdFtwcm9wXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFtwcm9w
XS5yZXN0b3JlKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChpc1Jlc3RvcmFibGUob2JqZWN0KSkg
eworICAgICAgICAgICAgICAgIG9iamVjdC5yZXN0b3JlKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9OworCisgICAgdmFyIGlzTm9kZSA9IHR5cGVvZiBtb2R1bGUgIT09ICJ1bmRl
ZmluZWQiICYmIG1vZHVsZS5leHBvcnRzICYmIHR5cGVvZiByZXF1aXJlID09ICJmdW5jdGlvbiI7
CisgICAgdmFyIGlzQU1EID0gdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Yg
ZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZDsKKworICAgIGZ1bmN0aW9uIG1h
a2VQdWJsaWNBUEkocmVxdWlyZSwgZXhwb3J0cywgbW9kdWxlKSB7CisgICAgICAgIG1vZHVsZS5l
eHBvcnRzID0gc2lub247CisgICAgICAgIHNpbm9uLnNweSA9IHJlcXVpcmUoIi4vc2lub24vc3B5
Iik7CisgICAgICAgIHNpbm9uLnNweUNhbGwgPSByZXF1aXJlKCIuL3Npbm9uL2NhbGwiKTsKKyAg
ICAgICAgc2lub24uYmVoYXZpb3IgPSByZXF1aXJlKCIuL3Npbm9uL2JlaGF2aW9yIik7CisgICAg
ICAgIHNpbm9uLnN0dWIgPSByZXF1aXJlKCIuL3Npbm9uL3N0dWIiKTsKKyAgICAgICAgc2lub24u
bW9jayA9IHJlcXVpcmUoIi4vc2lub24vbW9jayIpOworICAgICAgICBzaW5vbi5jb2xsZWN0aW9u
ID0gcmVxdWlyZSgiLi9zaW5vbi9jb2xsZWN0aW9uIik7CisgICAgICAgIHNpbm9uLmFzc2VydCA9
IHJlcXVpcmUoIi4vc2lub24vYXNzZXJ0Iik7CisgICAgICAgIHNpbm9uLnNhbmRib3ggPSByZXF1
aXJlKCIuL3Npbm9uL3NhbmRib3giKTsKKyAgICAgICAgc2lub24udGVzdCA9IHJlcXVpcmUoIi4v
c2lub24vdGVzdCIpOworICAgICAgICBzaW5vbi50ZXN0Q2FzZSA9IHJlcXVpcmUoIi4vc2lub24v
dGVzdF9jYXNlIik7CisgICAgICAgIHNpbm9uLm1hdGNoID0gcmVxdWlyZSgiLi9zaW5vbi9tYXRj
aCIpOworICAgIH0KKworICAgIGlmIChpc0FNRCkgeworICAgICAgICBkZWZpbmUobWFrZVB1Ymxp
Y0FQSSk7CisgICAgfSBlbHNlIGlmIChpc05vZGUpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIGZvcm1hdGlvID0gcmVxdWlyZSgiZm9ybWF0aW8iKTsKKyAgICAgICAgfSBjYXRjaCAoZSkg
e30KKyAgICAgICAgbWFrZVB1YmxpY0FQSShyZXF1aXJlLCBleHBvcnRzLCBtb2R1bGUpOworICAg
IH0KKworICAgIGlmIChmb3JtYXRpbykgeworICAgICAgICB2YXIgZm9ybWF0dGVyID0gZm9ybWF0
aW8uY29uZmlndXJlKHsgcXVvdGVTdHJpbmdzOiBmYWxzZSB9KTsKKyAgICAgICAgc2lub24uZm9y
bWF0ID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlci5hc2NpaS5h
cHBseShmb3JtYXR0ZXIsIGFyZ3VtZW50cyk7CisgICAgICAgIH07CisgICAgfSBlbHNlIGlmIChp
c05vZGUpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHZhciB1dGlsID0gcmVxdWlyZSgi
dXRpbCIpOworICAgICAgICAgICAgc2lub24uZm9ybWF0ID0gZnVuY3Rpb24gKHZhbHVlKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAib2JqZWN0IiAmJiB2YWx1ZS50
b1N0cmluZyA9PT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyA/IHV0aWwuaW5zcGVjdCh2YWx1
ZSkgOiB2YWx1ZTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgICAgIC8qIE5vZGUsIGJ1dCBubyB1dGlsIG1vZHVsZSAtIHdvdWxkIGJlIHZlcnkgb2xkLCBi
dXQgYmV0dGVyIHNhZmUgdGhhbgorICAgICAgICAgICAgIHNvcnJ5ICovCisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gc2lub247Cit9KHR5cGVvZiBmb3JtYXRpbyA9PSAib2JqZWN0IiAm
JiBmb3JtYXRpbykpOworCit9LHsiLi9zaW5vbi9hc3NlcnQiOjI0LCIuL3Npbm9uL2JlaGF2aW9y
IjoyNSwiLi9zaW5vbi9jYWxsIjoyNiwiLi9zaW5vbi9jb2xsZWN0aW9uIjoyNywiLi9zaW5vbi9t
YXRjaCI6MjgsIi4vc2lub24vbW9jayI6MjksIi4vc2lub24vc2FuZGJveCI6MzAsIi4vc2lub24v
c3B5IjozMSwiLi9zaW5vbi9zdHViIjozMiwiLi9zaW5vbi90ZXN0IjozMywiLi9zaW5vbi90ZXN0
X2Nhc2UiOjM0LCJmb3JtYXRpbyI6MzYsInV0aWwiOjV9XSwyNDpbZnVuY3Rpb24ocmVxdWlyZSxt
b2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24gKGdsb2JhbCl7CisvKioKKyAqIEBkZXBlbmQgLi4v
c2lub24uanMKKyAqIEBkZXBlbmQgc3R1Yi5qcworICovCisvKmpzbGludCBlcWVxZXE6IGZhbHNl
LCBvbmV2YXI6IGZhbHNlLCBub21lbjogZmFsc2UsIHBsdXNwbHVzOiBmYWxzZSovCisvKmdsb2Jh
bCBtb2R1bGUsIHJlcXVpcmUsIHNpbm9uKi8KKy8qKgorICogQXNzZXJ0aW9ucyBtYXRjaGluZyB0
aGUgdGVzdCBzcHkgcmV0cmlldmFsIGludGVyZmFjZS4KKyAqCisgKiBAYXV0aG9yIENocmlzdGlh
biBKb2hhbnNlbiAoY2hyaXN0aWFuQGNqb2hhbnNlbi5ubykKKyAqIEBsaWNlbnNlIEJTRAorICoK
KyAqIENvcHlyaWdodCAoYykgMjAxMC0yMDEzIENocmlzdGlhbiBKb2hhbnNlbgorICovCisidXNl
IHN0cmljdCI7CisKKyhmdW5jdGlvbiAoc2lub24sIGdsb2JhbCkgeworICAgIHZhciBjb21tb25K
U01vZHVsZSA9IHR5cGVvZiBtb2R1bGUgIT09ICJ1bmRlZmluZWQiICYmIG1vZHVsZS5leHBvcnRz
ICYmIHR5cGVvZiByZXF1aXJlID09ICJmdW5jdGlvbiI7CisgICAgdmFyIHNsaWNlID0gQXJyYXku
cHJvdG90eXBlLnNsaWNlOworICAgIHZhciBhc3NlcnQ7CisKKyAgICBpZiAoIXNpbm9uICYmIGNv
bW1vbkpTTW9kdWxlKSB7CisgICAgICAgIHNpbm9uID0gcmVxdWlyZSgiLi4vc2lub24iKTsKKyAg
ICB9CisKKyAgICBpZiAoIXNpbm9uKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiB2ZXJpZnlJc1N0dWIoKSB7CisgICAgICAgIHZhciBtZXRob2Q7CisKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDAsIGwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbDsgKytpKSB7CisgICAg
ICAgICAgICBtZXRob2QgPSBhcmd1bWVudHNbaV07CisKKyAgICAgICAgICAgIGlmICghbWV0aG9k
KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmZhaWwoImZha2UgaXMgbm90IGEgc3B5Iik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0eXBlb2YgbWV0aG9kICE9ICJmdW5jdGlv
biIpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZmFpbChtZXRob2QgKyAiIGlzIG5vdCBhIGZ1
bmN0aW9uIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0eXBlb2YgbWV0aG9k
LmdldENhbGwgIT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAgICAgIGFzc2VydC5mYWlsKG1l
dGhvZCArICIgaXMgbm90IHN0dWJiZWQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIGZ1bmN0aW9uIGZhaWxBc3NlcnRpb24ob2JqZWN0LCBtc2cpIHsKKyAgICAgICAg
b2JqZWN0ID0gb2JqZWN0IHx8IGdsb2JhbDsKKyAgICAgICAgdmFyIGZhaWxNZXRob2QgPSBvYmpl
Y3QuZmFpbCB8fCBhc3NlcnQuZmFpbDsKKyAgICAgICAgZmFpbE1ldGhvZC5jYWxsKG9iamVjdCwg
bXNnKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBtaXJyb3JQcm9wQXNBc3NlcnRpb24obmFtZSwg
bWV0aG9kLCBtZXNzYWdlKSB7CisgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDIpIHsK
KyAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXRob2Q7CisgICAgICAgICAgICBtZXRob2QgPSBuYW1l
OworICAgICAgICB9CisKKyAgICAgICAgYXNzZXJ0W25hbWVdID0gZnVuY3Rpb24gKGZha2UpIHsK
KyAgICAgICAgICAgIHZlcmlmeUlzU3R1YihmYWtlKTsKKworICAgICAgICAgICAgdmFyIGFyZ3Mg
PSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7CisgICAgICAgICAgICB2YXIgZmFpbGVkID0gZmFs
c2U7CisKKyAgICAgICAgICAgIGlmICh0eXBlb2YgbWV0aG9kID09ICJmdW5jdGlvbiIpIHsKKyAg
ICAgICAgICAgICAgICBmYWlsZWQgPSAhbWV0aG9kKGZha2UpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBmYWlsZWQgPSB0eXBlb2YgZmFrZVttZXRob2RdID09ICJmdW5j
dGlvbiIgPworICAgICAgICAgICAgICAgICAgICAhZmFrZVttZXRob2RdLmFwcGx5KGZha2UsIGFy
Z3MpIDogIWZha2VbbWV0aG9kXTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGZh
aWxlZCkgeworICAgICAgICAgICAgICAgIGZhaWxBc3NlcnRpb24odGhpcywgZmFrZS5wcmludGYu
YXBwbHkoZmFrZSwgW21lc3NhZ2VdLmNvbmNhdChhcmdzKSkpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQucGFzcyhuYW1lKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBleHBvc2VkTmFtZShwcmVmaXgsIHByb3Ap
IHsKKyAgICAgICAgcmV0dXJuICFwcmVmaXggfHwgL15mYWlsLy50ZXN0KHByb3ApID8gcHJvcCA6
CisgICAgICAgICAgICBwcmVmaXggKyBwcm9wLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBw
cm9wLnNsaWNlKDEpOworICAgIH0KKworICAgIGFzc2VydCA9IHsKKyAgICAgICAgZmFpbEV4Y2Vw
dGlvbjogIkFzc2VydEVycm9yIiwKKworICAgICAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKG1lc3Nh
Z2UpIHsKKyAgICAgICAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKTsKKyAgICAg
ICAgICAgIGVycm9yLm5hbWUgPSB0aGlzLmZhaWxFeGNlcHRpb24gfHwgYXNzZXJ0LmZhaWxFeGNl
cHRpb247CisKKyAgICAgICAgICAgIHRocm93IGVycm9yOworICAgICAgICB9LAorCisgICAgICAg
IHBhc3M6IGZ1bmN0aW9uIHBhc3MoYXNzZXJ0aW9uKSB7fSwKKworICAgICAgICBjYWxsT3JkZXI6
IGZ1bmN0aW9uIGFzc2VydENhbGxPcmRlcigpIHsKKyAgICAgICAgICAgIHZlcmlmeUlzU3R1Yi5h
cHBseShudWxsLCBhcmd1bWVudHMpOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkID0gIiIsIGFj
dHVhbCA9ICIiOworCisgICAgICAgICAgICBpZiAoIXNpbm9uLmNhbGxlZEluT3JkZXIoYXJndW1l
bnRzKSkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGV4cGVj
dGVkID0gW10uam9pbi5jYWxsKGFyZ3VtZW50cywgIiwgIik7CisgICAgICAgICAgICAgICAgICAg
IHZhciBjYWxscyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICAgICAg
dmFyIGkgPSBjYWxscy5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbGxzWy0taV0uY2FsbGVkKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FsbHMuc3BsaWNlKGksIDEpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGFj
dHVhbCA9IHNpbm9uLm9yZGVyQnlGaXJzdENhbGwoY2FsbHMpLmpvaW4oIiwgIik7CisgICAgICAg
ICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGZh
aWxzLCB3ZSdsbCBqdXN0IGZhbGwgYmFjayB0byB0aGUgYmxhbmsgc3RyaW5nCisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgZmFpbEFzc2VydGlvbih0aGlzLCAiZXhwZWN0ZWQg
IiArIGV4cGVjdGVkICsgIiB0byBiZSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJjYWxsZWQgaW4gb3JkZXIgYnV0IHdlcmUgY2FsbGVkIGFzICIgKyBhY3R1YWwpOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQucGFzcygiY2FsbE9yZGVyIik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgY2FsbENvdW50OiBmdW5jdGlv
biBhc3NlcnRDYWxsQ291bnQobWV0aG9kLCBjb3VudCkgeworICAgICAgICAgICAgdmVyaWZ5SXNT
dHViKG1ldGhvZCk7CisKKyAgICAgICAgICAgIGlmIChtZXRob2QuY2FsbENvdW50ICE9IGNvdW50
KSB7CisgICAgICAgICAgICAgICAgdmFyIG1zZyA9ICJleHBlY3RlZCAlbiB0byBiZSBjYWxsZWQg
IiArIHNpbm9uLnRpbWVzSW5Xb3Jkcyhjb3VudCkgKworICAgICAgICAgICAgICAgICAgICAiIGJ1
dCB3YXMgY2FsbGVkICVjJUMiOworICAgICAgICAgICAgICAgIGZhaWxBc3NlcnRpb24odGhpcywg
bWV0aG9kLnByaW50Zihtc2cpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0LnBhc3MoImNhbGxDb3VudCIpOworICAgICAgICAgICAgfQorICAgICAgICB9LAor
CisgICAgICAgIGV4cG9zZTogZnVuY3Rpb24gZXhwb3NlKHRhcmdldCwgb3B0aW9ucykgeworICAg
ICAgICAgICAgaWYgKCF0YXJnZXQpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVy
cm9yKCJ0YXJnZXQgaXMgbnVsbCBvciB1bmRlZmluZWQiKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIG8gPSBvcHRpb25zIHx8IHt9OworICAgICAgICAgICAgdmFyIHByZWZpeCA9
IHR5cGVvZiBvLnByZWZpeCA9PSAidW5kZWZpbmVkIiAmJiAiYXNzZXJ0IiB8fCBvLnByZWZpeDsK
KyAgICAgICAgICAgIHZhciBpbmNsdWRlRmFpbCA9IHR5cGVvZiBvLmluY2x1ZGVGYWlsID09ICJ1
bmRlZmluZWQiIHx8ICEhby5pbmNsdWRlRmFpbDsKKworICAgICAgICAgICAgZm9yICh2YXIgbWV0
aG9kIGluIHRoaXMpIHsKKyAgICAgICAgICAgICAgICBpZiAobWV0aG9kICE9ICJleHBvcnQiICYm
IChpbmNsdWRlRmFpbCB8fCAhL14oZmFpbCkvLnRlc3QobWV0aG9kKSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdGFyZ2V0W2V4cG9zZWROYW1lKHByZWZpeCwgbWV0aG9kKV0gPSB0aGlzW21ldGhv
ZF07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1
cm4gdGFyZ2V0OworICAgICAgICB9LAorCisgICAgICAgIG1hdGNoOiBmdW5jdGlvbiBtYXRjaChh
Y3R1YWwsIGV4cGVjdGF0aW9uKSB7CisgICAgICAgICAgICB2YXIgbWF0Y2hlciA9IHNpbm9uLm1h
dGNoKGV4cGVjdGF0aW9uKTsKKyAgICAgICAgICAgIGlmIChtYXRjaGVyLnRlc3QoYWN0dWFsKSkg
eworICAgICAgICAgICAgICAgIGFzc2VydC5wYXNzKCJtYXRjaCIpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgZm9ybWF0dGVkID0gWworICAgICAgICAgICAgICAg
ICAgICAiZXhwZWN0ZWQgdmFsdWUgdG8gbWF0Y2giLAorICAgICAgICAgICAgICAgICAgICAiICAg
IGV4cGVjdGVkID0gIiArIHNpbm9uLmZvcm1hdChleHBlY3RhdGlvbiksCisgICAgICAgICAgICAg
ICAgICAgICIgICAgYWN0dWFsID0gIiArIHNpbm9uLmZvcm1hdChhY3R1YWwpCisgICAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgICAgIGZhaWxBc3NlcnRpb24odGhpcywgZm9ybWF0dGVkLmpv
aW4oIlxuIikpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAgIG1pcnJv
clByb3BBc0Fzc2VydGlvbigiY2FsbGVkIiwgImV4cGVjdGVkICVuIHRvIGhhdmUgYmVlbiBjYWxs
ZWQgYXQgbGVhc3Qgb25jZSBidXQgd2FzIG5ldmVyIGNhbGxlZCIpOworICAgIG1pcnJvclByb3BB
c0Fzc2VydGlvbigibm90Q2FsbGVkIiwgZnVuY3Rpb24gKHNweSkgeyByZXR1cm4gIXNweS5jYWxs
ZWQ7IH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAlbiB0byBub3QgaGF2
ZSBiZWVuIGNhbGxlZCBidXQgd2FzIGNhbGxlZCAlYyVDIik7CisgICAgbWlycm9yUHJvcEFzQXNz
ZXJ0aW9uKCJjYWxsZWRPbmNlIiwgImV4cGVjdGVkICVuIHRvIGJlIGNhbGxlZCBvbmNlIGJ1dCB3
YXMgY2FsbGVkICVjJUMiKTsKKyAgICBtaXJyb3JQcm9wQXNBc3NlcnRpb24oImNhbGxlZFR3aWNl
IiwgImV4cGVjdGVkICVuIHRvIGJlIGNhbGxlZCB0d2ljZSBidXQgd2FzIGNhbGxlZCAlYyVDIik7
CisgICAgbWlycm9yUHJvcEFzQXNzZXJ0aW9uKCJjYWxsZWRUaHJpY2UiLCAiZXhwZWN0ZWQgJW4g
dG8gYmUgY2FsbGVkIHRocmljZSBidXQgd2FzIGNhbGxlZCAlYyVDIik7CisgICAgbWlycm9yUHJv
cEFzQXNzZXJ0aW9uKCJjYWxsZWRPbiIsICJleHBlY3RlZCAlbiB0byBiZSBjYWxsZWQgd2l0aCAl
MSBhcyB0aGlzIGJ1dCB3YXMgY2FsbGVkIHdpdGggJXQiKTsKKyAgICBtaXJyb3JQcm9wQXNBc3Nl
cnRpb24oImFsd2F5c0NhbGxlZE9uIiwgImV4cGVjdGVkICVuIHRvIGFsd2F5cyBiZSBjYWxsZWQg
d2l0aCAlMSBhcyB0aGlzIGJ1dCB3YXMgY2FsbGVkIHdpdGggJXQiKTsKKyAgICBtaXJyb3JQcm9w
QXNBc3NlcnRpb24oImNhbGxlZFdpdGhOZXciLCAiZXhwZWN0ZWQgJW4gdG8gYmUgY2FsbGVkIHdp
dGggbmV3Iik7CisgICAgbWlycm9yUHJvcEFzQXNzZXJ0aW9uKCJhbHdheXNDYWxsZWRXaXRoTmV3
IiwgImV4cGVjdGVkICVuIHRvIGFsd2F5cyBiZSBjYWxsZWQgd2l0aCBuZXciKTsKKyAgICBtaXJy
b3JQcm9wQXNBc3NlcnRpb24oImNhbGxlZFdpdGgiLCAiZXhwZWN0ZWQgJW4gdG8gYmUgY2FsbGVk
IHdpdGggYXJndW1lbnRzICUqJUMiKTsKKyAgICBtaXJyb3JQcm9wQXNBc3NlcnRpb24oImNhbGxl
ZFdpdGhNYXRjaCIsICJleHBlY3RlZCAlbiB0byBiZSBjYWxsZWQgd2l0aCBtYXRjaCAlKiVDIik7
CisgICAgbWlycm9yUHJvcEFzQXNzZXJ0aW9uKCJhbHdheXNDYWxsZWRXaXRoIiwgImV4cGVjdGVk
ICVuIHRvIGFsd2F5cyBiZSBjYWxsZWQgd2l0aCBhcmd1bWVudHMgJSolQyIpOworICAgIG1pcnJv
clByb3BBc0Fzc2VydGlvbigiYWx3YXlzQ2FsbGVkV2l0aE1hdGNoIiwgImV4cGVjdGVkICVuIHRv
IGFsd2F5cyBiZSBjYWxsZWQgd2l0aCBtYXRjaCAlKiVDIik7CisgICAgbWlycm9yUHJvcEFzQXNz
ZXJ0aW9uKCJjYWxsZWRXaXRoRXhhY3RseSIsICJleHBlY3RlZCAlbiB0byBiZSBjYWxsZWQgd2l0
aCBleGFjdCBhcmd1bWVudHMgJSolQyIpOworICAgIG1pcnJvclByb3BBc0Fzc2VydGlvbigiYWx3
YXlzQ2FsbGVkV2l0aEV4YWN0bHkiLCAiZXhwZWN0ZWQgJW4gdG8gYWx3YXlzIGJlIGNhbGxlZCB3
aXRoIGV4YWN0IGFyZ3VtZW50cyAlKiVDIik7CisgICAgbWlycm9yUHJvcEFzQXNzZXJ0aW9uKCJu
ZXZlckNhbGxlZFdpdGgiLCAiZXhwZWN0ZWQgJW4gdG8gbmV2ZXIgYmUgY2FsbGVkIHdpdGggYXJn
dW1lbnRzICUqJUMiKTsKKyAgICBtaXJyb3JQcm9wQXNBc3NlcnRpb24oIm5ldmVyQ2FsbGVkV2l0
aE1hdGNoIiwgImV4cGVjdGVkICVuIHRvIG5ldmVyIGJlIGNhbGxlZCB3aXRoIG1hdGNoICUqJUMi
KTsKKyAgICBtaXJyb3JQcm9wQXNBc3NlcnRpb24oInRocmV3IiwgIiVuIGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uJUMiKTsKKyAgICBtaXJyb3JQcm9wQXNBc3NlcnRpb24oImFsd2F5c1RocmV3Iiwg
IiVuIGRpZCBub3QgYWx3YXlzIHRocm93IGV4Y2VwdGlvbiVDIik7CisKKyAgICBzaW5vbi5hc3Nl
cnQgPSBhc3NlcnQ7CisKKyAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBk
ZWZpbmUuYW1kKSB7CisgICAgICAgIGRlZmluZShbIm1vZHVsZSJdLCBmdW5jdGlvbihtb2R1bGUp
IHsgbW9kdWxlLmV4cG9ydHMgPSBhc3NlcnQ7IH0pOworICAgIH0gZWxzZSBpZiAoY29tbW9uSlNN
b2R1bGUpIHsKKyAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBhc3NlcnQ7CisgICAgfQorfSh0eXBl
b2Ygc2lub24gPT0gIm9iamVjdCIgJiYgc2lub24gfHwgbnVsbCwgdHlwZW9mIHdpbmRvdyAhPSAi
dW5kZWZpbmVkIiA/IHdpbmRvdyA6ICh0eXBlb2Ygc2VsZiAhPSAidW5kZWZpbmVkIikgPyBzZWxm
IDogZ2xvYmFsKSk7CisKK30pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSAidW5kZWZpbmVk
IiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSAidW5kZWZpbmVkIiA/IHNlbGYgOiB0eXBlb2Yg
d2luZG93ICE9PSAidW5kZWZpbmVkIiA/IHdpbmRvdyA6IHt9KQorfSx7Ii4uL3Npbm9uIjoyM31d
LDI1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyhmdW5jdGlvbiAocHJvY2Vz
cyl7CisvKioKKyAqIEBkZXBlbmQgLi4vc2lub24uanMKKyAqLworLypqc2xpbnQgZXFlcWVxOiBm
YWxzZSwgb25ldmFyOiBmYWxzZSovCisvKmdsb2JhbCBtb2R1bGUsIHJlcXVpcmUsIHNpbm9uLCBw
cm9jZXNzLCBzZXRJbW1lZGlhdGUsIHNldFRpbWVvdXQqLworLyoqCisgKiBTdHViIGJlaGF2aW9y
CisgKgorICogQGF1dGhvciBDaHJpc3RpYW4gSm9oYW5zZW4gKGNocmlzdGlhbkBjam9oYW5zZW4u
bm8pCisgKiBAYXV0aG9yIFRpbSBGaXNjaGJhY2ggKG1haWxAdGltZmlzY2hiYWNoLmRlKQorICog
QGxpY2Vuc2UgQlNECisgKgorICogQ29weXJpZ2h0IChjKSAyMDEwLTIwMTMgQ2hyaXN0aWFuIEpv
aGFuc2VuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworKGZ1bmN0aW9uIChzaW5vbikgeworICAgIHZh
ciBjb21tb25KU01vZHVsZSA9IHR5cGVvZiBtb2R1bGUgIT09ICJ1bmRlZmluZWQiICYmIG1vZHVs
ZS5leHBvcnRzICYmIHR5cGVvZiByZXF1aXJlID09ICJmdW5jdGlvbiI7CisKKyAgICBpZiAoIXNp
bm9uICYmIGNvbW1vbkpTTW9kdWxlKSB7CisgICAgICAgIHNpbm9uID0gcmVxdWlyZSgiLi4vc2lu
b24iKTsKKyAgICB9CisKKyAgICBpZiAoIXNpbm9uKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICB2YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7CisgICAgdmFyIGpvaW4g
PSBBcnJheS5wcm90b3R5cGUuam9pbjsKKyAgICB2YXIgcHJvdG87CisKKyAgICB2YXIgbmV4dFRp
Y2sgPSAoZnVuY3Rpb24gKCkgeworICAgICAgICBpZiAodHlwZW9mIHByb2Nlc3MgPT09ICJvYmpl
Y3QiICYmIHR5cGVvZiBwcm9jZXNzLm5leHRUaWNrID09PSAiZnVuY3Rpb24iKSB7CisgICAgICAg
ICAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljazsKKyAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Yg
c2V0SW1tZWRpYXRlID09PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICByZXR1cm4gc2V0SW1t
ZWRpYXRlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChj
YWxsYmFjaykgeworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY2FsbGJhY2ssIDApOworICAg
ICAgICAgICAgfTsKKyAgICAgICAgfQorICAgIH0pKCk7CisKKyAgICBmdW5jdGlvbiB0aHJvd3NF
eGNlcHRpb24oZXJyb3IsIG1lc3NhZ2UpIHsKKyAgICAgICAgaWYgKHR5cGVvZiBlcnJvciA9PSAi
c3RyaW5nIikgeworICAgICAgICAgICAgdGhpcy5leGNlcHRpb24gPSBuZXcgRXJyb3IobWVzc2Fn
ZSB8fCAiIik7CisgICAgICAgICAgICB0aGlzLmV4Y2VwdGlvbi5uYW1lID0gZXJyb3I7CisgICAg
ICAgIH0gZWxzZSBpZiAoIWVycm9yKSB7CisgICAgICAgICAgICB0aGlzLmV4Y2VwdGlvbiA9IG5l
dyBFcnJvcigiRXJyb3IiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuZXhj
ZXB0aW9uID0gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBnZXRDYWxsYmFjayhiZWhhdmlvciwgYXJncykgeworICAgICAgICB2
YXIgY2FsbEFyZ0F0ID0gYmVoYXZpb3IuY2FsbEFyZ0F0OworCisgICAgICAgIGlmIChjYWxsQXJn
QXQgPCAwKSB7CisgICAgICAgICAgICB2YXIgY2FsbEFyZ1Byb3AgPSBiZWhhdmlvci5jYWxsQXJn
UHJvcDsKKworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhcmdzLmxlbmd0aDsgaSA8
IGw7ICsraSkgeworICAgICAgICAgICAgICAgIGlmICghY2FsbEFyZ1Byb3AgJiYgdHlwZW9mIGFy
Z3NbaV0gPT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJnc1tp
XTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoY2FsbEFyZ1Byb3Ag
JiYgYXJnc1tpXSAmJgorICAgICAgICAgICAgICAgICAgICB0eXBlb2YgYXJnc1tpXVtjYWxsQXJn
UHJvcF0gPT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJnc1tp
XVtjYWxsQXJnUHJvcF07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBhcmdzW2Nh
bGxBcmdBdF07CisgICAgfQorCisgICAgZnVuY3Rpb24gZ2V0Q2FsbGJhY2tFcnJvcihiZWhhdmlv
ciwgZnVuYywgYXJncykgeworICAgICAgICBpZiAoYmVoYXZpb3IuY2FsbEFyZ0F0IDwgMCkgewor
ICAgICAgICAgICAgdmFyIG1zZzsKKworICAgICAgICAgICAgaWYgKGJlaGF2aW9yLmNhbGxBcmdQ
cm9wKSB7CisgICAgICAgICAgICAgICAgbXNnID0gc2lub24uZnVuY3Rpb25OYW1lKGJlaGF2aW9y
LnN0dWIpICsKKyAgICAgICAgICAgICAgICAgICAgIiBleHBlY3RlZCB0byB5aWVsZCB0byAnIiAr
IGJlaGF2aW9yLmNhbGxBcmdQcm9wICsKKyAgICAgICAgICAgICAgICAgICAgIicsIGJ1dCBubyBv
YmplY3Qgd2l0aCBzdWNoIGEgcHJvcGVydHkgd2FzIHBhc3NlZC4iOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBtc2cgPSBzaW5vbi5mdW5jdGlvbk5hbWUoYmVoYXZpb3Iu
c3R1YikgKworICAgICAgICAgICAgICAgICAgICAiIGV4cGVjdGVkIHRvIHlpZWxkLCBidXQgbm8g
Y2FsbGJhY2sgd2FzIHBhc3NlZC4iOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
YXJncy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgbXNnICs9ICIgUmVjZWl2ZWQgWyIg
KyBqb2luLmNhbGwoYXJncywgIiwgIikgKyAiXSI7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBtc2c7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gImFyZ3VtZW50IGF0
IGluZGV4ICIgKyBiZWhhdmlvci5jYWxsQXJnQXQgKyAiIGlzIG5vdCBhIGZ1bmN0aW9uOiAiICsg
ZnVuYzsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjYWxsQ2FsbGJhY2soYmVoYXZpb3IsIGFyZ3Mp
IHsKKyAgICAgICAgaWYgKHR5cGVvZiBiZWhhdmlvci5jYWxsQXJnQXQgPT0gIm51bWJlciIpIHsK
KyAgICAgICAgICAgIHZhciBmdW5jID0gZ2V0Q2FsbGJhY2soYmVoYXZpb3IsIGFyZ3MpOworCisg
ICAgICAgICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBUeXBlRXJyb3IoZ2V0Q2FsbGJhY2tFcnJvcihiZWhhdmlvciwgZnVuYywg
YXJncykpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYmVoYXZpb3IuY2FsbGJh
Y2tBc3luYykgeworICAgICAgICAgICAgICAgIG5leHRUaWNrKGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgICAgICBmdW5jLmFwcGx5KGJlaGF2aW9yLmNhbGxiYWNrQ29udGV4dCwgYmVoYXZp
b3IuY2FsbGJhY2tBcmd1bWVudHMpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBmdW5jLmFwcGx5KGJlaGF2aW9yLmNhbGxiYWNrQ29u
dGV4dCwgYmVoYXZpb3IuY2FsbGJhY2tBcmd1bWVudHMpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgcHJvdG8gPSB7CisgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24oc3R1
YikgeworICAgICAgICAgICAgdmFyIGJlaGF2aW9yID0gc2lub24uZXh0ZW5kKHt9LCBzaW5vbi5i
ZWhhdmlvcik7CisgICAgICAgICAgICBkZWxldGUgYmVoYXZpb3IuY3JlYXRlOworICAgICAgICAg
ICAgYmVoYXZpb3Iuc3R1YiA9IHN0dWI7CisKKyAgICAgICAgICAgIHJldHVybiBiZWhhdmlvcjsK
KyAgICAgICAgfSwKKworICAgICAgICBpc1ByZXNlbnQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgcmV0dXJuICh0eXBlb2YgdGhpcy5jYWxsQXJnQXQgPT0gJ251bWJlcicgfHwKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy5leGNlcHRpb24gfHwKKyAgICAgICAgICAgICAgICAgICAgdHlwZW9m
IHRoaXMucmV0dXJuQXJnQXQgPT0gJ251bWJlcicgfHwKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy5yZXR1cm5UaGlzIHx8CisgICAgICAgICAgICAgICAgICAgIHRoaXMucmV0dXJuVmFsdWVEZWZp
bmVkKTsKKyAgICAgICAgfSwKKworICAgICAgICBpbnZva2U6IGZ1bmN0aW9uKGNvbnRleHQsIGFy
Z3MpIHsKKyAgICAgICAgICAgIGNhbGxDYWxsYmFjayh0aGlzLCBhcmdzKTsKKworICAgICAgICAg
ICAgaWYgKHRoaXMuZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgdGhpcy5leGNl
cHRpb247CisgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLnJldHVybkFyZ0F0ID09
ICdudW1iZXInKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3NbdGhpcy5yZXR1cm5BcmdB
dF07CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmV0dXJuVGhpcykgeworICAgICAgICAg
ICAgICAgIHJldHVybiBjb250ZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1
cm4gdGhpcy5yZXR1cm5WYWx1ZTsKKyAgICAgICAgfSwKKworICAgICAgICBvbkNhbGw6IGZ1bmN0
aW9uKGluZGV4KSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5zdHViLm9uQ2FsbChpbmRleCk7
CisgICAgICAgIH0sCisKKyAgICAgICAgb25GaXJzdENhbGw6IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuc3R1Yi5vbkZpcnN0Q2FsbCgpOworICAgICAgICB9LAorCisgICAg
ICAgIG9uU2Vjb25kQ2FsbDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5z
dHViLm9uU2Vjb25kQ2FsbCgpOworICAgICAgICB9LAorCisgICAgICAgIG9uVGhpcmRDYWxsOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLnN0dWIub25UaGlyZENhbGwoKTsK
KyAgICAgICAgfSwKKworICAgICAgICB3aXRoQXJnczogZnVuY3Rpb24oLyogYXJndW1lbnRzICov
KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RlZmluaW5nIGEgc3R1YiBieSBpbnZv
a2luZyAic3R1Yi5vbkNhbGwoLi4uKS53aXRoQXJncyguLi4pIiBpcyBub3Qgc3VwcG9ydGVkLiAn
ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVXNlICJzdHViLndpdGhBcmdzKC4uLiku
b25DYWxsKC4uLikiIHRvIGRlZmluZSBzZXF1ZW50aWFsIGJlaGF2aW9yIGZvciBjYWxscyB3aXRo
IGNlcnRhaW4gYXJndW1lbnRzLicpOworICAgICAgICB9LAorCisgICAgICAgIGNhbGxzQXJnOiBm
dW5jdGlvbiBjYWxsc0FyZyhwb3MpIHsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgcG9zICE9ICJu
dW1iZXIiKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiYXJndW1lbnQg
aW5kZXggaXMgbm90IG51bWJlciIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlz
LmNhbGxBcmdBdCA9IHBvczsKKyAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tBcmd1bWVudHMgPSBb
XTsKKyAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tDb250ZXh0ID0gdW5kZWZpbmVkOworICAgICAg
ICAgICAgdGhpcy5jYWxsQXJnUHJvcCA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRoaXMuY2Fs
bGJhY2tBc3luYyA9IGZhbHNlOworCisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAg
fSwKKworICAgICAgICBjYWxsc0FyZ09uOiBmdW5jdGlvbiBjYWxsc0FyZ09uKHBvcywgY29udGV4
dCkgeworICAgICAgICAgICAgaWYgKHR5cGVvZiBwb3MgIT0gIm51bWJlciIpIHsKKyAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1bWVudCBpbmRleCBpcyBub3QgbnVtYmVy
Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRleHQgIT0gIm9i
amVjdCIpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1bWVudCBj
b250ZXh0IGlzIG5vdCBhbiBvYmplY3QiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dGhpcy5jYWxsQXJnQXQgPSBwb3M7CisgICAgICAgICAgICB0aGlzLmNhbGxiYWNrQXJndW1lbnRz
ID0gW107CisgICAgICAgICAgICB0aGlzLmNhbGxiYWNrQ29udGV4dCA9IGNvbnRleHQ7CisgICAg
ICAgICAgICB0aGlzLmNhbGxBcmdQcm9wID0gdW5kZWZpbmVkOworICAgICAgICAgICAgdGhpcy5j
YWxsYmFja0FzeW5jID0gZmFsc2U7CisKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAg
ICB9LAorCisgICAgICAgIGNhbGxzQXJnV2l0aDogZnVuY3Rpb24gY2FsbHNBcmdXaXRoKHBvcykg
eworICAgICAgICAgICAgaWYgKHR5cGVvZiBwb3MgIT0gIm51bWJlciIpIHsKKyAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1bWVudCBpbmRleCBpcyBub3QgbnVtYmVyIik7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMuY2FsbEFyZ0F0ID0gcG9zOworICAg
ICAgICAgICAgdGhpcy5jYWxsYmFja0FyZ3VtZW50cyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAx
KTsKKyAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tDb250ZXh0ID0gdW5kZWZpbmVkOworICAgICAg
ICAgICAgdGhpcy5jYWxsQXJnUHJvcCA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRoaXMuY2Fs
bGJhY2tBc3luYyA9IGZhbHNlOworCisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAg
fSwKKworICAgICAgICBjYWxsc0FyZ09uV2l0aDogZnVuY3Rpb24gY2FsbHNBcmdXaXRoKHBvcywg
Y29udGV4dCkgeworICAgICAgICAgICAgaWYgKHR5cGVvZiBwb3MgIT0gIm51bWJlciIpIHsKKyAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1bWVudCBpbmRleCBpcyBub3Qg
bnVtYmVyIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRleHQg
IT0gIm9iamVjdCIpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1
bWVudCBjb250ZXh0IGlzIG5vdCBhbiBvYmplY3QiKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdGhpcy5jYWxsQXJnQXQgPSBwb3M7CisgICAgICAgICAgICB0aGlzLmNhbGxiYWNrQXJn
dW1lbnRzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpOworICAgICAgICAgICAgdGhpcy5jYWxs
YmFja0NvbnRleHQgPSBjb250ZXh0OworICAgICAgICAgICAgdGhpcy5jYWxsQXJnUHJvcCA9IHVu
ZGVmaW5lZDsKKyAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tBc3luYyA9IGZhbHNlOworCisgICAg
ICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfSwKKworICAgICAgICB5aWVsZHM6IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIHRoaXMuY2FsbEFyZ0F0ID0gLTE7CisgICAgICAgICAgICB0
aGlzLmNhbGxiYWNrQXJndW1lbnRzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDApOworICAgICAg
ICAgICAgdGhpcy5jYWxsYmFja0NvbnRleHQgPSB1bmRlZmluZWQ7CisgICAgICAgICAgICB0aGlz
LmNhbGxBcmdQcm9wID0gdW5kZWZpbmVkOworICAgICAgICAgICAgdGhpcy5jYWxsYmFja0FzeW5j
ID0gZmFsc2U7CisKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9LAorCisgICAg
ICAgIHlpZWxkc09uOiBmdW5jdGlvbiAoY29udGV4dCkgeworICAgICAgICAgICAgaWYgKHR5cGVv
ZiBjb250ZXh0ICE9ICJvYmplY3QiKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVF
cnJvcigiYXJndW1lbnQgY29udGV4dCBpcyBub3QgYW4gb2JqZWN0Iik7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHRoaXMuY2FsbEFyZ0F0ID0gLTE7CisgICAgICAgICAgICB0aGlzLmNh
bGxiYWNrQXJndW1lbnRzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpOworICAgICAgICAgICAg
dGhpcy5jYWxsYmFja0NvbnRleHQgPSBjb250ZXh0OworICAgICAgICAgICAgdGhpcy5jYWxsQXJn
UHJvcCA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tBc3luYyA9IGZhbHNl
OworCisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfSwKKworICAgICAgICB5aWVs
ZHNUbzogZnVuY3Rpb24gKHByb3ApIHsKKyAgICAgICAgICAgIHRoaXMuY2FsbEFyZ0F0ID0gLTE7
CisgICAgICAgICAgICB0aGlzLmNhbGxiYWNrQXJndW1lbnRzID0gc2xpY2UuY2FsbChhcmd1bWVu
dHMsIDEpOworICAgICAgICAgICAgdGhpcy5jYWxsYmFja0NvbnRleHQgPSB1bmRlZmluZWQ7Cisg
ICAgICAgICAgICB0aGlzLmNhbGxBcmdQcm9wID0gcHJvcDsKKyAgICAgICAgICAgIHRoaXMuY2Fs
bGJhY2tBc3luYyA9IGZhbHNlOworCisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAg
fSwKKworICAgICAgICB5aWVsZHNUb09uOiBmdW5jdGlvbiAocHJvcCwgY29udGV4dCkgeworICAg
ICAgICAgICAgaWYgKHR5cGVvZiBjb250ZXh0ICE9ICJvYmplY3QiKSB7CisgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiYXJndW1lbnQgY29udGV4dCBpcyBub3QgYW4gb2JqZWN0
Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMuY2FsbEFyZ0F0ID0gLTE7Cisg
ICAgICAgICAgICB0aGlzLmNhbGxiYWNrQXJndW1lbnRzID0gc2xpY2UuY2FsbChhcmd1bWVudHMs
IDIpOworICAgICAgICAgICAgdGhpcy5jYWxsYmFja0NvbnRleHQgPSBjb250ZXh0OworICAgICAg
ICAgICAgdGhpcy5jYWxsQXJnUHJvcCA9IHByb3A7CisgICAgICAgICAgICB0aGlzLmNhbGxiYWNr
QXN5bmMgPSBmYWxzZTsKKworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0sCisK
KworICAgICAgICAidGhyb3dzIjogdGhyb3dzRXhjZXB0aW9uLAorICAgICAgICB0aHJvd3NFeGNl
cHRpb246IHRocm93c0V4Y2VwdGlvbiwKKworICAgICAgICByZXR1cm5zOiBmdW5jdGlvbiByZXR1
cm5zKHZhbHVlKSB7CisgICAgICAgICAgICB0aGlzLnJldHVyblZhbHVlID0gdmFsdWU7CisgICAg
ICAgICAgICB0aGlzLnJldHVyblZhbHVlRGVmaW5lZCA9IHRydWU7CisKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzOworICAgICAgICB9LAorCisgICAgICAgIHJldHVybnNBcmc6IGZ1bmN0aW9uIHJl
dHVybnNBcmcocG9zKSB7CisgICAgICAgICAgICBpZiAodHlwZW9mIHBvcyAhPSAibnVtYmVyIikg
eworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoImFyZ3VtZW50IGluZGV4IGlz
IG5vdCBudW1iZXIiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5yZXR1cm5B
cmdBdCA9IHBvczsKKworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0sCisKKyAg
ICAgICAgcmV0dXJuc1RoaXM6IGZ1bmN0aW9uIHJldHVybnNUaGlzKCkgeworICAgICAgICAgICAg
dGhpcy5yZXR1cm5UaGlzID0gdHJ1ZTsKKworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAg
ICAgIH0KKyAgICB9OworCisgICAgLy8gY3JlYXRlIGFzeW5jaHJvbm91cyB2ZXJzaW9ucyBvZiBj
YWxsc0FyZyogYW5kIHlpZWxkcyogbWV0aG9kcworICAgIGZvciAodmFyIG1ldGhvZCBpbiBwcm90
bykgeworICAgICAgICAvLyBuZWVkIHRvIGF2b2lkIGNyZWF0aW5nIGFub3RoZXJhc3luYyB2ZXJz
aW9ucyBvZiB0aGUgbmV3bHkgYWRkZWQgYXN5bmMgbWV0aG9kcworICAgICAgICBpZiAocHJvdG8u
aGFzT3duUHJvcGVydHkobWV0aG9kKSAmJgorICAgICAgICAgICAgbWV0aG9kLm1hdGNoKC9eKGNh
bGxzQXJnfHlpZWxkcykvKSAmJgorICAgICAgICAgICAgIW1ldGhvZC5tYXRjaCgvQXN5bmMvKSkg
eworICAgICAgICAgICAgcHJvdG9bbWV0aG9kICsgJ0FzeW5jJ10gPSAoZnVuY3Rpb24gKHN5bmNG
bk5hbWUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpc1tzeW5jRm5OYW1lXS5hcHBseSh0aGlzLCBhcmd1
bWVudHMpOworICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGxiYWNrQXN5bmMgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICB9KShtZXRob2QpOworICAgICAgICB9CisgICAgfQorCisgICAgc2lub24uYmVo
YXZpb3IgPSBwcm90bzsKKworICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAiZnVuY3Rpb24iICYm
IGRlZmluZS5hbWQpIHsKKyAgICAgICAgZGVmaW5lKFsibW9kdWxlIl0sIGZ1bmN0aW9uKG1vZHVs
ZSkgeyBtb2R1bGUuZXhwb3J0cyA9IHByb3RvOyB9KTsKKyAgICB9IGVsc2UgaWYgKGNvbW1vbkpT
TW9kdWxlKSB7CisgICAgICAgIG1vZHVsZS5leHBvcnRzID0gcHJvdG87CisgICAgfQorfSh0eXBl
b2Ygc2lub24gPT0gIm9iamVjdCIgJiYgc2lub24gfHwgbnVsbCkpOworCit9KS5jYWxsKHRoaXMs
cmVxdWlyZSgnX3Byb2Nlc3MnKSkKK30seyIuLi9zaW5vbiI6MjMsIl9wcm9jZXNzIjozfV0sMjY6
W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyoqCisgICogQGRlcGVuZCAuLi9z
aW5vbi5qcworICAqIEBkZXBlbmQgbWF0Y2guanMKKyAgKi8KKy8qanNsaW50IGVxZXFlcTogZmFs
c2UsIG9uZXZhcjogZmFsc2UsIHBsdXNwbHVzOiBmYWxzZSovCisvKmdsb2JhbCBtb2R1bGUsIHJl
cXVpcmUsIHNpbm9uKi8KKy8qKgorICAqIFNweSBjYWxscworICAqCisgICogQGF1dGhvciBDaHJp
c3RpYW4gSm9oYW5zZW4gKGNocmlzdGlhbkBjam9oYW5zZW4ubm8pCisgICogQGF1dGhvciBNYXhp
bWlsaWFuIEFudG9uaSAobWFpbEBtYXhhbnRvbmkuZGUpCisgICogQGxpY2Vuc2UgQlNECisgICoK
KyAgKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMyBDaHJpc3RpYW4gSm9oYW5zZW4KKyAgKiBDb3B5
cmlnaHQgKGMpIDIwMTMgTWF4aW1pbGlhbiBBbnRvbmkKKyAgKi8KKyJ1c2Ugc3RyaWN0IjsKKwor
KGZ1bmN0aW9uIChzaW5vbikgeworICAgIHZhciBjb21tb25KU01vZHVsZSA9IHR5cGVvZiBtb2R1
bGUgIT09ICJ1bmRlZmluZWQiICYmIG1vZHVsZS5leHBvcnRzICYmIHR5cGVvZiByZXF1aXJlID09
ICJmdW5jdGlvbiI7CisgICAgaWYgKCFzaW5vbiAmJiBjb21tb25KU01vZHVsZSkgeworICAgICAg
ICBzaW5vbiA9IHJlcXVpcmUoIi4uL3Npbm9uIik7CisgICAgfQorCisgICAgaWYgKCFzaW5vbikg
eworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZnVuY3Rpb24gdGhyb3dZaWVsZEVycm9y
KHByb3h5LCB0ZXh0LCBhcmdzKSB7CisgICAgICAgIHZhciBtc2cgPSBzaW5vbi5mdW5jdGlvbk5h
bWUocHJveHkpICsgdGV4dDsKKyAgICAgICAgaWYgKGFyZ3MubGVuZ3RoKSB7CisgICAgICAgICAg
ICBtc2cgKz0gIiBSZWNlaXZlZCBbIiArIHNsaWNlLmNhbGwoYXJncykuam9pbigiLCAiKSArICJd
IjsKKyAgICAgICAgfQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKKyAgICB9CisKKyAg
ICB2YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7CisKKyAgICB2YXIgY2FsbFByb3Rv
ID0geworICAgICAgICBjYWxsZWRPbjogZnVuY3Rpb24gY2FsbGVkT24odGhpc1ZhbHVlKSB7Cisg
ICAgICAgICAgICBpZiAoc2lub24ubWF0Y2ggJiYgc2lub24ubWF0Y2guaXNNYXRjaGVyKHRoaXNW
YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1ZhbHVlLnRlc3QodGhpcy50aGlz
VmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRoaXMudGhpc1ZhbHVl
ID09PSB0aGlzVmFsdWU7CisgICAgICAgIH0sCisKKyAgICAgICAgY2FsbGVkV2l0aDogZnVuY3Rp
b24gY2FsbGVkV2l0aCgpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gYXJndW1l
bnRzLmxlbmd0aDsgaSA8IGw7IGkgKz0gMSkgeworICAgICAgICAgICAgICAgIGlmICghc2lub24u
ZGVlcEVxdWFsKGFyZ3VtZW50c1tpXSwgdGhpcy5hcmdzW2ldKSkgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSwKKworICAgICAgICBjYWxsZWRXaXRo
TWF0Y2g6IGZ1bmN0aW9uIGNhbGxlZFdpdGhNYXRjaCgpIHsKKyAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwLCBsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkgKz0gMSkgeworICAgICAgICAg
ICAgICAgIHZhciBhY3R1YWwgPSB0aGlzLmFyZ3NbaV07CisgICAgICAgICAgICAgICAgdmFyIGV4
cGVjdGF0aW9uID0gYXJndW1lbnRzW2ldOworICAgICAgICAgICAgICAgIGlmICghc2lub24ubWF0
Y2ggfHwgIXNpbm9uLm1hdGNoKGV4cGVjdGF0aW9uKS50ZXN0KGFjdHVhbCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9LAorCisgICAgICAgIGNhbGxl
ZFdpdGhFeGFjdGx5OiBmdW5jdGlvbiBjYWxsZWRXaXRoRXhhY3RseSgpIHsKKyAgICAgICAgICAg
IHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09IHRoaXMuYXJncy5sZW5ndGggJiYKKyAgICAgICAg
ICAgICAgICB0aGlzLmNhbGxlZFdpdGguYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAg
fSwKKworICAgICAgICBub3RDYWxsZWRXaXRoOiBmdW5jdGlvbiBub3RDYWxsZWRXaXRoKCkgewor
ICAgICAgICAgICAgcmV0dXJuICF0aGlzLmNhbGxlZFdpdGguYXBwbHkodGhpcywgYXJndW1lbnRz
KTsKKyAgICAgICAgfSwKKworICAgICAgICBub3RDYWxsZWRXaXRoTWF0Y2g6IGZ1bmN0aW9uIG5v
dENhbGxlZFdpdGhNYXRjaCgpIHsKKyAgICAgICAgICAgIHJldHVybiAhdGhpcy5jYWxsZWRXaXRo
TWF0Y2guYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgfSwKKworICAgICAgICByZXR1
cm5lZDogZnVuY3Rpb24gcmV0dXJuZWQodmFsdWUpIHsKKyAgICAgICAgICAgIHJldHVybiBzaW5v
bi5kZWVwRXF1YWwodmFsdWUsIHRoaXMucmV0dXJuVmFsdWUpOworICAgICAgICB9LAorCisgICAg
ICAgIHRocmV3OiBmdW5jdGlvbiB0aHJldyhlcnJvcikgeworICAgICAgICAgICAgaWYgKHR5cGVv
ZiBlcnJvciA9PT0gInVuZGVmaW5lZCIgfHwgIXRoaXMuZXhjZXB0aW9uKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuICEhdGhpcy5leGNlcHRpb247CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzLmV4Y2VwdGlvbiA9PT0gZXJyb3IgfHwgdGhpcy5leGNlcHRpb24ubmFt
ZSA9PT0gZXJyb3I7CisgICAgICAgIH0sCisKKyAgICAgICAgY2FsbGVkV2l0aE5ldzogZnVuY3Rp
b24gY2FsbGVkV2l0aE5ldygpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3h5LnByb3Rv
dHlwZSAmJiB0aGlzLnRoaXNWYWx1ZSBpbnN0YW5jZW9mIHRoaXMucHJveHk7CisgICAgICAgIH0s
CisKKyAgICAgICAgY2FsbGVkQmVmb3JlOiBmdW5jdGlvbiAob3RoZXIpIHsKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLmNhbGxJZCA8IG90aGVyLmNhbGxJZDsKKyAgICAgICAgfSwKKworICAgICAg
ICBjYWxsZWRBZnRlcjogZnVuY3Rpb24gKG90aGVyKSB7CisgICAgICAgICAgICByZXR1cm4gdGhp
cy5jYWxsSWQgPiBvdGhlci5jYWxsSWQ7CisgICAgICAgIH0sCisKKyAgICAgICAgY2FsbEFyZzog
ZnVuY3Rpb24gKHBvcykgeworICAgICAgICAgICAgdGhpcy5hcmdzW3Bvc10oKTsKKyAgICAgICAg
fSwKKworICAgICAgICBjYWxsQXJnT246IGZ1bmN0aW9uIChwb3MsIHRoaXNWYWx1ZSkgeworICAg
ICAgICAgICAgdGhpcy5hcmdzW3Bvc10uYXBwbHkodGhpc1ZhbHVlKTsKKyAgICAgICAgfSwKKwor
ICAgICAgICBjYWxsQXJnV2l0aDogZnVuY3Rpb24gKHBvcykgeworICAgICAgICAgICAgdGhpcy5j
YWxsQXJnT25XaXRoLmFwcGx5KHRoaXMsIFtwb3MsIG51bGxdLmNvbmNhdChzbGljZS5jYWxsKGFy
Z3VtZW50cywgMSkpKTsKKyAgICAgICAgfSwKKworICAgICAgICBjYWxsQXJnT25XaXRoOiBmdW5j
dGlvbiAocG9zLCB0aGlzVmFsdWUpIHsKKyAgICAgICAgICAgIHZhciBhcmdzID0gc2xpY2UuY2Fs
bChhcmd1bWVudHMsIDIpOworICAgICAgICAgICAgdGhpcy5hcmdzW3Bvc10uYXBwbHkodGhpc1Zh
bHVlLCBhcmdzKTsKKyAgICAgICAgfSwKKworICAgICAgICAieWllbGQiOiBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICB0aGlzLnlpZWxkT24uYXBwbHkodGhpcywgW251bGxdLmNvbmNhdChzbGlj
ZS5jYWxsKGFyZ3VtZW50cywgMCkpKTsKKyAgICAgICAgfSwKKworICAgICAgICB5aWVsZE9uOiBm
dW5jdGlvbiAodGhpc1ZhbHVlKSB7CisgICAgICAgICAgICB2YXIgYXJncyA9IHRoaXMuYXJnczsK
KyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gYXJncy5sZW5ndGg7IGkgPCBsOyArK2kp
IHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3NbaV0gPT09ICJmdW5jdGlvbiIpIHsK
KyAgICAgICAgICAgICAgICAgICAgYXJnc1tpXS5hcHBseSh0aGlzVmFsdWUsIHNsaWNlLmNhbGwo
YXJndW1lbnRzLCAxKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aHJvd1lpZWxkRXJyb3IodGhpcy5w
cm94eSwgIiBjYW5ub3QgeWllbGQgc2luY2Ugbm8gY2FsbGJhY2sgd2FzIHBhc3NlZC4iLCBhcmdz
KTsKKyAgICAgICAgfSwKKworICAgICAgICB5aWVsZFRvOiBmdW5jdGlvbiAocHJvcCkgeworICAg
ICAgICAgICAgdGhpcy55aWVsZFRvT24uYXBwbHkodGhpcywgW3Byb3AsIG51bGxdLmNvbmNhdChz
bGljZS5jYWxsKGFyZ3VtZW50cywgMSkpKTsKKyAgICAgICAgfSwKKworICAgICAgICB5aWVsZFRv
T246IGZ1bmN0aW9uIChwcm9wLCB0aGlzVmFsdWUpIHsKKyAgICAgICAgICAgIHZhciBhcmdzID0g
dGhpcy5hcmdzOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhcmdzLmxlbmd0aDsg
aSA8IGw7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChhcmdzW2ldICYmIHR5cGVvZiBhcmdz
W2ldW3Byb3BdID09PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICAgICAgICAgIGFyZ3NbaV1b
cHJvcF0uYXBwbHkodGhpc1ZhbHVlLCBzbGljZS5jYWxsKGFyZ3VtZW50cywgMikpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgdGhyb3dZaWVsZEVycm9yKHRoaXMucHJveHksICIgY2Fubm90IHlpZWxkIHRv
ICciICsgcHJvcCArCisgICAgICAgICAgICAgICAgIicgc2luY2Ugbm8gY2FsbGJhY2sgd2FzIHBh
c3NlZC4iLCBhcmdzKTsKKyAgICAgICAgfSwKKworICAgICAgICB0b1N0cmluZzogZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgdmFyIGNhbGxTdHIgPSB0aGlzLnByb3h5LnRvU3RyaW5nKCkgKyAi
KCI7CisgICAgICAgICAgICB2YXIgYXJncyA9IFtdOworCisgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMCwgbCA9IHRoaXMuYXJncy5sZW5ndGg7IGkgPCBsOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICBhcmdzLnB1c2goc2lub24uZm9ybWF0KHRoaXMuYXJnc1tpXSkpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBjYWxsU3RyID0gY2FsbFN0ciArIGFyZ3Muam9pbigiLCAiKSArICIpIjsK
KworICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJldHVyblZhbHVlICE9ICJ1bmRlZmluZWQi
KSB7CisgICAgICAgICAgICAgICAgY2FsbFN0ciArPSAiID0+ICIgKyBzaW5vbi5mb3JtYXQodGhp
cy5yZXR1cm5WYWx1ZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0aGlzLmV4
Y2VwdGlvbikgeworICAgICAgICAgICAgICAgIGNhbGxTdHIgKz0gIiAhIiArIHRoaXMuZXhjZXB0
aW9uLm5hbWU7CisKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5leGNlcHRpb24ubWVzc2FnZSkg
eworICAgICAgICAgICAgICAgICAgICBjYWxsU3RyICs9ICIoIiArIHRoaXMuZXhjZXB0aW9uLm1l
c3NhZ2UgKyAiKSI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICByZXR1cm4gY2FsbFN0cjsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBjYWxsUHJvdG8u
aW52b2tlQ2FsbGJhY2sgPSBjYWxsUHJvdG8ueWllbGQ7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVT
cHlDYWxsKHNweSwgdGhpc1ZhbHVlLCBhcmdzLCByZXR1cm5WYWx1ZSwgZXhjZXB0aW9uLCBpZCkg
eworICAgICAgICBpZiAodHlwZW9mIGlkICE9PSAibnVtYmVyIikgeworICAgICAgICAgICAgdGhy
b3cgbmV3IFR5cGVFcnJvcigiQ2FsbCBpZCBpcyBub3QgYSBudW1iZXIiKTsKKyAgICAgICAgfQor
ICAgICAgICB2YXIgcHJveHlDYWxsID0gc2lub24uY3JlYXRlKGNhbGxQcm90byk7CisgICAgICAg
IHByb3h5Q2FsbC5wcm94eSA9IHNweTsKKyAgICAgICAgcHJveHlDYWxsLnRoaXNWYWx1ZSA9IHRo
aXNWYWx1ZTsKKyAgICAgICAgcHJveHlDYWxsLmFyZ3MgPSBhcmdzOworICAgICAgICBwcm94eUNh
bGwucmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZTsKKyAgICAgICAgcHJveHlDYWxsLmV4Y2VwdGlv
biA9IGV4Y2VwdGlvbjsKKyAgICAgICAgcHJveHlDYWxsLmNhbGxJZCA9IGlkOworCisgICAgICAg
IHJldHVybiBwcm94eUNhbGw7CisgICAgfQorICAgIGNyZWF0ZVNweUNhbGwudG9TdHJpbmcgPSBj
YWxsUHJvdG8udG9TdHJpbmc7IC8vIHVzZWQgYnkgbW9ja3MKKworICAgIHNpbm9uLnNweUNhbGwg
PSBjcmVhdGVTcHlDYWxsOworCisgICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICJmdW5jdGlvbiIg
JiYgZGVmaW5lLmFtZCkgeworICAgICAgICBkZWZpbmUoWyJtb2R1bGUiXSwgZnVuY3Rpb24obW9k
dWxlKSB7IG1vZHVsZS5leHBvcnRzID0gY3JlYXRlU3B5Q2FsbDsgfSk7CisgICAgfSBlbHNlIGlm
IChjb21tb25KU01vZHVsZSkgeworICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVNweUNh
bGw7CisgICAgfQorfSh0eXBlb2Ygc2lub24gPT0gIm9iamVjdCIgJiYgc2lub24gfHwgbnVsbCkp
OworCisKK30seyIuLi9zaW5vbiI6MjN9XSwyNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhw
b3J0cyl7CisvKioKKyAqIEBkZXBlbmQgLi4vc2lub24uanMKKyAqIEBkZXBlbmQgc3R1Yi5qcwor
ICogQGRlcGVuZCBtb2NrLmpzCisgKi8KKy8qanNsaW50IGVxZXFlcTogZmFsc2UsIG9uZXZhcjog
ZmFsc2UsIGZvcmluOiB0cnVlKi8KKy8qZ2xvYmFsIG1vZHVsZSwgcmVxdWlyZSwgc2lub24qLwor
LyoqCisgKiBDb2xsZWN0aW9ucyBvZiBzdHVicywgc3BpZXMgYW5kIG1vY2tzLgorICoKKyAqIEBh
dXRob3IgQ2hyaXN0aWFuIEpvaGFuc2VuIChjaHJpc3RpYW5AY2pvaGFuc2VuLm5vKQorICogQGxp
Y2Vuc2UgQlNECisgKgorICogQ29weXJpZ2h0IChjKSAyMDEwLTIwMTMgQ2hyaXN0aWFuIEpvaGFu
c2VuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworKGZ1bmN0aW9uIChzaW5vbikgeworICAgIHZhciBj
b21tb25KU01vZHVsZSA9IHR5cGVvZiBtb2R1bGUgIT09ICJ1bmRlZmluZWQiICYmIG1vZHVsZS5l
eHBvcnRzICYmIHR5cGVvZiByZXF1aXJlID09ICJmdW5jdGlvbiI7CisgICAgdmFyIHB1c2ggPSBb
XS5wdXNoOworICAgIHZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3du
UHJvcGVydHk7CisKKyAgICBpZiAoIXNpbm9uICYmIGNvbW1vbkpTTW9kdWxlKSB7CisgICAgICAg
IHNpbm9uID0gcmVxdWlyZSgiLi4vc2lub24iKTsKKyAgICB9CisKKyAgICBpZiAoIXNpbm9uKSB7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRGYWtlcyhmYWtlQ29s
bGVjdGlvbikgeworICAgICAgICBpZiAoIWZha2VDb2xsZWN0aW9uLmZha2VzKSB7CisgICAgICAg
ICAgICBmYWtlQ29sbGVjdGlvbi5mYWtlcyA9IFtdOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIGZha2VDb2xsZWN0aW9uLmZha2VzOworICAgIH0KKworICAgIGZ1bmN0aW9uIGVhY2goZmFr
ZUNvbGxlY3Rpb24sIG1ldGhvZCkgeworICAgICAgICB2YXIgZmFrZXMgPSBnZXRGYWtlcyhmYWtl
Q29sbGVjdGlvbik7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBmYWtlcy5sZW5ndGg7
IGkgPCBsOyBpICs9IDEpIHsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgZmFrZXNbaV1bbWV0aG9k
XSA9PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICAgICAgZmFrZXNbaV1bbWV0aG9kXSgpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gY29tcGFjdChm
YWtlQ29sbGVjdGlvbikgeworICAgICAgICB2YXIgZmFrZXMgPSBnZXRGYWtlcyhmYWtlQ29sbGVj
dGlvbik7CisgICAgICAgIHZhciBpID0gMDsKKyAgICAgICAgd2hpbGUgKGkgPCBmYWtlcy5sZW5n
dGgpIHsKKyAgICAgICAgICBmYWtlcy5zcGxpY2UoaSwgMSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICB2YXIgY29sbGVjdGlvbiA9IHsKKyAgICAgICAgdmVyaWZ5OiBmdW5jdGlvbiByZXNvbHZl
KCkgeworICAgICAgICAgICAgZWFjaCh0aGlzLCAidmVyaWZ5Iik7CisgICAgICAgIH0sCisKKyAg
ICAgICAgcmVzdG9yZTogZnVuY3Rpb24gcmVzdG9yZSgpIHsKKyAgICAgICAgICAgIGVhY2godGhp
cywgInJlc3RvcmUiKTsKKyAgICAgICAgICAgIGNvbXBhY3QodGhpcyk7CisgICAgICAgIH0sCisK
KyAgICAgICAgdmVyaWZ5QW5kUmVzdG9yZTogZnVuY3Rpb24gdmVyaWZ5QW5kUmVzdG9yZSgpIHsK
KyAgICAgICAgICAgIHZhciBleGNlcHRpb247CisKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICAgICAgdGhpcy52ZXJpZnkoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgICAgICAgICBleGNlcHRpb24gPSBlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0
aGlzLnJlc3RvcmUoKTsKKworICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICAg
ICAgICAgIHRocm93IGV4Y2VwdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAg
ICAgICBhZGQ6IGZ1bmN0aW9uIGFkZChmYWtlKSB7CisgICAgICAgICAgICBwdXNoLmNhbGwoZ2V0
RmFrZXModGhpcyksIGZha2UpOworICAgICAgICAgICAgcmV0dXJuIGZha2U7CisgICAgICAgIH0s
CisKKyAgICAgICAgc3B5OiBmdW5jdGlvbiBzcHkoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhp
cy5hZGQoc2lub24uc3B5LmFwcGx5KHNpbm9uLCBhcmd1bWVudHMpKTsKKyAgICAgICAgfSwKKwor
ICAgICAgICBzdHViOiBmdW5jdGlvbiBzdHViKG9iamVjdCwgcHJvcGVydHksIHZhbHVlKSB7Cisg
ICAgICAgICAgICBpZiAocHJvcGVydHkpIHsKKyAgICAgICAgICAgICAgICB2YXIgb3JpZ2luYWwg
PSBvYmplY3RbcHJvcGVydHldOworCisgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcmlnaW5h
bCAhPSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghaGFzT3duUHJvcGVy
dHkuY2FsbChvYmplY3QsIHByb3BlcnR5KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IHN0dWIgbm9uLWV4aXN0ZW50IG93biBwcm9wZXJ0eSAi
ICsgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAg
ICAgb2JqZWN0W3Byb3BlcnR5XSA9IHZhbHVlOworCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLmFkZCh7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN0b3JlOiBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0W3Byb3BlcnR5XSA9IG9yaWdp
bmFsOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXByb3Bl
cnR5ICYmICEhb2JqZWN0ICYmIHR5cGVvZiBvYmplY3QgPT0gIm9iamVjdCIpIHsKKyAgICAgICAg
ICAgICAgICB2YXIgc3R1YmJlZE9iaiA9IHNpbm9uLnN0dWIuYXBwbHkoc2lub24sIGFyZ3VtZW50
cyk7CisKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIHN0dWJiZWRPYmopIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzdHViYmVkT2JqW3Byb3BdID09PSAiZnVuY3Rp
b24iKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZChzdHViYmVkT2JqW3Byb3Bd
KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIHJldHVybiBzdHViYmVkT2JqOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5hZGQoc2lub24uc3R1Yi5hcHBseShzaW5vbiwgYXJndW1lbnRzKSk7CisgICAg
ICAgIH0sCisKKyAgICAgICAgbW9jazogZnVuY3Rpb24gbW9jaygpIHsKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzLmFkZChzaW5vbi5tb2NrLmFwcGx5KHNpbm9uLCBhcmd1bWVudHMpKTsKKyAgICAg
ICAgfSwKKworICAgICAgICBpbmplY3Q6IGZ1bmN0aW9uIGluamVjdChvYmopIHsKKyAgICAgICAg
ICAgIHZhciBjb2wgPSB0aGlzOworCisgICAgICAgICAgICBvYmouc3B5ID0gZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgIHJldHVybiBjb2wuc3B5LmFwcGx5KGNvbCwgYXJndW1lbnRzKTsK
KyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIG9iai5zdHViID0gZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgIHJldHVybiBjb2wuc3R1Yi5hcHBseShjb2wsIGFyZ3VtZW50cyk7Cisg
ICAgICAgICAgICB9OworCisgICAgICAgICAgICBvYmoubW9jayA9IGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gY29sLm1vY2suYXBwbHkoY29sLCBhcmd1bWVudHMpOworICAg
ICAgICAgICAgfTsKKworICAgICAgICAgICAgcmV0dXJuIG9iajsKKyAgICAgICAgfQorICAgIH07
CisKKyAgICBzaW5vbi5jb2xsZWN0aW9uID0gY29sbGVjdGlvbjsKKworICAgIGlmICh0eXBlb2Yg
ZGVmaW5lID09PSAiZnVuY3Rpb24iICYmIGRlZmluZS5hbWQpIHsKKyAgICAgICAgZGVmaW5lKFsi
bW9kdWxlIl0sIGZ1bmN0aW9uKG1vZHVsZSkgeyBtb2R1bGUuZXhwb3J0cyA9IGNvbGxlY3Rpb247
IH0pOworICAgIH0gZWxzZSBpZiAoY29tbW9uSlNNb2R1bGUpIHsKKyAgICAgICAgbW9kdWxlLmV4
cG9ydHMgPSBjb2xsZWN0aW9uOworICAgIH0KK30odHlwZW9mIHNpbm9uID09ICJvYmplY3QiICYm
IHNpbm9uIHx8IG51bGwpKTsKKworfSx7Ii4uL3Npbm9uIjoyM31dLDI4OltmdW5jdGlvbihyZXF1
aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8qIEBkZXBlbmQgLi4vc2lub24uanMgKi8KKy8qanNsaW50
IGVxZXFlcTogZmFsc2UsIG9uZXZhcjogZmFsc2UsIHBsdXNwbHVzOiBmYWxzZSovCisvKmdsb2Jh
bCBtb2R1bGUsIHJlcXVpcmUsIHNpbm9uKi8KKy8qKgorICogTWF0Y2ggZnVuY3Rpb25zCisgKgor
ICogQGF1dGhvciBNYXhpbWlsaWFuIEFudG9uaSAobWFpbEBtYXhhbnRvbmkuZGUpCisgKiBAbGlj
ZW5zZSBCU0QKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIgTWF4aW1pbGlhbiBBbnRvbmkKKyAq
LworInVzZSBzdHJpY3QiOworCisoZnVuY3Rpb24gKHNpbm9uKSB7CisgICAgdmFyIGNvbW1vbkpT
TW9kdWxlID0gdHlwZW9mIG1vZHVsZSAhPT0gInVuZGVmaW5lZCIgJiYgbW9kdWxlLmV4cG9ydHMg
JiYgdHlwZW9mIHJlcXVpcmUgPT0gImZ1bmN0aW9uIjsKKworICAgIGlmICghc2lub24gJiYgY29t
bW9uSlNNb2R1bGUpIHsKKyAgICAgICAgc2lub24gPSByZXF1aXJlKCIuLi9zaW5vbiIpOworICAg
IH0KKworICAgIGlmICghc2lub24pIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGFzc2VydFR5cGUodmFsdWUsIHR5cGUsIG5hbWUpIHsKKyAgICAgICAgdmFyIGFjdHVh
bCA9IHNpbm9uLnR5cGVPZih2YWx1ZSk7CisgICAgICAgIGlmIChhY3R1YWwgIT09IHR5cGUpIHsK
KyAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIHR5cGUgb2YgIiArIG5h
bWUgKyAiIHRvIGJlICIgKworICAgICAgICAgICAgICAgIHR5cGUgKyAiLCBidXQgd2FzICIgKyBh
Y3R1YWwpOworICAgICAgICB9CisgICAgfQorCisgICAgdmFyIG1hdGNoZXIgPSB7CisgICAgICAg
IHRvU3RyaW5nOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdl
OworICAgICAgICB9CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGlzTWF0Y2hlcihvYmplY3QpIHsK
KyAgICAgICAgcmV0dXJuIG1hdGNoZXIuaXNQcm90b3R5cGVPZihvYmplY3QpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIG1hdGNoT2JqZWN0KGV4cGVjdGF0aW9uLCBhY3R1YWwpIHsKKyAgICAgICAg
aWYgKGFjdHVhbCA9PT0gbnVsbCB8fCBhY3R1YWwgPT09IHVuZGVmaW5lZCkgeworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGZvciAodmFyIGtleSBpbiBleHBl
Y3RhdGlvbikgeworICAgICAgICAgICAgaWYgKGV4cGVjdGF0aW9uLmhhc093blByb3BlcnR5KGtl
eSkpIHsKKyAgICAgICAgICAgICAgICB2YXIgZXhwID0gZXhwZWN0YXRpb25ba2V5XTsKKyAgICAg
ICAgICAgICAgICB2YXIgYWN0ID0gYWN0dWFsW2tleV07CisgICAgICAgICAgICAgICAgaWYgKG1h
dGNoLmlzTWF0Y2hlcihleHApKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghZXhwLnRlc3Qo
YWN0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzaW5vbi50eXBlT2YoZXhw
KSA9PT0gIm9iamVjdCIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaE9iamVjdChl
eHAsIGFjdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXNpbm9uLmRlZXBF
cXVhbChleHAsIGFjdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICBtYXRjaGVyLm9yID0gZnVuY3Rpb24gKG0yKSB7CisgICAgICAg
IGlmICghYXJndW1lbnRzLmxlbmd0aCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJv
cigiTWF0Y2hlciBleHBlY3RlZCIpOworICAgICAgICB9IGVsc2UgaWYgKCFpc01hdGNoZXIobTIp
KSB7CisgICAgICAgICAgICBtMiA9IG1hdGNoKG0yKTsKKyAgICAgICAgfQorICAgICAgICB2YXIg
bTEgPSB0aGlzOworICAgICAgICB2YXIgb3IgPSBzaW5vbi5jcmVhdGUobWF0Y2hlcik7CisgICAg
ICAgIG9yLnRlc3QgPSBmdW5jdGlvbiAoYWN0dWFsKSB7CisgICAgICAgICAgICByZXR1cm4gbTEu
dGVzdChhY3R1YWwpIHx8IG0yLnRlc3QoYWN0dWFsKTsKKyAgICAgICAgfTsKKyAgICAgICAgb3Iu
bWVzc2FnZSA9IG0xLm1lc3NhZ2UgKyAiLm9yKCIgKyBtMi5tZXNzYWdlICsgIikiOworICAgICAg
ICByZXR1cm4gb3I7CisgICAgfTsKKworICAgIG1hdGNoZXIuYW5kID0gZnVuY3Rpb24gKG0yKSB7
CisgICAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgeworICAgICAgICAgICAgdGhyb3cgbmV3
IFR5cGVFcnJvcigiTWF0Y2hlciBleHBlY3RlZCIpOworICAgICAgICB9IGVsc2UgaWYgKCFpc01h
dGNoZXIobTIpKSB7CisgICAgICAgICAgICBtMiA9IG1hdGNoKG0yKTsKKyAgICAgICAgfQorICAg
ICAgICB2YXIgbTEgPSB0aGlzOworICAgICAgICB2YXIgYW5kID0gc2lub24uY3JlYXRlKG1hdGNo
ZXIpOworICAgICAgICBhbmQudGVzdCA9IGZ1bmN0aW9uIChhY3R1YWwpIHsKKyAgICAgICAgICAg
IHJldHVybiBtMS50ZXN0KGFjdHVhbCkgJiYgbTIudGVzdChhY3R1YWwpOworICAgICAgICB9Owor
ICAgICAgICBhbmQubWVzc2FnZSA9IG0xLm1lc3NhZ2UgKyAiLmFuZCgiICsgbTIubWVzc2FnZSAr
ICIpIjsKKyAgICAgICAgcmV0dXJuIGFuZDsKKyAgICB9OworCisgICAgdmFyIG1hdGNoID0gZnVu
Y3Rpb24gKGV4cGVjdGF0aW9uLCBtZXNzYWdlKSB7CisgICAgICAgIHZhciBtID0gc2lub24uY3Jl
YXRlKG1hdGNoZXIpOworICAgICAgICB2YXIgdHlwZSA9IHNpbm9uLnR5cGVPZihleHBlY3RhdGlv
bik7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlICJvYmplY3QiOgorICAg
ICAgICAgICAgaWYgKHR5cGVvZiBleHBlY3RhdGlvbi50ZXN0ID09PSAiZnVuY3Rpb24iKSB7Cisg
ICAgICAgICAgICAgICAgbS50ZXN0ID0gZnVuY3Rpb24gKGFjdHVhbCkgeworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZXhwZWN0YXRpb24udGVzdChhY3R1YWwpID09PSB0cnVlOworICAgICAg
ICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgbS5tZXNzYWdlID0gIm1hdGNoKCIgKyBzaW5v
bi5mdW5jdGlvbk5hbWUoZXhwZWN0YXRpb24udGVzdCkgKyAiKSI7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG07CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgc3RyID0gW107CisgICAg
ICAgICAgICBmb3IgKHZhciBrZXkgaW4gZXhwZWN0YXRpb24pIHsKKyAgICAgICAgICAgICAgICBp
ZiAoZXhwZWN0YXRpb24uaGFzT3duUHJvcGVydHkoa2V5KSkgeworICAgICAgICAgICAgICAgICAg
ICBzdHIucHVzaChrZXkgKyAiOiAiICsgZXhwZWN0YXRpb25ba2V5XSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbS50ZXN0ID0gZnVuY3Rpb24gKGFjdHVh
bCkgeworICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaE9iamVjdChleHBlY3RhdGlvbiwgYWN0
dWFsKTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBtLm1lc3NhZ2UgPSAibWF0Y2goIiAr
IHN0ci5qb2luKCIsICIpICsgIikiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Im51bWJlciI6CisgICAgICAgICAgICBtLnRlc3QgPSBmdW5jdGlvbiAoYWN0dWFsKSB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGF0aW9uID09IGFjdHVhbDsKKyAgICAgICAgICAgIH07
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAic3RyaW5nIjoKKyAgICAgICAgICAg
IG0udGVzdCA9IGZ1bmN0aW9uIChhY3R1YWwpIHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9m
IGFjdHVhbCAhPT0gInN0cmluZyIpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gYWN0dWFsLmluZGV4
T2YoZXhwZWN0YXRpb24pICE9PSAtMTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBtLm1l
c3NhZ2UgPSAibWF0Y2goXCIiICsgZXhwZWN0YXRpb24gKyAiXCIpIjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlICJyZWdleHAiOgorICAgICAgICAgICAgbS50ZXN0ID0gZnVuY3Rp
b24gKGFjdHVhbCkgeworICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYWN0dWFsICE9PSAic3Ry
aW5nIikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBleHBlY3RhdGlvbi50ZXN0KGFjdHVhbCk7Cisg
ICAgICAgICAgICB9OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgImZ1bmN0aW9u
IjoKKyAgICAgICAgICAgIG0udGVzdCA9IGV4cGVjdGF0aW9uOworICAgICAgICAgICAgaWYgKG1l
c3NhZ2UpIHsKKyAgICAgICAgICAgICAgICBtLm1lc3NhZ2UgPSBtZXNzYWdlOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtLm1lc3NhZ2UgPSAibWF0Y2goIiArIHNpbm9u
LmZ1bmN0aW9uTmFtZShleHBlY3RhdGlvbikgKyAiKSI7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIG0udGVzdCA9IGZ1bmN0
aW9uIChhY3R1YWwpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHNpbm9uLmRlZXBFcXVhbChleHBl
Y3RhdGlvbiwgYWN0dWFsKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAgaWYg
KCFtLm1lc3NhZ2UpIHsKKyAgICAgICAgICAgIG0ubWVzc2FnZSA9ICJtYXRjaCgiICsgZXhwZWN0
YXRpb24gKyAiKSI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG07CisgICAgfTsKKworICAg
IG1hdGNoLmlzTWF0Y2hlciA9IGlzTWF0Y2hlcjsKKworICAgIG1hdGNoLmFueSA9IG1hdGNoKGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwgImFueSIpOworCisgICAg
bWF0Y2guZGVmaW5lZCA9IG1hdGNoKGZ1bmN0aW9uIChhY3R1YWwpIHsKKyAgICAgICAgcmV0dXJu
IGFjdHVhbCAhPT0gbnVsbCAmJiBhY3R1YWwgIT09IHVuZGVmaW5lZDsKKyAgICB9LCAiZGVmaW5l
ZCIpOworCisgICAgbWF0Y2gudHJ1dGh5ID0gbWF0Y2goZnVuY3Rpb24gKGFjdHVhbCkgeworICAg
ICAgICByZXR1cm4gISFhY3R1YWw7CisgICAgfSwgInRydXRoeSIpOworCisgICAgbWF0Y2guZmFs
c3kgPSBtYXRjaChmdW5jdGlvbiAoYWN0dWFsKSB7CisgICAgICAgIHJldHVybiAhYWN0dWFsOwor
ICAgIH0sICJmYWxzeSIpOworCisgICAgbWF0Y2guc2FtZSA9IGZ1bmN0aW9uIChleHBlY3RhdGlv
bikgeworICAgICAgICByZXR1cm4gbWF0Y2goZnVuY3Rpb24gKGFjdHVhbCkgeworICAgICAgICAg
ICAgcmV0dXJuIGV4cGVjdGF0aW9uID09PSBhY3R1YWw7CisgICAgICAgIH0sICJzYW1lKCIgKyBl
eHBlY3RhdGlvbiArICIpIik7CisgICAgfTsKKworICAgIG1hdGNoLnR5cGVPZiA9IGZ1bmN0aW9u
ICh0eXBlKSB7CisgICAgICAgIGFzc2VydFR5cGUodHlwZSwgInN0cmluZyIsICJ0eXBlIik7Cisg
ICAgICAgIHJldHVybiBtYXRjaChmdW5jdGlvbiAoYWN0dWFsKSB7CisgICAgICAgICAgICByZXR1
cm4gc2lub24udHlwZU9mKGFjdHVhbCkgPT09IHR5cGU7CisgICAgICAgIH0sICJ0eXBlT2YoXCIi
ICsgdHlwZSArICJcIikiKTsKKyAgICB9OworCisgICAgbWF0Y2guaW5zdGFuY2VPZiA9IGZ1bmN0
aW9uICh0eXBlKSB7CisgICAgICAgIGFzc2VydFR5cGUodHlwZSwgImZ1bmN0aW9uIiwgInR5cGUi
KTsKKyAgICAgICAgcmV0dXJuIG1hdGNoKGZ1bmN0aW9uIChhY3R1YWwpIHsKKyAgICAgICAgICAg
IHJldHVybiBhY3R1YWwgaW5zdGFuY2VvZiB0eXBlOworICAgICAgICB9LCAiaW5zdGFuY2VPZigi
ICsgc2lub24uZnVuY3Rpb25OYW1lKHR5cGUpICsgIikiKTsKKyAgICB9OworCisgICAgZnVuY3Rp
b24gY3JlYXRlUHJvcGVydHlNYXRjaGVyKHByb3BlcnR5VGVzdCwgbWVzc2FnZVByZWZpeCkgewor
ICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHByb3BlcnR5LCB2YWx1ZSkgeworICAgICAgICAgICAg
YXNzZXJ0VHlwZShwcm9wZXJ0eSwgInN0cmluZyIsICJwcm9wZXJ0eSIpOworICAgICAgICAgICAg
dmFyIG9ubHlQcm9wZXJ0eSA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDE7CisgICAgICAgICAgICB2
YXIgbWVzc2FnZSA9IG1lc3NhZ2VQcmVmaXggKyAiKFwiIiArIHByb3BlcnR5ICsgIlwiIjsKKyAg
ICAgICAgICAgIGlmICghb25seVByb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgbWVzc2FnZSAr
PSAiLCAiICsgdmFsdWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtZXNzYWdlICs9ICIp
IjsKKyAgICAgICAgICAgIHJldHVybiBtYXRjaChmdW5jdGlvbiAoYWN0dWFsKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGFjdHVhbCA9PT0gdW5kZWZpbmVkIHx8IGFjdHVhbCA9PT0gbnVsbCB8fAor
ICAgICAgICAgICAgICAgICAgICAgICAgIXByb3BlcnR5VGVzdChhY3R1YWwsIHByb3BlcnR5KSkg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIHJldHVybiBvbmx5UHJvcGVydHkgfHwgc2lub24uZGVlcEVxdWFsKHZh
bHVlLCBhY3R1YWxbcHJvcGVydHldKTsKKyAgICAgICAgICAgIH0sIG1lc3NhZ2UpOworICAgICAg
ICB9OworICAgIH0KKworICAgIG1hdGNoLmhhcyA9IGNyZWF0ZVByb3BlcnR5TWF0Y2hlcihmdW5j
dGlvbiAoYWN0dWFsLCBwcm9wZXJ0eSkgeworICAgICAgICBpZiAodHlwZW9mIGFjdHVhbCA9PT0g
Im9iamVjdCIpIHsKKyAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eSBpbiBhY3R1YWw7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIGFjdHVhbFtwcm9wZXJ0eV0gIT09IHVuZGVmaW5lZDsKKyAg
ICB9LCAiaGFzIik7CisKKyAgICBtYXRjaC5oYXNPd24gPSBjcmVhdGVQcm9wZXJ0eU1hdGNoZXIo
ZnVuY3Rpb24gKGFjdHVhbCwgcHJvcGVydHkpIHsKKyAgICAgICAgcmV0dXJuIGFjdHVhbC5oYXNP
d25Qcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgfSwgImhhc093biIpOworCisgICAgbWF0Y2guYm9v
bCA9IG1hdGNoLnR5cGVPZigiYm9vbGVhbiIpOworICAgIG1hdGNoLm51bWJlciA9IG1hdGNoLnR5
cGVPZigibnVtYmVyIik7CisgICAgbWF0Y2guc3RyaW5nID0gbWF0Y2gudHlwZU9mKCJzdHJpbmci
KTsKKyAgICBtYXRjaC5vYmplY3QgPSBtYXRjaC50eXBlT2YoIm9iamVjdCIpOworICAgIG1hdGNo
LmZ1bmMgPSBtYXRjaC50eXBlT2YoImZ1bmN0aW9uIik7CisgICAgbWF0Y2guYXJyYXkgPSBtYXRj
aC50eXBlT2YoImFycmF5Iik7CisgICAgbWF0Y2gucmVnZXhwID0gbWF0Y2gudHlwZU9mKCJyZWdl
eHAiKTsKKyAgICBtYXRjaC5kYXRlID0gbWF0Y2gudHlwZU9mKCJkYXRlIik7CisKKyAgICBzaW5v
bi5tYXRjaCA9IG1hdGNoOworCisgICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICJmdW5jdGlvbiIg
JiYgZGVmaW5lLmFtZCkgeworICAgICAgICBkZWZpbmUoWyJtb2R1bGUiXSwgZnVuY3Rpb24obW9k
dWxlKSB7IG1vZHVsZS5leHBvcnRzID0gbWF0Y2g7IH0pOworICAgIH0gZWxzZSBpZiAoY29tbW9u
SlNNb2R1bGUpIHsKKyAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBtYXRjaDsKKyAgICB9Cit9KHR5
cGVvZiBzaW5vbiA9PSAib2JqZWN0IiAmJiBzaW5vbiB8fCBudWxsKSk7CisKK30seyIuLi9zaW5v
biI6MjN9XSwyOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIEBk
ZXBlbmQgLi4vc2lub24uanMKKyAqIEBkZXBlbmQgc3R1Yi5qcworICovCisvKmpzbGludCBlcWVx
ZXE6IGZhbHNlLCBvbmV2YXI6IGZhbHNlLCBub21lbjogZmFsc2UqLworLypnbG9iYWwgbW9kdWxl
LCByZXF1aXJlLCBzaW5vbiovCisvKioKKyAqIE1vY2sgZnVuY3Rpb25zLgorICoKKyAqIEBhdXRo
b3IgQ2hyaXN0aWFuIEpvaGFuc2VuIChjaHJpc3RpYW5AY2pvaGFuc2VuLm5vKQorICogQGxpY2Vu
c2UgQlNECisgKgorICogQ29weXJpZ2h0IChjKSAyMDEwLTIwMTMgQ2hyaXN0aWFuIEpvaGFuc2Vu
CisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworKGZ1bmN0aW9uIChzaW5vbikgeworICAgIHZhciBjb21t
b25KU01vZHVsZSA9IHR5cGVvZiBtb2R1bGUgIT09ICJ1bmRlZmluZWQiICYmIG1vZHVsZS5leHBv
cnRzICYmIHR5cGVvZiByZXF1aXJlID09ICJmdW5jdGlvbiI7CisgICAgdmFyIHB1c2ggPSBbXS5w
dXNoOworICAgIHZhciBtYXRjaDsKKworICAgIGlmICghc2lub24gJiYgY29tbW9uSlNNb2R1bGUp
IHsKKyAgICAgICAgc2lub24gPSByZXF1aXJlKCIuLi9zaW5vbiIpOworICAgIH0KKworICAgIGlm
ICghc2lub24pIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1hdGNoID0gc2lub24u
bWF0Y2g7CisKKyAgICBpZiAoIW1hdGNoICYmIGNvbW1vbkpTTW9kdWxlKSB7CisgICAgICAgIG1h
dGNoID0gcmVxdWlyZSgiLi9tYXRjaCIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIG1vY2sob2Jq
ZWN0KSB7CisgICAgICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgICAgICByZXR1cm4gc2lub24u
ZXhwZWN0YXRpb24uY3JlYXRlKCJBbm9ueW1vdXMgbW9jayIpOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIG1vY2suY3JlYXRlKG9iamVjdCk7CisgICAgfQorCisgICAgc2lub24ubW9jayA9
IG1vY2s7CisKKyAgICBzaW5vbi5leHRlbmQobW9jaywgKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ZnVuY3Rpb24gZWFjaChjb2xsZWN0aW9uLCBjYWxsYmFjaykgeworICAgICAgICAgICAgaWYgKCFj
b2xsZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNvbGxlY3Rpb24ubGVuZ3RoOyBpIDwgbDsg
aSArPSAxKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soY29sbGVjdGlvbltpXSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgY3Jl
YXRlOiBmdW5jdGlvbiBjcmVhdGUob2JqZWN0KSB7CisgICAgICAgICAgICAgICAgaWYgKCFvYmpl
Y3QpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigib2JqZWN0IGlz
IG51bGwiKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB2YXIgbW9ja09i
amVjdCA9IHNpbm9uLmV4dGVuZCh7fSwgbW9jayk7CisgICAgICAgICAgICAgICAgbW9ja09iamVj
dC5vYmplY3QgPSBvYmplY3Q7CisgICAgICAgICAgICAgICAgZGVsZXRlIG1vY2tPYmplY3QuY3Jl
YXRlOworCisgICAgICAgICAgICAgICAgcmV0dXJuIG1vY2tPYmplY3Q7CisgICAgICAgICAgICB9
LAorCisgICAgICAgICAgICBleHBlY3RzOiBmdW5jdGlvbiBleHBlY3RzKG1ldGhvZCkgeworICAg
ICAgICAgICAgICAgIGlmICghbWV0aG9kKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5l
dyBUeXBlRXJyb3IoIm1ldGhvZCBpcyBmYWxzeSIpOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGlmICghdGhpcy5leHBlY3RhdGlvbnMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgdGhpcy5leHBlY3RhdGlvbnMgPSB7fTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm94
aWVzID0gW107CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCF0aGlz
LmV4cGVjdGF0aW9uc1ttZXRob2RdKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0
YXRpb25zW21ldGhvZF0gPSBbXTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1vY2tPYmplY3Qg
PSB0aGlzOworCisgICAgICAgICAgICAgICAgICAgIHNpbm9uLndyYXBNZXRob2QodGhpcy5vYmpl
Y3QsIG1ldGhvZCwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG1vY2tPYmplY3QuaW52b2tlTWV0aG9kKG1ldGhvZCwgdGhpcywgYXJndW1lbnRzKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICAgICAgcHVzaC5jYWxsKHRoaXMu
cHJveGllcywgbWV0aG9kKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB2
YXIgZXhwZWN0YXRpb24gPSBzaW5vbi5leHBlY3RhdGlvbi5jcmVhdGUobWV0aG9kKTsKKyAgICAg
ICAgICAgICAgICBwdXNoLmNhbGwodGhpcy5leHBlY3RhdGlvbnNbbWV0aG9kXSwgZXhwZWN0YXRp
b24pOworCisgICAgICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGF0aW9uOworICAgICAgICAgICAg
fSwKKworICAgICAgICAgICAgcmVzdG9yZTogZnVuY3Rpb24gcmVzdG9yZSgpIHsKKyAgICAgICAg
ICAgICAgICB2YXIgb2JqZWN0ID0gdGhpcy5vYmplY3Q7CisKKyAgICAgICAgICAgICAgICBlYWNo
KHRoaXMucHJveGllcywgZnVuY3Rpb24gKHByb3h5KSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICh0eXBlb2Ygb2JqZWN0W3Byb3h5XS5yZXN0b3JlID09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG9iamVjdFtwcm94eV0ucmVzdG9yZSgpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAg
ICB2ZXJpZnk6IGZ1bmN0aW9uIHZlcmlmeSgpIHsKKyAgICAgICAgICAgICAgICB2YXIgZXhwZWN0
YXRpb25zID0gdGhpcy5leHBlY3RhdGlvbnMgfHwge307CisgICAgICAgICAgICAgICAgdmFyIG1l
c3NhZ2VzID0gW10sIG1ldCA9IFtdOworCisgICAgICAgICAgICAgICAgZWFjaCh0aGlzLnByb3hp
ZXMsIGZ1bmN0aW9uIChwcm94eSkgeworICAgICAgICAgICAgICAgICAgICBlYWNoKGV4cGVjdGF0
aW9uc1twcm94eV0sIGZ1bmN0aW9uIChleHBlY3RhdGlvbikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFleHBlY3RhdGlvbi5tZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2guY2FsbChtZXNzYWdlcywgZXhwZWN0YXRpb24udG9TdHJpbmcoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2guY2FsbChtZXQsIGV4cGVjdGF0aW9uLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKwor
ICAgICAgICAgICAgICAgIHRoaXMucmVzdG9yZSgpOworCisgICAgICAgICAgICAgICAgaWYgKG1l
c3NhZ2VzLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgc2lub24uZXhwZWN0YXRp
b24uZmFpbChtZXNzYWdlcy5jb25jYXQobWV0KS5qb2luKCJcbiIpKTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzaW5vbi5leHBlY3RhdGlvbi5wYXNzKG1l
c3NhZ2VzLmNvbmNhdChtZXQpLmpvaW4oIlxuIikpOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAg
aW52b2tlTWV0aG9kOiBmdW5jdGlvbiBpbnZva2VNZXRob2QobWV0aG9kLCB0aGlzVmFsdWUsIGFy
Z3MpIHsKKyAgICAgICAgICAgICAgICB2YXIgZXhwZWN0YXRpb25zID0gdGhpcy5leHBlY3RhdGlv
bnMgJiYgdGhpcy5leHBlY3RhdGlvbnNbbWV0aG9kXTsKKyAgICAgICAgICAgICAgICB2YXIgbGVu
Z3RoID0gZXhwZWN0YXRpb25zICYmIGV4cGVjdGF0aW9ucy5sZW5ndGggfHwgMCwgaTsKKworICAg
ICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoIWV4cGVjdGF0aW9uc1tpXS5tZXQoKSAmJgorICAgICAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0YXRpb25zW2ldLmFsbG93c0NhbGwodGhpc1ZhbHVlLCBhcmdzKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGF0aW9uc1tpXS5hcHBseSh0aGlz
VmFsdWUsIGFyZ3MpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VzID0gW10sIGF2YWlsYWJsZSwgZXhoYXVzdGVk
ID0gMDsKKworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkg
eworICAgICAgICAgICAgICAgICAgICBpZiAoZXhwZWN0YXRpb25zW2ldLmFsbG93c0NhbGwodGhp
c1ZhbHVlLCBhcmdzKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlID0gYXZh
aWxhYmxlIHx8IGV4cGVjdGF0aW9uc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGV4aGF1c3RlZCArPSAxOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIHB1c2guY2FsbChtZXNzYWdlcywgIiAgICAiICsg
ZXhwZWN0YXRpb25zW2ldLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGlmIChleGhhdXN0ZWQgPT09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGF2YWlsYWJsZS5hcHBseSh0aGlzVmFsdWUsIGFyZ3MpOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIG1lc3NhZ2VzLnVuc2hpZnQoIlVuZXhwZWN0ZWQgY2FsbDogIiAr
IHNpbm9uLnNweUNhbGwudG9TdHJpbmcuY2FsbCh7CisgICAgICAgICAgICAgICAgICAgIHByb3h5
OiBtZXRob2QsCisgICAgICAgICAgICAgICAgICAgIGFyZ3M6IGFyZ3MKKyAgICAgICAgICAgICAg
ICB9KSk7CisKKyAgICAgICAgICAgICAgICBzaW5vbi5leHBlY3RhdGlvbi5mYWlsKG1lc3NhZ2Vz
LmpvaW4oIlxuIikpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0oKSkpOworCisg
ICAgdmFyIHRpbWVzID0gc2lub24udGltZXNJbldvcmRzOworCisgICAgc2lub24uZXhwZWN0YXRp
b24gPSAoZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUu
c2xpY2U7CisgICAgICAgIHZhciBfaW52b2tlID0gc2lub24uc3B5Lmludm9rZTsKKworICAgICAg
ICBmdW5jdGlvbiBjYWxsQ291bnRJbldvcmRzKGNhbGxDb3VudCkgeworICAgICAgICAgICAgaWYg
KGNhbGxDb3VudCA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICJuZXZlciBjYWxsZWQi
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gImNhbGxlZCAi
ICsgdGltZXMoY2FsbENvdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGV4cGVjdGVkQ2FsbENvdW50SW5Xb3JkcyhleHBlY3RhdGlvbikgeworICAgICAg
ICAgICAgdmFyIG1pbiA9IGV4cGVjdGF0aW9uLm1pbkNhbGxzOworICAgICAgICAgICAgdmFyIG1h
eCA9IGV4cGVjdGF0aW9uLm1heENhbGxzOworCisgICAgICAgICAgICBpZiAodHlwZW9mIG1pbiA9
PSAibnVtYmVyIiAmJiB0eXBlb2YgbWF4ID09ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgICAg
dmFyIHN0ciA9IHRpbWVzKG1pbik7CisKKyAgICAgICAgICAgICAgICBpZiAobWluICE9IG1heCkg
eworICAgICAgICAgICAgICAgICAgICBzdHIgPSAiYXQgbGVhc3QgIiArIHN0ciArICIgYW5kIGF0
IG1vc3QgIiArIHRpbWVzKG1heCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0cjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHR5cGVvZiBt
aW4gPT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gImF0IGxlYXN0ICIgKyB0
aW1lcyhtaW4pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gImF0IG1vc3Qg
IiArIHRpbWVzKG1heCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiByZWNlaXZlZE1p
bkNhbGxzKGV4cGVjdGF0aW9uKSB7CisgICAgICAgICAgICB2YXIgaGFzTWluTGltaXQgPSB0eXBl
b2YgZXhwZWN0YXRpb24ubWluQ2FsbHMgPT0gIm51bWJlciI7CisgICAgICAgICAgICByZXR1cm4g
IWhhc01pbkxpbWl0IHx8IGV4cGVjdGF0aW9uLmNhbGxDb3VudCA+PSBleHBlY3RhdGlvbi5taW5D
YWxsczsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVkTWF4Q2FsbHMoZXhw
ZWN0YXRpb24pIHsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgZXhwZWN0YXRpb24ubWF4Q2FsbHMg
IT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBleHBlY3RhdGlvbi5jYWxsQ291bnQgPT0gZXhwZWN0
YXRpb24ubWF4Q2FsbHM7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB2ZXJpZnlNYXRj
aGVyKHBvc3NpYmxlTWF0Y2hlciwgYXJnKXsKKyAgICAgICAgICAgIGlmIChtYXRjaCAmJiBtYXRj
aC5pc01hdGNoZXIocG9zc2libGVNYXRjaGVyKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBw
b3NzaWJsZU1hdGNoZXIudGVzdChhcmcpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiB7CisgICAgICAgICAgICBtaW5DYWxsczogMSwKKyAgICAgICAgICAgIG1heENhbGxz
OiAxLAorCisgICAgICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uIGNyZWF0ZShtZXRob2ROYW1lKSB7
CisgICAgICAgICAgICAgICAgdmFyIGV4cGVjdGF0aW9uID0gc2lub24uZXh0ZW5kKHNpbm9uLnN0
dWIuY3JlYXRlKCksIHNpbm9uLmV4cGVjdGF0aW9uKTsKKyAgICAgICAgICAgICAgICBkZWxldGUg
ZXhwZWN0YXRpb24uY3JlYXRlOworICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uLm1ldGhvZCA9
IG1ldGhvZE5hbWU7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0YXRpb247CisgICAg
ICAgICAgICB9LAorCisgICAgICAgICAgICBpbnZva2U6IGZ1bmN0aW9uIGludm9rZShmdW5jLCB0
aGlzVmFsdWUsIGFyZ3MpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnZlcmlmeUNhbGxBbGxvd2Vk
KHRoaXNWYWx1ZSwgYXJncyk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gX2ludm9rZS5hcHBs
eSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgYXRMZWFz
dDogZnVuY3Rpb24gYXRMZWFzdChudW0pIHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG51
bSAhPSAibnVtYmVyIikgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9y
KCInIiArIG51bSArICInIGlzIG5vdCBudW1iZXIiKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBpZiAoIXRoaXMubGltaXRzU2V0KSB7CisgICAgICAgICAgICAgICAgICAg
IHRoaXMubWF4Q2FsbHMgPSBudWxsOworICAgICAgICAgICAgICAgICAgICB0aGlzLmxpbWl0c1Nl
dCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGhpcy5taW5D
YWxscyA9IG51bTsKKworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAg
fSwKKworICAgICAgICAgICAgYXRNb3N0OiBmdW5jdGlvbiBhdE1vc3QobnVtKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHR5cGVvZiBudW0gIT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiJyIgKyBudW0gKyAiJyBpcyBub3QgbnVtYmVyIik7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmxpbWl0c1NldCkg
eworICAgICAgICAgICAgICAgICAgICB0aGlzLm1pbkNhbGxzID0gbnVsbDsKKyAgICAgICAgICAg
ICAgICAgICAgdGhpcy5saW1pdHNTZXQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIHRoaXMubWF4Q2FsbHMgPSBudW07CisKKyAgICAgICAgICAgICAgICByZXR1
cm4gdGhpczsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIG5ldmVyOiBmdW5jdGlvbiBu
ZXZlcigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5leGFjdGx5KDApOworICAgICAg
ICAgICAgfSwKKworICAgICAgICAgICAgb25jZTogZnVuY3Rpb24gb25jZSgpIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpcy5leGFjdGx5KDEpOworICAgICAgICAgICAgfSwKKworICAgICAg
ICAgICAgdHdpY2U6IGZ1bmN0aW9uIHR3aWNlKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLmV4YWN0bHkoMik7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICB0aHJpY2U6IGZ1
bmN0aW9uIHRocmljZSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5leGFjdGx5KDMp
OworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgZXhhY3RseTogZnVuY3Rpb24gZXhhY3Rs
eShudW0pIHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG51bSAhPSAibnVtYmVyIikgewor
ICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCInIiArIG51bSArICInIGlz
IG5vdCBhIG51bWJlciIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRo
aXMuYXRMZWFzdChudW0pOworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmF0TW9zdChudW0p
OworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgbWV0OiBmdW5jdGlvbiBtZXQoKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmZhaWxlZCAmJiByZWNlaXZlZE1pbkNhbGxzKHRo
aXMpOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgdmVyaWZ5Q2FsbEFsbG93ZWQ6IGZ1
bmN0aW9uIHZlcmlmeUNhbGxBbGxvd2VkKHRoaXNWYWx1ZSwgYXJncykgeworICAgICAgICAgICAg
ICAgIGlmIChyZWNlaXZlZE1heENhbGxzKHRoaXMpKSB7CisgICAgICAgICAgICAgICAgICAgIHRo
aXMuZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgc2lub24uZXhwZWN0YXRpb24u
ZmFpbCh0aGlzLm1ldGhvZCArICIgYWxyZWFkeSBjYWxsZWQgIiArIHRpbWVzKHRoaXMubWF4Q2Fs
bHMpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoImV4cGVjdGVk
VGhpcyIgaW4gdGhpcyAmJiB0aGlzLmV4cGVjdGVkVGhpcyAhPT0gdGhpc1ZhbHVlKSB7CisgICAg
ICAgICAgICAgICAgICAgIHNpbm9uLmV4cGVjdGF0aW9uLmZhaWwodGhpcy5tZXRob2QgKyAiIGNh
bGxlZCB3aXRoICIgKyB0aGlzVmFsdWUgKyAiIGFzIHRoaXNWYWx1ZSwgZXhwZWN0ZWQgIiArCisg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdGVkVGhpcyk7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCEoImV4cGVjdGVkQXJndW1lbnRzIiBpbiB0aGlz
KSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgaWYgKCFhcmdzKSB7CisgICAgICAgICAgICAgICAgICAgIHNpbm9uLmV4
cGVjdGF0aW9uLmZhaWwodGhpcy5tZXRob2QgKyAiIHJlY2VpdmVkIG5vIGFyZ3VtZW50cywgZXhw
ZWN0ZWQgIiArCisgICAgICAgICAgICAgICAgICAgICAgICBzaW5vbi5mb3JtYXQodGhpcy5leHBl
Y3RlZEFyZ3VtZW50cykpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlm
IChhcmdzLmxlbmd0aCA8IHRoaXMuZXhwZWN0ZWRBcmd1bWVudHMubGVuZ3RoKSB7CisgICAgICAg
ICAgICAgICAgICAgIHNpbm9uLmV4cGVjdGF0aW9uLmZhaWwodGhpcy5tZXRob2QgKyAiIHJlY2Vp
dmVkIHRvbyBmZXcgYXJndW1lbnRzICgiICsgc2lub24uZm9ybWF0KGFyZ3MpICsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICIpLCBleHBlY3RlZCAiICsgc2lub24uZm9ybWF0KHRoaXMuZXhwZWN0
ZWRBcmd1bWVudHMpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAo
dGhpcy5leHBlY3RzRXhhY3RBcmdDb3VudCAmJgorICAgICAgICAgICAgICAgICAgICBhcmdzLmxl
bmd0aCAhPSB0aGlzLmV4cGVjdGVkQXJndW1lbnRzLmxlbmd0aCkgeworICAgICAgICAgICAgICAg
ICAgICBzaW5vbi5leHBlY3RhdGlvbi5mYWlsKHRoaXMubWV0aG9kICsgIiByZWNlaXZlZCB0b28g
bWFueSBhcmd1bWVudHMgKCIgKyBzaW5vbi5mb3JtYXQoYXJncykgKworICAgICAgICAgICAgICAg
ICAgICAgICAgIiksIGV4cGVjdGVkICIgKyBzaW5vbi5mb3JtYXQodGhpcy5leHBlY3RlZEFyZ3Vt
ZW50cykpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwLCBsID0gdGhpcy5leHBlY3RlZEFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyBpICs9IDEpIHsK
KworICAgICAgICAgICAgICAgICAgICBpZiAoIXZlcmlmeU1hdGNoZXIodGhpcy5leHBlY3RlZEFy
Z3VtZW50c1tpXSxhcmdzW2ldKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2lub24uZXhw
ZWN0YXRpb24uZmFpbCh0aGlzLm1ldGhvZCArICIgcmVjZWl2ZWQgd3JvbmcgYXJndW1lbnRzICIg
KyBzaW5vbi5mb3JtYXQoYXJncykgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIGRp
ZG4ndCBtYXRjaCAiICsgdGhpcy5leHBlY3RlZEFyZ3VtZW50cy50b1N0cmluZygpKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmICghc2lub24uZGVlcEVx
dWFsKHRoaXMuZXhwZWN0ZWRBcmd1bWVudHNbaV0sIGFyZ3NbaV0pKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzaW5vbi5leHBlY3RhdGlvbi5mYWlsKHRoaXMubWV0aG9kICsgIiByZWNlaXZl
ZCB3cm9uZyBhcmd1bWVudHMgIiArIHNpbm9uLmZvcm1hdChhcmdzKSArCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiwgZXhwZWN0ZWQgIiArIHNpbm9uLmZvcm1hdCh0aGlzLmV4cGVjdGVk
QXJndW1lbnRzKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9LAorCisgICAgICAgICAgICBhbGxvd3NDYWxsOiBmdW5jdGlvbiBhbGxvd3ND
YWxsKHRoaXNWYWx1ZSwgYXJncykgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLm1ldCgpICYm
IHJlY2VpdmVkTWF4Q2FsbHModGhpcykpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICgiZXhwZWN0ZWRU
aGlzIiBpbiB0aGlzICYmIHRoaXMuZXhwZWN0ZWRUaGlzICE9PSB0aGlzVmFsdWUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGlmICghKCJleHBlY3RlZEFyZ3VtZW50cyIgaW4gdGhpcykpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgYXJncyA9IGFyZ3MgfHwgW107CisKKyAgICAgICAgICAgICAgICBpZiAoYXJncy5sZW5n
dGggPCB0aGlzLmV4cGVjdGVkQXJndW1lbnRzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYg
KHRoaXMuZXhwZWN0c0V4YWN0QXJnQ291bnQgJiYKKyAgICAgICAgICAgICAgICAgICAgYXJncy5s
ZW5ndGggIT0gdGhpcy5leHBlY3RlZEFyZ3VtZW50cy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwLCBsID0gdGhpcy5leHBlY3RlZEFyZ3VtZW50cy5sZW5ndGg7IGkgPCBs
OyBpICs9IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF2ZXJpZnlNYXRjaGVyKHRoaXMu
ZXhwZWN0ZWRBcmd1bWVudHNbaV0sYXJnc1tpXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgIGlmICghc2lub24uZGVlcEVxdWFsKHRoaXMuZXhwZWN0ZWRBcmd1bWVudHNbaV0sIGFyZ3Nb
aV0pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIHdpdGhBcmdzOiBmdW5jdGlvbiB3
aXRoQXJncygpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdGVkQXJndW1lbnRzID0gc2xp
Y2UuY2FsbChhcmd1bWVudHMpOworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAg
ICAgICAgfSwKKworICAgICAgICAgICAgd2l0aEV4YWN0QXJnczogZnVuY3Rpb24gd2l0aEV4YWN0
QXJncygpIHsKKyAgICAgICAgICAgICAgICB0aGlzLndpdGhBcmdzLmFwcGx5KHRoaXMsIGFyZ3Vt
ZW50cyk7CisgICAgICAgICAgICAgICAgdGhpcy5leHBlY3RzRXhhY3RBcmdDb3VudCA9IHRydWU7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9LAorCisgICAgICAg
ICAgICBvbjogZnVuY3Rpb24gb24odGhpc1ZhbHVlKSB7CisgICAgICAgICAgICAgICAgdGhpcy5l
eHBlY3RlZFRoaXMgPSB0aGlzVmFsdWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Cisg
ICAgICAgICAgICB9LAorCisgICAgICAgICAgICB0b1N0cmluZzogZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgIHZhciBhcmdzID0gKHRoaXMuZXhwZWN0ZWRBcmd1bWVudHMgfHwgW10pLnNs
aWNlKCk7CisKKyAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZXhwZWN0c0V4YWN0QXJnQ291bnQp
IHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaC5jYWxsKGFyZ3MsICJbLi4uXSIpOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHZhciBjYWxsU3RyID0gc2lub24uc3B5Q2Fs
bC50b1N0cmluZy5jYWxsKHsKKyAgICAgICAgICAgICAgICAgICAgcHJveHk6IHRoaXMubWV0aG9k
IHx8ICJhbm9ueW1vdXMgbW9jayBleHBlY3RhdGlvbiIsCisgICAgICAgICAgICAgICAgICAgIGFy
Z3M6IGFyZ3MKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIHZhciBtZXNz
YWdlID0gY2FsbFN0ci5yZXBsYWNlKCIsIFsuLi4iLCAiWywgLi4uIikgKyAiICIgKworICAgICAg
ICAgICAgICAgICAgICBleHBlY3RlZENhbGxDb3VudEluV29yZHModGhpcyk7CisKKyAgICAgICAg
ICAgICAgICBpZiAodGhpcy5tZXQoKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkV4
cGVjdGF0aW9uIG1ldDogIiArIG1lc3NhZ2U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgcmV0dXJuICJFeHBlY3RlZCAiICsgbWVzc2FnZSArICIgKCIgKworICAgICAgICAg
ICAgICAgICAgICBjYWxsQ291bnRJbldvcmRzKHRoaXMuY2FsbENvdW50KSArICIpIjsKKyAgICAg
ICAgICAgIH0sCisKKyAgICAgICAgICAgIHZlcmlmeTogZnVuY3Rpb24gdmVyaWZ5KCkgeworICAg
ICAgICAgICAgICAgIGlmICghdGhpcy5tZXQoKSkgeworICAgICAgICAgICAgICAgICAgICBzaW5v
bi5leHBlY3RhdGlvbi5mYWlsKHRoaXMudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2lub24uZXhwZWN0YXRpb24ucGFzcyh0aGlzLnRv
U3RyaW5nKCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgcGFzczogZnVuY3Rpb24obWVzc2Fn
ZSkgeworICAgICAgICAgICAgICBzaW5vbi5hc3NlcnQucGFzcyhtZXNzYWdlKTsKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICBmYWlsOiBmdW5jdGlvbiAobWVzc2FnZSkgeworICAgICAgICAg
ICAgICAgIHZhciBleGNlcHRpb24gPSBuZXcgRXJyb3IobWVzc2FnZSk7CisgICAgICAgICAgICAg
ICAgZXhjZXB0aW9uLm5hbWUgPSAiRXhwZWN0YXRpb25FcnJvciI7CisKKyAgICAgICAgICAgICAg
ICB0aHJvdyBleGNlcHRpb247CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfSgpKTsK
KworICAgIHNpbm9uLm1vY2sgPSBtb2NrOworCisgICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICJm
dW5jdGlvbiIgJiYgZGVmaW5lLmFtZCkgeworICAgICAgICBkZWZpbmUoWyJtb2R1bGUiXSwgZnVu
Y3Rpb24obW9kdWxlKSB7IG1vZHVsZS5leHBvcnRzID0gbW9jazsgfSk7CisgICAgfSBlbHNlIGlm
IChjb21tb25KU01vZHVsZSkgeworICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IG1vY2s7CisgICAg
fQorfSh0eXBlb2Ygc2lub24gPT0gIm9iamVjdCIgJiYgc2lub24gfHwgbnVsbCkpOworCit9LHsi
Li4vc2lub24iOjIzLCIuL21hdGNoIjoyOH1dLDMwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxl
eHBvcnRzKXsKKy8qKgorICogQGRlcGVuZCAuLi9zaW5vbi5qcworICogQGRlcGVuZCBjb2xsZWN0
aW9uLmpzCisgKiBAZGVwZW5kIHV0aWwvZmFrZV90aW1lcnMuanMKKyAqIEBkZXBlbmQgdXRpbC9m
YWtlX3NlcnZlcl93aXRoX2Nsb2NrLmpzCisgKi8KKy8qanNsaW50IGVxZXFlcTogZmFsc2UsIG9u
ZXZhcjogZmFsc2UsIHBsdXNwbHVzOiBmYWxzZSovCisvKmdsb2JhbCByZXF1aXJlLCBtb2R1bGUq
LworLyoqCisgKiBNYW5hZ2VzIGZha2UgY29sbGVjdGlvbnMgYXMgd2VsbCBhcyBmYWtlIHV0aWxp
dGllcyBzdWNoIGFzIFNpbm9uJ3MKKyAqIHRpbWVycyBhbmQgZmFrZSBYSFIgaW1wbGVtZW50YXRp
b24gaW4gb25lIGNvbnZlbmllbnQgb2JqZWN0LgorICoKKyAqIEBhdXRob3IgQ2hyaXN0aWFuIEpv
aGFuc2VuIChjaHJpc3RpYW5AY2pvaGFuc2VuLm5vKQorICogQGxpY2Vuc2UgQlNECisgKgorICog
Q29weXJpZ2h0IChjKSAyMDEwLTIwMTMgQ2hyaXN0aWFuIEpvaGFuc2VuCisgKi8KKyJ1c2Ugc3Ry
aWN0IjsKKworaWYgKHR5cGVvZiBtb2R1bGUgIT09ICJ1bmRlZmluZWQiICYmIG1vZHVsZS5leHBv
cnRzICYmIHR5cGVvZiByZXF1aXJlID09ICJmdW5jdGlvbiIpIHsKKyAgICB2YXIgc2lub24gPSBy
ZXF1aXJlKCIuLi9zaW5vbiIpOworICAgIHNpbm9uLmV4dGVuZChzaW5vbiwgcmVxdWlyZSgiLi91
dGlsL2Zha2VfdGltZXJzIikpOworfQorCisoZnVuY3Rpb24gKCkgeworICAgIHZhciBwdXNoID0g
W10ucHVzaDsKKworICAgIGZ1bmN0aW9uIGV4cG9zZVZhbHVlKHNhbmRib3gsIGNvbmZpZywga2V5
LCB2YWx1ZSkgeworICAgICAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoY29uZmlnLmluamVjdEludG8gJiYgIShrZXkgaW4gY29u
ZmlnLmluamVjdEludG8pKSB7CisgICAgICAgICAgICBjb25maWcuaW5qZWN0SW50b1trZXldID0g
dmFsdWU7CisgICAgICAgICAgICBzYW5kYm94LmluamVjdGVkS2V5cy5wdXNoKGtleSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwdXNoLmNhbGwoc2FuZGJveC5hcmdzLCB2YWx1ZSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBwcmVwYXJlU2FuZGJveEZyb21Db25m
aWcoY29uZmlnKSB7CisgICAgICAgIHZhciBzYW5kYm94ID0gc2lub24uY3JlYXRlKHNpbm9uLnNh
bmRib3gpOworCisgICAgICAgIGlmIChjb25maWcudXNlRmFrZVNlcnZlcikgeworICAgICAgICAg
ICAgaWYgKHR5cGVvZiBjb25maWcudXNlRmFrZVNlcnZlciA9PSAib2JqZWN0IikgeworICAgICAg
ICAgICAgICAgIHNhbmRib3guc2VydmVyUHJvdG90eXBlID0gY29uZmlnLnVzZUZha2VTZXJ2ZXI7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNhbmRib3gudXNlRmFrZVNlcnZlcigpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbmZpZy51c2VGYWtlVGltZXJzKSB7CisgICAgICAg
ICAgICBpZiAodHlwZW9mIGNvbmZpZy51c2VGYWtlVGltZXJzID09ICJvYmplY3QiKSB7CisgICAg
ICAgICAgICAgICAgc2FuZGJveC51c2VGYWtlVGltZXJzLmFwcGx5KHNhbmRib3gsIGNvbmZpZy51
c2VGYWtlVGltZXJzKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2Fu
ZGJveC51c2VGYWtlVGltZXJzKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gc2FuZGJveDsKKyAgICB9CisKKyAgICBzaW5vbi5zYW5kYm94ID0gc2lub24uZXh0
ZW5kKHNpbm9uLmNyZWF0ZShzaW5vbi5jb2xsZWN0aW9uKSwgeworICAgICAgICB1c2VGYWtlVGlt
ZXJzOiBmdW5jdGlvbiB1c2VGYWtlVGltZXJzKCkgeworICAgICAgICAgICAgdGhpcy5jbG9jayA9
IHNpbm9uLnVzZUZha2VUaW1lcnMuYXBwbHkoc2lub24sIGFyZ3VtZW50cyk7CisKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzLmFkZCh0aGlzLmNsb2NrKTsKKyAgICAgICAgfSwKKworICAgICAgICBz
ZXJ2ZXJQcm90b3R5cGU6IHNpbm9uLmZha2VTZXJ2ZXIsCisKKyAgICAgICAgdXNlRmFrZVNlcnZl
cjogZnVuY3Rpb24gdXNlRmFrZVNlcnZlcigpIHsKKyAgICAgICAgICAgIHZhciBwcm90byA9IHRo
aXMuc2VydmVyUHJvdG90eXBlIHx8IHNpbm9uLmZha2VTZXJ2ZXI7CisKKyAgICAgICAgICAgIGlm
ICghcHJvdG8gfHwgIXByb3RvLmNyZWF0ZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBudWxs
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlzLnNlcnZlciA9IHByb3RvLmNyZWF0
ZSgpOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkKHRoaXMuc2VydmVyKTsKKyAgICAgICAg
fSwKKworICAgICAgICBpbmplY3Q6IGZ1bmN0aW9uIChvYmopIHsKKyAgICAgICAgICAgIHNpbm9u
LmNvbGxlY3Rpb24uaW5qZWN0LmNhbGwodGhpcywgb2JqKTsKKworICAgICAgICAgICAgaWYgKHRo
aXMuY2xvY2spIHsKKyAgICAgICAgICAgICAgICBvYmouY2xvY2sgPSB0aGlzLmNsb2NrOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGhpcy5zZXJ2ZXIpIHsKKyAgICAgICAgICAg
ICAgICBvYmouc2VydmVyID0gdGhpcy5zZXJ2ZXI7CisgICAgICAgICAgICAgICAgb2JqLnJlcXVl
c3RzID0gdGhpcy5zZXJ2ZXIucmVxdWVzdHM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiBvYmo7CisgICAgICAgIH0sCisKKyAgICAgICAgcmVzdG9yZTogZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgc2lub24uY29sbGVjdGlvbi5yZXN0b3JlLmFwcGx5KHRoaXMsIGFyZ3Vt
ZW50cyk7CisgICAgICAgICAgICB0aGlzLnJlc3RvcmVDb250ZXh0KCk7CisgICAgICAgIH0sCisK
KyAgICAgICAgcmVzdG9yZUNvbnRleHQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGlmICh0
aGlzLmluamVjdGVkS2V5cykgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBqID0g
dGhpcy5pbmplY3RlZEtleXMubGVuZ3RoOyBpIDwgajsgaSsrKSB7CisgICAgICAgICAgICAgICAg
ICAgIGRlbGV0ZSB0aGlzLmluamVjdEludG9bdGhpcy5pbmplY3RlZEtleXNbaV1dOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkS2V5cyA9IFtdOworICAg
ICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24gKGNvbmZp
ZykgeworICAgICAgICAgICAgaWYgKCFjb25maWcpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
c2lub24uY3JlYXRlKHNpbm9uLnNhbmRib3gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgc2FuZGJveCA9IHByZXBhcmVTYW5kYm94RnJvbUNvbmZpZyhjb25maWcpOworICAgICAg
ICAgICAgc2FuZGJveC5hcmdzID0gc2FuZGJveC5hcmdzIHx8IFtdOworICAgICAgICAgICAgc2Fu
ZGJveC5pbmplY3RlZEtleXMgPSBbXTsKKyAgICAgICAgICAgIHNhbmRib3guaW5qZWN0SW50byA9
IGNvbmZpZy5pbmplY3RJbnRvOworICAgICAgICAgICAgdmFyIHByb3AsIHZhbHVlLCBleHBvc2Vk
ID0gc2FuZGJveC5pbmplY3Qoe30pOworCisgICAgICAgICAgICBpZiAoY29uZmlnLnByb3BlcnRp
ZXMpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNvbmZpZy5wcm9wZXJ0
aWVzLmxlbmd0aDsgaSA8IGw7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBwcm9wID0gY29u
ZmlnLnByb3BlcnRpZXNbaV07CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZXhwb3NlZFtw
cm9wXSB8fCBwcm9wID09ICJzYW5kYm94IiAmJiBzYW5kYm94OworICAgICAgICAgICAgICAgICAg
ICBleHBvc2VWYWx1ZShzYW5kYm94LCBjb25maWcsIHByb3AsIHZhbHVlKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGV4cG9zZVZhbHVl
KHNhbmRib3gsIGNvbmZpZywgInNhbmRib3giLCB2YWx1ZSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBzYW5kYm94OworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzaW5v
bi5zYW5kYm94LnVzZUZha2VYTUxIdHRwUmVxdWVzdCA9IHNpbm9uLnNhbmRib3gudXNlRmFrZVNl
cnZlcjsKKworICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAiZnVuY3Rpb24iICYmIGRlZmluZS5h
bWQpIHsKKyAgICAgICAgZGVmaW5lKFsibW9kdWxlIl0sIGZ1bmN0aW9uKG1vZHVsZSkgeyBtb2R1
bGUuZXhwb3J0cyA9IHNpbm9uLnNhbmRib3g7IH0pOworICAgIH0gZWxzZSBpZiAodHlwZW9mIG1v
ZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKKyAgICAgICAgbW9kdWxl
LmV4cG9ydHMgPSBzaW5vbi5zYW5kYm94OworICAgIH0KK30oKSk7CisKK30seyIuLi9zaW5vbiI6
MjMsIi4vdXRpbC9mYWtlX3RpbWVycyI6MzV9XSwzMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUs
ZXhwb3J0cyl7CisvKioKKyAgKiBAZGVwZW5kIC4uL3Npbm9uLmpzCisgICogQGRlcGVuZCBjYWxs
LmpzCisgICovCisvKmpzbGludCBlcWVxZXE6IGZhbHNlLCBvbmV2YXI6IGZhbHNlLCBwbHVzcGx1
czogZmFsc2UqLworLypnbG9iYWwgbW9kdWxlLCByZXF1aXJlLCBzaW5vbiovCisvKioKKyAgKiBT
cHkgZnVuY3Rpb25zCisgICoKKyAgKiBAYXV0aG9yIENocmlzdGlhbiBKb2hhbnNlbiAoY2hyaXN0
aWFuQGNqb2hhbnNlbi5ubykKKyAgKiBAbGljZW5zZSBCU0QKKyAgKgorICAqIENvcHlyaWdodCAo
YykgMjAxMC0yMDEzIENocmlzdGlhbiBKb2hhbnNlbgorICAqLworInVzZSBzdHJpY3QiOworCiso
ZnVuY3Rpb24gKHNpbm9uKSB7CisgICAgdmFyIGNvbW1vbkpTTW9kdWxlID0gdHlwZW9mIG1vZHVs
ZSAhPT0gInVuZGVmaW5lZCIgJiYgbW9kdWxlLmV4cG9ydHMgJiYgdHlwZW9mIHJlcXVpcmUgPT0g
ImZ1bmN0aW9uIjsKKyAgICB2YXIgcHVzaCA9IEFycmF5LnByb3RvdHlwZS5wdXNoOworICAgIHZh
ciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTsKKyAgICB2YXIgY2FsbElkID0gMDsKKwor
ICAgIGlmICghc2lub24gJiYgY29tbW9uSlNNb2R1bGUpIHsKKyAgICAgICAgc2lub24gPSByZXF1
aXJlKCIuLi9zaW5vbiIpOworICAgIH0KKworICAgIGlmICghc2lub24pIHsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNweShvYmplY3QsIHByb3BlcnR5KSB7CisgICAg
ICAgIGlmICghcHJvcGVydHkgJiYgdHlwZW9mIG9iamVjdCA9PSAiZnVuY3Rpb24iKSB7CisgICAg
ICAgICAgICByZXR1cm4gc3B5LmNyZWF0ZShvYmplY3QpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCFvYmplY3QgJiYgIXByb3BlcnR5KSB7CisgICAgICAgICAgICByZXR1cm4gc3B5LmNyZWF0
ZShmdW5jdGlvbiAoKSB7IH0pOworICAgICAgICB9CisKKyAgICAgICAgdmFyIG1ldGhvZCA9IG9i
amVjdFtwcm9wZXJ0eV07CisgICAgICAgIHJldHVybiBzaW5vbi53cmFwTWV0aG9kKG9iamVjdCwg
cHJvcGVydHksIHNweS5jcmVhdGUobWV0aG9kKSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gbWF0
Y2hpbmdGYWtlKGZha2VzLCBhcmdzLCBzdHJpY3QpIHsKKyAgICAgICAgaWYgKCFmYWtlcykgewor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDAs
IGwgPSBmYWtlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChmYWtlc1tp
XS5tYXRjaGVzKGFyZ3MsIHN0cmljdCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFrZXNb
aV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBpbmNy
ZW1lbnRDYWxsQ291bnQoKSB7CisgICAgICAgIHRoaXMuY2FsbGVkID0gdHJ1ZTsKKyAgICAgICAg
dGhpcy5jYWxsQ291bnQgKz0gMTsKKyAgICAgICAgdGhpcy5ub3RDYWxsZWQgPSBmYWxzZTsKKyAg
ICAgICAgdGhpcy5jYWxsZWRPbmNlID0gdGhpcy5jYWxsQ291bnQgPT0gMTsKKyAgICAgICAgdGhp
cy5jYWxsZWRUd2ljZSA9IHRoaXMuY2FsbENvdW50ID09IDI7CisgICAgICAgIHRoaXMuY2FsbGVk
VGhyaWNlID0gdGhpcy5jYWxsQ291bnQgPT0gMzsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjcmVh
dGVDYWxsUHJvcGVydGllcygpIHsKKyAgICAgICAgdGhpcy5maXJzdENhbGwgPSB0aGlzLmdldENh
bGwoMCk7CisgICAgICAgIHRoaXMuc2Vjb25kQ2FsbCA9IHRoaXMuZ2V0Q2FsbCgxKTsKKyAgICAg
ICAgdGhpcy50aGlyZENhbGwgPSB0aGlzLmdldENhbGwoMik7CisgICAgICAgIHRoaXMubGFzdENh
bGwgPSB0aGlzLmdldENhbGwodGhpcy5jYWxsQ291bnQgLSAxKTsKKyAgICB9CisKKyAgICB2YXIg
dmFycyA9ICJhLGIsYyxkLGUsZixnLGgsaSxqLGssbCI7CisgICAgZnVuY3Rpb24gY3JlYXRlUHJv
eHkoZnVuYykgeworICAgICAgICAvLyBSZXRhaW4gdGhlIGZ1bmN0aW9uIGxlbmd0aDoKKyAgICAg
ICAgdmFyIHA7CisgICAgICAgIGlmIChmdW5jLmxlbmd0aCkgeworICAgICAgICAgICAgZXZhbCgi
cCA9IChmdW5jdGlvbiBwcm94eSgiICsgdmFycy5zdWJzdHJpbmcoMCwgZnVuYy5sZW5ndGggKiAy
IC0gMSkgKworICAgICAgICAgICAgICAgICIpIHsgcmV0dXJuIHAuaW52b2tlKGZ1bmMsIHRoaXMs
IHNsaWNlLmNhbGwoYXJndW1lbnRzKSk7IH0pOyIpOworICAgICAgICB9CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgcCA9IGZ1bmN0aW9uIHByb3h5KCkgeworICAgICAgICAgICAgICAgIHJl
dHVybiBwLmludm9rZShmdW5jLCB0aGlzLCBzbGljZS5jYWxsKGFyZ3VtZW50cykpOworICAgICAg
ICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcDsKKyAgICB9CisKKyAgICB2YXIg
dXVpZCA9IDA7CisKKyAgICAvLyBQdWJsaWMgQVBJCisgICAgdmFyIHNweUFwaSA9IHsKKyAgICAg
ICAgcmVzZXQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRoaXMuY2FsbGVkID0gZmFsc2U7
CisgICAgICAgICAgICB0aGlzLm5vdENhbGxlZCA9IHRydWU7CisgICAgICAgICAgICB0aGlzLmNh
bGxlZE9uY2UgPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMuY2FsbGVkVHdpY2UgPSBmYWxzZTsK
KyAgICAgICAgICAgIHRoaXMuY2FsbGVkVGhyaWNlID0gZmFsc2U7CisgICAgICAgICAgICB0aGlz
LmNhbGxDb3VudCA9IDA7CisgICAgICAgICAgICB0aGlzLmZpcnN0Q2FsbCA9IG51bGw7CisgICAg
ICAgICAgICB0aGlzLnNlY29uZENhbGwgPSBudWxsOworICAgICAgICAgICAgdGhpcy50aGlyZENh
bGwgPSBudWxsOworICAgICAgICAgICAgdGhpcy5sYXN0Q2FsbCA9IG51bGw7CisgICAgICAgICAg
ICB0aGlzLmFyZ3MgPSBbXTsKKyAgICAgICAgICAgIHRoaXMucmV0dXJuVmFsdWVzID0gW107Cisg
ICAgICAgICAgICB0aGlzLnRoaXNWYWx1ZXMgPSBbXTsKKyAgICAgICAgICAgIHRoaXMuZXhjZXB0
aW9ucyA9IFtdOworICAgICAgICAgICAgdGhpcy5jYWxsSWRzID0gW107CisgICAgICAgICAgICBp
ZiAodGhpcy5mYWtlcykgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhp
cy5mYWtlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmZha2VzW2ld
LnJlc2V0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LAor
CisgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24gY3JlYXRlKGZ1bmMpIHsKKyAgICAgICAgICAgIHZh
ciBuYW1lOworCisgICAgICAgICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gImZ1bmN0aW9uIikgewor
ICAgICAgICAgICAgICAgIGZ1bmMgPSBmdW5jdGlvbiAoKSB7IH07CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIG5hbWUgPSBzaW5vbi5mdW5jdGlvbk5hbWUoZnVuYyk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBwcm94eSA9IGNyZWF0ZVByb3h5KGZ1bmMp
OworCisgICAgICAgICAgICBzaW5vbi5leHRlbmQocHJveHksIHNweSk7CisgICAgICAgICAgICBk
ZWxldGUgcHJveHkuY3JlYXRlOworICAgICAgICAgICAgc2lub24uZXh0ZW5kKHByb3h5LCBmdW5j
KTsKKworICAgICAgICAgICAgcHJveHkucmVzZXQoKTsKKyAgICAgICAgICAgIHByb3h5LnByb3Rv
dHlwZSA9IGZ1bmMucHJvdG90eXBlOworICAgICAgICAgICAgcHJveHkuZGlzcGxheU5hbWUgPSBu
YW1lIHx8ICJzcHkiOworICAgICAgICAgICAgcHJveHkudG9TdHJpbmcgPSBzaW5vbi5mdW5jdGlv
blRvU3RyaW5nOworICAgICAgICAgICAgcHJveHkuX2NyZWF0ZSA9IHNpbm9uLnNweS5jcmVhdGU7
CisgICAgICAgICAgICBwcm94eS5pZCA9ICJzcHkjIiArIHV1aWQrKzsKKworICAgICAgICAgICAg
cmV0dXJuIHByb3h5OworICAgICAgICB9LAorCisgICAgICAgIGludm9rZTogZnVuY3Rpb24gaW52
b2tlKGZ1bmMsIHRoaXNWYWx1ZSwgYXJncykgeworICAgICAgICAgICAgdmFyIG1hdGNoaW5nID0g
bWF0Y2hpbmdGYWtlKHRoaXMuZmFrZXMsIGFyZ3MpOworICAgICAgICAgICAgdmFyIGV4Y2VwdGlv
biwgcmV0dXJuVmFsdWU7CisKKyAgICAgICAgICAgIGluY3JlbWVudENhbGxDb3VudC5jYWxsKHRo
aXMpOworICAgICAgICAgICAgcHVzaC5jYWxsKHRoaXMudGhpc1ZhbHVlcywgdGhpc1ZhbHVlKTsK
KyAgICAgICAgICAgIHB1c2guY2FsbCh0aGlzLmFyZ3MsIGFyZ3MpOworICAgICAgICAgICAgcHVz
aC5jYWxsKHRoaXMuY2FsbElkcywgY2FsbElkKyspOworCisgICAgICAgICAgICAvLyBNYWtlIGNh
bGwgcHJvcGVydGllcyBhdmFpbGFibGUgZnJvbSB3aXRoaW4gdGhlIHNwaWVkIGZ1bmN0aW9uOgor
ICAgICAgICAgICAgY3JlYXRlQ2FsbFByb3BlcnRpZXMuY2FsbCh0aGlzKTsKKworICAgICAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpZiAobWF0Y2hpbmcpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuVmFsdWUgPSBtYXRjaGluZy5pbnZva2UoZnVuYywgdGhpc1ZhbHVlLCBhcmdz
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXR1cm5W
YWx1ZSA9ICh0aGlzLmZ1bmMgfHwgZnVuYykuYXBwbHkodGhpc1ZhbHVlLCBhcmdzKTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB2YXIgdGhpc0NhbGwgPSB0aGlzLmdldENh
bGwodGhpcy5jYWxsQ291bnQgLSAxKTsKKyAgICAgICAgICAgICAgICBpZiAodGhpc0NhbGwuY2Fs
bGVkV2l0aE5ldygpICYmIHR5cGVvZiByZXR1cm5WYWx1ZSAhPT0gJ29iamVjdCcpIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB0aGlzVmFsdWU7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiA9
IGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1c2guY2FsbCh0aGlzLmV4Y2VwdGlv
bnMsIGV4Y2VwdGlvbik7CisgICAgICAgICAgICBwdXNoLmNhbGwodGhpcy5yZXR1cm5WYWx1ZXMs
IHJldHVyblZhbHVlKTsKKworICAgICAgICAgICAgLy8gTWFrZSByZXR1cm4gdmFsdWUgYW5kIGV4
Y2VwdGlvbiBhdmFpbGFibGUgaW4gdGhlIGNhbGxzOgorICAgICAgICAgICAgY3JlYXRlQ2FsbFBy
b3BlcnRpZXMuY2FsbCh0aGlzKTsKKworICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbiAhPT0gdW5k
ZWZpbmVkKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgZXhjZXB0aW9uOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgICAgIH0sCisKKyAgICAg
ICAgbmFtZWQ6IGZ1bmN0aW9uIG5hbWVkKG5hbWUpIHsKKyAgICAgICAgICAgIHRoaXMuZGlzcGxh
eU5hbWUgPSBuYW1lOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0sCisKKyAg
ICAgICAgZ2V0Q2FsbDogZnVuY3Rpb24gZ2V0Q2FsbChpKSB7CisgICAgICAgICAgICBpZiAoaSA8
IDAgfHwgaSA+PSB0aGlzLmNhbGxDb3VudCkgeworICAgICAgICAgICAgICAgIHJldHVybiBudWxs
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gc2lub24uc3B5Q2FsbCh0aGlz
LCB0aGlzLnRoaXNWYWx1ZXNbaV0sIHRoaXMuYXJnc1tpXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMucmV0dXJuVmFsdWVzW2ldLCB0aGlzLmV4Y2VwdGlvbnNbaV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGxJZHNbaV0pOwor
ICAgICAgICB9LAorCisgICAgICAgIGdldENhbGxzOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICB2YXIgY2FsbHMgPSBbXTsKKyAgICAgICAgICAgIHZhciBpOworCisgICAgICAgICAgICBmb3Ig
KGkgPSAwOyBpIDwgdGhpcy5jYWxsQ291bnQ7IGkrKykgeworICAgICAgICAgICAgICAgIGNhbGxz
LnB1c2godGhpcy5nZXRDYWxsKGkpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIGNhbGxzOworICAgICAgICB9LAorCisgICAgICAgIGNhbGxlZEJlZm9yZTogZnVuY3Rpb24g
Y2FsbGVkQmVmb3JlKHNweUZuKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMuY2FsbGVkKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoIXNweUZuLmNhbGxlZCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gdGhpcy5jYWxsSWRzWzBdIDwgc3B5Rm4u
Y2FsbElkc1tzcHlGbi5jYWxsSWRzLmxlbmd0aCAtIDFdOworICAgICAgICB9LAorCisgICAgICAg
IGNhbGxlZEFmdGVyOiBmdW5jdGlvbiBjYWxsZWRBZnRlcihzcHlGbikgeworICAgICAgICAgICAg
aWYgKCF0aGlzLmNhbGxlZCB8fCAhc3B5Rm4uY2FsbGVkKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gdGhpcy5jYWxs
SWRzW3RoaXMuY2FsbENvdW50IC0gMV0gPiBzcHlGbi5jYWxsSWRzW3NweUZuLmNhbGxDb3VudCAt
IDFdOworICAgICAgICB9LAorCisgICAgICAgIHdpdGhBcmdzOiBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzKTsKKworICAgICAgICAgICAg
aWYgKHRoaXMuZmFrZXMpIHsKKyAgICAgICAgICAgICAgICB2YXIgbWF0Y2ggPSBtYXRjaGluZ0Zh
a2UodGhpcy5mYWtlcywgYXJncywgdHJ1ZSk7CisKKyAgICAgICAgICAgICAgICBpZiAobWF0Y2gp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5mYWtlcyA9IFtdOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgb3JpZ2luYWwgPSB0aGlzOworICAgICAg
ICAgICAgdmFyIGZha2UgPSB0aGlzLl9jcmVhdGUoKTsKKyAgICAgICAgICAgIGZha2UubWF0Y2hp
bmdBZ3VtZW50cyA9IGFyZ3M7CisgICAgICAgICAgICBmYWtlLnBhcmVudCA9IHRoaXM7CisgICAg
ICAgICAgICBwdXNoLmNhbGwodGhpcy5mYWtlcywgZmFrZSk7CisKKyAgICAgICAgICAgIGZha2Uu
d2l0aEFyZ3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFs
LndpdGhBcmdzLmFwcGx5KG9yaWdpbmFsLCBhcmd1bWVudHMpOworICAgICAgICAgICAgfTsKKwor
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmFyZ3MubGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgICAgICAgICBpZiAoZmFrZS5tYXRjaGVzKHRoaXMuYXJnc1tpXSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaW5jcmVtZW50Q2FsbENvdW50LmNhbGwoZmFrZSk7CisgICAgICAgICAg
ICAgICAgICAgIHB1c2guY2FsbChmYWtlLnRoaXNWYWx1ZXMsIHRoaXMudGhpc1ZhbHVlc1tpXSk7
CisgICAgICAgICAgICAgICAgICAgIHB1c2guY2FsbChmYWtlLmFyZ3MsIHRoaXMuYXJnc1tpXSk7
CisgICAgICAgICAgICAgICAgICAgIHB1c2guY2FsbChmYWtlLnJldHVyblZhbHVlcywgdGhpcy5y
ZXR1cm5WYWx1ZXNbaV0pOworICAgICAgICAgICAgICAgICAgICBwdXNoLmNhbGwoZmFrZS5leGNl
cHRpb25zLCB0aGlzLmV4Y2VwdGlvbnNbaV0pOworICAgICAgICAgICAgICAgICAgICBwdXNoLmNh
bGwoZmFrZS5jYWxsSWRzLCB0aGlzLmNhbGxJZHNbaV0pOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGNyZWF0ZUNhbGxQcm9wZXJ0aWVzLmNhbGwoZmFrZSk7
CisKKyAgICAgICAgICAgIHJldHVybiBmYWtlOworICAgICAgICB9LAorCisgICAgICAgIG1hdGNo
ZXM6IGZ1bmN0aW9uIChhcmdzLCBzdHJpY3QpIHsKKyAgICAgICAgICAgIHZhciBtYXJncyA9IHRo
aXMubWF0Y2hpbmdBZ3VtZW50czsKKworICAgICAgICAgICAgaWYgKG1hcmdzLmxlbmd0aCA8PSBh
cmdzLmxlbmd0aCAmJgorICAgICAgICAgICAgICAgIHNpbm9uLmRlZXBFcXVhbChtYXJncywgYXJn
cy5zbGljZSgwLCBtYXJncy5sZW5ndGgpKSkgeworICAgICAgICAgICAgICAgIHJldHVybiAhc3Ry
aWN0IHx8IG1hcmdzLmxlbmd0aCA9PSBhcmdzLmxlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKworICAgICAgICBwcmludGY6IGZ1bmN0aW9uIChmb3JtYXQpIHsKKyAgICAgICAgICAg
IHZhciBzcHkgPSB0aGlzOworICAgICAgICAgICAgdmFyIGFyZ3MgPSBzbGljZS5jYWxsKGFyZ3Vt
ZW50cywgMSk7CisgICAgICAgICAgICB2YXIgZm9ybWF0dGVyOworCisgICAgICAgICAgICByZXR1
cm4gKGZvcm1hdCB8fCAiIikucmVwbGFjZSgvJSguKS9nLCBmdW5jdGlvbiAobWF0Y2gsIHNwZWNp
ZnllcikgeworICAgICAgICAgICAgICAgIGZvcm1hdHRlciA9IHNweUFwaS5mb3JtYXR0ZXJzW3Nw
ZWNpZnllcl07CisKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZvcm1hdHRlciA9PSAiZnVu
Y3Rpb24iKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZXIuY2FsbChudWxs
LCBzcHksIGFyZ3MpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWlzTmFOKHBhcnNlSW50
KHNwZWNpZnllciwgMTApKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2lub24uZm9y
bWF0KGFyZ3Nbc3BlY2lmeWVyIC0gMV0pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIHJldHVybiAiJSIgKyBzcGVjaWZ5ZXI7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fQorICAgIH07CisKKyAgICBmdW5jdGlvbiBkZWxlZ2F0ZVRvQ2FsbHMobWV0aG9kLCBtYXRjaEFu
eSwgYWN0dWFsLCBub3RDYWxsZWQpIHsKKyAgICAgICAgc3B5QXBpW21ldGhvZF0gPSBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMuY2FsbGVkKSB7CisgICAgICAgICAgICAgICAg
aWYgKG5vdENhbGxlZCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm90Q2FsbGVkLmFw
cGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGN1cnJlbnRD
YWxsOworICAgICAgICAgICAgdmFyIG1hdGNoZXMgPSAwOworCisgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMCwgbCA9IHRoaXMuY2FsbENvdW50OyBpIDwgbDsgaSArPSAxKSB7CisgICAgICAgICAg
ICAgICAgY3VycmVudENhbGwgPSB0aGlzLmdldENhbGwoaSk7CisKKyAgICAgICAgICAgICAgICBp
ZiAoY3VycmVudENhbGxbYWN0dWFsIHx8IG1ldGhvZF0uYXBwbHkoY3VycmVudENhbGwsIGFyZ3Vt
ZW50cykpIHsKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcyArPSAxOworCisgICAgICAgICAg
ICAgICAgICAgIGlmIChtYXRjaEFueSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBtYXRjaGVzID09PSB0aGlzLmNhbGxDb3VudDsK
KyAgICAgICAgfTsKKyAgICB9CisKKyAgICBkZWxlZ2F0ZVRvQ2FsbHMoImNhbGxlZE9uIiwgdHJ1
ZSk7CisgICAgZGVsZWdhdGVUb0NhbGxzKCJhbHdheXNDYWxsZWRPbiIsIGZhbHNlLCAiY2FsbGVk
T24iKTsKKyAgICBkZWxlZ2F0ZVRvQ2FsbHMoImNhbGxlZFdpdGgiLCB0cnVlKTsKKyAgICBkZWxl
Z2F0ZVRvQ2FsbHMoImNhbGxlZFdpdGhNYXRjaCIsIHRydWUpOworICAgIGRlbGVnYXRlVG9DYWxs
cygiYWx3YXlzQ2FsbGVkV2l0aCIsIGZhbHNlLCAiY2FsbGVkV2l0aCIpOworICAgIGRlbGVnYXRl
VG9DYWxscygiYWx3YXlzQ2FsbGVkV2l0aE1hdGNoIiwgZmFsc2UsICJjYWxsZWRXaXRoTWF0Y2gi
KTsKKyAgICBkZWxlZ2F0ZVRvQ2FsbHMoImNhbGxlZFdpdGhFeGFjdGx5IiwgdHJ1ZSk7CisgICAg
ZGVsZWdhdGVUb0NhbGxzKCJhbHdheXNDYWxsZWRXaXRoRXhhY3RseSIsIGZhbHNlLCAiY2FsbGVk
V2l0aEV4YWN0bHkiKTsKKyAgICBkZWxlZ2F0ZVRvQ2FsbHMoIm5ldmVyQ2FsbGVkV2l0aCIsIGZh
bHNlLCAibm90Q2FsbGVkV2l0aCIsCisgICAgICAgIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7
IH0pOworICAgIGRlbGVnYXRlVG9DYWxscygibmV2ZXJDYWxsZWRXaXRoTWF0Y2giLCBmYWxzZSwg
Im5vdENhbGxlZFdpdGhNYXRjaCIsCisgICAgICAgIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7
IH0pOworICAgIGRlbGVnYXRlVG9DYWxscygidGhyZXciLCB0cnVlKTsKKyAgICBkZWxlZ2F0ZVRv
Q2FsbHMoImFsd2F5c1RocmV3IiwgZmFsc2UsICJ0aHJldyIpOworICAgIGRlbGVnYXRlVG9DYWxs
cygicmV0dXJuZWQiLCB0cnVlKTsKKyAgICBkZWxlZ2F0ZVRvQ2FsbHMoImFsd2F5c1JldHVybmVk
IiwgZmFsc2UsICJyZXR1cm5lZCIpOworICAgIGRlbGVnYXRlVG9DYWxscygiY2FsbGVkV2l0aE5l
dyIsIHRydWUpOworICAgIGRlbGVnYXRlVG9DYWxscygiYWx3YXlzQ2FsbGVkV2l0aE5ldyIsIGZh
bHNlLCAiY2FsbGVkV2l0aE5ldyIpOworICAgIGRlbGVnYXRlVG9DYWxscygiY2FsbEFyZyIsIGZh
bHNlLCAiY2FsbEFyZ1dpdGgiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJv
cih0aGlzLnRvU3RyaW5nKCkgKyAiIGNhbm5vdCBjYWxsIGFyZyBzaW5jZSBpdCB3YXMgbm90IHll
dCBpbnZva2VkLiIpOworICAgIH0pOworICAgIHNweUFwaS5jYWxsQXJnV2l0aCA9IHNweUFwaS5j
YWxsQXJnOworICAgIGRlbGVnYXRlVG9DYWxscygiY2FsbEFyZ09uIiwgZmFsc2UsICJjYWxsQXJn
T25XaXRoIiwgZnVuY3Rpb24gKCkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy50b1N0
cmluZygpICsgIiBjYW5ub3QgY2FsbCBhcmcgc2luY2UgaXQgd2FzIG5vdCB5ZXQgaW52b2tlZC4i
KTsKKyAgICB9KTsKKyAgICBzcHlBcGkuY2FsbEFyZ09uV2l0aCA9IHNweUFwaS5jYWxsQXJnT247
CisgICAgZGVsZWdhdGVUb0NhbGxzKCJ5aWVsZCIsIGZhbHNlLCAieWllbGQiLCBmdW5jdGlvbiAo
KSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLnRvU3RyaW5nKCkgKyAiIGNhbm5vdCB5
aWVsZCBzaW5jZSBpdCB3YXMgbm90IHlldCBpbnZva2VkLiIpOworICAgIH0pOworICAgIC8vICJp
bnZva2VDYWxsYmFjayIgaXMgYW4gYWxpYXMgZm9yICJ5aWVsZCIgc2luY2UgInlpZWxkIiBpcyBp
bnZhbGlkIGluIHN0cmljdCBtb2RlLgorICAgIHNweUFwaS5pbnZva2VDYWxsYmFjayA9IHNweUFw
aS55aWVsZDsKKyAgICBkZWxlZ2F0ZVRvQ2FsbHMoInlpZWxkT24iLCBmYWxzZSwgInlpZWxkT24i
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLnRvU3RyaW5nKCkg
KyAiIGNhbm5vdCB5aWVsZCBzaW5jZSBpdCB3YXMgbm90IHlldCBpbnZva2VkLiIpOworICAgIH0p
OworICAgIGRlbGVnYXRlVG9DYWxscygieWllbGRUbyIsIGZhbHNlLCAieWllbGRUbyIsIGZ1bmN0
aW9uIChwcm9wZXJ0eSkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy50b1N0cmluZygp
ICsgIiBjYW5ub3QgeWllbGQgdG8gJyIgKyBwcm9wZXJ0eSArCisgICAgICAgICAgICAiJyBzaW5j
ZSBpdCB3YXMgbm90IHlldCBpbnZva2VkLiIpOworICAgIH0pOworICAgIGRlbGVnYXRlVG9DYWxs
cygieWllbGRUb09uIiwgZmFsc2UsICJ5aWVsZFRvT24iLCBmdW5jdGlvbiAocHJvcGVydHkpIHsK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMudG9TdHJpbmcoKSArICIgY2Fubm90IHlpZWxk
IHRvICciICsgcHJvcGVydHkgKworICAgICAgICAgICAgIicgc2luY2UgaXQgd2FzIG5vdCB5ZXQg
aW52b2tlZC4iKTsKKyAgICB9KTsKKworICAgIHNweUFwaS5mb3JtYXR0ZXJzID0geworICAgICAg
ICAiYyI6IGZ1bmN0aW9uIChzcHkpIHsKKyAgICAgICAgICAgIHJldHVybiBzaW5vbi50aW1lc0lu
V29yZHMoc3B5LmNhbGxDb3VudCk7CisgICAgICAgIH0sCisKKyAgICAgICAgIm4iOiBmdW5jdGlv
biAoc3B5KSB7CisgICAgICAgICAgICByZXR1cm4gc3B5LnRvU3RyaW5nKCk7CisgICAgICAgIH0s
CisKKyAgICAgICAgIkMiOiBmdW5jdGlvbiAoc3B5KSB7CisgICAgICAgICAgICB2YXIgY2FsbHMg
PSBbXTsKKworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBzcHkuY2FsbENvdW50OyBp
IDwgbDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIHN0cmluZ2lmaWVkQ2FsbCA9ICIgICAg
IiArIHNweS5nZXRDYWxsKGkpLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgaWYgKC9cbi8u
dGVzdChjYWxsc1tpIC0gMV0pKSB7CisgICAgICAgICAgICAgICAgICAgIHN0cmluZ2lmaWVkQ2Fs
bCA9ICJcbiIgKyBzdHJpbmdpZmllZENhbGw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIHB1c2guY2FsbChjYWxscywgc3RyaW5naWZpZWRDYWxsKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIGNhbGxzLmxlbmd0aCA+IDAgPyAiXG4iICsgY2FsbHMuam9p
bigiXG4iKSA6ICIiOworICAgICAgICB9LAorCisgICAgICAgICJ0IjogZnVuY3Rpb24gKHNweSkg
eworICAgICAgICAgICAgdmFyIG9iamVjdHMgPSBbXTsKKworICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDAsIGwgPSBzcHkuY2FsbENvdW50OyBpIDwgbDsgKytpKSB7CisgICAgICAgICAgICAgICAg
cHVzaC5jYWxsKG9iamVjdHMsIHNpbm9uLmZvcm1hdChzcHkudGhpc1ZhbHVlc1tpXSkpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gb2JqZWN0cy5qb2luKCIsICIpOworICAg
ICAgICB9LAorCisgICAgICAgICIqIjogZnVuY3Rpb24gKHNweSwgYXJncykgeworICAgICAgICAg
ICAgdmFyIGZvcm1hdHRlZCA9IFtdOworCisgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9
IGFyZ3MubGVuZ3RoOyBpIDwgbDsgKytpKSB7CisgICAgICAgICAgICAgICAgcHVzaC5jYWxsKGZv
cm1hdHRlZCwgc2lub24uZm9ybWF0KGFyZ3NbaV0pKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIGZvcm1hdHRlZC5qb2luKCIsICIpOworICAgICAgICB9CisgICAgfTsKKwor
ICAgIHNpbm9uLmV4dGVuZChzcHksIHNweUFwaSk7CisKKyAgICBzcHkuc3B5Q2FsbCA9IHNpbm9u
LnNweUNhbGw7CisgICAgc2lub24uc3B5ID0gc3B5OworCisgICAgaWYgKHR5cGVvZiBkZWZpbmUg
PT09ICJmdW5jdGlvbiIgJiYgZGVmaW5lLmFtZCkgeworICAgICAgICBkZWZpbmUoWyJtb2R1bGUi
XSwgZnVuY3Rpb24obW9kdWxlKSB7IG1vZHVsZS5leHBvcnRzID0gc3B5OyB9KTsKKyAgICB9IGVs
c2UgaWYgKGNvbW1vbkpTTW9kdWxlKSB7CisgICAgICAgIG1vZHVsZS5leHBvcnRzID0gc3B5Owor
ICAgIH0KK30odHlwZW9mIHNpbm9uID09ICJvYmplY3QiICYmIHNpbm9uIHx8IG51bGwpKTsKKwor
fSx7Ii4uL3Npbm9uIjoyM31dLDMyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsK
Ky8qKgorICogQGRlcGVuZCAuLi9zaW5vbi5qcworICogQGRlcGVuZCBzcHkuanMKKyAqIEBkZXBl
bmQgYmVoYXZpb3IuanMKKyAqLworLypqc2xpbnQgZXFlcWVxOiBmYWxzZSwgb25ldmFyOiBmYWxz
ZSovCisvKmdsb2JhbCBtb2R1bGUsIHJlcXVpcmUsIHNpbm9uKi8KKy8qKgorICogU3R1YiBmdW5j
dGlvbnMKKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBKb2hhbnNlbiAoY2hyaXN0aWFuQGNqb2hh
bnNlbi5ubykKKyAqIEBsaWNlbnNlIEJTRAorICoKKyAqIENvcHlyaWdodCAoYykgMjAxMC0yMDEz
IENocmlzdGlhbiBKb2hhbnNlbgorICovCisidXNlIHN0cmljdCI7CisKKyhmdW5jdGlvbiAoc2lu
b24pIHsKKyAgICB2YXIgY29tbW9uSlNNb2R1bGUgPSB0eXBlb2YgbW9kdWxlICE9PSAidW5kZWZp
bmVkIiAmJiBtb2R1bGUuZXhwb3J0cyAmJiB0eXBlb2YgcmVxdWlyZSA9PSAiZnVuY3Rpb24iOwor
CisgICAgaWYgKCFzaW5vbiAmJiBjb21tb25KU01vZHVsZSkgeworICAgICAgICBzaW5vbiA9IHJl
cXVpcmUoIi4uL3Npbm9uIik7CisgICAgfQorCisgICAgaWYgKCFzaW5vbikgeworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgZnVuY3Rpb24gc3R1YihvYmplY3QsIHByb3BlcnR5LCBmdW5j
KSB7CisgICAgICAgIGlmICghIWZ1bmMgJiYgdHlwZW9mIGZ1bmMgIT0gImZ1bmN0aW9uIikgewor
ICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ3VzdG9tIHN0dWIgc2hvdWxkIGJlIGZ1
bmN0aW9uIik7CisgICAgICAgIH0KKworICAgICAgICB2YXIgd3JhcHBlcjsKKworICAgICAgICBp
ZiAoZnVuYykgeworICAgICAgICAgICAgd3JhcHBlciA9IHNpbm9uLnNweSAmJiBzaW5vbi5zcHku
Y3JlYXRlID8gc2lub24uc3B5LmNyZWF0ZShmdW5jKSA6IGZ1bmM7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICB3cmFwcGVyID0gc3R1Yi5jcmVhdGUoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghb2JqZWN0ICYmIHR5cGVvZiBwcm9wZXJ0eSA9PT0gInVuZGVmaW5lZCIpIHsKKyAg
ICAgICAgICAgIHJldHVybiBzaW5vbi5zdHViLmNyZWF0ZSgpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gInVuZGVmaW5lZCIgJiYgdHlwZW9mIG9iamVjdCA9
PSAib2JqZWN0IikgeworICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBvYmplY3QpIHsKKyAg
ICAgICAgICAgICAgICBpZiAodHlwZW9mIG9iamVjdFtwcm9wXSA9PT0gImZ1bmN0aW9uIikgewor
ICAgICAgICAgICAgICAgICAgICBzdHViKG9iamVjdCwgcHJvcCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gb2JqZWN0OworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIHNpbm9uLndyYXBNZXRob2Qob2JqZWN0LCBwcm9wZXJ0eSwgd3Jh
cHBlcik7CisgICAgfQorCisgICAgZnVuY3Rpb24gZ2V0RGVmYXVsdEJlaGF2aW9yKHN0dWIpIHsK
KyAgICAgICAgcmV0dXJuIHN0dWIuZGVmYXVsdEJlaGF2aW9yIHx8IGdldFBhcmVudEJlaGF2aW91
cihzdHViKSB8fCBzaW5vbi5iZWhhdmlvci5jcmVhdGUoc3R1Yik7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gZ2V0UGFyZW50QmVoYXZpb3VyKHN0dWIpIHsKKyAgICAgICAgcmV0dXJuIChzdHViLnBh
cmVudCAmJiBnZXRDdXJyZW50QmVoYXZpb3Ioc3R1Yi5wYXJlbnQpKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBnZXRDdXJyZW50QmVoYXZpb3Ioc3R1YikgeworICAgICAgICB2YXIgYmVoYXZpb3Ig
PSBzdHViLmJlaGF2aW9yc1tzdHViLmNhbGxDb3VudCAtIDFdOworICAgICAgICByZXR1cm4gYmVo
YXZpb3IgJiYgYmVoYXZpb3IuaXNQcmVzZW50KCkgPyBiZWhhdmlvciA6IGdldERlZmF1bHRCZWhh
dmlvcihzdHViKTsKKyAgICB9CisKKyAgICB2YXIgdXVpZCA9IDA7CisKKyAgICBzaW5vbi5leHRl
bmQoc3R1YiwgKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIHByb3RvID0geworICAgICAgICAg
ICAgY3JlYXRlOiBmdW5jdGlvbiBjcmVhdGUoKSB7CisgICAgICAgICAgICAgICAgdmFyIGZ1bmN0
aW9uU3R1YiA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldEN1
cnJlbnRCZWhhdmlvcihmdW5jdGlvblN0dWIpLmludm9rZSh0aGlzLCBhcmd1bWVudHMpOworICAg
ICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBmdW5jdGlvblN0dWIuaWQgPSAic3R1
YiMiICsgdXVpZCsrOworICAgICAgICAgICAgICAgIHZhciBvcmlnID0gZnVuY3Rpb25TdHViOwor
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uU3R1YiA9IHNpbm9uLnNweS5jcmVhdGUoZnVuY3Rpb25T
dHViKTsKKyAgICAgICAgICAgICAgICBmdW5jdGlvblN0dWIuZnVuYyA9IG9yaWc7CisKKyAgICAg
ICAgICAgICAgICBzaW5vbi5leHRlbmQoZnVuY3Rpb25TdHViLCBzdHViKTsKKyAgICAgICAgICAg
ICAgICBmdW5jdGlvblN0dWIuX2NyZWF0ZSA9IHNpbm9uLnN0dWIuY3JlYXRlOworICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uU3R1Yi5kaXNwbGF5TmFtZSA9ICJzdHViIjsKKyAgICAgICAgICAgICAg
ICBmdW5jdGlvblN0dWIudG9TdHJpbmcgPSBzaW5vbi5mdW5jdGlvblRvU3RyaW5nOworCisgICAg
ICAgICAgICAgICAgZnVuY3Rpb25TdHViLmRlZmF1bHRCZWhhdmlvciA9IG51bGw7CisgICAgICAg
ICAgICAgICAgZnVuY3Rpb25TdHViLmJlaGF2aW9ycyA9IFtdOworCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uU3R1YjsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIHJlc2V0
QmVoYXZpb3I6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgaTsKKworICAgICAg
ICAgICAgICAgIHRoaXMuZGVmYXVsdEJlaGF2aW9yID0gbnVsbDsKKyAgICAgICAgICAgICAgICB0
aGlzLmJlaGF2aW9ycyA9IFtdOworCisgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMucmV0dXJu
VmFsdWU7CisgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMucmV0dXJuQXJnQXQ7CisgICAgICAg
ICAgICAgICAgdGhpcy5yZXR1cm5UaGlzID0gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBpZiAo
dGhpcy5mYWtlcykgeworICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5m
YWtlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mYWtlc1tp
XS5yZXNldEJlaGF2aW9yKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBvbkNhbGw6IGZ1bmN0aW9uKGluZGV4
KSB7CisgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmJlaGF2aW9yc1tpbmRleF0pIHsKKyAgICAg
ICAgICAgICAgICAgICAgdGhpcy5iZWhhdmlvcnNbaW5kZXhdID0gc2lub24uYmVoYXZpb3IuY3Jl
YXRlKHRoaXMpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLmJlaGF2aW9yc1tpbmRleF07CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBvbkZp
cnN0Q2FsbDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub25DYWxs
KDApOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgb25TZWNvbmRDYWxsOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vbkNhbGwoMSk7CisgICAgICAgICAg
ICB9LAorCisgICAgICAgICAgICBvblRoaXJkQ2FsbDogZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXMub25DYWxsKDIpOworICAgICAgICAgICAgfQorICAgICAgICB9Owor
CisgICAgICAgIGZvciAodmFyIG1ldGhvZCBpbiBzaW5vbi5iZWhhdmlvcikgeworICAgICAgICAg
ICAgaWYgKHNpbm9uLmJlaGF2aW9yLmhhc093blByb3BlcnR5KG1ldGhvZCkgJiYKKyAgICAgICAg
ICAgICAgICAhcHJvdG8uaGFzT3duUHJvcGVydHkobWV0aG9kKSAmJgorICAgICAgICAgICAgICAg
IG1ldGhvZCAhPSAnY3JlYXRlJyAmJgorICAgICAgICAgICAgICAgIG1ldGhvZCAhPSAnd2l0aEFy
Z3MnICYmCisgICAgICAgICAgICAgICAgbWV0aG9kICE9ICdpbnZva2UnKSB7CisgICAgICAgICAg
ICAgICAgcHJvdG9bbWV0aG9kXSA9IChmdW5jdGlvbihiZWhhdmlvck1ldGhvZCkgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzLmRlZmF1bHRCZWhhdmlvciA9IHRoaXMuZGVmYXVsdEJlaGF2aW9yIHx8IHNpbm9uLmJl
aGF2aW9yLmNyZWF0ZSh0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVs
dEJlaGF2aW9yW2JlaGF2aW9yTWV0aG9kXS5hcHBseSh0aGlzLmRlZmF1bHRCZWhhdmlvciwgYXJn
dW1lbnRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAg
ICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0obWV0aG9kKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcHJvdG87CisgICAgfSgpKSk7CisKKyAgICBz
aW5vbi5zdHViID0gc3R1YjsKKworICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAiZnVuY3Rpb24i
ICYmIGRlZmluZS5hbWQpIHsKKyAgICAgICAgZGVmaW5lKFsibW9kdWxlIl0sIGZ1bmN0aW9uKG1v
ZHVsZSkgeyBtb2R1bGUuZXhwb3J0cyA9IHN0dWI7IH0pOworICAgIH0gZWxzZSBpZiAoY29tbW9u
SlNNb2R1bGUpIHsKKyAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBzdHViOworICAgIH0KK30odHlw
ZW9mIHNpbm9uID09ICJvYmplY3QiICYmIHNpbm9uIHx8IG51bGwpKTsKKworfSx7Ii4uL3Npbm9u
IjoyM31dLDMzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQGRl
cGVuZCAuLi9zaW5vbi5qcworICogQGRlcGVuZCBzdHViLmpzCisgKiBAZGVwZW5kIG1vY2suanMK
KyAqIEBkZXBlbmQgc2FuZGJveC5qcworICovCisvKmpzbGludCBlcWVxZXE6IGZhbHNlLCBvbmV2
YXI6IGZhbHNlLCBmb3JpbjogdHJ1ZSwgcGx1c3BsdXM6IGZhbHNlKi8KKy8qZ2xvYmFsIG1vZHVs
ZSwgcmVxdWlyZSwgc2lub24qLworLyoqCisgKiBUZXN0IGZ1bmN0aW9uLCBzYW5kYm94ZXMgZmFr
ZXMKKyAqCisgKiBAYXV0aG9yIENocmlzdGlhbiBKb2hhbnNlbiAoY2hyaXN0aWFuQGNqb2hhbnNl
bi5ubykKKyAqIEBsaWNlbnNlIEJTRAorICoKKyAqIENvcHlyaWdodCAoYykgMjAxMC0yMDEzIENo
cmlzdGlhbiBKb2hhbnNlbgorICovCisidXNlIHN0cmljdCI7CisKKyhmdW5jdGlvbiAoc2lub24p
IHsKKyAgICB2YXIgY29tbW9uSlNNb2R1bGUgPSB0eXBlb2YgbW9kdWxlICE9PSAidW5kZWZpbmVk
IiAmJiBtb2R1bGUuZXhwb3J0cyAmJiB0eXBlb2YgcmVxdWlyZSA9PSAiZnVuY3Rpb24iOworCisg
ICAgaWYgKCFzaW5vbiAmJiBjb21tb25KU01vZHVsZSkgeworICAgICAgICBzaW5vbiA9IHJlcXVp
cmUoIi4uL3Npbm9uIik7CisgICAgfQorCisgICAgaWYgKCFzaW5vbikgeworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdChjYWxsYmFjaykgeworICAgICAgICB2YXIg
dHlwZSA9IHR5cGVvZiBjYWxsYmFjazsKKworICAgICAgICBpZiAodHlwZSAhPSAiZnVuY3Rpb24i
KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJzaW5vbi50ZXN0IG5lZWRzIHRv
IHdyYXAgYSB0ZXN0IGZ1bmN0aW9uLCBnb3QgIiArIHR5cGUpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2lub25TYW5kYm94ZWRUZXN0KCkgeworICAgICAgICAgICAgdmFyIGNvbmZp
ZyA9IHNpbm9uLmdldENvbmZpZyhzaW5vbi5jb25maWcpOworICAgICAgICAgICAgY29uZmlnLmlu
amVjdEludG8gPSBjb25maWcuaW5qZWN0SW50b1RoaXMgJiYgdGhpcyB8fCBjb25maWcuaW5qZWN0
SW50bzsKKyAgICAgICAgICAgIHZhciBzYW5kYm94ID0gc2lub24uc2FuZGJveC5jcmVhdGUoY29u
ZmlnKTsKKyAgICAgICAgICAgIHZhciBleGNlcHRpb24sIHJlc3VsdDsKKyAgICAgICAgICAgIHZh
ciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKS5jb25jYXQoc2Fu
ZGJveC5hcmdzKTsKKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByZXN1bHQg
PSBjYWxsYmFjay5hcHBseSh0aGlzLCBhcmdzKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgICAgICBleGNlcHRpb24gPSBlOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAodHlwZW9mIGV4Y2VwdGlvbiAhPT0gInVuZGVmaW5lZCIpIHsKKyAgICAgICAgICAg
ICAgICBzYW5kYm94LnJlc3RvcmUoKTsKKyAgICAgICAgICAgICAgICB0aHJvdyBleGNlcHRpb247
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzYW5k
Ym94LnZlcmlmeUFuZFJlc3RvcmUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgfTsKKworICAgICAgICBpZiAoY2FsbGJhY2subGVuZ3RoKSB7
CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gc2lub25Bc3luY1NhbmRib3hlZFRlc3QoY2Fs
bGJhY2spIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2lub25TYW5kYm94ZWRUZXN0LmFwcGx5
KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICB9OworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIHNpbm9uU2FuZGJveGVkVGVzdDsKKyAgICB9CisKKyAgICB0ZXN0LmNvbmZpZyA9IHsK
KyAgICAgICAgaW5qZWN0SW50b1RoaXM6IHRydWUsCisgICAgICAgIGluamVjdEludG86IG51bGws
CisgICAgICAgIHByb3BlcnRpZXM6IFsic3B5IiwgInN0dWIiLCAibW9jayIsICJjbG9jayIsICJz
ZXJ2ZXIiLCAicmVxdWVzdHMiXSwKKyAgICAgICAgdXNlRmFrZVRpbWVyczogdHJ1ZSwKKyAgICAg
ICAgdXNlRmFrZVNlcnZlcjogdHJ1ZQorICAgIH07CisKKyAgICBzaW5vbi50ZXN0ID0gdGVzdDsK
KworICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAiZnVuY3Rpb24iICYmIGRlZmluZS5hbWQpIHsK
KyAgICAgICAgZGVmaW5lKFsibW9kdWxlIl0sIGZ1bmN0aW9uKG1vZHVsZSkgeyBtb2R1bGUuZXhw
b3J0cyA9IHRlc3Q7IH0pOworICAgIH0gZWxzZSBpZiAoY29tbW9uSlNNb2R1bGUpIHsKKyAgICAg
ICAgbW9kdWxlLmV4cG9ydHMgPSB0ZXN0OworICAgIH0KK30odHlwZW9mIHNpbm9uID09ICJvYmpl
Y3QiICYmIHNpbm9uIHx8IG51bGwpKTsKKworfSx7Ii4uL3Npbm9uIjoyM31dLDM0OltmdW5jdGlv
bihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQGRlcGVuZCAuLi9zaW5vbi5qcwor
ICogQGRlcGVuZCB0ZXN0LmpzCisgKi8KKy8qanNsaW50IGVxZXFlcTogZmFsc2UsIG9uZXZhcjog
ZmFsc2UsIGVxZXFlcTogZmFsc2UqLworLypnbG9iYWwgbW9kdWxlLCByZXF1aXJlLCBzaW5vbiov
CisvKioKKyAqIFRlc3QgY2FzZSwgc2FuZGJveGVzIGFsbCB0ZXN0IGZ1bmN0aW9ucworICoKKyAq
IEBhdXRob3IgQ2hyaXN0aWFuIEpvaGFuc2VuIChjaHJpc3RpYW5AY2pvaGFuc2VuLm5vKQorICog
QGxpY2Vuc2UgQlNECisgKgorICogQ29weXJpZ2h0IChjKSAyMDEwLTIwMTMgQ2hyaXN0aWFuIEpv
aGFuc2VuCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworKGZ1bmN0aW9uIChzaW5vbikgeworICAgIHZh
ciBjb21tb25KU01vZHVsZSA9IHR5cGVvZiBtb2R1bGUgIT09ICJ1bmRlZmluZWQiICYmIG1vZHVs
ZS5leHBvcnRzICYmIHR5cGVvZiByZXF1aXJlID09ICJmdW5jdGlvbiI7CisKKyAgICBpZiAoIXNp
bm9uICYmIGNvbW1vbkpTTW9kdWxlKSB7CisgICAgICAgIHNpbm9uID0gcmVxdWlyZSgiLi4vc2lu
b24iKTsKKyAgICB9CisKKyAgICBpZiAoIXNpbm9uIHx8ICFPYmplY3QucHJvdG90eXBlLmhhc093
blByb3BlcnR5KSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjcmVh
dGVUZXN0KHByb3BlcnR5LCBzZXRVcCwgdGVhckRvd24pIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIGlmIChzZXRVcCkgeworICAgICAgICAgICAgICAgIHNldFVw
LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciBleGNlcHRpb24sIHJlc3VsdDsKKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAg
ICByZXN1bHQgPSBwcm9wZXJ0eS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICAgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IGU7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmICh0ZWFyRG93bikgeworICAgICAgICAgICAgICAgIHRlYXJE
b3duLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBleGNlcHRpb247CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH07CisgICAg
fQorCisgICAgZnVuY3Rpb24gdGVzdENhc2UodGVzdHMsIHByZWZpeCkgeworICAgICAgICAvKmpz
bDppZ25vcmUqLworICAgICAgICBpZiAoIXRlc3RzIHx8IHR5cGVvZiB0ZXN0cyAhPSAib2JqZWN0
IikgeworICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigic2lub24udGVzdENhc2UgbmVl
ZHMgYW4gb2JqZWN0IHdpdGggdGVzdCBmdW5jdGlvbnMiKTsKKyAgICAgICAgfQorICAgICAgICAv
KmpzbDplbmQqLworCisgICAgICAgIHByZWZpeCA9IHByZWZpeCB8fCAidGVzdCI7CisgICAgICAg
IHZhciByUHJlZml4ID0gbmV3IFJlZ0V4cCgiXiIgKyBwcmVmaXgpOworICAgICAgICB2YXIgbWV0
aG9kcyA9IHt9LCB0ZXN0TmFtZSwgcHJvcGVydHksIG1ldGhvZDsKKyAgICAgICAgdmFyIHNldFVw
ID0gdGVzdHMuc2V0VXA7CisgICAgICAgIHZhciB0ZWFyRG93biA9IHRlc3RzLnRlYXJEb3duOwor
CisgICAgICAgIGZvciAodGVzdE5hbWUgaW4gdGVzdHMpIHsKKyAgICAgICAgICAgIGlmICh0ZXN0
cy5oYXNPd25Qcm9wZXJ0eSh0ZXN0TmFtZSkpIHsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9
IHRlc3RzW3Rlc3ROYW1lXTsKKworICAgICAgICAgICAgICAgIGlmICgvXihzZXRVcHx0ZWFyRG93
bikkLy50ZXN0KHRlc3ROYW1lKSkgeworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5ID09
ICJmdW5jdGlvbiIgJiYgclByZWZpeC50ZXN0KHRlc3ROYW1lKSkgeworICAgICAgICAgICAgICAg
ICAgICBtZXRob2QgPSBwcm9wZXJ0eTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoc2V0VXAg
fHwgdGVhckRvd24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9IGNyZWF0ZVRl
c3QocHJvcGVydHksIHNldFVwLCB0ZWFyRG93bik7CisgICAgICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgICAgICBtZXRob2RzW3Rlc3ROYW1lXSA9IHNpbm9uLnRlc3QobWV0aG9k
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtZXRob2Rz
W3Rlc3ROYW1lXSA9IHRlc3RzW3Rlc3ROYW1lXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbWV0aG9kczsKKyAgICB9CisKKyAg
ICBzaW5vbi50ZXN0Q2FzZSA9IHRlc3RDYXNlOworCisgICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09
ICJmdW5jdGlvbiIgJiYgZGVmaW5lLmFtZCkgeworICAgICAgICBkZWZpbmUoWyJtb2R1bGUiXSwg
ZnVuY3Rpb24obW9kdWxlKSB7IG1vZHVsZS5leHBvcnRzID0gdGVzdENhc2U7IH0pOworICAgIH0g
ZWxzZSBpZiAoY29tbW9uSlNNb2R1bGUpIHsKKyAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSB0ZXN0
Q2FzZTsKKyAgICB9Cit9KHR5cGVvZiBzaW5vbiA9PSAib2JqZWN0IiAmJiBzaW5vbiB8fCBudWxs
KSk7CisKK30seyIuLi9zaW5vbiI6MjN9XSwzNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhw
b3J0cyl7CisoZnVuY3Rpb24gKGdsb2JhbCl7CisvKmpzbGludCBlcWVxZXE6IGZhbHNlLCBwbHVz
cGx1czogZmFsc2UsIGV2aWw6IHRydWUsIG9uZXZhcjogZmFsc2UsIGJyb3dzZXI6IHRydWUsIGZv
cmluOiBmYWxzZSovCisvKmdsb2JhbCBtb2R1bGUsIHJlcXVpcmUsIHdpbmRvdyovCisvKioKKyAq
IEZha2UgdGltZXIgQVBJCisgKiBzZXRUaW1lb3V0CisgKiBzZXRJbnRlcnZhbAorICogY2xlYXJU
aW1lb3V0CisgKiBjbGVhckludGVydmFsCisgKiB0aWNrCisgKiByZXNldAorICogRGF0ZQorICoK
KyAqIEluc3BpcmVkIGJ5IGpzVW5pdE1vY2tUaW1lT3V0IGZyb20gSnNVbml0CisgKgorICogQGF1
dGhvciBDaHJpc3RpYW4gSm9oYW5zZW4gKGNocmlzdGlhbkBjam9oYW5zZW4ubm8pCisgKiBAbGlj
ZW5zZSBCU0QKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMyBDaHJpc3RpYW4gSm9oYW5z
ZW4KKyAqLworInVzZSBzdHJpY3QiOworCitpZiAodHlwZW9mIHNpbm9uID09ICJ1bmRlZmluZWQi
KSB7CisgICAgdmFyIHNpbm9uID0ge307Cit9CisKKyhmdW5jdGlvbiAoZ2xvYmFsKSB7CisgICAg
Ly8gbm9kZSBleHBlY3RzIHNldFRpbWVvdXQvc2V0SW50ZXJ2YWwgdG8gcmV0dXJuIGEgZm4gb2Jq
ZWN0IHcvIC5yZWYoKS8udW5yZWYoKQorICAgIC8vIGJyb3dzZXJzLCBhIG51bWJlci4KKyAgICAv
LyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2Nqb2hhbnNlbi9TaW5vbi5KUy9wdWxsLzQzNgorICAg
IHZhciB0aW1lb3V0UmVzdWx0ID0gc2V0VGltZW91dChmdW5jdGlvbigpIHt9LCAwKTsKKyAgICB2
YXIgYWRkVGltZXJSZXR1cm5zT2JqZWN0ID0gdHlwZW9mIHRpbWVvdXRSZXN1bHQgPT09ICdvYmpl
Y3QnOworICAgIGNsZWFyVGltZW91dCh0aW1lb3V0UmVzdWx0KTsKKworICAgIHZhciBpZCA9IDE7
CisKKyAgICBmdW5jdGlvbiBhZGRUaW1lcihhcmdzLCByZWN1cnJpbmcpIHsKKyAgICAgICAgaWYg
KGFyZ3MubGVuZ3RoID09PSAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkZ1bmN0
aW9uIHJlcXVpcmVzIGF0IGxlYXN0IDEgcGFyYW1ldGVyIik7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAodHlwZW9mIGFyZ3NbMF0gPT09ICJ1bmRlZmluZWQiKSB7CisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkNhbGxiYWNrIG11c3QgYmUgcHJvdmlkZWQgdG8gdGltZXIgY2FsbHMiKTsK
KyAgICAgICAgfQorCisgICAgICAgIHZhciB0b0lkID0gaWQrKzsKKyAgICAgICAgdmFyIGRlbGF5
ID0gYXJnc1sxXSB8fCAwOworCisgICAgICAgIGlmICghdGhpcy50aW1lb3V0cykgeworICAgICAg
ICAgICAgdGhpcy50aW1lb3V0cyA9IHt9OworICAgICAgICB9CisKKyAgICAgICAgdGhpcy50aW1l
b3V0c1t0b0lkXSA9IHsKKyAgICAgICAgICAgIGlkOiB0b0lkLAorICAgICAgICAgICAgZnVuYzog
YXJnc1swXSwKKyAgICAgICAgICAgIGNhbGxBdDogdGhpcy5ub3cgKyBkZWxheSwKKyAgICAgICAg
ICAgIGludm9rZUFyZ3M6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MsIDIpCisgICAg
ICAgIH07CisKKyAgICAgICAgaWYgKHJlY3VycmluZyA9PT0gdHJ1ZSkgeworICAgICAgICAgICAg
dGhpcy50aW1lb3V0c1t0b0lkXS5pbnRlcnZhbCA9IGRlbGF5OworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGFkZFRpbWVyUmV0dXJuc09iamVjdCkgeworICAgICAgICAgICAgcmV0dXJuIHsKKyAg
ICAgICAgICAgICAgICBpZDogdG9JZCwKKyAgICAgICAgICAgICAgICByZWY6IGZ1bmN0aW9uKCkg
e30sCisgICAgICAgICAgICAgICAgdW5yZWY6IGZ1bmN0aW9uKCkge30KKyAgICAgICAgICAgIH07
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gdG9JZDsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNlVGltZShzdHIpIHsKKyAgICAgICAg
aWYgKCFzdHIpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAg
dmFyIHN0cmluZ3MgPSBzdHIuc3BsaXQoIjoiKTsKKyAgICAgICAgdmFyIGwgPSBzdHJpbmdzLmxl
bmd0aCwgaSA9IGw7CisgICAgICAgIHZhciBtcyA9IDAsIHBhcnNlZDsKKworICAgICAgICBpZiAo
bCA+IDMgfHwgIS9eKFxkXGQ6KXswLDJ9XGRcZD8kLy50ZXN0KHN0cikpIHsKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigidGljayBvbmx5IHVuZGVyc3RhbmRzIG51bWJlcnMgYW5kICdoOm06
cyciKTsKKyAgICAgICAgfQorCisgICAgICAgIHdoaWxlIChpLS0pIHsKKyAgICAgICAgICAgIHBh
cnNlZCA9IHBhcnNlSW50KHN0cmluZ3NbaV0sIDEwKTsKKworICAgICAgICAgICAgaWYgKHBhcnNl
ZCA+PSA2MCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCB0aW1l
ICIgKyBzdHIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtcyArPSBwYXJzZWQgKiBN
YXRoLnBvdyg2MCwgKGwgLSBpIC0gMSkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG1z
ICogMTAwMDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjcmVhdGVPYmplY3Qob2JqZWN0KSB7Cisg
ICAgICAgIHZhciBuZXdPYmplY3Q7CisKKyAgICAgICAgaWYgKE9iamVjdC5jcmVhdGUpIHsKKyAg
ICAgICAgICAgIG5ld09iamVjdCA9IE9iamVjdC5jcmVhdGUob2JqZWN0KTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHZhciBGID0gZnVuY3Rpb24gKCkge307CisgICAgICAgICAgICBG
LnByb3RvdHlwZSA9IG9iamVjdDsKKyAgICAgICAgICAgIG5ld09iamVjdCA9IG5ldyBGKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBuZXdPYmplY3QuRGF0ZS5jbG9jayA9IG5ld09iamVjdDsKKyAg
ICAgICAgcmV0dXJuIG5ld09iamVjdDsKKyAgICB9CisKKyAgICBzaW5vbi5jbG9jayA9IHsKKyAg
ICAgICAgbm93OiAwLAorCisgICAgICAgIGNyZWF0ZTogZnVuY3Rpb24gY3JlYXRlKG5vdykgewor
ICAgICAgICAgICAgdmFyIGNsb2NrID0gY3JlYXRlT2JqZWN0KHRoaXMpOworCisgICAgICAgICAg
ICBpZiAodHlwZW9mIG5vdyA9PSAibnVtYmVyIikgeworICAgICAgICAgICAgICAgIGNsb2NrLm5v
dyA9IG5vdzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCEhbm93ICYmIHR5cGVv
ZiBub3cgPT0gIm9iamVjdCIpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9y
KCJub3cgc2hvdWxkIGJlIG1pbGxpc2Vjb25kcyBzaW5jZSBVTklYIGVwb2NoIik7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBjbG9jazsKKyAgICAgICAgfSwKKworICAgICAg
ICBzZXRUaW1lb3V0OiBmdW5jdGlvbiBzZXRUaW1lb3V0KGNhbGxiYWNrLCB0aW1lb3V0KSB7Cisg
ICAgICAgICAgICByZXR1cm4gYWRkVGltZXIuY2FsbCh0aGlzLCBhcmd1bWVudHMsIGZhbHNlKTsK
KyAgICAgICAgfSwKKworICAgICAgICBjbGVhclRpbWVvdXQ6IGZ1bmN0aW9uIGNsZWFyVGltZW91
dCh0aW1lcklkKSB7CisgICAgICAgICAgICBpZiAoIXRpbWVySWQpIHsKKyAgICAgICAgICAgICAg
ICAvLyBudWxsIGFwcGVhcnMgdG8gYmUgYWxsb3dlZCBpbiBtb3N0IGJyb3dzZXJzLCBhbmQgYXBw
ZWFycyB0byBiZSByZWxpZWQgdXBvbiBieSBzb21lIGxpYnJhcmllcywgbGlrZSBCb290c3RyYXAg
Y2Fyb3VzZWwKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoIXRoaXMudGltZW91dHMpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnRpbWVvdXRz
ID0gW107CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBpbiBOb2RlLCB0aW1lcklkIGlz
IGFuIG9iamVjdCB3aXRoIC5yZWYoKS8udW5yZWYoKSwgYW5kCisgICAgICAgICAgICAvLyBpdHMg
LmlkIGZpZWxkIGlzIHRoZSBhY3R1YWwgdGltZXIgaWQuCisgICAgICAgICAgICBpZiAodHlwZW9m
IHRpbWVySWQgPT09ICdvYmplY3QnKSB7CisgICAgICAgICAgICAgIHRpbWVySWQgPSB0aW1lcklk
LmlkCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodGltZXJJZCBpbiB0aGlzLnRpbWVv
dXRzKSB7CisgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMudGltZW91dHNbdGltZXJJZF07Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgc2V0SW50ZXJ2YWw6IGZ1bmN0aW9u
IHNldEludGVydmFsKGNhbGxiYWNrLCB0aW1lb3V0KSB7CisgICAgICAgICAgICByZXR1cm4gYWRk
VGltZXIuY2FsbCh0aGlzLCBhcmd1bWVudHMsIHRydWUpOworICAgICAgICB9LAorCisgICAgICAg
IGNsZWFySW50ZXJ2YWw6IGZ1bmN0aW9uIGNsZWFySW50ZXJ2YWwodGltZXJJZCkgeworICAgICAg
ICAgICAgdGhpcy5jbGVhclRpbWVvdXQodGltZXJJZCk7CisgICAgICAgIH0sCisKKyAgICAgICAg
c2V0SW1tZWRpYXRlOiBmdW5jdGlvbiBzZXRJbW1lZGlhdGUoY2FsbGJhY2spIHsKKyAgICAgICAg
ICAgIHZhciBwYXNzVGhydUFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVu
dHMsIDEpOworCisgICAgICAgICAgICByZXR1cm4gYWRkVGltZXIuY2FsbCh0aGlzLCBbY2FsbGJh
Y2ssIDBdLmNvbmNhdChwYXNzVGhydUFyZ3MpLCBmYWxzZSk7CisgICAgICAgIH0sCisKKyAgICAg
ICAgY2xlYXJJbW1lZGlhdGU6IGZ1bmN0aW9uIGNsZWFySW1tZWRpYXRlKHRpbWVySWQpIHsKKyAg
ICAgICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0KHRpbWVySWQpOworICAgICAgICB9LAorCisgICAg
ICAgIHRpY2s6IGZ1bmN0aW9uIHRpY2sobXMpIHsKKyAgICAgICAgICAgIG1zID0gdHlwZW9mIG1z
ID09ICJudW1iZXIiID8gbXMgOiBwYXJzZVRpbWUobXMpOworICAgICAgICAgICAgdmFyIHRpY2tG
cm9tID0gdGhpcy5ub3csIHRpY2tUbyA9IHRoaXMubm93ICsgbXMsIHByZXZpb3VzID0gdGhpcy5u
b3c7CisgICAgICAgICAgICB2YXIgdGltZXIgPSB0aGlzLmZpcnN0VGltZXJJblJhbmdlKHRpY2tG
cm9tLCB0aWNrVG8pOworCisgICAgICAgICAgICB2YXIgZmlyc3RFeGNlcHRpb247CisgICAgICAg
ICAgICB3aGlsZSAodGltZXIgJiYgdGlja0Zyb20gPD0gdGlja1RvKSB7CisgICAgICAgICAgICAg
ICAgaWYgKHRoaXMudGltZW91dHNbdGltZXIuaWRdKSB7CisgICAgICAgICAgICAgICAgICAgIHRp
Y2tGcm9tID0gdGhpcy5ub3cgPSB0aW1lci5jYWxsQXQ7CisgICAgICAgICAgICAgICAgICAgIHRy
eSB7CisgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxsVGltZXIodGltZXIpOworICAgICAg
ICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgICAgICAgZmlyc3RF
eGNlcHRpb24gPSBmaXJzdEV4Y2VwdGlvbiB8fCBlOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGltZXIgPSB0aGlzLmZpcnN0VGlt
ZXJJblJhbmdlKHByZXZpb3VzLCB0aWNrVG8pOworICAgICAgICAgICAgICAgIHByZXZpb3VzID0g
dGlja0Zyb207CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMubm93ID0gdGlja1Rv
OworCisgICAgICAgICAgICBpZiAoZmlyc3RFeGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgdGhy
b3cgZmlyc3RFeGNlcHRpb247CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiB0
aGlzLm5vdzsKKyAgICAgICAgfSwKKworICAgICAgICBmaXJzdFRpbWVySW5SYW5nZTogZnVuY3Rp
b24gKGZyb20sIHRvKSB7CisgICAgICAgICAgICB2YXIgdGltZXIsIHNtYWxsZXN0ID0gbnVsbCwg
b3JpZ2luYWxUaW1lcjsKKworICAgICAgICAgICAgZm9yICh2YXIgaWQgaW4gdGhpcy50aW1lb3V0
cykgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpbWVvdXRzLmhhc093blByb3BlcnR5KGlk
KSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1lb3V0c1tpZF0uY2FsbEF0IDwg
ZnJvbSB8fCB0aGlzLnRpbWVvdXRzW2lkXS5jYWxsQXQgPiB0bykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgICAgICBpZiAoc21hbGxlc3QgPT09IG51bGwgfHwgdGhpcy50aW1lb3V0c1tpZF0uY2FsbEF0
IDwgc21hbGxlc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsVGltZXIgPSB0
aGlzLnRpbWVvdXRzW2lkXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsZXN0ID0gdGhp
cy50aW1lb3V0c1tpZF0uY2FsbEF0OworCisgICAgICAgICAgICAgICAgICAgICAgICB0aW1lciA9
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jOiB0aGlzLnRpbWVvdXRzW2lkXS5m
dW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxBdDogdGhpcy50aW1lb3V0c1tp
ZF0uY2FsbEF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVydmFsOiB0aGlzLnRp
bWVvdXRzW2lkXS5pbnRlcnZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogdGhp
cy50aW1lb3V0c1tpZF0uaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52b2tlQXJn
czogdGhpcy50aW1lb3V0c1tpZF0uaW52b2tlQXJncworICAgICAgICAgICAgICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgcmV0dXJuIHRpbWVyIHx8IG51bGw7CisgICAgICAgIH0sCisKKyAg
ICAgICAgY2FsbFRpbWVyOiBmdW5jdGlvbiAodGltZXIpIHsKKyAgICAgICAgICAgIGlmICh0eXBl
b2YgdGltZXIuaW50ZXJ2YWwgPT0gIm51bWJlciIpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnRp
bWVvdXRzW3RpbWVyLmlkXS5jYWxsQXQgKz0gdGltZXIuaW50ZXJ2YWw7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnRpbWVvdXRzW3RpbWVyLmlkXTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpZiAo
dHlwZW9mIHRpbWVyLmZ1bmMgPT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAgICAgICAgICB0
aW1lci5mdW5jLmFwcGx5KG51bGwsIHRpbWVyLmludm9rZUFyZ3MpOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGV2YWwodGltZXIuZnVuYyk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICB2YXIg
ZXhjZXB0aW9uID0gZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCF0aGlzLnRp
bWVvdXRzW3RpbWVyLmlkXSkgeworICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24pIHsKKyAg
ICAgICAgICAgICAgICAgIHRocm93IGV4Y2VwdGlvbjsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZXhj
ZXB0aW9uKSB7CisgICAgICAgICAgICAgIHRocm93IGV4Y2VwdGlvbjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSwKKworICAgICAgICByZXNldDogZnVuY3Rpb24gcmVzZXQoKSB7CisgICAgICAg
ICAgICB0aGlzLnRpbWVvdXRzID0ge307CisgICAgICAgIH0sCisKKyAgICAgICAgRGF0ZTogKGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZhciBOYXRpdmVEYXRlID0gRGF0ZTsKKworICAgICAg
ICAgICAgZnVuY3Rpb24gQ2xvY2tEYXRlKHllYXIsIG1vbnRoLCBkYXRlLCBob3VyLCBtaW51dGUs
IHNlY29uZCwgbXMpIHsKKyAgICAgICAgICAgICAgICAvLyBEZWZlbnNpdmUgYW5kIHZlcmJvc2Ug
dG8gYXZvaWQgcG90ZW50aWFsIGhhcm0gaW4gcGFzc2luZworICAgICAgICAgICAgICAgIC8vIGV4
cGxpY2l0IHVuZGVmaW5lZCB3aGVuIHVzZXIgZG9lcyBub3QgcGFzcyBhcmd1bWVudAorICAgICAg
ICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIGNh
c2UgMDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVEYXRlKENsb2NrRGF0
ZS5jbG9jay5ub3cpOworICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBOYXRpdmVEYXRlKHllYXIpOworICAgICAgICAgICAgICAgIGNhc2UgMjoK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVEYXRlKHllYXIsIG1vbnRoKTsK
KyAgICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
TmF0aXZlRGF0ZSh5ZWFyLCBtb250aCwgZGF0ZSk7CisgICAgICAgICAgICAgICAgY2FzZSA0Ogor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZURhdGUoeWVhciwgbW9udGgsIGRh
dGUsIGhvdXIpOworICAgICAgICAgICAgICAgIGNhc2UgNToKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBOYXRpdmVEYXRlKHllYXIsIG1vbnRoLCBkYXRlLCBob3VyLCBtaW51dGUpOwor
ICAgICAgICAgICAgICAgIGNhc2UgNjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBO
YXRpdmVEYXRlKHllYXIsIG1vbnRoLCBkYXRlLCBob3VyLCBtaW51dGUsIHNlY29uZCk7CisgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRp
dmVEYXRlKHllYXIsIG1vbnRoLCBkYXRlLCBob3VyLCBtaW51dGUsIHNlY29uZCwgbXMpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIG1pcnJv
ckRhdGVQcm9wZXJ0aWVzKENsb2NrRGF0ZSwgTmF0aXZlRGF0ZSk7CisgICAgICAgIH0oKSkKKyAg
ICB9OworCisgICAgZnVuY3Rpb24gbWlycm9yRGF0ZVByb3BlcnRpZXModGFyZ2V0LCBzb3VyY2Up
IHsKKyAgICAgICAgaWYgKHNvdXJjZS5ub3cpIHsKKyAgICAgICAgICAgIHRhcmdldC5ub3cgPSBm
dW5jdGlvbiBub3coKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5jbG9jay5ub3c7
CisgICAgICAgICAgICB9OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVsZXRlIHRh
cmdldC5ub3c7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc291cmNlLnRvU291cmNlKSB7Cisg
ICAgICAgICAgICB0YXJnZXQudG9Tb3VyY2UgPSBmdW5jdGlvbiB0b1NvdXJjZSgpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc291cmNlLnRvU291cmNlKCk7CisgICAgICAgICAgICB9OworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVsZXRlIHRhcmdldC50b1NvdXJjZTsKKyAgICAg
ICAgfQorCisgICAgICAgIHRhcmdldC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkgewor
ICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS50b1N0cmluZygpOworICAgICAgICB9OworCisgICAg
ICAgIHRhcmdldC5wcm90b3R5cGUgPSBzb3VyY2UucHJvdG90eXBlOworICAgICAgICB0YXJnZXQu
cGFyc2UgPSBzb3VyY2UucGFyc2U7CisgICAgICAgIHRhcmdldC5VVEMgPSBzb3VyY2UuVVRDOwor
ICAgICAgICB0YXJnZXQucHJvdG90eXBlLnRvVVRDU3RyaW5nID0gc291cmNlLnByb3RvdHlwZS50
b1VUQ1N0cmluZzsKKworICAgICAgICBmb3IgKHZhciBwcm9wIGluIHNvdXJjZSkgeworICAgICAg
ICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgeworICAgICAgICAgICAgICAg
IHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiB0YXJnZXQ7CisgICAgfQorCisgICAgdmFyIG1ldGhvZHMgPSBbIkRh
dGUiLCAic2V0VGltZW91dCIsICJzZXRJbnRlcnZhbCIsCisgICAgICAgICAgICAgICAgICAgImNs
ZWFyVGltZW91dCIsICJjbGVhckludGVydmFsIl07CisKKyAgICBpZiAodHlwZW9mIGdsb2JhbC5z
ZXRJbW1lZGlhdGUgIT09ICJ1bmRlZmluZWQiKSB7CisgICAgICAgIG1ldGhvZHMucHVzaCgic2V0
SW1tZWRpYXRlIik7CisgICAgfQorCisgICAgaWYgKHR5cGVvZiBnbG9iYWwuY2xlYXJJbW1lZGlh
dGUgIT09ICJ1bmRlZmluZWQiKSB7CisgICAgICAgIG1ldGhvZHMucHVzaCgiY2xlYXJJbW1lZGlh
dGUiKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiByZXN0b3JlKCkgeworICAgICAgICB2YXIgbWV0
aG9kOworCisgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gdGhpcy5tZXRob2RzLmxlbmd0aDsg
aSA8IGw7IGkrKykgeworICAgICAgICAgICAgbWV0aG9kID0gdGhpcy5tZXRob2RzW2ldOworCisg
ICAgICAgICAgICBpZiAoZ2xvYmFsW21ldGhvZF0uaGFkT3duUHJvcGVydHkpIHsKKyAgICAgICAg
ICAgICAgICBnbG9iYWxbbWV0aG9kXSA9IHRoaXNbIl8iICsgbWV0aG9kXTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgZGVs
ZXRlIGdsb2JhbFttZXRob2RdOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBQcmV2ZW50IG11bHRpcGxlIGV4ZWN1
dGlvbnMgd2hpY2ggd2lsbCBjb21wbGV0ZWx5IHJlbW92ZSB0aGVzZSBwcm9wcworICAgICAgICB0
aGlzLm1ldGhvZHMgPSBbXTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdHViR2xvYmFsKG1ldGhv
ZCwgY2xvY2spIHsKKyAgICAgICAgY2xvY2tbbWV0aG9kXS5oYWRPd25Qcm9wZXJ0eSA9IE9iamVj
dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChnbG9iYWwsIG1ldGhvZCk7CisgICAgICAg
IGNsb2NrWyJfIiArIG1ldGhvZF0gPSBnbG9iYWxbbWV0aG9kXTsKKworICAgICAgICBpZiAobWV0
aG9kID09ICJEYXRlIikgeworICAgICAgICAgICAgdmFyIGRhdGUgPSBtaXJyb3JEYXRlUHJvcGVy
dGllcyhjbG9ja1ttZXRob2RdLCBnbG9iYWxbbWV0aG9kXSk7CisgICAgICAgICAgICBnbG9iYWxb
bWV0aG9kXSA9IGRhdGU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBnbG9iYWxbbWV0
aG9kXSA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xvY2tbbWV0aG9k
XS5hcHBseShjbG9jaywgYXJndW1lbnRzKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAg
IGZvciAodmFyIHByb3AgaW4gY2xvY2tbbWV0aG9kXSkgeworICAgICAgICAgICAgICAgIGlmIChj
bG9ja1ttZXRob2RdLmhhc093blByb3BlcnR5KHByb3ApKSB7CisgICAgICAgICAgICAgICAgICAg
IGdsb2JhbFttZXRob2RdW3Byb3BdID0gY2xvY2tbbWV0aG9kXVtwcm9wXTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBnbG9iYWxbbWV0aG9k
XS5jbG9jayA9IGNsb2NrOworICAgIH0KKworICAgIHNpbm9uLnVzZUZha2VUaW1lcnMgPSBmdW5j
dGlvbiB1c2VGYWtlVGltZXJzKG5vdykgeworICAgICAgICB2YXIgY2xvY2sgPSBzaW5vbi5jbG9j
ay5jcmVhdGUobm93KTsKKyAgICAgICAgY2xvY2sucmVzdG9yZSA9IHJlc3RvcmU7CisgICAgICAg
IGNsb2NrLm1ldGhvZHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2Yg
bm93ID09ICJudW1iZXIiID8gMSA6IDApOworCisgICAgICAgIGlmIChjbG9jay5tZXRob2RzLmxl
bmd0aCA9PT0gMCkgeworICAgICAgICAgICAgY2xvY2subWV0aG9kcyA9IG1ldGhvZHM7CisgICAg
ICAgIH0KKworICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNsb2NrLm1ldGhvZHMubGVuZ3Ro
OyBpIDwgbDsgaSsrKSB7CisgICAgICAgICAgICBzdHViR2xvYmFsKGNsb2NrLm1ldGhvZHNbaV0s
IGNsb2NrKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjbG9jazsKKyAgICB9OworfSh0
eXBlb2YgZ2xvYmFsICE9ICJ1bmRlZmluZWQiICYmIHR5cGVvZiBnbG9iYWwgIT09ICJmdW5jdGlv
biIgPyBnbG9iYWwgOiB0aGlzKSk7CisKK3Npbm9uLnRpbWVycyA9IHsKKyAgICBzZXRUaW1lb3V0
OiBzZXRUaW1lb3V0LAorICAgIGNsZWFyVGltZW91dDogY2xlYXJUaW1lb3V0LAorICAgIHNldElt
bWVkaWF0ZTogKHR5cGVvZiBzZXRJbW1lZGlhdGUgIT09ICJ1bmRlZmluZWQiID8gc2V0SW1tZWRp
YXRlIDogdW5kZWZpbmVkKSwKKyAgICBjbGVhckltbWVkaWF0ZTogKHR5cGVvZiBjbGVhckltbWVk
aWF0ZSAhPT0gInVuZGVmaW5lZCIgPyBjbGVhckltbWVkaWF0ZTogdW5kZWZpbmVkKSwKKyAgICBz
ZXRJbnRlcnZhbDogc2V0SW50ZXJ2YWwsCisgICAgY2xlYXJJbnRlcnZhbDogY2xlYXJJbnRlcnZh
bCwKKyAgICBEYXRlOiBEYXRlCit9OworCitpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5l
ZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKKyAgICBtb2R1bGUuZXhwb3J0cyA9IHNpbm9uOworfQor
Cit9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgPyBnbG9iYWwgOiB0
eXBlb2Ygc2VsZiAhPT0gInVuZGVmaW5lZCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gInVu
ZGVmaW5lZCIgPyB3aW5kb3cgOiB7fSkKK30se31dLDM2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVs
ZSxleHBvcnRzKXsKKyhmdW5jdGlvbiAoZ2xvYmFsKXsKKygodHlwZW9mIGRlZmluZSA9PT0gImZ1
bmN0aW9uIiAmJiBkZWZpbmUuYW1kICYmIGZ1bmN0aW9uIChtKSB7CisgICAgZGVmaW5lKCJmb3Jt
YXRpbyIsIFsic2Ftc2FtIl0sIG0pOworfSkgfHwgKHR5cGVvZiBtb2R1bGUgPT09ICJvYmplY3Qi
ICYmIGZ1bmN0aW9uIChtKSB7CisgICAgbW9kdWxlLmV4cG9ydHMgPSBtKHJlcXVpcmUoInNhbXNh
bSIpKTsKK30pIHx8IGZ1bmN0aW9uIChtKSB7IHRoaXMuZm9ybWF0aW8gPSBtKHRoaXMuc2Ftc2Ft
KTsgfQorKShmdW5jdGlvbiAoc2Ftc2FtKSB7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFy
IGZvcm1hdGlvID0geworICAgICAgICBleGNsdWRlQ29uc3RydWN0b3JzOiBbIk9iamVjdCIsIC9e
LiQvXSwKKyAgICAgICAgcXVvdGVTdHJpbmdzOiB0cnVlCisgICAgfTsKKworICAgIHZhciBoYXNP
d24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5OworCisgICAgdmFyIHNwZWNpYWxP
YmplY3RzID0gW107CisgICAgaWYgKHR5cGVvZiBnbG9iYWwgIT09ICJ1bmRlZmluZWQiKSB7Cisg
ICAgICAgIHNwZWNpYWxPYmplY3RzLnB1c2goeyBvYmplY3Q6IGdsb2JhbCwgdmFsdWU6ICJbb2Jq
ZWN0IGdsb2JhbF0iIH0pOworICAgIH0KKyAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAidW5k
ZWZpbmVkIikgeworICAgICAgICBzcGVjaWFsT2JqZWN0cy5wdXNoKHsKKyAgICAgICAgICAgIG9i
amVjdDogZG9jdW1lbnQsCisgICAgICAgICAgICB2YWx1ZTogIltvYmplY3QgSFRNTERvY3VtZW50
XSIKKyAgICAgICAgfSk7CisgICAgfQorICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAidW5kZWZp
bmVkIikgeworICAgICAgICBzcGVjaWFsT2JqZWN0cy5wdXNoKHsgb2JqZWN0OiB3aW5kb3csIHZh
bHVlOiAiW29iamVjdCBXaW5kb3ddIiB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmdW5jdGlv
bk5hbWUoZnVuYykgeworICAgICAgICBpZiAoIWZ1bmMpIHsgcmV0dXJuICIiOyB9CisgICAgICAg
IGlmIChmdW5jLmRpc3BsYXlOYW1lKSB7IHJldHVybiBmdW5jLmRpc3BsYXlOYW1lOyB9CisgICAg
ICAgIGlmIChmdW5jLm5hbWUpIHsgcmV0dXJuIGZ1bmMubmFtZTsgfQorICAgICAgICB2YXIgbWF0
Y2hlcyA9IGZ1bmMudG9TdHJpbmcoKS5tYXRjaCgvZnVuY3Rpb25ccysoW15cKF0rKS9tKTsKKyAg
ICAgICAgcmV0dXJuIChtYXRjaGVzICYmIG1hdGNoZXNbMV0pIHx8ICIiOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGNvbnN0cnVjdG9yTmFtZShmLCBvYmplY3QpIHsKKyAgICAgICAgdmFyIG5hbWUg
PSBmdW5jdGlvbk5hbWUob2JqZWN0ICYmIG9iamVjdC5jb25zdHJ1Y3Rvcik7CisgICAgICAgIHZh
ciBleGNsdWRlcyA9IGYuZXhjbHVkZUNvbnN0cnVjdG9ycyB8fAorICAgICAgICAgICAgICAgIGZv
cm1hdGlvLmV4Y2x1ZGVDb25zdHJ1Y3RvcnMgfHwgW107CisKKyAgICAgICAgdmFyIGksIGw7Cisg
ICAgICAgIGZvciAoaSA9IDAsIGwgPSBleGNsdWRlcy5sZW5ndGg7IGkgPCBsOyArK2kpIHsKKyAg
ICAgICAgICAgIGlmICh0eXBlb2YgZXhjbHVkZXNbaV0gPT09ICJzdHJpbmciICYmIGV4Y2x1ZGVz
W2ldID09PSBuYW1lKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICAgICAg
fSBlbHNlIGlmIChleGNsdWRlc1tpXS50ZXN0ICYmIGV4Y2x1ZGVzW2ldLnRlc3QobmFtZSkpIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gbmFtZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBpc0NpcmN1bGFyKG9i
amVjdCwgb2JqZWN0cykgeworICAgICAgICBpZiAodHlwZW9mIG9iamVjdCAhPT0gIm9iamVjdCIp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZhciBpLCBsOworICAgICAgICBmb3IgKGkgPSAw
LCBsID0gb2JqZWN0cy5sZW5ndGg7IGkgPCBsOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChvYmpl
Y3RzW2ldID09PSBvYmplY3QpIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZnVuY3Rpb24gYXNjaWkoZiwgb2JqZWN0LCBwcm9j
ZXNzZWQsIGluZGVudCkgeworICAgICAgICBpZiAodHlwZW9mIG9iamVjdCA9PT0gInN0cmluZyIp
IHsKKyAgICAgICAgICAgIHZhciBxcyA9IGYucXVvdGVTdHJpbmdzOworICAgICAgICAgICAgdmFy
IHF1b3RlID0gdHlwZW9mIHFzICE9PSAiYm9vbGVhbiIgfHwgcXM7CisgICAgICAgICAgICByZXR1
cm4gcHJvY2Vzc2VkIHx8IHF1b3RlID8gJyInICsgb2JqZWN0ICsgJyInIDogb2JqZWN0OworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICJmdW5jdGlvbiIgJiYgIShv
YmplY3QgaW5zdGFuY2VvZiBSZWdFeHApKSB7CisgICAgICAgICAgICByZXR1cm4gYXNjaWkuZnVu
YyhvYmplY3QpOworICAgICAgICB9CisKKyAgICAgICAgcHJvY2Vzc2VkID0gcHJvY2Vzc2VkIHx8
IFtdOworCisgICAgICAgIGlmIChpc0NpcmN1bGFyKG9iamVjdCwgcHJvY2Vzc2VkKSkgeyByZXR1
cm4gIltDaXJjdWxhcl0iOyB9CisKKyAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJp
bmcuY2FsbChvYmplY3QpID09PSAiW29iamVjdCBBcnJheV0iKSB7CisgICAgICAgICAgICByZXR1
cm4gYXNjaWkuYXJyYXkuY2FsbChmLCBvYmplY3QsIHByb2Nlc3NlZCk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoIW9iamVjdCkgeyByZXR1cm4gU3RyaW5nKCgxL29iamVjdCkgPT09IC1JbmZp
bml0eSA/ICItMCIgOiBvYmplY3QpOyB9CisgICAgICAgIGlmIChzYW1zYW0uaXNFbGVtZW50KG9i
amVjdCkpIHsgcmV0dXJuIGFzY2lpLmVsZW1lbnQob2JqZWN0KTsgfQorCisgICAgICAgIGlmICh0
eXBlb2Ygb2JqZWN0LnRvU3RyaW5nID09PSAiZnVuY3Rpb24iICYmCisgICAgICAgICAgICAgICAg
b2JqZWN0LnRvU3RyaW5nICE9PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKSB7CisgICAgICAg
ICAgICByZXR1cm4gb2JqZWN0LnRvU3RyaW5nKCk7CisgICAgICAgIH0KKworICAgICAgICB2YXIg
aSwgbDsKKyAgICAgICAgZm9yIChpID0gMCwgbCA9IHNwZWNpYWxPYmplY3RzLmxlbmd0aDsgaSA8
IGw7IGkrKykgeworICAgICAgICAgICAgaWYgKG9iamVjdCA9PT0gc3BlY2lhbE9iamVjdHNbaV0u
b2JqZWN0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNwZWNpYWxPYmplY3RzW2ldLnZhbHVl
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGFzY2lpLm9iamVj
dC5jYWxsKGYsIG9iamVjdCwgcHJvY2Vzc2VkLCBpbmRlbnQpOworICAgIH0KKworICAgIGFzY2lp
LmZ1bmMgPSBmdW5jdGlvbiAoZnVuYykgeworICAgICAgICByZXR1cm4gImZ1bmN0aW9uICIgKyBm
dW5jdGlvbk5hbWUoZnVuYykgKyAiKCkge30iOworICAgIH07CisKKyAgICBhc2NpaS5hcnJheSA9
IGZ1bmN0aW9uIChhcnJheSwgcHJvY2Vzc2VkKSB7CisgICAgICAgIHByb2Nlc3NlZCA9IHByb2Nl
c3NlZCB8fCBbXTsKKyAgICAgICAgcHJvY2Vzc2VkLnB1c2goYXJyYXkpOworICAgICAgICB2YXIg
aSwgbCwgcGllY2VzID0gW107CisgICAgICAgIGZvciAoaSA9IDAsIGwgPSBhcnJheS5sZW5ndGg7
IGkgPCBsOyArK2kpIHsKKyAgICAgICAgICAgIHBpZWNlcy5wdXNoKGFzY2lpKHRoaXMsIGFycmF5
W2ldLCBwcm9jZXNzZWQpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gIlsiICsgcGllY2Vz
LmpvaW4oIiwgIikgKyAiXSI7CisgICAgfTsKKworICAgIGFzY2lpLm9iamVjdCA9IGZ1bmN0aW9u
IChvYmplY3QsIHByb2Nlc3NlZCwgaW5kZW50KSB7CisgICAgICAgIHByb2Nlc3NlZCA9IHByb2Nl
c3NlZCB8fCBbXTsKKyAgICAgICAgcHJvY2Vzc2VkLnB1c2gob2JqZWN0KTsKKyAgICAgICAgaW5k
ZW50ID0gaW5kZW50IHx8IDA7CisgICAgICAgIHZhciBwaWVjZXMgPSBbXSwgcHJvcGVydGllcyA9
IHNhbXNhbS5rZXlzKG9iamVjdCkuc29ydCgpOworICAgICAgICB2YXIgbGVuZ3RoID0gMzsKKyAg
ICAgICAgdmFyIHByb3AsIHN0ciwgb2JqLCBpLCBsOworCisgICAgICAgIGZvciAoaSA9IDAsIGwg
PSBwcm9wZXJ0aWVzLmxlbmd0aDsgaSA8IGw7ICsraSkgeworICAgICAgICAgICAgcHJvcCA9IHBy
b3BlcnRpZXNbaV07CisgICAgICAgICAgICBvYmogPSBvYmplY3RbcHJvcF07CisKKyAgICAgICAg
ICAgIGlmIChpc0NpcmN1bGFyKG9iaiwgcHJvY2Vzc2VkKSkgeworICAgICAgICAgICAgICAgIHN0
ciA9ICJbQ2lyY3VsYXJdIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
c3RyID0gYXNjaWkodGhpcywgb2JqLCBwcm9jZXNzZWQsIGluZGVudCArIDIpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBzdHIgPSAoL1xzLy50ZXN0KHByb3ApID8gJyInICsgcHJvcCAr
ICciJyA6IHByb3ApICsgIjogIiArIHN0cjsKKyAgICAgICAgICAgIGxlbmd0aCArPSBzdHIubGVu
Z3RoOworICAgICAgICAgICAgcGllY2VzLnB1c2goc3RyKTsKKyAgICAgICAgfQorCisgICAgICAg
IHZhciBjb25zID0gY29uc3RydWN0b3JOYW1lKHRoaXMsIG9iamVjdCk7CisgICAgICAgIHZhciBw
cmVmaXggPSBjb25zID8gIlsiICsgY29ucyArICJdICIgOiAiIjsKKyAgICAgICAgdmFyIGlzID0g
IiI7CisgICAgICAgIGZvciAoaSA9IDAsIGwgPSBpbmRlbnQ7IGkgPCBsOyArK2kpIHsgaXMgKz0g
IiAiOyB9CisKKyAgICAgICAgaWYgKGxlbmd0aCArIGluZGVudCA+IDgwKSB7CisgICAgICAgICAg
ICByZXR1cm4gcHJlZml4ICsgIntcbiAgIiArIGlzICsgcGllY2VzLmpvaW4oIixcbiAgIiArIGlz
KSArICJcbiIgKworICAgICAgICAgICAgICAgIGlzICsgIn0iOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBwcmVmaXggKyAieyAiICsgcGllY2VzLmpvaW4oIiwgIikgKyAiIH0iOworICAgIH07
CisKKyAgICBhc2NpaS5lbGVtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQpIHsKKyAgICAgICAgdmFy
IHRhZ05hbWUgPSBlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgdmFyIGF0
dHJzID0gZWxlbWVudC5hdHRyaWJ1dGVzLCBhdHRyLCBwYWlycyA9IFtdLCBhdHRyTmFtZSwgaSwg
bCwgdmFsOworCisgICAgICAgIGZvciAoaSA9IDAsIGwgPSBhdHRycy5sZW5ndGg7IGkgPCBsOyAr
K2kpIHsKKyAgICAgICAgICAgIGF0dHIgPSBhdHRycy5pdGVtKGkpOworICAgICAgICAgICAgYXR0
ck5hbWUgPSBhdHRyLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgiaHRtbDoiLCAiIik7
CisgICAgICAgICAgICB2YWwgPSBhdHRyLm5vZGVWYWx1ZTsKKyAgICAgICAgICAgIGlmIChhdHRy
TmFtZSAhPT0gImNvbnRlbnRlZGl0YWJsZSIgfHwgdmFsICE9PSAiaW5oZXJpdCIpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoISF2YWwpIHsgcGFpcnMucHVzaChhdHRyTmFtZSArICI9XCIiICsgdmFs
ICsgIlwiIik7IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZhciBmb3Jt
YXR0ZWQgPSAiPCIgKyB0YWdOYW1lICsgKHBhaXJzLmxlbmd0aCA+IDAgPyAiICIgOiAiIik7Cisg
ICAgICAgIHZhciBjb250ZW50ID0gZWxlbWVudC5pbm5lckhUTUw7CisKKyAgICAgICAgaWYgKGNv
bnRlbnQubGVuZ3RoID4gMjApIHsKKyAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0
cigwLCAyMCkgKyAiWy4uLl0iOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHJlcyA9IGZvcm1h
dHRlZCArIHBhaXJzLmpvaW4oIiAiKSArICI+IiArIGNvbnRlbnQgKworICAgICAgICAgICAgICAg
ICI8LyIgKyB0YWdOYW1lICsgIj4iOworCisgICAgICAgIHJldHVybiByZXMucmVwbGFjZSgvIGNv
bnRlbnRFZGl0YWJsZT0iaW5oZXJpdCIvLCAiIik7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIEZv
cm1hdGlvKG9wdGlvbnMpIHsKKyAgICAgICAgZm9yICh2YXIgb3B0IGluIG9wdGlvbnMpIHsKKyAg
ICAgICAgICAgIHRoaXNbb3B0XSA9IG9wdGlvbnNbb3B0XTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIEZvcm1hdGlvLnByb3RvdHlwZSA9IHsKKyAgICAgICAgZnVuY3Rpb25OYW1lOiBmdW5jdGlv
bk5hbWUsCisKKyAgICAgICAgY29uZmlndXJlOiBmdW5jdGlvbiAob3B0aW9ucykgeworICAgICAg
ICAgICAgcmV0dXJuIG5ldyBGb3JtYXRpbyhvcHRpb25zKTsKKyAgICAgICAgfSwKKworICAgICAg
ICBjb25zdHJ1Y3Rvck5hbWU6IGZ1bmN0aW9uIChvYmplY3QpIHsKKyAgICAgICAgICAgIHJldHVy
biBjb25zdHJ1Y3Rvck5hbWUodGhpcywgb2JqZWN0KTsKKyAgICAgICAgfSwKKworICAgICAgICBh
c2NpaTogZnVuY3Rpb24gKG9iamVjdCwgcHJvY2Vzc2VkLCBpbmRlbnQpIHsKKyAgICAgICAgICAg
IHJldHVybiBhc2NpaSh0aGlzLCBvYmplY3QsIHByb2Nlc3NlZCwgaW5kZW50KTsKKyAgICAgICAg
fQorICAgIH07CisKKyAgICByZXR1cm4gRm9ybWF0aW8ucHJvdG90eXBlOworfSk7CisKK30pLmNh
bGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSAidW5kZWZpbmVkIiA/IGdsb2JhbCA6IHR5cGVvZiBz
ZWxmICE9PSAidW5kZWZpbmVkIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSAidW5kZWZpbmVk
IiA/IHdpbmRvdyA6IHt9KQorfSx7InNhbXNhbSI6Mzd9XSwzNzpbZnVuY3Rpb24ocmVxdWlyZSxt
b2R1bGUsZXhwb3J0cyl7CisoKHR5cGVvZiBkZWZpbmUgPT09ICJmdW5jdGlvbiIgJiYgZGVmaW5l
LmFtZCAmJiBmdW5jdGlvbiAobSkgeyBkZWZpbmUoInNhbXNhbSIsIG0pOyB9KSB8fAorICh0eXBl
b2YgbW9kdWxlID09PSAib2JqZWN0IiAmJgorICAgICAgZnVuY3Rpb24gKG0pIHsgbW9kdWxlLmV4
cG9ydHMgPSBtKCk7IH0pIHx8IC8vIE5vZGUKKyBmdW5jdGlvbiAobSkgeyB0aGlzLnNhbXNhbSA9
IG0oKTsgfSAvLyBCcm93c2VyIGdsb2JhbHMKKykoZnVuY3Rpb24gKCkgeworICAgIHZhciBvID0g
T2JqZWN0LnByb3RvdHlwZTsKKyAgICB2YXIgZGl2ID0gdHlwZW9mIGRvY3VtZW50ICE9PSAidW5k
ZWZpbmVkIiAmJiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKworICAgIGZ1bmN0aW9u
IGlzTmFOKHZhbHVlKSB7CisgICAgICAgIC8vIFVubGlrZSBnbG9iYWwgaXNOYU4sIHRoaXMgYXZv
aWRzIHR5cGUgY29lcmNpb24KKyAgICAgICAgLy8gdHlwZW9mIGNoZWNrIGF2b2lkcyBJRSBob3N0
IG9iamVjdCBpc3N1ZXMsIGhhdCB0aXAgdG8KKyAgICAgICAgLy8gbG9kYXNoCisgICAgICAgIHZh
ciB2YWwgPSB2YWx1ZTsgLy8gSnNMaW50IHRoaW5rcyB2YWx1ZSAhPT0gdmFsdWUgaXMgIndlaXJk
IgorICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAibnVtYmVyIiAmJiB2YWx1ZSAhPT0g
dmFsOworICAgIH0KKworICAgIGZ1bmN0aW9uIGdldENsYXNzKHZhbHVlKSB7CisgICAgICAgIC8v
IFJldHVybnMgdGhlIGludGVybmFsIFtbQ2xhc3NdXSBieSBjYWxsaW5nIE9iamVjdC5wcm90b3R5
cGUudG9TdHJpbmcKKyAgICAgICAgLy8gd2l0aCB0aGUgcHJvdmlkZWQgdmFsdWUgYXMgdGhpcy4g
UmV0dXJuIHZhbHVlIGlzIGEgc3RyaW5nLCBuYW1pbmcgdGhlCisgICAgICAgIC8vIGludGVybmFs
IGNsYXNzLCBlLmcuICJBcnJheSIKKyAgICAgICAgcmV0dXJuIG8udG9TdHJpbmcuY2FsbCh2YWx1
ZSkuc3BsaXQoL1sgXF1dLylbMV07CisgICAgfQorCisgICAgLyoqCisgICAgICogQG5hbWUgc2Ft
c2FtLmlzQXJndW1lbnRzCisgICAgICogQHBhcmFtIE9iamVjdCBvYmplY3QKKyAgICAgKgorICAg
ICAqIFJldHVybnMgYGB0cnVlYGAgaWYgYGBvYmplY3RgYCBpcyBhbiBgYGFyZ3VtZW50c2BgIG9i
amVjdCwKKyAgICAgKiBgYGZhbHNlYGAgb3RoZXJ3aXNlLgorICAgICAqLworICAgIGZ1bmN0aW9u
IGlzQXJndW1lbnRzKG9iamVjdCkgeworICAgICAgICBpZiAoZ2V0Q2xhc3Mob2JqZWN0KSA9PT0g
J0FyZ3VtZW50cycpIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgaWYgKHR5cGVvZiBvYmplY3Qg
IT09ICJvYmplY3QiIHx8IHR5cGVvZiBvYmplY3QubGVuZ3RoICE9PSAibnVtYmVyIiB8fAorICAg
ICAgICAgICAgICAgIGdldENsYXNzKG9iamVjdCkgPT09ICJBcnJheSIpIHsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodHlwZW9mIG9iamVjdC5jYWxs
ZWUgPT0gImZ1bmN0aW9uIikgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB0cnkgeworICAgICAg
ICAgICAgb2JqZWN0W29iamVjdC5sZW5ndGhdID0gNjsKKyAgICAgICAgICAgIGRlbGV0ZSBvYmpl
Y3Rbb2JqZWN0Lmxlbmd0aF07CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICAvKioKKyAgICAgKiBAbmFtZSBzYW1zYW0uaXNFbGVtZW50CisgICAgICogQHBhcmFtIE9iamVj
dCBvYmplY3QKKyAgICAgKgorICAgICAqIFJldHVybnMgYGB0cnVlYGAgaWYgYGBvYmplY3RgYCBp
cyBhIERPTSBlbGVtZW50IG5vZGUuIFVubGlrZQorICAgICAqIFVuZGVyc2NvcmUuanMvbG9kYXNo
LCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGBgZmFsc2VgYCBpZiBgYG9iamVjdGBgCisgICAg
ICogaXMgYW4gKmVsZW1lbnQtbGlrZSogb2JqZWN0LCBpLmUuIGEgcmVndWxhciBvYmplY3Qgd2l0
aCBhIGBgbm9kZVR5cGVgYAorICAgICAqIHByb3BlcnR5IHRoYXQgaG9sZHMgdGhlIHZhbHVlIGBg
MWBgLgorICAgICAqLworICAgIGZ1bmN0aW9uIGlzRWxlbWVudChvYmplY3QpIHsKKyAgICAgICAg
aWYgKCFvYmplY3QgfHwgb2JqZWN0Lm5vZGVUeXBlICE9PSAxIHx8ICFkaXYpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBvYmplY3QuYXBwZW5kQ2hpbGQoZGl2
KTsKKyAgICAgICAgICAgIG9iamVjdC5yZW1vdmVDaGlsZChkaXYpOworICAgICAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQG5hbWUgc2Ftc2FtLmtleXMKKyAg
ICAgKiBAcGFyYW0gT2JqZWN0IG9iamVjdAorICAgICAqCisgICAgICogUmV0dXJuIGFuIGFycmF5
IG9mIG93biBwcm9wZXJ0eSBuYW1lcy4KKyAgICAgKi8KKyAgICBmdW5jdGlvbiBrZXlzKG9iamVj
dCkgeworICAgICAgICB2YXIga3MgPSBbXSwgcHJvcDsKKyAgICAgICAgZm9yIChwcm9wIGluIG9i
amVjdCkgeworICAgICAgICAgICAgaWYgKG8uaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHBy
b3ApKSB7IGtzLnB1c2gocHJvcCk7IH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4ga3M7Cisg
ICAgfQorCisgICAgLyoqCisgICAgICogQG5hbWUgc2Ftc2FtLmlzRGF0ZQorICAgICAqIEBwYXJh
bSBPYmplY3QgdmFsdWUKKyAgICAgKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgb2JqZWN0
IGlzIGEgYGBEYXRlYGAsIG9yICpkYXRlLWxpa2UqLiBEdWNrIHR5cGluZworICAgICAqIG9mIGRh
dGUgb2JqZWN0cyB3b3JrIGJ5IGNoZWNraW5nIHRoYXQgdGhlIG9iamVjdCBoYXMgYSBgYGdldFRp
bWVgYAorICAgICAqIGZ1bmN0aW9uIHdob3NlIHJldHVybiB2YWx1ZSBlcXVhbHMgdGhlIHJldHVy
biB2YWx1ZSBmcm9tIHRoZSBvYmplY3QncworICAgICAqIGBgdmFsdWVPZmBgLgorICAgICAqLwor
ICAgIGZ1bmN0aW9uIGlzRGF0ZSh2YWx1ZSkgeworICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVl
LmdldFRpbWUgPT0gImZ1bmN0aW9uIiAmJgorICAgICAgICAgICAgdmFsdWUuZ2V0VGltZSgpID09
IHZhbHVlLnZhbHVlT2YoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAbmFtZSBzYW1zYW0u
aXNOZWdaZXJvCisgICAgICogQHBhcmFtIE9iamVjdCB2YWx1ZQorICAgICAqCisgICAgICogUmV0
dXJucyBgYHRydWVgYCBpZiBgYHZhbHVlYGAgaXMgYGAtMGBgLgorICAgICAqLworICAgIGZ1bmN0
aW9uIGlzTmVnWmVybyh2YWx1ZSkgeworICAgICAgICByZXR1cm4gdmFsdWUgPT09IDAgJiYgMSAv
IHZhbHVlID09PSAtSW5maW5pdHk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQG5hbWUgc2Ft
c2FtLmVxdWFsCisgICAgICogQHBhcmFtIE9iamVjdCBvYmoxCisgICAgICogQHBhcmFtIE9iamVj
dCBvYmoyCisgICAgICoKKyAgICAgKiBSZXR1cm5zIGBgdHJ1ZWBgIGlmIHR3byBvYmplY3RzIGFy
ZSBzdHJpY3RseSBlcXVhbC4gQ29tcGFyZWQgdG8KKyAgICAgKiBgYD09PWBgIHRoZXJlIGFyZSB0
d28gZXhjZXB0aW9uczoKKyAgICAgKgorICAgICAqICAgLSBOYU4gaXMgY29uc2lkZXJlZCBlcXVh
bCB0byBOYU4KKyAgICAgKiAgIC0gLTAgYW5kICswIGFyZSBub3QgY29uc2lkZXJlZCBlcXVhbAor
ICAgICAqLworICAgIGZ1bmN0aW9uIGlkZW50aWNhbChvYmoxLCBvYmoyKSB7CisgICAgICAgIGlm
IChvYmoxID09PSBvYmoyIHx8IChpc05hTihvYmoxKSAmJiBpc05hTihvYmoyKSkpIHsKKyAgICAg
ICAgICAgIHJldHVybiBvYmoxICE9PSAwIHx8IGlzTmVnWmVybyhvYmoxKSA9PT0gaXNOZWdaZXJv
KG9iajIpOworICAgICAgICB9CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBAbmFtZSBzYW1z
YW0uZGVlcEVxdWFsCisgICAgICogQHBhcmFtIE9iamVjdCBvYmoxCisgICAgICogQHBhcmFtIE9i
amVjdCBvYmoyCisgICAgICoKKyAgICAgKiBEZWVwIGVxdWFsIGNvbXBhcmlzb24uIFR3byB2YWx1
ZXMgYXJlICJkZWVwIGVxdWFsIiBpZjoKKyAgICAgKgorICAgICAqICAgLSBUaGV5IGFyZSBlcXVh
bCwgYWNjb3JkaW5nIHRvIHNhbXNhbS5pZGVudGljYWwKKyAgICAgKiAgIC0gVGhleSBhcmUgYm90
aCBkYXRlIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSBzYW1lIHRpbWUKKyAgICAgKiAgIC0gVGhl
eSBhcmUgYm90aCBhcnJheXMgY29udGFpbmluZyBlbGVtZW50cyB0aGF0IGFyZSBhbGwgZGVlcEVx
dWFsCisgICAgICogICAtIFRoZXkgYXJlIG9iamVjdHMgd2l0aCB0aGUgc2FtZSBzZXQgb2YgcHJv
cGVydGllcywgYW5kIGVhY2ggcHJvcGVydHkKKyAgICAgKiAgICAgaW4gYGBvYmoxYGAgaXMgZGVl
cEVxdWFsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IGluIGBgb2JqMmBgCisgICAgICoK
KyAgICAgKiBTdXBwb3J0cyBjeWNsaWMgb2JqZWN0cy4KKyAgICAgKi8KKyAgICBmdW5jdGlvbiBk
ZWVwRXF1YWxDeWNsaWMob2JqMSwgb2JqMikgeworCisgICAgICAgIC8vIHVzZWQgZm9yIGN5Y2xp
YyBjb21wYXJpc29uCisgICAgICAgIC8vIGNvbnRhaW4gYWxyZWFkeSB2aXNpdGVkIG9iamVjdHMK
KyAgICAgICAgdmFyIG9iamVjdHMxID0gW10sCisgICAgICAgICAgICBvYmplY3RzMiA9IFtdLAor
ICAgICAgICAvLyBjb250YWluIHBhdGhlcyAocG9zaXRpb24gaW4gdGhlIG9iamVjdCBzdHJ1Y3R1
cmUpCisgICAgICAgIC8vIG9mIHRoZSBhbHJlYWR5IHZpc2l0ZWQgb2JqZWN0cworICAgICAgICAv
LyBpbmRleGVzIHNhbWUgYXMgaW4gb2JqZWN0cyBhcnJheXMKKyAgICAgICAgICAgIHBhdGhzMSA9
IFtdLAorICAgICAgICAgICAgcGF0aHMyID0gW10sCisgICAgICAgIC8vIGNvbnRhaW5zIGNvbWJp
bmF0aW9ucyBvZiBhbHJlYWR5IGNvbXBhcmVkIG9iamVjdHMKKyAgICAgICAgLy8gaW4gdGhlIG1h
bm5lcjogeyAiJDFbJ3JlZiddJDJbJ3JlZiddIjogdHJ1ZSB9CisgICAgICAgICAgICBjb21wYXJl
ZCA9IHt9OworCisgICAgICAgIC8qKgorICAgICAgICAgKiB1c2VkIHRvIGNoZWNrLCBpZiB0aGUg
dmFsdWUgb2YgYSBwcm9wZXJ0eSBpcyBhbiBvYmplY3QKKyAgICAgICAgICogKGN5Y2xpYyBsb2dp
YyBpcyBvbmx5IG5lZWRlZCBmb3Igb2JqZWN0cykKKyAgICAgICAgICogb25seSBuZWVkZWQgZm9y
IGN5Y2xpYyBsb2dpYworICAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gaXNPYmplY3QodmFs
dWUpIHsKKworICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFs
dWUgIT09IG51bGwgJiYKKyAgICAgICAgICAgICAgICAgICAgISh2YWx1ZSBpbnN0YW5jZW9mIEJv
b2xlYW4pICYmCisgICAgICAgICAgICAgICAgICAgICEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSAg
ICAmJgorICAgICAgICAgICAgICAgICAgICAhKHZhbHVlIGluc3RhbmNlb2YgTnVtYmVyKSAgJiYK
KyAgICAgICAgICAgICAgICAgICAgISh2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkgICYmCisgICAg
ICAgICAgICAgICAgICAgICEodmFsdWUgaW5zdGFuY2VvZiBTdHJpbmcpKSB7CisKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIHJldHVybnMgdGhl
IGluZGV4IG9mIHRoZSBnaXZlbiBvYmplY3QgaW4gdGhlCisgICAgICAgICAqIGdpdmVuIG9iamVj
dHMgYXJyYXksIC0xIGlmIG5vdCBjb250YWluZWQKKyAgICAgICAgICogb25seSBuZWVkZWQgZm9y
IGN5Y2xpYyBsb2dpYworICAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gZ2V0SW5kZXgob2Jq
ZWN0cywgb2JqKSB7CisKKyAgICAgICAgICAgIHZhciBpOworICAgICAgICAgICAgZm9yIChpID0g
MDsgaSA8IG9iamVjdHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAob2JqZWN0
c1tpXSA9PT0gb2JqKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gZG9lcyB0aGUgcmVjdXJzaW9uIGZvciB0aGUgZGVlcCBlcXVhbCBj
aGVjaworICAgICAgICByZXR1cm4gKGZ1bmN0aW9uIGRlZXBFcXVhbChvYmoxLCBvYmoyLCBwYXRo
MSwgcGF0aDIpIHsKKyAgICAgICAgICAgIHZhciB0eXBlMSA9IHR5cGVvZiBvYmoxOworICAgICAg
ICAgICAgdmFyIHR5cGUyID0gdHlwZW9mIG9iajI7CisKKyAgICAgICAgICAgIC8vID09IG51bGwg
YWxzbyBtYXRjaGVzIHVuZGVmaW5lZAorICAgICAgICAgICAgaWYgKG9iajEgPT09IG9iajIgfHwK
KyAgICAgICAgICAgICAgICAgICAgaXNOYU4ob2JqMSkgfHwgaXNOYU4ob2JqMikgfHwKKyAgICAg
ICAgICAgICAgICAgICAgb2JqMSA9PSBudWxsIHx8IG9iajIgPT0gbnVsbCB8fAorICAgICAgICAg
ICAgICAgICAgICB0eXBlMSAhPT0gIm9iamVjdCIgfHwgdHlwZTIgIT09ICJvYmplY3QiKSB7CisK
KyAgICAgICAgICAgICAgICByZXR1cm4gaWRlbnRpY2FsKG9iajEsIG9iajIpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBFbGVtZW50cyBhcmUgb25seSBlcXVhbCBpZiBpZGVudGlj
YWwoZXhwZWN0ZWQsIGFjdHVhbCkKKyAgICAgICAgICAgIGlmIChpc0VsZW1lbnQob2JqMSkgfHwg
aXNFbGVtZW50KG9iajIpKSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgICAgICAgICB2YXIgaXNE
YXRlMSA9IGlzRGF0ZShvYmoxKSwgaXNEYXRlMiA9IGlzRGF0ZShvYmoyKTsKKyAgICAgICAgICAg
IGlmIChpc0RhdGUxIHx8IGlzRGF0ZTIpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlzRGF0ZTEg
fHwgIWlzRGF0ZTIgfHwgb2JqMS5nZXRUaW1lKCkgIT09IG9iajIuZ2V0VGltZSgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChvYmoxIGluc3RhbmNlb2YgUmVnRXhwICYmIG9iajIg
aW5zdGFuY2VvZiBSZWdFeHApIHsKKyAgICAgICAgICAgICAgICBpZiAob2JqMS50b1N0cmluZygp
ICE9PSBvYmoyLnRvU3RyaW5nKCkpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciBjbGFzczEgPSBnZXRDbGFzcyhvYmoxKTsKKyAgICAgICAgICAgIHZh
ciBjbGFzczIgPSBnZXRDbGFzcyhvYmoyKTsKKyAgICAgICAgICAgIHZhciBrZXlzMSA9IGtleXMo
b2JqMSk7CisgICAgICAgICAgICB2YXIga2V5czIgPSBrZXlzKG9iajIpOworCisgICAgICAgICAg
ICBpZiAoaXNBcmd1bWVudHMob2JqMSkgfHwgaXNBcmd1bWVudHMob2JqMikpIHsKKyAgICAgICAg
ICAgICAgICBpZiAob2JqMS5sZW5ndGggIT09IG9iajIubGVuZ3RoKSB7IHJldHVybiBmYWxzZTsg
fQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZTEgIT09IHR5
cGUyIHx8IGNsYXNzMSAhPT0gY2xhc3MyIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBrZXlz
MS5sZW5ndGggIT09IGtleXMyLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIga2V5LCBpLCBsLAorICAgICAgICAgICAgICAgIC8vIGZvbGxvd2luZyB2YXJzIGFyZSB1c2Vk
IGZvciB0aGUgY3ljbGljIGxvZ2ljCisgICAgICAgICAgICAgICAgdmFsdWUxLCB2YWx1ZTIsCisg
ICAgICAgICAgICAgICAgaXNPYmplY3QxLCBpc09iamVjdDIsCisgICAgICAgICAgICAgICAgaW5k
ZXgxLCBpbmRleDIsCisgICAgICAgICAgICAgICAgbmV3UGF0aDEsIG5ld1BhdGgyOworCisgICAg
ICAgICAgICBmb3IgKGkgPSAwLCBsID0ga2V5czEubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAg
ICAgICAgICAgICAga2V5ID0ga2V5czFbaV07CisgICAgICAgICAgICAgICAgaWYgKCFvLmhhc093
blByb3BlcnR5LmNhbGwob2JqMiwga2V5KSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gU3RhcnQgb2Yg
dGhlIGN5Y2xpYyBsb2dpYworCisgICAgICAgICAgICAgICAgdmFsdWUxID0gb2JqMVtrZXldOwor
ICAgICAgICAgICAgICAgIHZhbHVlMiA9IG9iajJba2V5XTsKKworICAgICAgICAgICAgICAgIGlz
T2JqZWN0MSA9IGlzT2JqZWN0KHZhbHVlMSk7CisgICAgICAgICAgICAgICAgaXNPYmplY3QyID0g
aXNPYmplY3QodmFsdWUyKTsKKworICAgICAgICAgICAgICAgIC8vIGRldGVybWluZSwgaWYgdGhl
IG9iamVjdHMgd2VyZSBhbHJlYWR5IHZpc2l0ZWQKKyAgICAgICAgICAgICAgICAvLyAoaXQncyBm
YXN0ZXIgdG8gY2hlY2sgZm9yIGlzT2JqZWN0IGZpcnN0LCB0aGFuIHRvCisgICAgICAgICAgICAg
ICAgLy8gZ2V0IC0xIGZyb20gZ2V0SW5kZXggZm9yIG5vbiBvYmplY3RzKQorICAgICAgICAgICAg
ICAgIGluZGV4MSA9IGlzT2JqZWN0MSA/IGdldEluZGV4KG9iamVjdHMxLCB2YWx1ZTEpIDogLTE7
CisgICAgICAgICAgICAgICAgaW5kZXgyID0gaXNPYmplY3QyID8gZ2V0SW5kZXgob2JqZWN0czIs
IHZhbHVlMikgOiAtMTsKKworICAgICAgICAgICAgICAgIC8vIGRldGVybWluZSB0aGUgbmV3IHBh
dGhlcyBvZiB0aGUgb2JqZWN0cworICAgICAgICAgICAgICAgIC8vIC0gZm9yIG5vbiBjeWNsaWMg
b2JqZWN0cyB0aGUgY3VycmVudCBwYXRoIHdpbGwgYmUgZXh0ZW5kZWQKKyAgICAgICAgICAgICAg
ICAvLyAgIGJ5IGN1cnJlbnQgcHJvcGVydHkgbmFtZQorICAgICAgICAgICAgICAgIC8vIC0gZm9y
IGN5Y2xpYyBvYmplY3RzIHRoZSBzdG9yZWQgcGF0aCBpcyB0YWtlbgorICAgICAgICAgICAgICAg
IG5ld1BhdGgxID0gaW5kZXgxICE9PSAtMQorICAgICAgICAgICAgICAgICAgICA/IHBhdGhzMVtp
bmRleDFdCisgICAgICAgICAgICAgICAgICAgIDogcGF0aDEgKyAnWycgKyBKU09OLnN0cmluZ2lm
eShrZXkpICsgJ10nOworICAgICAgICAgICAgICAgIG5ld1BhdGgyID0gaW5kZXgyICE9PSAtMQor
ICAgICAgICAgICAgICAgICAgICA/IHBhdGhzMltpbmRleDJdCisgICAgICAgICAgICAgICAgICAg
IDogcGF0aDIgKyAnWycgKyBKU09OLnN0cmluZ2lmeShrZXkpICsgJ10nOworCisgICAgICAgICAg
ICAgICAgLy8gc3RvcCByZWN1cnNpb24gaWYgY3VycmVudCBvYmplY3RzIGFyZSBhbHJlYWR5IGNv
bXBhcmVkCisgICAgICAgICAgICAgICAgaWYgKGNvbXBhcmVkW25ld1BhdGgxICsgbmV3UGF0aDJd
KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIC8vIHJlbWVtYmVyIHRoZSBjdXJyZW50IG9iamVjdHMgYW5kIHRo
ZWlyIHBhdGhlcworICAgICAgICAgICAgICAgIGlmIChpbmRleDEgPT09IC0xICYmIGlzT2JqZWN0
MSkgeworICAgICAgICAgICAgICAgICAgICBvYmplY3RzMS5wdXNoKHZhbHVlMSk7CisgICAgICAg
ICAgICAgICAgICAgIHBhdGhzMS5wdXNoKG5ld1BhdGgxKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgaWYgKGluZGV4MiA9PT0gLTEgJiYgaXNPYmplY3QyKSB7CisgICAgICAg
ICAgICAgICAgICAgIG9iamVjdHMyLnB1c2godmFsdWUyKTsKKyAgICAgICAgICAgICAgICAgICAg
cGF0aHMyLnB1c2gobmV3UGF0aDIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIC8vIHJlbWVtYmVyIHRoYXQgdGhlIGN1cnJlbnQgb2JqZWN0cyBhcmUgYWxyZWFkeSBjb21w
YXJlZAorICAgICAgICAgICAgICAgIGlmIChpc09iamVjdDEgJiYgaXNPYmplY3QyKSB7CisgICAg
ICAgICAgICAgICAgICAgIGNvbXBhcmVkW25ld1BhdGgxICsgbmV3UGF0aDJdID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBFbmQgb2YgY3ljbGljIGxvZ2lj
CisKKyAgICAgICAgICAgICAgICAvLyBuZWl0aGVyIHZhbHVlMSBub3IgdmFsdWUyIGlzIGEgY3lj
bGUKKyAgICAgICAgICAgICAgICAvLyBjb250aW51ZSB3aXRoIG5leHQgbGV2ZWwKKyAgICAgICAg
ICAgICAgICBpZiAoIWRlZXBFcXVhbCh2YWx1ZTEsIHZhbHVlMiwgbmV3UGF0aDEsIG5ld1BhdGgy
KSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICB9
KG9iajEsIG9iajIsICckMScsICckMicpKTsKKyAgICB9CisKKyAgICB2YXIgbWF0Y2g7CisKKyAg
ICBmdW5jdGlvbiBhcnJheUNvbnRhaW5zKGFycmF5LCBzdWJzZXQpIHsKKyAgICAgICAgaWYgKHN1
YnNldC5sZW5ndGggPT09IDApIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmFyIGksIGwsIGos
IGs7CisgICAgICAgIGZvciAoaSA9IDAsIGwgPSBhcnJheS5sZW5ndGg7IGkgPCBsOyArK2kpIHsK
KyAgICAgICAgICAgIGlmIChtYXRjaChhcnJheVtpXSwgc3Vic2V0WzBdKSkgeworICAgICAgICAg
ICAgICAgIGZvciAoaiA9IDAsIGsgPSBzdWJzZXQubGVuZ3RoOyBqIDwgazsgKytqKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmICghbWF0Y2goYXJyYXlbaSArIGpdLCBzdWJzZXRbal0pKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgLyoqCisgICAgICogQG5hbWUgc2Ftc2FtLm1hdGNoCisgICAgICogQHBhcmFt
IE9iamVjdCBvYmplY3QKKyAgICAgKiBAcGFyYW0gT2JqZWN0IG1hdGNoZXIKKyAgICAgKgorICAg
ICAqIENvbXBhcmUgYXJiaXRyYXJ5IHZhbHVlIGBgb2JqZWN0YGAgd2l0aCBtYXRjaGVyLgorICAg
ICAqLworICAgIG1hdGNoID0gZnVuY3Rpb24gbWF0Y2gob2JqZWN0LCBtYXRjaGVyKSB7CisgICAg
ICAgIGlmIChtYXRjaGVyICYmIHR5cGVvZiBtYXRjaGVyLnRlc3QgPT09ICJmdW5jdGlvbiIpIHsK
KyAgICAgICAgICAgIHJldHVybiBtYXRjaGVyLnRlc3Qob2JqZWN0KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICh0eXBlb2YgbWF0Y2hlciA9PT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAg
cmV0dXJuIG1hdGNoZXIob2JqZWN0KSA9PT0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICh0eXBlb2YgbWF0Y2hlciA9PT0gInN0cmluZyIpIHsKKyAgICAgICAgICAgIG1hdGNoZXIgPSBt
YXRjaGVyLnRvTG93ZXJDYXNlKCk7CisgICAgICAgICAgICB2YXIgbm90TnVsbCA9IHR5cGVvZiBv
YmplY3QgPT09ICJzdHJpbmciIHx8ICEhb2JqZWN0OworICAgICAgICAgICAgcmV0dXJuIG5vdE51
bGwgJiYKKyAgICAgICAgICAgICAgICAoU3RyaW5nKG9iamVjdCkpLnRvTG93ZXJDYXNlKCkuaW5k
ZXhPZihtYXRjaGVyKSA+PSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHR5cGVvZiBtYXRj
aGVyID09PSAibnVtYmVyIikgeworICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIgPT09IG9iamVj
dDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0eXBlb2YgbWF0Y2hlciA9PT0gImJvb2xlYW4i
KSB7CisgICAgICAgICAgICByZXR1cm4gbWF0Y2hlciA9PT0gb2JqZWN0OworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGdldENsYXNzKG9iamVjdCkgPT09ICJBcnJheSIgJiYgZ2V0Q2xhc3MobWF0
Y2hlcikgPT09ICJBcnJheSIpIHsKKyAgICAgICAgICAgIHJldHVybiBhcnJheUNvbnRhaW5zKG9i
amVjdCwgbWF0Y2hlcik7CisgICAgICAgIH0KKworICAgICAgICBpZiAobWF0Y2hlciAmJiB0eXBl
b2YgbWF0Y2hlciA9PT0gIm9iamVjdCIpIHsKKyAgICAgICAgICAgIHZhciBwcm9wOworICAgICAg
ICAgICAgZm9yIChwcm9wIGluIG1hdGNoZXIpIHsKKyAgICAgICAgICAgICAgICB2YXIgdmFsdWUg
PSBvYmplY3RbcHJvcF07CisgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gInVu
ZGVmaW5lZCIgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBvYmplY3QuZ2V0QXR0
cmlidXRlID09PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gb2Jq
ZWN0LmdldEF0dHJpYnV0ZShwcm9wKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gInVuZGVmaW5lZCIgfHwgIW1hdGNoKHZhbHVlLCBtYXRj
aGVyW3Byb3BdKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk1hdGNoZXIgd2FzIG5vdCBhIHN0cmlu
ZywgYSBudW1iZXIsIGEgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24sIGEg
Ym9vbGVhbiBvciBhbiBvYmplY3QiKTsKKyAgICB9OworCisgICAgcmV0dXJuIHsKKyAgICAgICAg
aXNBcmd1bWVudHM6IGlzQXJndW1lbnRzLAorICAgICAgICBpc0VsZW1lbnQ6IGlzRWxlbWVudCwK
KyAgICAgICAgaXNEYXRlOiBpc0RhdGUsCisgICAgICAgIGlzTmVnWmVybzogaXNOZWdaZXJvLAor
ICAgICAgICBpZGVudGljYWw6IGlkZW50aWNhbCwKKyAgICAgICAgZGVlcEVxdWFsOiBkZWVwRXF1
YWxDeWNsaWMsCisgICAgICAgIG1hdGNoOiBtYXRjaCwKKyAgICAgICAga2V5czoga2V5cworICAg
IH07Cit9KTsKKworfSx7fV19LHt9LFs2XSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9w
cm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy8uZ2l0aWdub3JlIGIvTGF5b3V0VGVzdHMvanMv
cHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzBh
YTA0NGI2NmYwOGVkOGRhMDFhYjI2NzgzOGFjMDJiNzUwYmRjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvLmdpdGlnbm9yZQpA
QCAtMCwwICsxLDIgQEAKKy9ub2RlX21vZHVsZXMvCisvbnBtLWRlYnVnLmxvZwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvLmpzaGludHJj
IGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvLmpzaGludHJj
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRmMjM5ZTNlMzI3OWYzOGEyZWIzNzhlYjIzNzRkOGIwZWVhODc2MzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10
ZXN0cy8uanNoaW50cmMKQEAgLTAsMCArMSwyNiBAQAoreworICAgICJjYW1lbGNhc2UiOiB0cnVl
LAorICAgICJjdXJseSI6IHRydWUsCisgICAgImVxZXFlcSI6IHRydWUsCisgICAgImdsb2JhbHN0
cmljdCI6IHRydWUsCisgICAgImltbWVkIjogdHJ1ZSwKKyAgICAiaW5kZW50IjogNCwKKyAgICAi
bWF4bGVuIjogMTIwLAorICAgICJuZXdjYXAiOiB0cnVlLAorICAgICJub2FyZyI6IHRydWUsCisg
ICAgIm5vZGUiOiB0cnVlLAorICAgICJub25ldyI6IHRydWUsCisgICAgIm5vbWVuIjogdHJ1ZSwK
KyAgICAicXVvdG1hcmsiOiAiZG91YmxlIiwKKyAgICAidHJhaWxpbmciOiB0cnVlLAorICAgICJ1
bmRlZiI6IHRydWUsCisgICAgInVudXNlZCI6IHRydWUsCisgICAgIndoaXRlIjogdHJ1ZSwKKyAg
ICAiZ2xvYmFscyI6IHsKKyAgICAgICAgImFmdGVyRWFjaCI6IGZhbHNlLAorICAgICAgICAiYmVm
b3JlRWFjaCI6IGZhbHNlLAorICAgICAgICAiZGVzY3JpYmUiOiBmYWxzZSwKKyAgICAgICAgIml0
IjogZmFsc2UsCisgICAgICAgICJzcGVjaWZ5IjogZmFsc2UKKyAgICB9Cit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy8ubnBtaWdub3Jl
IGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvLm5wbWlnbm9y
ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lMmRkNDRlOWQ0YzY1OThjOWE4MDk2MmZhOTZhOGQ5OGM0ZTk0Y2JlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMt
dGVzdHMvLm5wbWlnbm9yZQpAQCAtMCwwICsxLDUgQEAKKy9ub2RlX21vZHVsZXMvCisvbnBtLWRl
YnVnLmxvZworCisvLmpzaGludHJjCisvLm5wbWlnbm9yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvTElDRU5TRS50eHQgYi9MYXlvdXRU
ZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9MSUNFTlNFLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wODdjMzEyYjFlZmNlNjEwMGIyZDFjZDM1NGVlNDhhZjdjMzYyNjMwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvTElD
RU5TRS50eHQKQEAgLTAsMCArMSwxNCBAQAorICAgICAgICAgICAgRE8gV0hBVCBUSEUgRlVDSyBZ
T1UgV0FOVCBUTyBQVUJMSUMgTElDRU5TRQorICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDIs
IERlY2VtYmVyIDIwMDQKKworIENvcHlyaWdodCAoQykgMjAxMiBEb21lbmljIERlbmljb2xhIDxk
b21lbmljQGRvbWVuaWNkZW5pY29sYS5jb20+CisKKyBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8g
Y29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBvciBtb2RpZmllZAorIGNvcGllcyBvZiB0aGlz
IGxpY2Vuc2UgZG9jdW1lbnQsIGFuZCBjaGFuZ2luZyBpdCBpcyBhbGxvd2VkIGFzIGxvbmcKKyBh
cyB0aGUgbmFtZSBpcyBjaGFuZ2VkLgorCisgICAgICAgICAgICBETyBXSEFUIFRIRSBGVUNLIFlP
VSBXQU5UIFRPIFBVQkxJQyBMSUNFTlNFCisgICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgQ09Q
WUlORywgRElTVFJJQlVUSU9OIEFORCBNT0RJRklDQVRJT04KKworICAwLiBZb3UganVzdCBETyBX
SEFUIFRIRSBGVUNLIFlPVSBXQU5UIFRPLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9w
cm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9SRUFETUUubWQgYi9MYXlvdXRUZXN0cy9qcy9w
cm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTA0M2Ni
MzE3OTFlMTYwNzMzZWZmMGRkOTE5YTU4YjEyMTg1MDA1MgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL1JFQURNRS5tZApAQCAt
MCwwICsxLDkyIEBACis8YSBocmVmPSJodHRwOi8vcHJvbWlzZXMtYXBsdXMuZ2l0aHViLmNvbS9w
cm9taXNlcy1zcGVjIj4KKyAgICA8aW1nIHNyYz0iaHR0cDovL3Byb21pc2VzLWFwbHVzLmdpdGh1
Yi5jb20vcHJvbWlzZXMtc3BlYy9hc3NldHMvbG9nby1zbWFsbC5wbmciCisgICAgICAgICBhbGln
bj0icmlnaHQiIGFsdD0iUHJvbWlzZXMvQSsgbG9nbyIgLz4KKzwvYT4KKworIyBQcm9taXNlcy9B
KyBDb21wbGlhbmNlIFRlc3QgU3VpdGUKKworVGhpcyBzdWl0ZSB0ZXN0cyBjb21wbGlhbmNlIG9m
IGEgcHJvbWlzZSBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZSBbUHJvbWlzZXMvQSsgc3BlY2lmaWNh
dGlvbl1bXS4KKworW1Byb21pc2VzL0ErIHNwZWNpZmljYXRpb25dOiBodHRwczovL2dpdGh1Yi5j
b20vcHJvbWlzZXMtYXBsdXMvcHJvbWlzZXMtc3BlYworCisjIyBIb3cgVG8gUnVuCisKK1RoZSB0
ZXN0cyBydW4gaW4gYSBOb2RlLmpzIGVudmlyb25tZW50OyBtYWtlIHN1cmUgeW91IGhhdmUgdGhh
dCBpbnN0YWxsZWQuCisKKyMjIyBBZGFwdGVycworCitJbiBvcmRlciB0byB0ZXN0IHlvdXIgcHJv
bWlzZSBsaWJyYXJ5LCB5b3UgbXVzdCBleHBvc2UgYSB2ZXJ5IG1pbmltYWwgYWRhcHRlciBpbnRl
cmZhY2UuIFRoZXNlIGFyZSB3cml0dGVuIGFzIE5vZGUuanMKK21vZHVsZXMgd2l0aCBhIGZldyB3
ZWxsLWtub3duIGV4cG9ydHM6CisKKy0gYHJlc29sdmVkKHZhbHVlKWA6IGNyZWF0ZXMgYSBwcm9t
aXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBgdmFsdWVgLgorLSBgcmVqZWN0ZWQocmVhc29uKWA6
IGNyZWF0ZXMgYSBwcm9taXNlIHRoYXQgaXMgYWxyZWFkeSByZWplY3RlZCB3aXRoIGByZWFzb25g
LgorLSBgZGVmZXJyZWQoKWA6IGNyZWF0ZXMgYW4gb2JqZWN0IGNvbnNpc3Rpbmcgb2YgYHsgcHJv
bWlzZSwgcmVzb2x2ZSwgcmVqZWN0IH1gOgorICAtIGBwcm9taXNlYCBpcyBhIHByb21pc2UgdGhh
dCBpcyBjdXJyZW50bHkgaW4gdGhlIHBlbmRpbmcgc3RhdGUuCisgIC0gYHJlc29sdmUodmFsdWUp
YCByZXNvbHZlcyB0aGUgcHJvbWlzZSB3aXRoIGB2YWx1ZWAuCisgIC0gYHJlamVjdChyZWFzb24p
YCBtb3ZlcyB0aGUgcHJvbWlzZSBmcm9tIHRoZSBwZW5kaW5nIHN0YXRlIHRvIHRoZSByZWplY3Rl
ZCBzdGF0ZSwgd2l0aCByZWplY3Rpb24gcmVhc29uIGByZWFzb25gLgorCitUaGUgYHJlc29sdmVk
YCBhbmQgYHJlamVjdGVkYCBleHBvcnRzIGFyZSBhY3R1YWxseSBvcHRpb25hbCwgYW5kIHdpbGwg
YmUgYXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IHRoZSB0ZXN0IHJ1bm5lciB1c2luZworYGRlZmVy
cmVkYCBpZiB0aGV5IGFyZSBub3QgcHJlc2VudC4gQnV0LCBpZiB5b3VyIHByb21pc2UgbGlicmFy
eSBoYXMgdGhlIGNhcGFiaWxpdHkgdG8gY3JlYXRlIGFscmVhZHktcmVzb2x2ZWQgb3IKK2FscmVh
ZHktcmVqZWN0ZWQgcHJvbWlzZXMsIHRoZW4geW91IHNob3VsZCBpbmNsdWRlIHRoZXNlIGV4cG9y
dHMsIHNvIHRoYXQgdGhlIHRlc3QgcnVubmVyIGNhbiBwcm92aWRlIHlvdSB3aXRoIGJldHRlcgor
Y29kZSBjb3ZlcmFnZSBhbmQgdW5jb3ZlciBhbnkgYnVncyBpbiB0aG9zZSBtZXRob2RzLgorCitO
b3RlIHRoYXQgdGhlIHRlc3RzIHdpbGwgbmV2ZXIgcGFzcyBhIHByb21pc2Ugb3IgYSB0aGVuYWJs
ZSBhcyBhIHJlc29sdXRpb24uIFRoYXQgbWVhbnMgdGhhdCB3ZSBuZXZlciB1c2UgdGhlIHByb21p
c2UtCitvciB0aGVuYWJsZS1hY2NlcHRpbmcgZm9ybXMgb2YgdGhlIHJlc29sdmUgb3BlcmF0aW9u
IGRpcmVjdGx5LCBhbmQgaW5zdGVhZCBvbmx5IHVzZSB0aGUgZGlyZWN0IGZ1bGZpbGxtZW50IG9w
ZXJhdGlvbiwKK3NpbmNlIGZ1bGZpbGwgYW5kIHJlc29sdmUgYXJlIGVxdWl2YWxlbnQgd2hlbiBu
b3QgZ2l2ZW4gYSB0aGVuYWJsZS4KKworRmluYWxseSwgbm90ZSB0aGF0IG5vbmUgb2YgdGhlc2Ug
ZnVuY3Rpb25zLCBpbmNsdWRpbmcgYGRlZmVycmVkKCkucmVzb2x2ZWAgYW5kIGBkZWZlcnJlZCgp
LnJlamVjdGAsIHNob3VsZCB0aHJvdworZXhjZXB0aW9ucy4gVGhlIHRlc3RzIGFyZSBub3Qgc3Ry
dWN0dXJlZCB0byBkZWFsIHdpdGggdGhhdCwgYW5kIGlmIHlvdXIgaW1wbGVtZW50YXRpb24gaGFz
IHRoZSBwb3RlbnRpYWwgdG8gdGhyb3cKK2V4Y2VwdGlvbnPigJRlLmcuLCBwZXJoYXBzIGl0IHRo
cm93cyB3aGVuIHRyeWluZyB0byByZXNvbHZlIGFuIGFscmVhZHktcmVzb2x2ZWQgcHJvbWlzZeKA
lHlvdSBzaG91bGQgd3JhcCBkaXJlY3QgY2FsbHMgdG8KK3lvdXIgaW1wbGVtZW50YXRpb24gaW4g
YHRyeWAvYGNhdGNoYCB3aGVuIHdyaXRpbmcgdGhlIGFkYXB0ZXIuCisKKyMjIyBGcm9tIHRoZSBD
TEkKKworVGhpcyBwYWNrYWdlIGNvbWVzIHdpdGggYSBjb21tYW5kLWxpbmUgaW50ZXJmYWNlIHRo
YXQgY2FuIGJlIHVzZWQgZWl0aGVyIGJ5IGluc3RhbGxpbmcgaXQgZ2xvYmFsbHkgd2l0aAorYG5w
bSBpbnN0YWxsIHByb21pc2VzLWFwbHVzLXRlc3RzIC1nYCBvciBieSBpbmNsdWRpbmcgaXQgaW4g
eW91ciBgcGFja2FnZS5qc29uYCdzIGBkZXZEZXBlbmRlbmNpZXNgIGFuZCB1c2luZyBucG0ncwor
YHNjcmlwdHNgIGZlYXR1cmUuIEluIHRoZSBsYXR0ZXIgY2FzZSwgeW91ciBzZXR1cCBtaWdodCBs
b29rIHNvbWV0aGluZyBsaWtlCisKK2BgYGpzb24KK3sKKyAgICAiZGV2RGVwZW5kZW5jaWVzIjog
eworICAgICAgICAicHJvbWlzZXMtYXBsdXMtdGVzdHMiOiAiKiIKKyAgICB9LAorICAgICJzY3Jp
cHRzIjogeworICAgICAgICAidGVzdCI6ICJydW4tbXktb3duLXRlc3RzICYmIHByb21pc2VzLWFw
bHVzLXRlc3RzIHRlc3QvbXktYWRhcHRlciIKKyAgICB9Cit9CitgYGAKKworVGhlIENMSSB0YWtl
cyBhcyBpdHMgZmlyc3QgYXJndW1lbnQgdGhlIGZpbGVuYW1lIG9mIHlvdXIgYWRhcHRlciBmaWxl
LCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4gSXQKK3RyaWVzIHRv
IHBhc3MgdGhyb3VnaCBhbnkgc3Vic2VxdWVudCBvcHRpb25zIHRvIE1vY2hhLCBzbyB5b3UgY2Fu
IHVzZSBlLmcuIGAtLXJlcG9ydGVyIHNwZWNgIG9yIGAtLWdyZXAgMi4yLjRgLgorCisjIyMgUHJv
Z3JhbW1hdGljYWxseQorCitUaGUgbWFpbiBleHBvcnQgb2YgdGhpcyBwYWNrYWdlIGlzIGEgZnVu
Y3Rpb24gdGhhdCBhbGxvd3MgeW91IHRvIHJ1biB0aGUgdGVzdHMgYWdhaW5zdCBhbiBhZGFwdGVy
OgorCitgYGBqcwordmFyIHByb21pc2VzQXBsdXNUZXN0cyA9IHJlcXVpcmUoInByb21pc2VzLWFw
bHVzLXRlc3RzIik7CisKK3Byb21pc2VzQXBsdXNUZXN0cyhhZGFwdGVyLCBmdW5jdGlvbiAoZXJy
KSB7CisgICAgLy8gQWxsIGRvbmU7IG91dHB1dCBpcyBpbiB0aGUgY29uc29sZS4gT3IgY2hlY2sg
YGVycmAgZm9yIG51bWJlciBvZiBmYWlsdXJlcy4KK30pOworYGBgCisKK1lvdSBjYW4gYWxzbyBw
YXNzIGFueSBNb2NoYSBvcHRpb25zIGFzIHRoZSBzZWNvbmQgcGFyYW1ldGVyLCBlLmcuCisKK2Bg
YGpzCitwcm9taXNlc0FwbHVzVGVzdHMoYWRhcHRlciwgeyByZXBvcnRlcjogImRvdCIgfSwgZnVu
Y3Rpb24gKGVycikgeworICAvLyBBcyBiZWZvcmUuCit9KTsKK2BgYAorCisjIyMgV2l0aGluIGFu
IEV4aXN0aW5nIE1vY2hhIFRlc3QgU3VpdGUKKworSWYgeW91IGFscmVhZHkgaGF2ZSBhIE1vY2hh
IHRlc3Qgc3VpdGUgYW5kIHdhbnQgdG8gaW5jbHVkZSB0aGVzZSB0ZXN0cyBpbiBpdCwgeW91IGNh
biBkbzoKKworYGBganMKK2Rlc2NyaWJlKCJQcm9taXNlcy9BKyBUZXN0cyIsIGZ1bmN0aW9uICgp
IHsKKyAgICByZXF1aXJlKCJwcm9taXNlcy1hcGx1cy10ZXN0cyIpLm1vY2hhKGFkYXB0ZXIpOwor
fSk7CitgYGAKKworVGhpcyBvbmx5IHdvcmtzIGluIE5vZGUuanMsIGhvd2V2ZXIuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvY2xp
LmpzIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL2Ns
aS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iYjNjZWU3ODFjNjg1OWNjOGMyZDc2ZGQwMTNjMGYxYjU4NzRlODgx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlz
ZXMtdGVzdHMvbGliL2NsaS5qcwpAQCAtMCwwICsxLDM0IEBACisjIS91c3IvYmluL2VudiBub2Rl
CisidXNlIHN0cmljdCI7CisKK3ZhciBwYXRoID0gcmVxdWlyZSgicGF0aCIpOwordmFyIGdldE1v
Y2hhT3B0cyA9IHJlcXVpcmUoIi4vZ2V0TW9jaGFPcHRzIik7Cit2YXIgcHJvZ3JhbW1hdGljUnVu
bmVyID0gcmVxdWlyZSgiLi9wcm9ncmFtbWF0aWNSdW5uZXIiKTsKKwordmFyIGZpbGVQYXRoID0g
Z2V0QWRhcHRlckZpbGVQYXRoKCk7Cit2YXIgYWRhcHRlciA9IGFkYXB0ZXJPYmplY3RGcm9tRmls
ZVBhdGgoZmlsZVBhdGgpOwordmFyIG1vY2hhT3B0cyA9IGdldE1vY2hhT3B0cyhwcm9jZXNzLmFy
Z3Yuc2xpY2UoMykpOworcHJvZ3JhbW1hdGljUnVubmVyKGFkYXB0ZXIsIG1vY2hhT3B0cywgZnVu
Y3Rpb24gKGVycikgeworICAgIGlmIChlcnIpIHsKKyAgICAgICAgcHJvY2Vzcy5leGl0KGVyci5m
YWlsdXJlcyB8fCAtMSk7CisgICAgfQorfSk7CisKK2Z1bmN0aW9uIGdldEFkYXB0ZXJGaWxlUGF0
aCgpIHsKKyAgICBpZiAocHJvY2Vzcy5hcmd2WzJdKSB7CisgICAgICAgIHJldHVybiBwYXRoLmpv
aW4ocHJvY2Vzcy5jd2QoKSwgcHJvY2Vzcy5hcmd2WzJdKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIlNwZWNpZnkgeW91ciBhZGFwdGVyIGZpbGUgYXMgYW4gYXJndW1l
bnQuIik7CisgICAgfQorfQorCitmdW5jdGlvbiBhZGFwdGVyT2JqZWN0RnJvbUZpbGVQYXRoKGZp
bGVQYXRoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgcmV0dXJuIHJlcXVpcmUoZmlsZVBhdGgpOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCJFcnJvciBg
cmVxdWlyZWBpbmcgYWRhcHRlciBmaWxlICIgKyBmaWxlUGF0aCArICJcblxuIiArIGUpOworICAg
ICAgICBlcnJvci5jYXVzZSA9IGU7CisKKyAgICAgICAgdGhyb3cgZXJyb3I7CisgICAgfQorfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMv
bGliL2dldE1vY2hhT3B0cy5qcyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21p
c2VzLXRlc3RzL2xpYi9nZXRNb2NoYU9wdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA1OWFjODhhYjg4N2Jj
YTBhNjcwZjJiMGIwZjRmNDQ5NWE4MjU3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi9nZXRNb2NoYU9wdHMuanMKQEAg
LTAsMCArMSwxOSBAQAorInVzZSBzdHJpY3QiOworCittb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9u
IGdldE1vY2hhT3B0cyhhcmdzKSB7CisgICAgdmFyIHJhd09wdHMgPSBhcmdzOworICAgIHZhciBv
cHRzID0ge307CisKKyAgICByYXdPcHRzLmpvaW4oIiAiKS5zcGxpdCgiLS0iKS5mb3JFYWNoKGZ1
bmN0aW9uIChvcHQpIHsKKyAgICAgICAgdmFyIG9wdFNwbGl0ID0gb3B0LnNwbGl0KCIgIik7CisK
KyAgICAgICAgdmFyIGtleSA9IG9wdFNwbGl0WzBdOworICAgICAgICB2YXIgdmFsdWUgPSBvcHRT
cGxpdFsxXSB8fCB0cnVlOworCisgICAgICAgIGlmIChrZXkpIHsKKyAgICAgICAgICAgIG9wdHNb
a2V5XSA9IHZhbHVlOworICAgICAgICB9CisgICAgfSk7CisKKyAgICByZXR1cm4gb3B0czsKK307
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0
cy9saWIvcHJvZ3JhbW1hdGljUnVubmVyLmpzIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVz
dHMvcHJvbWlzZXMtdGVzdHMvbGliL3Byb2dyYW1tYXRpY1J1bm5lci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
NjRjM2MxMmJhYzZjMGRhZjEzOTFjOTFhZTkzYTQwNTgxMWQwODcyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Byb2dy
YW1tYXRpY1J1bm5lci5qcwpAQCAtMCwwICsxLDgyIEBACisidXNlIHN0cmljdCI7CisKK3ZhciBN
b2NoYSA9IHJlcXVpcmUoIm1vY2hhIik7Cit2YXIgcGF0aCA9IHJlcXVpcmUoInBhdGgiKTsKK3Zh
ciBmcyA9IHJlcXVpcmUoImZzIik7Cit2YXIgXyA9IHJlcXVpcmUoInVuZGVyc2NvcmUiKTsKKwor
dmFyIHRlc3RzRGlyID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgInRlc3RzIik7CisKK2Z1bmN0
aW9uIG5vcm1hbGl6ZUFkYXB0ZXIoYWRhcHRlcikgeworICAgIGlmICghYWRhcHRlci5yZXNvbHZl
ZCkgeworICAgICAgICBhZGFwdGVyLnJlc29sdmVkID0gZnVuY3Rpb24gKHZhbHVlKSB7CisgICAg
ICAgICAgICB2YXIgZCA9IGFkYXB0ZXIuZGVmZXJyZWQoKTsKKyAgICAgICAgICAgIGQucmVzb2x2
ZSh2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gZC5wcm9taXNlOworICAgICAgICB9OworICAg
IH0KKworICAgIGlmICghYWRhcHRlci5yZWplY3RlZCkgeworICAgICAgICBhZGFwdGVyLnJlamVj
dGVkID0gZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAgICAgdmFyIGQgPSBhZGFwdGVyLmRl
ZmVycmVkKCk7CisgICAgICAgICAgICBkLnJlamVjdChyZWFzb24pOworICAgICAgICAgICAgcmV0
dXJuIGQucHJvbWlzZTsKKyAgICAgICAgfTsKKyAgICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0g
ZnVuY3Rpb24gKGFkYXB0ZXIsIG1vY2hhT3B0cywgY2IpIHsKKyAgICBpZiAodHlwZW9mIG1vY2hh
T3B0cyA9PT0gImZ1bmN0aW9uIikgeworICAgICAgICBjYiA9IG1vY2hhT3B0czsKKyAgICAgICAg
bW9jaGFPcHRzID0ge307CisgICAgfQorICAgIGlmICh0eXBlb2YgY2IgIT09ICJmdW5jdGlvbiIp
IHsKKyAgICAgICAgY2IgPSBmdW5jdGlvbiAoKSB7IH07CisgICAgfQorCisgICAgbm9ybWFsaXpl
QWRhcHRlcihhZGFwdGVyKTsKKyAgICBtb2NoYU9wdHMgPSBfLmRlZmF1bHRzKG1vY2hhT3B0cywg
eyB0aW1lb3V0OiAyMDAsIHNsb3c6IEluZmluaXR5IH0pOworCisgICAgZnMucmVhZGRpcih0ZXN0
c0RpciwgZnVuY3Rpb24gKGVyciwgdGVzdEZpbGVOYW1lcykgeworICAgICAgICBpZiAoZXJyKSB7
CisgICAgICAgICAgICBjYihlcnIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgdmFyIG1vY2hhID0gbmV3IE1vY2hhKG1vY2hhT3B0cyk7CisgICAgICAgIHRlc3RG
aWxlTmFtZXMuZm9yRWFjaChmdW5jdGlvbiAodGVzdEZpbGVOYW1lKSB7CisgICAgICAgICAgICBp
ZiAocGF0aC5leHRuYW1lKHRlc3RGaWxlTmFtZSkgPT09ICIuanMiKSB7CisgICAgICAgICAgICAg
ICAgdmFyIHRlc3RGaWxlUGF0aCA9IHBhdGgucmVzb2x2ZSh0ZXN0c0RpciwgdGVzdEZpbGVOYW1l
KTsKKyAgICAgICAgICAgICAgICBtb2NoYS5hZGRGaWxlKHRlc3RGaWxlUGF0aCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIGdsb2JhbC5hZGFwdGVyID0gYWRhcHRlcjsK
KyAgICAgICAgbW9jaGEucnVuKGZ1bmN0aW9uIChmYWlsdXJlcykgeworICAgICAgICAgICAgZGVs
ZXRlIGdsb2JhbC5hZGFwdGVyOworICAgICAgICAgICAgaWYgKGZhaWx1cmVzID4gMCkgeworICAg
ICAgICAgICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoIlRlc3Qgc3VpdGUgZmFpbGVkIHdpdGgg
IiArIGZhaWx1cmVzICsgIiBmYWlsdXJlcy4iKTsKKyAgICAgICAgICAgICAgICBlcnIuZmFpbHVy
ZXMgPSBmYWlsdXJlczsKKyAgICAgICAgICAgICAgICBjYihlcnIpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBjYihudWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSk7CisgICAgfSk7Cit9OworCittb2R1bGUuZXhwb3J0cy5tb2NoYSA9IGZ1bmN0aW9uIChhZGFw
dGVyKSB7CisgICAgbm9ybWFsaXplQWRhcHRlcihhZGFwdGVyKTsKKworICAgIGdsb2JhbC5hZGFw
dGVyID0gYWRhcHRlcjsKKworICAgIHZhciB0ZXN0RmlsZU5hbWVzID0gZnMucmVhZGRpclN5bmMo
dGVzdHNEaXIpOworICAgIHRlc3RGaWxlTmFtZXMuZm9yRWFjaChmdW5jdGlvbiAodGVzdEZpbGVO
YW1lKSB7CisgICAgICAgIGlmIChwYXRoLmV4dG5hbWUodGVzdEZpbGVOYW1lKSA9PT0gIi5qcyIp
IHsKKyAgICAgICAgICAgIHZhciB0ZXN0RmlsZVBhdGggPSBwYXRoLnJlc29sdmUodGVzdHNEaXIs
IHRlc3RGaWxlTmFtZSk7CisgICAgICAgICAgICByZXF1aXJlKHRlc3RGaWxlUGF0aCk7CisgICAg
ICAgIH0KKyAgICB9KTsKKworICAgIGRlbGV0ZSBnbG9iYWwuYWRhcHRlcjsKK307CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVz
dHMvMi4xLjIuanMgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0
cy9saWIvdGVzdHMvMi4xLjIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjYwZTVkNWNjY2Y4MjdlMzZhZDY1YTIw
Mjg1ODY3MTI5MTZiMmEwZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21p
c2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjEuMi5qcwpAQCAtMCwwICsxLDc2
IEBACisidXNlIHN0cmljdCI7CisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCJhc3NlcnQiKTsKK3Zh
ciB0ZXN0RnVsZmlsbGVkID0gcmVxdWlyZSgiLi9oZWxwZXJzL3Rlc3RUaHJlZUNhc2VzIikudGVz
dEZ1bGZpbGxlZDsKKwordmFyIGFkYXB0ZXIgPSBnbG9iYWwuYWRhcHRlcjsKK3ZhciBkZWZlcnJl
ZCA9IGFkYXB0ZXIuZGVmZXJyZWQ7CisKK3ZhciBkdW1teSA9IHsgZHVtbXk6ICJkdW1teSIgfTsg
Ly8gd2UgZnVsZmlsbCBvciByZWplY3Qgd2l0aCB0aGlzIHdoZW4gd2UgZG9uJ3QgaW50ZW5kIHRv
IHRlc3QgYWdhaW5zdCBpdAorCitkZXNjcmliZSgiMi4xLjIuMTogV2hlbiBmdWxmaWxsZWQsIGEg
cHJvbWlzZTogbXVzdCBub3QgdHJhbnNpdGlvbiB0byBhbnkgb3RoZXIgc3RhdGUuIiwgZnVuY3Rp
b24gKCkgeworICAgIHRlc3RGdWxmaWxsZWQoZHVtbXksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25l
KSB7CisgICAgICAgIHZhciBvbkZ1bGZpbGxlZENhbGxlZCA9IGZhbHNlOworCisgICAgICAgIHBy
b21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgIG9uRnVsZmls
bGVkQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfSwgZnVuY3Rpb24gb25SZWplY3RlZCgpIHsKKyAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChvbkZ1bGZpbGxlZENhbGxlZCwgZmFsc2UpOwor
ICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9KTsKKworICAgICAgICBzZXRUaW1lb3V0KGRv
bmUsIDEwMCk7CisgICAgfSk7CisKKyAgICBzcGVjaWZ5KCJ0cnlpbmcgdG8gZnVsZmlsbCB0aGVu
IGltbWVkaWF0ZWx5IHJlamVjdCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIHZhciBkID0g
ZGVmZXJyZWQoKTsKKyAgICAgICAgdmFyIG9uRnVsZmlsbGVkQ2FsbGVkID0gZmFsc2U7CisKKyAg
ICAgICAgZC5wcm9taXNlLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxsZWQoKSB7CisgICAgICAgICAg
ICBvbkZ1bGZpbGxlZENhbGxlZCA9IHRydWU7CisgICAgICAgIH0sIGZ1bmN0aW9uIG9uUmVqZWN0
ZWQoKSB7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwob25GdWxmaWxsZWRDYWxsZWQs
IGZhbHNlKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZC5y
ZXNvbHZlKGR1bW15KTsKKyAgICAgICAgZC5yZWplY3QoZHVtbXkpOworICAgICAgICBzZXRUaW1l
b3V0KGRvbmUsIDEwMCk7CisgICAgfSk7CisKKyAgICBzcGVjaWZ5KCJ0cnlpbmcgdG8gZnVsZmls
bCB0aGVuIHJlamVjdCwgZGVsYXllZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIHZhciBk
ID0gZGVmZXJyZWQoKTsKKyAgICAgICAgdmFyIG9uRnVsZmlsbGVkQ2FsbGVkID0gZmFsc2U7CisK
KyAgICAgICAgZC5wcm9taXNlLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxsZWQoKSB7CisgICAgICAg
ICAgICBvbkZ1bGZpbGxlZENhbGxlZCA9IHRydWU7CisgICAgICAgIH0sIGZ1bmN0aW9uIG9uUmVq
ZWN0ZWQoKSB7CisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwob25GdWxmaWxsZWRDYWxs
ZWQsIGZhbHNlKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBkLnJlc29sdmUoZHVtbXkpOwor
ICAgICAgICAgICAgZC5yZWplY3QoZHVtbXkpOworICAgICAgICB9LCA1MCk7CisgICAgICAgIHNl
dFRpbWVvdXQoZG9uZSwgMTAwKTsKKyAgICB9KTsKKworICAgIHNwZWNpZnkoInRyeWluZyB0byBm
dWxmaWxsIGltbWVkaWF0ZWx5IHRoZW4gcmVqZWN0IGRlbGF5ZWQiLCBmdW5jdGlvbiAoZG9uZSkg
eworICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgIHZhciBvbkZ1bGZpbGxlZENh
bGxlZCA9IGZhbHNlOworCisgICAgICAgIGQucHJvbWlzZS50aGVuKGZ1bmN0aW9uIG9uRnVsZmls
bGVkKCkgeworICAgICAgICAgICAgb25GdWxmaWxsZWRDYWxsZWQgPSB0cnVlOworICAgICAgICB9
LCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KG9uRnVsZmlsbGVkQ2FsbGVkLCBmYWxzZSk7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAg
IH0pOworCisgICAgICAgIGQucmVzb2x2ZShkdW1teSk7CisgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgZC5yZWplY3QoZHVtbXkpOworICAgICAgICB9LCA1MCk7
CisgICAgICAgIHNldFRpbWVvdXQoZG9uZSwgMTAwKTsKKyAgICB9KTsKK30pOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3Rz
LzIuMS4zLmpzIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMv
bGliL3Rlc3RzLzIuMS4zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxOWExOThiOWViNWQ5Mjc3NTVhZGQxZmUz
ZTc1N2EzZTYyZmFiZTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNl
cy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4xLjMuanMKQEAgLTAsMCArMSw3NiBA
QAorInVzZSBzdHJpY3QiOworCit2YXIgYXNzZXJ0ID0gcmVxdWlyZSgiYXNzZXJ0Iik7Cit2YXIg
dGVzdFJlamVjdGVkID0gcmVxdWlyZSgiLi9oZWxwZXJzL3Rlc3RUaHJlZUNhc2VzIikudGVzdFJl
amVjdGVkOworCit2YXIgYWRhcHRlciA9IGdsb2JhbC5hZGFwdGVyOwordmFyIGRlZmVycmVkID0g
YWRhcHRlci5kZWZlcnJlZDsKKwordmFyIGR1bW15ID0geyBkdW1teTogImR1bW15IiB9OyAvLyB3
ZSBmdWxmaWxsIG9yIHJlamVjdCB3aXRoIHRoaXMgd2hlbiB3ZSBkb24ndCBpbnRlbmQgdG8gdGVz
dCBhZ2FpbnN0IGl0CisKK2Rlc2NyaWJlKCIyLjEuMy4xOiBXaGVuIHJlamVjdGVkLCBhIHByb21p
c2U6IG11c3Qgbm90IHRyYW5zaXRpb24gdG8gYW55IG90aGVyIHN0YXRlLiIsIGZ1bmN0aW9uICgp
IHsKKyAgICB0ZXN0UmVqZWN0ZWQoZHVtbXksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7Cisg
ICAgICAgIHZhciBvblJlamVjdGVkQ2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgcHJvbWlzZS50
aGVuKGZ1bmN0aW9uIG9uRnVsZmlsbGVkKCkgeworICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVx
dWFsKG9uUmVqZWN0ZWRDYWxsZWQsIGZhbHNlKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAg
ICAgfSwgZnVuY3Rpb24gb25SZWplY3RlZCgpIHsKKyAgICAgICAgICAgIG9uUmVqZWN0ZWRDYWxs
ZWQgPSB0cnVlOworICAgICAgICB9KTsKKworICAgICAgICBzZXRUaW1lb3V0KGRvbmUsIDEwMCk7
CisgICAgfSk7CisKKyAgICBzcGVjaWZ5KCJ0cnlpbmcgdG8gcmVqZWN0IHRoZW4gaW1tZWRpYXRl
bHkgZnVsZmlsbCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIHZhciBkID0gZGVmZXJyZWQo
KTsKKyAgICAgICAgdmFyIG9uUmVqZWN0ZWRDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICBkLnBy
b21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChvblJlamVjdGVkQ2FsbGVkLCBmYWxzZSk7CisgICAgICAgICAgICBkb25lKCk7
CisgICAgICAgIH0sIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICBvblJlamVj
dGVkQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZC5yZWplY3QoZHVtbXkp
OworICAgICAgICBkLnJlc29sdmUoZHVtbXkpOworICAgICAgICBzZXRUaW1lb3V0KGRvbmUsIDEw
MCk7CisgICAgfSk7CisKKyAgICBzcGVjaWZ5KCJ0cnlpbmcgdG8gcmVqZWN0IHRoZW4gZnVsZmls
bCwgZGVsYXllZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIHZhciBkID0gZGVmZXJyZWQo
KTsKKyAgICAgICAgdmFyIG9uUmVqZWN0ZWRDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICBkLnBy
b21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbChvblJlamVjdGVkQ2FsbGVkLCBmYWxzZSk7CisgICAgICAgICAgICBkb25lKCk7
CisgICAgICAgIH0sIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICBvblJlamVj
dGVkQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICBkLnJlamVjdChkdW1teSk7CisgICAgICAgICAgICBkLnJl
c29sdmUoZHVtbXkpOworICAgICAgICB9LCA1MCk7CisgICAgICAgIHNldFRpbWVvdXQoZG9uZSwg
MTAwKTsKKyAgICB9KTsKKworICAgIHNwZWNpZnkoInRyeWluZyB0byByZWplY3QgaW1tZWRpYXRl
bHkgdGhlbiBmdWxmaWxsIGRlbGF5ZWQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICB2YXIg
ZCA9IGRlZmVycmVkKCk7CisgICAgICAgIHZhciBvblJlamVjdGVkQ2FsbGVkID0gZmFsc2U7CisK
KyAgICAgICAgZC5wcm9taXNlLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxsZWQoKSB7CisgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwob25SZWplY3RlZENhbGxlZCwgZmFsc2UpOworICAgICAg
ICAgICAgZG9uZSgpOworICAgICAgICB9LCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAgICAg
ICAgICAgb25SZWplY3RlZENhbGxlZCA9IHRydWU7CisgICAgICAgIH0pOworCisgICAgICAgIGQu
cmVqZWN0KGR1bW15KTsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICBkLnJlc29sdmUoZHVtbXkpOworICAgICAgICB9LCA1MCk7CisgICAgICAgIHNldFRpbWVv
dXQoZG9uZSwgMTAwKTsKKyAgICB9KTsKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
cHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi4xLmpzIGIvTGF5b3V0
VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi4xLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhkOTE5ODhjOTRmYjMxN2VmYWU2Y2I2OGM4ZTQ0MDU0OWIyZDdhNDkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10
ZXN0cy9saWIvdGVzdHMvMi4yLjEuanMKQEAgLTAsMCArMSw3NyBAQAorInVzZSBzdHJpY3QiOwor
Cit2YXIgYWRhcHRlciA9IGdsb2JhbC5hZGFwdGVyOwordmFyIHJlc29sdmVkID0gYWRhcHRlci5y
ZXNvbHZlZDsKK3ZhciByZWplY3RlZCA9IGFkYXB0ZXIucmVqZWN0ZWQ7CisKK3ZhciBkdW1teSA9
IHsgZHVtbXk6ICJkdW1teSIgfTsgLy8gd2UgZnVsZmlsbCBvciByZWplY3Qgd2l0aCB0aGlzIHdo
ZW4gd2UgZG9uJ3QgaW50ZW5kIHRvIHRlc3QgYWdhaW5zdCBpdAorCitkZXNjcmliZSgiMi4yLjE6
IEJvdGggYG9uRnVsZmlsbGVkYCBhbmQgYG9uUmVqZWN0ZWRgIGFyZSBvcHRpb25hbCBhcmd1bWVu
dHMuIiwgZnVuY3Rpb24gKCkgeworICAgIGRlc2NyaWJlKCIyLjIuMS4xOiBJZiBgb25GdWxmaWxs
ZWRgIGlzIG5vdCBhIGZ1bmN0aW9uLCBpdCBtdXN0IGJlIGlnbm9yZWQuIiwgZnVuY3Rpb24gKCkg
eworICAgICAgICBkZXNjcmliZSgiYXBwbGllZCB0byBhIGRpcmVjdGx5LXJlamVjdGVkIHByb21p
c2UiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0Tm9uRnVuY3Rpb24o
bm9uRnVuY3Rpb24sIHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7CisgICAgICAgICAgICAgICAgc3Bl
Y2lmeSgiYG9uRnVsZmlsbGVkYCBpcyAiICsgc3RyaW5nUmVwcmVzZW50YXRpb24sIGZ1bmN0aW9u
IChkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHJlamVjdGVkKGR1bW15KS50aGVuKG5vbkZ1
bmN0aW9uLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7Cisg
ICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24odW5kZWZpbmVkLCAiYHVuZGVmaW5lZGAi
KTsKKyAgICAgICAgICAgIHRlc3ROb25GdW5jdGlvbihudWxsLCAiYG51bGxgIik7CisgICAgICAg
ICAgICB0ZXN0Tm9uRnVuY3Rpb24oZmFsc2UsICJgZmFsc2VgIik7CisgICAgICAgICAgICB0ZXN0
Tm9uRnVuY3Rpb24oNSwgImA1YCIpOworICAgICAgICAgICAgdGVzdE5vbkZ1bmN0aW9uKHt9LCAi
YW4gb2JqZWN0Iik7CisgICAgICAgIH0pOworCisgICAgICAgIGRlc2NyaWJlKCJhcHBsaWVkIHRv
IGEgcHJvbWlzZSByZWplY3RlZCBhbmQgdGhlbiBjaGFpbmVkIG9mZiBvZiIsIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3ROb25GdW5jdGlvbihub25GdW5jdGlvbiwgc3Ry
aW5nUmVwcmVzZW50YXRpb24pIHsKKyAgICAgICAgICAgICAgICBzcGVjaWZ5KCJgb25GdWxmaWxs
ZWRgIGlzICIgKyBzdHJpbmdSZXByZXNlbnRhdGlvbiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmVqZWN0ZWQoZHVtbXkpLnRoZW4oZnVuY3Rpb24gKCkgeyB9LCB1bmRl
ZmluZWQpLnRoZW4obm9uRnVuY3Rpb24sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRlc3ROb25GdW5jdGlvbih1bmRlZmlu
ZWQsICJgdW5kZWZpbmVkYCIpOworICAgICAgICAgICAgdGVzdE5vbkZ1bmN0aW9uKG51bGwsICJg
bnVsbGAiKTsKKyAgICAgICAgICAgIHRlc3ROb25GdW5jdGlvbihmYWxzZSwgImBmYWxzZWAiKTsK
KyAgICAgICAgICAgIHRlc3ROb25GdW5jdGlvbig1LCAiYDVgIik7CisgICAgICAgICAgICB0ZXN0
Tm9uRnVuY3Rpb24oe30sICJhbiBvYmplY3QiKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAg
ICBkZXNjcmliZSgiMi4yLjEuMjogSWYgYG9uUmVqZWN0ZWRgIGlzIG5vdCBhIGZ1bmN0aW9uLCBp
dCBtdXN0IGJlIGlnbm9yZWQuIiwgZnVuY3Rpb24gKCkgeworICAgICAgICBkZXNjcmliZSgiYXBw
bGllZCB0byBhIGRpcmVjdGx5LWZ1bGZpbGxlZCBwcm9taXNlIiwgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgZnVuY3Rpb24gdGVzdE5vbkZ1bmN0aW9uKG5vbkZ1bmN0aW9uLCBzdHJpbmdSZXBy
ZXNlbnRhdGlvbikgeworICAgICAgICAgICAgICAgIHNwZWNpZnkoImBvblJlamVjdGVkYCBpcyAi
ICsgc3RyaW5nUmVwcmVzZW50YXRpb24sIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICAg
ICAgICAgIHJlc29sdmVkKGR1bW15KS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSwgbm9uRnVuY3Rpb24pOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZXN0Tm9u
RnVuY3Rpb24odW5kZWZpbmVkLCAiYHVuZGVmaW5lZGAiKTsKKyAgICAgICAgICAgIHRlc3ROb25G
dW5jdGlvbihudWxsLCAiYG51bGxgIik7CisgICAgICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24oZmFs
c2UsICJgZmFsc2VgIik7CisgICAgICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24oNSwgImA1YCIpOwor
ICAgICAgICAgICAgdGVzdE5vbkZ1bmN0aW9uKHt9LCAiYW4gb2JqZWN0Iik7CisgICAgICAgIH0p
OworCisgICAgICAgIGRlc2NyaWJlKCJhcHBsaWVkIHRvIGEgcHJvbWlzZSBmdWxmaWxsZWQgYW5k
IHRoZW4gY2hhaW5lZCBvZmYgb2YiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBmdW5jdGlv
biB0ZXN0Tm9uRnVuY3Rpb24obm9uRnVuY3Rpb24sIHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7Cisg
ICAgICAgICAgICAgICAgc3BlY2lmeSgiYG9uRnVsZmlsbGVkYCBpcyAiICsgc3RyaW5nUmVwcmVz
ZW50YXRpb24sIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmVk
KGR1bW15KS50aGVuKHVuZGVmaW5lZCwgZnVuY3Rpb24gKCkgeyB9KS50aGVuKGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAg
fSwgbm9uRnVuY3Rpb24pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24odW5kZWZpbmVkLCAiYHVuZGVmaW5lZGAiKTsKKyAg
ICAgICAgICAgIHRlc3ROb25GdW5jdGlvbihudWxsLCAiYG51bGxgIik7CisgICAgICAgICAgICB0
ZXN0Tm9uRnVuY3Rpb24oZmFsc2UsICJgZmFsc2VgIik7CisgICAgICAgICAgICB0ZXN0Tm9uRnVu
Y3Rpb24oNSwgImA1YCIpOworICAgICAgICAgICAgdGVzdE5vbkZ1bmN0aW9uKHt9LCAiYW4gb2Jq
ZWN0Iik7CisgICAgICAgIH0pOworICAgIH0pOworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4yLjIuanMgYi9M
YXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4y
LjIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjcwNmNlOTVkMDYwMTI1YzU2NzNkMGUzYzZjOTRhOWI2NGU5NWM2
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21p
c2VzLXRlc3RzL2xpYi90ZXN0cy8yLjIuMi5qcwpAQCAtMCwwICsxLDE1MSBAQAorInVzZSBzdHJp
Y3QiOworCit2YXIgYXNzZXJ0ID0gcmVxdWlyZSgiYXNzZXJ0Iik7Cit2YXIgdGVzdEZ1bGZpbGxl
ZCA9IHJlcXVpcmUoIi4vaGVscGVycy90ZXN0VGhyZWVDYXNlcyIpLnRlc3RGdWxmaWxsZWQ7CisK
K3ZhciBhZGFwdGVyID0gZ2xvYmFsLmFkYXB0ZXI7Cit2YXIgcmVzb2x2ZWQgPSBhZGFwdGVyLnJl
c29sdmVkOwordmFyIGRlZmVycmVkID0gYWRhcHRlci5kZWZlcnJlZDsKKwordmFyIGR1bW15ID0g
eyBkdW1teTogImR1bW15IiB9OyAvLyB3ZSBmdWxmaWxsIG9yIHJlamVjdCB3aXRoIHRoaXMgd2hl
biB3ZSBkb24ndCBpbnRlbmQgdG8gdGVzdCBhZ2FpbnN0IGl0Cit2YXIgc2VudGluZWwgPSB7IHNl
bnRpbmVsOiAic2VudGluZWwiIH07IC8vIGEgc2VudGluZWwgZnVsZmlsbG1lbnQgdmFsdWUgdG8g
dGVzdCBmb3Igd2l0aCBzdHJpY3QgZXF1YWxpdHkKKworZGVzY3JpYmUoIjIuMi4yOiBJZiBgb25G
dWxmaWxsZWRgIGlzIGEgZnVuY3Rpb24sIiwgZnVuY3Rpb24gKCkgeworICAgIGRlc2NyaWJlKCIy
LjIuMi4xOiBpdCBtdXN0IGJlIGNhbGxlZCBhZnRlciBgcHJvbWlzZWAgaXMgZnVsZmlsbGVkLCB3
aXRoIGBwcm9taXNlYOKAmXMgZnVsZmlsbG1lbnQgdmFsdWUgYXMgaXRzICIgKworICAgICAgICAg
ICAgICJmaXJzdCBhcmd1bWVudC4iLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRlc3RGdWxmaWxs
ZWQoc2VudGluZWwsIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICBwcm9t
aXNlLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxsZWQodmFsdWUpIHsKKyAgICAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwodmFsdWUsIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICBkb25l
KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmli
ZSgiMi4yLjIuMjogaXQgbXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBgcHJvbWlzZWAgaXMgZnVs
ZmlsbGVkIiwgZnVuY3Rpb24gKCkgeworICAgICAgICBzcGVjaWZ5KCJmdWxmaWxsZWQgYWZ0ZXIg
YSBkZWxheSIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVk
KCk7CisgICAgICAgICAgICB2YXIgaXNGdWxmaWxsZWQgPSBmYWxzZTsKKworICAgICAgICAgICAg
ZC5wcm9taXNlLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxsZWQoKSB7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKGlzRnVsZmlsbGVkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBk
b25lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgZC5yZXNvbHZlKGR1bW15KTsKKyAgICAgICAgICAgICAg
ICBpc0Z1bGZpbGxlZCA9IHRydWU7CisgICAgICAgICAgICB9LCA1MCk7CisgICAgICAgIH0pOwor
CisgICAgICAgIHNwZWNpZnkoIm5ldmVyIGZ1bGZpbGxlZCIsIGZ1bmN0aW9uIChkb25lKSB7Cisg
ICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICB2YXIgb25GdWxmaWxs
ZWRDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICAgICAgZC5wcm9taXNlLnRoZW4oZnVuY3Rpb24g
b25GdWxmaWxsZWQoKSB7CisgICAgICAgICAgICAgICAgb25GdWxmaWxsZWRDYWxsZWQgPSB0cnVl
OworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwob25GdWxmaWxsZWRDYWxsZWQsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7
CisgICAgICAgICAgICB9LCAxNTApOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2Ny
aWJlKCIyLjIuMi4zOiBpdCBtdXN0IG5vdCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuIiwgZnVu
Y3Rpb24gKCkgeworICAgICAgICBzcGVjaWZ5KCJhbHJlYWR5LWZ1bGZpbGxlZCIsIGZ1bmN0aW9u
IChkb25lKSB7CisgICAgICAgICAgICB2YXIgdGltZXNDYWxsZWQgPSAwOworCisgICAgICAgICAg
ICByZXNvbHZlZChkdW1teSkudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAg
ICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoKyt0aW1lc0NhbGxlZCwgMSk7CisgICAgICAgICAg
ICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIHNw
ZWNpZnkoInRyeWluZyB0byBmdWxmaWxsIGEgcGVuZGluZyBwcm9taXNlIG1vcmUgdGhhbiBvbmNl
LCBpbW1lZGlhdGVseSIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICB2YXIgZCA9IGRl
ZmVycmVkKCk7CisgICAgICAgICAgICB2YXIgdGltZXNDYWxsZWQgPSAwOworCisgICAgICAgICAg
ICBkLnByb21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwoKyt0aW1lc0NhbGxlZCwgMSk7CisgICAgICAgICAgICAgICAg
ZG9uZSgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGQucmVzb2x2ZShkdW1teSk7
CisgICAgICAgICAgICBkLnJlc29sdmUoZHVtbXkpOworICAgICAgICB9KTsKKworICAgICAgICBz
cGVjaWZ5KCJ0cnlpbmcgdG8gZnVsZmlsbCBhIHBlbmRpbmcgcHJvbWlzZSBtb3JlIHRoYW4gb25j
ZSwgZGVsYXllZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICB2YXIgZCA9IGRlZmVy
cmVkKCk7CisgICAgICAgICAgICB2YXIgdGltZXNDYWxsZWQgPSAwOworCisgICAgICAgICAgICBk
LnByb21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoKyt0aW1lc0NhbGxlZCwgMSk7CisgICAgICAgICAgICAgICAgZG9u
ZSgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgIGQucmVzb2x2ZShkdW1teSk7CisgICAgICAgICAgICAgICAg
ZC5yZXNvbHZlKGR1bW15KTsKKyAgICAgICAgICAgIH0sIDUwKTsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgc3BlY2lmeSgidHJ5aW5nIHRvIGZ1bGZpbGwgYSBwZW5kaW5nIHByb21pc2UgbW9yZSB0
aGFuIG9uY2UsIGltbWVkaWF0ZWx5IHRoZW4gZGVsYXllZCIsIGZ1bmN0aW9uIChkb25lKSB7Cisg
ICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICB2YXIgdGltZXNDYWxs
ZWQgPSAwOworCisgICAgICAgICAgICBkLnByb21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxl
ZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoKyt0aW1lc0NhbGxlZCwg
MSk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgIGQucmVzb2x2ZShkdW1teSk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICBkLnJlc29sdmUoZHVtbXkpOworICAgICAgICAgICAgfSwgNTAp
OworICAgICAgICB9KTsKKworICAgICAgICBzcGVjaWZ5KCJ3aGVuIG11bHRpcGxlIGB0aGVuYCBj
YWxscyBhcmUgbWFkZSwgc3BhY2VkIGFwYXJ0IGluIHRpbWUiLCBmdW5jdGlvbiAoZG9uZSkgewor
ICAgICAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAgICAgdmFyIHRpbWVzQ2Fs
bGVkID0gWzAsIDAsIDBdOworCisgICAgICAgICAgICBkLnByb21pc2UudGhlbihmdW5jdGlvbiBv
bkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoKyt0aW1l
c0NhbGxlZFswXSwgMSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZC5wcm9taXNlLnRoZW4oZnVuY3Rpb24g
b25GdWxmaWxsZWQoKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgr
K3RpbWVzQ2FsbGVkWzFdLCAxKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0s
IDUwKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgZC5wcm9taXNlLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxsZWQoKSB7CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkWzJdLCAxKTsKKyAgICAg
ICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fSwgMTAwKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgZC5yZXNvbHZlKGR1bW15KTsKKyAgICAgICAgICAgIH0sIDE1MCk7CisgICAgICAg
IH0pOworCisgICAgICAgIHNwZWNpZnkoIndoZW4gYHRoZW5gIGlzIGludGVybGVhdmVkIHdpdGgg
ZnVsZmlsbG1lbnQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFyIGQgPSBkZWZl
cnJlZCgpOworICAgICAgICAgICAgdmFyIHRpbWVzQ2FsbGVkID0gWzAsIDBdOworCisgICAgICAg
ICAgICBkLnByb21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoKyt0aW1lc0NhbGxlZFswXSwgMSk7CisgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgZC5yZXNvbHZlKGR1bW15KTsKKworICAgICAgICAgICAgZC5w
cm9taXNlLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxsZWQoKSB7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKCsrdGltZXNDYWxsZWRbMV0sIDEpOworICAgICAgICAgICAgICAgIGRv
bmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30pOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rl
c3RzLzIuMi4zLmpzIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVz
dHMvbGliL3Rlc3RzLzIuMi4zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmMGIxNGZkYWM1MGI3NmI3OTMxM2Fl
ODg5ZDJhNGYxMjkxYzQxMGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9t
aXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4yLjMuanMKQEAgLTAsMCArMSwx
NTEgQEAKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIGFzc2VydCA9IHJlcXVpcmUoImFzc2VydCIpOwor
dmFyIHRlc3RSZWplY3RlZCA9IHJlcXVpcmUoIi4vaGVscGVycy90ZXN0VGhyZWVDYXNlcyIpLnRl
c3RSZWplY3RlZDsKKwordmFyIGFkYXB0ZXIgPSBnbG9iYWwuYWRhcHRlcjsKK3ZhciByZWplY3Rl
ZCA9IGFkYXB0ZXIucmVqZWN0ZWQ7Cit2YXIgZGVmZXJyZWQgPSBhZGFwdGVyLmRlZmVycmVkOwor
Cit2YXIgZHVtbXkgPSB7IGR1bW15OiAiZHVtbXkiIH07IC8vIHdlIGZ1bGZpbGwgb3IgcmVqZWN0
IHdpdGggdGhpcyB3aGVuIHdlIGRvbid0IGludGVuZCB0byB0ZXN0IGFnYWluc3QgaXQKK3ZhciBz
ZW50aW5lbCA9IHsgc2VudGluZWw6ICJzZW50aW5lbCIgfTsgLy8gYSBzZW50aW5lbCBmdWxmaWxs
bWVudCB2YWx1ZSB0byB0ZXN0IGZvciB3aXRoIHN0cmljdCBlcXVhbGl0eQorCitkZXNjcmliZSgi
Mi4yLjM6IElmIGBvblJlamVjdGVkYCBpcyBhIGZ1bmN0aW9uLCIsIGZ1bmN0aW9uICgpIHsKKyAg
ICBkZXNjcmliZSgiMi4yLjMuMTogaXQgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgYHByb21pc2VgIGlz
IHJlamVjdGVkLCB3aXRoIGBwcm9taXNlYOKAmXMgcmVqZWN0aW9uIHJlYXNvbiBhcyBpdHMgIiAr
CisgICAgICAgICAgICAgImZpcnN0IGFyZ3VtZW50LiIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
dGVzdFJlamVjdGVkKHNlbnRpbmVsLCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAg
ICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUmVqZWN0ZWQocmVhc29uKSB7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgc2VudGluZWwpOworICAg
ICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9
KTsKKworICAgIGRlc2NyaWJlKCIyLjIuMy4yOiBpdCBtdXN0IG5vdCBiZSBjYWxsZWQgYmVmb3Jl
IGBwcm9taXNlYCBpcyByZWplY3RlZCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgc3BlY2lmeSgi
cmVqZWN0ZWQgYWZ0ZXIgYSBkZWxheSIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICB2
YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICB2YXIgaXNSZWplY3RlZCA9IGZhbHNlOwor
CisgICAgICAgICAgICBkLnByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBvblJlamVjdGVkKCkg
eworICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc1JlamVjdGVkLCB0cnVlKTsK
KyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZC5yZWplY3QoZHVtbXkp
OworICAgICAgICAgICAgICAgIGlzUmVqZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgfSwgNTAp
OworICAgICAgICB9KTsKKworICAgICAgICBzcGVjaWZ5KCJuZXZlciByZWplY3RlZCIsIGZ1bmN0
aW9uIChkb25lKSB7CisgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAg
ICB2YXIgb25SZWplY3RlZENhbGxlZCA9IGZhbHNlOworCisgICAgICAgICAgICBkLnByb21pc2Uu
dGhlbihudWxsLCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAgICAgICAgICAgICAgIG9uUmVq
ZWN0ZWRDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwob25SZWplY3RlZENhbGxlZCwgZmFsc2UpOworICAgICAg
ICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0sIDE1MCk7CisgICAgICAgIH0pOworICAg
IH0pOworCisgICAgZGVzY3JpYmUoIjIuMi4zLjM6IGl0IG11c3Qgbm90IGJlIGNhbGxlZCBtb3Jl
IHRoYW4gb25jZS4iLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHNwZWNpZnkoImFscmVhZHktcmVq
ZWN0ZWQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFyIHRpbWVzQ2FsbGVkID0g
MDsKKworICAgICAgICAgICAgcmVqZWN0ZWQoZHVtbXkpLnRoZW4obnVsbCwgZnVuY3Rpb24gb25S
ZWplY3RlZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoKyt0aW1lc0Nh
bGxlZCwgMSk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0pOworCisgICAgICAgIHNwZWNpZnkoInRyeWluZyB0byByZWplY3QgYSBwZW5kaW5nIHBy
b21pc2UgbW9yZSB0aGFuIG9uY2UsIGltbWVkaWF0ZWx5IiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAg
ICAgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgICAgIHZhciB0aW1lc0NhbGxl
ZCA9IDA7CisKKyAgICAgICAgICAgIGQucHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUmVq
ZWN0ZWQoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKCsrdGltZXNDYWxs
ZWQsIDEpOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0pOworCisgICAg
ICAgICAgICBkLnJlamVjdChkdW1teSk7CisgICAgICAgICAgICBkLnJlamVjdChkdW1teSk7Cisg
ICAgICAgIH0pOworCisgICAgICAgIHNwZWNpZnkoInRyeWluZyB0byByZWplY3QgYSBwZW5kaW5n
IHByb21pc2UgbW9yZSB0aGFuIG9uY2UsIGRlbGF5ZWQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAg
ICAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAgICAgdmFyIHRpbWVzQ2FsbGVk
ID0gMDsKKworICAgICAgICAgICAgZC5wcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gb25SZWpl
Y3RlZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoKyt0aW1lc0NhbGxl
ZCwgMSk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGQucmVqZWN0
KGR1bW15KTsKKyAgICAgICAgICAgICAgICBkLnJlamVjdChkdW1teSk7CisgICAgICAgICAgICB9
LCA1MCk7CisgICAgICAgIH0pOworCisgICAgICAgIHNwZWNpZnkoInRyeWluZyB0byByZWplY3Qg
YSBwZW5kaW5nIHByb21pc2UgbW9yZSB0aGFuIG9uY2UsIGltbWVkaWF0ZWx5IHRoZW4gZGVsYXll
ZCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7Cisg
ICAgICAgICAgICB2YXIgdGltZXNDYWxsZWQgPSAwOworCisgICAgICAgICAgICBkLnByb21pc2Uu
dGhlbihudWxsLCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAgICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkLCAxKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7
CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZC5yZWplY3QoZHVtbXkpOworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZC5yZWplY3Qo
ZHVtbXkpOworICAgICAgICAgICAgfSwgNTApOworICAgICAgICB9KTsKKworICAgICAgICBzcGVj
aWZ5KCJ3aGVuIG11bHRpcGxlIGB0aGVuYCBjYWxscyBhcmUgbWFkZSwgc3BhY2VkIGFwYXJ0IGlu
IHRpbWUiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgp
OworICAgICAgICAgICAgdmFyIHRpbWVzQ2FsbGVkID0gWzAsIDAsIDBdOworCisgICAgICAgICAg
ICBkLnByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAgICAgICAg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkWzBdLCAxKTsKKyAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICBkLnByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAg
ICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoKyt0aW1lc0NhbGxlZFsxXSwgMSk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LCA1MCk7CisKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGQucHJvbWlzZS50aGVu
KG51bGwsIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkWzJdLCAxKTsKKyAgICAgICAgICAgICAgICAgICAg
ZG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSwgMTAwKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZC5yZWpl
Y3QoZHVtbXkpOworICAgICAgICAgICAgfSwgMTUwKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
c3BlY2lmeSgid2hlbiBgdGhlbmAgaXMgaW50ZXJsZWF2ZWQgd2l0aCByZWplY3Rpb24iLCBmdW5j
dGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAg
ICAgdmFyIHRpbWVzQ2FsbGVkID0gWzAsIDBdOworCisgICAgICAgICAgICBkLnByb21pc2UudGhl
bihudWxsLCBmdW5jdGlvbiBvblJlamVjdGVkKCkgeworICAgICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbCgrK3RpbWVzQ2FsbGVkWzBdLCAxKTsKKyAgICAgICAgICAgIH0pOworCisgICAg
ICAgICAgICBkLnJlamVjdChkdW1teSk7CisKKyAgICAgICAgICAgIGQucHJvbWlzZS50aGVuKG51
bGwsIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKCsrdGltZXNDYWxsZWRbMV0sIDEpOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30pOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi40
LmpzIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rl
c3RzLzIuMi40LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzNTkxZDI5MTY0MjBlMjZlZDNlOWZjYTRjNjU0ZDI2
YWY1ZmFlYjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0
cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4yLjQuanMKQEAgLTAsMCArMSwxODIgQEAKKyJ1
c2Ugc3RyaWN0IjsKKwordmFyIGFzc2VydCA9IHJlcXVpcmUoImFzc2VydCIpOwordmFyIHRlc3RG
dWxmaWxsZWQgPSByZXF1aXJlKCIuL2hlbHBlcnMvdGVzdFRocmVlQ2FzZXMiKS50ZXN0RnVsZmls
bGVkOwordmFyIHRlc3RSZWplY3RlZCA9IHJlcXVpcmUoIi4vaGVscGVycy90ZXN0VGhyZWVDYXNl
cyIpLnRlc3RSZWplY3RlZDsKKwordmFyIGFkYXB0ZXIgPSBnbG9iYWwuYWRhcHRlcjsKK3ZhciBy
ZXNvbHZlZCA9IGFkYXB0ZXIucmVzb2x2ZWQ7Cit2YXIgcmVqZWN0ZWQgPSBhZGFwdGVyLnJlamVj
dGVkOwordmFyIGRlZmVycmVkID0gYWRhcHRlci5kZWZlcnJlZDsKKwordmFyIGR1bW15ID0geyBk
dW1teTogImR1bW15IiB9OyAvLyB3ZSBmdWxmaWxsIG9yIHJlamVjdCB3aXRoIHRoaXMgd2hlbiB3
ZSBkb24ndCBpbnRlbmQgdG8gdGVzdCBhZ2FpbnN0IGl0CisKK2Rlc2NyaWJlKCIyLjIuNDogYG9u
RnVsZmlsbGVkYCBvciBgb25SZWplY3RlZGAgbXVzdCBub3QgYmUgY2FsbGVkIHVudGlsIHRoZSBl
eGVjdXRpb24gY29udGV4dCBzdGFjayBjb250YWlucyBvbmx5ICIgKworICAgICAgICAgInBsYXRm
b3JtIGNvZGUuIiwgZnVuY3Rpb24gKCkgeworICAgIGRlc2NyaWJlKCJgdGhlbmAgcmV0dXJucyBi
ZWZvcmUgdGhlIHByb21pc2UgYmVjb21lcyBmdWxmaWxsZWQgb3IgcmVqZWN0ZWQiLCBmdW5jdGlv
biAoKSB7CisgICAgICAgIHRlc3RGdWxmaWxsZWQoZHVtbXksIGZ1bmN0aW9uIChwcm9taXNlLCBk
b25lKSB7CisgICAgICAgICAgICB2YXIgdGhlbkhhc1JldHVybmVkID0gZmFsc2U7CisKKyAgICAg
ICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGhlbkhhc1JldHVybmVkLCB0cnVlKTsKKyAgICAgICAg
ICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgdGhlbkhhc1Jl
dHVybmVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgICAgIHRlc3RSZWplY3RlZChkdW1teSwg
ZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgIHZhciB0aGVuSGFzUmV0dXJu
ZWQgPSBmYWxzZTsKKworICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIG9u
UmVqZWN0ZWQoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRoZW5IYXNS
ZXR1cm5lZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgIHRoZW5IYXNSZXR1cm5lZCA9IHRydWU7CisgICAgICAgIH0pOworICAg
IH0pOworCisgICAgZGVzY3JpYmUoIkNsZWFuLXN0YWNrIGV4ZWN1dGlvbiBvcmRlcmluZyB0ZXN0
cyAoZnVsZmlsbG1lbnQgY2FzZSkiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHNwZWNpZnkoIndo
ZW4gYG9uRnVsZmlsbGVkYCBpcyBhZGRlZCBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIHByb21pc2Ug
aXMgZnVsZmlsbGVkIiwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICB2YXIgb25GdWxmaWxsZWRDYWxsZWQg
PSBmYWxzZTsKKworICAgICAgICAgICAgZC5wcm9taXNlLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxs
ZWQoKSB7CisgICAgICAgICAgICAgICAgb25GdWxmaWxsZWRDYWxsZWQgPSB0cnVlOworICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIGQucmVzb2x2ZShkdW1teSk7CisKKyAgICAgICAgICAg
IGFzc2VydC5zdHJpY3RFcXVhbChvbkZ1bGZpbGxlZENhbGxlZCwgZmFsc2UpOworICAgICAgICB9
KTsKKworICAgICAgICBzcGVjaWZ5KCJ3aGVuIGBvbkZ1bGZpbGxlZGAgaXMgYWRkZWQgaW1tZWRp
YXRlbHkgYWZ0ZXIgdGhlIHByb21pc2UgaXMgZnVsZmlsbGVkIiwKKyAgICAgICAgICAgICAgICBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAg
ICB2YXIgb25GdWxmaWxsZWRDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICAgICAgZC5yZXNvbHZl
KGR1bW15KTsKKworICAgICAgICAgICAgZC5wcm9taXNlLnRoZW4oZnVuY3Rpb24gb25GdWxmaWxs
ZWQoKSB7CisgICAgICAgICAgICAgICAgb25GdWxmaWxsZWRDYWxsZWQgPSB0cnVlOworICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChvbkZ1bGZpbGxlZENh
bGxlZCwgZmFsc2UpOworICAgICAgICB9KTsKKworICAgICAgICBzcGVjaWZ5KCJ3aGVuIG9uZSBg
b25GdWxmaWxsZWRgIGlzIGFkZGVkIGluc2lkZSBhbm90aGVyIGBvbkZ1bGZpbGxlZGAiLCBmdW5j
dGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFyIHByb21pc2UgPSByZXNvbHZlZCgpOworICAg
ICAgICAgICAgdmFyIGZpcnN0T25GdWxmaWxsZWRGaW5pc2hlZCA9IGZhbHNlOworCisgICAgICAg
ICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHByb21pc2Uu
dGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bChmaXJzdE9uRnVsZmlsbGVkRmluaXNoZWQsIHRydWUpOworICAgICAgICAgICAgICAgICAgICBk
b25lKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgZmlyc3RPbkZ1bGZp
bGxlZEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAg
ICAgICBzcGVjaWZ5KCJ3aGVuIGBvbkZ1bGZpbGxlZGAgaXMgYWRkZWQgaW5zaWRlIGFuIGBvblJl
amVjdGVkYCIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICB2YXIgcHJvbWlzZSA9IHJl
amVjdGVkKCk7CisgICAgICAgICAgICB2YXIgcHJvbWlzZTIgPSByZXNvbHZlZCgpOworICAgICAg
ICAgICAgdmFyIGZpcnN0T25SZWplY3RlZEZpbmlzaGVkID0gZmFsc2U7CisKKyAgICAgICAgICAg
IHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcHJvbWlz
ZTIudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbChmaXJzdE9uUmVqZWN0ZWRGaW5pc2hlZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAg
IGRvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBmaXJzdE9uUmVq
ZWN0ZWRGaW5pc2hlZCA9IHRydWU7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgc3BlY2lmeSgid2hlbiB0aGUgcHJvbWlzZSBpcyBmdWxmaWxsZWQgYXN5bmNocm9ub3Vz
bHkiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOwor
ICAgICAgICAgICAgdmFyIGZpcnN0U3RhY2tGaW5pc2hlZCA9IGZhbHNlOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBkLnJlc29sdmUoZHVt
bXkpOworICAgICAgICAgICAgICAgIGZpcnN0U3RhY2tGaW5pc2hlZCA9IHRydWU7CisgICAgICAg
ICAgICB9LCAwKTsKKworICAgICAgICAgICAgZC5wcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChmaXJzdFN0YWNrRmluaXNoZWQsIHRy
dWUpOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCJDbGVhbi1zdGFjayBleGVjdXRpb24gb3JkZXJp
bmcgdGVzdHMgKHJlamVjdGlvbiBjYXNlKSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgc3BlY2lm
eSgid2hlbiBgb25SZWplY3RlZGAgaXMgYWRkZWQgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBwcm9t
aXNlIGlzIHJlamVjdGVkIiwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICB2YXIgb25SZWplY3RlZENhbGxl
ZCA9IGZhbHNlOworCisgICAgICAgICAgICBkLnByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBv
blJlamVjdGVkKCkgeworICAgICAgICAgICAgICAgIG9uUmVqZWN0ZWRDYWxsZWQgPSB0cnVlOwor
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGQucmVqZWN0KGR1bW15KTsKKworICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKG9uUmVqZWN0ZWRDYWxsZWQsIGZhbHNlKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgc3BlY2lmeSgid2hlbiBgb25SZWplY3RlZGAgaXMgYWRkZWQgaW1t
ZWRpYXRlbHkgYWZ0ZXIgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQiLAorICAgICAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAg
ICAgIHZhciBvblJlamVjdGVkQ2FsbGVkID0gZmFsc2U7CisKKyAgICAgICAgICAgIGQucmVqZWN0
KGR1bW15KTsKKworICAgICAgICAgICAgZC5wcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gb25S
ZWplY3RlZCgpIHsKKyAgICAgICAgICAgICAgICBvblJlamVjdGVkQ2FsbGVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwob25SZWplY3Rl
ZENhbGxlZCwgZmFsc2UpOworICAgICAgICB9KTsKKworICAgICAgICBzcGVjaWZ5KCJ3aGVuIGBv
blJlamVjdGVkYCBpcyBhZGRlZCBpbnNpZGUgYW4gYG9uRnVsZmlsbGVkYCIsIGZ1bmN0aW9uIChk
b25lKSB7CisgICAgICAgICAgICB2YXIgcHJvbWlzZSA9IHJlc29sdmVkKCk7CisgICAgICAgICAg
ICB2YXIgcHJvbWlzZTIgPSByZWplY3RlZCgpOworICAgICAgICAgICAgdmFyIGZpcnN0T25GdWxm
aWxsZWRGaW5pc2hlZCA9IGZhbHNlOworCisgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIHByb21pc2UyLnRoZW4obnVsbCwgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZmlyc3RPbkZ1bGZpbGxl
ZEZpbmlzaGVkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIGZpcnN0T25GdWxmaWxsZWRGaW5pc2hlZCA9IHRy
dWU7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc3BlY2lmeSgid2hl
biBvbmUgYG9uUmVqZWN0ZWRgIGlzIGFkZGVkIGluc2lkZSBhbm90aGVyIGBvblJlamVjdGVkYCIs
IGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICB2YXIgcHJvbWlzZSA9IHJlamVjdGVkKCk7
CisgICAgICAgICAgICB2YXIgZmlyc3RPblJlamVjdGVkRmluaXNoZWQgPSBmYWxzZTsKKworICAg
ICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwoZmlyc3RPblJlamVjdGVkRmluaXNoZWQsIHRydWUpOworICAgICAg
ICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgZmlyc3RPblJlamVjdGVkRmluaXNoZWQgPSB0cnVlOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0pOworCisgICAgICAgIHNwZWNpZnkoIndoZW4gdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQg
YXN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgdmFyIGQgPSBk
ZWZlcnJlZCgpOworICAgICAgICAgICAgdmFyIGZpcnN0U3RhY2tGaW5pc2hlZCA9IGZhbHNlOwor
CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBk
LnJlamVjdChkdW1teSk7CisgICAgICAgICAgICAgICAgZmlyc3RTdGFja0ZpbmlzaGVkID0gdHJ1
ZTsKKyAgICAgICAgICAgIH0sIDApOworCisgICAgICAgICAgICBkLnByb21pc2UudGhlbihudWxs
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGZpcnN0
U3RhY2tGaW5pc2hlZCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4yLjUuanMgYi9M
YXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4y
LjUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDk2NjAwNDk4OTdlOTAxZDUwNzljYjA5ZWMyOGM5YzFiZjBkNTBj
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21p
c2VzLXRlc3RzL2xpYi90ZXN0cy8yLjIuNS5qcwpAQCAtMCwwICsxLDQ3IEBACisvKmpzaGludCBz
dHJpY3Q6IGZhbHNlICovCisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCJhc3NlcnQiKTsKKwordmFy
IGFkYXB0ZXIgPSBnbG9iYWwuYWRhcHRlcjsKK3ZhciByZXNvbHZlZCA9IGFkYXB0ZXIucmVzb2x2
ZWQ7Cit2YXIgcmVqZWN0ZWQgPSBhZGFwdGVyLnJlamVjdGVkOworCit2YXIgZHVtbXkgPSB7IGR1
bW15OiAiZHVtbXkiIH07IC8vIHdlIGZ1bGZpbGwgb3IgcmVqZWN0IHdpdGggdGhpcyB3aGVuIHdl
IGRvbid0IGludGVuZCB0byB0ZXN0IGFnYWluc3QgaXQKKworZGVzY3JpYmUoIjIuMi41IGBvbkZ1
bGZpbGxlZGAgYW5kIGBvblJlamVjdGVkYCBtdXN0IGJlIGNhbGxlZCBhcyBmdW5jdGlvbnMgKGku
ZS4gd2l0aCBubyBgdGhpc2AgdmFsdWUpLiIsIGZ1bmN0aW9uICgpIHsKKyAgICBkZXNjcmliZSgi
c3RyaWN0IG1vZGUiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHNwZWNpZnkoImZ1bGZpbGxlZCIs
IGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgICAgICByZXNvbHZlZChkdW1teSkudGhlbihmdW5j
dGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgICAgICAidXNlIHN0cmljdCI7CisKKyAg
ICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGhpcywgdW5kZWZpbmVkKTsKKyAgICAg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgc3BlY2lmeSgicmVqZWN0ZWQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICAgICAgcmVq
ZWN0ZWQoZHVtbXkpLnRoZW4obnVsbCwgZnVuY3Rpb24gb25SZWplY3RlZCgpIHsKKyAgICAgICAg
ICAgICAgICAidXNlIHN0cmljdCI7CisKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwodGhpcywgdW5kZWZpbmVkKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgic2xvcHB5IG1vZGUi
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHNwZWNpZnkoImZ1bGZpbGxlZCIsIGZ1bmN0aW9uIChk
b25lKSB7CisgICAgICAgICAgICByZXNvbHZlZChkdW1teSkudGhlbihmdW5jdGlvbiBvbkZ1bGZp
bGxlZCgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGhpcywgZ2xvYmFs
KTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgc3BlY2lmeSgicmVqZWN0ZWQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAg
ICAgICAgcmVqZWN0ZWQoZHVtbXkpLnRoZW4obnVsbCwgZnVuY3Rpb24gb25SZWplY3RlZCgpIHsK
KyAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGhpcywgZ2xvYmFsKTsKKyAgICAg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7
Cit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2Vz
LXRlc3RzL2xpYi90ZXN0cy8yLjIuNi5qcyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3Rz
L3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjIuNi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42N2VjZjA2ZmY1
MDQ3ZmQ3OWEyN2E5YTViZGEyNTQ1N2QzOWQ5NWVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMi42Lmpz
CkBAIC0wLDAgKzEsMjU3IEBACisidXNlIHN0cmljdCI7CisKK3ZhciBhc3NlcnQgPSByZXF1aXJl
KCJhc3NlcnQiKTsKK3ZhciBzaW5vbiA9IHJlcXVpcmUoInNpbm9uIik7Cit2YXIgdGVzdEZ1bGZp
bGxlZCA9IHJlcXVpcmUoIi4vaGVscGVycy90ZXN0VGhyZWVDYXNlcyIpLnRlc3RGdWxmaWxsZWQ7
Cit2YXIgdGVzdFJlamVjdGVkID0gcmVxdWlyZSgiLi9oZWxwZXJzL3Rlc3RUaHJlZUNhc2VzIiku
dGVzdFJlamVjdGVkOworCit2YXIgZHVtbXkgPSB7IGR1bW15OiAiZHVtbXkiIH07IC8vIHdlIGZ1
bGZpbGwgb3IgcmVqZWN0IHdpdGggdGhpcyB3aGVuIHdlIGRvbid0IGludGVuZCB0byB0ZXN0IGFn
YWluc3QgaXQKK3ZhciBvdGhlciA9IHsgb3RoZXI6ICJvdGhlciIgfTsgLy8gYSB2YWx1ZSB3ZSBk
b24ndCB3YW50IHRvIGJlIHN0cmljdCBlcXVhbCB0bwordmFyIHNlbnRpbmVsID0geyBzZW50aW5l
bDogInNlbnRpbmVsIiB9OyAvLyBhIHNlbnRpbmVsIGZ1bGZpbGxtZW50IHZhbHVlIHRvIHRlc3Qg
Zm9yIHdpdGggc3RyaWN0IGVxdWFsaXR5Cit2YXIgc2VudGluZWwyID0geyBzZW50aW5lbDI6ICJz
ZW50aW5lbDIiIH07Cit2YXIgc2VudGluZWwzID0geyBzZW50aW5lbDM6ICJzZW50aW5lbDMiIH07
CisKK2Z1bmN0aW9uIGNhbGxiYWNrQWdncmVnYXRvcih0aW1lcywgdWx0aW1hdGVDYWxsYmFjaykg
eworICAgIHZhciBzb0ZhciA9IDA7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
aWYgKCsrc29GYXIgPT09IHRpbWVzKSB7CisgICAgICAgICAgICB1bHRpbWF0ZUNhbGxiYWNrKCk7
CisgICAgICAgIH0KKyAgICB9OworfQorCitkZXNjcmliZSgiMi4yLjY6IGB0aGVuYCBtYXkgYmUg
Y2FsbGVkIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHByb21pc2UuIiwgZnVuY3Rpb24gKCkg
eworICAgIGRlc2NyaWJlKCIyLjIuNi4xOiBJZi93aGVuIGBwcm9taXNlYCBpcyBmdWxmaWxsZWQs
IGFsbCByZXNwZWN0aXZlIGBvbkZ1bGZpbGxlZGAgY2FsbGJhY2tzIG11c3QgZXhlY3V0ZSBpbiB0
aGUgIiArCisgICAgICAgICAgICAgIm9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5nIGNhbGxzIHRv
IGB0aGVuYC4iLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRlc2NyaWJlKCJtdWx0aXBsZSBib3Jp
bmcgZnVsZmlsbG1lbnQgaGFuZGxlcnMiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0
RnVsZmlsbGVkKHNlbnRpbmVsLCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAg
ICAgICAgIHZhciBoYW5kbGVyMSA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG90aGVyKTsKKyAgICAg
ICAgICAgICAgICB2YXIgaGFuZGxlcjIgPSBzaW5vbi5zdHViKCkucmV0dXJucyhvdGhlcik7Cisg
ICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIzID0gc2lub24uc3R1YigpLnJldHVybnMob3RoZXIp
OworCisgICAgICAgICAgICAgICAgdmFyIHNweSA9IHNpbm9uLnNweSgpOworICAgICAgICAgICAg
ICAgIHByb21pc2UudGhlbihoYW5kbGVyMSwgc3B5KTsKKyAgICAgICAgICAgICAgICBwcm9taXNl
LnRoZW4oaGFuZGxlcjIsIHNweSk7CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGhhbmRs
ZXIzLCBzcHkpOworCisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICh2YWx1
ZSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFsdWUsIHNlbnRp
bmVsKTsKKworICAgICAgICAgICAgICAgICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChoYW5k
bGVyMSwgc2lub24ubWF0Y2guc2FtZShzZW50aW5lbCkpOworICAgICAgICAgICAgICAgICAgICBz
aW5vbi5hc3NlcnQuY2FsbGVkV2l0aChoYW5kbGVyMiwgc2lub24ubWF0Y2guc2FtZShzZW50aW5l
bCkpOworICAgICAgICAgICAgICAgICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChoYW5kbGVy
Mywgc2lub24ubWF0Y2guc2FtZShzZW50aW5lbCkpOworICAgICAgICAgICAgICAgICAgICBzaW5v
bi5hc3NlcnQubm90Q2FsbGVkKHNweSk7CisKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAg
ICAgIGRlc2NyaWJlKCJtdWx0aXBsZSBmdWxmaWxsbWVudCBoYW5kbGVycywgb25lIG9mIHdoaWNo
IHRocm93cyIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRlc3RGdWxmaWxsZWQoc2VudGlu
ZWwsIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgdmFyIGhhbmRs
ZXIxID0gc2lub24uc3R1YigpLnJldHVybnMob3RoZXIpOworICAgICAgICAgICAgICAgIHZhciBo
YW5kbGVyMiA9IHNpbm9uLnN0dWIoKS50aHJvd3Mob3RoZXIpOworICAgICAgICAgICAgICAgIHZh
ciBoYW5kbGVyMyA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG90aGVyKTsKKworICAgICAgICAgICAg
ICAgIHZhciBzcHkgPSBzaW5vbi5zcHkoKTsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4o
aGFuZGxlcjEsIHNweSk7CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGhhbmRsZXIyLCBz
cHkpOworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihoYW5kbGVyMywgc3B5KTsKKworICAg
ICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbHVlLCBzZW50aW5lbCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgoaGFuZGxlcjEsIHNpbm9uLm1hdGNo
LnNhbWUoc2VudGluZWwpKTsKKyAgICAgICAgICAgICAgICAgICAgc2lub24uYXNzZXJ0LmNhbGxl
ZFdpdGgoaGFuZGxlcjIsIHNpbm9uLm1hdGNoLnNhbWUoc2VudGluZWwpKTsKKyAgICAgICAgICAg
ICAgICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgoaGFuZGxlcjMsIHNpbm9uLm1hdGNoLnNh
bWUoc2VudGluZWwpKTsKKyAgICAgICAgICAgICAgICAgICAgc2lub24uYXNzZXJ0Lm5vdENhbGxl
ZChzcHkpOworCisgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBkZXNjcmliZSgicmVz
dWx0cyBpbiBtdWx0aXBsZSBicmFuY2hpbmcgY2hhaW5zIHdpdGggdGhlaXIgb3duIGZ1bGZpbGxt
ZW50IHZhbHVlcyIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRlc3RGdWxmaWxsZWQoZHVt
bXksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgdmFyIHNlbWlE
b25lID0gY2FsbGJhY2tBZ2dyZWdhdG9yKDMsIGRvbmUpOworCisgICAgICAgICAgICAgICAgcHJv
bWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbnRp
bmVsOworICAgICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAg
ICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWx1ZSwgc2VudGluZWwpOworICAgICAg
ICAgICAgICAgICAgICBzZW1pRG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAg
dGhyb3cgc2VudGluZWwyOworICAgICAgICAgICAgICAgIH0pLnRoZW4obnVsbCwgZnVuY3Rpb24g
KHJlYXNvbikgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29u
LCBzZW50aW5lbDIpOworICAgICAgICAgICAgICAgICAgICBzZW1pRG9uZSgpOworICAgICAgICAg
ICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbnRpbmVsMzsKKyAgICAgICAgICAgICAgICB9
KS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwodmFsdWUsIHNlbnRpbmVsMyk7CisgICAgICAgICAgICAgICAgICAgIHNlbWlEb25l
KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgZGVzY3JpYmUoImBvbkZ1bGZpbGxlZGAgaGFuZGxlcnMgYXJlIGNhbGxlZCBpbiB0
aGUgb3JpZ2luYWwgb3JkZXIiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0RnVsZmls
bGVkKGR1bW15LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgIHZh
ciBoYW5kbGVyMSA9IHNpbm9uLnNweShmdW5jdGlvbiBoYW5kbGVyMSgpIHt9KTsKKyAgICAgICAg
ICAgICAgICB2YXIgaGFuZGxlcjIgPSBzaW5vbi5zcHkoZnVuY3Rpb24gaGFuZGxlcjIoKSB7fSk7
CisgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIzID0gc2lub24uc3B5KGZ1bmN0aW9uIGhhbmRs
ZXIzKCkge30pOworCisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGhhbmRsZXIxKTsKKyAg
ICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oaGFuZGxlcjIpOworICAgICAgICAgICAgICAgIHBy
b21pc2UudGhlbihoYW5kbGVyMyk7CisKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBzaW5vbi5hc3NlcnQuY2FsbE9yZGVyKGhh
bmRsZXIxLCBoYW5kbGVyMiwgaGFuZGxlcjMpOworICAgICAgICAgICAgICAgICAgICBkb25lKCk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZGVz
Y3JpYmUoImV2ZW4gd2hlbiBvbmUgaGFuZGxlciBpcyBhZGRlZCBpbnNpZGUgYW5vdGhlciBoYW5k
bGVyIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHRlc3RGdWxmaWxsZWQoZHVtbXks
IGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBoYW5k
bGVyMSA9IHNpbm9uLnNweShmdW5jdGlvbiBoYW5kbGVyMSgpIHt9KTsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIGhhbmRsZXIyID0gc2lub24uc3B5KGZ1bmN0aW9uIGhhbmRsZXIyKCkge30pOwor
ICAgICAgICAgICAgICAgICAgICB2YXIgaGFuZGxlcjMgPSBzaW5vbi5zcHkoZnVuY3Rpb24gaGFu
ZGxlcjMoKSB7fSk7CisKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIxKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBwcm9taXNlLnRoZW4oaGFuZGxlcjMpOworICAgICAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGhhbmRsZXIyKTsKKworICAgICAg
ICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gR2l2ZSBpbXBsZW1lbnRhdGlvbnMgYSBiaXQgb2YgZXh0cmEgdGltZSB0byBm
bHVzaCB0aGVpciBpbnRlcm5hbCBxdWV1ZSwgaWYgbmVjZXNzYXJ5LgorICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2lub24uYXNzZXJ0LmNhbGxPcmRlcihoYW5kbGVyMSwgaGFuZGxlcjIsIGhhbmRsZXIz
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9LCAxNSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3Jp
YmUoIjIuMi42LjI6IElmL3doZW4gYHByb21pc2VgIGlzIHJlamVjdGVkLCBhbGwgcmVzcGVjdGl2
ZSBgb25SZWplY3RlZGAgY2FsbGJhY2tzIG11c3QgZXhlY3V0ZSBpbiB0aGUgIiArCisgICAgICAg
ICAgICAgIm9yZGVyIG9mIHRoZWlyIG9yaWdpbmF0aW5nIGNhbGxzIHRvIGB0aGVuYC4iLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgIGRlc2NyaWJlKCJtdWx0aXBsZSBib3JpbmcgcmVqZWN0aW9uIGhh
bmRsZXJzIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGVzdFJlamVjdGVkKHNlbnRpbmVs
LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgIHZhciBoYW5kbGVy
MSA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG90aGVyKTsKKyAgICAgICAgICAgICAgICB2YXIgaGFu
ZGxlcjIgPSBzaW5vbi5zdHViKCkucmV0dXJucyhvdGhlcik7CisgICAgICAgICAgICAgICAgdmFy
IGhhbmRsZXIzID0gc2lub24uc3R1YigpLnJldHVybnMob3RoZXIpOworCisgICAgICAgICAgICAg
ICAgdmFyIHNweSA9IHNpbm9uLnNweSgpOworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihz
cHksIGhhbmRsZXIxKTsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oc3B5LCBoYW5kbGVy
Mik7CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKHNweSwgaGFuZGxlcjMpOworCisgICAg
ICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICAg
ICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgc2VudGluZWwpOworCisg
ICAgICAgICAgICAgICAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKGhhbmRsZXIxLCBzaW5v
bi5tYXRjaC5zYW1lKHNlbnRpbmVsKSk7CisgICAgICAgICAgICAgICAgICAgIHNpbm9uLmFzc2Vy
dC5jYWxsZWRXaXRoKGhhbmRsZXIyLCBzaW5vbi5tYXRjaC5zYW1lKHNlbnRpbmVsKSk7CisgICAg
ICAgICAgICAgICAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKGhhbmRsZXIzLCBzaW5vbi5t
YXRjaC5zYW1lKHNlbnRpbmVsKSk7CisgICAgICAgICAgICAgICAgICAgIHNpbm9uLmFzc2VydC5u
b3RDYWxsZWQoc3B5KTsKKworICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3Jp
YmUoIm11bHRpcGxlIHJlamVjdGlvbiBoYW5kbGVycywgb25lIG9mIHdoaWNoIHRocm93cyIsIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRlc3RSZWplY3RlZChzZW50aW5lbCwgZnVuY3Rpb24g
KHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICB2YXIgaGFuZGxlcjEgPSBzaW5vbi5z
dHViKCkucmV0dXJucyhvdGhlcik7CisgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIyID0gc2lu
b24uc3R1YigpLnRocm93cyhvdGhlcik7CisgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIzID0g
c2lub24uc3R1YigpLnJldHVybnMob3RoZXIpOworCisgICAgICAgICAgICAgICAgdmFyIHNweSA9
IHNpbm9uLnNweSgpOworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihzcHksIGhhbmRsZXIx
KTsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oc3B5LCBoYW5kbGVyMik7CisgICAgICAg
ICAgICAgICAgcHJvbWlzZS50aGVuKHNweSwgaGFuZGxlcjMpOworCisgICAgICAgICAgICAgICAg
cHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgc2VudGluZWwpOworCisgICAgICAgICAgICAg
ICAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKGhhbmRsZXIxLCBzaW5vbi5tYXRjaC5zYW1l
KHNlbnRpbmVsKSk7CisgICAgICAgICAgICAgICAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRo
KGhhbmRsZXIyLCBzaW5vbi5tYXRjaC5zYW1lKHNlbnRpbmVsKSk7CisgICAgICAgICAgICAgICAg
ICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKGhhbmRsZXIzLCBzaW5vbi5tYXRjaC5zYW1lKHNl
bnRpbmVsKSk7CisgICAgICAgICAgICAgICAgICAgIHNpbm9uLmFzc2VydC5ub3RDYWxsZWQoc3B5
KTsKKworICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3JpYmUoInJlc3VsdHMg
aW4gbXVsdGlwbGUgYnJhbmNoaW5nIGNoYWlucyB3aXRoIHRoZWlyIG93biBmdWxmaWxsbWVudCB2
YWx1ZXMiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0UmVqZWN0ZWQoc2VudGluZWws
IGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgdmFyIHNlbWlEb25l
ID0gY2FsbGJhY2tBZ2dyZWdhdG9yKDMsIGRvbmUpOworCisgICAgICAgICAgICAgICAgcHJvbWlz
ZS50aGVuKG51bGwsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNl
bnRpbmVsOworICAgICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7CisgICAg
ICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWx1ZSwgc2VudGluZWwpOworICAg
ICAgICAgICAgICAgICAgICBzZW1pRG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAg
ICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdGhyb3cgc2VudGluZWwyOworICAgICAgICAgICAgICAgIH0pLnRoZW4obnVsbCwg
ZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwocmVhc29uLCBzZW50aW5lbDIpOworICAgICAgICAgICAgICAgICAgICBzZW1pRG9uZSgpOwor
ICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGws
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbnRpbmVsMzsKKyAg
ICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICAgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFsdWUsIHNlbnRpbmVsMyk7CisgICAgICAgICAgICAg
ICAgICAgIHNlbWlEb25lKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3JpYmUoImBvblJlamVjdGVkYCBoYW5kbGVycyBh
cmUgY2FsbGVkIGluIHRoZSBvcmlnaW5hbCBvcmRlciIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIHRlc3RSZWplY3RlZChkdW1teSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAg
ICAgICAgICAgICB2YXIgaGFuZGxlcjEgPSBzaW5vbi5zcHkoZnVuY3Rpb24gaGFuZGxlcjEoKSB7
fSk7CisgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIyID0gc2lub24uc3B5KGZ1bmN0aW9uIGhh
bmRsZXIyKCkge30pOworICAgICAgICAgICAgICAgIHZhciBoYW5kbGVyMyA9IHNpbm9uLnNweShm
dW5jdGlvbiBoYW5kbGVyMygpIHt9KTsKKworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihu
dWxsLCBoYW5kbGVyMSk7CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGhhbmRs
ZXIyKTsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgaGFuZGxlcjMpOworCisg
ICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgc2lub24uYXNzZXJ0LmNhbGxPcmRlcihoYW5kbGVyMSwgaGFuZGxlcjIsIGhh
bmRsZXIzKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJldmVuIHdoZW4gb25l
IGhhbmRsZXIgaXMgYWRkZWQgaW5zaWRlIGFub3RoZXIgaGFuZGxlciIsIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICB0ZXN0UmVqZWN0ZWQoZHVtbXksIGZ1bmN0aW9uIChwcm9taXNlLCBk
b25lKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBoYW5kbGVyMSA9IHNpbm9uLnNweShmdW5j
dGlvbiBoYW5kbGVyMSgpIHt9KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIyID0g
c2lub24uc3B5KGZ1bmN0aW9uIGhhbmRsZXIyKCkge30pOworICAgICAgICAgICAgICAgICAgICB2
YXIgaGFuZGxlcjMgPSBzaW5vbi5zcHkoZnVuY3Rpb24gaGFuZGxlcjMoKSB7fSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGhhbmRsZXIxKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9t
aXNlLnRoZW4obnVsbCwgaGFuZGxlcjMpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGhhbmRsZXIyKTsKKworICAgICAgICAg
ICAgICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gR2l2ZSBpbXBsZW1lbnRhdGlvbnMgYSBiaXQgb2YgZXh0cmEgdGltZSB0
byBmbHVzaCB0aGVpciBpbnRlcm5hbCBxdWV1ZSwgaWYgbmVjZXNzYXJ5LgorICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2lub24uYXNzZXJ0LmNhbGxPcmRlcihoYW5kbGVyMSwgaGFuZGxlcjIsIGhhbmRs
ZXIzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9LCAxNSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfSk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIv
dGVzdHMvMi4yLjcuanMgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10
ZXN0cy9saWIvdGVzdHMvMi4yLjcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDhlNmNhMzVkZTY3MTM5NTdmNjhj
MTA3MzZiMzUwNTM0Mzc1N2Y1OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3By
b21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy8yLjIuNy5qcwpAQCAtMCwwICsx
LDEwOSBAQAorInVzZSBzdHJpY3QiOworCit2YXIgYXNzZXJ0ID0gcmVxdWlyZSgiYXNzZXJ0Iik7
Cit2YXIgdGVzdEZ1bGZpbGxlZCA9IHJlcXVpcmUoIi4vaGVscGVycy90ZXN0VGhyZWVDYXNlcyIp
LnRlc3RGdWxmaWxsZWQ7Cit2YXIgdGVzdFJlamVjdGVkID0gcmVxdWlyZSgiLi9oZWxwZXJzL3Rl
c3RUaHJlZUNhc2VzIikudGVzdFJlamVjdGVkOwordmFyIHJlYXNvbnMgPSByZXF1aXJlKCIuL2hl
bHBlcnMvcmVhc29ucyIpOworCit2YXIgYWRhcHRlciA9IGdsb2JhbC5hZGFwdGVyOwordmFyIGRl
ZmVycmVkID0gYWRhcHRlci5kZWZlcnJlZDsKKwordmFyIGR1bW15ID0geyBkdW1teTogImR1bW15
IiB9OyAvLyB3ZSBmdWxmaWxsIG9yIHJlamVjdCB3aXRoIHRoaXMgd2hlbiB3ZSBkb24ndCBpbnRl
bmQgdG8gdGVzdCBhZ2FpbnN0IGl0Cit2YXIgc2VudGluZWwgPSB7IHNlbnRpbmVsOiAic2VudGlu
ZWwiIH07IC8vIGEgc2VudGluZWwgZnVsZmlsbG1lbnQgdmFsdWUgdG8gdGVzdCBmb3Igd2l0aCBz
dHJpY3QgZXF1YWxpdHkKK3ZhciBvdGhlciA9IHsgb3RoZXI6ICJvdGhlciIgfTsgLy8gYSB2YWx1
ZSB3ZSBkb24ndCB3YW50IHRvIGJlIHN0cmljdCBlcXVhbCB0bworCitkZXNjcmliZSgiMi4yLjc6
IGB0aGVuYCBtdXN0IHJldHVybiBhIHByb21pc2U6IGBwcm9taXNlMiA9IHByb21pc2UxLnRoZW4o
b25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpYCIsIGZ1bmN0aW9uICgpIHsKKyAgICBzcGVjaWZ5KCJp
cyBhIHByb21pc2UiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBwcm9taXNlMSA9IGRlZmVy
cmVkKCkucHJvbWlzZTsKKyAgICAgICAgdmFyIHByb21pc2UyID0gcHJvbWlzZTEudGhlbigpOwor
CisgICAgICAgIGFzc2VydCh0eXBlb2YgcHJvbWlzZTIgPT09ICJvYmplY3QiIHx8IHR5cGVvZiBw
cm9taXNlMiA9PT0gImZ1bmN0aW9uIik7CisgICAgICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChw
cm9taXNlMiwgbnVsbCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0eXBlb2YgcHJvbWlz
ZTIudGhlbiwgImZ1bmN0aW9uIik7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgiMi4yLjcuMTog
SWYgZWl0aGVyIGBvbkZ1bGZpbGxlZGAgb3IgYG9uUmVqZWN0ZWRgIHJldHVybnMgYSB2YWx1ZSBg
eGAsIHJ1biB0aGUgUHJvbWlzZSBSZXNvbHV0aW9uICIgKworICAgICAgICAgICAgICJQcm9jZWR1
cmUgYFtbUmVzb2x2ZV1dKHByb21pc2UyLCB4KWAiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHNw
ZWNpZnkoInNlZSBzZXBhcmF0ZSAzLjMgdGVzdHMiLCBmdW5jdGlvbiAoKSB7IH0pOworICAgIH0p
OworCisgICAgZGVzY3JpYmUoIjIuMi43LjI6IElmIGVpdGhlciBgb25GdWxmaWxsZWRgIG9yIGBv
blJlamVjdGVkYCB0aHJvd3MgYW4gZXhjZXB0aW9uIGBlYCwgYHByb21pc2UyYCBtdXN0IGJlIHJl
amVjdGVkICIgKworICAgICAgICAgICAgICJ3aXRoIGBlYCBhcyB0aGUgcmVhc29uLiIsIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgZnVuY3Rpb24gdGVzdFJlYXNvbihleHBlY3RlZFJlYXNvbiwgc3Ry
aW5nUmVwcmVzZW50YXRpb24pIHsKKyAgICAgICAgICAgIGRlc2NyaWJlKCJUaGUgcmVhc29uIGlz
ICIgKyBzdHJpbmdSZXByZXNlbnRhdGlvbiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
IHRlc3RGdWxmaWxsZWQoZHVtbXksIGZ1bmN0aW9uIChwcm9taXNlMSwgZG9uZSkgeworICAgICAg
ICAgICAgICAgICAgICB2YXIgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKGZ1bmN0aW9uIG9uRnVs
ZmlsbGVkKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXhwZWN0ZWRSZWFzb247
CisgICAgICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgICAgIHByb21pc2Uy
LnRoZW4obnVsbCwgZnVuY3Rpb24gb25Qcm9taXNlMlJlamVjdGVkKGFjdHVhbFJlYXNvbikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFjdHVhbFJlYXNvbiwg
ZXhwZWN0ZWRSZWFzb24pOworICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB0
ZXN0UmVqZWN0ZWQoZHVtbXksIGZ1bmN0aW9uIChwcm9taXNlMSwgZG9uZSkgeworICAgICAgICAg
ICAgICAgICAgICB2YXIgcHJvbWlzZTIgPSBwcm9taXNlMS50aGVuKG51bGwsIGZ1bmN0aW9uIG9u
UmVqZWN0ZWQoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBleHBlY3RlZFJlYXNv
bjsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlz
ZTIudGhlbihudWxsLCBmdW5jdGlvbiBvblByb21pc2UyUmVqZWN0ZWQoYWN0dWFsUmVhc29uKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYWN0dWFsUmVhc29u
LCBleHBlY3RlZFJlYXNvbik7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAg
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0KKworICAgICAgICBPYmplY3Qua2V5cyhyZWFzb25zKS5mb3JFYWNoKGZ1bmN0
aW9uIChzdHJpbmdSZXByZXNlbnRhdGlvbikgeworICAgICAgICAgICAgdGVzdFJlYXNvbihyZWFz
b25zW3N0cmluZ1JlcHJlc2VudGF0aW9uXSwgc3RyaW5nUmVwcmVzZW50YXRpb24pOworICAgICAg
ICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCIyLjIuNy4zOiBJZiBgb25GdWxmaWxsZWRg
IGlzIG5vdCBhIGZ1bmN0aW9uIGFuZCBgcHJvbWlzZTFgIGlzIGZ1bGZpbGxlZCwgYHByb21pc2Uy
YCBtdXN0IGJlIGZ1bGZpbGxlZCAiICsKKyAgICAgICAgICAgICAid2l0aCB0aGUgc2FtZSB2YWx1
ZS4iLCBmdW5jdGlvbiAoKSB7CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdE5vbkZ1bmN0aW9uKG5v
bkZ1bmN0aW9uLCBzdHJpbmdSZXByZXNlbnRhdGlvbikgeworICAgICAgICAgICAgZGVzY3JpYmUo
ImBvbkZ1bGZpbGxlZGAgaXMgIiArIHN0cmluZ1JlcHJlc2VudGF0aW9uLCBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgdGVzdEZ1bGZpbGxlZChzZW50aW5lbCwgZnVuY3Rpb24gKHByb21p
c2UxLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBwcm9taXNlMiA9IHByb21pc2Ux
LnRoZW4obm9uRnVuY3Rpb24pOworCisgICAgICAgICAgICAgICAgICAgIHByb21pc2UyLnRoZW4o
ZnVuY3Rpb24gb25Qcm9taXNlMkZ1bGZpbGxlZCh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbHVlLCBzZW50aW5lbCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICB0ZXN0Tm9uRnVu
Y3Rpb24odW5kZWZpbmVkLCAiYHVuZGVmaW5lZGAiKTsKKyAgICAgICAgdGVzdE5vbkZ1bmN0aW9u
KG51bGwsICJgbnVsbGAiKTsKKyAgICAgICAgdGVzdE5vbkZ1bmN0aW9uKGZhbHNlLCAiYGZhbHNl
YCIpOworICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24oNSwgImA1YCIpOworICAgICAgICB0ZXN0Tm9u
RnVuY3Rpb24oe30sICJhbiBvYmplY3QiKTsKKyAgICAgICAgdGVzdE5vbkZ1bmN0aW9uKFtmdW5j
dGlvbiAoKSB7IHJldHVybiBvdGhlcjsgfV0sICJhbiBhcnJheSBjb250YWluaW5nIGEgZnVuY3Rp
b24iKTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCIyLjIuNy40OiBJZiBgb25SZWplY3RlZGAg
aXMgbm90IGEgZnVuY3Rpb24gYW5kIGBwcm9taXNlMWAgaXMgcmVqZWN0ZWQsIGBwcm9taXNlMmAg
bXVzdCBiZSByZWplY3RlZCAiICsKKyAgICAgICAgICAgICAid2l0aCB0aGUgc2FtZSByZWFzb24u
IiwgZnVuY3Rpb24gKCkgeworCisgICAgICAgIGZ1bmN0aW9uIHRlc3ROb25GdW5jdGlvbihub25G
dW5jdGlvbiwgc3RyaW5nUmVwcmVzZW50YXRpb24pIHsKKyAgICAgICAgICAgIGRlc2NyaWJlKCJg
b25SZWplY3RlZGAgaXMgIiArIHN0cmluZ1JlcHJlc2VudGF0aW9uLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgdGVzdFJlamVjdGVkKHNlbnRpbmVsLCBmdW5jdGlvbiAocHJvbWlzZTEs
IGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHByb21pc2UyID0gcHJvbWlzZTEudGhl
bihudWxsLCBub25GdW5jdGlvbik7CisKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZTIudGhl
bihudWxsLCBmdW5jdGlvbiBvblByb21pc2UyUmVqZWN0ZWQocmVhc29uKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29uLCBzZW50aW5lbCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICB0
ZXN0Tm9uRnVuY3Rpb24odW5kZWZpbmVkLCAiYHVuZGVmaW5lZGAiKTsKKyAgICAgICAgdGVzdE5v
bkZ1bmN0aW9uKG51bGwsICJgbnVsbGAiKTsKKyAgICAgICAgdGVzdE5vbkZ1bmN0aW9uKGZhbHNl
LCAiYGZhbHNlYCIpOworICAgICAgICB0ZXN0Tm9uRnVuY3Rpb24oNSwgImA1YCIpOworICAgICAg
ICB0ZXN0Tm9uRnVuY3Rpb24oe30sICJhbiBvYmplY3QiKTsKKyAgICAgICAgdGVzdE5vbkZ1bmN0
aW9uKFtmdW5jdGlvbiAoKSB7IHJldHVybiBvdGhlcjsgfV0sICJhbiBhcnJheSBjb250YWluaW5n
IGEgZnVuY3Rpb24iKTsKKyAgICB9KTsKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
cHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMy4xLmpzIGIvTGF5b3V0
VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMy4xLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU3MGJjNGM2OGY2MTVkMGUyNWJhMGQxYWExNzQ3MTJmNTExZTg5MjUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10
ZXN0cy9saWIvdGVzdHMvMi4zLjEuanMKQEAgLTAsMCArMSwzNCBAQAorInVzZSBzdHJpY3QiOwor
Cit2YXIgYXNzZXJ0ID0gcmVxdWlyZSgiYXNzZXJ0Iik7CisKK3ZhciBhZGFwdGVyID0gZ2xvYmFs
LmFkYXB0ZXI7Cit2YXIgcmVzb2x2ZWQgPSBhZGFwdGVyLnJlc29sdmVkOwordmFyIHJlamVjdGVk
ID0gYWRhcHRlci5yZWplY3RlZDsKKwordmFyIGR1bW15ID0geyBkdW1teTogImR1bW15IiB9OyAv
LyB3ZSBmdWxmaWxsIG9yIHJlamVjdCB3aXRoIHRoaXMgd2hlbiB3ZSBkb24ndCBpbnRlbmQgdG8g
dGVzdCBhZ2FpbnN0IGl0CisKK2Rlc2NyaWJlKCIyLjMuMTogSWYgYHByb21pc2VgIGFuZCBgeGAg
cmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0LCByZWplY3QgYHByb21pc2VgIHdpdGggYSBgVHlwZUVy
cm9yJyBhcyB0aGUgcmVhc29uLiIsCisgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgc3BlY2lm
eSgidmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21pc2UiLCBmdW5jdGlvbiAoZG9uZSkg
eworICAgICAgICB2YXIgcHJvbWlzZSA9IHJlc29sdmVkKGR1bW15KS50aGVuKGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIHJldHVybiBwcm9taXNlOworICAgICAgICB9KTsKKworICAgICAgICBw
cm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAgICAgYXNzZXJ0
KHJlYXNvbiBpbnN0YW5jZW9mIFR5cGVFcnJvcik7CisgICAgICAgICAgICBkb25lKCk7CisgICAg
ICAgIH0pOworICAgIH0pOworCisgICAgc3BlY2lmeSgidmlhIHJldHVybiBmcm9tIGEgcmVqZWN0
ZWQgcHJvbWlzZSIsIGZ1bmN0aW9uIChkb25lKSB7CisgICAgICAgIHZhciBwcm9taXNlID0gcmVq
ZWN0ZWQoZHVtbXkpLnRoZW4obnVsbCwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJu
IHByb21pc2U7CisgICAgICAgIH0pOworCisgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5j
dGlvbiAocmVhc29uKSB7CisgICAgICAgICAgICBhc3NlcnQocmVhc29uIGluc3RhbmNlb2YgVHlw
ZUVycm9yKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3Rz
L2xpYi90ZXN0cy8yLjMuMi5qcyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21p
c2VzLXRlc3RzL2xpYi90ZXN0cy8yLjMuMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2QwODg5MWQ0NWQ2OGRk
MzQ4ZjVjZDc3ZjkwNWI4MjcwMmY5NmVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMy4yLmpzCkBAIC0w
LDAgKzEsMTI2IEBACisidXNlIHN0cmljdCI7CisKK3ZhciBhc3NlcnQgPSByZXF1aXJlKCJhc3Nl
cnQiKTsKKwordmFyIGFkYXB0ZXIgPSBnbG9iYWwuYWRhcHRlcjsKK3ZhciByZXNvbHZlZCA9IGFk
YXB0ZXIucmVzb2x2ZWQ7Cit2YXIgcmVqZWN0ZWQgPSBhZGFwdGVyLnJlamVjdGVkOwordmFyIGRl
ZmVycmVkID0gYWRhcHRlci5kZWZlcnJlZDsKKwordmFyIGR1bW15ID0geyBkdW1teTogImR1bW15
IiB9OyAvLyB3ZSBmdWxmaWxsIG9yIHJlamVjdCB3aXRoIHRoaXMgd2hlbiB3ZSBkb24ndCBpbnRl
bmQgdG8gdGVzdCBhZ2FpbnN0IGl0Cit2YXIgc2VudGluZWwgPSB7IHNlbnRpbmVsOiAic2VudGlu
ZWwiIH07IC8vIGEgc2VudGluZWwgZnVsZmlsbG1lbnQgdmFsdWUgdG8gdGVzdCBmb3Igd2l0aCBz
dHJpY3QgZXF1YWxpdHkKKworZnVuY3Rpb24gdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5
LCB0ZXN0KSB7CisgICAgc3BlY2lmeSgidmlhIHJldHVybiBmcm9tIGEgZnVsZmlsbGVkIHByb21p
c2UiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICB2YXIgcHJvbWlzZSA9IHJlc29sdmVkKGR1
bW15KS50aGVuKGZ1bmN0aW9uIG9uQmFzZVByb21pc2VGdWxmaWxsZWQoKSB7CisgICAgICAgICAg
ICByZXR1cm4geEZhY3RvcnkoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgdGVzdChwcm9taXNl
LCBkb25lKTsKKyAgICB9KTsKKworICAgIHNwZWNpZnkoInZpYSByZXR1cm4gZnJvbSBhIHJlamVj
dGVkIHByb21pc2UiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICB2YXIgcHJvbWlzZSA9IHJl
amVjdGVkKGR1bW15KS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uQmFzZVByb21pc2VSZWplY3RlZCgp
IHsKKyAgICAgICAgICAgIHJldHVybiB4RmFjdG9yeSgpOworICAgICAgICB9KTsKKworICAgICAg
ICB0ZXN0KHByb21pc2UsIGRvbmUpOworICAgIH0pOworfQorCitkZXNjcmliZSgiMi4zLjI6IElm
IGB4YCBpcyBhIHByb21pc2UsIGFkb3B0IGl0cyBzdGF0ZSIsIGZ1bmN0aW9uICgpIHsKKyAgICBk
ZXNjcmliZSgiMi4zLjIuMTogSWYgYHhgIGlzIHBlbmRpbmcsIGBwcm9taXNlYCBtdXN0IHJlbWFp
biBwZW5kaW5nIHVudGlsIGB4YCBpcyBmdWxmaWxsZWQgb3IgcmVqZWN0ZWQuIiwKKyAgICAgICAg
ICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAg
ICAgICAgcmV0dXJuIGRlZmVycmVkKCkucHJvbWlzZTsKKyAgICAgICAgfQorCisgICAgICAgIHRl
c3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsK
KyAgICAgICAgICAgIHZhciB3YXNGdWxmaWxsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHZhciB3
YXNSZWplY3RlZCA9IGZhbHNlOworCisgICAgICAgICAgICBwcm9taXNlLnRoZW4oCisgICAgICAg
ICAgICAgICAgZnVuY3Rpb24gb25Qcm9taXNlRnVsZmlsbGVkKCkgeworICAgICAgICAgICAgICAg
ICAgICB3YXNGdWxmaWxsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gb25Qcm9taXNlUmVqZWN0ZWQoKSB7CisgICAgICAgICAgICAgICAgICAg
IHdhc1JlamVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICApOwor
CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwod2FzRnVsZmlsbGVkLCBmYWxzZSk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0LnN0cmljdEVxdWFsKHdhc1JlamVjdGVkLCBmYWxzZSk7CisgICAgICAgICAgICAgICAg
ZG9uZSgpOworICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAg
ICBkZXNjcmliZSgiMi4zLjIuMjogSWYvd2hlbiBgeGAgaXMgZnVsZmlsbGVkLCBmdWxmaWxsIGBw
cm9taXNlYCB3aXRoIHRoZSBzYW1lIHZhbHVlLiIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZGVz
Y3JpYmUoImB4YCBpcyBhbHJlYWR5LWZ1bGZpbGxlZCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZl
ZChzZW50aW5lbCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRlc3RQcm9taXNlUmVz
b2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAg
ICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gb25Qcm9taXNlRnVsZmlsbGVkKHZhbHVlKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWx1ZSwgc2VudGluZWwpOwor
ICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3JpYmUoImB4YCBpcyBldmVudHVh
bGx5LWZ1bGZpbGxlZCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZhciBkID0gbnVsbDsK
KworICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgZCA9
IGRlZmVycmVkKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGQucmVzb2x2ZShzZW50aW5lbCk7CisgICAgICAgICAgICAgICAg
fSwgNTApOworICAgICAgICAgICAgICAgIHJldHVybiBkLnByb21pc2U7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24g
KHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24g
b25Qcm9taXNlRnVsZmlsbGVkKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5z
dHJpY3RFcXVhbCh2YWx1ZSwgc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICBkb25lKCk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAg
fSk7CisKKyAgICBkZXNjcmliZSgiMi4zLjIuMzogSWYvd2hlbiBgeGAgaXMgcmVqZWN0ZWQsIHJl
amVjdCBgcHJvbWlzZWAgd2l0aCB0aGUgc2FtZSByZWFzb24uIiwgZnVuY3Rpb24gKCkgeworICAg
ICAgICBkZXNjcmliZSgiYHhgIGlzIGFscmVhZHktcmVqZWN0ZWQiLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
cmVqZWN0ZWQoc2VudGluZWwpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZXN0UHJv
bWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAg
ICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uUHJvbWlzZVJlamVjdGVk
KHJlYXNvbikgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29u
LCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBkZXNjcmliZSgi
YHhgIGlzIGV2ZW50dWFsbHktcmVqZWN0ZWQiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2
YXIgZCA9IG51bGw7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAg
ICAgICAgICAgIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBkLnJlamVjdChzZW50aW5lbCk7CisgICAg
ICAgICAgICAgICAgfSwgNTApOworICAgICAgICAgICAgICAgIHJldHVybiBkLnByb21pc2U7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9y
eSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRo
ZW4obnVsbCwgZnVuY3Rpb24gb25Qcm9taXNlUmVqZWN0ZWQocmVhc29uKSB7CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZWFzb24sIHNlbnRpbmVsKTsKKyAgICAgICAg
ICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0pOworICAgIH0pOworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9w
cm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4zLjMuanMgYi9MYXlvdXRU
ZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMvMi4zLjMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmQ1ZTEzNWYyZWIyODNmMmNlN2ZmZGQ0Y2FlMGRkNzZhOTAyOWE4YwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRl
c3RzL2xpYi90ZXN0cy8yLjMuMy5qcwpAQCAtMCwwICsxLDk2OSBAQAorInVzZSBzdHJpY3QiOwor
Cit2YXIgYXNzZXJ0ID0gcmVxdWlyZSgiYXNzZXJ0Iik7Cit2YXIgdGhlbmFibGVzID0gcmVxdWly
ZSgiLi9oZWxwZXJzL3RoZW5hYmxlcyIpOwordmFyIHJlYXNvbnMgPSByZXF1aXJlKCIuL2hlbHBl
cnMvcmVhc29ucyIpOworCit2YXIgYWRhcHRlciA9IGdsb2JhbC5hZGFwdGVyOwordmFyIHJlc29s
dmVkID0gYWRhcHRlci5yZXNvbHZlZDsKK3ZhciByZWplY3RlZCA9IGFkYXB0ZXIucmVqZWN0ZWQ7
Cit2YXIgZGVmZXJyZWQgPSBhZGFwdGVyLmRlZmVycmVkOworCit2YXIgZHVtbXkgPSB7IGR1bW15
OiAiZHVtbXkiIH07IC8vIHdlIGZ1bGZpbGwgb3IgcmVqZWN0IHdpdGggdGhpcyB3aGVuIHdlIGRv
bid0IGludGVuZCB0byB0ZXN0IGFnYWluc3QgaXQKK3ZhciBzZW50aW5lbCA9IHsgc2VudGluZWw6
ICJzZW50aW5lbCIgfTsgLy8gYSBzZW50aW5lbCBmdWxmaWxsbWVudCB2YWx1ZSB0byB0ZXN0IGZv
ciB3aXRoIHN0cmljdCBlcXVhbGl0eQordmFyIG90aGVyID0geyBvdGhlcjogIm90aGVyIiB9OyAv
LyBhIHZhbHVlIHdlIGRvbid0IHdhbnQgdG8gYmUgc3RyaWN0IGVxdWFsIHRvCit2YXIgc2VudGlu
ZWxBcnJheSA9IFtzZW50aW5lbF07IC8vIGEgc2VudGluZWwgZnVsZmlsbG1lbnQgdmFsdWUgdG8g
dGVzdCB3aGVuIHdlIG5lZWQgYW4gYXJyYXkKKworZnVuY3Rpb24gdGVzdFByb21pc2VSZXNvbHV0
aW9uKHhGYWN0b3J5LCB0ZXN0KSB7CisgICAgc3BlY2lmeSgidmlhIHJldHVybiBmcm9tIGEgZnVs
ZmlsbGVkIHByb21pc2UiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICB2YXIgcHJvbWlzZSA9
IHJlc29sdmVkKGR1bW15KS50aGVuKGZ1bmN0aW9uIG9uQmFzZVByb21pc2VGdWxmaWxsZWQoKSB7
CisgICAgICAgICAgICByZXR1cm4geEZhY3RvcnkoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
dGVzdChwcm9taXNlLCBkb25lKTsKKyAgICB9KTsKKworICAgIHNwZWNpZnkoInZpYSByZXR1cm4g
ZnJvbSBhIHJlamVjdGVkIHByb21pc2UiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICB2YXIg
cHJvbWlzZSA9IHJlamVjdGVkKGR1bW15KS50aGVuKG51bGwsIGZ1bmN0aW9uIG9uQmFzZVByb21p
c2VSZWplY3RlZCgpIHsKKyAgICAgICAgICAgIHJldHVybiB4RmFjdG9yeSgpOworICAgICAgICB9
KTsKKworICAgICAgICB0ZXN0KHByb21pc2UsIGRvbmUpOworICAgIH0pOworfQorCitmdW5jdGlv
biB0ZXN0Q2FsbGluZ1Jlc29sdmVQcm9taXNlKHlGYWN0b3J5LCBzdHJpbmdSZXByZXNlbnRhdGlv
biwgdGVzdCkgeworICAgIGRlc2NyaWJlKCJgeWAgaXMgIiArIHN0cmluZ1JlcHJlc2VudGF0aW9u
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRlc2NyaWJlKCJgdGhlbmAgY2FsbHMgYHJlc29sdmVQ
cm9taXNlYCBzeW5jaHJvbm91c2x5IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZnVuY3Rp
b24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXNvbHZlUHJvbWlzZSh5RmFjdG9yeSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRlc3RQ
cm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgdGVzdCk7CisgICAgICAgIH0pOworCisgICAgICAg
IGRlc2NyaWJlKCJgdGhlbmAgY2FsbHMgYHJlc29sdmVQcm9taXNlYCBhc3luY2hyb25vdXNseSIs
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAg
ICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChy
ZXNvbHZlUHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVByb21pc2UoeUZh
Y3RvcnkoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgdGVzdCk7CisgICAgICAgIH0pOworICAg
IH0pOworfQorCitmdW5jdGlvbiB0ZXN0Q2FsbGluZ1JlamVjdFByb21pc2Uociwgc3RyaW5nUmVw
cmVzZW50YXRpb24sIHRlc3QpIHsKKyAgICBkZXNjcmliZSgiYHJgIGlzICIgKyBzdHJpbmdSZXBy
ZXNlbnRhdGlvbiwgZnVuY3Rpb24gKCkgeworICAgICAgICBkZXNjcmliZSgiYHRoZW5gIGNhbGxz
IGByZWplY3RQcm9taXNlYCBzeW5jaHJvbm91c2x5IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAg
ICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlLCByZWplY3RQcm9t
aXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZWplY3RQcm9taXNlKHIpOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCB0ZXN0KTsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgZGVzY3JpYmUoImB0aGVuYCBjYWxscyBgcmVqZWN0UHJvbWlzZWAgYXN5
bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9y
eSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICB0aGVu
OiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UsIHJlamVjdFByb21pc2UpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlamVjdFByb21pc2Uocik7CisgICAgICAgICAgICAgICAgICAgICAgICB9LCAw
KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgdGVzdCk7
CisgICAgICAgIH0pOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0Q2FsbGluZ1Jlc29sdmVQ
cm9taXNlRnVsZmlsbHNXaXRoKHlGYWN0b3J5LCBzdHJpbmdSZXByZXNlbnRhdGlvbiwgZnVsZmls
bG1lbnRWYWx1ZSkgeworICAgIHRlc3RDYWxsaW5nUmVzb2x2ZVByb21pc2UoeUZhY3RvcnksIHN0
cmluZ1JlcHJlc2VudGF0aW9uLCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICBw
cm9taXNlLnRoZW4oZnVuY3Rpb24gb25Qcm9taXNlRnVsZmlsbGVkKHZhbHVlKSB7CisgICAgICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFsdWUsIGZ1bGZpbGxtZW50VmFsdWUpOworICAgICAg
ICAgICAgZG9uZSgpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gdGVzdENh
bGxpbmdSZXNvbHZlUHJvbWlzZVJlamVjdHNXaXRoKHlGYWN0b3J5LCBzdHJpbmdSZXByZXNlbnRh
dGlvbiwgcmVqZWN0aW9uUmVhc29uKSB7CisgICAgdGVzdENhbGxpbmdSZXNvbHZlUHJvbWlzZSh5
RmFjdG9yeSwgc3RyaW5nUmVwcmVzZW50YXRpb24sIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7
CisgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBvblByb21pc2VSZWplY3RlZChy
ZWFzb24pIHsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZWFzb24sIHJlamVjdGlv
blJlYXNvbik7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0pOworICAgIH0pOworfQor
CitmdW5jdGlvbiB0ZXN0Q2FsbGluZ1JlamVjdFByb21pc2VSZWplY3RzV2l0aChyZWFzb24sIHN0
cmluZ1JlcHJlc2VudGF0aW9uKSB7CisgICAgdGVzdENhbGxpbmdSZWplY3RQcm9taXNlKHJlYXNv
biwgc3RyaW5nUmVwcmVzZW50YXRpb24sIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAg
ICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiBvblByb21pc2VSZWplY3RlZChyZWplY3Rp
b25SZWFzb24pIHsKKyAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZWplY3Rpb25SZWFz
b24sIHJlYXNvbik7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0pOworICAgIH0pOwor
fQorCitkZXNjcmliZSgiMi4zLjM6IE90aGVyd2lzZSwgaWYgYHhgIGlzIGFuIG9iamVjdCBvciBm
dW5jdGlvbiwiLCBmdW5jdGlvbiAoKSB7CisgICAgZGVzY3JpYmUoIjIuMy4zLjE6IExldCBgdGhl
bmAgYmUgYHgudGhlbmAiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRlc2NyaWJlKCJgeGAgaXMg
YW4gb2JqZWN0IHdpdGggbnVsbCBwcm90b3R5cGUiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICB2YXIgbnVtYmVyT2ZUaW1lc1RoZW5XYXNSZXRyaWV2ZWQgPSBudWxsOworCisgICAgICAgICAg
ICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBudW1iZXJPZlRpbWVz
VGhlbldhc1JldHJpZXZlZCA9IDA7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZnVu
Y3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5jcmVhdGUo
bnVsbCwgeworICAgICAgICAgICAgICAgICAgICB0aGVuOiB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK251
bWJlck9mVGltZXNUaGVuV2FzUmV0cmlldmVkOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmdW5jdGlvbiB0aGVuTWV0aG9kRm9yWChvbkZ1bGZpbGxlZCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvbkZ1bGZpbGxlZCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkg
eworICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChudW1iZXJPZlRpbWVzVGhlbldhc1JldHJpZXZl
ZCwgMSk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBkZXNjcmliZSgiYHhgIGlz
IGFuIG9iamVjdCB3aXRoIG5vcm1hbCBPYmplY3QucHJvdG90eXBlIiwgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgdmFyIG51bWJlck9mVGltZXNUaGVuV2FzUmV0cmlldmVkID0gbnVsbDsKKwor
ICAgICAgICAgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgbnVt
YmVyT2ZUaW1lc1RoZW5XYXNSZXRyaWV2ZWQgPSAwOworICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgIHJldHVybiBPYmpl
Y3QuY3JlYXRlKE9iamVjdC5wcm90b3R5cGUsIHsKKyAgICAgICAgICAgICAgICAgICAgdGhlbjog
eworICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKytudW1iZXJPZlRpbWVzVGhlbldhc1JldHJpZXZlZDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gdGhlbk1ldGhvZEZvclgob25G
dWxmaWxsZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25GdWxmaWxsZWQo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVu
Y3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwobnVtYmVy
T2ZUaW1lc1RoZW5XYXNSZXRyaWV2ZWQsIDEpOworICAgICAgICAgICAgICAgICAgICBkb25lKCk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgZGVzY3JpYmUoImB4YCBpcyBhIGZ1bmN0aW9uIiwgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgdmFyIG51bWJlck9mVGltZXNUaGVuV2FzUmV0cmlldmVkID0gbnVsbDsKKworICAgICAg
ICAgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgbnVtYmVyT2ZU
aW1lc1RoZW5XYXNSZXRyaWV2ZWQgPSAwOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHgoKSB7IH0K
KworICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh4LCAidGhlbiIsIHsKKyAg
ICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICArK251bWJlck9mVGltZXNUaGVuV2FzUmV0cmlldmVkOworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uIHRoZW5NZXRob2RGb3JYKG9uRnVsZmlsbGVkKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb25GdWxmaWxsZWQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKwor
ICAgICAgICAgICAgICAgIHJldHVybiB4OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0
ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7
CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKG51bWJlck9mVGltZXNUaGVuV2FzUmV0cmlldmVk
LCAxKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoIjIu
My4zLjI6IElmIHJldHJpZXZpbmcgdGhlIHByb3BlcnR5IGB4LnRoZW5gIHJlc3VsdHMgaW4gYSB0
aHJvd24gZXhjZXB0aW9uIGBlYCwgcmVqZWN0IGBwcm9taXNlYCB3aXRoICIgKworICAgICAgICAg
ICAgICJgZWAgYXMgdGhlIHJlYXNvbi4iLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGZ1bmN0aW9u
IHRlc3RSZWplY3Rpb25WaWFUaHJvd2luZ0dldHRlcihlLCBzdHJpbmdSZXByZXNlbnRhdGlvbikg
eworICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIE9iamVjdC5jcmVhdGUoT2JqZWN0LnByb3RvdHlwZSwgeworICAgICAgICAgICAgICAgICAg
ICB0aGVuOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJgZWAgaXMgIiArIHN0cmluZ1JlcHJlc2Vu
dGF0aW9uLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0
aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAg
ICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBPYmplY3Qua2V5
cyhyZWFzb25zKS5mb3JFYWNoKGZ1bmN0aW9uIChzdHJpbmdSZXByZXNlbnRhdGlvbikgeworICAg
ICAgICAgICAgdGVzdFJlamVjdGlvblZpYVRocm93aW5nR2V0dGVyKHJlYXNvbnNbc3RyaW5nUmVw
cmVzZW50YXRpb25dLCBzdHJpbmdSZXByZXNlbnRhdGlvbik7CisgICAgICAgIH0pOworICAgIH0p
OworCisgICAgZGVzY3JpYmUoIjIuMy4zLjM6IElmIGB0aGVuYCBpcyBhIGZ1bmN0aW9uLCBjYWxs
IGl0IHdpdGggYHhgIGFzIGB0aGlzYCwgZmlyc3QgYXJndW1lbnQgYHJlc29sdmVQcm9taXNlYCwg
YW5kICIgKworICAgICAgICAgICAgICJzZWNvbmQgYXJndW1lbnQgYHJlamVjdFByb21pc2VgIiwg
ZnVuY3Rpb24gKCkgeworICAgICAgICBkZXNjcmliZSgiQ2FsbHMgd2l0aCBgeGAgYXMgYHRoaXNg
IGFuZCB0d28gZnVuY3Rpb24gYXJndW1lbnRzIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgdmFyIHggPSB7CisgICAgICAg
ICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRoaXMsIHgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR5cGVvZiBvbkZ1bGZpbGxl
ZCwgImZ1bmN0aW9uIik7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwodHlwZW9mIG9uUmVqZWN0ZWQsICJmdW5jdGlvbiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgb25GdWxmaWxsZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH07CisgICAgICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2UsIGRv
bmUpIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3JpYmUoIlVzZXMgdGhlIG9yaWdpbmFsIHZh
bHVlIG9mIGB0aGVuYCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZhciBudW1iZXJPZlRp
bWVzVGhlbldhc1JldHJpZXZlZCA9IG51bGw7CisKKyAgICAgICAgICAgIGJlZm9yZUVhY2goZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIG51bWJlck9mVGltZXNUaGVuV2FzUmV0cmlldmVk
ID0gMDsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgp
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmNyZWF0ZShPYmplY3QucHJvdG90eXBl
LCB7CisgICAgICAgICAgICAgICAgICAgIHRoZW46IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGdldDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudW1i
ZXJPZlRpbWVzVGhlbldhc1JldHJpZXZlZCA9PT0gMCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG9uRnVsZmlsbGVkKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvbkZ1bGZpbGxlZCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0
aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGRlc2NyaWJlKCIyLjMu
My4zLjE6IElmL3doZW4gYHJlc29sdmVQcm9taXNlYCBpcyBjYWxsZWQgd2l0aCB2YWx1ZSBgeWAs
IHJ1biBgW1tSZXNvbHZlXV0ocHJvbWlzZSwgeSlgIiwKKyAgICAgICAgICAgICAgICAgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgZGVzY3JpYmUoImB5YCBpcyBub3QgYSB0aGVuYWJsZSIsIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0Q2FsbGluZ1Jlc29sdmVQcm9taXNlRnVs
ZmlsbHNXaXRoKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSwgImB1bmRlZmluZWRg
IiwgdW5kZWZpbmVkKTsKKyAgICAgICAgICAgICAgICB0ZXN0Q2FsbGluZ1Jlc29sdmVQcm9taXNl
RnVsZmlsbHNXaXRoKGZ1bmN0aW9uICgpIHsgcmV0dXJuIG51bGw7IH0sICJgbnVsbGAiLCBudWxs
KTsKKyAgICAgICAgICAgICAgICB0ZXN0Q2FsbGluZ1Jlc29sdmVQcm9taXNlRnVsZmlsbHNXaXRo
KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9LCAiYGZhbHNlYCIsIGZhbHNlKTsKKyAgICAg
ICAgICAgICAgICB0ZXN0Q2FsbGluZ1Jlc29sdmVQcm9taXNlRnVsZmlsbHNXaXRoKGZ1bmN0aW9u
ICgpIHsgcmV0dXJuIDU7IH0sICJgNWAiLCA1KTsKKyAgICAgICAgICAgICAgICB0ZXN0Q2FsbGlu
Z1Jlc29sdmVQcm9taXNlRnVsZmlsbHNXaXRoKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNlbnRpbmVs
OyB9LCAiYW4gb2JqZWN0Iiwgc2VudGluZWwpOworICAgICAgICAgICAgICAgIHRlc3RDYWxsaW5n
UmVzb2x2ZVByb21pc2VGdWxmaWxsc1dpdGgoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2VudGluZWxB
cnJheTsgfSwgImFuIGFycmF5Iiwgc2VudGluZWxBcnJheSk7CisgICAgICAgICAgICB9KTsKKwor
ICAgICAgICAgICAgZGVzY3JpYmUoImB5YCBpcyBhIHRoZW5hYmxlIiwgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoZW5hYmxlcy5mdWxmaWxsZWQpLmZvckVhY2go
ZnVuY3Rpb24gKHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGZ1
bmN0aW9uIHlGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoZW5h
Ymxlcy5mdWxmaWxsZWRbc3RyaW5nUmVwcmVzZW50YXRpb25dKHNlbnRpbmVsKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHRlc3RDYWxsaW5nUmVzb2x2ZVBy
b21pc2VGdWxmaWxsc1dpdGgoeUZhY3RvcnksIHN0cmluZ1JlcHJlc2VudGF0aW9uLCBzZW50aW5l
bCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh0
aGVuYWJsZXMucmVqZWN0ZWQpLmZvckVhY2goZnVuY3Rpb24gKHN0cmluZ1JlcHJlc2VudGF0aW9u
KSB7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHlGYWN0b3J5KCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRoZW5hYmxlcy5yZWplY3RlZFtzdHJpbmdSZXByZXNlbnRh
dGlvbl0oc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdENhbGxpbmdSZXNvbHZlUHJvbWlzZVJlamVjdHNXaXRoKHlGYWN0b3J5LCBzdHJp
bmdSZXByZXNlbnRhdGlvbiwgc2VudGluZWwpOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJgeWAgaXMgYSB0aGVuYWJsZSBmb3Ig
YSB0aGVuYWJsZSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh0
aGVuYWJsZXMuZnVsZmlsbGVkKS5mb3JFYWNoKGZ1bmN0aW9uIChvdXRlclN0cmluZ1JlcHJlc2Vu
dGF0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBvdXRlclRoZW5hYmxlRmFjdG9yeSA9
IHRoZW5hYmxlcy5mdWxmaWxsZWRbb3V0ZXJTdHJpbmdSZXByZXNlbnRhdGlvbl07CisKKyAgICAg
ICAgICAgICAgICAgICAgT2JqZWN0LmtleXModGhlbmFibGVzLmZ1bGZpbGxlZCkuZm9yRWFjaChm
dW5jdGlvbiAoaW5uZXJTdHJpbmdSZXByZXNlbnRhdGlvbikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIGlubmVyVGhlbmFibGVGYWN0b3J5ID0gdGhlbmFibGVzLmZ1bGZpbGxlZFtpbm5l
clN0cmluZ1JlcHJlc2VudGF0aW9uXTsKKworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0
cmluZ1JlcHJlc2VudGF0aW9uID0gb3V0ZXJTdHJpbmdSZXByZXNlbnRhdGlvbiArICIgZm9yICIg
KyBpbm5lclN0cmluZ1JlcHJlc2VudGF0aW9uOworCisgICAgICAgICAgICAgICAgICAgICAgICBm
dW5jdGlvbiB5RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
b3V0ZXJUaGVuYWJsZUZhY3RvcnkoaW5uZXJUaGVuYWJsZUZhY3Rvcnkoc2VudGluZWwpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdENh
bGxpbmdSZXNvbHZlUHJvbWlzZUZ1bGZpbGxzV2l0aCh5RmFjdG9yeSwgc3RyaW5nUmVwcmVzZW50
YXRpb24sIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgT2JqZWN0LmtleXModGhlbmFibGVzLnJlamVjdGVkKS5mb3JFYWNoKGZ1bmN0aW9u
IChpbm5lclN0cmluZ1JlcHJlc2VudGF0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgaW5uZXJUaGVuYWJsZUZhY3RvcnkgPSB0aGVuYWJsZXMucmVqZWN0ZWRbaW5uZXJTdHJpbmdS
ZXByZXNlbnRhdGlvbl07CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdHJpbmdSZXBy
ZXNlbnRhdGlvbiA9IG91dGVyU3RyaW5nUmVwcmVzZW50YXRpb24gKyAiIGZvciAiICsgaW5uZXJT
dHJpbmdSZXByZXNlbnRhdGlvbjsKKworICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24g
eUZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG91dGVyVGhl
bmFibGVGYWN0b3J5KGlubmVyVGhlbmFibGVGYWN0b3J5KHNlbnRpbmVsKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RDYWxsaW5nUmVz
b2x2ZVByb21pc2VSZWplY3RzV2l0aCh5RmFjdG9yeSwgc3RyaW5nUmVwcmVzZW50YXRpb24sIHNl
bnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3JpYmUoIjIuMy4zLjMu
MjogSWYvd2hlbiBgcmVqZWN0UHJvbWlzZWAgaXMgY2FsbGVkIHdpdGggcmVhc29uIGByYCwgcmVq
ZWN0IGBwcm9taXNlYCB3aXRoIGByYCIsCisgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlYXNvbnMpLmZvckVhY2goZnVuY3Rpb24gKHN0cmlu
Z1JlcHJlc2VudGF0aW9uKSB7CisgICAgICAgICAgICAgICAgdGVzdENhbGxpbmdSZWplY3RQcm9t
aXNlUmVqZWN0c1dpdGgocmVhc29uc1tzdHJpbmdSZXByZXNlbnRhdGlvbl0sIHN0cmluZ1JlcHJl
c2VudGF0aW9uKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBkZXNj
cmliZSgiMi4zLjMuMy4zOiBJZiBib3RoIGByZXNvbHZlUHJvbWlzZWAgYW5kIGByZWplY3RQcm9t
aXNlYCBhcmUgY2FsbGVkLCBvciBtdWx0aXBsZSBjYWxscyB0byB0aGUgc2FtZSAiICsKKyAgICAg
ICAgICAgICAgICAgImFyZ3VtZW50IGFyZSBtYWRlLCB0aGUgZmlyc3QgY2FsbCB0YWtlcyBwcmVj
ZWRlbmNlLCBhbmQgYW55IGZ1cnRoZXIgY2FsbHMgYXJlIGlnbm9yZWQuIiwKKyAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZGVzY3JpYmUoImNhbGxpbmcgYHJlc29s
dmVQcm9taXNlYCB0aGVuIGByZWplY3RQcm9taXNlYCwgYm90aCBzeW5jaHJvbm91c2x5IiwgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVu
Y3Rpb24gKHJlc29sdmVQcm9taXNlLCByZWplY3RQcm9taXNlKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzb2x2ZVByb21pc2Uoc2VudGluZWwpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlamVjdFByb21pc2Uob3RoZXIpOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2Us
IGRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICh2YWx1
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbHVlLCBz
ZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgIGRlc2NyaWJlKCJjYWxsaW5nIGByZXNvbHZlUHJvbWlzZWAgc3luY2hyb25vdXNseSB0
aGVuIGByZWplY3RQcm9taXNlYCBhc3luY2hyb25vdXNseSIsIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChyZXNvbHZlUHJv
bWlzZSwgcmVqZWN0UHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29s
dmVQcm9taXNlKHNlbnRpbmVsKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWpl
Y3RQcm9taXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAwKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3Rv
cnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21p
c2UudGhlbihmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCh2YWx1ZSwgc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAg
ZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICBkZXNjcmliZSgiY2FsbGluZyBgcmVzb2x2ZVBy
b21pc2VgIHRoZW4gYHJlamVjdFByb21pc2VgLCBib3RoIGFzeW5jaHJvbm91c2x5IiwgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rp
b24gKHJlc29sdmVQcm9taXNlLCByZWplY3RQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc29sdmVQcm9taXNlKHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9LCAwKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3RQcm9t
aXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1
bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhl
bihmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJp
Y3RFcXVhbCh2YWx1ZSwgc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgp
OworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICBkZXNjcmliZSgiY2FsbGluZyBgcmVzb2x2ZVByb21pc2Vg
IHdpdGggYW4gYXN5bmNocm9ub3VzbHktZnVsZmlsbGVkIHByb21pc2UsIHRoZW4gY2FsbGluZyAi
ICsKKyAgICAgICAgICAgICAgICAgICAgICJgcmVqZWN0UHJvbWlzZWAsIGJvdGggc3luY2hyb25v
dXNseSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgp
IHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGQucmVzb2x2ZShzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgIH0sIDUwKTsKKworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjog
ZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlLCByZWplY3RQcm9taXNlKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZVByb21pc2UoZC5wcm9taXNlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWplY3RQcm9taXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9t
aXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAo
dmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2YWx1
ZSwgc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICBkZXNjcmliZSgiY2FsbGluZyBgcmVzb2x2ZVByb21pc2VgIHdpdGggYW4gYXN5
bmNocm9ub3VzbHktcmVqZWN0ZWQgcHJvbWlzZSwgdGhlbiBjYWxsaW5nICIgKworICAgICAgICAg
ICAgICAgICAgICAgImByZWplY3RQcm9taXNlYCwgYm90aCBzeW5jaHJvbm91c2x5IiwgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAg
ICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZC5yZWplY3Qoc2Vu
dGluZWwpOworICAgICAgICAgICAgICAgICAgICB9LCA1MCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChyZXNv
bHZlUHJvbWlzZSwgcmVqZWN0UHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc29sdmVQcm9taXNlKGQucHJvbWlzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVqZWN0UHJvbWlzZShvdGhlcik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGVz
dFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgewor
ICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNvbikg
eworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgc2Vu
dGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICBkZXNjcmliZSgiY2FsbGluZyBgcmVqZWN0UHJvbWlzZWAgdGhlbiBgcmVzb2x2ZVByb21p
c2VgLCBib3RoIHN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UsIHJlamVj
dFByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3RQcm9taXNlKHNl
bnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlUHJvbWlzZShvdGhl
cik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9u
KHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAg
ICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgc2VudGluZWwpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBkZXNjcmliZSgiY2Fs
bGluZyBgcmVqZWN0UHJvbWlzZWAgc3luY2hyb25vdXNseSB0aGVuIGByZXNvbHZlUHJvbWlzZWAg
YXN5bmNocm9ub3VzbHkiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24g
eEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVByb21pc2UsIHJlamVjdFByb21pc2Up
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3RQcm9taXNlKHNlbnRpbmVsKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlUHJvbWlzZShvdGhlcik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlz
ZSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4obnVsbCwgZnVuY3Rp
b24gKHJlYXNvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFs
KHJlYXNvbiwgc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAg
ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICBkZXNjcmliZSgiY2FsbGluZyBgcmVqZWN0UHJvbWlzZWAgdGhlbiBg
cmVzb2x2ZVByb21pc2VgLCBib3RoIGFzeW5jaHJvbm91c2x5IiwgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQ
cm9taXNlLCByZWplY3RQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
amVjdFByb21pc2Uoc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDAp
OworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKG90aGVyKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9t
aXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5j
dGlvbiAocmVhc29uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1
YWwocmVhc29uLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7Cisg
ICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJjYWxsaW5nIGByZXNvbHZlUHJvbWlzZWAgdHdp
Y2Ugc3luY2hyb25vdXNseSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBmdW5jdGlv
biB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChyZXNvbHZlUHJvbWlzZSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKHNlbnRpbmVsKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNvbHZlUHJvbWlzZShvdGhlcik7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAo
cHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rp
b24gKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
dmFsdWUsIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgZGVzY3JpYmUoImNhbGxpbmcgYHJlc29sdmVQcm9taXNlYCB0d2ljZSwg
Zmlyc3Qgc3luY2hyb25vdXNseSB0aGVuIGFzeW5jaHJvbm91c2x5IiwgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29s
dmVQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVByb21pc2Uo
c2VudGluZWwpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVQcm9taXNl
KG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0
aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihm
dW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbCh2YWx1ZSwgc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOwor
ICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICBkZXNjcmliZSgiY2FsbGluZyBgcmVzb2x2ZVByb21pc2VgIHR3
aWNlLCBib3RoIHRpbWVzIGFzeW5jaHJvbm91c2x5IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
eworICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNl
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKHNlbnRpbmVs
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAwKTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXNvbHZlUHJvbWlzZShvdGhlcik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGVzdFByb21p
c2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAg
ICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFsdWUsIHNlbnRpbmVsKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgZGVzY3JpYmUo
ImNhbGxpbmcgYHJlc29sdmVQcm9taXNlYCB3aXRoIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxl
ZCBwcm9taXNlLCB0aGVuIGNhbGxpbmcgaXQgYWdhaW4sIGJvdGggIiArCisgICAgICAgICAgICAg
ICAgICAgICAidGltZXMgc3luY2hyb25vdXNseSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBk
ZWZlcnJlZCgpOworICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGQucmVzb2x2ZShzZW50aW5lbCk7CisgICAgICAgICAg
ICAgICAgICAgIH0sIDUwKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAg
ICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVByb21pc2UoZC5wcm9taXNlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlUHJvbWlzZShvdGhlcik7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5j
dGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4o
ZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwodmFsdWUsIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsK
KyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgZGVzY3JpYmUoImNhbGxpbmcgYHJlc29sdmVQcm9taXNlYCB3
aXRoIGFuIGFzeW5jaHJvbm91c2x5LXJlamVjdGVkIHByb21pc2UsIHRoZW4gY2FsbGluZyBpdCBh
Z2FpbiwgYm90aCAiICsKKyAgICAgICAgICAgICAgICAgICAgICJ0aW1lcyBzeW5jaHJvbm91c2x5
IiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgewor
ICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZC5y
ZWplY3Qoc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICB9LCA1MCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0
aW9uIChyZXNvbHZlUHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29s
dmVQcm9taXNlKGQucHJvbWlzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2
ZVByb21pc2Uob3RoZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRlc3RQcm9t
aXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIChyZWFzb24pIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZWFzb24sIHNlbnRpbmVs
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
ZGVzY3JpYmUoImNhbGxpbmcgYHJlamVjdFByb21pc2VgIHR3aWNlIHN5bmNocm9ub3VzbHkiLCBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBm
dW5jdGlvbiAocmVzb2x2ZVByb21pc2UsIHJlamVjdFByb21pc2UpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWplY3RQcm9taXNlKHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWplY3RQcm9taXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNl
LCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlv
biAocmVhc29uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwo
cmVhc29uLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAg
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgIGRlc2NyaWJlKCJjYWxsaW5nIGByZWplY3RQcm9taXNlYCB0d2ljZSwg
Zmlyc3Qgc3luY2hyb25vdXNseSB0aGVuIGFzeW5jaHJvbm91c2x5IiwgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29s
dmVQcm9taXNlLCByZWplY3RQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVqZWN0UHJvbWlzZShzZW50aW5lbCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVqZWN0UHJvbWlzZShvdGhlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMCk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhG
YWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICBw
cm9taXNlLnRoZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgc2VudGluZWwpOworICAgICAgICAgICAg
ICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBkZXNjcmliZSgiY2FsbGlu
ZyBgcmVqZWN0UHJvbWlzZWAgdHdpY2UsIGJvdGggdGltZXMgYXN5bmNocm9ub3VzbHkiLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5j
dGlvbiAocmVzb2x2ZVByb21pc2UsIHJlamVjdFByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVqZWN0UHJvbWlzZShzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwgMCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0UHJv
bWlzZShvdGhlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBm
dW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRo
ZW4obnVsbCwgZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAg
ICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBkZXNjcmliZSgic2F2aW5nIGFuZCBhYnVz
aW5nIGByZXNvbHZlUHJvbWlzZWAgYW5kIGByZWplY3RQcm9taXNlYCIsIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICB2YXIgc2F2ZWRSZXNvbHZlUHJvbWlzZSwgc2F2ZWRSZWplY3RQcm9t
aXNlOworCisgICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlv
biAocmVzb2x2ZVByb21pc2UsIHJlamVjdFByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzYXZlZFJlc29sdmVQcm9taXNlID0gcmVzb2x2ZVByb21pc2U7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2F2ZWRSZWplY3RQcm9taXNlID0gcmVqZWN0UHJvbWlzZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgc2F2ZWRSZXNvbHZlUHJvbWlzZSA9IG51bGw7CisgICAgICAgICAg
ICAgICAgICAgIHNhdmVkUmVqZWN0UHJvbWlzZSA9IG51bGw7CisgICAgICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0
aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciB0aW1lc0Z1bGZp
bGxlZCA9IDA7CisgICAgICAgICAgICAgICAgICAgIHZhciB0aW1lc1JlamVjdGVkID0gMDsKKwor
ICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oCisgICAgICAgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyt0aW1lc0Z1bGZp
bGxlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyt0aW1lc1JlamVj
dGVkOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICApOwor
CisgICAgICAgICAgICAgICAgICAgIGlmIChzYXZlZFJlc29sdmVQcm9taXNlICYmIHNhdmVkUmVq
ZWN0UHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZWRSZXNvbHZlUHJvbWlz
ZShkdW1teSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzYXZlZFJlc29sdmVQcm9taXNlKGR1
bW15KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVkUmVqZWN0UHJvbWlzZShkdW1teSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBzYXZlZFJlamVjdFByb21pc2UoZHVtbXkpOworICAg
ICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzYXZlZFJlc29sdmVQcm9taXNlKGR1
bW15KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVkUmVzb2x2ZVByb21pc2UoZHVtbXkp
OworICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZWRSZWplY3RQcm9taXNlKGR1bW15KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNhdmVkUmVqZWN0UHJvbWlzZShkdW1teSk7CisgICAgICAg
ICAgICAgICAgICAgIH0sIDUwKTsKKworICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0
aW1lc0Z1bGZpbGxlZCwgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0
RXF1YWwodGltZXNSZWplY3RlZCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7
CisgICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3JpYmUoIjIuMy4zLjMuNDog
SWYgY2FsbGluZyBgdGhlbmAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBgZWAsIiwgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgZGVzY3JpYmUoIjIuMy4zLjMuNC4xOiBJZiBgcmVzb2x2ZVByb21pc2Vg
IG9yIGByZWplY3RQcm9taXNlYCBoYXZlIGJlZW4gY2FsbGVkLCBpZ25vcmUgaXQuIiwgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIGRlc2NyaWJlKCJgcmVzb2x2ZVByb21pc2VgIHdhcyBj
YWxsZWQgd2l0aCBhIG5vbi10aGVuYWJsZSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChyZXNvbHZl
UHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlUHJvbWlz
ZShzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG90aGVy
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
IH07CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB0ZXN0UHJv
bWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHZhbHVlLCBzZW50aW5l
bCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICAgICAgZGVzY3JpYmUoImByZXNvbHZlUHJvbWlzZWAgd2FzIGNhbGxl
ZCB3aXRoIGFuIGFzeW5jaHJvbm91c2x5LWZ1bGZpbGxlZCBwcm9taXNlIiwgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQu
cmVzb2x2ZShzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9LCA1MCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc29sdmVQcm9taXNlKGQucHJvbWlzZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRocm93IG90aGVyOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0
aW9uIChwcm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnRo
ZW4oZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
LnN0cmljdEVxdWFsKHZhbHVlLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgZGVzY3JpYmUo
ImByZXNvbHZlUHJvbWlzZWAgd2FzIGNhbGxlZCB3aXRoIGFuIGFzeW5jaHJvbm91c2x5LXJlamVj
dGVkIHByb21pc2UiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u
IHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZC5yZWplY3Qoc2VudGluZWwpOworICAgICAgICAgICAg
ICAgICAgICAgICAgfSwgNTApOworCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChyZXNvbHZlUHJvbWlz
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlUHJvbWlzZShkLnBy
b21pc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBvdGhlcjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgdGVzdFByb21pc2VS
ZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIChyZWFzb24pIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29uLCBzZW50
aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICAgICAgZGVzY3JpYmUoImByZWplY3RQcm9taXNlYCB3YXMgY2Fs
bGVkIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9y
eSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmVQcm9taXNlLCByZWplY3RQcm9taXNl
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdFByb21pc2Uoc2VudGlu
ZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBvdGhlcjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9OworICAg
ICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgdGVzdFByb21pc2VSZXNv
bHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29uLCBzZW50aW5l
bCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICAgICAgZGVzY3JpYmUoImByZXNvbHZlUHJvbWlzZWAgdGhlbiBgcmVq
ZWN0UHJvbWlzZWAgd2VyZSBjYWxsZWQiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAocmVzb2x2ZVBy
b21pc2UsIHJlamVjdFByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzb2x2ZVByb21pc2Uoc2VudGluZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWplY3RQcm9taXNlKG90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGhyb3cgb3RoZXI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgIHRlc3RQcm9taXNlUmVzb2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2UsIGRv
bmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAodmFs
dWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodmFs
dWUsIHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBkZXNjcmliZSgiYHJlamVjdFByb21pc2Vg
IHRoZW4gYHJlc29sdmVQcm9taXNlYCB3ZXJlIGNhbGxlZCIsIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9u
IChyZXNvbHZlUHJvbWlzZSwgcmVqZWN0UHJvbWlzZSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWplY3RQcm9taXNlKHNlbnRpbmVsKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzb2x2ZVByb21pc2Uob3RoZXIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aHJvdyBvdGhlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAo
cHJvbWlzZSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51
bGwsIGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwocmVhc29uLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgIGRlc2NyaWJlKCIyLjMuMy4zLjQuMjogT3RoZXJ3aXNlLCByZWplY3QgYHByb21pc2Vg
IHdpdGggYGVgIGFzIHRoZSByZWFzb24uIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
IGRlc2NyaWJlKCJzdHJhaWdodGZvcndhcmQgY2FzZSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb24geEZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgc2VudGluZWw7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHRlc3RQcm9taXNlUmVz
b2x1dGlvbih4RmFjdG9yeSwgZnVuY3Rpb24gKHByb21pc2UsIGRvbmUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHByb21pc2UudGhlbihudWxsLCBmdW5jdGlvbiAocmVhc29uKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlYXNvbiwgc2VudGlu
ZWwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgICAgIGRlc2NyaWJlKCJgcmVzb2x2ZVByb21pc2VgIGlzIGNhbGxl
ZCBhc3luY2hyb25vdXNseSBiZWZvcmUgdGhlIGB0aHJvd2AiLCBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHhGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuOiBmdW5jdGlv
biAocmVzb2x2ZVByb21pc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXNvbHZlUHJvbWlzZShvdGhlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0sIDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBzZW50aW5lbDsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgdGVzdFByb21p
c2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlzZSwgZG9uZSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1bmN0aW9uIChyZWFzb24pIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVhc29uLCBz
ZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICAgICAgZGVzY3JpYmUoImByZWplY3RQcm9taXNlYCBpcyBj
YWxsZWQgYXN5bmNocm9ub3VzbHkgYmVmb3JlIHRoZSBgdGhyb3dgIiwgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbjogZnVu
Y3Rpb24gKHJlc29sdmVQcm9taXNlLCByZWplY3RQcm9taXNlKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVqZWN0UHJvbWlzZShvdGhlcik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aHJvdyBzZW50aW5lbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdFByb21pc2VSZXNvbHV0aW9uKHhGYWN0b3J5LCBmdW5jdGlvbiAocHJvbWlz
ZSwgZG9uZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKG51bGwsIGZ1
bmN0aW9uIChyZWFzb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQuc3Ry
aWN0RXF1YWwocmVhc29uLCBzZW50aW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG9uZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor
ICAgIH0pOworCisgICAgZGVzY3JpYmUoIjIuMy4zLjQ6IElmIGB0aGVuYCBpcyBub3QgYSBmdW5j
dGlvbiwgZnVsZmlsbCBwcm9taXNlIHdpdGggYHhgIiwgZnVuY3Rpb24gKCkgeworICAgICAgICBm
dW5jdGlvbiB0ZXN0RnVsZmlsbFZpYU5vbkZ1bmN0aW9uKHRoZW4sIHN0cmluZ1JlcHJlc2VudGF0
aW9uKSB7CisgICAgICAgICAgICB2YXIgeCA9IG51bGw7CisKKyAgICAgICAgICAgIGJlZm9yZUVh
Y2goZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHggPSB7IHRoZW46IHRoZW4gfTsKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICBmdW5jdGlvbiB4RmFjdG9yeSgpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGVzY3Jp
YmUoImB0aGVuYCBpcyAiICsgc3RyaW5nUmVwcmVzZW50YXRpb24sIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0UHJvbWlzZVJlc29sdXRpb24oeEZhY3RvcnksIGZ1bmN0aW9uIChw
cm9taXNlLCBkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlv
biAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh2
YWx1ZSwgeCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0KKworICAgICAgICB0ZXN0RnVsZmlsbFZpYU5vbkZ1bmN0aW9uKDUsICJgNWAiKTsKKyAgICAg
ICAgdGVzdEZ1bGZpbGxWaWFOb25GdW5jdGlvbih7fSwgImFuIG9iamVjdCIpOworICAgICAgICB0
ZXN0RnVsZmlsbFZpYU5vbkZ1bmN0aW9uKFtmdW5jdGlvbiAoKSB7IH1dLCAiYW4gYXJyYXkgY29u
dGFpbmluZyBhIGZ1bmN0aW9uIik7CisgICAgICAgIHRlc3RGdWxmaWxsVmlhTm9uRnVuY3Rpb24o
L2EtYi9pLCAiYSByZWd1bGFyIGV4cHJlc3Npb24iKTsKKyAgICAgICAgdGVzdEZ1bGZpbGxWaWFO
b25GdW5jdGlvbihPYmplY3QuY3JlYXRlKEZ1bmN0aW9uLnByb3RvdHlwZSksICJhbiBvYmplY3Qg
aW5oZXJpdGluZyBmcm9tIGBGdW5jdGlvbi5wcm90b3R5cGVgIik7CisgICAgfSk7Cit9KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xp
Yi90ZXN0cy8yLjMuNC5qcyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2Vz
LXRlc3RzL2xpYi90ZXN0cy8yLjMuNC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDIxZWVhODA3MzBlYWEwYWEw
YTEwNWZhNmFkMjJhY2FlMzRjYTY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
cHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3RzLzIuMy40LmpzCkBAIC0wLDAg
KzEsNjkgQEAKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIGFzc2VydCA9IHJlcXVpcmUoImFzc2VydCIp
OwordmFyIHRlc3RGdWxmaWxsZWQgPSByZXF1aXJlKCIuL2hlbHBlcnMvdGVzdFRocmVlQ2FzZXMi
KS50ZXN0RnVsZmlsbGVkOwordmFyIHRlc3RSZWplY3RlZCA9IHJlcXVpcmUoIi4vaGVscGVycy90
ZXN0VGhyZWVDYXNlcyIpLnRlc3RSZWplY3RlZDsKKwordmFyIGR1bW15ID0geyBkdW1teTogImR1
bW15IiB9OyAvLyB3ZSBmdWxmaWxsIG9yIHJlamVjdCB3aXRoIHRoaXMgd2hlbiB3ZSBkb24ndCBp
bnRlbmQgdG8gdGVzdCBhZ2FpbnN0IGl0CisKK2Rlc2NyaWJlKCIyLjMuNDogSWYgYHhgIGlzIG5v
dCBhbiBvYmplY3Qgb3IgZnVuY3Rpb24sIGZ1bGZpbGwgYHByb21pc2VgIHdpdGggYHhgIiwgZnVu
Y3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRlc3RWYWx1ZShleHBlY3RlZFZhbHVlLCBzdHJpbmdS
ZXByZXNlbnRhdGlvbiwgYmVmb3JlRWFjaEhvb2ssIGFmdGVyRWFjaEhvb2spIHsKKyAgICAgICAg
ZGVzY3JpYmUoIlRoZSB2YWx1ZSBpcyAiICsgc3RyaW5nUmVwcmVzZW50YXRpb24sIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgYmVmb3JlRWFjaEhvb2sgPT09ICJmdW5jdGlv
biIpIHsKKyAgICAgICAgICAgICAgICBiZWZvcmVFYWNoKGJlZm9yZUVhY2hIb29rKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0eXBlb2YgYWZ0ZXJFYWNoSG9vayA9PT0gImZ1bmN0
aW9uIikgeworICAgICAgICAgICAgICAgIGFmdGVyRWFjaChhZnRlckVhY2hIb29rKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdGVzdEZ1bGZpbGxlZChkdW1teSwgZnVuY3Rpb24gKHBy
b21pc2UxLCBkb25lKSB7CisgICAgICAgICAgICAgICAgdmFyIHByb21pc2UyID0gcHJvbWlzZTEu
dGhlbihmdW5jdGlvbiBvbkZ1bGZpbGxlZCgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGV4cGVjdGVkVmFsdWU7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBw
cm9taXNlMi50aGVuKGZ1bmN0aW9uIG9uUHJvbWlzZTJGdWxmaWxsZWQoYWN0dWFsVmFsdWUpIHsK
KyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFjdHVhbFZhbHVlLCBleHBl
Y3RlZFZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB0ZXN0UmVqZWN0ZWQoZHVtbXksIGZ1
bmN0aW9uIChwcm9taXNlMSwgZG9uZSkgeworICAgICAgICAgICAgICAgIHZhciBwcm9taXNlMiA9
IHByb21pc2UxLnRoZW4obnVsbCwgZnVuY3Rpb24gb25SZWplY3RlZCgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGV4cGVjdGVkVmFsdWU7CisgICAgICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgICAgICBwcm9taXNlMi50aGVuKGZ1bmN0aW9uIG9uUHJvbWlzZTJGdWxmaWxsZWQo
YWN0dWFsVmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFj
dHVhbFZhbHVlLCBleHBlY3RlZFZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSgpOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0K
KworICAgIHRlc3RWYWx1ZSh1bmRlZmluZWQsICJgdW5kZWZpbmVkYCIpOworICAgIHRlc3RWYWx1
ZShudWxsLCAiYG51bGxgIik7CisgICAgdGVzdFZhbHVlKGZhbHNlLCAiYGZhbHNlYCIpOworICAg
IHRlc3RWYWx1ZSh0cnVlLCAiYHRydWVgIik7CisgICAgdGVzdFZhbHVlKDAsICJgMGAiKTsKKwor
ICAgIHRlc3RWYWx1ZSgKKyAgICAgICAgdHJ1ZSwKKyAgICAgICAgImB0cnVlYCB3aXRoIGBCb29s
ZWFuLnByb3RvdHlwZWAgbW9kaWZpZWQgdG8gaGF2ZSBhIGB0aGVuYCBtZXRob2QiLAorICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBCb29sZWFuLnByb3RvdHlwZS50aGVuID0gZnVu
Y3Rpb24gKCkge307CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIGRlbGV0ZSBCb29sZWFuLnByb3RvdHlwZS50aGVuOworICAgICAgICB9CisgICAgKTsKKwor
ICAgIHRlc3RWYWx1ZSgKKyAgICAgICAgMSwKKyAgICAgICAgImAxYCB3aXRoIGBOdW1iZXIucHJv
dG90eXBlYCBtb2RpZmllZCB0byBoYXZlIGEgYHRoZW5gIG1ldGhvZCIsCisgICAgICAgIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIE51bWJlci5wcm90b3R5cGUudGhlbiA9IGZ1bmN0aW9uICgp
IHt9OworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBkZWxl
dGUgTnVtYmVyLnByb3RvdHlwZS50aGVuOworICAgICAgICB9CisgICAgKTsKK30pOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rl
c3RzL2hlbHBlcnMvcmVhc29ucy5qcyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3By
b21pc2VzLXRlc3RzL2xpYi90ZXN0cy9oZWxwZXJzL3JlYXNvbnMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRk
NjcwZWI3ZTU3ODE3MzM1ZTg5NGEzZTUzNjU5N2Y5ODQwMThmZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy9o
ZWxwZXJzL3JlYXNvbnMuanMKQEAgLTAsMCArMSw1NiBAQAorInVzZSBzdHJpY3QiOworCisvLyBU
aGlzIG1vZHVsZSBleHBvcnRzIHNvbWUgdmFsaWQgcmVqZWN0aW9uIHJlYXNvbiBmYWN0b3JpZXMs
IGtleWVkIGJ5IGh1bWFuLXJlYWRhYmxlIHZlcnNpb25zIG9mIHRoZWlyIG5hbWVzLgorCit2YXIg
YWRhcHRlciA9IGdsb2JhbC5hZGFwdGVyOwordmFyIHJlc29sdmVkID0gYWRhcHRlci5yZXNvbHZl
ZDsKK3ZhciByZWplY3RlZCA9IGFkYXB0ZXIucmVqZWN0ZWQ7CisKK3ZhciBkdW1teSA9IHsgZHVt
bXk6ICJkdW1teSIgfTsKKworZXhwb3J0c1siYHVuZGVmaW5lZGAiXSA9IGZ1bmN0aW9uICgpIHsK
KyAgICByZXR1cm4gdW5kZWZpbmVkOworfTsKKworZXhwb3J0c1siYG51bGxgIl0gPSBmdW5jdGlv
biAoKSB7CisgICAgcmV0dXJuIG51bGw7Cit9OworCitleHBvcnRzWyJgZmFsc2VgIl0gPSBmdW5j
dGlvbiAoKSB7CisgICAgcmV0dXJuIGZhbHNlOworfTsKKworZXhwb3J0c1siYDBgIl0gPSBmdW5j
dGlvbiAoKSB7CisgICAgcmV0dXJuIDA7Cit9OworCitleHBvcnRzWyJhbiBlcnJvciJdID0gZnVu
Y3Rpb24gKCkgeworICAgIHJldHVybiBuZXcgRXJyb3IoKTsKK307CisKK2V4cG9ydHNbImFuIGVy
cm9yIHdpdGhvdXQgYSBzdGFjayJdID0gZnVuY3Rpb24gKCkgeworICAgIHZhciBlcnJvciA9IG5l
dyBFcnJvcigpOworICAgIGRlbGV0ZSBlcnJvci5zdGFjazsKKworICAgIHJldHVybiBlcnJvcjsK
K307CisKK2V4cG9ydHNbImEgZGF0ZSJdID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBuZXcg
RGF0ZSgpOworfTsKKworZXhwb3J0c1siYW4gb2JqZWN0Il0gPSBmdW5jdGlvbiAoKSB7CisgICAg
cmV0dXJuIHt9OworfTsKKworZXhwb3J0c1siYW4gYWx3YXlzLXBlbmRpbmcgdGhlbmFibGUiXSA9
IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4geyB0aGVuOiBmdW5jdGlvbiAoKSB7IH0gfTsKK307
CisKK2V4cG9ydHNbImEgZnVsZmlsbGVkIHByb21pc2UiXSA9IGZ1bmN0aW9uICgpIHsKKyAgICBy
ZXR1cm4gcmVzb2x2ZWQoZHVtbXkpOworfTsKKworZXhwb3J0c1siYSByZWplY3RlZCBwcm9taXNl
Il0gPSBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIHJlamVjdGVkKGR1bW15KTsKK307CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIv
dGVzdHMvaGVscGVycy90ZXN0VGhyZWVDYXNlcy5qcyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2Vz
LXRlc3RzL3Byb21pc2VzLXRlc3RzL2xpYi90ZXN0cy9oZWxwZXJzL3Rlc3RUaHJlZUNhc2VzLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmJiMzc2Njg4MmJjYWFlZjVjNTIwMjdhMDQ4NmI3ZTcxMzkzMDI2ZDQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10
ZXN0cy9saWIvdGVzdHMvaGVscGVycy90ZXN0VGhyZWVDYXNlcy5qcwpAQCAtMCwwICsxLDQ2IEBA
CisidXNlIHN0cmljdCI7CisKK3ZhciBhZGFwdGVyID0gZ2xvYmFsLmFkYXB0ZXI7Cit2YXIgcmVz
b2x2ZWQgPSBhZGFwdGVyLnJlc29sdmVkOwordmFyIHJlamVjdGVkID0gYWRhcHRlci5yZWplY3Rl
ZDsKK3ZhciBkZWZlcnJlZCA9IGFkYXB0ZXIuZGVmZXJyZWQ7CisKK2V4cG9ydHMudGVzdEZ1bGZp
bGxlZCA9IGZ1bmN0aW9uICh2YWx1ZSwgdGVzdCkgeworICAgIHNwZWNpZnkoImFscmVhZHktZnVs
ZmlsbGVkIiwgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgdGVzdChyZXNvbHZlZCh2YWx1ZSks
IGRvbmUpOworICAgIH0pOworCisgICAgc3BlY2lmeSgiaW1tZWRpYXRlbHktZnVsZmlsbGVkIiwg
ZnVuY3Rpb24gKGRvbmUpIHsKKyAgICAgICAgdmFyIGQgPSBkZWZlcnJlZCgpOworICAgICAgICB0
ZXN0KGQucHJvbWlzZSwgZG9uZSk7CisgICAgICAgIGQucmVzb2x2ZSh2YWx1ZSk7CisgICAgfSk7
CisKKyAgICBzcGVjaWZ5KCJldmVudHVhbGx5LWZ1bGZpbGxlZCIsIGZ1bmN0aW9uIChkb25lKSB7
CisgICAgICAgIHZhciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgdGVzdChkLnByb21pc2UsIGRv
bmUpOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGQucmVz
b2x2ZSh2YWx1ZSk7CisgICAgICAgIH0sIDUwKTsKKyAgICB9KTsKK307CisKK2V4cG9ydHMudGVz
dFJlamVjdGVkID0gZnVuY3Rpb24gKHJlYXNvbiwgdGVzdCkgeworICAgIHNwZWNpZnkoImFscmVh
ZHktcmVqZWN0ZWQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICB0ZXN0KHJlamVjdGVkKHJl
YXNvbiksIGRvbmUpOworICAgIH0pOworCisgICAgc3BlY2lmeSgiaW1tZWRpYXRlbHktcmVqZWN0
ZWQiLCBmdW5jdGlvbiAoZG9uZSkgeworICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAg
ICAgIHRlc3QoZC5wcm9taXNlLCBkb25lKTsKKyAgICAgICAgZC5yZWplY3QocmVhc29uKTsKKyAg
ICB9KTsKKworICAgIHNwZWNpZnkoImV2ZW50dWFsbHktcmVqZWN0ZWQiLCBmdW5jdGlvbiAoZG9u
ZSkgeworICAgICAgICB2YXIgZCA9IGRlZmVycmVkKCk7CisgICAgICAgIHRlc3QoZC5wcm9taXNl
LCBkb25lKTsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBk
LnJlamVjdChyZWFzb24pOworICAgICAgICB9LCA1MCk7CisgICAgfSk7Cit9OwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvbGliL3Rlc3Rz
L2hlbHBlcnMvdGhlbmFibGVzLmpzIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJv
bWlzZXMtdGVzdHMvbGliL3Rlc3RzL2hlbHBlcnMvdGhlbmFibGVzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhm
NzRkMmViYWNiMDU4ZmQ0N2M1MTAxZWNiZWI4MWZiNjQ1NmExMTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9saWIvdGVzdHMv
aGVscGVycy90aGVuYWJsZXMuanMKQEAgLTAsMCArMSwxNDIgQEAKKyJ1c2Ugc3RyaWN0IjsKKwor
dmFyIGFkYXB0ZXIgPSBnbG9iYWwuYWRhcHRlcjsKK3ZhciByZXNvbHZlZCA9IGFkYXB0ZXIucmVz
b2x2ZWQ7Cit2YXIgcmVqZWN0ZWQgPSBhZGFwdGVyLnJlamVjdGVkOwordmFyIGRlZmVycmVkID0g
YWRhcHRlci5kZWZlcnJlZDsKKwordmFyIG90aGVyID0geyBvdGhlcjogIm90aGVyIiB9OyAvLyBh
IHZhbHVlIHdlIGRvbid0IHdhbnQgdG8gYmUgc3RyaWN0IGVxdWFsIHRvCisKK2V4cG9ydHMuZnVs
ZmlsbGVkID0geworICAgICJhIHN5bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJs
ZSI6IGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgdGhl
bjogZnVuY3Rpb24gKG9uRnVsZmlsbGVkKSB7CisgICAgICAgICAgICAgICAgb25GdWxmaWxsZWQo
dmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0sCisKKyAgICAiYW4gYXN5
bmNocm9ub3VzbHktZnVsZmlsbGVkIGN1c3RvbSB0aGVuYWJsZSI6IGZ1bmN0aW9uICh2YWx1ZSkg
eworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgdGhlbjogZnVuY3Rpb24gKG9uRnVsZmls
bGVkKSB7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgICAgIG9uRnVsZmlsbGVkKHZhbHVlKTsKKyAgICAgICAgICAgICAgICB9LCAwKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9LAorCisgICAgImEgc3luY2hyb25vdXNs
eS1mdWxmaWxsZWQgb25lLXRpbWUgdGhlbmFibGUiOiBmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAg
ICAgdmFyIG51bWJlck9mVGltZXNUaGVuUmV0cmlldmVkID0gMDsKKyAgICAgICAgcmV0dXJuIE9i
amVjdC5jcmVhdGUobnVsbCwgeworICAgICAgICAgICAgdGhlbjogeworICAgICAgICAgICAgICAg
IGdldDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZUaW1l
c1RoZW5SZXRyaWV2ZWQgPT09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbnVtYmVy
T2ZUaW1lc1RoZW5SZXRyaWV2ZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVu
Y3Rpb24gKG9uRnVsZmlsbGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25GdWxm
aWxsZWQodmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0sCisKKyAgICAiYSB0aGVuYWJs
ZSB0aGF0IHRyaWVzIHRvIGZ1bGZpbGwgdHdpY2UiOiBmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCkgewor
ICAgICAgICAgICAgICAgIG9uRnVsZmlsbGVkKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBvbkZ1
bGZpbGxlZChvdGhlcik7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfSwKKworICAg
ICJhIHRoZW5hYmxlIHRoYXQgZnVsZmlsbHMgYnV0IHRoZW4gdGhyb3dzIjogZnVuY3Rpb24gKHZh
bHVlKSB7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICB0aGVuOiBmdW5jdGlvbiAob25G
dWxmaWxsZWQpIHsKKyAgICAgICAgICAgICAgICBvbkZ1bGZpbGxlZCh2YWx1ZSk7CisgICAgICAg
ICAgICAgICAgdGhyb3cgb3RoZXI7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfSwK
KworICAgICJhbiBhbHJlYWR5LWZ1bGZpbGxlZCBwcm9taXNlIjogZnVuY3Rpb24gKHZhbHVlKSB7
CisgICAgICAgIHJldHVybiByZXNvbHZlZCh2YWx1ZSk7CisgICAgfSwKKworICAgICJhbiBldmVu
dHVhbGx5LWZ1bGZpbGxlZCBwcm9taXNlIjogZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAgIHZh
ciBkID0gZGVmZXJyZWQoKTsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICBkLnJlc29sdmUodmFsdWUpOworICAgICAgICB9LCA1MCk7CisgICAgICAgIHJldHVy
biBkLnByb21pc2U7CisgICAgfQorfTsKKworZXhwb3J0cy5yZWplY3RlZCA9IHsKKyAgICAiYSBz
eW5jaHJvbm91c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSI6IGZ1bmN0aW9uIChyZWFzb24p
IHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChvbkZ1bGZp
bGxlZCwgb25SZWplY3RlZCkgeworICAgICAgICAgICAgICAgIG9uUmVqZWN0ZWQocmVhc29uKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9LAorCisgICAgImFuIGFzeW5jaHJvbm91
c2x5LXJlamVjdGVkIGN1c3RvbSB0aGVuYWJsZSI6IGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25S
ZWplY3RlZCkgeworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgICAgICBvblJlamVjdGVkKHJlYXNvbik7CisgICAgICAgICAgICAgICAgfSwg
MCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfSwKKworICAgICJhIHN5bmNocm9u
b3VzbHktcmVqZWN0ZWQgb25lLXRpbWUgdGhlbmFibGUiOiBmdW5jdGlvbiAocmVhc29uKSB7Cisg
ICAgICAgIHZhciBudW1iZXJPZlRpbWVzVGhlblJldHJpZXZlZCA9IDA7CisgICAgICAgIHJldHVy
biBPYmplY3QuY3JlYXRlKG51bGwsIHsKKyAgICAgICAgICAgIHRoZW46IHsKKyAgICAgICAgICAg
ICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlck9m
VGltZXNUaGVuUmV0cmlldmVkID09PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICArK251
bWJlck9mVGltZXNUaGVuUmV0cmlldmVkOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9uUmVqZWN0ZWQocmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH07
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9LAor
CisgICAgImEgdGhlbmFibGUgdGhhdCBpbW1lZGlhdGVseSB0aHJvd3MgaW4gYHRoZW5gIjogZnVu
Y3Rpb24gKHJlYXNvbikgeworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgdGhlbjogZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHRocm93IHJlYXNvbjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfTsKKyAgICB9LAorCisgICAgImFuIG9iamVjdCB3aXRoIGEgdGhyb3dpbmcgYHRo
ZW5gIGFjY2Vzc29yIjogZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAgICByZXR1cm4gT2JqZWN0
LmNyZWF0ZShudWxsLCB7CisgICAgICAgICAgICB0aGVuOiB7CisgICAgICAgICAgICAgICAgZ2V0
OiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IHJlYXNvbjsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0sCisKKyAgICAi
YW4gYWxyZWFkeS1yZWplY3RlZCBwcm9taXNlIjogZnVuY3Rpb24gKHJlYXNvbikgeworICAgICAg
ICByZXR1cm4gcmVqZWN0ZWQocmVhc29uKTsKKyAgICB9LAorCisgICAgImFuIGV2ZW50dWFsbHkt
cmVqZWN0ZWQgcHJvbWlzZSI6IGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICAgICAgdmFyIGQgPSBk
ZWZlcnJlZCgpOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IGQucmVqZWN0KHJlYXNvbik7CisgICAgICAgIH0sIDUwKTsKKyAgICAgICAgcmV0dXJuIGQucHJv
bWlzZTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVz
dHMvcHJvbWlzZXMtdGVzdHMvcGFja2FnZS5qc29uIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMt
dGVzdHMvcHJvbWlzZXMtdGVzdHMvcGFja2FnZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3ZjJhMDg1NWJj
MWQ2ODNmNmUyMzk3NDU2YzMyOTQyNzEwNTM0NjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9wcm9taXNlcy10ZXN0cy9wYWNrYWdlLmpzb24KQEAgLTAs
MCArMSwzMCBAQAoreworICAgICJuYW1lIjogInByb21pc2VzLWFwbHVzLXRlc3RzIiwKKyAgICAi
ZGVzY3JpcHRpb24iOiAiQ29tcGxpYW5jZSB0ZXN0IHN1aXRlIGZvciBQcm9taXNlcy9BKyIsCisg
ICAgImtleXdvcmRzIjogWyJwcm9taXNlcyIsICJwcm9taXNlcy1hcGx1cyJdLAorICAgICJ2ZXJz
aW9uIjogIjIuMC41IiwKKyAgICAiaW1wbGVtZW50cyI6IFsiUHJvbWlzZXMvQSsgMS4xLjAiXSwK
KyAgICAiYXV0aG9yIjogIkRvbWVuaWMgRGVuaWNvbGEgPGRvbWVuaWNAZG9tZW5pY2Rlbmljb2xh
LmNvbT4gKGh0dHA6Ly9kb21lbmljLm1lKSIsCisgICAgImxpY2Vuc2UiOiAiV1RGUEwiLAorICAg
ICJyZXBvc2l0b3J5IjogeworICAgICAgICAidHlwZSI6ICJnaXQiLAorICAgICAgICAidXJsIjog
ImdpdDovL2dpdGh1Yi5jb20vcHJvbWlzZXMtYXBsdXMvcHJvbWlzZXMtdGVzdHMuZ2l0IgorICAg
IH0sCisgICAgImJ1Z3MiOiAiaHR0cHM6Ly9naXRodWIuY29tL3Byb21pc2VzLWFwbHVzL3Byb21p
c2VzLXRlc3RzL2lzc3VlcyIsCisgICAgIm1haW4iOiAibGliL3Byb2dyYW1tYXRpY1J1bm5lci5q
cyIsCisgICAgImJpbiI6IHsKKyAgICAgICAgInByb21pc2VzLWFwbHVzLXRlc3RzIjogImxpYi9j
bGkuanMiCisgICAgfSwKKyAgICAic2NyaXB0cyI6IHsKKyAgICAgICAgImxpbnQiOiAianNoaW50
IGxpYiIsCisgICAgICAgICJ0ZXN0IjogIm1vY2hhIgorICAgIH0sCisgICAgImRlcGVuZGVuY2ll
cyI6IHsKKyAgICAgICAgIm1vY2hhIjogIn4xLjIxLjQiLAorICAgICAgICAic2lub24iOiAiXjEu
MTAuMyIsCisgICAgICAgICJ1bmRlcnNjb3JlIjogIn4xLjYuMCIKKyAgICB9LAorICAgICJkZXZE
ZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJqc2hpbnQiOiAifjIuNC40IgorICAgIH0KK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3Byb21pc2VzLXRlc3RzL3Rl
c3QvZ2V0TW9jaGFPcHRzVGVzdC5qcyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3RzL3By
b21pc2VzLXRlc3RzL3Rlc3QvZ2V0TW9jaGFPcHRzVGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjdmMTc1
ZmU0ZDE3OTVmNTg3OGVhYzBhNWZmN2RhMGM3YjAwNzQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVzdHMvcHJvbWlzZXMtdGVzdHMvdGVzdC9nZXRNb2NoYU9w
dHNUZXN0LmpzCkBAIC0wLDAgKzEsMzIgQEAKKyJ1c2Ugc3RyaWN0IjsKKwordmFyIGFzc2VydCA9
IHJlcXVpcmUoImFzc2VydCIpOwordmFyIGdldE1vY2hhT3B0cyA9IHJlcXVpcmUoIi4uL2xpYi9n
ZXRNb2NoYU9wdHMiKTsKKworZGVzY3JpYmUoImdldE1vY2hhT3B0cyIsIGZ1bmN0aW9uKCkgewor
ICAgIGZ1bmN0aW9uIHRlc3QoYXJnc1N0cmluZywgZXhwZWN0ZWRPcHRzKSB7CisgICAgICAgIHZh
ciBvcHRzID0gZ2V0TW9jaGFPcHRzKGFyZ3NTdHJpbmcuc3BsaXQoIiAiKSk7CisgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwob3B0cywgZXhwZWN0ZWRPcHRzKTsKKyAgICB9CisKKyAgICBpdCgicGFy
c2VzIHRoZSBwcm92aWRlZCBvcHRpb25zIHRvIGFuIG9iamVjdCIsIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgdGVzdCgiLS1yZXBvcnRlciBzcGVjIC0tdWkgYmRkIiwgeworICAgICAgICAgICAgcmVw
b3J0ZXI6ICJzcGVjIiwKKyAgICAgICAgICAgIHVpOiAiYmRkIgorICAgICAgICB9KTsKKyAgICB9
KTsKKworICAgIGl0KCJzZXRzIHRoZSB2YWx1ZSBmb3Igbm8tYXJnIG9wdGlvbnMgdG8gdHJ1ZSIs
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGVzdCgiLS1iYWlsIC0tdWkgYmRkIiwgeworICAgICAg
ICAgIGJhaWw6IHRydWUsCisgICAgICAgICAgdWk6ICJiZGQiCisgICAgICAgIH0pOworICAgIH0p
OworCisgICAgaXQoInN1cHBvcnRzIG5vLWFyZyBvcHRpb25zIGFzIHRoZSBsYXN0IG9wdGlvbiIs
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGVzdCgiLS1yZXBvcnRlciBzcGVjIC0tYmFpbCIsIHsK
KyAgICAgICAgICByZXBvcnRlcjogInNwZWMiLAorICAgICAgICAgIGJhaWw6IHRydWUKKyAgICAg
ICAgfSk7CisgICAgfSk7Cit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Byb21pc2Vz
LXRlc3RzL3Jlc291cmNlcy9hZGFwdGVyLmpzIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZXMtdGVz
dHMvcmVzb3VyY2VzL2FkYXB0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA3MmEzYTU4Yjk0ODAwMDY5MzE2
NGZiNGEyMjIxZTM3NmUxMzVmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3By
b21pc2VzLXRlc3RzL3Jlc291cmNlcy9hZGFwdGVyLmpzCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCitmdW5jdGlvbiBMYXlvdXRUZXN0c1JlcG9ydGVyKHJ1bm5lcikgeworICAg
IHJ1bm5lci5vbigncGFzcycsIGZ1bmN0aW9uICh0ZXN0KSB7CisgICAgICAgIHRlc3RQYXNzZWQo
dGVzdC5mdWxsVGl0bGUoKSk7CisgICAgfSk7CisKKyAgICBydW5uZXIub24oJ2ZhaWwnLCBmdW5j
dGlvbiAodGVzdCwgZXJyKSB7CisgICAgICAgIHRlc3RGYWlsZWQodGVzdC5mdWxsVGl0bGUoKSAr
ICcgJyArIGVyci5tZXNzYWdlKTsKKyAgICB9KTsKKworICAgIHJ1bm5lci5vbignZW5kJywgZmlu
aXNoSlNUZXN0KTsKK30KKword2luZG93LmFkYXB0ZXIgPSB7CisgICAgcmVzb2x2ZWQ6IGZ1bmN0
aW9uICh2YWx1ZSkgeworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKTsKKyAg
ICB9LAorCisgICAgcmVqZWN0ZWQ6IGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICAgICAgcmV0dXJu
IFByb21pc2UucmVqZWN0KHJlYXNvbik7CisgICAgfSwKKworICAgIGRlZmVycmVkOiBmdW5jdGlv
biAoKSB7CisgICAgICAgIHZhciBleHBvcnRlZFJlc29sdmUsIGV4cG9ydGVkUmVqZWN0OworICAg
ICAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3Qp
IHsKKyAgICAgICAgICAgIGV4cG9ydGVkUmVzb2x2ZSA9IHJlc29sdmU7CisgICAgICAgICAgICBl
eHBvcnRlZFJlamVjdCA9IHJlamVjdDsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiB7Cisg
ICAgICAgICAgICBwcm9taXNlOiBwcm9taXNlLAorICAgICAgICAgICAgcmVzb2x2ZTogZXhwb3J0
ZWRSZXNvbHZlLAorICAgICAgICAgICAgcmVqZWN0OiBleHBvcnRlZFJlamVjdAorICAgICAgICB9
OworICAgIH0KK307CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9y
ZXNvdXJjZXMvbW9jaGEuanMgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9yZXNvdXJj
ZXMvbW9jaGEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc5YWE1ODM3MjNjNmFiMmM4OGExZGVlYzJiM2U2MjMy
ODdiY2QyYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRlc3Rz
L3Jlc291cmNlcy9tb2NoYS5qcwpAQCAtMCwwICsxLDU5ODMgQEAKKzsoZnVuY3Rpb24oKXsKKwor
Ly8gQ29tbW9uSlMgcmVxdWlyZSgpCisKK2Z1bmN0aW9uIHJlcXVpcmUocCl7CisgICAgdmFyIHBh
dGggPSByZXF1aXJlLnJlc29sdmUocCkKKyAgICAgICwgbW9kID0gcmVxdWlyZS5tb2R1bGVzW3Bh
dGhdOworICAgIGlmICghbW9kKSB0aHJvdyBuZXcgRXJyb3IoJ2ZhaWxlZCB0byByZXF1aXJlICIn
ICsgcCArICciJyk7CisgICAgaWYgKCFtb2QuZXhwb3J0cykgeworICAgICAgbW9kLmV4cG9ydHMg
PSB7fTsKKyAgICAgIG1vZC5jYWxsKG1vZC5leHBvcnRzLCBtb2QsIG1vZC5leHBvcnRzLCByZXF1
aXJlLnJlbGF0aXZlKHBhdGgpKTsKKyAgICB9CisgICAgcmV0dXJuIG1vZC5leHBvcnRzOworICB9
CisKK3JlcXVpcmUubW9kdWxlcyA9IHt9OworCityZXF1aXJlLnJlc29sdmUgPSBmdW5jdGlvbiAo
cGF0aCl7CisgICAgdmFyIG9yaWcgPSBwYXRoCisgICAgICAsIHJlZyA9IHBhdGggKyAnLmpzJwor
ICAgICAgLCBpbmRleCA9IHBhdGggKyAnL2luZGV4LmpzJzsKKyAgICByZXR1cm4gcmVxdWlyZS5t
b2R1bGVzW3JlZ10gJiYgcmVnCisgICAgICB8fCByZXF1aXJlLm1vZHVsZXNbaW5kZXhdICYmIGlu
ZGV4CisgICAgICB8fCBvcmlnOworICB9OworCityZXF1aXJlLnJlZ2lzdGVyID0gZnVuY3Rpb24g
KHBhdGgsIGZuKXsKKyAgICByZXF1aXJlLm1vZHVsZXNbcGF0aF0gPSBmbjsKKyAgfTsKKworcmVx
dWlyZS5yZWxhdGl2ZSA9IGZ1bmN0aW9uIChwYXJlbnQpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24o
cCl7CisgICAgICBpZiAoJy4nICE9IHAuY2hhckF0KDApKSByZXR1cm4gcmVxdWlyZShwKTsKKwor
ICAgICAgdmFyIHBhdGggPSBwYXJlbnQuc3BsaXQoJy8nKQorICAgICAgICAsIHNlZ3MgPSBwLnNw
bGl0KCcvJyk7CisgICAgICBwYXRoLnBvcCgpOworCisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHNlZ3MubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIHNlZyA9IHNlZ3NbaV07CisgICAgICAg
IGlmICgnLi4nID09IHNlZykgcGF0aC5wb3AoKTsKKyAgICAgICAgZWxzZSBpZiAoJy4nICE9IHNl
ZykgcGF0aC5wdXNoKHNlZyk7CisgICAgICB9CisKKyAgICAgIHJldHVybiByZXF1aXJlKHBhdGgu
am9pbignLycpKTsKKyAgICB9OworICB9OworCisKK3JlcXVpcmUucmVnaXN0ZXIoImJyb3dzZXIv
ZGVidWcuanMiLCBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUpeworCittb2R1bGUu
ZXhwb3J0cyA9IGZ1bmN0aW9uKHR5cGUpeworICByZXR1cm4gZnVuY3Rpb24oKXsKKyAgfQorfTsK
KworfSk7IC8vIG1vZHVsZTogYnJvd3Nlci9kZWJ1Zy5qcworCityZXF1aXJlLnJlZ2lzdGVyKCJi
cm93c2VyL2RpZmYuanMiLCBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUpeworLyog
U2VlIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMgb2YgdXNlICovCisKKy8qCisgKiBUZXh0IGRpZmYg
aW1wbGVtZW50YXRpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IHN1cHBvcnRzIHRoZSBmb2xsb3dp
bmcgQVBJUzoKKyAqIEpzRGlmZi5kaWZmQ2hhcnM6IENoYXJhY3RlciBieSBjaGFyYWN0ZXIgZGlm
ZgorICogSnNEaWZmLmRpZmZXb3JkczogV29yZCAoYXMgZGVmaW5lZCBieSBcYiByZWdleCkgZGlm
ZiB3aGljaCBpZ25vcmVzIHdoaXRlc3BhY2UKKyAqIEpzRGlmZi5kaWZmTGluZXM6IExpbmUgYmFz
ZWQgZGlmZgorICoKKyAqIEpzRGlmZi5kaWZmQ3NzOiBEaWZmIHRhcmdldGVkIGF0IENTUyBjb250
ZW50CisgKgorICogVGhlc2UgbWV0aG9kcyBhcmUgYmFzZWQgb24gdGhlIGltcGxlbWVudGF0aW9u
IHByb3Bvc2VkIGluCisgKiAiQW4gTyhORCkgRGlmZmVyZW5jZSBBbGdvcml0aG0gYW5kIGl0cyBW
YXJpYXRpb25zIiAoTXllcnMsIDE5ODYpLgorICogaHR0cDovL2NpdGVzZWVyeC5pc3QucHN1LmVk
dS92aWV3ZG9jL3N1bW1hcnk/ZG9pPTEwLjEuMS40LjY5MjcKKyAqLwordmFyIEpzRGlmZiA9IChm
dW5jdGlvbigpIHsKKyAgLypqc2hpbnQgbWF4cGFyYW1zOiA1Ki8KKyAgZnVuY3Rpb24gY2xvbmVQ
YXRoKHBhdGgpIHsKKyAgICByZXR1cm4geyBuZXdQb3M6IHBhdGgubmV3UG9zLCBjb21wb25lbnRz
OiBwYXRoLmNvbXBvbmVudHMuc2xpY2UoMCkgfTsKKyAgfQorICBmdW5jdGlvbiByZW1vdmVFbXB0
eShhcnJheSkgeworICAgIHZhciByZXQgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFy
cmF5Lmxlbmd0aDsgaSsrKSB7CisgICAgICBpZiAoYXJyYXlbaV0pIHsKKyAgICAgICAgcmV0LnB1
c2goYXJyYXlbaV0pOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmV0OworICB9CisgIGZ1
bmN0aW9uIGVzY2FwZUhUTUwocykgeworICAgIHZhciBuID0gczsKKyAgICBuID0gbi5yZXBsYWNl
KC8mL2csICcmYW1wOycpOworICAgIG4gPSBuLnJlcGxhY2UoLzwvZywgJyZsdDsnKTsKKyAgICBu
ID0gbi5yZXBsYWNlKC8+L2csICcmZ3Q7Jyk7CisgICAgbiA9IG4ucmVwbGFjZSgvIi9nLCAnJnF1
b3Q7Jyk7CisKKyAgICByZXR1cm4gbjsKKyAgfQorCisgIHZhciBEaWZmID0gZnVuY3Rpb24oaWdu
b3JlV2hpdGVzcGFjZSkgeworICAgIHRoaXMuaWdub3JlV2hpdGVzcGFjZSA9IGlnbm9yZVdoaXRl
c3BhY2U7CisgIH07CisgIERpZmYucHJvdG90eXBlID0geworICAgICAgZGlmZjogZnVuY3Rpb24o
b2xkU3RyaW5nLCBuZXdTdHJpbmcpIHsKKyAgICAgICAgLy8gSGFuZGxlIHRoZSBpZGVudGl0eSBj
YXNlICh0aGlzIGlzIGR1ZSB0byB1bnJvbGxpbmcgZWRpdExlbmd0aCA9PSAwCisgICAgICAgIGlm
IChuZXdTdHJpbmcgPT09IG9sZFN0cmluZykgeworICAgICAgICAgIHJldHVybiBbeyB2YWx1ZTog
bmV3U3RyaW5nIH1dOworICAgICAgICB9CisgICAgICAgIGlmICghbmV3U3RyaW5nKSB7CisgICAg
ICAgICAgcmV0dXJuIFt7IHZhbHVlOiBvbGRTdHJpbmcsIHJlbW92ZWQ6IHRydWUgfV07CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKCFvbGRTdHJpbmcpIHsKKyAgICAgICAgICByZXR1cm4gW3sgdmFs
dWU6IG5ld1N0cmluZywgYWRkZWQ6IHRydWUgfV07CisgICAgICAgIH0KKworICAgICAgICBuZXdT
dHJpbmcgPSB0aGlzLnRva2VuaXplKG5ld1N0cmluZyk7CisgICAgICAgIG9sZFN0cmluZyA9IHRo
aXMudG9rZW5pemUob2xkU3RyaW5nKTsKKworICAgICAgICB2YXIgbmV3TGVuID0gbmV3U3RyaW5n
Lmxlbmd0aCwgb2xkTGVuID0gb2xkU3RyaW5nLmxlbmd0aDsKKyAgICAgICAgdmFyIG1heEVkaXRM
ZW5ndGggPSBuZXdMZW4gKyBvbGRMZW47CisgICAgICAgIHZhciBiZXN0UGF0aCA9IFt7IG5ld1Bv
czogLTEsIGNvbXBvbmVudHM6IFtdIH1dOworCisgICAgICAgIC8vIFNlZWQgZWRpdExlbmd0aCA9
IDAKKyAgICAgICAgdmFyIG9sZFBvcyA9IHRoaXMuZXh0cmFjdENvbW1vbihiZXN0UGF0aFswXSwg
bmV3U3RyaW5nLCBvbGRTdHJpbmcsIDApOworICAgICAgICBpZiAoYmVzdFBhdGhbMF0ubmV3UG9z
KzEgPj0gbmV3TGVuICYmIG9sZFBvcysxID49IG9sZExlbikgeworICAgICAgICAgIHJldHVybiBi
ZXN0UGF0aFswXS5jb21wb25lbnRzOworICAgICAgICB9CisKKyAgICAgICAgZm9yICh2YXIgZWRp
dExlbmd0aCA9IDE7IGVkaXRMZW5ndGggPD0gbWF4RWRpdExlbmd0aDsgZWRpdExlbmd0aCsrKSB7
CisgICAgICAgICAgZm9yICh2YXIgZGlhZ29uYWxQYXRoID0gLTEqZWRpdExlbmd0aDsgZGlhZ29u
YWxQYXRoIDw9IGVkaXRMZW5ndGg7IGRpYWdvbmFsUGF0aCs9MikgeworICAgICAgICAgICAgdmFy
IGJhc2VQYXRoOworICAgICAgICAgICAgdmFyIGFkZFBhdGggPSBiZXN0UGF0aFtkaWFnb25hbFBh
dGgtMV0sCisgICAgICAgICAgICAgICAgcmVtb3ZlUGF0aCA9IGJlc3RQYXRoW2RpYWdvbmFsUGF0
aCsxXTsKKyAgICAgICAgICAgIG9sZFBvcyA9IChyZW1vdmVQYXRoID8gcmVtb3ZlUGF0aC5uZXdQ
b3MgOiAwKSAtIGRpYWdvbmFsUGF0aDsKKyAgICAgICAgICAgIGlmIChhZGRQYXRoKSB7CisgICAg
ICAgICAgICAgIC8vIE5vIG9uZSBlbHNlIGlzIGdvaW5nIHRvIGF0dGVtcHQgdG8gdXNlIHRoaXMg
dmFsdWUsIGNsZWFyIGl0CisgICAgICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aC0xXSA9
IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGNhbkFkZCA9IGFk
ZFBhdGggJiYgYWRkUGF0aC5uZXdQb3MrMSA8IG5ld0xlbjsKKyAgICAgICAgICAgIHZhciBjYW5S
ZW1vdmUgPSByZW1vdmVQYXRoICYmIDAgPD0gb2xkUG9zICYmIG9sZFBvcyA8IG9sZExlbjsKKyAg
ICAgICAgICAgIGlmICghY2FuQWRkICYmICFjYW5SZW1vdmUpIHsKKyAgICAgICAgICAgICAgYmVz
dFBhdGhbZGlhZ29uYWxQYXRoXSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFNlbGVjdCB0aGUgZGlhZ29uYWwgdGhh
dCB3ZSB3YW50IHRvIGJyYW5jaCBmcm9tLiBXZSBzZWxlY3QgdGhlIHByaW9yCisgICAgICAgICAg
ICAvLyBwYXRoIHdob3NlIHBvc2l0aW9uIGluIHRoZSBuZXcgc3RyaW5nIGlzIHRoZSBmYXJ0aGVz
dCBmcm9tIHRoZSBvcmlnaW4KKyAgICAgICAgICAgIC8vIGFuZCBkb2VzIG5vdCBwYXNzIHRoZSBi
b3VuZHMgb2YgdGhlIGRpZmYgZ3JhcGgKKyAgICAgICAgICAgIGlmICghY2FuQWRkIHx8IChjYW5S
ZW1vdmUgJiYgYWRkUGF0aC5uZXdQb3MgPCByZW1vdmVQYXRoLm5ld1BvcykpIHsKKyAgICAgICAg
ICAgICAgYmFzZVBhdGggPSBjbG9uZVBhdGgocmVtb3ZlUGF0aCk7CisgICAgICAgICAgICAgIHRo
aXMucHVzaENvbXBvbmVudChiYXNlUGF0aC5jb21wb25lbnRzLCBvbGRTdHJpbmdbb2xkUG9zXSwg
dW5kZWZpbmVkLCB0cnVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIGJh
c2VQYXRoID0gY2xvbmVQYXRoKGFkZFBhdGgpOworICAgICAgICAgICAgICBiYXNlUGF0aC5uZXdQ
b3MrKzsKKyAgICAgICAgICAgICAgdGhpcy5wdXNoQ29tcG9uZW50KGJhc2VQYXRoLmNvbXBvbmVu
dHMsIG5ld1N0cmluZ1tiYXNlUGF0aC5uZXdQb3NdLCB0cnVlLCB1bmRlZmluZWQpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgb2xkUG9zID0gdGhpcy5leHRyYWN0Q29tbW9uKGJh
c2VQYXRoLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgZGlhZ29uYWxQYXRoKTsKKworICAgICAgICAg
ICAgaWYgKGJhc2VQYXRoLm5ld1BvcysxID49IG5ld0xlbiAmJiBvbGRQb3MrMSA+PSBvbGRMZW4p
IHsKKyAgICAgICAgICAgICAgcmV0dXJuIGJhc2VQYXRoLmNvbXBvbmVudHM7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGhdID0gYmFzZVBh
dGg7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9LAorCisg
ICAgICBwdXNoQ29tcG9uZW50OiBmdW5jdGlvbihjb21wb25lbnRzLCB2YWx1ZSwgYWRkZWQsIHJl
bW92ZWQpIHsKKyAgICAgICAgdmFyIGxhc3QgPSBjb21wb25lbnRzW2NvbXBvbmVudHMubGVuZ3Ro
LTFdOworICAgICAgICBpZiAobGFzdCAmJiBsYXN0LmFkZGVkID09PSBhZGRlZCAmJiBsYXN0LnJl
bW92ZWQgPT09IHJlbW92ZWQpIHsKKyAgICAgICAgICAvLyBXZSBuZWVkIHRvIGNsb25lIGhlcmUg
YXMgdGhlIGNvbXBvbmVudCBjbG9uZSBvcGVyYXRpb24gaXMganVzdAorICAgICAgICAgIC8vIGFz
IHNoYWxsb3cgYXJyYXkgY2xvbmUKKyAgICAgICAgICBjb21wb25lbnRzW2NvbXBvbmVudHMubGVu
Z3RoLTFdID0KKyAgICAgICAgICAgIHt2YWx1ZTogdGhpcy5qb2luKGxhc3QudmFsdWUsIHZhbHVl
KSwgYWRkZWQ6IGFkZGVkLCByZW1vdmVkOiByZW1vdmVkIH07CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgY29tcG9uZW50cy5wdXNoKHt2YWx1ZTogdmFsdWUsIGFkZGVkOiBhZGRlZCwgcmVt
b3ZlZDogcmVtb3ZlZCB9KTsKKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgIGV4dHJhY3RDb21t
b246IGZ1bmN0aW9uKGJhc2VQYXRoLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgZGlhZ29uYWxQYXRo
KSB7CisgICAgICAgIHZhciBuZXdMZW4gPSBuZXdTdHJpbmcubGVuZ3RoLAorICAgICAgICAgICAg
b2xkTGVuID0gb2xkU3RyaW5nLmxlbmd0aCwKKyAgICAgICAgICAgIG5ld1BvcyA9IGJhc2VQYXRo
Lm5ld1BvcywKKyAgICAgICAgICAgIG9sZFBvcyA9IG5ld1BvcyAtIGRpYWdvbmFsUGF0aDsKKyAg
ICAgICAgd2hpbGUgKG5ld1BvcysxIDwgbmV3TGVuICYmIG9sZFBvcysxIDwgb2xkTGVuICYmIHRo
aXMuZXF1YWxzKG5ld1N0cmluZ1tuZXdQb3MrMV0sIG9sZFN0cmluZ1tvbGRQb3MrMV0pKSB7Cisg
ICAgICAgICAgbmV3UG9zKys7CisgICAgICAgICAgb2xkUG9zKys7CisKKyAgICAgICAgICB0aGlz
LnB1c2hDb21wb25lbnQoYmFzZVBhdGguY29tcG9uZW50cywgbmV3U3RyaW5nW25ld1Bvc10sIHVu
ZGVmaW5lZCwgdW5kZWZpbmVkKTsKKyAgICAgICAgfQorICAgICAgICBiYXNlUGF0aC5uZXdQb3Mg
PSBuZXdQb3M7CisgICAgICAgIHJldHVybiBvbGRQb3M7CisgICAgICB9LAorCisgICAgICBlcXVh
bHM6IGZ1bmN0aW9uKGxlZnQsIHJpZ2h0KSB7CisgICAgICAgIHZhciByZVdoaXRlc3BhY2UgPSAv
XFMvOworICAgICAgICBpZiAodGhpcy5pZ25vcmVXaGl0ZXNwYWNlICYmICFyZVdoaXRlc3BhY2Uu
dGVzdChsZWZ0KSAmJiAhcmVXaGl0ZXNwYWNlLnRlc3QocmlnaHQpKSB7CisgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcmV0dXJuIGxlZnQgPT09IHJp
Z2h0OworICAgICAgICB9CisgICAgICB9LAorICAgICAgam9pbjogZnVuY3Rpb24obGVmdCwgcmln
aHQpIHsKKyAgICAgICAgcmV0dXJuIGxlZnQgKyByaWdodDsKKyAgICAgIH0sCisgICAgICB0b2tl
bml6ZTogZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgfQor
ICB9OworCisgIHZhciBDaGFyRGlmZiA9IG5ldyBEaWZmKCk7CisKKyAgdmFyIFdvcmREaWZmID0g
bmV3IERpZmYodHJ1ZSk7CisgIHZhciBXb3JkV2l0aFNwYWNlRGlmZiA9IG5ldyBEaWZmKCk7Cisg
IFdvcmREaWZmLnRva2VuaXplID0gV29yZFdpdGhTcGFjZURpZmYudG9rZW5pemUgPSBmdW5jdGlv
bih2YWx1ZSkgeworICAgIHJldHVybiByZW1vdmVFbXB0eSh2YWx1ZS5zcGxpdCgvKFxzK3xcYikv
KSk7CisgIH07CisKKyAgdmFyIENzc0RpZmYgPSBuZXcgRGlmZih0cnVlKTsKKyAgQ3NzRGlmZi50
b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgcmV0dXJuIHJlbW92ZUVtcHR5KHZhbHVl
LnNwbGl0KC8oW3t9OjssXXxccyspLykpOworICB9OworCisgIHZhciBMaW5lRGlmZiA9IG5ldyBE
aWZmKCk7CisgIExpbmVEaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUpIHsKKyAgICByZXR1
cm4gdmFsdWUuc3BsaXQoL14vbSk7CisgIH07CisKKyAgcmV0dXJuIHsKKyAgICBEaWZmOiBEaWZm
LAorCisgICAgZGlmZkNoYXJzOiBmdW5jdGlvbihvbGRTdHIsIG5ld1N0cikgeyByZXR1cm4gQ2hh
ckRpZmYuZGlmZihvbGRTdHIsIG5ld1N0cik7IH0sCisgICAgZGlmZldvcmRzOiBmdW5jdGlvbihv
bGRTdHIsIG5ld1N0cikgeyByZXR1cm4gV29yZERpZmYuZGlmZihvbGRTdHIsIG5ld1N0cik7IH0s
CisgICAgZGlmZldvcmRzV2l0aFNwYWNlOiBmdW5jdGlvbihvbGRTdHIsIG5ld1N0cikgeyByZXR1
cm4gV29yZFdpdGhTcGFjZURpZmYuZGlmZihvbGRTdHIsIG5ld1N0cik7IH0sCisgICAgZGlmZkxp
bmVzOiBmdW5jdGlvbihvbGRTdHIsIG5ld1N0cikgeyByZXR1cm4gTGluZURpZmYuZGlmZihvbGRT
dHIsIG5ld1N0cik7IH0sCisKKyAgICBkaWZmQ3NzOiBmdW5jdGlvbihvbGRTdHIsIG5ld1N0cikg
eyByZXR1cm4gQ3NzRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyKTsgfSwKKworICAgIGNyZWF0ZVBh
dGNoOiBmdW5jdGlvbihmaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVh
ZGVyKSB7CisgICAgICB2YXIgcmV0ID0gW107CisKKyAgICAgIHJldC5wdXNoKCdJbmRleDogJyAr
IGZpbGVOYW1lKTsKKyAgICAgIHJldC5wdXNoKCc9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Jyk7CisgICAgICByZXQucHVz
aCgnLS0tICcgKyBmaWxlTmFtZSArICh0eXBlb2Ygb2xkSGVhZGVyID09PSAndW5kZWZpbmVkJyA/
ICcnIDogJ1x0JyArIG9sZEhlYWRlcikpOworICAgICAgcmV0LnB1c2goJysrKyAnICsgZmlsZU5h
bWUgKyAodHlwZW9mIG5ld0hlYWRlciA9PT0gJ3VuZGVmaW5lZCcgPyAnJyA6ICdcdCcgKyBuZXdI
ZWFkZXIpKTsKKworICAgICAgdmFyIGRpZmYgPSBMaW5lRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3Ry
KTsKKyAgICAgIGlmICghZGlmZltkaWZmLmxlbmd0aC0xXS52YWx1ZSkgeworICAgICAgICBkaWZm
LnBvcCgpOyAgIC8vIFJlbW92ZSB0cmFpbGluZyBuZXdsaW5lIGFkZAorICAgICAgfQorICAgICAg
ZGlmZi5wdXNoKHt2YWx1ZTogJycsIGxpbmVzOiBbXX0pOyAgIC8vIEFwcGVuZCBhbiBlbXB0eSB2
YWx1ZSB0byBtYWtlIGNsZWFudXAgZWFzaWVyCisKKyAgICAgIGZ1bmN0aW9uIGNvbnRleHRMaW5l
cyhsaW5lcykgeworICAgICAgICByZXR1cm4gbGluZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7IHJl
dHVybiAnICcgKyBlbnRyeTsgfSk7CisgICAgICB9CisgICAgICBmdW5jdGlvbiBlb2ZOTChjdXJS
YW5nZSwgaSwgY3VycmVudCkgeworICAgICAgICB2YXIgbGFzdCA9IGRpZmZbZGlmZi5sZW5ndGgt
Ml0sCisgICAgICAgICAgICBpc0xhc3QgPSBpID09PSBkaWZmLmxlbmd0aC0yLAorICAgICAgICAg
ICAgaXNMYXN0T2ZUeXBlID0gaSA9PT0gZGlmZi5sZW5ndGgtMyAmJiAoY3VycmVudC5hZGRlZCAh
PT0gbGFzdC5hZGRlZCB8fCBjdXJyZW50LnJlbW92ZWQgIT09IGxhc3QucmVtb3ZlZCk7CisKKyAg
ICAgICAgLy8gRmlndXJlIG91dCBpZiB0aGlzIGlzIHRoZSBsYXN0IGxpbmUgZm9yIHRoZSBnaXZl
biBmaWxlIGFuZCBtaXNzaW5nIE5MCisgICAgICAgIGlmICghL1xuJC8udGVzdChjdXJyZW50LnZh
bHVlKSAmJiAoaXNMYXN0IHx8IGlzTGFzdE9mVHlwZSkpIHsKKyAgICAgICAgICBjdXJSYW5nZS5w
dXNoKCdcXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlJyk7CisgICAgICAgIH0KKyAgICAgIH0K
KworICAgICAgdmFyIG9sZFJhbmdlU3RhcnQgPSAwLCBuZXdSYW5nZVN0YXJ0ID0gMCwgY3VyUmFu
Z2UgPSBbXSwKKyAgICAgICAgICBvbGRMaW5lID0gMSwgbmV3TGluZSA9IDE7CisgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGRpZmYubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIGN1cnJlbnQg
PSBkaWZmW2ldLAorICAgICAgICAgICAgbGluZXMgPSBjdXJyZW50LmxpbmVzIHx8IGN1cnJlbnQu
dmFsdWUucmVwbGFjZSgvXG4kLywgJycpLnNwbGl0KCdcbicpOworICAgICAgICBjdXJyZW50Lmxp
bmVzID0gbGluZXM7CisKKyAgICAgICAgaWYgKGN1cnJlbnQuYWRkZWQgfHwgY3VycmVudC5yZW1v
dmVkKSB7CisgICAgICAgICAgaWYgKCFvbGRSYW5nZVN0YXJ0KSB7CisgICAgICAgICAgICB2YXIg
cHJldiA9IGRpZmZbaS0xXTsKKyAgICAgICAgICAgIG9sZFJhbmdlU3RhcnQgPSBvbGRMaW5lOwor
ICAgICAgICAgICAgbmV3UmFuZ2VTdGFydCA9IG5ld0xpbmU7CisKKyAgICAgICAgICAgIGlmIChw
cmV2KSB7CisgICAgICAgICAgICAgIGN1clJhbmdlID0gY29udGV4dExpbmVzKHByZXYubGluZXMu
c2xpY2UoLTQpKTsKKyAgICAgICAgICAgICAgb2xkUmFuZ2VTdGFydCAtPSBjdXJSYW5nZS5sZW5n
dGg7CisgICAgICAgICAgICAgIG5ld1JhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoOworICAg
ICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICBjdXJSYW5nZS5wdXNoLmFwcGx5KGN1
clJhbmdlLCBsaW5lcy5tYXAoZnVuY3Rpb24oZW50cnkpIHsgcmV0dXJuIChjdXJyZW50LmFkZGVk
PycrJzonLScpICsgZW50cnk7IH0pKTsKKyAgICAgICAgICBlb2ZOTChjdXJSYW5nZSwgaSwgY3Vy
cmVudCk7CisKKyAgICAgICAgICBpZiAoY3VycmVudC5hZGRlZCkgeworICAgICAgICAgICAgbmV3
TGluZSArPSBsaW5lcy5sZW5ndGg7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG9s
ZExpbmUgKz0gbGluZXMubGVuZ3RoOworICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICBpZiAob2xkUmFuZ2VTdGFydCkgeworICAgICAgICAgICAgLy8gQ2xvc2Ugb3V0IGFu
eSBjaGFuZ2VzIHRoYXQgaGF2ZSBiZWVuIG91dHB1dCAob3Igam9pbiBvdmVybGFwcGluZykKKyAg
ICAgICAgICAgIGlmIChsaW5lcy5sZW5ndGggPD0gOCAmJiBpIDwgZGlmZi5sZW5ndGgtMikgewor
ICAgICAgICAgICAgICAvLyBPdmVybGFwcGluZworICAgICAgICAgICAgICBjdXJSYW5nZS5wdXNo
LmFwcGx5KGN1clJhbmdlLCBjb250ZXh0TGluZXMobGluZXMpKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgIC8vIGVuZCB0aGUgcmFuZ2UgYW5kIG91dHB1dAorICAgICAgICAg
ICAgICB2YXIgY29udGV4dFNpemUgPSBNYXRoLm1pbihsaW5lcy5sZW5ndGgsIDQpOworICAgICAg
ICAgICAgICByZXQucHVzaCgKKyAgICAgICAgICAgICAgICAgICdAQCAtJyArIG9sZFJhbmdlU3Rh
cnQgKyAnLCcgKyAob2xkTGluZS1vbGRSYW5nZVN0YXJ0K2NvbnRleHRTaXplKQorICAgICAgICAg
ICAgICAgICAgKyAnICsnICsgbmV3UmFuZ2VTdGFydCArICcsJyArIChuZXdMaW5lLW5ld1Jhbmdl
U3RhcnQrY29udGV4dFNpemUpCisgICAgICAgICAgICAgICAgICArICcgQEAnKTsKKyAgICAgICAg
ICAgICAgcmV0LnB1c2guYXBwbHkocmV0LCBjdXJSYW5nZSk7CisgICAgICAgICAgICAgIHJldC5w
dXNoLmFwcGx5KHJldCwgY29udGV4dExpbmVzKGxpbmVzLnNsaWNlKDAsIGNvbnRleHRTaXplKSkp
OworICAgICAgICAgICAgICBpZiAobGluZXMubGVuZ3RoIDw9IDQpIHsKKyAgICAgICAgICAgICAg
ICBlb2ZOTChyZXQsIGksIGN1cnJlbnQpOworICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgb2xkUmFuZ2VTdGFydCA9IDA7ICBuZXdSYW5nZVN0YXJ0ID0gMDsgY3VyUmFuZ2UgPSBbXTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgb2xkTGluZSArPSBsaW5lcy5s
ZW5ndGg7CisgICAgICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7CisgICAgICAgIH0KKyAg
ICAgIH0KKworICAgICAgcmV0dXJuIHJldC5qb2luKCdcbicpICsgJ1xuJzsKKyAgICB9LAorCisg
ICAgYXBwbHlQYXRjaDogZnVuY3Rpb24ob2xkU3RyLCB1bmlEaWZmKSB7CisgICAgICB2YXIgZGlm
ZnN0ciA9IHVuaURpZmYuc3BsaXQoJ1xuJyk7CisgICAgICB2YXIgZGlmZiA9IFtdOworICAgICAg
dmFyIHJlbUVPRk5MID0gZmFsc2UsCisgICAgICAgICAgYWRkRU9GTkwgPSBmYWxzZTsKKworICAg
ICAgZm9yICh2YXIgaSA9IChkaWZmc3RyWzBdWzBdPT09J0knPzQ6MCk7IGkgPCBkaWZmc3RyLmxl
bmd0aDsgaSsrKSB7CisgICAgICAgIGlmKGRpZmZzdHJbaV1bMF0gPT09ICdAJykgeworICAgICAg
ICAgIHZhciBtZWggPSBkaWZmc3RyW2ldLnNwbGl0KC9AQCAtKFxkKyksKFxkKykgXCsoXGQrKSwo
XGQrKSBAQC8pOworICAgICAgICAgIGRpZmYudW5zaGlmdCh7CisgICAgICAgICAgICBzdGFydDpt
ZWhbM10sCisgICAgICAgICAgICBvbGRsZW5ndGg6bWVoWzJdLAorICAgICAgICAgICAgb2xkbGlu
ZXM6W10sCisgICAgICAgICAgICBuZXdsZW5ndGg6bWVoWzRdLAorICAgICAgICAgICAgbmV3bGlu
ZXM6W10KKyAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIGlmKGRpZmZzdHJbaV1bMF0gPT09
ICcrJykgeworICAgICAgICAgIGRpZmZbMF0ubmV3bGluZXMucHVzaChkaWZmc3RyW2ldLnN1YnN0
cigxKSk7CisgICAgICAgIH0gZWxzZSBpZihkaWZmc3RyW2ldWzBdID09PSAnLScpIHsKKyAgICAg
ICAgICBkaWZmWzBdLm9sZGxpbmVzLnB1c2goZGlmZnN0cltpXS5zdWJzdHIoMSkpOworICAgICAg
ICB9IGVsc2UgaWYoZGlmZnN0cltpXVswXSA9PT0gJyAnKSB7CisgICAgICAgICAgZGlmZlswXS5u
ZXdsaW5lcy5wdXNoKGRpZmZzdHJbaV0uc3Vic3RyKDEpKTsKKyAgICAgICAgICBkaWZmWzBdLm9s
ZGxpbmVzLnB1c2goZGlmZnN0cltpXS5zdWJzdHIoMSkpOworICAgICAgICB9IGVsc2UgaWYoZGlm
ZnN0cltpXVswXSA9PT0gJ1xcJykgeworICAgICAgICAgIGlmIChkaWZmc3RyW2ktMV1bMF0gPT09
ICcrJykgeworICAgICAgICAgICAgcmVtRU9GTkwgPSB0cnVlOworICAgICAgICAgIH0gZWxzZSBp
ZihkaWZmc3RyW2ktMV1bMF0gPT09ICctJykgeworICAgICAgICAgICAgYWRkRU9GTkwgPSB0cnVl
OworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorCisgICAgICB2YXIgc3RyID0gb2xk
U3RyLnNwbGl0KCdcbicpOworICAgICAgZm9yICh2YXIgaSA9IGRpZmYubGVuZ3RoIC0gMTsgaSA+
PSAwOyBpLS0pIHsKKyAgICAgICAgdmFyIGQgPSBkaWZmW2ldOworICAgICAgICBmb3IgKHZhciBq
ID0gMDsgaiA8IGQub2xkbGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICBpZihzdHJbZC5zdGFydC0x
K2pdICE9PSBkLm9sZGxpbmVzW2pdKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIEFycmF5LnByb3RvdHlwZS5zcGxpY2UuYXBwbHko
c3RyLFtkLnN0YXJ0LTEsK2Qub2xkbGVuZ3RoXS5jb25jYXQoZC5uZXdsaW5lcykpOworICAgICAg
fQorCisgICAgICBpZiAocmVtRU9GTkwpIHsKKyAgICAgICAgd2hpbGUgKCFzdHJbc3RyLmxlbmd0
aC0xXSkgeworICAgICAgICAgIHN0ci5wb3AoKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIGlm
IChhZGRFT0ZOTCkgeworICAgICAgICBzdHIucHVzaCgnJyk7CisgICAgICB9CisgICAgICByZXR1
cm4gc3RyLmpvaW4oJ1xuJyk7CisgICAgfSwKKworICAgIGNvbnZlcnRDaGFuZ2VzVG9YTUw6IGZ1
bmN0aW9uKGNoYW5nZXMpeworICAgICAgdmFyIHJldCA9IFtdOworICAgICAgZm9yICggdmFyIGkg
PSAwOyBpIDwgY2hhbmdlcy5sZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgY2hhbmdlID0gY2hh
bmdlc1tpXTsKKyAgICAgICAgaWYgKGNoYW5nZS5hZGRlZCkgeworICAgICAgICAgIHJldC5wdXNo
KCc8aW5zPicpOworICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZW1vdmVkKSB7CisgICAgICAg
ICAgcmV0LnB1c2goJzxkZWw+Jyk7CisgICAgICAgIH0KKworICAgICAgICByZXQucHVzaChlc2Nh
cGVIVE1MKGNoYW5nZS52YWx1ZSkpOworCisgICAgICAgIGlmIChjaGFuZ2UuYWRkZWQpIHsKKyAg
ICAgICAgICByZXQucHVzaCgnPC9pbnM+Jyk7CisgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlLnJl
bW92ZWQpIHsKKyAgICAgICAgICByZXQucHVzaCgnPC9kZWw+Jyk7CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICAgIHJldHVybiByZXQuam9pbignJyk7CisgICAgfSwKKworICAgIC8vIFNlZTogaHR0
cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS1kaWZmLW1hdGNoLXBhdGNoL3dpa2kvQVBJCisg
ICAgY29udmVydENoYW5nZXNUb0RNUDogZnVuY3Rpb24oY2hhbmdlcyl7CisgICAgICB2YXIgcmV0
ID0gW10sIGNoYW5nZTsKKyAgICAgIGZvciAoIHZhciBpID0gMDsgaSA8IGNoYW5nZXMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgICAgY2hhbmdlID0gY2hhbmdlc1tpXTsKKyAgICAgICAgcmV0LnB1c2go
WyhjaGFuZ2UuYWRkZWQgPyAxIDogY2hhbmdlLnJlbW92ZWQgPyAtMSA6IDApLCBjaGFuZ2UudmFs
dWVdKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiByZXQ7CisgICAgfQorICB9OworfSkoKTsKKwor
aWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7CisgICAgbW9kdWxlLmV4cG9ydHMg
PSBKc0RpZmY7Cit9CisKK30pOyAvLyBtb2R1bGU6IGJyb3dzZXIvZGlmZi5qcworCityZXF1aXJl
LnJlZ2lzdGVyKCJicm93c2VyL2V2ZW50cy5qcyIsIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
cmVxdWlyZSl7CisKKy8qKgorICogTW9kdWxlIGV4cG9ydHMuCisgKi8KKworZXhwb3J0cy5FdmVu
dEVtaXR0ZXIgPSBFdmVudEVtaXR0ZXI7CisKKy8qKgorICogQ2hlY2sgaWYgYG9iamAgaXMgYW4g
YXJyYXkuCisgKi8KKworZnVuY3Rpb24gaXNBcnJheShvYmopIHsKKyAgcmV0dXJuICdbb2JqZWN0
IEFycmF5XScgPT0ge30udG9TdHJpbmcuY2FsbChvYmopOworfQorCisvKioKKyAqIEV2ZW50IGVt
aXR0ZXIgY29uc3RydWN0b3IuCisgKgorICogQGFwaSBwdWJsaWMKKyAqLworCitmdW5jdGlvbiBF
dmVudEVtaXR0ZXIoKXt9OworCisvKioKKyAqIEFkZHMgYSBsaXN0ZW5lci4KKyAqCisgKiBAYXBp
IHB1YmxpYworICovCisKK0V2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAobmFt
ZSwgZm4pIHsKKyAgaWYgKCF0aGlzLiRldmVudHMpIHsKKyAgICB0aGlzLiRldmVudHMgPSB7fTsK
KyAgfQorCisgIGlmICghdGhpcy4kZXZlbnRzW25hbWVdKSB7CisgICAgdGhpcy4kZXZlbnRzW25h
bWVdID0gZm47CisgIH0gZWxzZSBpZiAoaXNBcnJheSh0aGlzLiRldmVudHNbbmFtZV0pKSB7Cisg
ICAgdGhpcy4kZXZlbnRzW25hbWVdLnB1c2goZm4pOworICB9IGVsc2UgeworICAgIHRoaXMuJGV2
ZW50c1tuYW1lXSA9IFt0aGlzLiRldmVudHNbbmFtZV0sIGZuXTsKKyAgfQorCisgIHJldHVybiB0
aGlzOworfTsKKworRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IEV2ZW50RW1p
dHRlci5wcm90b3R5cGUub247CisKKy8qKgorICogQWRkcyBhIHZvbGF0aWxlIGxpc3RlbmVyLgor
ICoKKyAqIEBhcGkgcHVibGljCisgKi8KKworRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbmNlID0g
ZnVuY3Rpb24gKG5hbWUsIGZuKSB7CisgIHZhciBzZWxmID0gdGhpczsKKworICBmdW5jdGlvbiBv
biAoKSB7CisgICAgc2VsZi5yZW1vdmVMaXN0ZW5lcihuYW1lLCBvbik7CisgICAgZm4uYXBwbHko
dGhpcywgYXJndW1lbnRzKTsKKyAgfTsKKworICBvbi5saXN0ZW5lciA9IGZuOworICB0aGlzLm9u
KG5hbWUsIG9uKTsKKworICByZXR1cm4gdGhpczsKK307CisKKy8qKgorICogUmVtb3ZlcyBhIGxp
c3RlbmVyLgorICoKKyAqIEBhcGkgcHVibGljCisgKi8KKworRXZlbnRFbWl0dGVyLnByb3RvdHlw
ZS5yZW1vdmVMaXN0ZW5lciA9IGZ1bmN0aW9uIChuYW1lLCBmbikgeworICBpZiAodGhpcy4kZXZl
bnRzICYmIHRoaXMuJGV2ZW50c1tuYW1lXSkgeworICAgIHZhciBsaXN0ID0gdGhpcy4kZXZlbnRz
W25hbWVdOworCisgICAgaWYgKGlzQXJyYXkobGlzdCkpIHsKKyAgICAgIHZhciBwb3MgPSAtMTsK
KworICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBsaXN0Lmxlbmd0aDsgaSA8IGw7IGkrKykgewor
ICAgICAgICBpZiAobGlzdFtpXSA9PT0gZm4gfHwgKGxpc3RbaV0ubGlzdGVuZXIgJiYgbGlzdFtp
XS5saXN0ZW5lciA9PT0gZm4pKSB7CisgICAgICAgICAgcG9zID0gaTsKKyAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBpZiAocG9zIDwgMCkgeworICAgICAgICBy
ZXR1cm4gdGhpczsKKyAgICAgIH0KKworICAgICAgbGlzdC5zcGxpY2UocG9zLCAxKTsKKworICAg
ICAgaWYgKCFsaXN0Lmxlbmd0aCkgeworICAgICAgICBkZWxldGUgdGhpcy4kZXZlbnRzW25hbWVd
OworICAgICAgfQorICAgIH0gZWxzZSBpZiAobGlzdCA9PT0gZm4gfHwgKGxpc3QubGlzdGVuZXIg
JiYgbGlzdC5saXN0ZW5lciA9PT0gZm4pKSB7CisgICAgICBkZWxldGUgdGhpcy4kZXZlbnRzW25h
bWVdOworICAgIH0KKyAgfQorCisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBSZW1vdmVz
IGFsbCBsaXN0ZW5lcnMgZm9yIGFuIGV2ZW50LgorICoKKyAqIEBhcGkgcHVibGljCisgKi8KKwor
RXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFt
ZSkgeworICBpZiAobmFtZSA9PT0gdW5kZWZpbmVkKSB7CisgICAgdGhpcy4kZXZlbnRzID0ge307
CisgICAgcmV0dXJuIHRoaXM7CisgIH0KKworICBpZiAodGhpcy4kZXZlbnRzICYmIHRoaXMuJGV2
ZW50c1tuYW1lXSkgeworICAgIHRoaXMuJGV2ZW50c1tuYW1lXSA9IG51bGw7CisgIH0KKworICBy
ZXR1cm4gdGhpczsKK307CisKKy8qKgorICogR2V0cyBhbGwgbGlzdGVuZXJzIGZvciBhIGNlcnRh
aW4gZXZlbnQuCisgKgorICogQGFwaSBwdWJsaWMKKyAqLworCitFdmVudEVtaXR0ZXIucHJvdG90
eXBlLmxpc3RlbmVycyA9IGZ1bmN0aW9uIChuYW1lKSB7CisgIGlmICghdGhpcy4kZXZlbnRzKSB7
CisgICAgdGhpcy4kZXZlbnRzID0ge307CisgIH0KKworICBpZiAoIXRoaXMuJGV2ZW50c1tuYW1l
XSkgeworICAgIHRoaXMuJGV2ZW50c1tuYW1lXSA9IFtdOworICB9CisKKyAgaWYgKCFpc0FycmF5
KHRoaXMuJGV2ZW50c1tuYW1lXSkpIHsKKyAgICB0aGlzLiRldmVudHNbbmFtZV0gPSBbdGhpcy4k
ZXZlbnRzW25hbWVdXTsKKyAgfQorCisgIHJldHVybiB0aGlzLiRldmVudHNbbmFtZV07Cit9Owor
CisvKioKKyAqIEVtaXRzIGFuIGV2ZW50LgorICoKKyAqIEBhcGkgcHVibGljCisgKi8KKworRXZl
bnRFbWl0dGVyLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgaWYgKCF0aGlz
LiRldmVudHMpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICB2YXIgaGFuZGxlciA9IHRo
aXMuJGV2ZW50c1tuYW1lXTsKKworICBpZiAoIWhhbmRsZXIpIHsKKyAgICByZXR1cm4gZmFsc2U7
CisgIH0KKworICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTsKKworICBp
ZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgaGFuZGxlcikgeworICAgIGhhbmRsZXIuYXBwbHkodGhp
cywgYXJncyk7CisgIH0gZWxzZSBpZiAoaXNBcnJheShoYW5kbGVyKSkgeworICAgIHZhciBsaXN0
ZW5lcnMgPSBoYW5kbGVyLnNsaWNlKCk7CisKKyAgICBmb3IgKHZhciBpID0gMCwgbCA9IGxpc3Rl
bmVycy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICAgIGxpc3RlbmVyc1tpXS5hcHBseSh0aGlz
LCBhcmdzKTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAg
cmV0dXJuIHRydWU7Cit9OworfSk7IC8vIG1vZHVsZTogYnJvd3Nlci9ldmVudHMuanMKKworcmVx
dWlyZS5yZWdpc3RlcigiYnJvd3Nlci9mcy5qcyIsIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
cmVxdWlyZSl7CisKK30pOyAvLyBtb2R1bGU6IGJyb3dzZXIvZnMuanMKKworcmVxdWlyZS5yZWdp
c3RlcigiYnJvd3Nlci9wYXRoLmpzIiwgZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCByZXF1aXJl
KXsKKworfSk7IC8vIG1vZHVsZTogYnJvd3Nlci9wYXRoLmpzCisKK3JlcXVpcmUucmVnaXN0ZXIo
ImJyb3dzZXIvcHJvZ3Jlc3MuanMiLCBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUp
eworLyoqCisgKiBFeHBvc2UgYFByb2dyZXNzYC4KKyAqLworCittb2R1bGUuZXhwb3J0cyA9IFBy
b2dyZXNzOworCisvKioKKyAqIEluaXRpYWxpemUgYSBuZXcgYFByb2dyZXNzYCBpbmRpY2F0b3Iu
CisgKi8KKworZnVuY3Rpb24gUHJvZ3Jlc3MoKSB7CisgIHRoaXMucGVyY2VudCA9IDA7CisgIHRo
aXMuc2l6ZSgwKTsKKyAgdGhpcy5mb250U2l6ZSgxMSk7CisgIHRoaXMuZm9udCgnaGVsdmV0aWNh
LCBhcmlhbCwgc2Fucy1zZXJpZicpOworfQorCisvKioKKyAqIFNldCBwcm9ncmVzcyBzaXplIHRv
IGBuYC4KKyAqCisgKiBAcGFyYW0ge051bWJlcn0gbgorICogQHJldHVybiB7UHJvZ3Jlc3N9IGZv
ciBjaGFpbmluZworICogQGFwaSBwdWJsaWMKKyAqLworCitQcm9ncmVzcy5wcm90b3R5cGUuc2l6
ZSA9IGZ1bmN0aW9uKG4peworICB0aGlzLl9zaXplID0gbjsKKyAgcmV0dXJuIHRoaXM7Cit9Owor
CisvKioKKyAqIFNldCB0ZXh0IHRvIGBzdHJgLgorICoKKyAqIEBwYXJhbSB7U3RyaW5nfSBzdHIK
KyAqIEByZXR1cm4ge1Byb2dyZXNzfSBmb3IgY2hhaW5pbmcKKyAqIEBhcGkgcHVibGljCisgKi8K
KworUHJvZ3Jlc3MucHJvdG90eXBlLnRleHQgPSBmdW5jdGlvbihzdHIpeworICB0aGlzLl90ZXh0
ID0gc3RyOworICByZXR1cm4gdGhpczsKK307CisKKy8qKgorICogU2V0IGZvbnQgc2l6ZSB0byBg
bmAuCisgKgorICogQHBhcmFtIHtOdW1iZXJ9IG4KKyAqIEByZXR1cm4ge1Byb2dyZXNzfSBmb3Ig
Y2hhaW5pbmcKKyAqIEBhcGkgcHVibGljCisgKi8KKworUHJvZ3Jlc3MucHJvdG90eXBlLmZvbnRT
aXplID0gZnVuY3Rpb24obil7CisgIHRoaXMuX2ZvbnRTaXplID0gbjsKKyAgcmV0dXJuIHRoaXM7
Cit9OworCisvKioKKyAqIFNldCBmb250IGBmYW1pbHlgLgorICoKKyAqIEBwYXJhbSB7U3RyaW5n
fSBmYW1pbHkKKyAqIEByZXR1cm4ge1Byb2dyZXNzfSBmb3IgY2hhaW5pbmcKKyAqLworCitQcm9n
cmVzcy5wcm90b3R5cGUuZm9udCA9IGZ1bmN0aW9uKGZhbWlseSl7CisgIHRoaXMuX2ZvbnQgPSBm
YW1pbHk7CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBVcGRhdGUgcGVyY2VudGFnZSB0
byBgbmAuCisgKgorICogQHBhcmFtIHtOdW1iZXJ9IG4KKyAqIEByZXR1cm4ge1Byb2dyZXNzfSBm
b3IgY2hhaW5pbmcKKyAqLworCitQcm9ncmVzcy5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24o
bil7CisgIHRoaXMucGVyY2VudCA9IG47CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBE
cmF3IG9uIGBjdHhgLgorICoKKyAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJkfSBj
dHgKKyAqIEByZXR1cm4ge1Byb2dyZXNzfSBmb3IgY2hhaW5pbmcKKyAqLworCitQcm9ncmVzcy5w
cm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGN0eCl7CisgIHRyeSB7CisgICAgdmFyIHBlcmNlbnQg
PSBNYXRoLm1pbih0aGlzLnBlcmNlbnQsIDEwMCkKKyAgICAgICwgc2l6ZSA9IHRoaXMuX3NpemUK
KyAgICAgICwgaGFsZiA9IHNpemUgLyAyCisgICAgICAsIHggPSBoYWxmCisgICAgICAsIHkgPSBo
YWxmCisgICAgICAsIHJhZCA9IGhhbGYgLSAxCisgICAgICAsIGZvbnRTaXplID0gdGhpcy5fZm9u
dFNpemU7CisgIAorICAgIGN0eC5mb250ID0gZm9udFNpemUgKyAncHggJyArIHRoaXMuX2ZvbnQ7
CisgIAorICAgIHZhciBhbmdsZSA9IE1hdGguUEkgKiAyICogKHBlcmNlbnQgLyAxMDApOworICAg
IGN0eC5jbGVhclJlY3QoMCwgMCwgc2l6ZSwgc2l6ZSk7CisgIAorICAgIC8vIG91dGVyIGNpcmNs
ZQorICAgIGN0eC5zdHJva2VTdHlsZSA9ICcjOWY5ZjlmJzsKKyAgICBjdHguYmVnaW5QYXRoKCk7
CisgICAgY3R4LmFyYyh4LCB5LCByYWQsIDAsIGFuZ2xlLCBmYWxzZSk7CisgICAgY3R4LnN0cm9r
ZSgpOworICAKKyAgICAvLyBpbm5lciBjaXJjbGUKKyAgICBjdHguc3Ryb2tlU3R5bGUgPSAnI2Vl
ZSc7CisgICAgY3R4LmJlZ2luUGF0aCgpOworICAgIGN0eC5hcmMoeCwgeSwgcmFkIC0gMSwgMCwg
YW5nbGUsIHRydWUpOworICAgIGN0eC5zdHJva2UoKTsKKyAgCisgICAgLy8gdGV4dAorICAgIHZh
ciB0ZXh0ID0gdGhpcy5fdGV4dCB8fCAocGVyY2VudCB8IDApICsgJyUnCisgICAgICAsIHcgPSBj
dHgubWVhc3VyZVRleHQodGV4dCkud2lkdGg7CisgIAorICAgIGN0eC5maWxsVGV4dCgKKyAgICAg
ICAgdGV4dAorICAgICAgLCB4IC0gdyAvIDIgKyAxCisgICAgICAsIHkgKyBmb250U2l6ZSAvIDIg
LSAxKTsKKyAgfSBjYXRjaCAoZXgpIHt9IC8vZG9uJ3QgZmFpbCBpZiB3ZSBjYW4ndCByZW5kZXIg
cHJvZ3Jlc3MKKyAgcmV0dXJuIHRoaXM7Cit9OworCit9KTsgLy8gbW9kdWxlOiBicm93c2VyL3By
b2dyZXNzLmpzCisKK3JlcXVpcmUucmVnaXN0ZXIoImJyb3dzZXIvdHR5LmpzIiwgZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCByZXF1aXJlKXsKKworZXhwb3J0cy5pc2F0dHkgPSBmdW5jdGlvbigp
eworICByZXR1cm4gdHJ1ZTsKK307CisKK2V4cG9ydHMuZ2V0V2luZG93U2l6ZSA9IGZ1bmN0aW9u
KCl7CisgIGlmICgnaW5uZXJIZWlnaHQnIGluIGdsb2JhbCkgeworICAgIHJldHVybiBbZ2xvYmFs
LmlubmVySGVpZ2h0LCBnbG9iYWwuaW5uZXJXaWR0aF07CisgIH0gZWxzZSB7CisgICAgLy8gSW4g
YSBXZWIgV29ya2VyLCB0aGUgRE9NIFdpbmRvdyBpcyBub3QgYXZhaWxhYmxlLgorICAgIHJldHVy
biBbNjQwLCA0ODBdOworICB9Cit9OworCit9KTsgLy8gbW9kdWxlOiBicm93c2VyL3R0eS5qcwor
CityZXF1aXJlLnJlZ2lzdGVyKCJjb250ZXh0LmpzIiwgZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
LCByZXF1aXJlKXsKKworLyoqCisgKiBFeHBvc2UgYENvbnRleHRgLgorICovCisKK21vZHVsZS5l
eHBvcnRzID0gQ29udGV4dDsKKworLyoqCisgKiBJbml0aWFsaXplIGEgbmV3IGBDb250ZXh0YC4K
KyAqCisgKiBAYXBpIHByaXZhdGUKKyAqLworCitmdW5jdGlvbiBDb250ZXh0KCl7fQorCisvKioK
KyAqIFNldCBvciBnZXQgdGhlIGNvbnRleHQgYFJ1bm5hYmxlYCB0byBgcnVubmFibGVgLgorICoK
KyAqIEBwYXJhbSB7UnVubmFibGV9IHJ1bm5hYmxlCisgKiBAcmV0dXJuIHtDb250ZXh0fQorICog
QGFwaSBwcml2YXRlCisgKi8KKworQ29udGV4dC5wcm90b3R5cGUucnVubmFibGUgPSBmdW5jdGlv
bihydW5uYWJsZSl7CisgIGlmICgwID09IGFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiB0aGlzLl9y
dW5uYWJsZTsKKyAgdGhpcy50ZXN0ID0gdGhpcy5fcnVubmFibGUgPSBydW5uYWJsZTsKKyAgcmV0
dXJuIHRoaXM7Cit9OworCisvKioKKyAqIFNldCB0ZXN0IHRpbWVvdXQgYG1zYC4KKyAqCisgKiBA
cGFyYW0ge051bWJlcn0gbXMKKyAqIEByZXR1cm4ge0NvbnRleHR9IHNlbGYKKyAqIEBhcGkgcHJp
dmF0ZQorICovCisKK0NvbnRleHQucHJvdG90eXBlLnRpbWVvdXQgPSBmdW5jdGlvbihtcyl7Cisg
IGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gdGhpcy5ydW5uYWJsZSgpLnRpbWVv
dXQoKTsKKyAgdGhpcy5ydW5uYWJsZSgpLnRpbWVvdXQobXMpOworICByZXR1cm4gdGhpczsKK307
CisKKy8qKgorICogU2V0IHRlc3QgdGltZW91dCBgZW5hYmxlZGAuCisgKgorICogQHBhcmFtIHtC
b29sZWFufSBlbmFibGVkCisgKiBAcmV0dXJuIHtDb250ZXh0fSBzZWxmCisgKiBAYXBpIHByaXZh
dGUKKyAqLworCitDb250ZXh0LnByb3RvdHlwZS5lbmFibGVUaW1lb3V0cyA9IGZ1bmN0aW9uIChl
bmFibGVkKSB7CisgIHRoaXMucnVubmFibGUoKS5lbmFibGVUaW1lb3V0cyhlbmFibGVkKTsKKyAg
cmV0dXJuIHRoaXM7Cit9OworCisKKy8qKgorICogU2V0IHRlc3Qgc2xvd25lc3MgdGhyZXNob2xk
IGBtc2AuCisgKgorICogQHBhcmFtIHtOdW1iZXJ9IG1zCisgKiBAcmV0dXJuIHtDb250ZXh0fSBz
ZWxmCisgKiBAYXBpIHByaXZhdGUKKyAqLworCitDb250ZXh0LnByb3RvdHlwZS5zbG93ID0gZnVu
Y3Rpb24obXMpeworICB0aGlzLnJ1bm5hYmxlKCkuc2xvdyhtcyk7CisgIHJldHVybiB0aGlzOwor
fTsKKworLyoqCisgKiBJbnNwZWN0IHRoZSBjb250ZXh0IHZvaWQgb2YgYC5fcnVubmFibGVgLgor
ICoKKyAqIEByZXR1cm4ge1N0cmluZ30KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK0NvbnRleHQu
cHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbigpeworICByZXR1cm4gSlNPTi5zdHJpbmdpZnko
dGhpcywgZnVuY3Rpb24oa2V5LCB2YWwpeworICAgIGlmICgnX3J1bm5hYmxlJyA9PSBrZXkpIHJl
dHVybjsKKyAgICBpZiAoJ3Rlc3QnID09IGtleSkgcmV0dXJuOworICAgIHJldHVybiB2YWw7Cisg
IH0sIDIpOworfTsKKworfSk7IC8vIG1vZHVsZTogY29udGV4dC5qcworCityZXF1aXJlLnJlZ2lz
dGVyKCJob29rLmpzIiwgZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCByZXF1aXJlKXsKKworLyoq
CisgKiBNb2R1bGUgZGVwZW5kZW5jaWVzLgorICovCisKK3ZhciBSdW5uYWJsZSA9IHJlcXVpcmUo
Jy4vcnVubmFibGUnKTsKKworLyoqCisgKiBFeHBvc2UgYEhvb2tgLgorICovCisKK21vZHVsZS5l
eHBvcnRzID0gSG9vazsKKworLyoqCisgKiBJbml0aWFsaXplIGEgbmV3IGBIb29rYCB3aXRoIHRo
ZSBnaXZlbiBgdGl0bGVgIGFuZCBjYWxsYmFjayBgZm5gLgorICoKKyAqIEBwYXJhbSB7U3RyaW5n
fSB0aXRsZQorICogQHBhcmFtIHtGdW5jdGlvbn0gZm4KKyAqIEBhcGkgcHJpdmF0ZQorICovCisK
K2Z1bmN0aW9uIEhvb2sodGl0bGUsIGZuKSB7CisgIFJ1bm5hYmxlLmNhbGwodGhpcywgdGl0bGUs
IGZuKTsKKyAgdGhpcy50eXBlID0gJ2hvb2snOworfQorCisvKioKKyAqIEluaGVyaXQgZnJvbSBg
UnVubmFibGUucHJvdG90eXBlYC4KKyAqLworCitmdW5jdGlvbiBGKCl7fTsKK0YucHJvdG90eXBl
ID0gUnVubmFibGUucHJvdG90eXBlOworSG9vay5wcm90b3R5cGUgPSBuZXcgRjsKK0hvb2sucHJv
dG90eXBlLmNvbnN0cnVjdG9yID0gSG9vazsKKworCisvKioKKyAqIEdldCBvciBzZXQgdGhlIHRl
c3QgYGVycmAuCisgKgorICogQHBhcmFtIHtFcnJvcn0gZXJyCisgKiBAcmV0dXJuIHtFcnJvcn0K
KyAqIEBhcGkgcHVibGljCisgKi8KKworSG9vay5wcm90b3R5cGUuZXJyb3IgPSBmdW5jdGlvbihl
cnIpeworICBpZiAoMCA9PSBhcmd1bWVudHMubGVuZ3RoKSB7CisgICAgdmFyIGVyciA9IHRoaXMu
X2Vycm9yOworICAgIHRoaXMuX2Vycm9yID0gbnVsbDsKKyAgICByZXR1cm4gZXJyOworICB9CisK
KyAgdGhpcy5fZXJyb3IgPSBlcnI7Cit9OworCit9KTsgLy8gbW9kdWxlOiBob29rLmpzCisKK3Jl
cXVpcmUucmVnaXN0ZXIoImludGVyZmFjZXMvYmRkLmpzIiwgZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCByZXF1aXJlKXsKKworLyoqCisgKiBNb2R1bGUgZGVwZW5kZW5jaWVzLgorICovCisKK3Zh
ciBTdWl0ZSA9IHJlcXVpcmUoJy4uL3N1aXRlJykKKyAgLCBUZXN0ID0gcmVxdWlyZSgnLi4vdGVz
dCcpCisgICwgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpOworCisvKioKKyAqIEJERC1zdHls
ZSBpbnRlcmZhY2U6CisgKgorICogICAgICBkZXNjcmliZSgnQXJyYXknLCBmdW5jdGlvbigpewor
ICogICAgICAgIGRlc2NyaWJlKCcjaW5kZXhPZigpJywgZnVuY3Rpb24oKXsKKyAqICAgICAgICAg
IGl0KCdzaG91bGQgcmV0dXJuIC0xIHdoZW4gbm90IHByZXNlbnQnLCBmdW5jdGlvbigpeworICoK
KyAqICAgICAgICAgIH0pOworICoKKyAqICAgICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBp
bmRleCB3aGVuIHByZXNlbnQnLCBmdW5jdGlvbigpeworICoKKyAqICAgICAgICAgIH0pOworICog
ICAgICAgIH0pOworICogICAgICB9KTsKKyAqCisgKi8KKworbW9kdWxlLmV4cG9ydHMgPSBmdW5j
dGlvbihzdWl0ZSl7CisgIHZhciBzdWl0ZXMgPSBbc3VpdGVdOworCisgIHN1aXRlLm9uKCdwcmUt
cmVxdWlyZScsIGZ1bmN0aW9uKGNvbnRleHQsIGZpbGUsIG1vY2hhKXsKKworICAgIC8qKgorICAg
ICAqIEV4ZWN1dGUgYmVmb3JlIHJ1bm5pbmcgdGVzdHMuCisgICAgICovCisKKyAgICBjb250ZXh0
LmJlZm9yZSA9IGZ1bmN0aW9uKG5hbWUsIGZuKXsKKyAgICAgIHN1aXRlc1swXS5iZWZvcmVBbGwo
bmFtZSwgZm4pOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBFeGVjdXRlIGFmdGVyIHJ1bm5p
bmcgdGVzdHMuCisgICAgICovCisKKyAgICBjb250ZXh0LmFmdGVyID0gZnVuY3Rpb24obmFtZSwg
Zm4peworICAgICAgc3VpdGVzWzBdLmFmdGVyQWxsKG5hbWUsIGZuKTsKKyAgICB9OworCisgICAg
LyoqCisgICAgICogRXhlY3V0ZSBiZWZvcmUgZWFjaCB0ZXN0IGNhc2UuCisgICAgICovCisKKyAg
ICBjb250ZXh0LmJlZm9yZUVhY2ggPSBmdW5jdGlvbihuYW1lLCBmbil7CisgICAgICBzdWl0ZXNb
MF0uYmVmb3JlRWFjaChuYW1lLCBmbik7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEV4ZWN1
dGUgYWZ0ZXIgZWFjaCB0ZXN0IGNhc2UuCisgICAgICovCisKKyAgICBjb250ZXh0LmFmdGVyRWFj
aCA9IGZ1bmN0aW9uKG5hbWUsIGZuKXsKKyAgICAgIHN1aXRlc1swXS5hZnRlckVhY2gobmFtZSwg
Zm4pOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBEZXNjcmliZSBhICJzdWl0ZSIgd2l0aCB0
aGUgZ2l2ZW4gYHRpdGxlYAorICAgICAqIGFuZCBjYWxsYmFjayBgZm5gIGNvbnRhaW5pbmcgbmVz
dGVkIHN1aXRlcworICAgICAqIGFuZC9vciB0ZXN0cy4KKyAgICAgKi8KKworICAgIGNvbnRleHQu
ZGVzY3JpYmUgPSBjb250ZXh0LmNvbnRleHQgPSBmdW5jdGlvbih0aXRsZSwgZm4peworICAgICAg
dmFyIHN1aXRlID0gU3VpdGUuY3JlYXRlKHN1aXRlc1swXSwgdGl0bGUpOworICAgICAgc3VpdGUu
ZmlsZSA9IGZpbGU7CisgICAgICBzdWl0ZXMudW5zaGlmdChzdWl0ZSk7CisgICAgICBmbi5jYWxs
KHN1aXRlKTsKKyAgICAgIHN1aXRlcy5zaGlmdCgpOworICAgICAgcmV0dXJuIHN1aXRlOworICAg
IH07CisKKyAgICAvKioKKyAgICAgKiBQZW5kaW5nIGRlc2NyaWJlLgorICAgICAqLworCisgICAg
Y29udGV4dC54ZGVzY3JpYmUgPQorICAgIGNvbnRleHQueGNvbnRleHQgPQorICAgIGNvbnRleHQu
ZGVzY3JpYmUuc2tpcCA9IGZ1bmN0aW9uKHRpdGxlLCBmbil7CisgICAgICB2YXIgc3VpdGUgPSBT
dWl0ZS5jcmVhdGUoc3VpdGVzWzBdLCB0aXRsZSk7CisgICAgICBzdWl0ZS5wZW5kaW5nID0gdHJ1
ZTsKKyAgICAgIHN1aXRlcy51bnNoaWZ0KHN1aXRlKTsKKyAgICAgIGZuLmNhbGwoc3VpdGUpOwor
ICAgICAgc3VpdGVzLnNoaWZ0KCk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEV4Y2x1c2l2
ZSBzdWl0ZS4KKyAgICAgKi8KKworICAgIGNvbnRleHQuZGVzY3JpYmUub25seSA9IGZ1bmN0aW9u
KHRpdGxlLCBmbil7CisgICAgICB2YXIgc3VpdGUgPSBjb250ZXh0LmRlc2NyaWJlKHRpdGxlLCBm
bik7CisgICAgICBtb2NoYS5ncmVwKHN1aXRlLmZ1bGxUaXRsZSgpKTsKKyAgICAgIHJldHVybiBz
dWl0ZTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogRGVzY3JpYmUgYSBzcGVjaWZpY2F0aW9u
IG9yIHRlc3QtY2FzZQorICAgICAqIHdpdGggdGhlIGdpdmVuIGB0aXRsZWAgYW5kIGNhbGxiYWNr
IGBmbmAKKyAgICAgKiBhY3RpbmcgYXMgYSB0aHVuay4KKyAgICAgKi8KKworICAgIGNvbnRleHQu
aXQgPSBjb250ZXh0LnNwZWNpZnkgPSBmdW5jdGlvbih0aXRsZSwgZm4peworICAgICAgdmFyIHN1
aXRlID0gc3VpdGVzWzBdOworICAgICAgaWYgKHN1aXRlLnBlbmRpbmcpIHZhciBmbiA9IG51bGw7
CisgICAgICB2YXIgdGVzdCA9IG5ldyBUZXN0KHRpdGxlLCBmbik7CisgICAgICB0ZXN0LmZpbGUg
PSBmaWxlOworICAgICAgc3VpdGUuYWRkVGVzdCh0ZXN0KTsKKyAgICAgIHJldHVybiB0ZXN0Owor
ICAgIH07CisKKyAgICAvKioKKyAgICAgKiBFeGNsdXNpdmUgdGVzdC1jYXNlLgorICAgICAqLwor
CisgICAgY29udGV4dC5pdC5vbmx5ID0gZnVuY3Rpb24odGl0bGUsIGZuKXsKKyAgICAgIHZhciB0
ZXN0ID0gY29udGV4dC5pdCh0aXRsZSwgZm4pOworICAgICAgdmFyIHJlU3RyaW5nID0gJ14nICsg
dXRpbHMuZXNjYXBlUmVnZXhwKHRlc3QuZnVsbFRpdGxlKCkpICsgJyQnOworICAgICAgbW9jaGEu
Z3JlcChuZXcgUmVnRXhwKHJlU3RyaW5nKSk7CisgICAgICByZXR1cm4gdGVzdDsKKyAgICB9Owor
CisgICAgLyoqCisgICAgICogUGVuZGluZyB0ZXN0IGNhc2UuCisgICAgICovCisKKyAgICBjb250
ZXh0LnhpdCA9CisgICAgY29udGV4dC54c3BlY2lmeSA9CisgICAgY29udGV4dC5pdC5za2lwID0g
ZnVuY3Rpb24odGl0bGUpeworICAgICAgY29udGV4dC5pdCh0aXRsZSk7CisgICAgfTsKKyAgfSk7
Cit9OworCit9KTsgLy8gbW9kdWxlOiBpbnRlcmZhY2VzL2JkZC5qcworCityZXF1aXJlLnJlZ2lz
dGVyKCJpbnRlcmZhY2VzL2V4cG9ydHMuanMiLCBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIHJl
cXVpcmUpeworCisvKioKKyAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuCisgKi8KKwordmFyIFN1aXRl
ID0gcmVxdWlyZSgnLi4vc3VpdGUnKQorICAsIFRlc3QgPSByZXF1aXJlKCcuLi90ZXN0Jyk7CisK
Ky8qKgorICogVERELXN0eWxlIGludGVyZmFjZToKKyAqCisgKiAgICAgZXhwb3J0cy5BcnJheSA9
IHsKKyAqICAgICAgICcjaW5kZXhPZigpJzogeworICogICAgICAgICAnc2hvdWxkIHJldHVybiAt
MSB3aGVuIHRoZSB2YWx1ZSBpcyBub3QgcHJlc2VudCc6IGZ1bmN0aW9uKCl7CisgKgorICogICAg
ICAgICB9LAorICoKKyAqICAgICAgICAgJ3Nob3VsZCByZXR1cm4gdGhlIGNvcnJlY3QgaW5kZXgg
d2hlbiB0aGUgdmFsdWUgaXMgcHJlc2VudCc6IGZ1bmN0aW9uKCl7CisgKgorICogICAgICAgICB9
CisgKiAgICAgICB9CisgKiAgICAgfTsKKyAqCisgKi8KKworbW9kdWxlLmV4cG9ydHMgPSBmdW5j
dGlvbihzdWl0ZSl7CisgIHZhciBzdWl0ZXMgPSBbc3VpdGVdOworCisgIHN1aXRlLm9uKCdyZXF1
aXJlJywgdmlzaXQpOworCisgIGZ1bmN0aW9uIHZpc2l0KG9iaiwgZmlsZSkgeworICAgIHZhciBz
dWl0ZTsKKyAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7CisgICAgICBpZiAoJ2Z1bmN0aW9uJyA9
PSB0eXBlb2Ygb2JqW2tleV0pIHsKKyAgICAgICAgdmFyIGZuID0gb2JqW2tleV07CisgICAgICAg
IHN3aXRjaCAoa2V5KSB7CisgICAgICAgICAgY2FzZSAnYmVmb3JlJzoKKyAgICAgICAgICAgIHN1
aXRlc1swXS5iZWZvcmVBbGwoZm4pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2Fz
ZSAnYWZ0ZXInOgorICAgICAgICAgICAgc3VpdGVzWzBdLmFmdGVyQWxsKGZuKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgJ2JlZm9yZUVhY2gnOgorICAgICAgICAgICAgc3Vp
dGVzWzBdLmJlZm9yZUVhY2goZm4pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2Fz
ZSAnYWZ0ZXJFYWNoJzoKKyAgICAgICAgICAgIHN1aXRlc1swXS5hZnRlckVhY2goZm4pOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHZhciB0ZXN0
ID0gbmV3IFRlc3Qoa2V5LCBmbik7CisgICAgICAgICAgICB0ZXN0LmZpbGUgPSBmaWxlOworICAg
ICAgICAgICAgc3VpdGVzWzBdLmFkZFRlc3QodGVzdCk7CisgICAgICAgIH0KKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHZhciBzdWl0ZSA9IFN1aXRlLmNyZWF0ZShzdWl0ZXNbMF0sIGtleSk7Cisg
ICAgICAgIHN1aXRlcy51bnNoaWZ0KHN1aXRlKTsKKyAgICAgICAgdmlzaXQob2JqW2tleV0pOwor
ICAgICAgICBzdWl0ZXMuc2hpZnQoKTsKKyAgICAgIH0KKyAgICB9CisgIH0KK307CisKK30pOyAv
LyBtb2R1bGU6IGludGVyZmFjZXMvZXhwb3J0cy5qcworCityZXF1aXJlLnJlZ2lzdGVyKCJpbnRl
cmZhY2VzL2luZGV4LmpzIiwgZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCByZXF1aXJlKXsKKwor
ZXhwb3J0cy5iZGQgPSByZXF1aXJlKCcuL2JkZCcpOworZXhwb3J0cy50ZGQgPSByZXF1aXJlKCcu
L3RkZCcpOworZXhwb3J0cy5xdW5pdCA9IHJlcXVpcmUoJy4vcXVuaXQnKTsKK2V4cG9ydHMuZXhw
b3J0cyA9IHJlcXVpcmUoJy4vZXhwb3J0cycpOworCit9KTsgLy8gbW9kdWxlOiBpbnRlcmZhY2Vz
L2luZGV4LmpzCisKK3JlcXVpcmUucmVnaXN0ZXIoImludGVyZmFjZXMvcXVuaXQuanMiLCBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUpeworCisvKioKKyAqIE1vZHVsZSBkZXBlbmRl
bmNpZXMuCisgKi8KKwordmFyIFN1aXRlID0gcmVxdWlyZSgnLi4vc3VpdGUnKQorICAsIFRlc3Qg
PSByZXF1aXJlKCcuLi90ZXN0JykKKyAgLCB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7CisK
Ky8qKgorICogUVVuaXQtc3R5bGUgaW50ZXJmYWNlOgorICoKKyAqICAgICBzdWl0ZSgnQXJyYXkn
KTsKKyAqCisgKiAgICAgdGVzdCgnI2xlbmd0aCcsIGZ1bmN0aW9uKCl7CisgKiAgICAgICB2YXIg
YXJyID0gWzEsMiwzXTsKKyAqICAgICAgIG9rKGFyci5sZW5ndGggPT0gMyk7CisgKiAgICAgfSk7
CisgKgorICogICAgIHRlc3QoJyNpbmRleE9mKCknLCBmdW5jdGlvbigpeworICogICAgICAgdmFy
IGFyciA9IFsxLDIsM107CisgKiAgICAgICBvayhhcnIuaW5kZXhPZigxKSA9PSAwKTsKKyAqICAg
ICAgIG9rKGFyci5pbmRleE9mKDIpID09IDEpOworICogICAgICAgb2soYXJyLmluZGV4T2YoMykg
PT0gMik7CisgKiAgICAgfSk7CisgKgorICogICAgIHN1aXRlKCdTdHJpbmcnKTsKKyAqCisgKiAg
ICAgdGVzdCgnI2xlbmd0aCcsIGZ1bmN0aW9uKCl7CisgKiAgICAgICBvaygnZm9vJy5sZW5ndGgg
PT0gMyk7CisgKiAgICAgfSk7CisgKgorICovCisKK21vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24o
c3VpdGUpeworICB2YXIgc3VpdGVzID0gW3N1aXRlXTsKKworICBzdWl0ZS5vbigncHJlLXJlcXVp
cmUnLCBmdW5jdGlvbihjb250ZXh0LCBmaWxlLCBtb2NoYSl7CisKKyAgICAvKioKKyAgICAgKiBF
eGVjdXRlIGJlZm9yZSBydW5uaW5nIHRlc3RzLgorICAgICAqLworCisgICAgY29udGV4dC5iZWZv
cmUgPSBmdW5jdGlvbihuYW1lLCBmbil7CisgICAgICBzdWl0ZXNbMF0uYmVmb3JlQWxsKG5hbWUs
IGZuKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogRXhlY3V0ZSBhZnRlciBydW5uaW5nIHRl
c3RzLgorICAgICAqLworCisgICAgY29udGV4dC5hZnRlciA9IGZ1bmN0aW9uKG5hbWUsIGZuKXsK
KyAgICAgIHN1aXRlc1swXS5hZnRlckFsbChuYW1lLCBmbik7CisgICAgfTsKKworICAgIC8qKgor
ICAgICAqIEV4ZWN1dGUgYmVmb3JlIGVhY2ggdGVzdCBjYXNlLgorICAgICAqLworCisgICAgY29u
dGV4dC5iZWZvcmVFYWNoID0gZnVuY3Rpb24obmFtZSwgZm4peworICAgICAgc3VpdGVzWzBdLmJl
Zm9yZUVhY2gobmFtZSwgZm4pOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBFeGVjdXRlIGFm
dGVyIGVhY2ggdGVzdCBjYXNlLgorICAgICAqLworCisgICAgY29udGV4dC5hZnRlckVhY2ggPSBm
dW5jdGlvbihuYW1lLCBmbil7CisgICAgICBzdWl0ZXNbMF0uYWZ0ZXJFYWNoKG5hbWUsIGZuKTsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogRGVzY3JpYmUgYSAic3VpdGUiIHdpdGggdGhlIGdp
dmVuIGB0aXRsZWAuCisgICAgICovCisKKyAgICBjb250ZXh0LnN1aXRlID0gZnVuY3Rpb24odGl0
bGUpeworICAgICAgaWYgKHN1aXRlcy5sZW5ndGggPiAxKSBzdWl0ZXMuc2hpZnQoKTsKKyAgICAg
IHZhciBzdWl0ZSA9IFN1aXRlLmNyZWF0ZShzdWl0ZXNbMF0sIHRpdGxlKTsKKyAgICAgIHN1aXRl
LmZpbGUgPSBmaWxlOworICAgICAgc3VpdGVzLnVuc2hpZnQoc3VpdGUpOworICAgICAgcmV0dXJu
IHN1aXRlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBFeGNsdXNpdmUgdGVzdC1jYXNlLgor
ICAgICAqLworCisgICAgY29udGV4dC5zdWl0ZS5vbmx5ID0gZnVuY3Rpb24odGl0bGUsIGZuKXsK
KyAgICAgIHZhciBzdWl0ZSA9IGNvbnRleHQuc3VpdGUodGl0bGUsIGZuKTsKKyAgICAgIG1vY2hh
LmdyZXAoc3VpdGUuZnVsbFRpdGxlKCkpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBEZXNj
cmliZSBhIHNwZWNpZmljYXRpb24gb3IgdGVzdC1jYXNlCisgICAgICogd2l0aCB0aGUgZ2l2ZW4g
YHRpdGxlYCBhbmQgY2FsbGJhY2sgYGZuYAorICAgICAqIGFjdGluZyBhcyBhIHRodW5rLgorICAg
ICAqLworCisgICAgY29udGV4dC50ZXN0ID0gZnVuY3Rpb24odGl0bGUsIGZuKXsKKyAgICAgIHZh
ciB0ZXN0ID0gbmV3IFRlc3QodGl0bGUsIGZuKTsKKyAgICAgIHRlc3QuZmlsZSA9IGZpbGU7Cisg
ICAgICBzdWl0ZXNbMF0uYWRkVGVzdCh0ZXN0KTsKKyAgICAgIHJldHVybiB0ZXN0OworICAgIH07
CisKKyAgICAvKioKKyAgICAgKiBFeGNsdXNpdmUgdGVzdC1jYXNlLgorICAgICAqLworCisgICAg
Y29udGV4dC50ZXN0Lm9ubHkgPSBmdW5jdGlvbih0aXRsZSwgZm4peworICAgICAgdmFyIHRlc3Qg
PSBjb250ZXh0LnRlc3QodGl0bGUsIGZuKTsKKyAgICAgIHZhciByZVN0cmluZyA9ICdeJyArIHV0
aWxzLmVzY2FwZVJlZ2V4cCh0ZXN0LmZ1bGxUaXRsZSgpKSArICckJzsKKyAgICAgIG1vY2hhLmdy
ZXAobmV3IFJlZ0V4cChyZVN0cmluZykpOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBQZW5k
aW5nIHRlc3QgY2FzZS4KKyAgICAgKi8KKworICAgIGNvbnRleHQudGVzdC5za2lwID0gZnVuY3Rp
b24odGl0bGUpeworICAgICAgY29udGV4dC50ZXN0KHRpdGxlKTsKKyAgICB9OworICB9KTsKK307
CisKK30pOyAvLyBtb2R1bGU6IGludGVyZmFjZXMvcXVuaXQuanMKKworcmVxdWlyZS5yZWdpc3Rl
cigiaW50ZXJmYWNlcy90ZGQuanMiLCBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUp
eworCisvKioKKyAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuCisgKi8KKwordmFyIFN1aXRlID0gcmVx
dWlyZSgnLi4vc3VpdGUnKQorICAsIFRlc3QgPSByZXF1aXJlKCcuLi90ZXN0JykKKyAgLCB1dGls
cyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7OworCisvKioKKyAqIFRERC1zdHlsZSBpbnRlcmZhY2U6
CisgKgorICogICAgICBzdWl0ZSgnQXJyYXknLCBmdW5jdGlvbigpeworICogICAgICAgIHN1aXRl
KCcjaW5kZXhPZigpJywgZnVuY3Rpb24oKXsKKyAqICAgICAgICAgIHN1aXRlU2V0dXAoZnVuY3Rp
b24oKXsKKyAqCisgKiAgICAgICAgICB9KTsKKyAqCisgKiAgICAgICAgICB0ZXN0KCdzaG91bGQg
cmV0dXJuIC0xIHdoZW4gbm90IHByZXNlbnQnLCBmdW5jdGlvbigpeworICoKKyAqICAgICAgICAg
IH0pOworICoKKyAqICAgICAgICAgIHRlc3QoJ3Nob3VsZCByZXR1cm4gdGhlIGluZGV4IHdoZW4g
cHJlc2VudCcsIGZ1bmN0aW9uKCl7CisgKgorICogICAgICAgICAgfSk7CisgKgorICogICAgICAg
ICAgc3VpdGVUZWFyZG93bihmdW5jdGlvbigpeworICoKKyAqICAgICAgICAgIH0pOworICogICAg
ICAgIH0pOworICogICAgICB9KTsKKyAqCisgKi8KKworbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlv
bihzdWl0ZSl7CisgIHZhciBzdWl0ZXMgPSBbc3VpdGVdOworCisgIHN1aXRlLm9uKCdwcmUtcmVx
dWlyZScsIGZ1bmN0aW9uKGNvbnRleHQsIGZpbGUsIG1vY2hhKXsKKworICAgIC8qKgorICAgICAq
IEV4ZWN1dGUgYmVmb3JlIGVhY2ggdGVzdCBjYXNlLgorICAgICAqLworCisgICAgY29udGV4dC5z
ZXR1cCA9IGZ1bmN0aW9uKG5hbWUsIGZuKXsKKyAgICAgIHN1aXRlc1swXS5iZWZvcmVFYWNoKG5h
bWUsIGZuKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogRXhlY3V0ZSBhZnRlciBlYWNoIHRl
c3QgY2FzZS4KKyAgICAgKi8KKworICAgIGNvbnRleHQudGVhcmRvd24gPSBmdW5jdGlvbihuYW1l
LCBmbil7CisgICAgICBzdWl0ZXNbMF0uYWZ0ZXJFYWNoKG5hbWUsIGZuKTsKKyAgICB9OworCisg
ICAgLyoqCisgICAgICogRXhlY3V0ZSBiZWZvcmUgdGhlIHN1aXRlLgorICAgICAqLworCisgICAg
Y29udGV4dC5zdWl0ZVNldHVwID0gZnVuY3Rpb24obmFtZSwgZm4peworICAgICAgc3VpdGVzWzBd
LmJlZm9yZUFsbChuYW1lLCBmbik7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEV4ZWN1dGUg
YWZ0ZXIgdGhlIHN1aXRlLgorICAgICAqLworCisgICAgY29udGV4dC5zdWl0ZVRlYXJkb3duID0g
ZnVuY3Rpb24obmFtZSwgZm4peworICAgICAgc3VpdGVzWzBdLmFmdGVyQWxsKG5hbWUsIGZuKTsK
KyAgICB9OworCisgICAgLyoqCisgICAgICogRGVzY3JpYmUgYSAic3VpdGUiIHdpdGggdGhlIGdp
dmVuIGB0aXRsZWAKKyAgICAgKiBhbmQgY2FsbGJhY2sgYGZuYCBjb250YWluaW5nIG5lc3RlZCBz
dWl0ZXMKKyAgICAgKiBhbmQvb3IgdGVzdHMuCisgICAgICovCisKKyAgICBjb250ZXh0LnN1aXRl
ID0gZnVuY3Rpb24odGl0bGUsIGZuKXsKKyAgICAgIHZhciBzdWl0ZSA9IFN1aXRlLmNyZWF0ZShz
dWl0ZXNbMF0sIHRpdGxlKTsKKyAgICAgIHN1aXRlLmZpbGUgPSBmaWxlOworICAgICAgc3VpdGVz
LnVuc2hpZnQoc3VpdGUpOworICAgICAgZm4uY2FsbChzdWl0ZSk7CisgICAgICBzdWl0ZXMuc2hp
ZnQoKTsKKyAgICAgIHJldHVybiBzdWl0ZTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogUGVu
ZGluZyBzdWl0ZS4KKyAgICAgKi8KKyAgICBjb250ZXh0LnN1aXRlLnNraXAgPSBmdW5jdGlvbih0
aXRsZSwgZm4pIHsKKyAgICAgIHZhciBzdWl0ZSA9IFN1aXRlLmNyZWF0ZShzdWl0ZXNbMF0sIHRp
dGxlKTsKKyAgICAgIHN1aXRlLnBlbmRpbmcgPSB0cnVlOworICAgICAgc3VpdGVzLnVuc2hpZnQo
c3VpdGUpOworICAgICAgZm4uY2FsbChzdWl0ZSk7CisgICAgICBzdWl0ZXMuc2hpZnQoKTsKKyAg
ICB9OworCisgICAgLyoqCisgICAgICogRXhjbHVzaXZlIHRlc3QtY2FzZS4KKyAgICAgKi8KKwor
ICAgIGNvbnRleHQuc3VpdGUub25seSA9IGZ1bmN0aW9uKHRpdGxlLCBmbil7CisgICAgICB2YXIg
c3VpdGUgPSBjb250ZXh0LnN1aXRlKHRpdGxlLCBmbik7CisgICAgICBtb2NoYS5ncmVwKHN1aXRl
LmZ1bGxUaXRsZSgpKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogRGVzY3JpYmUgYSBzcGVj
aWZpY2F0aW9uIG9yIHRlc3QtY2FzZQorICAgICAqIHdpdGggdGhlIGdpdmVuIGB0aXRsZWAgYW5k
IGNhbGxiYWNrIGBmbmAKKyAgICAgKiBhY3RpbmcgYXMgYSB0aHVuay4KKyAgICAgKi8KKworICAg
IGNvbnRleHQudGVzdCA9IGZ1bmN0aW9uKHRpdGxlLCBmbil7CisgICAgICB2YXIgc3VpdGUgPSBz
dWl0ZXNbMF07CisgICAgICBpZiAoc3VpdGUucGVuZGluZykgdmFyIGZuID0gbnVsbDsKKyAgICAg
IHZhciB0ZXN0ID0gbmV3IFRlc3QodGl0bGUsIGZuKTsKKyAgICAgIHRlc3QuZmlsZSA9IGZpbGU7
CisgICAgICBzdWl0ZS5hZGRUZXN0KHRlc3QpOworICAgICAgcmV0dXJuIHRlc3Q7CisgICAgfTsK
KworICAgIC8qKgorICAgICAqIEV4Y2x1c2l2ZSB0ZXN0LWNhc2UuCisgICAgICovCisKKyAgICBj
b250ZXh0LnRlc3Qub25seSA9IGZ1bmN0aW9uKHRpdGxlLCBmbil7CisgICAgICB2YXIgdGVzdCA9
IGNvbnRleHQudGVzdCh0aXRsZSwgZm4pOworICAgICAgdmFyIHJlU3RyaW5nID0gJ14nICsgdXRp
bHMuZXNjYXBlUmVnZXhwKHRlc3QuZnVsbFRpdGxlKCkpICsgJyQnOworICAgICAgbW9jaGEuZ3Jl
cChuZXcgUmVnRXhwKHJlU3RyaW5nKSk7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIFBlbmRp
bmcgdGVzdCBjYXNlLgorICAgICAqLworCisgICAgY29udGV4dC50ZXN0LnNraXAgPSBmdW5jdGlv
bih0aXRsZSl7CisgICAgICBjb250ZXh0LnRlc3QodGl0bGUpOworICAgIH07CisgIH0pOworfTsK
KworfSk7IC8vIG1vZHVsZTogaW50ZXJmYWNlcy90ZGQuanMKKworcmVxdWlyZS5yZWdpc3Rlcigi
bW9jaGEuanMiLCBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUpeworLyohCisgKiBt
b2NoYQorICogQ29weXJpZ2h0KGMpIDIwMTEgVEogSG9sb3dheWNodWsgPHRqQHZpc2lvbi1tZWRp
YS5jYT4KKyAqIE1JVCBMaWNlbnNlZAorICovCisKKy8qKgorICogTW9kdWxlIGRlcGVuZGVuY2ll
cy4KKyAqLworCit2YXIgcGF0aCA9IHJlcXVpcmUoJ2Jyb3dzZXIvcGF0aCcpCisgICwgdXRpbHMg
PSByZXF1aXJlKCcuL3V0aWxzJyk7CisKKy8qKgorICogRXhwb3NlIGBNb2NoYWAuCisgKi8KKwor
ZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gTW9jaGE7CisKKy8qKgorICogVG8gcmVxdWlyZSBs
b2NhbCBVSXMgYW5kIHJlcG9ydGVycyB3aGVuIHJ1bm5pbmcgaW4gbm9kZS4KKyAqLworCitpZiAo
dHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBwcm9jZXNzLmN3ZCA9PT0g
J2Z1bmN0aW9uJykgeworICB2YXIgam9pbiA9IHBhdGguam9pbgorICAgICwgY3dkID0gcHJvY2Vz
cy5jd2QoKTsKKyAgbW9kdWxlLnBhdGhzLnB1c2goY3dkLCBqb2luKGN3ZCwgJ25vZGVfbW9kdWxl
cycpKTsKK30KKworLyoqCisgKiBFeHBvc2UgaW50ZXJuYWxzLgorICovCisKK2V4cG9ydHMudXRp
bHMgPSB1dGlsczsKK2V4cG9ydHMuaW50ZXJmYWNlcyA9IHJlcXVpcmUoJy4vaW50ZXJmYWNlcycp
OworZXhwb3J0cy5yZXBvcnRlcnMgPSByZXF1aXJlKCcuL3JlcG9ydGVycycpOworZXhwb3J0cy5S
dW5uYWJsZSA9IHJlcXVpcmUoJy4vcnVubmFibGUnKTsKK2V4cG9ydHMuQ29udGV4dCA9IHJlcXVp
cmUoJy4vY29udGV4dCcpOworZXhwb3J0cy5SdW5uZXIgPSByZXF1aXJlKCcuL3J1bm5lcicpOwor
ZXhwb3J0cy5TdWl0ZSA9IHJlcXVpcmUoJy4vc3VpdGUnKTsKK2V4cG9ydHMuSG9vayA9IHJlcXVp
cmUoJy4vaG9vaycpOworZXhwb3J0cy5UZXN0ID0gcmVxdWlyZSgnLi90ZXN0Jyk7CisKKy8qKgor
ICogUmV0dXJuIGltYWdlIGBuYW1lYCBwYXRoLgorICoKKyAqIEBwYXJhbSB7U3RyaW5nfSBuYW1l
CisgKiBAcmV0dXJuIHtTdHJpbmd9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitmdW5jdGlvbiBp
bWFnZShuYW1lKSB7CisgIHJldHVybiBfX2Rpcm5hbWUgKyAnLy4uL2ltYWdlcy8nICsgbmFtZSAr
ICcucG5nJzsKK30KKworLyoqCisgKiBTZXR1cCBtb2NoYSB3aXRoIGBvcHRpb25zYC4KKyAqCisg
KiBPcHRpb25zOgorICoKKyAqICAgLSBgdWlgIG5hbWUgImJkZCIsICJ0ZGQiLCAiZXhwb3J0cyIg
ZXRjCisgKiAgIC0gYHJlcG9ydGVyYCByZXBvcnRlciBpbnN0YW5jZSwgZGVmYXVsdHMgdG8gYG1v
Y2hhLnJlcG9ydGVycy5zcGVjYAorICogICAtIGBnbG9iYWxzYCBhcnJheSBvZiBhY2NlcHRlZCBn
bG9iYWxzCisgKiAgIC0gYHRpbWVvdXRgIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzCisgKiAgIC0g
YGJhaWxgIGJhaWwgb24gdGhlIGZpcnN0IHRlc3QgZmFpbHVyZQorICogICAtIGBzbG93YCBtaWxs
aXNlY29uZHMgdG8gd2FpdCBiZWZvcmUgY29uc2lkZXJpbmcgYSB0ZXN0IHNsb3cKKyAqICAgLSBg
aWdub3JlTGVha3NgIGlnbm9yZSBnbG9iYWwgbGVha3MKKyAqICAgLSBgZ3JlcGAgc3RyaW5nIG9y
IHJlZ2V4cCB0byBmaWx0ZXIgdGVzdHMgd2l0aAorICoKKyAqIEBwYXJhbSB7T2JqZWN0fSBvcHRp
b25zCisgKiBAYXBpIHB1YmxpYworICovCisKK2Z1bmN0aW9uIE1vY2hhKG9wdGlvbnMpIHsKKyAg
b3B0aW9ucyA9IG9wdGlvbnMgfHwge307CisgIHRoaXMuZmlsZXMgPSBbXTsKKyAgdGhpcy5vcHRp
b25zID0gb3B0aW9uczsKKyAgdGhpcy5ncmVwKG9wdGlvbnMuZ3JlcCk7CisgIHRoaXMuc3VpdGUg
PSBuZXcgZXhwb3J0cy5TdWl0ZSgnJywgbmV3IGV4cG9ydHMuQ29udGV4dCk7CisgIHRoaXMudWko
b3B0aW9ucy51aSk7CisgIHRoaXMuYmFpbChvcHRpb25zLmJhaWwpOworICB0aGlzLnJlcG9ydGVy
KG9wdGlvbnMucmVwb3J0ZXIpOworICBpZiAobnVsbCAhPSBvcHRpb25zLnRpbWVvdXQpIHRoaXMu
dGltZW91dChvcHRpb25zLnRpbWVvdXQpOworICB0aGlzLnVzZUNvbG9ycyhvcHRpb25zLnVzZUNv
bG9ycykKKyAgaWYgKG9wdGlvbnMuZW5hYmxlVGltZW91dHMgIT09IG51bGwpIHRoaXMuZW5hYmxl
VGltZW91dHMob3B0aW9ucy5lbmFibGVUaW1lb3V0cyk7CisgIGlmIChvcHRpb25zLnNsb3cpIHRo
aXMuc2xvdyhvcHRpb25zLnNsb3cpOworCisgIHRoaXMuc3VpdGUub24oJ3ByZS1yZXF1aXJlJywg
ZnVuY3Rpb24gKGNvbnRleHQpIHsKKyAgICBleHBvcnRzLmFmdGVyRWFjaCA9IGNvbnRleHQuYWZ0
ZXJFYWNoIHx8IGNvbnRleHQudGVhcmRvd247CisgICAgZXhwb3J0cy5hZnRlciA9IGNvbnRleHQu
YWZ0ZXIgfHwgY29udGV4dC5zdWl0ZVRlYXJkb3duOworICAgIGV4cG9ydHMuYmVmb3JlRWFjaCA9
IGNvbnRleHQuYmVmb3JlRWFjaCB8fCBjb250ZXh0LnNldHVwOworICAgIGV4cG9ydHMuYmVmb3Jl
ID0gY29udGV4dC5iZWZvcmUgfHwgY29udGV4dC5zdWl0ZVNldHVwOworICAgIGV4cG9ydHMuZGVz
Y3JpYmUgPSBjb250ZXh0LmRlc2NyaWJlIHx8IGNvbnRleHQuc3VpdGU7CisgICAgZXhwb3J0cy5p
dCA9IGNvbnRleHQuaXQgfHwgY29udGV4dC50ZXN0OworICAgIGV4cG9ydHMuc2V0dXAgPSBjb250
ZXh0LnNldHVwIHx8IGNvbnRleHQuYmVmb3JlRWFjaDsKKyAgICBleHBvcnRzLnN1aXRlU2V0dXAg
PSBjb250ZXh0LnN1aXRlU2V0dXAgfHwgY29udGV4dC5iZWZvcmU7CisgICAgZXhwb3J0cy5zdWl0
ZVRlYXJkb3duID0gY29udGV4dC5zdWl0ZVRlYXJkb3duIHx8IGNvbnRleHQuYWZ0ZXI7CisgICAg
ZXhwb3J0cy5zdWl0ZSA9IGNvbnRleHQuc3VpdGUgfHwgY29udGV4dC5kZXNjcmliZTsKKyAgICBl
eHBvcnRzLnRlYXJkb3duID0gY29udGV4dC50ZWFyZG93biB8fCBjb250ZXh0LmFmdGVyRWFjaDsK
KyAgICBleHBvcnRzLnRlc3QgPSBjb250ZXh0LnRlc3QgfHwgY29udGV4dC5pdDsKKyAgfSk7Cit9
CisKKy8qKgorICogRW5hYmxlIG9yIGRpc2FibGUgYmFpbGluZyBvbiB0aGUgZmlyc3QgZmFpbHVy
ZS4KKyAqCisgKiBAcGFyYW0ge0Jvb2xlYW59IFtiYWlsXQorICogQGFwaSBwdWJsaWMKKyAqLwor
CitNb2NoYS5wcm90b3R5cGUuYmFpbCA9IGZ1bmN0aW9uKGJhaWwpeworICBpZiAoMCA9PSBhcmd1
bWVudHMubGVuZ3RoKSBiYWlsID0gdHJ1ZTsKKyAgdGhpcy5zdWl0ZS5iYWlsKGJhaWwpOworICBy
ZXR1cm4gdGhpczsKK307CisKKy8qKgorICogQWRkIHRlc3QgYGZpbGVgLgorICoKKyAqIEBwYXJh
bSB7U3RyaW5nfSBmaWxlCisgKiBAYXBpIHB1YmxpYworICovCisKK01vY2hhLnByb3RvdHlwZS5h
ZGRGaWxlID0gZnVuY3Rpb24oZmlsZSl7CisgIHRoaXMuZmlsZXMucHVzaChmaWxlKTsKKyAgcmV0
dXJuIHRoaXM7Cit9OworCisvKioKKyAqIFNldCByZXBvcnRlciB0byBgcmVwb3J0ZXJgLCBkZWZh
dWx0cyB0byAic3BlYyIuCisgKgorICogQHBhcmFtIHtTdHJpbmd8RnVuY3Rpb259IHJlcG9ydGVy
IG5hbWUgb3IgY29uc3RydWN0b3IKKyAqIEBhcGkgcHVibGljCisgKi8KKworTW9jaGEucHJvdG90
eXBlLnJlcG9ydGVyID0gZnVuY3Rpb24ocmVwb3J0ZXIpeworICBpZiAoJ2Z1bmN0aW9uJyA9PSB0
eXBlb2YgcmVwb3J0ZXIpIHsKKyAgICB0aGlzLl9yZXBvcnRlciA9IHJlcG9ydGVyOworICB9IGVs
c2UgeworICAgIHJlcG9ydGVyID0gcmVwb3J0ZXIgfHwgJ3NwZWMnOworICAgIHZhciBfcmVwb3J0
ZXI7CisgICAgdHJ5IHsgX3JlcG9ydGVyID0gcmVxdWlyZSgnLi9yZXBvcnRlcnMvJyArIHJlcG9y
dGVyKTsgfSBjYXRjaCAoZXJyKSB7fTsKKyAgICBpZiAoIV9yZXBvcnRlcikgdHJ5IHsgX3JlcG9y
dGVyID0gcmVxdWlyZShyZXBvcnRlcik7IH0gY2F0Y2ggKGVycikge307CisgICAgaWYgKCFfcmVw
b3J0ZXIgJiYgcmVwb3J0ZXIgPT09ICd0ZWFtY2l0eScpCisgICAgICBjb25zb2xlLndhcm4oJ1Ro
ZSBUZWFtY2l0eSByZXBvcnRlciB3YXMgbW92ZWQgdG8gYSBwYWNrYWdlIG5hbWVkICcgKworICAg
ICAgICAnbW9jaGEtdGVhbWNpdHktcmVwb3J0ZXIgJyArCisgICAgICAgICcoaHR0cHM6Ly9ucG1q
cy5vcmcvcGFja2FnZS9tb2NoYS10ZWFtY2l0eS1yZXBvcnRlcikuJyk7CisgICAgaWYgKCFfcmVw
b3J0ZXIpIHRocm93IG5ldyBFcnJvcignaW52YWxpZCByZXBvcnRlciAiJyArIHJlcG9ydGVyICsg
JyInKTsKKyAgICB0aGlzLl9yZXBvcnRlciA9IF9yZXBvcnRlcjsKKyAgfQorICByZXR1cm4gdGhp
czsKK307CisKKy8qKgorICogU2V0IHRlc3QgVUkgYG5hbWVgLCBkZWZhdWx0cyB0byAiYmRkIi4K
KyAqCisgKiBAcGFyYW0ge1N0cmluZ30gYmRkCisgKiBAYXBpIHB1YmxpYworICovCisKK01vY2hh
LnByb3RvdHlwZS51aSA9IGZ1bmN0aW9uKG5hbWUpeworICBuYW1lID0gbmFtZSB8fCAnYmRkJzsK
KyAgdGhpcy5fdWkgPSBleHBvcnRzLmludGVyZmFjZXNbbmFtZV07CisgIGlmICghdGhpcy5fdWkp
IHRyeSB7IHRoaXMuX3VpID0gcmVxdWlyZShuYW1lKTsgfSBjYXRjaCAoZXJyKSB7fTsKKyAgaWYg
KCF0aGlzLl91aSkgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGludGVyZmFjZSAiJyArIG5hbWUg
KyAnIicpOworICB0aGlzLl91aSA9IHRoaXMuX3VpKHRoaXMuc3VpdGUpOworICByZXR1cm4gdGhp
czsKK307CisKKy8qKgorICogTG9hZCByZWdpc3RlcmVkIGZpbGVzLgorICoKKyAqIEBhcGkgcHJp
dmF0ZQorICovCisKK01vY2hhLnByb3RvdHlwZS5sb2FkRmlsZXMgPSBmdW5jdGlvbihmbil7Cisg
IHZhciBzZWxmID0gdGhpczsKKyAgdmFyIHN1aXRlID0gdGhpcy5zdWl0ZTsKKyAgdmFyIHBlbmRp
bmcgPSB0aGlzLmZpbGVzLmxlbmd0aDsKKyAgdGhpcy5maWxlcy5mb3JFYWNoKGZ1bmN0aW9uKGZp
bGUpeworICAgIGZpbGUgPSBwYXRoLnJlc29sdmUoZmlsZSk7CisgICAgc3VpdGUuZW1pdCgncHJl
LXJlcXVpcmUnLCBnbG9iYWwsIGZpbGUsIHNlbGYpOworICAgIHN1aXRlLmVtaXQoJ3JlcXVpcmUn
LCByZXF1aXJlKGZpbGUpLCBmaWxlLCBzZWxmKTsKKyAgICBzdWl0ZS5lbWl0KCdwb3N0LXJlcXVp
cmUnLCBnbG9iYWwsIGZpbGUsIHNlbGYpOworICAgIC0tcGVuZGluZyB8fCAoZm4gJiYgZm4oKSk7
CisgIH0pOworfTsKKworLyoqCisgKiBFbmFibGUgZ3Jvd2wgc3VwcG9ydC4KKyAqCisgKiBAYXBp
IHByaXZhdGUKKyAqLworCitNb2NoYS5wcm90b3R5cGUuX2dyb3dsID0gZnVuY3Rpb24ocnVubmVy
LCByZXBvcnRlcikgeworICB2YXIgbm90aWZ5ID0gcmVxdWlyZSgnZ3Jvd2wnKTsKKworICBydW5u
ZXIub24oJ2VuZCcsIGZ1bmN0aW9uKCl7CisgICAgdmFyIHN0YXRzID0gcmVwb3J0ZXIuc3RhdHM7
CisgICAgaWYgKHN0YXRzLmZhaWx1cmVzKSB7CisgICAgICB2YXIgbXNnID0gc3RhdHMuZmFpbHVy
ZXMgKyAnIG9mICcgKyBydW5uZXIudG90YWwgKyAnIHRlc3RzIGZhaWxlZCc7CisgICAgICBub3Rp
ZnkobXNnLCB7IG5hbWU6ICdtb2NoYScsIHRpdGxlOiAnRmFpbGVkJywgaW1hZ2U6IGltYWdlKCdl
cnJvcicpIH0pOworICAgIH0gZWxzZSB7CisgICAgICBub3RpZnkoc3RhdHMucGFzc2VzICsgJyB0
ZXN0cyBwYXNzZWQgaW4gJyArIHN0YXRzLmR1cmF0aW9uICsgJ21zJywgeworICAgICAgICAgIG5h
bWU6ICdtb2NoYScKKyAgICAgICAgLCB0aXRsZTogJ1Bhc3NlZCcKKyAgICAgICAgLCBpbWFnZTog
aW1hZ2UoJ29rJykKKyAgICAgIH0pOworICAgIH0KKyAgfSk7Cit9OworCisvKioKKyAqIEFkZCBy
ZWdleHAgdG8gZ3JlcCwgaWYgYHJlYCBpcyBhIHN0cmluZyBpdCBpcyBlc2NhcGVkLgorICoKKyAq
IEBwYXJhbSB7UmVnRXhwfFN0cmluZ30gcmUKKyAqIEByZXR1cm4ge01vY2hhfQorICogQGFwaSBw
dWJsaWMKKyAqLworCitNb2NoYS5wcm90b3R5cGUuZ3JlcCA9IGZ1bmN0aW9uKHJlKXsKKyAgdGhp
cy5vcHRpb25zLmdyZXAgPSAnc3RyaW5nJyA9PSB0eXBlb2YgcmUKKyAgICA/IG5ldyBSZWdFeHAo
dXRpbHMuZXNjYXBlUmVnZXhwKHJlKSkKKyAgICA6IHJlOworICByZXR1cm4gdGhpczsKK307CisK
Ky8qKgorICogSW52ZXJ0IGAuZ3JlcCgpYCBtYXRjaGVzLgorICoKKyAqIEByZXR1cm4ge01vY2hh
fQorICogQGFwaSBwdWJsaWMKKyAqLworCitNb2NoYS5wcm90b3R5cGUuaW52ZXJ0ID0gZnVuY3Rp
b24oKXsKKyAgdGhpcy5vcHRpb25zLmludmVydCA9IHRydWU7CisgIHJldHVybiB0aGlzOworfTsK
KworLyoqCisgKiBJZ25vcmUgZ2xvYmFsIGxlYWtzLgorICoKKyAqIEBwYXJhbSB7Qm9vbGVhbn0g
aWdub3JlCisgKiBAcmV0dXJuIHtNb2NoYX0KKyAqIEBhcGkgcHVibGljCisgKi8KKworTW9jaGEu
cHJvdG90eXBlLmlnbm9yZUxlYWtzID0gZnVuY3Rpb24oaWdub3JlKXsKKyAgdGhpcy5vcHRpb25z
Lmlnbm9yZUxlYWtzID0gISFpZ25vcmU7CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBF
bmFibGUgZ2xvYmFsIGxlYWsgY2hlY2tpbmcuCisgKgorICogQHJldHVybiB7TW9jaGF9CisgKiBA
YXBpIHB1YmxpYworICovCisKK01vY2hhLnByb3RvdHlwZS5jaGVja0xlYWtzID0gZnVuY3Rpb24o
KXsKKyAgdGhpcy5vcHRpb25zLmlnbm9yZUxlYWtzID0gZmFsc2U7CisgIHJldHVybiB0aGlzOwor
fTsKKworLyoqCisgKiBFbmFibGUgZ3Jvd2wgc3VwcG9ydC4KKyAqCisgKiBAcmV0dXJuIHtNb2No
YX0KKyAqIEBhcGkgcHVibGljCisgKi8KKworTW9jaGEucHJvdG90eXBlLmdyb3dsID0gZnVuY3Rp
b24oKXsKKyAgdGhpcy5vcHRpb25zLmdyb3dsID0gdHJ1ZTsKKyAgcmV0dXJuIHRoaXM7Cit9Owor
CisvKioKKyAqIElnbm9yZSBgZ2xvYmFsc2AgYXJyYXkgb3Igc3RyaW5nLgorICoKKyAqIEBwYXJh
bSB7QXJyYXl8U3RyaW5nfSBnbG9iYWxzCisgKiBAcmV0dXJuIHtNb2NoYX0KKyAqIEBhcGkgcHVi
bGljCisgKi8KKworTW9jaGEucHJvdG90eXBlLmdsb2JhbHMgPSBmdW5jdGlvbihnbG9iYWxzKXsK
KyAgdGhpcy5vcHRpb25zLmdsb2JhbHMgPSAodGhpcy5vcHRpb25zLmdsb2JhbHMgfHwgW10pLmNv
bmNhdChnbG9iYWxzKTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIEVtaXQgY29sb3Ig
b3V0cHV0LgorICoKKyAqIEBwYXJhbSB7Qm9vbGVhbn0gY29sb3JzCisgKiBAcmV0dXJuIHtNb2No
YX0KKyAqIEBhcGkgcHVibGljCisgKi8KKworTW9jaGEucHJvdG90eXBlLnVzZUNvbG9ycyA9IGZ1
bmN0aW9uKGNvbG9ycyl7CisgIHRoaXMub3B0aW9ucy51c2VDb2xvcnMgPSBhcmd1bWVudHMubGVu
Z3RoICYmIGNvbG9ycyAhPSB1bmRlZmluZWQKKyAgICA/IGNvbG9ycworICAgIDogdHJ1ZTsKKyAg
cmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIFVzZSBpbmxpbmUgZGlmZnMgcmF0aGVyIHRoYW4g
Ky8tLgorICoKKyAqIEBwYXJhbSB7Qm9vbGVhbn0gaW5saW5lRGlmZnMKKyAqIEByZXR1cm4ge01v
Y2hhfQorICogQGFwaSBwdWJsaWMKKyAqLworCitNb2NoYS5wcm90b3R5cGUudXNlSW5saW5lRGlm
ZnMgPSBmdW5jdGlvbihpbmxpbmVEaWZmcykgeworICB0aGlzLm9wdGlvbnMudXNlSW5saW5lRGlm
ZnMgPSBhcmd1bWVudHMubGVuZ3RoICYmIGlubGluZURpZmZzICE9IHVuZGVmaW5lZAorICA/IGlu
bGluZURpZmZzCisgIDogZmFsc2U7CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBTZXQg
dGhlIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLgorICoKKyAqIEBwYXJhbSB7TnVtYmVyfSB0aW1l
b3V0CisgKiBAcmV0dXJuIHtNb2NoYX0KKyAqIEBhcGkgcHVibGljCisgKi8KKworTW9jaGEucHJv
dG90eXBlLnRpbWVvdXQgPSBmdW5jdGlvbih0aW1lb3V0KXsKKyAgdGhpcy5zdWl0ZS50aW1lb3V0
KHRpbWVvdXQpOworICByZXR1cm4gdGhpczsKK307CisKKy8qKgorICogU2V0IHNsb3duZXNzIHRo
cmVzaG9sZCBpbiBtaWxsaXNlY29uZHMuCisgKgorICogQHBhcmFtIHtOdW1iZXJ9IHNsb3cKKyAq
IEByZXR1cm4ge01vY2hhfQorICogQGFwaSBwdWJsaWMKKyAqLworCitNb2NoYS5wcm90b3R5cGUu
c2xvdyA9IGZ1bmN0aW9uKHNsb3cpeworICB0aGlzLnN1aXRlLnNsb3coc2xvdyk7CisgIHJldHVy
biB0aGlzOworfTsKKworLyoqCisgKiBFbmFibGUgdGltZW91dHMuCisgKgorICogQHBhcmFtIHtC
b29sZWFufSBlbmFibGVkCisgKiBAcmV0dXJuIHtNb2NoYX0KKyAqIEBhcGkgcHVibGljCisgKi8K
KworTW9jaGEucHJvdG90eXBlLmVuYWJsZVRpbWVvdXRzID0gZnVuY3Rpb24oZW5hYmxlZCkgewor
ICB0aGlzLnN1aXRlLmVuYWJsZVRpbWVvdXRzKGFyZ3VtZW50cy5sZW5ndGggJiYgZW5hYmxlZCAh
PT0gdW5kZWZpbmVkCisgICAgPyBlbmFibGVkCisgICAgOiB0cnVlKTsKKyAgcmV0dXJuIHRoaXMK
K307CisKKy8qKgorICogTWFrZXMgYWxsIHRlc3RzIGFzeW5jIChhY2NlcHRpbmcgYSBjYWxsYmFj
aykKKyAqCisgKiBAcmV0dXJuIHtNb2NoYX0KKyAqIEBhcGkgcHVibGljCisgKi8KKworTW9jaGEu
cHJvdG90eXBlLmFzeW5jT25seSA9IGZ1bmN0aW9uKCl7CisgIHRoaXMub3B0aW9ucy5hc3luY09u
bHkgPSB0cnVlOworICByZXR1cm4gdGhpczsKK307CisKKy8qKgorICogUnVuIHRlc3RzIGFuZCBp
bnZva2UgYGZuKClgIHdoZW4gY29tcGxldGUuCisgKgorICogQHBhcmFtIHtGdW5jdGlvbn0gZm4K
KyAqIEByZXR1cm4ge1J1bm5lcn0KKyAqIEBhcGkgcHVibGljCisgKi8KKworTW9jaGEucHJvdG90
eXBlLnJ1biA9IGZ1bmN0aW9uKGZuKXsKKyAgaWYgKHRoaXMuZmlsZXMubGVuZ3RoKSB0aGlzLmxv
YWRGaWxlcygpOworICB2YXIgc3VpdGUgPSB0aGlzLnN1aXRlOworICB2YXIgb3B0aW9ucyA9IHRo
aXMub3B0aW9uczsKKyAgb3B0aW9ucy5maWxlcyA9IHRoaXMuZmlsZXM7CisgIHZhciBydW5uZXIg
PSBuZXcgZXhwb3J0cy5SdW5uZXIoc3VpdGUpOworICB2YXIgcmVwb3J0ZXIgPSBuZXcgdGhpcy5f
cmVwb3J0ZXIocnVubmVyLCBvcHRpb25zKTsKKyAgcnVubmVyLmlnbm9yZUxlYWtzID0gZmFsc2Ug
IT09IG9wdGlvbnMuaWdub3JlTGVha3M7CisgIHJ1bm5lci5hc3luY09ubHkgPSBvcHRpb25zLmFz
eW5jT25seTsKKyAgaWYgKG9wdGlvbnMuZ3JlcCkgcnVubmVyLmdyZXAob3B0aW9ucy5ncmVwLCBv
cHRpb25zLmludmVydCk7CisgIGlmIChvcHRpb25zLmdsb2JhbHMpIHJ1bm5lci5nbG9iYWxzKG9w
dGlvbnMuZ2xvYmFscyk7CisgIGlmIChvcHRpb25zLmdyb3dsKSB0aGlzLl9ncm93bChydW5uZXIs
IHJlcG9ydGVyKTsKKyAgZXhwb3J0cy5yZXBvcnRlcnMuQmFzZS51c2VDb2xvcnMgPSBvcHRpb25z
LnVzZUNvbG9yczsKKyAgZXhwb3J0cy5yZXBvcnRlcnMuQmFzZS5pbmxpbmVEaWZmcyA9IG9wdGlv
bnMudXNlSW5saW5lRGlmZnM7CisgIHJldHVybiBydW5uZXIucnVuKGZuKTsKK307CisKK30pOyAv
LyBtb2R1bGU6IG1vY2hhLmpzCisKK3JlcXVpcmUucmVnaXN0ZXIoIm1zLmpzIiwgZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCByZXF1aXJlKXsKKy8qKgorICogSGVscGVycy4KKyAqLworCit2YXIg
cyA9IDEwMDA7Cit2YXIgbSA9IHMgKiA2MDsKK3ZhciBoID0gbSAqIDYwOwordmFyIGQgPSBoICog
MjQ7Cit2YXIgeSA9IGQgKiAzNjUuMjU7CisKKy8qKgorICogUGFyc2Ugb3IgZm9ybWF0IHRoZSBn
aXZlbiBgdmFsYC4KKyAqCisgKiBPcHRpb25zOgorICoKKyAqICAtIGBsb25nYCB2ZXJib3NlIGZv
cm1hdHRpbmcgW2ZhbHNlXQorICoKKyAqIEBwYXJhbSB7U3RyaW5nfE51bWJlcn0gdmFsCisgKiBA
cGFyYW0ge09iamVjdH0gb3B0aW9ucworICogQHJldHVybiB7U3RyaW5nfE51bWJlcn0KKyAqIEBh
cGkgcHVibGljCisgKi8KKworbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbih2YWwsIG9wdGlvbnMp
eworICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKKyAgaWYgKCdzdHJpbmcnID09IHR5cGVvZiB2
YWwpIHJldHVybiBwYXJzZSh2YWwpOworICByZXR1cm4gb3B0aW9ucy5sb25nID8gbG9uZ0Zvcm1h
dCh2YWwpIDogc2hvcnRGb3JtYXQodmFsKTsKK307CisKKy8qKgorICogUGFyc2UgdGhlIGdpdmVu
IGBzdHJgIGFuZCByZXR1cm4gbWlsbGlzZWNvbmRzLgorICoKKyAqIEBwYXJhbSB7U3RyaW5nfSBz
dHIKKyAqIEByZXR1cm4ge051bWJlcn0KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK2Z1bmN0aW9u
IHBhcnNlKHN0cikgeworICB2YXIgbWF0Y2ggPSAvXigoPzpcZCspP1wuP1xkKykgKihtc3xzZWNv
bmRzP3xzfG1pbnV0ZXM/fG18aG91cnM/fGh8ZGF5cz98ZHx5ZWFycz98eSk/JC9pLmV4ZWMoc3Ry
KTsKKyAgaWYgKCFtYXRjaCkgcmV0dXJuOworICB2YXIgbiA9IHBhcnNlRmxvYXQobWF0Y2hbMV0p
OworICB2YXIgdHlwZSA9IChtYXRjaFsyXSB8fCAnbXMnKS50b0xvd2VyQ2FzZSgpOworICBzd2l0
Y2ggKHR5cGUpIHsKKyAgICBjYXNlICd5ZWFycyc6CisgICAgY2FzZSAneWVhcic6CisgICAgY2Fz
ZSAneSc6CisgICAgICByZXR1cm4gbiAqIHk7CisgICAgY2FzZSAnZGF5cyc6CisgICAgY2FzZSAn
ZGF5JzoKKyAgICBjYXNlICdkJzoKKyAgICAgIHJldHVybiBuICogZDsKKyAgICBjYXNlICdob3Vy
cyc6CisgICAgY2FzZSAnaG91cic6CisgICAgY2FzZSAnaCc6CisgICAgICByZXR1cm4gbiAqIGg7
CisgICAgY2FzZSAnbWludXRlcyc6CisgICAgY2FzZSAnbWludXRlJzoKKyAgICBjYXNlICdtJzoK
KyAgICAgIHJldHVybiBuICogbTsKKyAgICBjYXNlICdzZWNvbmRzJzoKKyAgICBjYXNlICdzZWNv
bmQnOgorICAgIGNhc2UgJ3MnOgorICAgICAgcmV0dXJuIG4gKiBzOworICAgIGNhc2UgJ21zJzoK
KyAgICAgIHJldHVybiBuOworICB9Cit9CisKKy8qKgorICogU2hvcnQgZm9ybWF0IGZvciBgbXNg
LgorICoKKyAqIEBwYXJhbSB7TnVtYmVyfSBtcworICogQHJldHVybiB7U3RyaW5nfQorICogQGFw
aSBwcml2YXRlCisgKi8KKworZnVuY3Rpb24gc2hvcnRGb3JtYXQobXMpIHsKKyAgaWYgKG1zID49
IGQpIHJldHVybiBNYXRoLnJvdW5kKG1zIC8gZCkgKyAnZCc7CisgIGlmIChtcyA+PSBoKSByZXR1
cm4gTWF0aC5yb3VuZChtcyAvIGgpICsgJ2gnOworICBpZiAobXMgPj0gbSkgcmV0dXJuIE1hdGgu
cm91bmQobXMgLyBtKSArICdtJzsKKyAgaWYgKG1zID49IHMpIHJldHVybiBNYXRoLnJvdW5kKG1z
IC8gcykgKyAncyc7CisgIHJldHVybiBtcyArICdtcyc7Cit9CisKKy8qKgorICogTG9uZyBmb3Jt
YXQgZm9yIGBtc2AuCisgKgorICogQHBhcmFtIHtOdW1iZXJ9IG1zCisgKiBAcmV0dXJuIHtTdHJp
bmd9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitmdW5jdGlvbiBsb25nRm9ybWF0KG1zKSB7Cisg
IHJldHVybiBwbHVyYWwobXMsIGQsICdkYXknKQorICAgIHx8IHBsdXJhbChtcywgaCwgJ2hvdXIn
KQorICAgIHx8IHBsdXJhbChtcywgbSwgJ21pbnV0ZScpCisgICAgfHwgcGx1cmFsKG1zLCBzLCAn
c2Vjb25kJykKKyAgICB8fCBtcyArICcgbXMnOworfQorCisvKioKKyAqIFBsdXJhbGl6YXRpb24g
aGVscGVyLgorICovCisKK2Z1bmN0aW9uIHBsdXJhbChtcywgbiwgbmFtZSkgeworICBpZiAobXMg
PCBuKSByZXR1cm47CisgIGlmIChtcyA8IG4gKiAxLjUpIHJldHVybiBNYXRoLmZsb29yKG1zIC8g
bikgKyAnICcgKyBuYW1lOworICByZXR1cm4gTWF0aC5jZWlsKG1zIC8gbikgKyAnICcgKyBuYW1l
ICsgJ3MnOworfQorCit9KTsgLy8gbW9kdWxlOiBtcy5qcworCityZXF1aXJlLnJlZ2lzdGVyKCJy
ZXBvcnRlcnMvYmFzZS5qcyIsIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7CisK
Ky8qKgorICogTW9kdWxlIGRlcGVuZGVuY2llcy4KKyAqLworCit2YXIgdHR5ID0gcmVxdWlyZSgn
YnJvd3Nlci90dHknKQorICAsIGRpZmYgPSByZXF1aXJlKCdicm93c2VyL2RpZmYnKQorICAsIG1z
ID0gcmVxdWlyZSgnLi4vbXMnKQorICAsIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTsKKwor
LyoqCisgKiBTYXZlIHRpbWVyIHJlZmVyZW5jZXMgdG8gYXZvaWQgU2lub24gaW50ZXJmZXJpbmcg
KHNlZSBHSC0yMzcpLgorICovCisKK3ZhciBEYXRlID0gZ2xvYmFsLkRhdGUKKyAgLCBzZXRUaW1l
b3V0ID0gZ2xvYmFsLnNldFRpbWVvdXQKKyAgLCBzZXRJbnRlcnZhbCA9IGdsb2JhbC5zZXRJbnRl
cnZhbAorICAsIGNsZWFyVGltZW91dCA9IGdsb2JhbC5jbGVhclRpbWVvdXQKKyAgLCBjbGVhcklu
dGVydmFsID0gZ2xvYmFsLmNsZWFySW50ZXJ2YWw7CisKKy8qKgorICogQ2hlY2sgaWYgYm90aCBz
dGRpbyBzdHJlYW1zIGFyZSBhc3NvY2lhdGVkIHdpdGggYSB0dHkuCisgKi8KKwordmFyIGlzYXR0
eSA9IHR0eS5pc2F0dHkoMSkgJiYgdHR5LmlzYXR0eSgyKTsKKworLyoqCisgKiBFeHBvc2UgYEJh
c2VgLgorICovCisKK2V4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IEJhc2U7CisKKy8qKgorICog
RW5hYmxlIGNvbG9yaW5nIGJ5IGRlZmF1bHQuCisgKi8KKworZXhwb3J0cy51c2VDb2xvcnMgPSBp
c2F0dHkgfHwgKHByb2Nlc3MuZW52Lk1PQ0hBX0NPTE9SUyAhPT0gdW5kZWZpbmVkKTsKKworLyoq
CisgKiBJbmxpbmUgZGlmZnMgaW5zdGVhZCBvZiArLy0KKyAqLworCitleHBvcnRzLmlubGluZURp
ZmZzID0gZmFsc2U7CisKKy8qKgorICogRGVmYXVsdCBjb2xvciBtYXAuCisgKi8KKworZXhwb3J0
cy5jb2xvcnMgPSB7CisgICAgJ3Bhc3MnOiA5MAorICAsICdmYWlsJzogMzEKKyAgLCAnYnJpZ2h0
IHBhc3MnOiA5MgorICAsICdicmlnaHQgZmFpbCc6IDkxCisgICwgJ2JyaWdodCB5ZWxsb3cnOiA5
MworICAsICdwZW5kaW5nJzogMzYKKyAgLCAnc3VpdGUnOiAwCisgICwgJ2Vycm9yIHRpdGxlJzog
MAorICAsICdlcnJvciBtZXNzYWdlJzogMzEKKyAgLCAnZXJyb3Igc3RhY2snOiA5MAorICAsICdj
aGVja21hcmsnOiAzMgorICAsICdmYXN0JzogOTAKKyAgLCAnbWVkaXVtJzogMzMKKyAgLCAnc2xv
dyc6IDMxCisgICwgJ2dyZWVuJzogMzIKKyAgLCAnbGlnaHQnOiA5MAorICAsICdkaWZmIGd1dHRl
cic6IDkwCisgICwgJ2RpZmYgYWRkZWQnOiA0MgorICAsICdkaWZmIHJlbW92ZWQnOiA0MQorfTsK
KworLyoqCisgKiBEZWZhdWx0IHN5bWJvbCBtYXAuCisgKi8KKworZXhwb3J0cy5zeW1ib2xzID0g
eworICBvazogJ+KckycsCisgIGVycjogJ+KclicsCisgIGRvdDogJ+KApCcKK307CisKKy8vIFdp
dGggbm9kZS5qcyBvbiBXaW5kb3dzOiB1c2Ugc3ltYm9scyBhdmFpbGFibGUgaW4gdGVybWluYWwg
ZGVmYXVsdCBmb250cworaWYgKCd3aW4zMicgPT0gcHJvY2Vzcy5wbGF0Zm9ybSkgeworICBleHBv
cnRzLnN5bWJvbHMub2sgPSAnXHUyMjFBJzsKKyAgZXhwb3J0cy5zeW1ib2xzLmVyciA9ICdcdTAw
RDcnOworICBleHBvcnRzLnN5bWJvbHMuZG90ID0gJy4nOworfQorCisvKioKKyAqIENvbG9yIGBz
dHJgIHdpdGggdGhlIGdpdmVuIGB0eXBlYCwKKyAqIGFsbG93aW5nIGNvbG9ycyB0byBiZSBkaXNh
YmxlZCwKKyAqIGFzIHdlbGwgYXMgdXNlci1kZWZpbmVkIGNvbG9yCisgKiBzY2hlbWVzLgorICoK
KyAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlCisgKiBAcGFyYW0ge1N0cmluZ30gc3RyCisgKiBAcmV0
dXJuIHtTdHJpbmd9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCit2YXIgY29sb3IgPSBleHBvcnRz
LmNvbG9yID0gZnVuY3Rpb24odHlwZSwgc3RyKSB7CisgIGlmICghZXhwb3J0cy51c2VDb2xvcnMp
IHJldHVybiBzdHI7CisgIHJldHVybiAnXHUwMDFiWycgKyBleHBvcnRzLmNvbG9yc1t0eXBlXSAr
ICdtJyArIHN0ciArICdcdTAwMWJbMG0nOworfTsKKworLyoqCisgKiBFeHBvc2UgdGVybSB3aW5k
b3cgc2l6ZSwgd2l0aCBzb21lCisgKiBkZWZhdWx0cyBmb3Igd2hlbiBzdGRlcnIgaXMgbm90IGEg
dHR5LgorICovCisKK2V4cG9ydHMud2luZG93ID0geworICB3aWR0aDogaXNhdHR5CisgICAgPyBw
cm9jZXNzLnN0ZG91dC5nZXRXaW5kb3dTaXplCisgICAgICA/IHByb2Nlc3Muc3Rkb3V0LmdldFdp
bmRvd1NpemUoMSlbMF0KKyAgICAgIDogdHR5LmdldFdpbmRvd1NpemUoKVsxXQorICAgIDogNzUK
K307CisKKy8qKgorICogRXhwb3NlIHNvbWUgYmFzaWMgY3Vyc29yIGludGVyYWN0aW9ucworICog
dGhhdCBhcmUgY29tbW9uIGFtb25nIHJlcG9ydGVycy4KKyAqLworCitleHBvcnRzLmN1cnNvciA9
IHsKKyAgaGlkZTogZnVuY3Rpb24oKXsKKyAgICBpc2F0dHkgJiYgcHJvY2Vzcy5zdGRvdXQud3Jp
dGUoJ1x1MDAxYls/MjVsJyk7CisgIH0sCisKKyAgc2hvdzogZnVuY3Rpb24oKXsKKyAgICBpc2F0
dHkgJiYgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1x1MDAxYls/MjVoJyk7CisgIH0sCisKKyAgZGVs
ZXRlTGluZTogZnVuY3Rpb24oKXsKKyAgICBpc2F0dHkgJiYgcHJvY2Vzcy5zdGRvdXQud3JpdGUo
J1x1MDAxYlsySycpOworICB9LAorCisgIGJlZ2lubmluZ09mTGluZTogZnVuY3Rpb24oKXsKKyAg
ICBpc2F0dHkgJiYgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1x1MDAxYlswRycpOworICB9LAorCisg
IENSOiBmdW5jdGlvbigpeworICAgIGlmIChpc2F0dHkpIHsKKyAgICAgIGV4cG9ydHMuY3Vyc29y
LmRlbGV0ZUxpbmUoKTsKKyAgICAgIGV4cG9ydHMuY3Vyc29yLmJlZ2lubmluZ09mTGluZSgpOwor
ICAgIH0gZWxzZSB7CisgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnXHInKTsKKyAgICB9Cisg
IH0KK307CisKKy8qKgorICogT3V0dXQgdGhlIGdpdmVuIGBmYWlsdXJlc2AgYXMgYSBsaXN0Lgor
ICoKKyAqIEBwYXJhbSB7QXJyYXl9IGZhaWx1cmVzCisgKiBAYXBpIHB1YmxpYworICovCisKK2V4
cG9ydHMubGlzdCA9IGZ1bmN0aW9uKGZhaWx1cmVzKXsKKyAgY29uc29sZS5lcnJvcigpOworICBm
YWlsdXJlcy5mb3JFYWNoKGZ1bmN0aW9uKHRlc3QsIGkpeworICAgIC8vIGZvcm1hdAorICAgIHZh
ciBmbXQgPSBjb2xvcignZXJyb3IgdGl0bGUnLCAnICAlcykgJXM6XG4nKQorICAgICAgKyBjb2xv
cignZXJyb3IgbWVzc2FnZScsICcgICAgICVzJykKKyAgICAgICsgY29sb3IoJ2Vycm9yIHN0YWNr
JywgJ1xuJXNcbicpOworCisgICAgLy8gbXNnCisgICAgdmFyIGVyciA9IHRlc3QuZXJyCisgICAg
ICAsIG1lc3NhZ2UgPSBlcnIubWVzc2FnZSB8fCAnJworICAgICAgLCBzdGFjayA9IGVyci5zdGFj
ayB8fCBtZXNzYWdlCisgICAgICAsIGluZGV4ID0gc3RhY2suaW5kZXhPZihtZXNzYWdlKSArIG1l
c3NhZ2UubGVuZ3RoCisgICAgICAsIG1zZyA9IHN0YWNrLnNsaWNlKDAsIGluZGV4KQorICAgICAg
LCBhY3R1YWwgPSBlcnIuYWN0dWFsCisgICAgICAsIGV4cGVjdGVkID0gZXJyLmV4cGVjdGVkCisg
ICAgICAsIGVzY2FwZSA9IHRydWU7CisKKyAgICAvLyB1bmNhdWdodAorICAgIGlmIChlcnIudW5j
YXVnaHQpIHsKKyAgICAgIG1zZyA9ICdVbmNhdWdodCAnICsgbXNnOworICAgIH0KKworICAgIC8v
IGV4cGxpY2l0bHkgc2hvdyBkaWZmCisgICAgaWYgKGVyci5zaG93RGlmZiAmJiBzYW1lVHlwZShh
Y3R1YWwsIGV4cGVjdGVkKSkgeworICAgICAgZXNjYXBlID0gZmFsc2U7CisgICAgICBlcnIuYWN0
dWFsID0gYWN0dWFsID0gdXRpbHMuc3RyaW5naWZ5KGFjdHVhbCk7CisgICAgICBlcnIuZXhwZWN0
ZWQgPSBleHBlY3RlZCA9IHV0aWxzLnN0cmluZ2lmeShleHBlY3RlZCk7CisgICAgfQorCisgICAg
Ly8gYWN0dWFsIC8gZXhwZWN0ZWQgZGlmZgorICAgIGlmICgnc3RyaW5nJyA9PSB0eXBlb2YgYWN0
dWFsICYmICdzdHJpbmcnID09IHR5cGVvZiBleHBlY3RlZCkgeworICAgICAgZm10ID0gY29sb3Io
J2Vycm9yIHRpdGxlJywgJyAgJXMpICVzOlxuJXMnKSArIGNvbG9yKCdlcnJvciBzdGFjaycsICdc
biVzXG4nKTsKKyAgICAgIHZhciBtYXRjaCA9IG1lc3NhZ2UubWF0Y2goL14oW146XSspOiBleHBl
Y3RlZC8pOworICAgICAgbXNnID0gJ1xuICAgICAgJyArIGNvbG9yKCdlcnJvciBtZXNzYWdlJywg
bWF0Y2ggPyBtYXRjaFsxXSA6IG1zZyk7CisKKyAgICAgIGlmIChleHBvcnRzLmlubGluZURpZmZz
KSB7CisgICAgICAgIG1zZyArPSBpbmxpbmVEaWZmKGVyciwgZXNjYXBlKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIG1zZyArPSB1bmlmaWVkRGlmZihlcnIsIGVzY2FwZSk7CisgICAgICB9Cisg
ICAgfQorCisgICAgLy8gaW5kZW50IHN0YWNrIHRyYWNlIHdpdGhvdXQgbXNnCisgICAgc3RhY2sg
PSBzdGFjay5zbGljZShpbmRleCA/IGluZGV4ICsgMSA6IGluZGV4KQorICAgICAgLnJlcGxhY2Uo
L14vZ20sICcgICcpOworCisgICAgY29uc29sZS5lcnJvcihmbXQsIChpICsgMSksIHRlc3QuZnVs
bFRpdGxlKCksIG1zZywgc3RhY2spOworICB9KTsKK307CisKKy8qKgorICogSW5pdGlhbGl6ZSBh
IG5ldyBgQmFzZWAgcmVwb3J0ZXIuCisgKgorICogQWxsIG90aGVyIHJlcG9ydGVycyBnZW5lcmFs
bHkKKyAqIGluaGVyaXQgZnJvbSB0aGlzIHJlcG9ydGVyLCBwcm92aWRpbmcKKyAqIHN0YXRzIHN1
Y2ggYXMgdGVzdCBkdXJhdGlvbiwgbnVtYmVyCisgKiBvZiB0ZXN0cyBwYXNzZWQgLyBmYWlsZWQg
ZXRjLgorICoKKyAqIEBwYXJhbSB7UnVubmVyfSBydW5uZXIKKyAqIEBhcGkgcHVibGljCisgKi8K
KworZnVuY3Rpb24gQmFzZShydW5uZXIpIHsKKyAgdmFyIHNlbGYgPSB0aGlzCisgICAgLCBzdGF0
cyA9IHRoaXMuc3RhdHMgPSB7IHN1aXRlczogMCwgdGVzdHM6IDAsIHBhc3NlczogMCwgcGVuZGlu
ZzogMCwgZmFpbHVyZXM6IDAgfQorICAgICwgZmFpbHVyZXMgPSB0aGlzLmZhaWx1cmVzID0gW107
CisKKyAgaWYgKCFydW5uZXIpIHJldHVybjsKKyAgdGhpcy5ydW5uZXIgPSBydW5uZXI7CisKKyAg
cnVubmVyLnN0YXRzID0gc3RhdHM7CisKKyAgcnVubmVyLm9uKCdzdGFydCcsIGZ1bmN0aW9uKCl7
CisgICAgc3RhdHMuc3RhcnQgPSBuZXcgRGF0ZTsKKyAgfSk7CisKKyAgcnVubmVyLm9uKCdzdWl0
ZScsIGZ1bmN0aW9uKHN1aXRlKXsKKyAgICBzdGF0cy5zdWl0ZXMgPSBzdGF0cy5zdWl0ZXMgfHwg
MDsKKyAgICBzdWl0ZS5yb290IHx8IHN0YXRzLnN1aXRlcysrOworICB9KTsKKworICBydW5uZXIu
b24oJ3Rlc3QgZW5kJywgZnVuY3Rpb24odGVzdCl7CisgICAgc3RhdHMudGVzdHMgPSBzdGF0cy50
ZXN0cyB8fCAwOworICAgIHN0YXRzLnRlc3RzKys7CisgIH0pOworCisgIHJ1bm5lci5vbigncGFz
cycsIGZ1bmN0aW9uKHRlc3QpeworICAgIHN0YXRzLnBhc3NlcyA9IHN0YXRzLnBhc3NlcyB8fCAw
OworCisgICAgdmFyIG1lZGl1bSA9IHRlc3Quc2xvdygpIC8gMjsKKyAgICB0ZXN0LnNwZWVkID0g
dGVzdC5kdXJhdGlvbiA+IHRlc3Quc2xvdygpCisgICAgICA/ICdzbG93JworICAgICAgOiB0ZXN0
LmR1cmF0aW9uID4gbWVkaXVtCisgICAgICAgID8gJ21lZGl1bScKKyAgICAgICAgOiAnZmFzdCc7
CisKKyAgICBzdGF0cy5wYXNzZXMrKzsKKyAgfSk7CisKKyAgcnVubmVyLm9uKCdmYWlsJywgZnVu
Y3Rpb24odGVzdCwgZXJyKXsKKyAgICBzdGF0cy5mYWlsdXJlcyA9IHN0YXRzLmZhaWx1cmVzIHx8
IDA7CisgICAgc3RhdHMuZmFpbHVyZXMrKzsKKyAgICB0ZXN0LmVyciA9IGVycjsKKyAgICBmYWls
dXJlcy5wdXNoKHRlc3QpOworICB9KTsKKworICBydW5uZXIub24oJ2VuZCcsIGZ1bmN0aW9uKCl7
CisgICAgc3RhdHMuZW5kID0gbmV3IERhdGU7CisgICAgc3RhdHMuZHVyYXRpb24gPSBuZXcgRGF0
ZSAtIHN0YXRzLnN0YXJ0OworICB9KTsKKworICBydW5uZXIub24oJ3BlbmRpbmcnLCBmdW5jdGlv
bigpeworICAgIHN0YXRzLnBlbmRpbmcrKzsKKyAgfSk7Cit9CisKKy8qKgorICogT3V0cHV0IGNv
bW1vbiBlcGlsb2d1ZSB1c2VkIGJ5IG1hbnkgb2YKKyAqIHRoZSBidW5kbGVkIHJlcG9ydGVycy4K
KyAqCisgKiBAYXBpIHB1YmxpYworICovCisKK0Jhc2UucHJvdG90eXBlLmVwaWxvZ3VlID0gZnVu
Y3Rpb24oKXsKKyAgdmFyIHN0YXRzID0gdGhpcy5zdGF0czsKKyAgdmFyIHRlc3RzOworICB2YXIg
Zm10OworCisgIGNvbnNvbGUubG9nKCk7CisKKyAgLy8gcGFzc2VzCisgIGZtdCA9IGNvbG9yKCdi
cmlnaHQgcGFzcycsICcgJykKKyAgICArIGNvbG9yKCdncmVlbicsICcgJWQgcGFzc2luZycpCisg
ICAgKyBjb2xvcignbGlnaHQnLCAnICglcyknKTsKKworICBjb25zb2xlLmxvZyhmbXQsCisgICAg
c3RhdHMucGFzc2VzIHx8IDAsCisgICAgbXMoc3RhdHMuZHVyYXRpb24pKTsKKworICAvLyBwZW5k
aW5nCisgIGlmIChzdGF0cy5wZW5kaW5nKSB7CisgICAgZm10ID0gY29sb3IoJ3BlbmRpbmcnLCAn
ICcpCisgICAgICArIGNvbG9yKCdwZW5kaW5nJywgJyAlZCBwZW5kaW5nJyk7CisKKyAgICBjb25z
b2xlLmxvZyhmbXQsIHN0YXRzLnBlbmRpbmcpOworICB9CisKKyAgLy8gZmFpbHVyZXMKKyAgaWYg
KHN0YXRzLmZhaWx1cmVzKSB7CisgICAgZm10ID0gY29sb3IoJ2ZhaWwnLCAnICAlZCBmYWlsaW5n
Jyk7CisKKyAgICBjb25zb2xlLmVycm9yKGZtdCwKKyAgICAgIHN0YXRzLmZhaWx1cmVzKTsKKwor
ICAgIEJhc2UubGlzdCh0aGlzLmZhaWx1cmVzKTsKKyAgICBjb25zb2xlLmVycm9yKCk7CisgIH0K
KworICBjb25zb2xlLmxvZygpOworfTsKKworLyoqCisgKiBQYWQgdGhlIGdpdmVuIGBzdHJgIHRv
IGBsZW5gLgorICoKKyAqIEBwYXJhbSB7U3RyaW5nfSBzdHIKKyAqIEBwYXJhbSB7U3RyaW5nfSBs
ZW4KKyAqIEByZXR1cm4ge1N0cmluZ30KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK2Z1bmN0aW9u
IHBhZChzdHIsIGxlbikgeworICBzdHIgPSBTdHJpbmcoc3RyKTsKKyAgcmV0dXJuIEFycmF5KGxl
biAtIHN0ci5sZW5ndGggKyAxKS5qb2luKCcgJykgKyBzdHI7Cit9CisKKworLyoqCisgKiBSZXR1
cm5zIGFuIGlubGluZSBkaWZmIGJldHdlZW4gMiBzdHJpbmdzIHdpdGggY29sb3VyZWQgQU5TSSBv
dXRwdXQKKyAqCisgKiBAcGFyYW0ge0Vycm9yfSBFcnJvciB3aXRoIGFjdHVhbC9leHBlY3RlZAor
ICogQHJldHVybiB7U3RyaW5nfSBEaWZmCisgKiBAYXBpIHByaXZhdGUKKyAqLworCitmdW5jdGlv
biBpbmxpbmVEaWZmKGVyciwgZXNjYXBlKSB7CisgIHZhciBtc2cgPSBlcnJvckRpZmYoZXJyLCAn
V29yZHNXaXRoU3BhY2UnLCBlc2NhcGUpOworCisgIC8vIGxpbmVub3MKKyAgdmFyIGxpbmVzID0g
bXNnLnNwbGl0KCdcbicpOworICBpZiAobGluZXMubGVuZ3RoID4gNCkgeworICAgIHZhciB3aWR0
aCA9IFN0cmluZyhsaW5lcy5sZW5ndGgpLmxlbmd0aDsKKyAgICBtc2cgPSBsaW5lcy5tYXAoZnVu
Y3Rpb24oc3RyLCBpKXsKKyAgICAgIHJldHVybiBwYWQoKytpLCB3aWR0aCkgKyAnIHwnICsgJyAn
ICsgc3RyOworICAgIH0pLmpvaW4oJ1xuJyk7CisgIH0KKworICAvLyBsZWdlbmQKKyAgbXNnID0g
J1xuJworICAgICsgY29sb3IoJ2RpZmYgcmVtb3ZlZCcsICdhY3R1YWwnKQorICAgICsgJyAnCisg
ICAgKyBjb2xvcignZGlmZiBhZGRlZCcsICdleHBlY3RlZCcpCisgICAgKyAnXG5cbicKKyAgICAr
IG1zZworICAgICsgJ1xuJzsKKworICAvLyBpbmRlbnQKKyAgbXNnID0gbXNnLnJlcGxhY2UoL14v
Z20sICcgICAgICAnKTsKKyAgcmV0dXJuIG1zZzsKK30KKworLyoqCisgKiBSZXR1cm5zIGEgdW5p
ZmllZCBkaWZmIGJldHdlZW4gMiBzdHJpbmdzCisgKgorICogQHBhcmFtIHtFcnJvcn0gRXJyb3Ig
d2l0aCBhY3R1YWwvZXhwZWN0ZWQKKyAqIEByZXR1cm4ge1N0cmluZ30gRGlmZgorICogQGFwaSBw
cml2YXRlCisgKi8KKworZnVuY3Rpb24gdW5pZmllZERpZmYoZXJyLCBlc2NhcGUpIHsKKyAgdmFy
IGluZGVudCA9ICcgICAgICAnOworICBmdW5jdGlvbiBjbGVhblVwKGxpbmUpIHsKKyAgICBpZiAo
ZXNjYXBlKSB7CisgICAgICBsaW5lID0gZXNjYXBlSW52aXNpYmxlcyhsaW5lKTsKKyAgICB9Cisg
ICAgaWYgKGxpbmVbMF0gPT09ICcrJykgcmV0dXJuIGluZGVudCArIGNvbG9yTGluZXMoJ2RpZmYg
YWRkZWQnLCBsaW5lKTsKKyAgICBpZiAobGluZVswXSA9PT0gJy0nKSByZXR1cm4gaW5kZW50ICsg
Y29sb3JMaW5lcygnZGlmZiByZW1vdmVkJywgbGluZSk7CisgICAgaWYgKGxpbmUubWF0Y2goL1xA
XEAvKSkgcmV0dXJuIG51bGw7CisgICAgaWYgKGxpbmUubWF0Y2goL1xcIE5vIG5ld2xpbmUvKSkg
cmV0dXJuIG51bGw7CisgICAgZWxzZSByZXR1cm4gaW5kZW50ICsgbGluZTsKKyAgfQorICBmdW5j
dGlvbiBub3RCbGFuayhsaW5lKSB7CisgICAgcmV0dXJuIGxpbmUgIT0gbnVsbDsKKyAgfQorICBt
c2cgPSBkaWZmLmNyZWF0ZVBhdGNoKCdzdHJpbmcnLCBlcnIuYWN0dWFsLCBlcnIuZXhwZWN0ZWQp
OworICB2YXIgbGluZXMgPSBtc2cuc3BsaXQoJ1xuJykuc3BsaWNlKDQpOworICByZXR1cm4gJ1xu
ICAgICAgJworICAgICAgICAgKyBjb2xvckxpbmVzKCdkaWZmIGFkZGVkJywgICAnKyBleHBlY3Rl
ZCcpICsgJyAnCisgICAgICAgICArIGNvbG9yTGluZXMoJ2RpZmYgcmVtb3ZlZCcsICctIGFjdHVh
bCcpCisgICAgICAgICArICdcblxuJworICAgICAgICAgKyBsaW5lcy5tYXAoY2xlYW5VcCkuZmls
dGVyKG5vdEJsYW5rKS5qb2luKCdcbicpOworfQorCisvKioKKyAqIFJldHVybiBhIGNoYXJhY3Rl
ciBkaWZmIGZvciBgZXJyYC4KKyAqCisgKiBAcGFyYW0ge0Vycm9yfSBlcnIKKyAqIEByZXR1cm4g
e1N0cmluZ30KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK2Z1bmN0aW9uIGVycm9yRGlmZihlcnIs
IHR5cGUsIGVzY2FwZSkgeworICB2YXIgYWN0dWFsICAgPSBlc2NhcGUgPyBlc2NhcGVJbnZpc2li
bGVzKGVyci5hY3R1YWwpICAgOiBlcnIuYWN0dWFsOworICB2YXIgZXhwZWN0ZWQgPSBlc2NhcGUg
PyBlc2NhcGVJbnZpc2libGVzKGVyci5leHBlY3RlZCkgOiBlcnIuZXhwZWN0ZWQ7CisgIHJldHVy
biBkaWZmWydkaWZmJyArIHR5cGVdKGFjdHVhbCwgZXhwZWN0ZWQpLm1hcChmdW5jdGlvbihzdHIp
eworICAgIGlmIChzdHIuYWRkZWQpIHJldHVybiBjb2xvckxpbmVzKCdkaWZmIGFkZGVkJywgc3Ry
LnZhbHVlKTsKKyAgICBpZiAoc3RyLnJlbW92ZWQpIHJldHVybiBjb2xvckxpbmVzKCdkaWZmIHJl
bW92ZWQnLCBzdHIudmFsdWUpOworICAgIHJldHVybiBzdHIudmFsdWU7CisgIH0pLmpvaW4oJycp
OworfQorCisvKioKKyAqIFJldHVybnMgYSBzdHJpbmcgd2l0aCBhbGwgaW52aXNpYmxlIGNoYXJh
Y3RlcnMgaW4gcGxhaW4gdGV4dAorICoKKyAqIEBwYXJhbSB7U3RyaW5nfSBsaW5lCisgKiBAcmV0
dXJuIHtTdHJpbmd9CisgKiBAYXBpIHByaXZhdGUKKyAqLworZnVuY3Rpb24gZXNjYXBlSW52aXNp
YmxlcyhsaW5lKSB7CisgICAgcmV0dXJuIGxpbmUucmVwbGFjZSgvXHQvZywgJzx0YWI+JykKKyAg
ICAgICAgICAgICAgIC5yZXBsYWNlKC9cci9nLCAnPENSPicpCisgICAgICAgICAgICAgICAucmVw
bGFjZSgvXG4vZywgJzxMRj5cbicpOworfQorCisvKioKKyAqIENvbG9yIGxpbmVzIGZvciBgc3Ry
YCwgdXNpbmcgdGhlIGNvbG9yIGBuYW1lYC4KKyAqCisgKiBAcGFyYW0ge1N0cmluZ30gbmFtZQor
ICogQHBhcmFtIHtTdHJpbmd9IHN0cgorICogQHJldHVybiB7U3RyaW5nfQorICogQGFwaSBwcml2
YXRlCisgKi8KKworZnVuY3Rpb24gY29sb3JMaW5lcyhuYW1lLCBzdHIpIHsKKyAgcmV0dXJuIHN0
ci5zcGxpdCgnXG4nKS5tYXAoZnVuY3Rpb24oc3RyKXsKKyAgICByZXR1cm4gY29sb3IobmFtZSwg
c3RyKTsKKyAgfSkuam9pbignXG4nKTsKK30KKworLyoqCisgKiBDaGVjayB0aGF0IGEgLyBiIGhh
dmUgdGhlIHNhbWUgdHlwZS4KKyAqCisgKiBAcGFyYW0ge09iamVjdH0gYQorICogQHBhcmFtIHtP
YmplY3R9IGIKKyAqIEByZXR1cm4ge0Jvb2xlYW59CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitm
dW5jdGlvbiBzYW1lVHlwZShhLCBiKSB7CisgIGEgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5n
LmNhbGwoYSk7CisgIGIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYik7CisgIHJl
dHVybiBhID09IGI7Cit9CisKK30pOyAvLyBtb2R1bGU6IHJlcG9ydGVycy9iYXNlLmpzCisKK3Jl
cXVpcmUucmVnaXN0ZXIoInJlcG9ydGVycy9kb2MuanMiLCBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIHJlcXVpcmUpeworCisvKioKKyAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuCisgKi8KKwordmFy
IEJhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKQorICAsIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMn
KTsKKworLyoqCisgKiBFeHBvc2UgYERvY2AuCisgKi8KKworZXhwb3J0cyA9IG1vZHVsZS5leHBv
cnRzID0gRG9jOworCisvKioKKyAqIEluaXRpYWxpemUgYSBuZXcgYERvY2AgcmVwb3J0ZXIuCisg
KgorICogQHBhcmFtIHtSdW5uZXJ9IHJ1bm5lcgorICogQGFwaSBwdWJsaWMKKyAqLworCitmdW5j
dGlvbiBEb2MocnVubmVyKSB7CisgIEJhc2UuY2FsbCh0aGlzLCBydW5uZXIpOworCisgIHZhciBz
ZWxmID0gdGhpcworICAgICwgc3RhdHMgPSB0aGlzLnN0YXRzCisgICAgLCB0b3RhbCA9IHJ1bm5l
ci50b3RhbAorICAgICwgaW5kZW50cyA9IDI7CisKKyAgZnVuY3Rpb24gaW5kZW50KCkgeworICAg
IHJldHVybiBBcnJheShpbmRlbnRzKS5qb2luKCcgICcpOworICB9CisKKyAgcnVubmVyLm9uKCdz
dWl0ZScsIGZ1bmN0aW9uKHN1aXRlKXsKKyAgICBpZiAoc3VpdGUucm9vdCkgcmV0dXJuOworICAg
ICsraW5kZW50czsKKyAgICBjb25zb2xlLmxvZygnJXM8c2VjdGlvbiBjbGFzcz0ic3VpdGUiPics
IGluZGVudCgpKTsKKyAgICArK2luZGVudHM7CisgICAgY29uc29sZS5sb2coJyVzPGgxPiVzPC9o
MT4nLCBpbmRlbnQoKSwgdXRpbHMuZXNjYXBlKHN1aXRlLnRpdGxlKSk7CisgICAgY29uc29sZS5s
b2coJyVzPGRsPicsIGluZGVudCgpKTsKKyAgfSk7CisKKyAgcnVubmVyLm9uKCdzdWl0ZSBlbmQn
LCBmdW5jdGlvbihzdWl0ZSl7CisgICAgaWYgKHN1aXRlLnJvb3QpIHJldHVybjsKKyAgICBjb25z
b2xlLmxvZygnJXM8L2RsPicsIGluZGVudCgpKTsKKyAgICAtLWluZGVudHM7CisgICAgY29uc29s
ZS5sb2coJyVzPC9zZWN0aW9uPicsIGluZGVudCgpKTsKKyAgICAtLWluZGVudHM7CisgIH0pOwor
CisgIHJ1bm5lci5vbigncGFzcycsIGZ1bmN0aW9uKHRlc3QpeworICAgIGNvbnNvbGUubG9nKCcl
cyAgPGR0PiVzPC9kdD4nLCBpbmRlbnQoKSwgdXRpbHMuZXNjYXBlKHRlc3QudGl0bGUpKTsKKyAg
ICB2YXIgY29kZSA9IHV0aWxzLmVzY2FwZSh1dGlscy5jbGVhbih0ZXN0LmZuLnRvU3RyaW5nKCkp
KTsKKyAgICBjb25zb2xlLmxvZygnJXMgIDxkZD48cHJlPjxjb2RlPiVzPC9jb2RlPjwvcHJlPjwv
ZGQ+JywgaW5kZW50KCksIGNvZGUpOworICB9KTsKKworICBydW5uZXIub24oJ2ZhaWwnLCBmdW5j
dGlvbih0ZXN0LCBlcnIpeworICAgIGNvbnNvbGUubG9nKCclcyAgPGR0IGNsYXNzPSJlcnJvciI+
JXM8L2R0PicsIGluZGVudCgpLCB1dGlscy5lc2NhcGUodGVzdC50aXRsZSkpOworICAgIHZhciBj
b2RlID0gdXRpbHMuZXNjYXBlKHV0aWxzLmNsZWFuKHRlc3QuZm4udG9TdHJpbmcoKSkpOworICAg
IGNvbnNvbGUubG9nKCclcyAgPGRkIGNsYXNzPSJlcnJvciI+PHByZT48Y29kZT4lczwvY29kZT48
L3ByZT48L2RkPicsIGluZGVudCgpLCBjb2RlKTsKKyAgICBjb25zb2xlLmxvZygnJXMgIDxkZCBj
bGFzcz0iZXJyb3IiPiVzPC9kZD4nLCBpbmRlbnQoKSwgdXRpbHMuZXNjYXBlKGVycikpOworICB9
KTsKK30KKworfSk7IC8vIG1vZHVsZTogcmVwb3J0ZXJzL2RvYy5qcworCityZXF1aXJlLnJlZ2lz
dGVyKCJyZXBvcnRlcnMvZG90LmpzIiwgZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCByZXF1aXJl
KXsKKworLyoqCisgKiBNb2R1bGUgZGVwZW5kZW5jaWVzLgorICovCisKK3ZhciBCYXNlID0gcmVx
dWlyZSgnLi9iYXNlJykKKyAgLCBjb2xvciA9IEJhc2UuY29sb3I7CisKKy8qKgorICogRXhwb3Nl
IGBEb3RgLgorICovCisKK2V4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IERvdDsKKworLyoqCisg
KiBJbml0aWFsaXplIGEgbmV3IGBEb3RgIG1hdHJpeCB0ZXN0IHJlcG9ydGVyLgorICoKKyAqIEBw
YXJhbSB7UnVubmVyfSBydW5uZXIKKyAqIEBhcGkgcHVibGljCisgKi8KKworZnVuY3Rpb24gRG90
KHJ1bm5lcikgeworICBCYXNlLmNhbGwodGhpcywgcnVubmVyKTsKKworICB2YXIgc2VsZiA9IHRo
aXMKKyAgICAsIHN0YXRzID0gdGhpcy5zdGF0cworICAgICwgd2lkdGggPSBCYXNlLndpbmRvdy53
aWR0aCAqIC43NSB8IDAKKyAgICAsIG4gPSAtMTsKKworICBydW5uZXIub24oJ3N0YXJ0JywgZnVu
Y3Rpb24oKXsKKyAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnXG4gICcpOworICB9KTsKKworICBy
dW5uZXIub24oJ3BlbmRpbmcnLCBmdW5jdGlvbih0ZXN0KXsKKyAgICBpZiAoKytuICUgd2lkdGgg
PT0gMCkgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1xuICAnKTsKKyAgICBwcm9jZXNzLnN0ZG91dC53
cml0ZShjb2xvcigncGVuZGluZycsIEJhc2Uuc3ltYm9scy5kb3QpKTsKKyAgfSk7CisKKyAgcnVu
bmVyLm9uKCdwYXNzJywgZnVuY3Rpb24odGVzdCl7CisgICAgaWYgKCsrbiAlIHdpZHRoID09IDAp
IHByb2Nlc3Muc3Rkb3V0LndyaXRlKCdcbiAgJyk7CisgICAgaWYgKCdzbG93JyA9PSB0ZXN0LnNw
ZWVkKSB7CisgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShjb2xvcignYnJpZ2h0IHllbGxvdycs
IEJhc2Uuc3ltYm9scy5kb3QpKTsKKyAgICB9IGVsc2UgeworICAgICAgcHJvY2Vzcy5zdGRvdXQu
d3JpdGUoY29sb3IodGVzdC5zcGVlZCwgQmFzZS5zeW1ib2xzLmRvdCkpOworICAgIH0KKyAgfSk7
CisKKyAgcnVubmVyLm9uKCdmYWlsJywgZnVuY3Rpb24odGVzdCwgZXJyKXsKKyAgICBpZiAoKytu
ICUgd2lkdGggPT0gMCkgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1xuICAnKTsKKyAgICBwcm9jZXNz
LnN0ZG91dC53cml0ZShjb2xvcignZmFpbCcsIEJhc2Uuc3ltYm9scy5kb3QpKTsKKyAgfSk7CisK
KyAgcnVubmVyLm9uKCdlbmQnLCBmdW5jdGlvbigpeworICAgIGNvbnNvbGUubG9nKCk7CisgICAg
c2VsZi5lcGlsb2d1ZSgpOworICB9KTsKK30KKworLyoqCisgKiBJbmhlcml0IGZyb20gYEJhc2Uu
cHJvdG90eXBlYC4KKyAqLworCitmdW5jdGlvbiBGKCl7fTsKK0YucHJvdG90eXBlID0gQmFzZS5w
cm90b3R5cGU7CitEb3QucHJvdG90eXBlID0gbmV3IEY7CitEb3QucHJvdG90eXBlLmNvbnN0cnVj
dG9yID0gRG90OworCisKK30pOyAvLyBtb2R1bGU6IHJlcG9ydGVycy9kb3QuanMKKworcmVxdWly
ZS5yZWdpc3RlcigicmVwb3J0ZXJzL2h0bWwtY292LmpzIiwgZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCByZXF1aXJlKXsKKworLyoqCisgKiBNb2R1bGUgZGVwZW5kZW5jaWVzLgorICovCisKK3Zh
ciBKU09OQ292ID0gcmVxdWlyZSgnLi9qc29uLWNvdicpCisgICwgZnMgPSByZXF1aXJlKCdicm93
c2VyL2ZzJyk7CisKKy8qKgorICogRXhwb3NlIGBIVE1MQ292YC4KKyAqLworCitleHBvcnRzID0g
bW9kdWxlLmV4cG9ydHMgPSBIVE1MQ292OworCisvKioKKyAqIEluaXRpYWxpemUgYSBuZXcgYEpz
Q292ZXJhZ2VgIHJlcG9ydGVyLgorICoKKyAqIEBwYXJhbSB7UnVubmVyfSBydW5uZXIKKyAqIEBh
cGkgcHVibGljCisgKi8KKworZnVuY3Rpb24gSFRNTENvdihydW5uZXIpIHsKKyAgdmFyIGphZGUg
PSByZXF1aXJlKCdqYWRlJykKKyAgICAsIGZpbGUgPSBfX2Rpcm5hbWUgKyAnL3RlbXBsYXRlcy9j
b3ZlcmFnZS5qYWRlJworICAgICwgc3RyID0gZnMucmVhZEZpbGVTeW5jKGZpbGUsICd1dGY4JykK
KyAgICAsIGZuID0gamFkZS5jb21waWxlKHN0ciwgeyBmaWxlbmFtZTogZmlsZSB9KQorICAgICwg
c2VsZiA9IHRoaXM7CisKKyAgSlNPTkNvdi5jYWxsKHRoaXMsIHJ1bm5lciwgZmFsc2UpOworCisg
IHJ1bm5lci5vbignZW5kJywgZnVuY3Rpb24oKXsKKyAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShm
bih7CisgICAgICAgIGNvdjogc2VsZi5jb3YKKyAgICAgICwgY292ZXJhZ2VDbGFzczogY292ZXJh
Z2VDbGFzcworICAgIH0pKTsKKyAgfSk7Cit9CisKKy8qKgorICogUmV0dXJuIGNvdmVyYWdlIGNs
YXNzIGZvciBgbmAuCisgKgorICogQHJldHVybiB7U3RyaW5nfQorICogQGFwaSBwcml2YXRlCisg
Ki8KKworZnVuY3Rpb24gY292ZXJhZ2VDbGFzcyhuKSB7CisgIGlmIChuID49IDc1KSByZXR1cm4g
J2hpZ2gnOworICBpZiAobiA+PSA1MCkgcmV0dXJuICdtZWRpdW0nOworICBpZiAobiA+PSAyNSkg
cmV0dXJuICdsb3cnOworICByZXR1cm4gJ3RlcnJpYmxlJzsKK30KK30pOyAvLyBtb2R1bGU6IHJl
cG9ydGVycy9odG1sLWNvdi5qcworCityZXF1aXJlLnJlZ2lzdGVyKCJyZXBvcnRlcnMvaHRtbC5q
cyIsIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7CisKKy8qKgorICogTW9kdWxl
IGRlcGVuZGVuY2llcy4KKyAqLworCit2YXIgQmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpCisgICwg
dXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpCisgICwgUHJvZ3Jlc3MgPSByZXF1aXJlKCcuLi9i
cm93c2VyL3Byb2dyZXNzJykKKyAgLCBlc2NhcGUgPSB1dGlscy5lc2NhcGU7CisKKy8qKgorICog
U2F2ZSB0aW1lciByZWZlcmVuY2VzIHRvIGF2b2lkIFNpbm9uIGludGVyZmVyaW5nIChzZWUgR0gt
MjM3KS4KKyAqLworCit2YXIgRGF0ZSA9IGdsb2JhbC5EYXRlCisgICwgc2V0VGltZW91dCA9IGds
b2JhbC5zZXRUaW1lb3V0CisgICwgc2V0SW50ZXJ2YWwgPSBnbG9iYWwuc2V0SW50ZXJ2YWwKKyAg
LCBjbGVhclRpbWVvdXQgPSBnbG9iYWwuY2xlYXJUaW1lb3V0CisgICwgY2xlYXJJbnRlcnZhbCA9
IGdsb2JhbC5jbGVhckludGVydmFsOworCisvKioKKyAqIEV4cG9zZSBgSFRNTGAuCisgKi8KKwor
ZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gSFRNTDsKKworLyoqCisgKiBTdGF0cyB0ZW1wbGF0
ZS4KKyAqLworCit2YXIgc3RhdHNUZW1wbGF0ZSA9ICc8dWwgaWQ9Im1vY2hhLXN0YXRzIj4nCisg
ICsgJzxsaSBjbGFzcz0icHJvZ3Jlc3MiPjxjYW52YXMgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIj48
L2NhbnZhcz48L2xpPicKKyAgKyAnPGxpIGNsYXNzPSJwYXNzZXMiPjxhIGhyZWY9IiMiPnBhc3Nl
czo8L2E+IDxlbT4wPC9lbT48L2xpPicKKyAgKyAnPGxpIGNsYXNzPSJmYWlsdXJlcyI+PGEgaHJl
Zj0iIyI+ZmFpbHVyZXM6PC9hPiA8ZW0+MDwvZW0+PC9saT4nCisgICsgJzxsaSBjbGFzcz0iZHVy
YXRpb24iPmR1cmF0aW9uOiA8ZW0+MDwvZW0+czwvbGk+JworICArICc8L3VsPic7CisKKy8qKgor
ICogSW5pdGlhbGl6ZSBhIG5ldyBgSFRNTGAgcmVwb3J0ZXIuCisgKgorICogQHBhcmFtIHtSdW5u
ZXJ9IHJ1bm5lcgorICogQGFwaSBwdWJsaWMKKyAqLworCitmdW5jdGlvbiBIVE1MKHJ1bm5lcikg
eworICBCYXNlLmNhbGwodGhpcywgcnVubmVyKTsKKworICB2YXIgc2VsZiA9IHRoaXMKKyAgICAs
IHN0YXRzID0gdGhpcy5zdGF0cworICAgICwgdG90YWwgPSBydW5uZXIudG90YWwKKyAgICAsIHN0
YXQgPSBmcmFnbWVudChzdGF0c1RlbXBsYXRlKQorICAgICwgaXRlbXMgPSBzdGF0LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdsaScpCisgICAgLCBwYXNzZXMgPSBpdGVtc1sxXS5nZXRFbGVtZW50c0J5
VGFnTmFtZSgnZW0nKVswXQorICAgICwgcGFzc2VzTGluayA9IGl0ZW1zWzFdLmdldEVsZW1lbnRz
QnlUYWdOYW1lKCdhJylbMF0KKyAgICAsIGZhaWx1cmVzID0gaXRlbXNbMl0uZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJ2VtJylbMF0KKyAgICAsIGZhaWx1cmVzTGluayA9IGl0ZW1zWzJdLmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdhJylbMF0KKyAgICAsIGR1cmF0aW9uID0gaXRlbXNbM10uZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ2VtJylbMF0KKyAgICAsIGNhbnZhcyA9IHN0YXQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoJ2NhbnZhcycpWzBdCisgICAgLCByZXBvcnQgPSBmcmFnbWVudCgnPHVsIGlkPSJtb2No
YS1yZXBvcnQiPjwvdWw+JykKKyAgICAsIHN0YWNrID0gW3JlcG9ydF0KKyAgICAsIHByb2dyZXNz
CisgICAgLCBjdHgKKyAgICAsIHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9jaGEn
KTsKKworICBpZiAoY2FudmFzLmdldENvbnRleHQpIHsKKyAgICB2YXIgcmF0aW8gPSB3aW5kb3cu
ZGV2aWNlUGl4ZWxSYXRpbyB8fCAxOworICAgIGNhbnZhcy5zdHlsZS53aWR0aCA9IGNhbnZhcy53
aWR0aDsKKyAgICBjYW52YXMuc3R5bGUuaGVpZ2h0ID0gY2FudmFzLmhlaWdodDsKKyAgICBjYW52
YXMud2lkdGggKj0gcmF0aW87CisgICAgY2FudmFzLmhlaWdodCAqPSByYXRpbzsKKyAgICBjdHgg
PSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKKyAgICBjdHguc2NhbGUocmF0aW8sIHJhdGlvKTsK
KyAgICBwcm9ncmVzcyA9IG5ldyBQcm9ncmVzczsKKyAgfQorCisgIGlmICghcm9vdCkgcmV0dXJu
IGVycm9yKCcjbW9jaGEgZGl2IG1pc3NpbmcsIGFkZCBpdCB0byB5b3VyIGRvY3VtZW50Jyk7CisK
KyAgLy8gcGFzcyB0b2dnbGUKKyAgb24ocGFzc2VzTGluaywgJ2NsaWNrJywgZnVuY3Rpb24oKXsK
KyAgICB1bmhpZGUoKTsKKyAgICB2YXIgbmFtZSA9IC9wYXNzLy50ZXN0KHJlcG9ydC5jbGFzc05h
bWUpID8gJycgOiAnIHBhc3MnOworICAgIHJlcG9ydC5jbGFzc05hbWUgPSByZXBvcnQuY2xhc3NO
YW1lLnJlcGxhY2UoL2ZhaWx8cGFzcy9nLCAnJykgKyBuYW1lOworICAgIGlmIChyZXBvcnQuY2xh
c3NOYW1lLnRyaW0oKSkgaGlkZVN1aXRlc1dpdGhvdXQoJ3Rlc3QgcGFzcycpOworICB9KTsKKwor
ICAvLyBmYWlsdXJlIHRvZ2dsZQorICBvbihmYWlsdXJlc0xpbmssICdjbGljaycsIGZ1bmN0aW9u
KCl7CisgICAgdW5oaWRlKCk7CisgICAgdmFyIG5hbWUgPSAvZmFpbC8udGVzdChyZXBvcnQuY2xh
c3NOYW1lKSA/ICcnIDogJyBmYWlsJzsKKyAgICByZXBvcnQuY2xhc3NOYW1lID0gcmVwb3J0LmNs
YXNzTmFtZS5yZXBsYWNlKC9mYWlsfHBhc3MvZywgJycpICsgbmFtZTsKKyAgICBpZiAocmVwb3J0
LmNsYXNzTmFtZS50cmltKCkpIGhpZGVTdWl0ZXNXaXRob3V0KCd0ZXN0IGZhaWwnKTsKKyAgfSk7
CisKKyAgcm9vdC5hcHBlbmRDaGlsZChzdGF0KTsKKyAgcm9vdC5hcHBlbmRDaGlsZChyZXBvcnQp
OworCisgIGlmIChwcm9ncmVzcykgcHJvZ3Jlc3Muc2l6ZSg0MCk7CisKKyAgcnVubmVyLm9uKCdz
dWl0ZScsIGZ1bmN0aW9uKHN1aXRlKXsKKyAgICBpZiAoc3VpdGUucm9vdCkgcmV0dXJuOworCisg
ICAgLy8gc3VpdGUKKyAgICB2YXIgdXJsID0gc2VsZi5zdWl0ZVVSTChzdWl0ZSk7CisgICAgdmFy
IGVsID0gZnJhZ21lbnQoJzxsaSBjbGFzcz0ic3VpdGUiPjxoMT48YSBocmVmPSIlcyI+JXM8L2E+
PC9oMT48L2xpPicsIHVybCwgZXNjYXBlKHN1aXRlLnRpdGxlKSk7CisKKyAgICAvLyBjb250YWlu
ZXIKKyAgICBzdGFja1swXS5hcHBlbmRDaGlsZChlbCk7CisgICAgc3RhY2sudW5zaGlmdChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpKTsKKyAgICBlbC5hcHBlbmRDaGlsZChzdGFja1swXSk7
CisgIH0pOworCisgIHJ1bm5lci5vbignc3VpdGUgZW5kJywgZnVuY3Rpb24oc3VpdGUpeworICAg
IGlmIChzdWl0ZS5yb290KSByZXR1cm47CisgICAgc3RhY2suc2hpZnQoKTsKKyAgfSk7CisKKyAg
cnVubmVyLm9uKCdmYWlsJywgZnVuY3Rpb24odGVzdCwgZXJyKXsKKyAgICBpZiAoJ2hvb2snID09
IHRlc3QudHlwZSkgcnVubmVyLmVtaXQoJ3Rlc3QgZW5kJywgdGVzdCk7CisgIH0pOworCisgIHJ1
bm5lci5vbigndGVzdCBlbmQnLCBmdW5jdGlvbih0ZXN0KXsKKyAgICAvLyBUT0RPOiBhZGQgdG8g
c3RhdHMKKyAgICB2YXIgcGVyY2VudCA9IHN0YXRzLnRlc3RzIC8gdGhpcy50b3RhbCAqIDEwMCB8
IDA7CisgICAgaWYgKHByb2dyZXNzKSBwcm9ncmVzcy51cGRhdGUocGVyY2VudCkuZHJhdyhjdHgp
OworCisgICAgLy8gdXBkYXRlIHN0YXRzCisgICAgdmFyIG1zID0gbmV3IERhdGUgLSBzdGF0cy5z
dGFydDsKKyAgICB0ZXh0KHBhc3Nlcywgc3RhdHMucGFzc2VzKTsKKyAgICB0ZXh0KGZhaWx1cmVz
LCBzdGF0cy5mYWlsdXJlcyk7CisgICAgdGV4dChkdXJhdGlvbiwgKG1zIC8gMTAwMCkudG9GaXhl
ZCgyKSk7CisKKyAgICAvLyB0ZXN0CisgICAgaWYgKCdwYXNzZWQnID09IHRlc3Quc3RhdGUpIHsK
KyAgICAgIHZhciB1cmwgPSBzZWxmLnRlc3RVUkwodGVzdCk7CisgICAgICB2YXIgZWwgPSBmcmFn
bWVudCgnPGxpIGNsYXNzPSJ0ZXN0IHBhc3MgJWUiPjxoMj4lZTxzcGFuIGNsYXNzPSJkdXJhdGlv
biI+JWVtczwvc3Bhbj4gPGEgaHJlZj0iJXMiIGNsYXNzPSJyZXBsYXkiPuKAozwvYT48L2gyPjwv
bGk+JywgdGVzdC5zcGVlZCwgdGVzdC50aXRsZSwgdGVzdC5kdXJhdGlvbiwgdXJsKTsKKyAgICB9
IGVsc2UgaWYgKHRlc3QucGVuZGluZykgeworICAgICAgdmFyIGVsID0gZnJhZ21lbnQoJzxsaSBj
bGFzcz0idGVzdCBwYXNzIHBlbmRpbmciPjxoMj4lZTwvaDI+PC9saT4nLCB0ZXN0LnRpdGxlKTsK
KyAgICB9IGVsc2UgeworICAgICAgdmFyIGVsID0gZnJhZ21lbnQoJzxsaSBjbGFzcz0idGVzdCBm
YWlsIj48aDI+JWUgPGEgaHJlZj0iP2dyZXA9JWUiIGNsYXNzPSJyZXBsYXkiPuKAozwvYT48L2gy
PjwvbGk+JywgdGVzdC50aXRsZSwgZW5jb2RlVVJJQ29tcG9uZW50KHRlc3QuZnVsbFRpdGxlKCkp
KTsKKyAgICAgIHZhciBzdHIgPSB0ZXN0LmVyci5zdGFjayB8fCB0ZXN0LmVyci50b1N0cmluZygp
OworCisgICAgICAvLyBGRiAvIE9wZXJhIGRvIG5vdCBhZGQgdGhlIG1lc3NhZ2UKKyAgICAgIGlm
ICghfnN0ci5pbmRleE9mKHRlc3QuZXJyLm1lc3NhZ2UpKSB7CisgICAgICAgIHN0ciA9IHRlc3Qu
ZXJyLm1lc3NhZ2UgKyAnXG4nICsgc3RyOworICAgICAgfQorCisgICAgICAvLyA8PUlFNyBzdHJp
bmdpZmllcyB0byBbT2JqZWN0IEVycm9yXS4gU2luY2UgaXQgY2FuIGJlIG92ZXJsb2FkZWQsIHdl
CisgICAgICAvLyBjaGVjayBmb3IgdGhlIHJlc3VsdCBvZiB0aGUgc3RyaW5naWZ5aW5nLgorICAg
ICAgaWYgKCdbb2JqZWN0IEVycm9yXScgPT0gc3RyKSBzdHIgPSB0ZXN0LmVyci5tZXNzYWdlOwor
CisgICAgICAvLyBTYWZhcmkgZG9lc24ndCBnaXZlIHlvdSBhIHN0YWNrLiBMZXQncyBhdCBsZWFz
dCBwcm92aWRlIGEgc291cmNlIGxpbmUuCisgICAgICBpZiAoIXRlc3QuZXJyLnN0YWNrICYmIHRl
c3QuZXJyLnNvdXJjZVVSTCAmJiB0ZXN0LmVyci5saW5lICE9PSB1bmRlZmluZWQpIHsKKyAgICAg
ICAgc3RyICs9ICJcbigiICsgdGVzdC5lcnIuc291cmNlVVJMICsgIjoiICsgdGVzdC5lcnIubGlu
ZSArICIpIjsKKyAgICAgIH0KKworICAgICAgZWwuYXBwZW5kQ2hpbGQoZnJhZ21lbnQoJzxwcmUg
Y2xhc3M9ImVycm9yIj4lZTwvcHJlPicsIHN0cikpOworICAgIH0KKworICAgIC8vIHRvZ2dsZSBj
b2RlCisgICAgLy8gVE9ETzogZGVmZXIKKyAgICBpZiAoIXRlc3QucGVuZGluZykgeworICAgICAg
dmFyIGgyID0gZWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2gyJylbMF07CisKKyAgICAgIG9uKGgy
LCAnY2xpY2snLCBmdW5jdGlvbigpeworICAgICAgICBwcmUuc3R5bGUuZGlzcGxheSA9ICdub25l
JyA9PSBwcmUuc3R5bGUuZGlzcGxheQorICAgICAgICAgID8gJ2Jsb2NrJworICAgICAgICAgIDog
J25vbmUnOworICAgICAgfSk7CisKKyAgICAgIHZhciBwcmUgPSBmcmFnbWVudCgnPHByZT48Y29k
ZT4lZTwvY29kZT48L3ByZT4nLCB1dGlscy5jbGVhbih0ZXN0LmZuLnRvU3RyaW5nKCkpKTsKKyAg
ICAgIGVsLmFwcGVuZENoaWxkKHByZSk7CisgICAgICBwcmUuc3R5bGUuZGlzcGxheSA9ICdub25l
JzsKKyAgICB9CisKKyAgICAvLyBEb24ndCBjYWxsIC5hcHBlbmRDaGlsZCBpZiAjbW9jaGEtcmVw
b3J0IHdhcyBhbHJlYWR5IC5zaGlmdCgpJ2VkIG9mZiB0aGUgc3RhY2suCisgICAgaWYgKHN0YWNr
WzBdKSBzdGFja1swXS5hcHBlbmRDaGlsZChlbCk7CisgIH0pOworfQorCisvKioKKyAqIFByb3Zp
ZGUgc3VpdGUgVVJMCisgKgorICogQHBhcmFtIHtPYmplY3R9IFtzdWl0ZV0KKyAqLworCitIVE1M
LnByb3RvdHlwZS5zdWl0ZVVSTCA9IGZ1bmN0aW9uKHN1aXRlKXsKKyAgcmV0dXJuICc/Z3JlcD0n
ICsgZW5jb2RlVVJJQ29tcG9uZW50KHN1aXRlLmZ1bGxUaXRsZSgpKTsKK307CisKKy8qKgorICog
UHJvdmlkZSB0ZXN0IFVSTAorICoKKyAqIEBwYXJhbSB7T2JqZWN0fSBbdGVzdF0KKyAqLworCitI
VE1MLnByb3RvdHlwZS50ZXN0VVJMID0gZnVuY3Rpb24odGVzdCl7CisgIHJldHVybiAnP2dyZXA9
JyArIGVuY29kZVVSSUNvbXBvbmVudCh0ZXN0LmZ1bGxUaXRsZSgpKTsKK307CisKKy8qKgorICog
RGlzcGxheSBlcnJvciBgbXNnYC4KKyAqLworCitmdW5jdGlvbiBlcnJvcihtc2cpIHsKKyAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChmcmFnbWVudCgnPGRpdiBpZD0ibW9jaGEtZXJyb3IiPiVz
PC9kaXY+JywgbXNnKSk7Cit9CisKKy8qKgorICogUmV0dXJuIGEgRE9NIGZyYWdtZW50IGZyb20g
YGh0bWxgLgorICovCisKK2Z1bmN0aW9uIGZyYWdtZW50KGh0bWwpIHsKKyAgdmFyIGFyZ3MgPSBh
cmd1bWVudHMKKyAgICAsIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpCisgICAg
LCBpID0gMTsKKworICBkaXYuaW5uZXJIVE1MID0gaHRtbC5yZXBsYWNlKC8lKFtzZV0pL2csIGZ1
bmN0aW9uKF8sIHR5cGUpeworICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgY2FzZSAncyc6IHJl
dHVybiBTdHJpbmcoYXJnc1tpKytdKTsKKyAgICAgIGNhc2UgJ2UnOiByZXR1cm4gZXNjYXBlKGFy
Z3NbaSsrXSk7CisgICAgfQorICB9KTsKKworICByZXR1cm4gZGl2LmZpcnN0Q2hpbGQ7Cit9CisK
Ky8qKgorICogQ2hlY2sgZm9yIHN1aXRlcyB0aGF0IGRvIG5vdCBoYXZlIGVsZW1lbnRzCisgKiB3
aXRoIGBjbGFzc25hbWVgLCBhbmQgaGlkZSB0aGVtLgorICovCisKK2Z1bmN0aW9uIGhpZGVTdWl0
ZXNXaXRob3V0KGNsYXNzbmFtZSkgeworICB2YXIgc3VpdGVzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZSgnc3VpdGUnKTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdWl0ZXMubGVu
Z3RoOyBpKyspIHsKKyAgICB2YXIgZWxzID0gc3VpdGVzW2ldLmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoY2xhc3NuYW1lKTsKKyAgICBpZiAoMCA9PSBlbHMubGVuZ3RoKSBzdWl0ZXNbaV0uY2xhc3NO
YW1lICs9ICcgaGlkZGVuJzsKKyAgfQorfQorCisvKioKKyAqIFVuaGlkZSAuaGlkZGVuIHN1aXRl
cy4KKyAqLworCitmdW5jdGlvbiB1bmhpZGUoKSB7CisgIHZhciBlbHMgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKCdzdWl0ZSBoaWRkZW4nKTsKKyAgZm9yICh2YXIgaSA9IDA7IGkg
PCBlbHMubGVuZ3RoOyArK2kpIHsKKyAgICBlbHNbaV0uY2xhc3NOYW1lID0gZWxzW2ldLmNsYXNz
TmFtZS5yZXBsYWNlKCdzdWl0ZSBoaWRkZW4nLCAnc3VpdGUnKTsKKyAgfQorfQorCisvKioKKyAq
IFNldCBgZWxgIHRleHQgdG8gYHN0cmAuCisgKi8KKworZnVuY3Rpb24gdGV4dChlbCwgc3RyKSB7
CisgIGlmIChlbC50ZXh0Q29udGVudCkgeworICAgIGVsLnRleHRDb250ZW50ID0gc3RyOworICB9
IGVsc2UgeworICAgIGVsLmlubmVyVGV4dCA9IHN0cjsKKyAgfQorfQorCisvKioKKyAqIExpc3Rl
biBvbiBgZXZlbnRgIHdpdGggY2FsbGJhY2sgYGZuYC4KKyAqLworCitmdW5jdGlvbiBvbihlbCwg
ZXZlbnQsIGZuKSB7CisgIGlmIChlbC5hZGRFdmVudExpc3RlbmVyKSB7CisgICAgZWwuYWRkRXZl
bnRMaXN0ZW5lcihldmVudCwgZm4sIGZhbHNlKTsKKyAgfSBlbHNlIHsKKyAgICBlbC5hdHRhY2hF
dmVudCgnb24nICsgZXZlbnQsIGZuKTsKKyAgfQorfQorCit9KTsgLy8gbW9kdWxlOiByZXBvcnRl
cnMvaHRtbC5qcworCityZXF1aXJlLnJlZ2lzdGVyKCJyZXBvcnRlcnMvaW5kZXguanMiLCBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUpeworCitleHBvcnRzLkJhc2UgPSByZXF1aXJl
KCcuL2Jhc2UnKTsKK2V4cG9ydHMuRG90ID0gcmVxdWlyZSgnLi9kb3QnKTsKK2V4cG9ydHMuRG9j
ID0gcmVxdWlyZSgnLi9kb2MnKTsKK2V4cG9ydHMuVEFQID0gcmVxdWlyZSgnLi90YXAnKTsKK2V4
cG9ydHMuSlNPTiA9IHJlcXVpcmUoJy4vanNvbicpOworZXhwb3J0cy5IVE1MID0gcmVxdWlyZSgn
Li9odG1sJyk7CitleHBvcnRzLkxpc3QgPSByZXF1aXJlKCcuL2xpc3QnKTsKK2V4cG9ydHMuTWlu
ID0gcmVxdWlyZSgnLi9taW4nKTsKK2V4cG9ydHMuU3BlYyA9IHJlcXVpcmUoJy4vc3BlYycpOwor
ZXhwb3J0cy5OeWFuID0gcmVxdWlyZSgnLi9ueWFuJyk7CitleHBvcnRzLlhVbml0ID0gcmVxdWly
ZSgnLi94dW5pdCcpOworZXhwb3J0cy5NYXJrZG93biA9IHJlcXVpcmUoJy4vbWFya2Rvd24nKTsK
K2V4cG9ydHMuUHJvZ3Jlc3MgPSByZXF1aXJlKCcuL3Byb2dyZXNzJyk7CitleHBvcnRzLkxhbmRp
bmcgPSByZXF1aXJlKCcuL2xhbmRpbmcnKTsKK2V4cG9ydHMuSlNPTkNvdiA9IHJlcXVpcmUoJy4v
anNvbi1jb3YnKTsKK2V4cG9ydHMuSFRNTENvdiA9IHJlcXVpcmUoJy4vaHRtbC1jb3YnKTsKK2V4
cG9ydHMuSlNPTlN0cmVhbSA9IHJlcXVpcmUoJy4vanNvbi1zdHJlYW0nKTsKKworfSk7IC8vIG1v
ZHVsZTogcmVwb3J0ZXJzL2luZGV4LmpzCisKK3JlcXVpcmUucmVnaXN0ZXIoInJlcG9ydGVycy9q
c29uLWNvdi5qcyIsIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7CisKKy8qKgor
ICogTW9kdWxlIGRlcGVuZGVuY2llcy4KKyAqLworCit2YXIgQmFzZSA9IHJlcXVpcmUoJy4vYmFz
ZScpOworCisvKioKKyAqIEV4cG9zZSBgSlNPTkNvdmAuCisgKi8KKworZXhwb3J0cyA9IG1vZHVs
ZS5leHBvcnRzID0gSlNPTkNvdjsKKworLyoqCisgKiBJbml0aWFsaXplIGEgbmV3IGBKc0NvdmVy
YWdlYCByZXBvcnRlci4KKyAqCisgKiBAcGFyYW0ge1J1bm5lcn0gcnVubmVyCisgKiBAcGFyYW0g
e0Jvb2xlYW59IG91dHB1dAorICogQGFwaSBwdWJsaWMKKyAqLworCitmdW5jdGlvbiBKU09OQ292
KHJ1bm5lciwgb3V0cHV0KSB7CisgIHZhciBzZWxmID0gdGhpcworICAgICwgb3V0cHV0ID0gMSA9
PSBhcmd1bWVudHMubGVuZ3RoID8gdHJ1ZSA6IG91dHB1dDsKKworICBCYXNlLmNhbGwodGhpcywg
cnVubmVyKTsKKworICB2YXIgdGVzdHMgPSBbXQorICAgICwgZmFpbHVyZXMgPSBbXQorICAgICwg
cGFzc2VzID0gW107CisKKyAgcnVubmVyLm9uKCd0ZXN0IGVuZCcsIGZ1bmN0aW9uKHRlc3Qpewor
ICAgIHRlc3RzLnB1c2godGVzdCk7CisgIH0pOworCisgIHJ1bm5lci5vbigncGFzcycsIGZ1bmN0
aW9uKHRlc3QpeworICAgIHBhc3Nlcy5wdXNoKHRlc3QpOworICB9KTsKKworICBydW5uZXIub24o
J2ZhaWwnLCBmdW5jdGlvbih0ZXN0KXsKKyAgICBmYWlsdXJlcy5wdXNoKHRlc3QpOworICB9KTsK
KworICBydW5uZXIub24oJ2VuZCcsIGZ1bmN0aW9uKCl7CisgICAgdmFyIGNvdiA9IGdsb2JhbC5f
JGpzY292ZXJhZ2UgfHwge307CisgICAgdmFyIHJlc3VsdCA9IHNlbGYuY292ID0gbWFwKGNvdik7
CisgICAgcmVzdWx0LnN0YXRzID0gc2VsZi5zdGF0czsKKyAgICByZXN1bHQudGVzdHMgPSB0ZXN0
cy5tYXAoY2xlYW4pOworICAgIHJlc3VsdC5mYWlsdXJlcyA9IGZhaWx1cmVzLm1hcChjbGVhbik7
CisgICAgcmVzdWx0LnBhc3NlcyA9IHBhc3Nlcy5tYXAoY2xlYW4pOworICAgIGlmICghb3V0cHV0
KSByZXR1cm47CisgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoSlNPTi5zdHJpbmdpZnkocmVzdWx0
LCBudWxsLCAyICkpOworICB9KTsKK30KKworLyoqCisgKiBNYXAganNjb3ZlcmFnZSBkYXRhIHRv
IGEgSlNPTiBzdHJ1Y3R1cmUKKyAqIHN1aXRhYmxlIGZvciByZXBvcnRpbmcuCisgKgorICogQHBh
cmFtIHtPYmplY3R9IGNvdgorICogQHJldHVybiB7T2JqZWN0fQorICogQGFwaSBwcml2YXRlCisg
Ki8KKworZnVuY3Rpb24gbWFwKGNvdikgeworICB2YXIgcmV0ID0geworICAgICAgaW5zdHJ1bWVu
dGF0aW9uOiAnbm9kZS1qc2NvdmVyYWdlJworICAgICwgc2xvYzogMAorICAgICwgaGl0czogMAor
ICAgICwgbWlzc2VzOiAwCisgICAgLCBjb3ZlcmFnZTogMAorICAgICwgZmlsZXM6IFtdCisgIH07
CisKKyAgZm9yICh2YXIgZmlsZW5hbWUgaW4gY292KSB7CisgICAgdmFyIGRhdGEgPSBjb3ZlcmFn
ZShmaWxlbmFtZSwgY292W2ZpbGVuYW1lXSk7CisgICAgcmV0LmZpbGVzLnB1c2goZGF0YSk7Cisg
ICAgcmV0LmhpdHMgKz0gZGF0YS5oaXRzOworICAgIHJldC5taXNzZXMgKz0gZGF0YS5taXNzZXM7
CisgICAgcmV0LnNsb2MgKz0gZGF0YS5zbG9jOworICB9CisKKyAgcmV0LmZpbGVzLnNvcnQoZnVu
Y3Rpb24oYSwgYikgeworICAgIHJldHVybiBhLmZpbGVuYW1lLmxvY2FsZUNvbXBhcmUoYi5maWxl
bmFtZSk7CisgIH0pOworCisgIGlmIChyZXQuc2xvYyA+IDApIHsKKyAgICByZXQuY292ZXJhZ2Ug
PSAocmV0LmhpdHMgLyByZXQuc2xvYykgKiAxMDA7CisgIH0KKworICByZXR1cm4gcmV0OworfTsK
KworLyoqCisgKiBNYXAganNjb3ZlcmFnZSBkYXRhIGZvciBhIHNpbmdsZSBzb3VyY2UgZmlsZQor
ICogdG8gYSBKU09OIHN0cnVjdHVyZSBzdWl0YWJsZSBmb3IgcmVwb3J0aW5nLgorICoKKyAqIEBw
YXJhbSB7U3RyaW5nfSBmaWxlbmFtZSBuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZQorICogQHBhcmFt
IHtPYmplY3R9IGRhdGEganNjb3ZlcmFnZSBjb3ZlcmFnZSBkYXRhCisgKiBAcmV0dXJuIHtPYmpl
Y3R9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitmdW5jdGlvbiBjb3ZlcmFnZShmaWxlbmFtZSwg
ZGF0YSkgeworICB2YXIgcmV0ID0geworICAgIGZpbGVuYW1lOiBmaWxlbmFtZSwKKyAgICBjb3Zl
cmFnZTogMCwKKyAgICBoaXRzOiAwLAorICAgIG1pc3NlczogMCwKKyAgICBzbG9jOiAwLAorICAg
IHNvdXJjZToge30KKyAgfTsKKworICBkYXRhLnNvdXJjZS5mb3JFYWNoKGZ1bmN0aW9uKGxpbmUs
IG51bSl7CisgICAgbnVtKys7CisKKyAgICBpZiAoZGF0YVtudW1dID09PSAwKSB7CisgICAgICBy
ZXQubWlzc2VzKys7CisgICAgICByZXQuc2xvYysrOworICAgIH0gZWxzZSBpZiAoZGF0YVtudW1d
ICE9PSB1bmRlZmluZWQpIHsKKyAgICAgIHJldC5oaXRzKys7CisgICAgICByZXQuc2xvYysrOwor
ICAgIH0KKworICAgIHJldC5zb3VyY2VbbnVtXSA9IHsKKyAgICAgICAgc291cmNlOiBsaW5lCisg
ICAgICAsIGNvdmVyYWdlOiBkYXRhW251bV0gPT09IHVuZGVmaW5lZAorICAgICAgICA/ICcnCisg
ICAgICAgIDogZGF0YVtudW1dCisgICAgfTsKKyAgfSk7CisKKyAgcmV0LmNvdmVyYWdlID0gcmV0
LmhpdHMgLyByZXQuc2xvYyAqIDEwMDsKKworICByZXR1cm4gcmV0OworfQorCisvKioKKyAqIFJl
dHVybiBhIHBsYWluLW9iamVjdCByZXByZXNlbnRhdGlvbiBvZiBgdGVzdGAKKyAqIGZyZWUgb2Yg
Y3ljbGljIHByb3BlcnRpZXMgZXRjLgorICoKKyAqIEBwYXJhbSB7T2JqZWN0fSB0ZXN0CisgKiBA
cmV0dXJuIHtPYmplY3R9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitmdW5jdGlvbiBjbGVhbih0
ZXN0KSB7CisgIHJldHVybiB7CisgICAgICB0aXRsZTogdGVzdC50aXRsZQorICAgICwgZnVsbFRp
dGxlOiB0ZXN0LmZ1bGxUaXRsZSgpCisgICAgLCBkdXJhdGlvbjogdGVzdC5kdXJhdGlvbgorICB9
Cit9CisKK30pOyAvLyBtb2R1bGU6IHJlcG9ydGVycy9qc29uLWNvdi5qcworCityZXF1aXJlLnJl
Z2lzdGVyKCJyZXBvcnRlcnMvanNvbi1zdHJlYW0uanMiLCBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIHJlcXVpcmUpeworCisvKioKKyAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuCisgKi8KKwordmFy
IEJhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKQorICAsIGNvbG9yID0gQmFzZS5jb2xvcjsKKworLyoq
CisgKiBFeHBvc2UgYExpc3RgLgorICovCisKK2V4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IExp
c3Q7CisKKy8qKgorICogSW5pdGlhbGl6ZSBhIG5ldyBgTGlzdGAgdGVzdCByZXBvcnRlci4KKyAq
CisgKiBAcGFyYW0ge1J1bm5lcn0gcnVubmVyCisgKiBAYXBpIHB1YmxpYworICovCisKK2Z1bmN0
aW9uIExpc3QocnVubmVyKSB7CisgIEJhc2UuY2FsbCh0aGlzLCBydW5uZXIpOworCisgIHZhciBz
ZWxmID0gdGhpcworICAgICwgc3RhdHMgPSB0aGlzLnN0YXRzCisgICAgLCB0b3RhbCA9IHJ1bm5l
ci50b3RhbDsKKworICBydW5uZXIub24oJ3N0YXJ0JywgZnVuY3Rpb24oKXsKKyAgICBjb25zb2xl
LmxvZyhKU09OLnN0cmluZ2lmeShbJ3N0YXJ0JywgeyB0b3RhbDogdG90YWwgfV0pKTsKKyAgfSk7
CisKKyAgcnVubmVyLm9uKCdwYXNzJywgZnVuY3Rpb24odGVzdCl7CisgICAgY29uc29sZS5sb2co
SlNPTi5zdHJpbmdpZnkoWydwYXNzJywgY2xlYW4odGVzdCldKSk7CisgIH0pOworCisgIHJ1bm5l
ci5vbignZmFpbCcsIGZ1bmN0aW9uKHRlc3QsIGVycil7CisgICAgY29uc29sZS5sb2coSlNPTi5z
dHJpbmdpZnkoWydmYWlsJywgY2xlYW4odGVzdCldKSk7CisgIH0pOworCisgIHJ1bm5lci5vbign
ZW5kJywgZnVuY3Rpb24oKXsKKyAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShKU09OLnN0cmluZ2lm
eShbJ2VuZCcsIHNlbGYuc3RhdHNdKSk7CisgIH0pOworfQorCisvKioKKyAqIFJldHVybiBhIHBs
YWluLW9iamVjdCByZXByZXNlbnRhdGlvbiBvZiBgdGVzdGAKKyAqIGZyZWUgb2YgY3ljbGljIHBy
b3BlcnRpZXMgZXRjLgorICoKKyAqIEBwYXJhbSB7T2JqZWN0fSB0ZXN0CisgKiBAcmV0dXJuIHtP
YmplY3R9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitmdW5jdGlvbiBjbGVhbih0ZXN0KSB7Cisg
IHJldHVybiB7CisgICAgICB0aXRsZTogdGVzdC50aXRsZQorICAgICwgZnVsbFRpdGxlOiB0ZXN0
LmZ1bGxUaXRsZSgpCisgICAgLCBkdXJhdGlvbjogdGVzdC5kdXJhdGlvbgorICB9Cit9Cit9KTsg
Ly8gbW9kdWxlOiByZXBvcnRlcnMvanNvbi1zdHJlYW0uanMKKworcmVxdWlyZS5yZWdpc3Rlcigi
cmVwb3J0ZXJzL2pzb24uanMiLCBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUpewor
CisvKioKKyAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuCisgKi8KKwordmFyIEJhc2UgPSByZXF1aXJl
KCcuL2Jhc2UnKQorICAsIGN1cnNvciA9IEJhc2UuY3Vyc29yCisgICwgY29sb3IgPSBCYXNlLmNv
bG9yOworCisvKioKKyAqIEV4cG9zZSBgSlNPTmAuCisgKi8KKworZXhwb3J0cyA9IG1vZHVsZS5l
eHBvcnRzID0gSlNPTlJlcG9ydGVyOworCisvKioKKyAqIEluaXRpYWxpemUgYSBuZXcgYEpTT05g
IHJlcG9ydGVyLgorICoKKyAqIEBwYXJhbSB7UnVubmVyfSBydW5uZXIKKyAqIEBhcGkgcHVibGlj
CisgKi8KKworZnVuY3Rpb24gSlNPTlJlcG9ydGVyKHJ1bm5lcikgeworICB2YXIgc2VsZiA9IHRo
aXM7CisgIEJhc2UuY2FsbCh0aGlzLCBydW5uZXIpOworCisgIHZhciB0ZXN0cyA9IFtdCisgICAg
LCBmYWlsdXJlcyA9IFtdCisgICAgLCBwYXNzZXMgPSBbXTsKKworICBydW5uZXIub24oJ3Rlc3Qg
ZW5kJywgZnVuY3Rpb24odGVzdCl7CisgICAgdGVzdHMucHVzaCh0ZXN0KTsKKyAgfSk7CisKKyAg
cnVubmVyLm9uKCdwYXNzJywgZnVuY3Rpb24odGVzdCl7CisgICAgcGFzc2VzLnB1c2godGVzdCk7
CisgIH0pOworCisgIHJ1bm5lci5vbignZmFpbCcsIGZ1bmN0aW9uKHRlc3QsIGVycil7CisgICAg
ZmFpbHVyZXMucHVzaCh0ZXN0KTsKKyAgICBpZiAoZXJyID09PSBPYmplY3QoZXJyKSkgeworICAg
ICAgdGVzdC5lcnJNc2cgPSBlcnIubWVzc2FnZTsKKyAgICAgIHRlc3QuZXJyU3RhY2sgPSBlcnIu
c3RhY2s7CisgICAgfQorICB9KTsKKworICBydW5uZXIub24oJ2VuZCcsIGZ1bmN0aW9uKCl7Cisg
ICAgdmFyIG9iaiA9IHsKKyAgICAgIHN0YXRzOiBzZWxmLnN0YXRzLAorICAgICAgdGVzdHM6IHRl
c3RzLm1hcChjbGVhbiksCisgICAgICBmYWlsdXJlczogZmFpbHVyZXMubWFwKGNsZWFuKSwKKyAg
ICAgIHBhc3NlczogcGFzc2VzLm1hcChjbGVhbikKKyAgICB9OworICAgIHJ1bm5lci50ZXN0UmVz
dWx0cyA9IG9iajsKKworICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKEpTT04uc3RyaW5naWZ5KG9i
aiwgbnVsbCwgMikpOworICB9KTsKK30KKworLyoqCisgKiBSZXR1cm4gYSBwbGFpbi1vYmplY3Qg
cmVwcmVzZW50YXRpb24gb2YgYHRlc3RgCisgKiBmcmVlIG9mIGN5Y2xpYyBwcm9wZXJ0aWVzIGV0
Yy4KKyAqCisgKiBAcGFyYW0ge09iamVjdH0gdGVzdAorICogQHJldHVybiB7T2JqZWN0fQorICog
QGFwaSBwcml2YXRlCisgKi8KKworZnVuY3Rpb24gY2xlYW4odGVzdCkgeworICByZXR1cm4gewor
ICAgIHRpdGxlOiB0ZXN0LnRpdGxlLAorICAgIGZ1bGxUaXRsZTogdGVzdC5mdWxsVGl0bGUoKSwK
KyAgICBkdXJhdGlvbjogdGVzdC5kdXJhdGlvbiwKKyAgICBlcnI6IHRlc3QuZXJyLAorICAgIGVy
clN0YWNrOiB0ZXN0LmVyci5zdGFjaywKKyAgICBlcnJNZXNzYWdlOiB0ZXN0LmVyci5tZXNzYWdl
CisgIH0KK30KKworfSk7IC8vIG1vZHVsZTogcmVwb3J0ZXJzL2pzb24uanMKKworcmVxdWlyZS5y
ZWdpc3RlcigicmVwb3J0ZXJzL2xhbmRpbmcuanMiLCBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IHJlcXVpcmUpeworCisvKioKKyAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuCisgKi8KKwordmFyIEJh
c2UgPSByZXF1aXJlKCcuL2Jhc2UnKQorICAsIGN1cnNvciA9IEJhc2UuY3Vyc29yCisgICwgY29s
b3IgPSBCYXNlLmNvbG9yOworCisvKioKKyAqIEV4cG9zZSBgTGFuZGluZ2AuCisgKi8KKworZXhw
b3J0cyA9IG1vZHVsZS5leHBvcnRzID0gTGFuZGluZzsKKworLyoqCisgKiBBaXJwbGFuZSBjb2xv
ci4KKyAqLworCitCYXNlLmNvbG9ycy5wbGFuZSA9IDA7CisKKy8qKgorICogQWlycGxhbmUgY3Jh
c2ggY29sb3IuCisgKi8KKworQmFzZS5jb2xvcnNbJ3BsYW5lIGNyYXNoJ10gPSAzMTsKKworLyoq
CisgKiBSdW53YXkgY29sb3IuCisgKi8KKworQmFzZS5jb2xvcnMucnVud2F5ID0gOTA7CisKKy8q
KgorICogSW5pdGlhbGl6ZSBhIG5ldyBgTGFuZGluZ2AgcmVwb3J0ZXIuCisgKgorICogQHBhcmFt
IHtSdW5uZXJ9IHJ1bm5lcgorICogQGFwaSBwdWJsaWMKKyAqLworCitmdW5jdGlvbiBMYW5kaW5n
KHJ1bm5lcikgeworICBCYXNlLmNhbGwodGhpcywgcnVubmVyKTsKKworICB2YXIgc2VsZiA9IHRo
aXMKKyAgICAsIHN0YXRzID0gdGhpcy5zdGF0cworICAgICwgd2lkdGggPSBCYXNlLndpbmRvdy53
aWR0aCAqIC43NSB8IDAKKyAgICAsIHRvdGFsID0gcnVubmVyLnRvdGFsCisgICAgLCBzdHJlYW0g
PSBwcm9jZXNzLnN0ZG91dAorICAgICwgcGxhbmUgPSBjb2xvcigncGxhbmUnLCAn4pyIJykKKyAg
ICAsIGNyYXNoZWQgPSAtMQorICAgICwgbiA9IDA7CisKKyAgZnVuY3Rpb24gcnVud2F5KCkgewor
ICAgIHZhciBidWYgPSBBcnJheSh3aWR0aCkuam9pbignLScpOworICAgIHJldHVybiAnICAnICsg
Y29sb3IoJ3J1bndheScsIGJ1Zik7CisgIH0KKworICBydW5uZXIub24oJ3N0YXJ0JywgZnVuY3Rp
b24oKXsKKyAgICBzdHJlYW0ud3JpdGUoJ1xuICAnKTsKKyAgICBjdXJzb3IuaGlkZSgpOworICB9
KTsKKworICBydW5uZXIub24oJ3Rlc3QgZW5kJywgZnVuY3Rpb24odGVzdCl7CisgICAgLy8gY2hl
Y2sgaWYgdGhlIHBsYW5lIGNyYXNoZWQKKyAgICB2YXIgY29sID0gLTEgPT0gY3Jhc2hlZAorICAg
ICAgPyB3aWR0aCAqICsrbiAvIHRvdGFsIHwgMAorICAgICAgOiBjcmFzaGVkOworCisgICAgLy8g
c2hvdyB0aGUgY3Jhc2gKKyAgICBpZiAoJ2ZhaWxlZCcgPT0gdGVzdC5zdGF0ZSkgeworICAgICAg
cGxhbmUgPSBjb2xvcigncGxhbmUgY3Jhc2gnLCAn4pyIJyk7CisgICAgICBjcmFzaGVkID0gY29s
OworICAgIH0KKworICAgIC8vIHJlbmRlciBsYW5kaW5nIHN0cmlwCisgICAgc3RyZWFtLndyaXRl
KCdcdTAwMWJbNEZcblxuJyk7CisgICAgc3RyZWFtLndyaXRlKHJ1bndheSgpKTsKKyAgICBzdHJl
YW0ud3JpdGUoJ1xuICAnKTsKKyAgICBzdHJlYW0ud3JpdGUoY29sb3IoJ3J1bndheScsIEFycmF5
KGNvbCkuam9pbign4ouFJykpKTsKKyAgICBzdHJlYW0ud3JpdGUocGxhbmUpCisgICAgc3RyZWFt
LndyaXRlKGNvbG9yKCdydW53YXknLCBBcnJheSh3aWR0aCAtIGNvbCkuam9pbign4ouFJykgKyAn
XG4nKSk7CisgICAgc3RyZWFtLndyaXRlKHJ1bndheSgpKTsKKyAgICBzdHJlYW0ud3JpdGUoJ1x1
MDAxYlswbScpOworICB9KTsKKworICBydW5uZXIub24oJ2VuZCcsIGZ1bmN0aW9uKCl7CisgICAg
Y3Vyc29yLnNob3coKTsKKyAgICBjb25zb2xlLmxvZygpOworICAgIHNlbGYuZXBpbG9ndWUoKTsK
KyAgfSk7Cit9CisKKy8qKgorICogSW5oZXJpdCBmcm9tIGBCYXNlLnByb3RvdHlwZWAuCisgKi8K
KworZnVuY3Rpb24gRigpe307CitGLnByb3RvdHlwZSA9IEJhc2UucHJvdG90eXBlOworTGFuZGlu
Zy5wcm90b3R5cGUgPSBuZXcgRjsKK0xhbmRpbmcucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTGFu
ZGluZzsKKworfSk7IC8vIG1vZHVsZTogcmVwb3J0ZXJzL2xhbmRpbmcuanMKKworcmVxdWlyZS5y
ZWdpc3RlcigicmVwb3J0ZXJzL2xpc3QuanMiLCBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIHJl
cXVpcmUpeworCisvKioKKyAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuCisgKi8KKwordmFyIEJhc2Ug
PSByZXF1aXJlKCcuL2Jhc2UnKQorICAsIGN1cnNvciA9IEJhc2UuY3Vyc29yCisgICwgY29sb3Ig
PSBCYXNlLmNvbG9yOworCisvKioKKyAqIEV4cG9zZSBgTGlzdGAuCisgKi8KKworZXhwb3J0cyA9
IG1vZHVsZS5leHBvcnRzID0gTGlzdDsKKworLyoqCisgKiBJbml0aWFsaXplIGEgbmV3IGBMaXN0
YCB0ZXN0IHJlcG9ydGVyLgorICoKKyAqIEBwYXJhbSB7UnVubmVyfSBydW5uZXIKKyAqIEBhcGkg
cHVibGljCisgKi8KKworZnVuY3Rpb24gTGlzdChydW5uZXIpIHsKKyAgQmFzZS5jYWxsKHRoaXMs
IHJ1bm5lcik7CisKKyAgdmFyIHNlbGYgPSB0aGlzCisgICAgLCBzdGF0cyA9IHRoaXMuc3RhdHMK
KyAgICAsIG4gPSAwOworCisgIHJ1bm5lci5vbignc3RhcnQnLCBmdW5jdGlvbigpeworICAgIGNv
bnNvbGUubG9nKCk7CisgIH0pOworCisgIHJ1bm5lci5vbigndGVzdCcsIGZ1bmN0aW9uKHRlc3Qp
eworICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGNvbG9yKCdwYXNzJywgJyAgICAnICsgdGVzdC5m
dWxsVGl0bGUoKSArICc6ICcpKTsKKyAgfSk7CisKKyAgcnVubmVyLm9uKCdwZW5kaW5nJywgZnVu
Y3Rpb24odGVzdCl7CisgICAgdmFyIGZtdCA9IGNvbG9yKCdjaGVja21hcmsnLCAnICAtJykKKyAg
ICAgICsgY29sb3IoJ3BlbmRpbmcnLCAnICVzJyk7CisgICAgY29uc29sZS5sb2coZm10LCB0ZXN0
LmZ1bGxUaXRsZSgpKTsKKyAgfSk7CisKKyAgcnVubmVyLm9uKCdwYXNzJywgZnVuY3Rpb24odGVz
dCl7CisgICAgdmFyIGZtdCA9IGNvbG9yKCdjaGVja21hcmsnLCAnICAnK0Jhc2Uuc3ltYm9scy5k
b3QpCisgICAgICArIGNvbG9yKCdwYXNzJywgJyAlczogJykKKyAgICAgICsgY29sb3IodGVzdC5z
cGVlZCwgJyVkbXMnKTsKKyAgICBjdXJzb3IuQ1IoKTsKKyAgICBjb25zb2xlLmxvZyhmbXQsIHRl
c3QuZnVsbFRpdGxlKCksIHRlc3QuZHVyYXRpb24pOworICB9KTsKKworICBydW5uZXIub24oJ2Zh
aWwnLCBmdW5jdGlvbih0ZXN0LCBlcnIpeworICAgIGN1cnNvci5DUigpOworICAgIGNvbnNvbGUu
bG9nKGNvbG9yKCdmYWlsJywgJyAgJWQpICVzJyksICsrbiwgdGVzdC5mdWxsVGl0bGUoKSk7Cisg
IH0pOworCisgIHJ1bm5lci5vbignZW5kJywgc2VsZi5lcGlsb2d1ZS5iaW5kKHNlbGYpKTsKK30K
KworLyoqCisgKiBJbmhlcml0IGZyb20gYEJhc2UucHJvdG90eXBlYC4KKyAqLworCitmdW5jdGlv
biBGKCl7fTsKK0YucHJvdG90eXBlID0gQmFzZS5wcm90b3R5cGU7CitMaXN0LnByb3RvdHlwZSA9
IG5ldyBGOworTGlzdC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMaXN0OworCisKK30pOyAvLyBt
b2R1bGU6IHJlcG9ydGVycy9saXN0LmpzCisKK3JlcXVpcmUucmVnaXN0ZXIoInJlcG9ydGVycy9t
YXJrZG93bi5qcyIsIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7CisvKioKKyAq
IE1vZHVsZSBkZXBlbmRlbmNpZXMuCisgKi8KKwordmFyIEJhc2UgPSByZXF1aXJlKCcuL2Jhc2Un
KQorICAsIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTsKKworLyoqCisgKiBFeHBvc2UgYE1h
cmtkb3duYC4KKyAqLworCitleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBNYXJrZG93bjsKKwor
LyoqCisgKiBJbml0aWFsaXplIGEgbmV3IGBNYXJrZG93bmAgcmVwb3J0ZXIuCisgKgorICogQHBh
cmFtIHtSdW5uZXJ9IHJ1bm5lcgorICogQGFwaSBwdWJsaWMKKyAqLworCitmdW5jdGlvbiBNYXJr
ZG93bihydW5uZXIpIHsKKyAgQmFzZS5jYWxsKHRoaXMsIHJ1bm5lcik7CisKKyAgdmFyIHNlbGYg
PSB0aGlzCisgICAgLCBzdGF0cyA9IHRoaXMuc3RhdHMKKyAgICAsIGxldmVsID0gMAorICAgICwg
YnVmID0gJyc7CisKKyAgZnVuY3Rpb24gdGl0bGUoc3RyKSB7CisgICAgcmV0dXJuIEFycmF5KGxl
dmVsKS5qb2luKCcjJykgKyAnICcgKyBzdHI7CisgIH0KKworICBmdW5jdGlvbiBpbmRlbnQoKSB7
CisgICAgcmV0dXJuIEFycmF5KGxldmVsKS5qb2luKCcgICcpOworICB9CisKKyAgZnVuY3Rpb24g
bWFwVE9DKHN1aXRlLCBvYmopIHsKKyAgICB2YXIgcmV0ID0gb2JqOworICAgIG9iaiA9IG9ialtz
dWl0ZS50aXRsZV0gPSBvYmpbc3VpdGUudGl0bGVdIHx8IHsgc3VpdGU6IHN1aXRlIH07CisgICAg
c3VpdGUuc3VpdGVzLmZvckVhY2goZnVuY3Rpb24oc3VpdGUpeworICAgICAgbWFwVE9DKHN1aXRl
LCBvYmopOworICAgIH0pOworICAgIHJldHVybiByZXQ7CisgIH0KKworICBmdW5jdGlvbiBzdHJp
bmdpZnlUT0Mob2JqLCBsZXZlbCkgeworICAgICsrbGV2ZWw7CisgICAgdmFyIGJ1ZiA9ICcnOwor
ICAgIHZhciBsaW5rOworICAgIGZvciAodmFyIGtleSBpbiBvYmopIHsKKyAgICAgIGlmICgnc3Vp
dGUnID09IGtleSkgY29udGludWU7CisgICAgICBpZiAoa2V5KSBsaW5rID0gJyAtIFsnICsga2V5
ICsgJ10oIycgKyB1dGlscy5zbHVnKG9ialtrZXldLnN1aXRlLmZ1bGxUaXRsZSgpKSArICcpXG4n
OworICAgICAgaWYgKGtleSkgYnVmICs9IEFycmF5KGxldmVsKS5qb2luKCcgICcpICsgbGluazsK
KyAgICAgIGJ1ZiArPSBzdHJpbmdpZnlUT0Mob2JqW2tleV0sIGxldmVsKTsKKyAgICB9CisgICAg
LS1sZXZlbDsKKyAgICByZXR1cm4gYnVmOworICB9CisKKyAgZnVuY3Rpb24gZ2VuZXJhdGVUT0Mo
c3VpdGUpIHsKKyAgICB2YXIgb2JqID0gbWFwVE9DKHN1aXRlLCB7fSk7CisgICAgcmV0dXJuIHN0
cmluZ2lmeVRPQyhvYmosIDApOworICB9CisKKyAgZ2VuZXJhdGVUT0MocnVubmVyLnN1aXRlKTsK
KworICBydW5uZXIub24oJ3N1aXRlJywgZnVuY3Rpb24oc3VpdGUpeworICAgICsrbGV2ZWw7Cisg
ICAgdmFyIHNsdWcgPSB1dGlscy5zbHVnKHN1aXRlLmZ1bGxUaXRsZSgpKTsKKyAgICBidWYgKz0g
JzxhIG5hbWU9IicgKyBzbHVnICsgJyI+PC9hPicgKyAnXG4nOworICAgIGJ1ZiArPSB0aXRsZShz
dWl0ZS50aXRsZSkgKyAnXG4nOworICB9KTsKKworICBydW5uZXIub24oJ3N1aXRlIGVuZCcsIGZ1
bmN0aW9uKHN1aXRlKXsKKyAgICAtLWxldmVsOworICB9KTsKKworICBydW5uZXIub24oJ3Bhc3Mn
LCBmdW5jdGlvbih0ZXN0KXsKKyAgICB2YXIgY29kZSA9IHV0aWxzLmNsZWFuKHRlc3QuZm4udG9T
dHJpbmcoKSk7CisgICAgYnVmICs9IHRlc3QudGl0bGUgKyAnLlxuJzsKKyAgICBidWYgKz0gJ1xu
YGBganNcbic7CisgICAgYnVmICs9IGNvZGUgKyAnXG4nOworICAgIGJ1ZiArPSAnYGBgXG5cbic7
CisgIH0pOworCisgIHJ1bm5lci5vbignZW5kJywgZnVuY3Rpb24oKXsKKyAgICBwcm9jZXNzLnN0
ZG91dC53cml0ZSgnIyBUT0NcbicpOworICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGdlbmVyYXRl
VE9DKHJ1bm5lci5zdWl0ZSkpOworICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGJ1Zik7CisgIH0p
OworfQorfSk7IC8vIG1vZHVsZTogcmVwb3J0ZXJzL21hcmtkb3duLmpzCisKK3JlcXVpcmUucmVn
aXN0ZXIoInJlcG9ydGVycy9taW4uanMiLCBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIHJlcXVp
cmUpeworCisvKioKKyAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuCisgKi8KKwordmFyIEJhc2UgPSBy
ZXF1aXJlKCcuL2Jhc2UnKTsKKworLyoqCisgKiBFeHBvc2UgYE1pbmAuCisgKi8KKworZXhwb3J0
cyA9IG1vZHVsZS5leHBvcnRzID0gTWluOworCisvKioKKyAqIEluaXRpYWxpemUgYSBuZXcgYE1p
bmAgbWluaW1hbCB0ZXN0IHJlcG9ydGVyIChiZXN0IHVzZWQgd2l0aCAtLXdhdGNoKS4KKyAqCisg
KiBAcGFyYW0ge1J1bm5lcn0gcnVubmVyCisgKiBAYXBpIHB1YmxpYworICovCisKK2Z1bmN0aW9u
IE1pbihydW5uZXIpIHsKKyAgQmFzZS5jYWxsKHRoaXMsIHJ1bm5lcik7CisKKyAgcnVubmVyLm9u
KCdzdGFydCcsIGZ1bmN0aW9uKCl7CisgICAgLy8gY2xlYXIgc2NyZWVuCisgICAgcHJvY2Vzcy5z
dGRvdXQud3JpdGUoJ1x1MDAxYlsySicpOworICAgIC8vIHNldCBjdXJzb3IgcG9zaXRpb24KKyAg
ICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnXHUwMDFiWzE7M0gnKTsKKyAgfSk7CisKKyAgcnVubmVy
Lm9uKCdlbmQnLCB0aGlzLmVwaWxvZ3VlLmJpbmQodGhpcykpOworfQorCisvKioKKyAqIEluaGVy
aXQgZnJvbSBgQmFzZS5wcm90b3R5cGVgLgorICovCisKK2Z1bmN0aW9uIEYoKXt9OworRi5wcm90
b3R5cGUgPSBCYXNlLnByb3RvdHlwZTsKK01pbi5wcm90b3R5cGUgPSBuZXcgRjsKK01pbi5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBNaW47CisKKworfSk7IC8vIG1vZHVsZTogcmVwb3J0ZXJzL21p
bi5qcworCityZXF1aXJlLnJlZ2lzdGVyKCJyZXBvcnRlcnMvbnlhbi5qcyIsIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7CisvKioKKyAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuCisg
Ki8KKwordmFyIEJhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKQorICAsIGNvbG9yID0gQmFzZS5jb2xv
cjsKKworLyoqCisgKiBFeHBvc2UgYERvdGAuCisgKi8KKworZXhwb3J0cyA9IG1vZHVsZS5leHBv
cnRzID0gTnlhbkNhdDsKKworLyoqCisgKiBJbml0aWFsaXplIGEgbmV3IGBEb3RgIG1hdHJpeCB0
ZXN0IHJlcG9ydGVyLgorICoKKyAqIEBwYXJhbSB7UnVubmVyfSBydW5uZXIKKyAqIEBhcGkgcHVi
bGljCisgKi8KKworZnVuY3Rpb24gTnlhbkNhdChydW5uZXIpIHsKKyAgQmFzZS5jYWxsKHRoaXMs
IHJ1bm5lcik7CisgIHZhciBzZWxmID0gdGhpcworICAgICwgc3RhdHMgPSB0aGlzLnN0YXRzCisg
ICAgLCB3aWR0aCA9IEJhc2Uud2luZG93LndpZHRoICogLjc1IHwgMAorICAgICwgcmFpbmJvd0Nv
bG9ycyA9IHRoaXMucmFpbmJvd0NvbG9ycyA9IHNlbGYuZ2VuZXJhdGVDb2xvcnMoKQorICAgICwg
Y29sb3JJbmRleCA9IHRoaXMuY29sb3JJbmRleCA9IDAKKyAgICAsIG51bWVyT2ZMaW5lcyA9IHRo
aXMubnVtYmVyT2ZMaW5lcyA9IDQKKyAgICAsIHRyYWplY3RvcmllcyA9IHRoaXMudHJhamVjdG9y
aWVzID0gW1tdLCBbXSwgW10sIFtdXQorICAgICwgbnlhbkNhdFdpZHRoID0gdGhpcy5ueWFuQ2F0
V2lkdGggPSAxMQorICAgICwgdHJhamVjdG9yeVdpZHRoTWF4ID0gdGhpcy50cmFqZWN0b3J5V2lk
dGhNYXggPSAod2lkdGggLSBueWFuQ2F0V2lkdGgpCisgICAgLCBzY29yZWJvYXJkV2lkdGggPSB0
aGlzLnNjb3JlYm9hcmRXaWR0aCA9IDUKKyAgICAsIHRpY2sgPSB0aGlzLnRpY2sgPSAwCisgICAg
LCBuID0gMDsKKworICBydW5uZXIub24oJ3N0YXJ0JywgZnVuY3Rpb24oKXsKKyAgICBCYXNlLmN1
cnNvci5oaWRlKCk7CisgICAgc2VsZi5kcmF3KCk7CisgIH0pOworCisgIHJ1bm5lci5vbigncGVu
ZGluZycsIGZ1bmN0aW9uKHRlc3QpeworICAgIHNlbGYuZHJhdygpOworICB9KTsKKworICBydW5u
ZXIub24oJ3Bhc3MnLCBmdW5jdGlvbih0ZXN0KXsKKyAgICBzZWxmLmRyYXcoKTsKKyAgfSk7CisK
KyAgcnVubmVyLm9uKCdmYWlsJywgZnVuY3Rpb24odGVzdCwgZXJyKXsKKyAgICBzZWxmLmRyYXco
KTsKKyAgfSk7CisKKyAgcnVubmVyLm9uKCdlbmQnLCBmdW5jdGlvbigpeworICAgIEJhc2UuY3Vy
c29yLnNob3coKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGYubnVtYmVyT2ZMaW5lczsg
aSsrKSB3cml0ZSgnXG4nKTsKKyAgICBzZWxmLmVwaWxvZ3VlKCk7CisgIH0pOworfQorCisvKioK
KyAqIERyYXcgdGhlIG55YW4gY2F0CisgKgorICogQGFwaSBwcml2YXRlCisgKi8KKworTnlhbkNh
dC5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKCl7CisgIHRoaXMuYXBwZW5kUmFpbmJvdygpOwor
ICB0aGlzLmRyYXdTY29yZWJvYXJkKCk7CisgIHRoaXMuZHJhd1JhaW5ib3coKTsKKyAgdGhpcy5k
cmF3TnlhbkNhdCgpOworICB0aGlzLnRpY2sgPSAhdGhpcy50aWNrOworfTsKKworLyoqCisgKiBE
cmF3IHRoZSAic2NvcmVib2FyZCIgc2hvd2luZyB0aGUgbnVtYmVyCisgKiBvZiBwYXNzZXMsIGZh
aWx1cmVzIGFuZCBwZW5kaW5nIHRlc3RzLgorICoKKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK055
YW5DYXQucHJvdG90eXBlLmRyYXdTY29yZWJvYXJkID0gZnVuY3Rpb24oKXsKKyAgdmFyIHN0YXRz
ID0gdGhpcy5zdGF0czsKKyAgdmFyIGNvbG9ycyA9IEJhc2UuY29sb3JzOworCisgIGZ1bmN0aW9u
IGRyYXcoY29sb3IsIG4pIHsKKyAgICB3cml0ZSgnICcpOworICAgIHdyaXRlKCdcdTAwMWJbJyAr
IGNvbG9yICsgJ20nICsgbiArICdcdTAwMWJbMG0nKTsKKyAgICB3cml0ZSgnXG4nKTsKKyAgfQor
CisgIGRyYXcoY29sb3JzLmdyZWVuLCBzdGF0cy5wYXNzZXMpOworICBkcmF3KGNvbG9ycy5mYWls
LCBzdGF0cy5mYWlsdXJlcyk7CisgIGRyYXcoY29sb3JzLnBlbmRpbmcsIHN0YXRzLnBlbmRpbmcp
OworICB3cml0ZSgnXG4nKTsKKworICB0aGlzLmN1cnNvclVwKHRoaXMubnVtYmVyT2ZMaW5lcyk7
Cit9OworCisvKioKKyAqIEFwcGVuZCB0aGUgcmFpbmJvdy4KKyAqCisgKiBAYXBpIHByaXZhdGUK
KyAqLworCitOeWFuQ2F0LnByb3RvdHlwZS5hcHBlbmRSYWluYm93ID0gZnVuY3Rpb24oKXsKKyAg
dmFyIHNlZ21lbnQgPSB0aGlzLnRpY2sgPyAnXycgOiAnLSc7CisgIHZhciByYWluYm93aWZpZWQg
PSB0aGlzLnJhaW5ib3dpZnkoc2VnbWVudCk7CisKKyAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRl
eCA8IHRoaXMubnVtYmVyT2ZMaW5lczsgaW5kZXgrKykgeworICAgIHZhciB0cmFqZWN0b3J5ID0g
dGhpcy50cmFqZWN0b3JpZXNbaW5kZXhdOworICAgIGlmICh0cmFqZWN0b3J5Lmxlbmd0aCA+PSB0
aGlzLnRyYWplY3RvcnlXaWR0aE1heCkgdHJhamVjdG9yeS5zaGlmdCgpOworICAgIHRyYWplY3Rv
cnkucHVzaChyYWluYm93aWZpZWQpOworICB9Cit9OworCisvKioKKyAqIERyYXcgdGhlIHJhaW5i
b3cuCisgKgorICogQGFwaSBwcml2YXRlCisgKi8KKworTnlhbkNhdC5wcm90b3R5cGUuZHJhd1Jh
aW5ib3cgPSBmdW5jdGlvbigpeworICB2YXIgc2VsZiA9IHRoaXM7CisKKyAgdGhpcy50cmFqZWN0
b3JpZXMuZm9yRWFjaChmdW5jdGlvbihsaW5lLCBpbmRleCkgeworICAgIHdyaXRlKCdcdTAwMWJb
JyArIHNlbGYuc2NvcmVib2FyZFdpZHRoICsgJ0MnKTsKKyAgICB3cml0ZShsaW5lLmpvaW4oJycp
KTsKKyAgICB3cml0ZSgnXG4nKTsKKyAgfSk7CisKKyAgdGhpcy5jdXJzb3JVcCh0aGlzLm51bWJl
ck9mTGluZXMpOworfTsKKworLyoqCisgKiBEcmF3IHRoZSBueWFuIGNhdAorICoKKyAqIEBhcGkg
cHJpdmF0ZQorICovCisKK055YW5DYXQucHJvdG90eXBlLmRyYXdOeWFuQ2F0ID0gZnVuY3Rpb24o
KSB7CisgIHZhciBzZWxmID0gdGhpczsKKyAgdmFyIHN0YXJ0V2lkdGggPSB0aGlzLnNjb3JlYm9h
cmRXaWR0aCArIHRoaXMudHJhamVjdG9yaWVzWzBdLmxlbmd0aDsKKyAgdmFyIGNvbG9yID0gJ1x1
MDAxYlsnICsgc3RhcnRXaWR0aCArICdDJzsKKyAgdmFyIHBhZGRpbmcgPSAnJzsKKworICB3cml0
ZShjb2xvcik7CisgIHdyaXRlKCdfLC0tLS0tLSwnKTsKKyAgd3JpdGUoJ1xuJyk7CisKKyAgd3Jp
dGUoY29sb3IpOworICBwYWRkaW5nID0gc2VsZi50aWNrID8gJyAgJyA6ICcgICAnOworICB3cml0
ZSgnX3wnICsgcGFkZGluZyArICcvXFxfL1xcICcpOworICB3cml0ZSgnXG4nKTsKKworICB3cml0
ZShjb2xvcik7CisgIHBhZGRpbmcgPSBzZWxmLnRpY2sgPyAnXycgOiAnX18nOworICB2YXIgdGFp
bCA9IHNlbGYudGljayA/ICd+JyA6ICdeJzsKKyAgdmFyIGZhY2U7CisgIHdyaXRlKHRhaWwgKyAn
fCcgKyBwYWRkaW5nICsgdGhpcy5mYWNlKCkgKyAnICcpOworICB3cml0ZSgnXG4nKTsKKworICB3
cml0ZShjb2xvcik7CisgIHBhZGRpbmcgPSBzZWxmLnRpY2sgPyAnICcgOiAnICAnOworICB3cml0
ZShwYWRkaW5nICsgJyIiICAiIiAnKTsKKyAgd3JpdGUoJ1xuJyk7CisKKyAgdGhpcy5jdXJzb3JV
cCh0aGlzLm51bWJlck9mTGluZXMpOworfTsKKworLyoqCisgKiBEcmF3IG55YW4gY2F0IGZhY2Uu
CisgKgorICogQHJldHVybiB7U3RyaW5nfQorICogQGFwaSBwcml2YXRlCisgKi8KKworTnlhbkNh
dC5wcm90b3R5cGUuZmFjZSA9IGZ1bmN0aW9uKCkgeworICB2YXIgc3RhdHMgPSB0aGlzLnN0YXRz
OworICBpZiAoc3RhdHMuZmFpbHVyZXMpIHsKKyAgICByZXR1cm4gJyggeCAueCknOworICB9IGVs
c2UgaWYgKHN0YXRzLnBlbmRpbmcpIHsKKyAgICByZXR1cm4gJyggbyAubyknOworICB9IGVsc2Ug
aWYoc3RhdHMucGFzc2VzKSB7CisgICAgcmV0dXJuICcoIF4gLl4pJzsKKyAgfSBlbHNlIHsKKyAg
ICByZXR1cm4gJyggLSAuLSknOworICB9Cit9CisKKy8qKgorICogTW92ZSBjdXJzb3IgdXAgYG5g
LgorICoKKyAqIEBwYXJhbSB7TnVtYmVyfSBuCisgKiBAYXBpIHByaXZhdGUKKyAqLworCitOeWFu
Q2F0LnByb3RvdHlwZS5jdXJzb3JVcCA9IGZ1bmN0aW9uKG4pIHsKKyAgd3JpdGUoJ1x1MDAxYlsn
ICsgbiArICdBJyk7Cit9OworCisvKioKKyAqIE1vdmUgY3Vyc29yIGRvd24gYG5gLgorICoKKyAq
IEBwYXJhbSB7TnVtYmVyfSBuCisgKiBAYXBpIHByaXZhdGUKKyAqLworCitOeWFuQ2F0LnByb3Rv
dHlwZS5jdXJzb3JEb3duID0gZnVuY3Rpb24obikgeworICB3cml0ZSgnXHUwMDFiWycgKyBuICsg
J0InKTsKK307CisKKy8qKgorICogR2VuZXJhdGUgcmFpbmJvdyBjb2xvcnMuCisgKgorICogQHJl
dHVybiB7QXJyYXl9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitOeWFuQ2F0LnByb3RvdHlwZS5n
ZW5lcmF0ZUNvbG9ycyA9IGZ1bmN0aW9uKCl7CisgIHZhciBjb2xvcnMgPSBbXTsKKworICBmb3Ig
KHZhciBpID0gMDsgaSA8ICg2ICogNyk7IGkrKykgeworICAgIHZhciBwaTMgPSBNYXRoLmZsb29y
KE1hdGguUEkgLyAzKTsKKyAgICB2YXIgbiA9IChpICogKDEuMCAvIDYpKTsKKyAgICB2YXIgciA9
IE1hdGguZmxvb3IoMyAqIE1hdGguc2luKG4pICsgMyk7CisgICAgdmFyIGcgPSBNYXRoLmZsb29y
KDMgKiBNYXRoLnNpbihuICsgMiAqIHBpMykgKyAzKTsKKyAgICB2YXIgYiA9IE1hdGguZmxvb3Io
MyAqIE1hdGguc2luKG4gKyA0ICogcGkzKSArIDMpOworICAgIGNvbG9ycy5wdXNoKDM2ICogciAr
IDYgKiBnICsgYiArIDE2KTsKKyAgfQorCisgIHJldHVybiBjb2xvcnM7Cit9OworCisvKioKKyAq
IEFwcGx5IHJhaW5ib3cgdG8gdGhlIGdpdmVuIGBzdHJgLgorICoKKyAqIEBwYXJhbSB7U3RyaW5n
fSBzdHIKKyAqIEByZXR1cm4ge1N0cmluZ30KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK055YW5D
YXQucHJvdG90eXBlLnJhaW5ib3dpZnkgPSBmdW5jdGlvbihzdHIpeworICB2YXIgY29sb3IgPSB0
aGlzLnJhaW5ib3dDb2xvcnNbdGhpcy5jb2xvckluZGV4ICUgdGhpcy5yYWluYm93Q29sb3JzLmxl
bmd0aF07CisgIHRoaXMuY29sb3JJbmRleCArPSAxOworICByZXR1cm4gJ1x1MDAxYlszODs1Oycg
KyBjb2xvciArICdtJyArIHN0ciArICdcdTAwMWJbMG0nOworfTsKKworLyoqCisgKiBTdGRvdXQg
aGVscGVyLgorICovCisKK2Z1bmN0aW9uIHdyaXRlKHN0cmluZykgeworICBwcm9jZXNzLnN0ZG91
dC53cml0ZShzdHJpbmcpOworfQorCisvKioKKyAqIEluaGVyaXQgZnJvbSBgQmFzZS5wcm90b3R5
cGVgLgorICovCisKK2Z1bmN0aW9uIEYoKXt9OworRi5wcm90b3R5cGUgPSBCYXNlLnByb3RvdHlw
ZTsKK055YW5DYXQucHJvdG90eXBlID0gbmV3IEY7CitOeWFuQ2F0LnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IE55YW5DYXQ7CisKKworfSk7IC8vIG1vZHVsZTogcmVwb3J0ZXJzL255YW4uanMKKwor
cmVxdWlyZS5yZWdpc3RlcigicmVwb3J0ZXJzL3Byb2dyZXNzLmpzIiwgZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCByZXF1aXJlKXsKKy8qKgorICogTW9kdWxlIGRlcGVuZGVuY2llcy4KKyAqLwor
Cit2YXIgQmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpCisgICwgY3Vyc29yID0gQmFzZS5jdXJzb3IK
KyAgLCBjb2xvciA9IEJhc2UuY29sb3I7CisKKy8qKgorICogRXhwb3NlIGBQcm9ncmVzc2AuCisg
Ki8KKworZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gUHJvZ3Jlc3M7CisKKy8qKgorICogR2Vu
ZXJhbCBwcm9ncmVzcyBiYXIgY29sb3IuCisgKi8KKworQmFzZS5jb2xvcnMucHJvZ3Jlc3MgPSA5
MDsKKworLyoqCisgKiBJbml0aWFsaXplIGEgbmV3IGBQcm9ncmVzc2AgYmFyIHRlc3QgcmVwb3J0
ZXIuCisgKgorICogQHBhcmFtIHtSdW5uZXJ9IHJ1bm5lcgorICogQHBhcmFtIHtPYmplY3R9IG9w
dGlvbnMKKyAqIEBhcGkgcHVibGljCisgKi8KKworZnVuY3Rpb24gUHJvZ3Jlc3MocnVubmVyLCBv
cHRpb25zKSB7CisgIEJhc2UuY2FsbCh0aGlzLCBydW5uZXIpOworCisgIHZhciBzZWxmID0gdGhp
cworICAgICwgb3B0aW9ucyA9IG9wdGlvbnMgfHwge30KKyAgICAsIHN0YXRzID0gdGhpcy5zdGF0
cworICAgICwgd2lkdGggPSBCYXNlLndpbmRvdy53aWR0aCAqIC41MCB8IDAKKyAgICAsIHRvdGFs
ID0gcnVubmVyLnRvdGFsCisgICAgLCBjb21wbGV0ZSA9IDAKKyAgICAsIG1heCA9IE1hdGgubWF4
CisgICAgLCBsYXN0TiA9IC0xOworCisgIC8vIGRlZmF1bHQgY2hhcnMKKyAgb3B0aW9ucy5vcGVu
ID0gb3B0aW9ucy5vcGVuIHx8ICdbJzsKKyAgb3B0aW9ucy5jb21wbGV0ZSA9IG9wdGlvbnMuY29t
cGxldGUgfHwgJ+KWrCc7CisgIG9wdGlvbnMuaW5jb21wbGV0ZSA9IG9wdGlvbnMuaW5jb21wbGV0
ZSB8fCBCYXNlLnN5bWJvbHMuZG90OworICBvcHRpb25zLmNsb3NlID0gb3B0aW9ucy5jbG9zZSB8
fCAnXSc7CisgIG9wdGlvbnMudmVyYm9zZSA9IGZhbHNlOworCisgIC8vIHRlc3RzIHN0YXJ0ZWQK
KyAgcnVubmVyLm9uKCdzdGFydCcsIGZ1bmN0aW9uKCl7CisgICAgY29uc29sZS5sb2coKTsKKyAg
ICBjdXJzb3IuaGlkZSgpOworICB9KTsKKworICAvLyB0ZXN0cyBjb21wbGV0ZQorICBydW5uZXIu
b24oJ3Rlc3QgZW5kJywgZnVuY3Rpb24oKXsKKyAgICBjb21wbGV0ZSsrOworICAgIHZhciBpbmNv
bXBsZXRlID0gdG90YWwgLSBjb21wbGV0ZQorICAgICAgLCBwZXJjZW50ID0gY29tcGxldGUgLyB0
b3RhbAorICAgICAgLCBuID0gd2lkdGggKiBwZXJjZW50IHwgMAorICAgICAgLCBpID0gd2lkdGgg
LSBuOworCisgICAgaWYgKGxhc3ROID09PSBuICYmICFvcHRpb25zLnZlcmJvc2UpIHsKKyAgICAg
IC8vIERvbid0IHJlLXJlbmRlciB0aGUgbGluZSBpZiBpdCBoYXNuJ3QgY2hhbmdlZAorICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBsYXN0TiA9IG47CisKKyAgICBjdXJzb3IuQ1IoKTsKKyAgICBw
cm9jZXNzLnN0ZG91dC53cml0ZSgnXHUwMDFiW0onKTsKKyAgICBwcm9jZXNzLnN0ZG91dC53cml0
ZShjb2xvcigncHJvZ3Jlc3MnLCAnICAnICsgb3B0aW9ucy5vcGVuKSk7CisgICAgcHJvY2Vzcy5z
dGRvdXQud3JpdGUoQXJyYXkobikuam9pbihvcHRpb25zLmNvbXBsZXRlKSk7CisgICAgcHJvY2Vz
cy5zdGRvdXQud3JpdGUoQXJyYXkoaSkuam9pbihvcHRpb25zLmluY29tcGxldGUpKTsKKyAgICBw
cm9jZXNzLnN0ZG91dC53cml0ZShjb2xvcigncHJvZ3Jlc3MnLCBvcHRpb25zLmNsb3NlKSk7Cisg
ICAgaWYgKG9wdGlvbnMudmVyYm9zZSkgeworICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoY29s
b3IoJ3Byb2dyZXNzJywgJyAnICsgY29tcGxldGUgKyAnIG9mICcgKyB0b3RhbCkpOworICAgIH0K
KyAgfSk7CisKKyAgLy8gdGVzdHMgYXJlIGNvbXBsZXRlLCBvdXRwdXQgc29tZSBzdGF0cworICAv
LyBhbmQgdGhlIGZhaWx1cmVzIGlmIGFueQorICBydW5uZXIub24oJ2VuZCcsIGZ1bmN0aW9uKCl7
CisgICAgY3Vyc29yLnNob3coKTsKKyAgICBjb25zb2xlLmxvZygpOworICAgIHNlbGYuZXBpbG9n
dWUoKTsKKyAgfSk7Cit9CisKKy8qKgorICogSW5oZXJpdCBmcm9tIGBCYXNlLnByb3RvdHlwZWAu
CisgKi8KKworZnVuY3Rpb24gRigpe307CitGLnByb3RvdHlwZSA9IEJhc2UucHJvdG90eXBlOwor
UHJvZ3Jlc3MucHJvdG90eXBlID0gbmV3IEY7CitQcm9ncmVzcy5wcm90b3R5cGUuY29uc3RydWN0
b3IgPSBQcm9ncmVzczsKKworCit9KTsgLy8gbW9kdWxlOiByZXBvcnRlcnMvcHJvZ3Jlc3MuanMK
KworcmVxdWlyZS5yZWdpc3RlcigicmVwb3J0ZXJzL3NwZWMuanMiLCBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIHJlcXVpcmUpeworCisvKioKKyAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuCisgKi8K
KwordmFyIEJhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKQorICAsIGN1cnNvciA9IEJhc2UuY3Vyc29y
CisgICwgY29sb3IgPSBCYXNlLmNvbG9yOworCisvKioKKyAqIEV4cG9zZSBgU3BlY2AuCisgKi8K
KworZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gU3BlYzsKKworLyoqCisgKiBJbml0aWFsaXpl
IGEgbmV3IGBTcGVjYCB0ZXN0IHJlcG9ydGVyLgorICoKKyAqIEBwYXJhbSB7UnVubmVyfSBydW5u
ZXIKKyAqIEBhcGkgcHVibGljCisgKi8KKworZnVuY3Rpb24gU3BlYyhydW5uZXIpIHsKKyAgQmFz
ZS5jYWxsKHRoaXMsIHJ1bm5lcik7CisKKyAgdmFyIHNlbGYgPSB0aGlzCisgICAgLCBzdGF0cyA9
IHRoaXMuc3RhdHMKKyAgICAsIGluZGVudHMgPSAwCisgICAgLCBuID0gMDsKKworICBmdW5jdGlv
biBpbmRlbnQoKSB7CisgICAgcmV0dXJuIEFycmF5KGluZGVudHMpLmpvaW4oJyAgJykKKyAgfQor
CisgIHJ1bm5lci5vbignc3RhcnQnLCBmdW5jdGlvbigpeworICAgIGNvbnNvbGUubG9nKCk7Cisg
IH0pOworCisgIHJ1bm5lci5vbignc3VpdGUnLCBmdW5jdGlvbihzdWl0ZSl7CisgICAgKytpbmRl
bnRzOworICAgIGNvbnNvbGUubG9nKGNvbG9yKCdzdWl0ZScsICclcyVzJyksIGluZGVudCgpLCBz
dWl0ZS50aXRsZSk7CisgIH0pOworCisgIHJ1bm5lci5vbignc3VpdGUgZW5kJywgZnVuY3Rpb24o
c3VpdGUpeworICAgIC0taW5kZW50czsKKyAgICBpZiAoMSA9PSBpbmRlbnRzKSBjb25zb2xlLmxv
ZygpOworICB9KTsKKworICBydW5uZXIub24oJ3BlbmRpbmcnLCBmdW5jdGlvbih0ZXN0KXsKKyAg
ICB2YXIgZm10ID0gaW5kZW50KCkgKyBjb2xvcigncGVuZGluZycsICcgIC0gJXMnKTsKKyAgICBj
b25zb2xlLmxvZyhmbXQsIHRlc3QudGl0bGUpOworICB9KTsKKworICBydW5uZXIub24oJ3Bhc3Mn
LCBmdW5jdGlvbih0ZXN0KXsKKyAgICBpZiAoJ2Zhc3QnID09IHRlc3Quc3BlZWQpIHsKKyAgICAg
IHZhciBmbXQgPSBpbmRlbnQoKQorICAgICAgICArIGNvbG9yKCdjaGVja21hcmsnLCAnICAnICsg
QmFzZS5zeW1ib2xzLm9rKQorICAgICAgICArIGNvbG9yKCdwYXNzJywgJyAlcyAnKTsKKyAgICAg
IGN1cnNvci5DUigpOworICAgICAgY29uc29sZS5sb2coZm10LCB0ZXN0LnRpdGxlKTsKKyAgICB9
IGVsc2UgeworICAgICAgdmFyIGZtdCA9IGluZGVudCgpCisgICAgICAgICsgY29sb3IoJ2NoZWNr
bWFyaycsICcgICcgKyBCYXNlLnN5bWJvbHMub2spCisgICAgICAgICsgY29sb3IoJ3Bhc3MnLCAn
ICVzICcpCisgICAgICAgICsgY29sb3IodGVzdC5zcGVlZCwgJyglZG1zKScpOworICAgICAgY3Vy
c29yLkNSKCk7CisgICAgICBjb25zb2xlLmxvZyhmbXQsIHRlc3QudGl0bGUsIHRlc3QuZHVyYXRp
b24pOworICAgIH0KKyAgfSk7CisKKyAgcnVubmVyLm9uKCdmYWlsJywgZnVuY3Rpb24odGVzdCwg
ZXJyKXsKKyAgICBjdXJzb3IuQ1IoKTsKKyAgICBjb25zb2xlLmxvZyhpbmRlbnQoKSArIGNvbG9y
KCdmYWlsJywgJyAgJWQpICVzJyksICsrbiwgdGVzdC50aXRsZSk7CisgIH0pOworCisgIHJ1bm5l
ci5vbignZW5kJywgc2VsZi5lcGlsb2d1ZS5iaW5kKHNlbGYpKTsKK30KKworLyoqCisgKiBJbmhl
cml0IGZyb20gYEJhc2UucHJvdG90eXBlYC4KKyAqLworCitmdW5jdGlvbiBGKCl7fTsKK0YucHJv
dG90eXBlID0gQmFzZS5wcm90b3R5cGU7CitTcGVjLnByb3RvdHlwZSA9IG5ldyBGOworU3BlYy5w
cm90b3R5cGUuY29uc3RydWN0b3IgPSBTcGVjOworCisKK30pOyAvLyBtb2R1bGU6IHJlcG9ydGVy
cy9zcGVjLmpzCisKK3JlcXVpcmUucmVnaXN0ZXIoInJlcG9ydGVycy90YXAuanMiLCBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUpeworCisvKioKKyAqIE1vZHVsZSBkZXBlbmRlbmNp
ZXMuCisgKi8KKwordmFyIEJhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKQorICAsIGN1cnNvciA9IEJh
c2UuY3Vyc29yCisgICwgY29sb3IgPSBCYXNlLmNvbG9yOworCisvKioKKyAqIEV4cG9zZSBgVEFQ
YC4KKyAqLworCitleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBUQVA7CisKKy8qKgorICogSW5p
dGlhbGl6ZSBhIG5ldyBgVEFQYCByZXBvcnRlci4KKyAqCisgKiBAcGFyYW0ge1J1bm5lcn0gcnVu
bmVyCisgKiBAYXBpIHB1YmxpYworICovCisKK2Z1bmN0aW9uIFRBUChydW5uZXIpIHsKKyAgQmFz
ZS5jYWxsKHRoaXMsIHJ1bm5lcik7CisKKyAgdmFyIHNlbGYgPSB0aGlzCisgICAgLCBzdGF0cyA9
IHRoaXMuc3RhdHMKKyAgICAsIG4gPSAxCisgICAgLCBwYXNzZXMgPSAwCisgICAgLCBmYWlsdXJl
cyA9IDA7CisKKyAgcnVubmVyLm9uKCdzdGFydCcsIGZ1bmN0aW9uKCl7CisgICAgdmFyIHRvdGFs
ID0gcnVubmVyLmdyZXBUb3RhbChydW5uZXIuc3VpdGUpOworICAgIGNvbnNvbGUubG9nKCclZC4u
JWQnLCAxLCB0b3RhbCk7CisgIH0pOworCisgIHJ1bm5lci5vbigndGVzdCBlbmQnLCBmdW5jdGlv
bigpeworICAgICsrbjsKKyAgfSk7CisKKyAgcnVubmVyLm9uKCdwZW5kaW5nJywgZnVuY3Rpb24o
dGVzdCl7CisgICAgY29uc29sZS5sb2coJ29rICVkICVzICMgU0tJUCAtJywgbiwgdGl0bGUodGVz
dCkpOworICB9KTsKKworICBydW5uZXIub24oJ3Bhc3MnLCBmdW5jdGlvbih0ZXN0KXsKKyAgICBw
YXNzZXMrKzsKKyAgICBjb25zb2xlLmxvZygnb2sgJWQgJXMnLCBuLCB0aXRsZSh0ZXN0KSk7Cisg
IH0pOworCisgIHJ1bm5lci5vbignZmFpbCcsIGZ1bmN0aW9uKHRlc3QsIGVycil7CisgICAgZmFp
bHVyZXMrKzsKKyAgICBjb25zb2xlLmxvZygnbm90IG9rICVkICVzJywgbiwgdGl0bGUodGVzdCkp
OworICAgIGlmIChlcnIuc3RhY2spIGNvbnNvbGUubG9nKGVyci5zdGFjay5yZXBsYWNlKC9eL2dt
LCAnICAnKSk7CisgIH0pOworCisgIHJ1bm5lci5vbignZW5kJywgZnVuY3Rpb24oKXsKKyAgICBj
b25zb2xlLmxvZygnIyB0ZXN0cyAnICsgKHBhc3NlcyArIGZhaWx1cmVzKSk7CisgICAgY29uc29s
ZS5sb2coJyMgcGFzcyAnICsgcGFzc2VzKTsKKyAgICBjb25zb2xlLmxvZygnIyBmYWlsICcgKyBm
YWlsdXJlcyk7CisgIH0pOworfQorCisvKioKKyAqIFJldHVybiBhIFRBUC1zYWZlIHRpdGxlIG9m
IGB0ZXN0YAorICoKKyAqIEBwYXJhbSB7T2JqZWN0fSB0ZXN0CisgKiBAcmV0dXJuIHtTdHJpbmd9
CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitmdW5jdGlvbiB0aXRsZSh0ZXN0KSB7CisgIHJldHVy
biB0ZXN0LmZ1bGxUaXRsZSgpLnJlcGxhY2UoLyMvZywgJycpOworfQorCit9KTsgLy8gbW9kdWxl
OiByZXBvcnRlcnMvdGFwLmpzCisKK3JlcXVpcmUucmVnaXN0ZXIoInJlcG9ydGVycy94dW5pdC5q
cyIsIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7CisKKy8qKgorICogTW9kdWxl
IGRlcGVuZGVuY2llcy4KKyAqLworCit2YXIgQmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpCisgICwg
dXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpCisgICwgZXNjYXBlID0gdXRpbHMuZXNjYXBlOwor
CisvKioKKyAqIFNhdmUgdGltZXIgcmVmZXJlbmNlcyB0byBhdm9pZCBTaW5vbiBpbnRlcmZlcmlu
ZyAoc2VlIEdILTIzNykuCisgKi8KKwordmFyIERhdGUgPSBnbG9iYWwuRGF0ZQorICAsIHNldFRp
bWVvdXQgPSBnbG9iYWwuc2V0VGltZW91dAorICAsIHNldEludGVydmFsID0gZ2xvYmFsLnNldElu
dGVydmFsCisgICwgY2xlYXJUaW1lb3V0ID0gZ2xvYmFsLmNsZWFyVGltZW91dAorICAsIGNsZWFy
SW50ZXJ2YWwgPSBnbG9iYWwuY2xlYXJJbnRlcnZhbDsKKworLyoqCisgKiBFeHBvc2UgYFhVbml0
YC4KKyAqLworCitleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBYVW5pdDsKKworLyoqCisgKiBJ
bml0aWFsaXplIGEgbmV3IGBYVW5pdGAgcmVwb3J0ZXIuCisgKgorICogQHBhcmFtIHtSdW5uZXJ9
IHJ1bm5lcgorICogQGFwaSBwdWJsaWMKKyAqLworCitmdW5jdGlvbiBYVW5pdChydW5uZXIpIHsK
KyAgQmFzZS5jYWxsKHRoaXMsIHJ1bm5lcik7CisgIHZhciBzdGF0cyA9IHRoaXMuc3RhdHMKKyAg
ICAsIHRlc3RzID0gW10KKyAgICAsIHNlbGYgPSB0aGlzOworCisgIHJ1bm5lci5vbigncGVuZGlu
ZycsIGZ1bmN0aW9uKHRlc3QpeworICAgIHRlc3RzLnB1c2godGVzdCk7CisgIH0pOworCisgIHJ1
bm5lci5vbigncGFzcycsIGZ1bmN0aW9uKHRlc3QpeworICAgIHRlc3RzLnB1c2godGVzdCk7Cisg
IH0pOworCisgIHJ1bm5lci5vbignZmFpbCcsIGZ1bmN0aW9uKHRlc3QpeworICAgIHRlc3RzLnB1
c2godGVzdCk7CisgIH0pOworCisgIHJ1bm5lci5vbignZW5kJywgZnVuY3Rpb24oKXsKKyAgICBj
b25zb2xlLmxvZyh0YWcoJ3Rlc3RzdWl0ZScsIHsKKyAgICAgICAgbmFtZTogJ01vY2hhIFRlc3Rz
JworICAgICAgLCB0ZXN0czogc3RhdHMudGVzdHMKKyAgICAgICwgZmFpbHVyZXM6IHN0YXRzLmZh
aWx1cmVzCisgICAgICAsIGVycm9yczogc3RhdHMuZmFpbHVyZXMKKyAgICAgICwgc2tpcHBlZDog
c3RhdHMudGVzdHMgLSBzdGF0cy5mYWlsdXJlcyAtIHN0YXRzLnBhc3NlcworICAgICAgLCB0aW1l
c3RhbXA6IChuZXcgRGF0ZSkudG9VVENTdHJpbmcoKQorICAgICAgLCB0aW1lOiAoc3RhdHMuZHVy
YXRpb24gLyAxMDAwKSB8fCAwCisgICAgfSwgZmFsc2UpKTsKKworICAgIHRlc3RzLmZvckVhY2go
dGVzdCk7CisgICAgY29uc29sZS5sb2coJzwvdGVzdHN1aXRlPicpOworICB9KTsKK30KKworLyoq
CisgKiBJbmhlcml0IGZyb20gYEJhc2UucHJvdG90eXBlYC4KKyAqLworCitmdW5jdGlvbiBGKCl7
fTsKK0YucHJvdG90eXBlID0gQmFzZS5wcm90b3R5cGU7CitYVW5pdC5wcm90b3R5cGUgPSBuZXcg
RjsKK1hVbml0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFhVbml0OworCisKKy8qKgorICogT3V0
cHV0IHRhZyBmb3IgdGhlIGdpdmVuIGB0ZXN0LmAKKyAqLworCitmdW5jdGlvbiB0ZXN0KHRlc3Qp
IHsKKyAgdmFyIGF0dHJzID0geworICAgICAgY2xhc3NuYW1lOiB0ZXN0LnBhcmVudC5mdWxsVGl0
bGUoKQorICAgICwgbmFtZTogdGVzdC50aXRsZQorICAgICwgdGltZTogKHRlc3QuZHVyYXRpb24g
LyAxMDAwKSB8fCAwCisgIH07CisKKyAgaWYgKCdmYWlsZWQnID09IHRlc3Quc3RhdGUpIHsKKyAg
ICB2YXIgZXJyID0gdGVzdC5lcnI7CisgICAgY29uc29sZS5sb2codGFnKCd0ZXN0Y2FzZScsIGF0
dHJzLCBmYWxzZSwgdGFnKCdmYWlsdXJlJywge30sIGZhbHNlLCBjZGF0YShlc2NhcGUoZXJyLm1l
c3NhZ2UpICsgIlxuIiArIGVyci5zdGFjaykpKSk7CisgIH0gZWxzZSBpZiAodGVzdC5wZW5kaW5n
KSB7CisgICAgY29uc29sZS5sb2codGFnKCd0ZXN0Y2FzZScsIGF0dHJzLCBmYWxzZSwgdGFnKCdz
a2lwcGVkJywge30sIHRydWUpKSk7CisgIH0gZWxzZSB7CisgICAgY29uc29sZS5sb2codGFnKCd0
ZXN0Y2FzZScsIGF0dHJzLCB0cnVlKSApOworICB9Cit9CisKKy8qKgorICogSFRNTCB0YWcgaGVs
cGVyLgorICovCisKK2Z1bmN0aW9uIHRhZyhuYW1lLCBhdHRycywgY2xvc2UsIGNvbnRlbnQpIHsK
KyAgdmFyIGVuZCA9IGNsb3NlID8gJy8+JyA6ICc+JworICAgICwgcGFpcnMgPSBbXQorICAgICwg
dGFnOworCisgIGZvciAodmFyIGtleSBpbiBhdHRycykgeworICAgIHBhaXJzLnB1c2goa2V5ICsg
Jz0iJyArIGVzY2FwZShhdHRyc1trZXldKSArICciJyk7CisgIH0KKworICB0YWcgPSAnPCcgKyBu
YW1lICsgKHBhaXJzLmxlbmd0aCA/ICcgJyArIHBhaXJzLmpvaW4oJyAnKSA6ICcnKSArIGVuZDsK
KyAgaWYgKGNvbnRlbnQpIHRhZyArPSBjb250ZW50ICsgJzwvJyArIG5hbWUgKyBlbmQ7CisgIHJl
dHVybiB0YWc7Cit9CisKKy8qKgorICogUmV0dXJuIGNkYXRhIGVzY2FwZWQgQ0RBVEEgYHN0cmAu
CisgKi8KKworZnVuY3Rpb24gY2RhdGEoc3RyKSB7CisgIHJldHVybiAnPCFbQ0RBVEFbJyArIGVz
Y2FwZShzdHIpICsgJ11dPic7Cit9CisKK30pOyAvLyBtb2R1bGU6IHJlcG9ydGVycy94dW5pdC5q
cworCityZXF1aXJlLnJlZ2lzdGVyKCJydW5uYWJsZS5qcyIsIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgcmVxdWlyZSl7CisKKy8qKgorICogTW9kdWxlIGRlcGVuZGVuY2llcy4KKyAqLworCit2
YXIgRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgnYnJvd3Nlci9ldmVudHMnKS5FdmVudEVtaXR0ZXIK
KyAgLCBkZWJ1ZyA9IHJlcXVpcmUoJ2Jyb3dzZXIvZGVidWcnKSgnbW9jaGE6cnVubmFibGUnKQor
ICAsIG1pbGxpc2Vjb25kcyA9IHJlcXVpcmUoJy4vbXMnKTsKKworLyoqCisgKiBTYXZlIHRpbWVy
IHJlZmVyZW5jZXMgdG8gYXZvaWQgU2lub24gaW50ZXJmZXJpbmcgKHNlZSBHSC0yMzcpLgorICov
CisKK3ZhciBEYXRlID0gZ2xvYmFsLkRhdGUKKyAgLCBzZXRUaW1lb3V0ID0gZ2xvYmFsLnNldFRp
bWVvdXQKKyAgLCBzZXRJbnRlcnZhbCA9IGdsb2JhbC5zZXRJbnRlcnZhbAorICAsIGNsZWFyVGlt
ZW91dCA9IGdsb2JhbC5jbGVhclRpbWVvdXQKKyAgLCBjbGVhckludGVydmFsID0gZ2xvYmFsLmNs
ZWFySW50ZXJ2YWw7CisKKy8qKgorICogT2JqZWN0I3RvU3RyaW5nKCkuCisgKi8KKwordmFyIHRv
U3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzsKKworLyoqCisgKiBFeHBvc2UgYFJ1
bm5hYmxlYC4KKyAqLworCittb2R1bGUuZXhwb3J0cyA9IFJ1bm5hYmxlOworCisvKioKKyAqIElu
aXRpYWxpemUgYSBuZXcgYFJ1bm5hYmxlYCB3aXRoIHRoZSBnaXZlbiBgdGl0bGVgIGFuZCBjYWxs
YmFjayBgZm5gLgorICoKKyAqIEBwYXJhbSB7U3RyaW5nfSB0aXRsZQorICogQHBhcmFtIHtGdW5j
dGlvbn0gZm4KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK2Z1bmN0aW9uIFJ1bm5hYmxlKHRpdGxl
LCBmbikgeworICB0aGlzLnRpdGxlID0gdGl0bGU7CisgIHRoaXMuZm4gPSBmbjsKKyAgdGhpcy5h
c3luYyA9IGZuICYmIGZuLmxlbmd0aDsKKyAgdGhpcy5zeW5jID0gISB0aGlzLmFzeW5jOworICB0
aGlzLl90aW1lb3V0ID0gMjAwMDsKKyAgdGhpcy5fc2xvdyA9IDc1OworICB0aGlzLl9lbmFibGVU
aW1lb3V0cyA9IHRydWU7CisgIHRoaXMudGltZWRPdXQgPSBmYWxzZTsKK30KKworLyoqCisgKiBJ
bmhlcml0IGZyb20gYEV2ZW50RW1pdHRlci5wcm90b3R5cGVgLgorICovCisKK2Z1bmN0aW9uIEYo
KXt9OworRi5wcm90b3R5cGUgPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlOworUnVubmFibGUucHJv
dG90eXBlID0gbmV3IEY7CitSdW5uYWJsZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBSdW5uYWJs
ZTsKKworCisvKioKKyAqIFNldCAmIGdldCB0aW1lb3V0IGBtc2AuCisgKgorICogQHBhcmFtIHtO
dW1iZXJ8U3RyaW5nfSBtcworICogQHJldHVybiB7UnVubmFibGV8TnVtYmVyfSBtcyBvciBzZWxm
CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitSdW5uYWJsZS5wcm90b3R5cGUudGltZW91dCA9IGZ1
bmN0aW9uKG1zKXsKKyAgaWYgKDAgPT0gYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIHRoaXMuX3Rp
bWVvdXQ7CisgIGlmICgnc3RyaW5nJyA9PSB0eXBlb2YgbXMpIG1zID0gbWlsbGlzZWNvbmRzKG1z
KTsKKyAgZGVidWcoJ3RpbWVvdXQgJWQnLCBtcyk7CisgIHRoaXMuX3RpbWVvdXQgPSBtczsKKyAg
aWYgKHRoaXMudGltZXIpIHRoaXMucmVzZXRUaW1lb3V0KCk7CisgIHJldHVybiB0aGlzOworfTsK
KworLyoqCisgKiBTZXQgJiBnZXQgc2xvdyBgbXNgLgorICoKKyAqIEBwYXJhbSB7TnVtYmVyfFN0
cmluZ30gbXMKKyAqIEByZXR1cm4ge1J1bm5hYmxlfE51bWJlcn0gbXMgb3Igc2VsZgorICogQGFw
aSBwcml2YXRlCisgKi8KKworUnVubmFibGUucHJvdG90eXBlLnNsb3cgPSBmdW5jdGlvbihtcyl7
CisgIGlmICgwID09PSBhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gdGhpcy5fc2xvdzsKKyAgaWYg
KCdzdHJpbmcnID09IHR5cGVvZiBtcykgbXMgPSBtaWxsaXNlY29uZHMobXMpOworICBkZWJ1Zygn
dGltZW91dCAlZCcsIG1zKTsKKyAgdGhpcy5fc2xvdyA9IG1zOworICByZXR1cm4gdGhpczsKK307
CisKKy8qKgorICogU2V0IGFuZCAmIGdldCB0aW1lb3V0IGBlbmFibGVkYC4KKyAqCisgKiBAcGFy
YW0ge0Jvb2xlYW59IGVuYWJsZWQKKyAqIEByZXR1cm4ge1J1bm5hYmxlfEJvb2xlYW59IGVuYWJs
ZWQgb3Igc2VsZgorICogQGFwaSBwcml2YXRlCisgKi8KKworUnVubmFibGUucHJvdG90eXBlLmVu
YWJsZVRpbWVvdXRzID0gZnVuY3Rpb24oZW5hYmxlZCl7CisgIGlmIChhcmd1bWVudHMubGVuZ3Ro
ID09PSAwKSByZXR1cm4gdGhpcy5fZW5hYmxlVGltZW91dHM7CisgIGRlYnVnKCdlbmFibGVUaW1l
b3V0cyAlcycsIGVuYWJsZWQpOworICB0aGlzLl9lbmFibGVUaW1lb3V0cyA9IGVuYWJsZWQ7Cisg
IHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBSZXR1cm4gdGhlIGZ1bGwgdGl0bGUgZ2VuZXJh
dGVkIGJ5IHJlY3Vyc2l2ZWx5CisgKiBjb25jYXRlbmF0aW5nIHRoZSBwYXJlbnQncyBmdWxsIHRp
dGxlLgorICoKKyAqIEByZXR1cm4ge1N0cmluZ30KKyAqIEBhcGkgcHVibGljCisgKi8KKworUnVu
bmFibGUucHJvdG90eXBlLmZ1bGxUaXRsZSA9IGZ1bmN0aW9uKCl7CisgIHJldHVybiB0aGlzLnBh
cmVudC5mdWxsVGl0bGUoKSArICcgJyArIHRoaXMudGl0bGU7Cit9OworCisvKioKKyAqIENsZWFy
IHRoZSB0aW1lb3V0LgorICoKKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1J1bm5hYmxlLnByb3Rv
dHlwZS5jbGVhclRpbWVvdXQgPSBmdW5jdGlvbigpeworICBjbGVhclRpbWVvdXQodGhpcy50aW1l
cik7Cit9OworCisvKioKKyAqIEluc3BlY3QgdGhlIHJ1bm5hYmxlIHZvaWQgb2YgcHJpdmF0ZSBw
cm9wZXJ0aWVzLgorICoKKyAqIEByZXR1cm4ge1N0cmluZ30KKyAqIEBhcGkgcHJpdmF0ZQorICov
CisKK1J1bm5hYmxlLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24oKXsKKyAgcmV0dXJuIEpT
T04uc3RyaW5naWZ5KHRoaXMsIGZ1bmN0aW9uKGtleSwgdmFsKXsKKyAgICBpZiAoJ18nID09IGtl
eVswXSkgcmV0dXJuOworICAgIGlmICgncGFyZW50JyA9PSBrZXkpIHJldHVybiAnIzxTdWl0ZT4n
OworICAgIGlmICgnY3R4JyA9PSBrZXkpIHJldHVybiAnIzxDb250ZXh0Pic7CisgICAgcmV0dXJu
IHZhbDsKKyAgfSwgMik7Cit9OworCisvKioKKyAqIFJlc2V0IHRoZSB0aW1lb3V0LgorICoKKyAq
IEBhcGkgcHJpdmF0ZQorICovCisKK1J1bm5hYmxlLnByb3RvdHlwZS5yZXNldFRpbWVvdXQgPSBm
dW5jdGlvbigpeworICB2YXIgc2VsZiA9IHRoaXM7CisgIHZhciBtcyA9IHRoaXMudGltZW91dCgp
IHx8IDFlOTsKKworICBpZiAoIXRoaXMuX2VuYWJsZVRpbWVvdXRzKSByZXR1cm47CisgIHRoaXMu
Y2xlYXJUaW1lb3V0KCk7CisgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Cisg
ICAgc2VsZi5jYWxsYmFjayhuZXcgRXJyb3IoJ3RpbWVvdXQgb2YgJyArIG1zICsgJ21zIGV4Y2Vl
ZGVkJykpOworICAgIHNlbGYudGltZWRPdXQgPSB0cnVlOworICB9LCBtcyk7Cit9OworCisvKioK
KyAqIFdoaXRlbGlzdCB0aGVzZSBnbG9iYWxzIGZvciB0aGlzIHRlc3QgcnVuCisgKgorICogQGFw
aSBwcml2YXRlCisgKi8KK1J1bm5hYmxlLnByb3RvdHlwZS5nbG9iYWxzID0gZnVuY3Rpb24oYXJy
KXsKKyAgdmFyIHNlbGYgPSB0aGlzOworICB0aGlzLl9hbGxvd2VkR2xvYmFscyA9IGFycjsKK307
CisKKy8qKgorICogUnVuIHRoZSB0ZXN0IGFuZCBpbnZva2UgYGZuKGVycilgLgorICoKKyAqIEBw
YXJhbSB7RnVuY3Rpb259IGZuCisgKiBAYXBpIHByaXZhdGUKKyAqLworCitSdW5uYWJsZS5wcm90
b3R5cGUucnVuID0gZnVuY3Rpb24oZm4peworICB2YXIgc2VsZiA9IHRoaXMKKyAgICAsIHN0YXJ0
ID0gbmV3IERhdGUKKyAgICAsIGN0eCA9IHRoaXMuY3R4CisgICAgLCBmaW5pc2hlZAorICAgICwg
ZW1pdHRlZDsKKworICAvLyBTb21lIHRpbWVzIHRoZSBjdHggZXhpc3RzIGJ1dCBpdCBpcyBub3Qg
cnVubmFibGUKKyAgaWYgKGN0eCAmJiBjdHgucnVubmFibGUpIGN0eC5ydW5uYWJsZSh0aGlzKTsK
KworICAvLyBjYWxsZWQgbXVsdGlwbGUgdGltZXMKKyAgZnVuY3Rpb24gbXVsdGlwbGUoZXJyKSB7
CisgICAgaWYgKGVtaXR0ZWQpIHJldHVybjsKKyAgICBlbWl0dGVkID0gdHJ1ZTsKKyAgICBzZWxm
LmVtaXQoJ2Vycm9yJywgZXJyIHx8IG5ldyBFcnJvcignZG9uZSgpIGNhbGxlZCBtdWx0aXBsZSB0
aW1lcycpKTsKKyAgfQorCisgIC8vIGZpbmlzaGVkCisgIGZ1bmN0aW9uIGRvbmUoZXJyKSB7Cisg
ICAgdmFyIG1zID0gc2VsZi50aW1lb3V0KCk7CisgICAgaWYgKHNlbGYudGltZWRPdXQpIHJldHVy
bjsKKyAgICBpZiAoZmluaXNoZWQpIHJldHVybiBtdWx0aXBsZShlcnIpOworICAgIHNlbGYuY2xl
YXJUaW1lb3V0KCk7CisgICAgc2VsZi5kdXJhdGlvbiA9IG5ldyBEYXRlIC0gc3RhcnQ7CisgICAg
ZmluaXNoZWQgPSB0cnVlOworICAgIGlmICghZXJyICYmIHNlbGYuZHVyYXRpb24gPiBtcyAmJiBz
ZWxmLl9lbmFibGVUaW1lb3V0cykgZXJyID0gbmV3IEVycm9yKCd0aW1lb3V0IG9mICcgKyBtcyAr
ICdtcyBleGNlZWRlZCcpOworICAgIGZuKGVycik7CisgIH0KKworICAvLyBmb3IgLnJlc2V0VGlt
ZW91dCgpCisgIHRoaXMuY2FsbGJhY2sgPSBkb25lOworCisgIC8vIGV4cGxpY2l0IGFzeW5jIHdp
dGggYGRvbmVgIGFyZ3VtZW50CisgIGlmICh0aGlzLmFzeW5jKSB7CisgICAgdGhpcy5yZXNldFRp
bWVvdXQoKTsKKworICAgIHRyeSB7CisgICAgICB0aGlzLmZuLmNhbGwoY3R4LCBmdW5jdGlvbihl
cnIpeworICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IgfHwgdG9TdHJpbmcuY2FsbChl
cnIpID09PSAiW29iamVjdCBFcnJvcl0iKSByZXR1cm4gZG9uZShlcnIpOworICAgICAgICBpZiAo
bnVsbCAhPSBlcnIpIHsKKyAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5j
YWxsKGVycikgPT09ICdbb2JqZWN0IE9iamVjdF0nKSB7CisgICAgICAgICAgICByZXR1cm4gZG9u
ZShuZXcgRXJyb3IoJ2RvbmUoKSBpbnZva2VkIHdpdGggbm9uLUVycm9yOiAnICsgSlNPTi5zdHJp
bmdpZnkoZXJyKSkpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZG9u
ZShuZXcgRXJyb3IoJ2RvbmUoKSBpbnZva2VkIHdpdGggbm9uLUVycm9yOiAnICsgZXJyKSk7Cisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGRvbmUoKTsKKyAgICAgIH0pOworICAgIH0g
Y2F0Y2ggKGVycikgeworICAgICAgZG9uZShlcnIpOworICAgIH0KKyAgICByZXR1cm47CisgIH0K
KworICBpZiAodGhpcy5hc3luY09ubHkpIHsKKyAgICByZXR1cm4gZG9uZShuZXcgRXJyb3IoJy0t
YXN5bmMtb25seSBvcHRpb24gaW4gdXNlIHdpdGhvdXQgZGVjbGFyaW5nIGBkb25lKClgJykpOwor
ICB9CisKKyAgLy8gc3luYyBvciBwcm9taXNlLXJldHVybmluZworICB0cnkgeworICAgIGlmICh0
aGlzLnBlbmRpbmcpIHsKKyAgICAgIGRvbmUoKTsKKyAgICB9IGVsc2UgeworICAgICAgY2FsbEZu
KHRoaXMuZm4pOworICAgIH0KKyAgfSBjYXRjaCAoZXJyKSB7CisgICAgZG9uZShlcnIpOworICB9
CisKKyAgZnVuY3Rpb24gY2FsbEZuKGZuKSB7CisgICAgdmFyIHJlc3VsdCA9IGZuLmNhbGwoY3R4
KTsKKyAgICBpZiAocmVzdWx0ICYmIHR5cGVvZiByZXN1bHQudGhlbiA9PT0gJ2Z1bmN0aW9uJykg
eworICAgICAgc2VsZi5yZXNldFRpbWVvdXQoKTsKKyAgICAgIHJlc3VsdAorICAgICAgICAudGhl
bihmdW5jdGlvbigpIHsKKyAgICAgICAgICBkb25lKCkKKyAgICAgICAgfSwKKyAgICAgICAgZnVu
Y3Rpb24ocmVhc29uKSB7CisgICAgICAgICAgZG9uZShyZWFzb24gfHwgbmV3IEVycm9yKCdQcm9t
aXNlIHJlamVjdGVkIHdpdGggbm8gb3IgZmFsc3kgcmVhc29uJykpCisgICAgICAgIH0pOworICAg
IH0gZWxzZSB7CisgICAgICBkb25lKCk7CisgICAgfQorICB9Cit9OworCit9KTsgLy8gbW9kdWxl
OiBydW5uYWJsZS5qcworCityZXF1aXJlLnJlZ2lzdGVyKCJydW5uZXIuanMiLCBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUpeworLyoqCisgKiBNb2R1bGUgZGVwZW5kZW5jaWVzLgor
ICovCisKK3ZhciBFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCdicm93c2VyL2V2ZW50cycpLkV2ZW50
RW1pdHRlcgorICAsIGRlYnVnID0gcmVxdWlyZSgnYnJvd3Nlci9kZWJ1ZycpKCdtb2NoYTpydW5u
ZXInKQorICAsIFRlc3QgPSByZXF1aXJlKCcuL3Rlc3QnKQorICAsIHV0aWxzID0gcmVxdWlyZSgn
Li91dGlscycpCisgICwgZmlsdGVyID0gdXRpbHMuZmlsdGVyCisgICwga2V5cyA9IHV0aWxzLmtl
eXM7CisKKy8qKgorICogTm9uLWVudW1lcmFibGUgZ2xvYmFscy4KKyAqLworCit2YXIgZ2xvYmFs
cyA9IFsKKyAgJ3NldFRpbWVvdXQnLAorICAnY2xlYXJUaW1lb3V0JywKKyAgJ3NldEludGVydmFs
JywKKyAgJ2NsZWFySW50ZXJ2YWwnLAorICAnWE1MSHR0cFJlcXVlc3QnLAorICAnRGF0ZScKK107
CisKKy8qKgorICogRXhwb3NlIGBSdW5uZXJgLgorICovCisKK21vZHVsZS5leHBvcnRzID0gUnVu
bmVyOworCisvKioKKyAqIEluaXRpYWxpemUgYSBgUnVubmVyYCBmb3IgdGhlIGdpdmVuIGBzdWl0
ZWAuCisgKgorICogRXZlbnRzOgorICoKKyAqICAgLSBgc3RhcnRgICBleGVjdXRpb24gc3RhcnRl
ZAorICogICAtIGBlbmRgICBleGVjdXRpb24gY29tcGxldGUKKyAqICAgLSBgc3VpdGVgICAoc3Vp
dGUpIHRlc3Qgc3VpdGUgZXhlY3V0aW9uIHN0YXJ0ZWQKKyAqICAgLSBgc3VpdGUgZW5kYCAgKHN1
aXRlKSBhbGwgdGVzdHMgKGFuZCBzdWItc3VpdGVzKSBoYXZlIGZpbmlzaGVkCisgKiAgIC0gYHRl
c3RgICAodGVzdCkgdGVzdCBleGVjdXRpb24gc3RhcnRlZAorICogICAtIGB0ZXN0IGVuZGAgICh0
ZXN0KSB0ZXN0IGNvbXBsZXRlZAorICogICAtIGBob29rYCAgKGhvb2spIGhvb2sgZXhlY3V0aW9u
IHN0YXJ0ZWQKKyAqICAgLSBgaG9vayBlbmRgICAoaG9vaykgaG9vayBjb21wbGV0ZQorICogICAt
IGBwYXNzYCAgKHRlc3QpIHRlc3QgcGFzc2VkCisgKiAgIC0gYGZhaWxgICAodGVzdCwgZXJyKSB0
ZXN0IGZhaWxlZAorICogICAtIGBwZW5kaW5nYCAgKHRlc3QpIHRlc3QgcGVuZGluZworICoKKyAq
IEBhcGkgcHVibGljCisgKi8KKworZnVuY3Rpb24gUnVubmVyKHN1aXRlKSB7CisgIHZhciBzZWxm
ID0gdGhpczsKKyAgdGhpcy5fZ2xvYmFscyA9IFtdOworICB0aGlzLl9hYm9ydCA9IGZhbHNlOwor
ICB0aGlzLnN1aXRlID0gc3VpdGU7CisgIHRoaXMudG90YWwgPSBzdWl0ZS50b3RhbCgpOworICB0
aGlzLmZhaWx1cmVzID0gMDsKKyAgdGhpcy5vbigndGVzdCBlbmQnLCBmdW5jdGlvbih0ZXN0KXsg
c2VsZi5jaGVja0dsb2JhbHModGVzdCk7IH0pOworICB0aGlzLm9uKCdob29rIGVuZCcsIGZ1bmN0
aW9uKGhvb2speyBzZWxmLmNoZWNrR2xvYmFscyhob29rKTsgfSk7CisgIHRoaXMuZ3JlcCgvLiov
KTsKKyAgdGhpcy5nbG9iYWxzKHRoaXMuZ2xvYmFsUHJvcHMoKS5jb25jYXQoZXh0cmFHbG9iYWxz
KCkpKTsKK30KKworLyoqCisgKiBXcmFwcGVyIGZvciBzZXRJbW1lZGlhdGUsIHByb2Nlc3MubmV4
dFRpY2ssIG9yIGJyb3dzZXIgcG9seWZpbGwuCisgKgorICogQHBhcmFtIHtGdW5jdGlvbn0gZm4K
KyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1J1bm5lci5pbW1lZGlhdGVseSA9IGdsb2JhbC5zZXRJ
bW1lZGlhdGUgfHwgcHJvY2Vzcy5uZXh0VGljazsKKworLyoqCisgKiBJbmhlcml0IGZyb20gYEV2
ZW50RW1pdHRlci5wcm90b3R5cGVgLgorICovCisKK2Z1bmN0aW9uIEYoKXt9OworRi5wcm90b3R5
cGUgPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlOworUnVubmVyLnByb3RvdHlwZSA9IG5ldyBGOwor
UnVubmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFJ1bm5lcjsKKworCisvKioKKyAqIFJ1biB0
ZXN0cyB3aXRoIGZ1bGwgdGl0bGVzIG1hdGNoaW5nIGByZWAuIFVwZGF0ZXMgcnVubmVyLnRvdGFs
CisgKiB3aXRoIG51bWJlciBvZiB0ZXN0cyBtYXRjaGVkLgorICoKKyAqIEBwYXJhbSB7UmVnRXhw
fSByZQorICogQHBhcmFtIHtCb29sZWFufSBpbnZlcnQKKyAqIEByZXR1cm4ge1J1bm5lcn0gZm9y
IGNoYWluaW5nCisgKiBAYXBpIHB1YmxpYworICovCisKK1J1bm5lci5wcm90b3R5cGUuZ3JlcCA9
IGZ1bmN0aW9uKHJlLCBpbnZlcnQpeworICBkZWJ1ZygnZ3JlcCAlcycsIHJlKTsKKyAgdGhpcy5f
Z3JlcCA9IHJlOworICB0aGlzLl9pbnZlcnQgPSBpbnZlcnQ7CisgIHRoaXMudG90YWwgPSB0aGlz
LmdyZXBUb3RhbCh0aGlzLnN1aXRlKTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIFJl
dHVybnMgdGhlIG51bWJlciBvZiB0ZXN0cyBtYXRjaGluZyB0aGUgZ3JlcCBzZWFyY2ggZm9yIHRo
ZQorICogZ2l2ZW4gc3VpdGUuCisgKgorICogQHBhcmFtIHtTdWl0ZX0gc3VpdGUKKyAqIEByZXR1
cm4ge051bWJlcn0KKyAqIEBhcGkgcHVibGljCisgKi8KKworUnVubmVyLnByb3RvdHlwZS5ncmVw
VG90YWwgPSBmdW5jdGlvbihzdWl0ZSkgeworICB2YXIgc2VsZiA9IHRoaXM7CisgIHZhciB0b3Rh
bCA9IDA7CisKKyAgc3VpdGUuZWFjaFRlc3QoZnVuY3Rpb24odGVzdCl7CisgICAgdmFyIG1hdGNo
ID0gc2VsZi5fZ3JlcC50ZXN0KHRlc3QuZnVsbFRpdGxlKCkpOworICAgIGlmIChzZWxmLl9pbnZl
cnQpIG1hdGNoID0gIW1hdGNoOworICAgIGlmIChtYXRjaCkgdG90YWwrKzsKKyAgfSk7CisKKyAg
cmV0dXJuIHRvdGFsOworfTsKKworLyoqCisgKiBSZXR1cm4gYSBsaXN0IG9mIGdsb2JhbCBwcm9w
ZXJ0aWVzLgorICoKKyAqIEByZXR1cm4ge0FycmF5fQorICogQGFwaSBwcml2YXRlCisgKi8KKwor
UnVubmVyLnByb3RvdHlwZS5nbG9iYWxQcm9wcyA9IGZ1bmN0aW9uKCkgeworICB2YXIgcHJvcHMg
PSB1dGlscy5rZXlzKGdsb2JhbCk7CisKKyAgLy8gbm9uLWVudW1lcmFibGVzCisgIGZvciAodmFy
IGkgPSAwOyBpIDwgZ2xvYmFscy5sZW5ndGg7ICsraSkgeworICAgIGlmICh+dXRpbHMuaW5kZXhP
Zihwcm9wcywgZ2xvYmFsc1tpXSkpIGNvbnRpbnVlOworICAgIHByb3BzLnB1c2goZ2xvYmFsc1tp
XSk7CisgIH0KKworICByZXR1cm4gcHJvcHM7Cit9OworCisvKioKKyAqIEFsbG93IHRoZSBnaXZl
biBgYXJyYCBvZiBnbG9iYWxzLgorICoKKyAqIEBwYXJhbSB7QXJyYXl9IGFycgorICogQHJldHVy
biB7UnVubmVyfSBmb3IgY2hhaW5pbmcKKyAqIEBhcGkgcHVibGljCisgKi8KKworUnVubmVyLnBy
b3RvdHlwZS5nbG9iYWxzID0gZnVuY3Rpb24oYXJyKXsKKyAgaWYgKDAgPT0gYXJndW1lbnRzLmxl
bmd0aCkgcmV0dXJuIHRoaXMuX2dsb2JhbHM7CisgIGRlYnVnKCdnbG9iYWxzICVqJywgYXJyKTsK
KyAgdGhpcy5fZ2xvYmFscyA9IHRoaXMuX2dsb2JhbHMuY29uY2F0KGFycik7CisgIHJldHVybiB0
aGlzOworfTsKKworLyoqCisgKiBDaGVjayBmb3IgZ2xvYmFsIHZhcmlhYmxlIGxlYWtzLgorICoK
KyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1J1bm5lci5wcm90b3R5cGUuY2hlY2tHbG9iYWxzID0g
ZnVuY3Rpb24odGVzdCl7CisgIGlmICh0aGlzLmlnbm9yZUxlYWtzKSByZXR1cm47CisgIHZhciBv
ayA9IHRoaXMuX2dsb2JhbHM7CisKKyAgdmFyIGdsb2JhbHMgPSB0aGlzLmdsb2JhbFByb3BzKCk7
CisgIHZhciBsZWFrczsKKworICBpZiAodGVzdCkgeworICAgIG9rID0gb2suY29uY2F0KHRlc3Qu
X2FsbG93ZWRHbG9iYWxzIHx8IFtdKTsKKyAgfQorCisgIGlmKHRoaXMucHJldkdsb2JhbHNMZW5n
dGggPT0gZ2xvYmFscy5sZW5ndGgpIHJldHVybjsKKyAgdGhpcy5wcmV2R2xvYmFsc0xlbmd0aCA9
IGdsb2JhbHMubGVuZ3RoOworCisgIGxlYWtzID0gZmlsdGVyTGVha3Mob2ssIGdsb2JhbHMpOwor
ICB0aGlzLl9nbG9iYWxzID0gdGhpcy5fZ2xvYmFscy5jb25jYXQobGVha3MpOworCisgIGlmIChs
ZWFrcy5sZW5ndGggPiAxKSB7CisgICAgdGhpcy5mYWlsKHRlc3QsIG5ldyBFcnJvcignZ2xvYmFs
IGxlYWtzIGRldGVjdGVkOiAnICsgbGVha3Muam9pbignLCAnKSArICcnKSk7CisgIH0gZWxzZSBp
ZiAobGVha3MubGVuZ3RoKSB7CisgICAgdGhpcy5mYWlsKHRlc3QsIG5ldyBFcnJvcignZ2xvYmFs
IGxlYWsgZGV0ZWN0ZWQ6ICcgKyBsZWFrc1swXSkpOworICB9Cit9OworCisvKioKKyAqIEZhaWwg
dGhlIGdpdmVuIGB0ZXN0YC4KKyAqCisgKiBAcGFyYW0ge1Rlc3R9IHRlc3QKKyAqIEBwYXJhbSB7
RXJyb3J9IGVycgorICogQGFwaSBwcml2YXRlCisgKi8KKworUnVubmVyLnByb3RvdHlwZS5mYWls
ID0gZnVuY3Rpb24odGVzdCwgZXJyKXsKKyAgKyt0aGlzLmZhaWx1cmVzOworICB0ZXN0LnN0YXRl
ID0gJ2ZhaWxlZCc7CisKKyAgaWYgKCdzdHJpbmcnID09IHR5cGVvZiBlcnIpIHsKKyAgICBlcnIg
PSBuZXcgRXJyb3IoJ3RoZSBzdHJpbmcgIicgKyBlcnIgKyAnIiB3YXMgdGhyb3duLCB0aHJvdyBh
biBFcnJvciA6KScpOworICB9CisKKyAgdGhpcy5lbWl0KCdmYWlsJywgdGVzdCwgZXJyKTsKK307
CisKKy8qKgorICogRmFpbCB0aGUgZ2l2ZW4gYGhvb2tgIHdpdGggYGVycmAuCisgKgorICogSG9v
ayBmYWlsdXJlcyB3b3JrIGluIHRoZSBmb2xsb3dpbmcgcGF0dGVybjoKKyAqIC0gSWYgYmFpbCwg
dGhlbiBleGl0CisgKiAtIEZhaWxlZCBgYmVmb3JlYCBob29rIHNraXBzIGFsbCB0ZXN0cyBpbiBh
IHN1aXRlIGFuZCBzdWJzdWl0ZXMsCisgKiAgIGJ1dCBqdW1wcyB0byBjb3JyZXNwb25kaW5nIGBh
ZnRlcmAgaG9vaworICogLSBGYWlsZWQgYGJlZm9yZSBlYWNoYCBob29rIHNraXBzIHJlbWFpbmlu
ZyB0ZXN0cyBpbiBhCisgKiAgIHN1aXRlIGFuZCBqdW1wcyB0byBjb3JyZXNwb25kaW5nIGBhZnRl
ciBlYWNoYCBob29rLAorICogICB3aGljaCBpcyBydW4gb25seSBvbmNlCisgKiAtIEZhaWxlZCBg
YWZ0ZXJgIGhvb2sgZG9lcyBub3QgYWx0ZXIKKyAqICAgZXhlY3V0aW9uIG9yZGVyCisgKiAtIEZh
aWxlZCBgYWZ0ZXIgZWFjaGAgaG9vayBza2lwcyByZW1haW5pbmcgdGVzdHMgaW4gYQorICogICBz
dWl0ZSBhbmQgc3Vic3VpdGVzLCBidXQgZXhlY3V0ZXMgb3RoZXIgYGFmdGVyIGVhY2hgCisgKiAg
IGhvb2tzCisgKgorICogQHBhcmFtIHtIb29rfSBob29rCisgKiBAcGFyYW0ge0Vycm9yfSBlcnIK
KyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1J1bm5lci5wcm90b3R5cGUuZmFpbEhvb2sgPSBmdW5j
dGlvbihob29rLCBlcnIpeworICB0aGlzLmZhaWwoaG9vaywgZXJyKTsKKyAgaWYgKHRoaXMuc3Vp
dGUuYmFpbCgpKSB7CisgICAgdGhpcy5lbWl0KCdlbmQnKTsKKyAgfQorfTsKKworLyoqCisgKiBS
dW4gaG9vayBgbmFtZWAgY2FsbGJhY2tzIGFuZCB0aGVuIGludm9rZSBgZm4oKWAuCisgKgorICog
QHBhcmFtIHtTdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmN0aW9uCisgKiBA
YXBpIHByaXZhdGUKKyAqLworCitSdW5uZXIucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbihuYW1l
LCBmbil7CisgIHZhciBzdWl0ZSA9IHRoaXMuc3VpdGUKKyAgICAsIGhvb2tzID0gc3VpdGVbJ18n
ICsgbmFtZV0KKyAgICAsIHNlbGYgPSB0aGlzCisgICAgLCB0aW1lcjsKKworICBmdW5jdGlvbiBu
ZXh0KGkpIHsKKyAgICB2YXIgaG9vayA9IGhvb2tzW2ldOworICAgIGlmICghaG9vaykgcmV0dXJu
IGZuKCk7CisgICAgaWYgKHNlbGYuZmFpbHVyZXMgJiYgc3VpdGUuYmFpbCgpKSByZXR1cm4gZm4o
KTsKKyAgICBzZWxmLmN1cnJlbnRSdW5uYWJsZSA9IGhvb2s7CisKKyAgICBob29rLmN0eC5jdXJy
ZW50VGVzdCA9IHNlbGYudGVzdDsKKworICAgIHNlbGYuZW1pdCgnaG9vaycsIGhvb2spOworCisg
ICAgaG9vay5vbignZXJyb3InLCBmdW5jdGlvbihlcnIpeworICAgICAgc2VsZi5mYWlsSG9vayho
b29rLCBlcnIpOworICAgIH0pOworCisgICAgaG9vay5ydW4oZnVuY3Rpb24oZXJyKXsKKyAgICAg
IGhvb2sucmVtb3ZlQWxsTGlzdGVuZXJzKCdlcnJvcicpOworICAgICAgdmFyIHRlc3RFcnJvciA9
IGhvb2suZXJyb3IoKTsKKyAgICAgIGlmICh0ZXN0RXJyb3IpIHNlbGYuZmFpbChzZWxmLnRlc3Qs
IHRlc3RFcnJvcik7CisgICAgICBpZiAoZXJyKSB7CisgICAgICAgIHNlbGYuZmFpbEhvb2soaG9v
aywgZXJyKTsKKworICAgICAgICAvLyBzdG9wIGV4ZWN1dGluZyBob29rcywgbm90aWZ5IGNhbGxl
ZSBvZiBob29rIGVycgorICAgICAgICByZXR1cm4gZm4oZXJyKTsKKyAgICAgIH0KKyAgICAgIHNl
bGYuZW1pdCgnaG9vayBlbmQnLCBob29rKTsKKyAgICAgIGRlbGV0ZSBob29rLmN0eC5jdXJyZW50
VGVzdDsKKyAgICAgIG5leHQoKytpKTsKKyAgICB9KTsKKyAgfQorCisgIFJ1bm5lci5pbW1lZGlh
dGVseShmdW5jdGlvbigpeworICAgIG5leHQoMCk7CisgIH0pOworfTsKKworLyoqCisgKiBSdW4g
aG9vayBgbmFtZWAgZm9yIHRoZSBnaXZlbiBhcnJheSBvZiBgc3VpdGVzYAorICogaW4gb3JkZXIs
IGFuZCBjYWxsYmFjayBgZm4oZXJyLCBlcnJTdWl0ZSlgLgorICoKKyAqIEBwYXJhbSB7U3RyaW5n
fSBuYW1lCisgKiBAcGFyYW0ge0FycmF5fSBzdWl0ZXMKKyAqIEBwYXJhbSB7RnVuY3Rpb259IGZu
CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitSdW5uZXIucHJvdG90eXBlLmhvb2tzID0gZnVuY3Rp
b24obmFtZSwgc3VpdGVzLCBmbil7CisgIHZhciBzZWxmID0gdGhpcworICAgICwgb3JpZyA9IHRo
aXMuc3VpdGU7CisKKyAgZnVuY3Rpb24gbmV4dChzdWl0ZSkgeworICAgIHNlbGYuc3VpdGUgPSBz
dWl0ZTsKKworICAgIGlmICghc3VpdGUpIHsKKyAgICAgIHNlbGYuc3VpdGUgPSBvcmlnOworICAg
ICAgcmV0dXJuIGZuKCk7CisgICAgfQorCisgICAgc2VsZi5ob29rKG5hbWUsIGZ1bmN0aW9uKGVy
cil7CisgICAgICBpZiAoZXJyKSB7CisgICAgICAgIHZhciBlcnJTdWl0ZSA9IHNlbGYuc3VpdGU7
CisgICAgICAgIHNlbGYuc3VpdGUgPSBvcmlnOworICAgICAgICByZXR1cm4gZm4oZXJyLCBlcnJT
dWl0ZSk7CisgICAgICB9CisKKyAgICAgIG5leHQoc3VpdGVzLnBvcCgpKTsKKyAgICB9KTsKKyAg
fQorCisgIG5leHQoc3VpdGVzLnBvcCgpKTsKK307CisKKy8qKgorICogUnVuIGhvb2tzIGZyb20g
dGhlIHRvcCBsZXZlbCBkb3duLgorICoKKyAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lCisgKiBAcGFy
YW0ge0Z1bmN0aW9ufSBmbgorICogQGFwaSBwcml2YXRlCisgKi8KKworUnVubmVyLnByb3RvdHlw
ZS5ob29rVXAgPSBmdW5jdGlvbihuYW1lLCBmbil7CisgIHZhciBzdWl0ZXMgPSBbdGhpcy5zdWl0
ZV0uY29uY2F0KHRoaXMucGFyZW50cygpKS5yZXZlcnNlKCk7CisgIHRoaXMuaG9va3MobmFtZSwg
c3VpdGVzLCBmbik7Cit9OworCisvKioKKyAqIFJ1biBob29rcyBmcm9tIHRoZSBib3R0b20gdXAu
CisgKgorICogQHBhcmFtIHtTdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7RnVuY3Rpb259IGZuCisg
KiBAYXBpIHByaXZhdGUKKyAqLworCitSdW5uZXIucHJvdG90eXBlLmhvb2tEb3duID0gZnVuY3Rp
b24obmFtZSwgZm4peworICB2YXIgc3VpdGVzID0gW3RoaXMuc3VpdGVdLmNvbmNhdCh0aGlzLnBh
cmVudHMoKSk7CisgIHRoaXMuaG9va3MobmFtZSwgc3VpdGVzLCBmbik7Cit9OworCisvKioKKyAq
IFJldHVybiBhbiBhcnJheSBvZiBwYXJlbnQgU3VpdGVzIGZyb20KKyAqIGNsb3Nlc3QgdG8gZnVy
dGhlc3QuCisgKgorICogQHJldHVybiB7QXJyYXl9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitS
dW5uZXIucHJvdG90eXBlLnBhcmVudHMgPSBmdW5jdGlvbigpeworICB2YXIgc3VpdGUgPSB0aGlz
LnN1aXRlCisgICAgLCBzdWl0ZXMgPSBbXTsKKyAgd2hpbGUgKHN1aXRlID0gc3VpdGUucGFyZW50
KSBzdWl0ZXMucHVzaChzdWl0ZSk7CisgIHJldHVybiBzdWl0ZXM7Cit9OworCisvKioKKyAqIFJ1
biB0aGUgY3VycmVudCB0ZXN0IGFuZCBjYWxsYmFjayBgZm4oZXJyKWAuCisgKgorICogQHBhcmFt
IHtGdW5jdGlvbn0gZm4KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1J1bm5lci5wcm90b3R5cGUu
cnVuVGVzdCA9IGZ1bmN0aW9uKGZuKXsKKyAgdmFyIHRlc3QgPSB0aGlzLnRlc3QKKyAgICAsIHNl
bGYgPSB0aGlzOworCisgIGlmICh0aGlzLmFzeW5jT25seSkgdGVzdC5hc3luY09ubHkgPSB0cnVl
OworCisgIHRyeSB7CisgICAgdGVzdC5vbignZXJyb3InLCBmdW5jdGlvbihlcnIpeworICAgICAg
c2VsZi5mYWlsKHRlc3QsIGVycik7CisgICAgfSk7CisgICAgdGVzdC5ydW4oZm4pOworICB9IGNh
dGNoIChlcnIpIHsKKyAgICBmbihlcnIpOworICB9Cit9OworCisvKioKKyAqIFJ1biB0ZXN0cyBp
biB0aGUgZ2l2ZW4gYHN1aXRlYCBhbmQgaW52b2tlCisgKiB0aGUgY2FsbGJhY2sgYGZuKClgIHdo
ZW4gY29tcGxldGUuCisgKgorICogQHBhcmFtIHtTdWl0ZX0gc3VpdGUKKyAqIEBwYXJhbSB7RnVu
Y3Rpb259IGZuCisgKiBAYXBpIHByaXZhdGUKKyAqLworCitSdW5uZXIucHJvdG90eXBlLnJ1blRl
c3RzID0gZnVuY3Rpb24oc3VpdGUsIGZuKXsKKyAgdmFyIHNlbGYgPSB0aGlzCisgICAgLCB0ZXN0
cyA9IHN1aXRlLnRlc3RzLnNsaWNlKCkKKyAgICAsIHRlc3Q7CisKKworICBmdW5jdGlvbiBob29r
RXJyKGVyciwgZXJyU3VpdGUsIGFmdGVyKSB7CisgICAgLy8gYmVmb3JlL2FmdGVyIEVhY2ggaG9v
ayBmb3IgZXJyU3VpdGUgZmFpbGVkOgorICAgIHZhciBvcmlnID0gc2VsZi5zdWl0ZTsKKworICAg
IC8vIGZvciBmYWlsZWQgJ2FmdGVyIGVhY2gnIGhvb2sgc3RhcnQgZnJvbSBlcnJTdWl0ZSBwYXJl
bnQsCisgICAgLy8gb3RoZXJ3aXNlIHN0YXJ0IGZyb20gZXJyU3VpdGUgaXRzZWxmCisgICAgc2Vs
Zi5zdWl0ZSA9IGFmdGVyID8gZXJyU3VpdGUucGFyZW50IDogZXJyU3VpdGU7CisKKyAgICBpZiAo
c2VsZi5zdWl0ZSkgeworICAgICAgLy8gY2FsbCBob29rVXAgYWZ0ZXJFYWNoCisgICAgICBzZWxm
Lmhvb2tVcCgnYWZ0ZXJFYWNoJywgZnVuY3Rpb24oZXJyMiwgZXJyU3VpdGUyKSB7CisgICAgICAg
IHNlbGYuc3VpdGUgPSBvcmlnOworICAgICAgICAvLyBzb21lIGhvb2tzIG1heSBmYWlsIGV2ZW4g
bm93CisgICAgICAgIGlmIChlcnIyKSByZXR1cm4gaG9va0VycihlcnIyLCBlcnJTdWl0ZTIsIHRy
dWUpOworICAgICAgICAvLyByZXBvcnQgZXJyb3Igc3VpdGUKKyAgICAgICAgZm4oZXJyU3VpdGUp
OworICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIHRoZXJlIGlzIG5vIG5lZWQgY2Fs
bGluZyBvdGhlciAnYWZ0ZXIgZWFjaCcgaG9va3MKKyAgICAgIHNlbGYuc3VpdGUgPSBvcmlnOwor
ICAgICAgZm4oZXJyU3VpdGUpOworICAgIH0KKyAgfQorCisgIGZ1bmN0aW9uIG5leHQoZXJyLCBl
cnJTdWl0ZSkgeworICAgIC8vIGlmIHdlIGJhaWwgYWZ0ZXIgZmlyc3QgZXJyCisgICAgaWYgKHNl
bGYuZmFpbHVyZXMgJiYgc3VpdGUuX2JhaWwpIHJldHVybiBmbigpOworCisgICAgaWYgKHNlbGYu
X2Fib3J0KSByZXR1cm4gZm4oKTsKKworICAgIGlmIChlcnIpIHJldHVybiBob29rRXJyKGVyciwg
ZXJyU3VpdGUsIHRydWUpOworCisgICAgLy8gbmV4dCB0ZXN0CisgICAgdGVzdCA9IHRlc3RzLnNo
aWZ0KCk7CisKKyAgICAvLyBhbGwgZG9uZQorICAgIGlmICghdGVzdCkgcmV0dXJuIGZuKCk7CisK
KyAgICAvLyBncmVwCisgICAgdmFyIG1hdGNoID0gc2VsZi5fZ3JlcC50ZXN0KHRlc3QuZnVsbFRp
dGxlKCkpOworICAgIGlmIChzZWxmLl9pbnZlcnQpIG1hdGNoID0gIW1hdGNoOworICAgIGlmICgh
bWF0Y2gpIHJldHVybiBuZXh0KCk7CisKKyAgICAvLyBwZW5kaW5nCisgICAgaWYgKHRlc3QucGVu
ZGluZykgeworICAgICAgc2VsZi5lbWl0KCdwZW5kaW5nJywgdGVzdCk7CisgICAgICBzZWxmLmVt
aXQoJ3Rlc3QgZW5kJywgdGVzdCk7CisgICAgICByZXR1cm4gbmV4dCgpOworICAgIH0KKworICAg
IC8vIGV4ZWN1dGUgdGVzdCBhbmQgaG9vayhzKQorICAgIHNlbGYuZW1pdCgndGVzdCcsIHNlbGYu
dGVzdCA9IHRlc3QpOworICAgIHNlbGYuaG9va0Rvd24oJ2JlZm9yZUVhY2gnLCBmdW5jdGlvbihl
cnIsIGVyclN1aXRlKXsKKworICAgICAgaWYgKGVycikgcmV0dXJuIGhvb2tFcnIoZXJyLCBlcnJT
dWl0ZSwgZmFsc2UpOworCisgICAgICBzZWxmLmN1cnJlbnRSdW5uYWJsZSA9IHNlbGYudGVzdDsK
KyAgICAgIHNlbGYucnVuVGVzdChmdW5jdGlvbihlcnIpeworICAgICAgICB0ZXN0ID0gc2VsZi50
ZXN0OworCisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICBzZWxmLmZhaWwodGVzdCwgZXJy
KTsKKyAgICAgICAgICBzZWxmLmVtaXQoJ3Rlc3QgZW5kJywgdGVzdCk7CisgICAgICAgICAgcmV0
dXJuIHNlbGYuaG9va1VwKCdhZnRlckVhY2gnLCBuZXh0KTsKKyAgICAgICAgfQorCisgICAgICAg
IHRlc3Quc3RhdGUgPSAncGFzc2VkJzsKKyAgICAgICAgc2VsZi5lbWl0KCdwYXNzJywgdGVzdCk7
CisgICAgICAgIHNlbGYuZW1pdCgndGVzdCBlbmQnLCB0ZXN0KTsKKyAgICAgICAgc2VsZi5ob29r
VXAoJ2FmdGVyRWFjaCcsIG5leHQpOworICAgICAgfSk7CisgICAgfSk7CisgIH0KKworICB0aGlz
Lm5leHQgPSBuZXh0OworICBuZXh0KCk7Cit9OworCisvKioKKyAqIFJ1biB0aGUgZ2l2ZW4gYHN1
aXRlYCBhbmQgaW52b2tlIHRoZQorICogY2FsbGJhY2sgYGZuKClgIHdoZW4gY29tcGxldGUuCisg
KgorICogQHBhcmFtIHtTdWl0ZX0gc3VpdGUKKyAqIEBwYXJhbSB7RnVuY3Rpb259IGZuCisgKiBA
YXBpIHByaXZhdGUKKyAqLworCitSdW5uZXIucHJvdG90eXBlLnJ1blN1aXRlID0gZnVuY3Rpb24o
c3VpdGUsIGZuKXsKKyAgdmFyIHRvdGFsID0gdGhpcy5ncmVwVG90YWwoc3VpdGUpCisgICAgLCBz
ZWxmID0gdGhpcworICAgICwgaSA9IDA7CisKKyAgZGVidWcoJ3J1biBzdWl0ZSAlcycsIHN1aXRl
LmZ1bGxUaXRsZSgpKTsKKworICBpZiAoIXRvdGFsKSByZXR1cm4gZm4oKTsKKworICB0aGlzLmVt
aXQoJ3N1aXRlJywgdGhpcy5zdWl0ZSA9IHN1aXRlKTsKKworICBmdW5jdGlvbiBuZXh0KGVyclN1
aXRlKSB7CisgICAgaWYgKGVyclN1aXRlKSB7CisgICAgICAvLyBjdXJyZW50IHN1aXRlIGZhaWxl
ZCBvbiBhIGhvb2sgZnJvbSBlcnJTdWl0ZQorICAgICAgaWYgKGVyclN1aXRlID09IHN1aXRlKSB7
CisgICAgICAgIC8vIGlmIGVyclN1aXRlIGlzIGN1cnJlbnQgc3VpdGUKKyAgICAgICAgLy8gY29u
dGludWUgdG8gdGhlIG5leHQgc2libGluZyBzdWl0ZQorICAgICAgICByZXR1cm4gZG9uZSgpOwor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gZXJyU3VpdGUgaXMgYW1vbmcgdGhlIHBhcmVudHMg
b2YgY3VycmVudCBzdWl0ZQorICAgICAgICAvLyBzdG9wIGV4ZWN1dGlvbiBvZiBlcnJTdWl0ZSBh
bmQgYWxsIHN1Yi1zdWl0ZXMKKyAgICAgICAgcmV0dXJuIGRvbmUoZXJyU3VpdGUpOworICAgICAg
fQorICAgIH0KKworICAgIGlmIChzZWxmLl9hYm9ydCkgcmV0dXJuIGRvbmUoKTsKKworICAgIHZh
ciBjdXJyID0gc3VpdGUuc3VpdGVzW2krK107CisgICAgaWYgKCFjdXJyKSByZXR1cm4gZG9uZSgp
OworICAgIHNlbGYucnVuU3VpdGUoY3VyciwgbmV4dCk7CisgIH0KKworICBmdW5jdGlvbiBkb25l
KGVyclN1aXRlKSB7CisgICAgc2VsZi5zdWl0ZSA9IHN1aXRlOworICAgIHNlbGYuaG9vaygnYWZ0
ZXJBbGwnLCBmdW5jdGlvbigpeworICAgICAgc2VsZi5lbWl0KCdzdWl0ZSBlbmQnLCBzdWl0ZSk7
CisgICAgICBmbihlcnJTdWl0ZSk7CisgICAgfSk7CisgIH0KKworICB0aGlzLmhvb2soJ2JlZm9y
ZUFsbCcsIGZ1bmN0aW9uKGVycil7CisgICAgaWYgKGVycikgcmV0dXJuIGRvbmUoKTsKKyAgICBz
ZWxmLnJ1blRlc3RzKHN1aXRlLCBuZXh0KTsKKyAgfSk7Cit9OworCisvKioKKyAqIEhhbmRsZSB1
bmNhdWdodCBleGNlcHRpb25zLgorICoKKyAqIEBwYXJhbSB7RXJyb3J9IGVycgorICogQGFwaSBw
cml2YXRlCisgKi8KKworUnVubmVyLnByb3RvdHlwZS51bmNhdWdodCA9IGZ1bmN0aW9uKGVycil7
CisgIGlmIChlcnIpIHsKKyAgICBkZWJ1ZygndW5jYXVnaHQgZXhjZXB0aW9uICVzJywgZXJyLm1l
c3NhZ2UpOworICB9IGVsc2UgeworICAgIGRlYnVnKCd1bmNhdWdodCB1bmRlZmluZWQgZXhjZXB0
aW9uJyk7CisgICAgZXJyID0gbmV3IEVycm9yKCdDYXRjaGVkIHVuZGVmaW5lZCBlcnJvciwgZGlk
IHlvdSB0aHJvdyB3aXRob3V0IHNwZWNpZnlpbmcgd2hhdD8nKTsKKyAgfQorICAKKyAgdmFyIHJ1
bm5hYmxlID0gdGhpcy5jdXJyZW50UnVubmFibGU7CisgIGlmICghcnVubmFibGUgfHwgJ2ZhaWxl
ZCcgPT0gcnVubmFibGUuc3RhdGUpIHJldHVybjsKKyAgcnVubmFibGUuY2xlYXJUaW1lb3V0KCk7
CisgIGVyci51bmNhdWdodCA9IHRydWU7CisgIHRoaXMuZmFpbChydW5uYWJsZSwgZXJyKTsKKwor
ICAvLyByZWNvdmVyIGZyb20gdGVzdAorICBpZiAoJ3Rlc3QnID09IHJ1bm5hYmxlLnR5cGUpIHsK
KyAgICB0aGlzLmVtaXQoJ3Rlc3QgZW5kJywgcnVubmFibGUpOworICAgIHRoaXMuaG9va1VwKCdh
ZnRlckVhY2gnLCB0aGlzLm5leHQpOworICAgIHJldHVybjsKKyAgfQorCisgIC8vIGJhaWwgb24g
aG9va3MKKyAgdGhpcy5lbWl0KCdlbmQnKTsKK307CisKKy8qKgorICogUnVuIHRoZSByb290IHN1
aXRlIGFuZCBpbnZva2UgYGZuKGZhaWx1cmVzKWAKKyAqIG9uIGNvbXBsZXRpb24uCisgKgorICog
QHBhcmFtIHtGdW5jdGlvbn0gZm4KKyAqIEByZXR1cm4ge1J1bm5lcn0gZm9yIGNoYWluaW5nCisg
KiBAYXBpIHB1YmxpYworICovCisKK1J1bm5lci5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24oZm4p
eworICB2YXIgc2VsZiA9IHRoaXMKKyAgICAsIGZuID0gZm4gfHwgZnVuY3Rpb24oKXt9OworCisg
IGZ1bmN0aW9uIHVuY2F1Z2h0KGVycil7CisgICAgc2VsZi51bmNhdWdodChlcnIpOworICB9CisK
KyAgZGVidWcoJ3N0YXJ0Jyk7CisKKyAgLy8gY2FsbGJhY2sKKyAgdGhpcy5vbignZW5kJywgZnVu
Y3Rpb24oKXsKKyAgICBkZWJ1ZygnZW5kJyk7CisgICAgcHJvY2Vzcy5yZW1vdmVMaXN0ZW5lcign
dW5jYXVnaHRFeGNlcHRpb24nLCB1bmNhdWdodCk7CisgICAgZm4oc2VsZi5mYWlsdXJlcyk7Cisg
IH0pOworCisgIC8vIHJ1biBzdWl0ZXMKKyAgdGhpcy5lbWl0KCdzdGFydCcpOworICB0aGlzLnJ1
blN1aXRlKHRoaXMuc3VpdGUsIGZ1bmN0aW9uKCl7CisgICAgZGVidWcoJ2ZpbmlzaGVkIHJ1bm5p
bmcnKTsKKyAgICBzZWxmLmVtaXQoJ2VuZCcpOworICB9KTsKKworICAvLyB1bmNhdWdodCBleGNl
cHRpb24KKyAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCB1bmNhdWdodCk7CisKKyAg
cmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIENsZWFubHkgYWJvcnQgZXhlY3V0aW9uCisgKgor
ICogQHJldHVybiB7UnVubmVyfSBmb3IgY2hhaW5pbmcKKyAqIEBhcGkgcHVibGljCisgKi8KK1J1
bm5lci5wcm90b3R5cGUuYWJvcnQgPSBmdW5jdGlvbigpeworICBkZWJ1ZygnYWJvcnRpbmcnKTsK
KyAgdGhpcy5fYWJvcnQgPSB0cnVlOworfQorCisvKioKKyAqIEZpbHRlciBsZWFrcyB3aXRoIHRo
ZSBnaXZlbiBnbG9iYWxzIGZsYWdnZWQgYXMgYG9rYC4KKyAqCisgKiBAcGFyYW0ge0FycmF5fSBv
aworICogQHBhcmFtIHtBcnJheX0gZ2xvYmFscworICogQHJldHVybiB7QXJyYXl9CisgKiBAYXBp
IHByaXZhdGUKKyAqLworCitmdW5jdGlvbiBmaWx0ZXJMZWFrcyhvaywgZ2xvYmFscykgeworICBy
ZXR1cm4gZmlsdGVyKGdsb2JhbHMsIGZ1bmN0aW9uKGtleSl7CisgICAgLy8gRmlyZWZveCBhbmQg
Q2hyb21lIGV4cG9zZXMgaWZyYW1lcyBhcyBpbmRleCBpbnNpZGUgdGhlIHdpbmRvdyBvYmplY3QK
KyAgICBpZiAoL15kKy8udGVzdChrZXkpKSByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBpbiBmaXJl
Zm94CisgICAgLy8gaWYgcnVubmVyIHJ1bnMgaW4gYW4gaWZyYW1lLCB0aGlzIGlmcmFtZSdzIHdp
bmRvdy5nZXRJbnRlcmZhY2UgbWV0aG9kIG5vdCBpbml0IGF0IGZpcnN0CisgICAgLy8gaXQgaXMg
YXNzaWduZWQgaW4gc29tZSBzZWNvbmRzCisgICAgaWYgKGdsb2JhbC5uYXZpZ2F0b3IgJiYgL15n
ZXRJbnRlcmZhY2UvLnRlc3Qoa2V5KSkgcmV0dXJuIGZhbHNlOworCisgICAgLy8gYW4gaWZyYW1l
IGNvdWxkIGJlIGFwcHJvYWNoZWQgYnkgd2luZG93W2lmcmFtZUluZGV4XQorICAgIC8vIGluIGll
Niw3LDggYW5kIG9wZXJhLCBpZnJhbWVJbmRleCBpcyBlbnVtZXJhYmxlLCB0aGlzIGNvdWxkIGNh
dXNlIGxlYWsKKyAgICBpZiAoZ2xvYmFsLm5hdmlnYXRvciAmJiAvXlxkKy8udGVzdChrZXkpKSBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBPcGVyYSBhbmQgSUUgZXhwb3NlIGdsb2JhbCB2YXJpYWJs
ZXMgZm9yIEhUTUwgZWxlbWVudCBJRHMgKGlzc3VlICMyNDMpCisgICAgaWYgKC9ebW9jaGEtLy50
ZXN0KGtleSkpIHJldHVybiBmYWxzZTsKKworICAgIHZhciBtYXRjaGVkID0gZmlsdGVyKG9rLCBm
dW5jdGlvbihvayl7CisgICAgICBpZiAofm9rLmluZGV4T2YoJyonKSkgcmV0dXJuIDAgPT0ga2V5
LmluZGV4T2Yob2suc3BsaXQoJyonKVswXSk7CisgICAgICByZXR1cm4ga2V5ID09IG9rOworICAg
IH0pOworICAgIHJldHVybiBtYXRjaGVkLmxlbmd0aCA9PSAwICYmICghZ2xvYmFsLm5hdmlnYXRv
ciB8fCAnb25lcnJvcicgIT09IGtleSk7CisgIH0pOworfQorCisvKioKKyAqIEFycmF5IG9mIGds
b2JhbHMgZGVwZW5kZW50IG9uIHRoZSBlbnZpcm9ubWVudC4KKyAqCisgKiBAcmV0dXJuIHtBcnJh
eX0KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKKyBmdW5jdGlvbiBleHRyYUdsb2JhbHMoKSB7Cisg
IGlmICh0eXBlb2YocHJvY2VzcykgPT09ICdvYmplY3QnICYmCisgICAgICB0eXBlb2YocHJvY2Vz
cy52ZXJzaW9uKSA9PT0gJ3N0cmluZycpIHsKKworICAgIHZhciBub2RlVmVyc2lvbiA9IHByb2Nl
c3MudmVyc2lvbi5zcGxpdCgnLicpLnJlZHVjZShmdW5jdGlvbihhLCB2KSB7CisgICAgICByZXR1
cm4gYSA8PCA4IHwgdjsKKyAgICB9KTsKKworICAgIC8vICdlcnJubycgd2FzIHJlbmFtZWQgdG8g
cHJvY2Vzcy5fZXJybm8gaW4gdjAuOS4xMS4KKworICAgIGlmIChub2RlVmVyc2lvbiA8IDB4MDAw
OTBCKSB7CisgICAgICByZXR1cm4gWydlcnJubyddOworICAgIH0KKyAgfQorCisgIHJldHVybiBb
XTsKKyB9CisKK30pOyAvLyBtb2R1bGU6IHJ1bm5lci5qcworCityZXF1aXJlLnJlZ2lzdGVyKCJz
dWl0ZS5qcyIsIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgcmVxdWlyZSl7CisKKy8qKgorICog
TW9kdWxlIGRlcGVuZGVuY2llcy4KKyAqLworCit2YXIgRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgn
YnJvd3Nlci9ldmVudHMnKS5FdmVudEVtaXR0ZXIKKyAgLCBkZWJ1ZyA9IHJlcXVpcmUoJ2Jyb3dz
ZXIvZGVidWcnKSgnbW9jaGE6c3VpdGUnKQorICAsIG1pbGxpc2Vjb25kcyA9IHJlcXVpcmUoJy4v
bXMnKQorICAsIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpCisgICwgSG9vayA9IHJlcXVpcmUo
Jy4vaG9vaycpOworCisvKioKKyAqIEV4cG9zZSBgU3VpdGVgLgorICovCisKK2V4cG9ydHMgPSBt
b2R1bGUuZXhwb3J0cyA9IFN1aXRlOworCisvKioKKyAqIENyZWF0ZSBhIG5ldyBgU3VpdGVgIHdp
dGggdGhlIGdpdmVuIGB0aXRsZWAKKyAqIGFuZCBwYXJlbnQgYFN1aXRlYC4gV2hlbiBhIHN1aXRl
IHdpdGggdGhlCisgKiBzYW1lIHRpdGxlIGlzIGFscmVhZHkgcHJlc2VudCwgdGhhdCBzdWl0ZQor
ICogaXMgcmV0dXJuZWQgdG8gcHJvdmlkZSBuaWNlciByZXBvcnRlcgorICogYW5kIG1vcmUgZmxl
eGlibGUgbWV0YS10ZXN0aW5nLgorICoKKyAqIEBwYXJhbSB7U3VpdGV9IHBhcmVudAorICogQHBh
cmFtIHtTdHJpbmd9IHRpdGxlCisgKiBAcmV0dXJuIHtTdWl0ZX0KKyAqIEBhcGkgcHVibGljCisg
Ki8KKworZXhwb3J0cy5jcmVhdGUgPSBmdW5jdGlvbihwYXJlbnQsIHRpdGxlKXsKKyAgdmFyIHN1
aXRlID0gbmV3IFN1aXRlKHRpdGxlLCBwYXJlbnQuY3R4KTsKKyAgc3VpdGUucGFyZW50ID0gcGFy
ZW50OworICBpZiAocGFyZW50LnBlbmRpbmcpIHN1aXRlLnBlbmRpbmcgPSB0cnVlOworICB0aXRs
ZSA9IHN1aXRlLmZ1bGxUaXRsZSgpOworICBwYXJlbnQuYWRkU3VpdGUoc3VpdGUpOworICByZXR1
cm4gc3VpdGU7Cit9OworCisvKioKKyAqIEluaXRpYWxpemUgYSBuZXcgYFN1aXRlYCB3aXRoIHRo
ZSBnaXZlbgorICogYHRpdGxlYCBhbmQgYGN0eGAuCisgKgorICogQHBhcmFtIHtTdHJpbmd9IHRp
dGxlCisgKiBAcGFyYW0ge0NvbnRleHR9IGN0eAorICogQGFwaSBwcml2YXRlCisgKi8KKworZnVu
Y3Rpb24gU3VpdGUodGl0bGUsIHBhcmVudENvbnRleHQpIHsKKyAgdGhpcy50aXRsZSA9IHRpdGxl
OworICB2YXIgY29udGV4dCA9IGZ1bmN0aW9uKCkge307CisgIGNvbnRleHQucHJvdG90eXBlID0g
cGFyZW50Q29udGV4dDsKKyAgdGhpcy5jdHggPSBuZXcgY29udGV4dCgpOworICB0aGlzLnN1aXRl
cyA9IFtdOworICB0aGlzLnRlc3RzID0gW107CisgIHRoaXMucGVuZGluZyA9IGZhbHNlOworICB0
aGlzLl9iZWZvcmVFYWNoID0gW107CisgIHRoaXMuX2JlZm9yZUFsbCA9IFtdOworICB0aGlzLl9h
ZnRlckVhY2ggPSBbXTsKKyAgdGhpcy5fYWZ0ZXJBbGwgPSBbXTsKKyAgdGhpcy5yb290ID0gIXRp
dGxlOworICB0aGlzLl90aW1lb3V0ID0gMjAwMDsKKyAgdGhpcy5fZW5hYmxlVGltZW91dHMgPSB0
cnVlOworICB0aGlzLl9zbG93ID0gNzU7CisgIHRoaXMuX2JhaWwgPSBmYWxzZTsKK30KKworLyoq
CisgKiBJbmhlcml0IGZyb20gYEV2ZW50RW1pdHRlci5wcm90b3R5cGVgLgorICovCisKK2Z1bmN0
aW9uIEYoKXt9OworRi5wcm90b3R5cGUgPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlOworU3VpdGUu
cHJvdG90eXBlID0gbmV3IEY7CitTdWl0ZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTdWl0ZTsK
KworCisvKioKKyAqIFJldHVybiBhIGNsb25lIG9mIHRoaXMgYFN1aXRlYC4KKyAqCisgKiBAcmV0
dXJuIHtTdWl0ZX0KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1N1aXRlLnByb3RvdHlwZS5jbG9u
ZSA9IGZ1bmN0aW9uKCl7CisgIHZhciBzdWl0ZSA9IG5ldyBTdWl0ZSh0aGlzLnRpdGxlKTsKKyAg
ZGVidWcoJ2Nsb25lJyk7CisgIHN1aXRlLmN0eCA9IHRoaXMuY3R4OworICBzdWl0ZS50aW1lb3V0
KHRoaXMudGltZW91dCgpKTsKKyAgc3VpdGUuZW5hYmxlVGltZW91dHModGhpcy5lbmFibGVUaW1l
b3V0cygpKTsKKyAgc3VpdGUuc2xvdyh0aGlzLnNsb3coKSk7CisgIHN1aXRlLmJhaWwodGhpcy5i
YWlsKCkpOworICByZXR1cm4gc3VpdGU7Cit9OworCisvKioKKyAqIFNldCB0aW1lb3V0IGBtc2Ag
b3Igc2hvcnQtaGFuZCBzdWNoIGFzICIycyIuCisgKgorICogQHBhcmFtIHtOdW1iZXJ8U3RyaW5n
fSBtcworICogQHJldHVybiB7U3VpdGV8TnVtYmVyfSBmb3IgY2hhaW5pbmcKKyAqIEBhcGkgcHJp
dmF0ZQorICovCisKK1N1aXRlLnByb3RvdHlwZS50aW1lb3V0ID0gZnVuY3Rpb24obXMpeworICBp
ZiAoMCA9PSBhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gdGhpcy5fdGltZW91dDsKKyAgaWYgKCdz
dHJpbmcnID09IHR5cGVvZiBtcykgbXMgPSBtaWxsaXNlY29uZHMobXMpOworICBkZWJ1ZygndGlt
ZW91dCAlZCcsIG1zKTsKKyAgdGhpcy5fdGltZW91dCA9IHBhcnNlSW50KG1zLCAxMCk7CisgIHJl
dHVybiB0aGlzOworfTsKKworLyoqCisgICogU2V0IHRpbWVvdXQgYGVuYWJsZWRgLgorICAqCisg
ICogQHBhcmFtIHtCb29sZWFufSBlbmFibGVkCisgICogQHJldHVybiB7U3VpdGV8Qm9vbGVhbn0g
c2VsZiBvciBlbmFibGVkCisgICogQGFwaSBwcml2YXRlCisgICovCisKK1N1aXRlLnByb3RvdHlw
ZS5lbmFibGVUaW1lb3V0cyA9IGZ1bmN0aW9uKGVuYWJsZWQpeworICBpZiAoYXJndW1lbnRzLmxl
bmd0aCA9PT0gMCkgcmV0dXJuIHRoaXMuX2VuYWJsZVRpbWVvdXRzOworICBkZWJ1ZygnZW5hYmxl
VGltZW91dHMgJXMnLCBlbmFibGVkKTsKKyAgdGhpcy5fZW5hYmxlVGltZW91dHMgPSBlbmFibGVk
OworICByZXR1cm4gdGhpczsKK30KKworLyoqCisgKiBTZXQgc2xvdyBgbXNgIG9yIHNob3J0LWhh
bmQgc3VjaCBhcyAiMnMiLgorICoKKyAqIEBwYXJhbSB7TnVtYmVyfFN0cmluZ30gbXMKKyAqIEBy
ZXR1cm4ge1N1aXRlfE51bWJlcn0gZm9yIGNoYWluaW5nCisgKiBAYXBpIHByaXZhdGUKKyAqLwor
CitTdWl0ZS5wcm90b3R5cGUuc2xvdyA9IGZ1bmN0aW9uKG1zKXsKKyAgaWYgKDAgPT09IGFyZ3Vt
ZW50cy5sZW5ndGgpIHJldHVybiB0aGlzLl9zbG93OworICBpZiAoJ3N0cmluZycgPT0gdHlwZW9m
IG1zKSBtcyA9IG1pbGxpc2Vjb25kcyhtcyk7CisgIGRlYnVnKCdzbG93ICVkJywgbXMpOworICB0
aGlzLl9zbG93ID0gbXM7CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBTZXRzIHdoZXRo
ZXIgdG8gYmFpbCBhZnRlciBmaXJzdCBlcnJvci4KKyAqCisgKiBAcGFybWEge0Jvb2xlYW59IGJh
aWwKKyAqIEByZXR1cm4ge1N1aXRlfE51bWJlcn0gZm9yIGNoYWluaW5nCisgKiBAYXBpIHByaXZh
dGUKKyAqLworCitTdWl0ZS5wcm90b3R5cGUuYmFpbCA9IGZ1bmN0aW9uKGJhaWwpeworICBpZiAo
MCA9PSBhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gdGhpcy5fYmFpbDsKKyAgZGVidWcoJ2JhaWwg
JXMnLCBiYWlsKTsKKyAgdGhpcy5fYmFpbCA9IGJhaWw7CisgIHJldHVybiB0aGlzOworfTsKKwor
LyoqCisgKiBSdW4gYGZuKHRlc3RbLCBkb25lXSlgIGJlZm9yZSBydW5uaW5nIHRlc3RzLgorICoK
KyAqIEBwYXJhbSB7RnVuY3Rpb259IGZuCisgKiBAcmV0dXJuIHtTdWl0ZX0gZm9yIGNoYWluaW5n
CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitTdWl0ZS5wcm90b3R5cGUuYmVmb3JlQWxsID0gZnVu
Y3Rpb24odGl0bGUsIGZuKXsKKyAgaWYgKHRoaXMucGVuZGluZykgcmV0dXJuIHRoaXM7CisgIGlm
ICgnZnVuY3Rpb24nID09PSB0eXBlb2YgdGl0bGUpIHsKKyAgICBmbiA9IHRpdGxlOworICAgIHRp
dGxlID0gZm4ubmFtZTsKKyAgfQorICB0aXRsZSA9ICciYmVmb3JlIGFsbCIgaG9vaycgKyAodGl0
bGUgPyAnOiAnICsgdGl0bGUgOiAnJyk7CisKKyAgdmFyIGhvb2sgPSBuZXcgSG9vayh0aXRsZSwg
Zm4pOworICBob29rLnBhcmVudCA9IHRoaXM7CisgIGhvb2sudGltZW91dCh0aGlzLnRpbWVvdXQo
KSk7CisgIGhvb2suZW5hYmxlVGltZW91dHModGhpcy5lbmFibGVUaW1lb3V0cygpKTsKKyAgaG9v
ay5zbG93KHRoaXMuc2xvdygpKTsKKyAgaG9vay5jdHggPSB0aGlzLmN0eDsKKyAgdGhpcy5fYmVm
b3JlQWxsLnB1c2goaG9vayk7CisgIHRoaXMuZW1pdCgnYmVmb3JlQWxsJywgaG9vayk7CisgIHJl
dHVybiB0aGlzOworfTsKKworLyoqCisgKiBSdW4gYGZuKHRlc3RbLCBkb25lXSlgIGFmdGVyIHJ1
bm5pbmcgdGVzdHMuCisgKgorICogQHBhcmFtIHtGdW5jdGlvbn0gZm4KKyAqIEByZXR1cm4ge1N1
aXRlfSBmb3IgY2hhaW5pbmcKKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1N1aXRlLnByb3RvdHlw
ZS5hZnRlckFsbCA9IGZ1bmN0aW9uKHRpdGxlLCBmbil7CisgIGlmICh0aGlzLnBlbmRpbmcpIHJl
dHVybiB0aGlzOworICBpZiAoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIHRpdGxlKSB7CisgICAgZm4g
PSB0aXRsZTsKKyAgICB0aXRsZSA9IGZuLm5hbWU7CisgIH0KKyAgdGl0bGUgPSAnImFmdGVyIGFs
bCIgaG9vaycgKyAodGl0bGUgPyAnOiAnICsgdGl0bGUgOiAnJyk7CisKKyAgdmFyIGhvb2sgPSBu
ZXcgSG9vayh0aXRsZSwgZm4pOworICBob29rLnBhcmVudCA9IHRoaXM7CisgIGhvb2sudGltZW91
dCh0aGlzLnRpbWVvdXQoKSk7CisgIGhvb2suZW5hYmxlVGltZW91dHModGhpcy5lbmFibGVUaW1l
b3V0cygpKTsKKyAgaG9vay5zbG93KHRoaXMuc2xvdygpKTsKKyAgaG9vay5jdHggPSB0aGlzLmN0
eDsKKyAgdGhpcy5fYWZ0ZXJBbGwucHVzaChob29rKTsKKyAgdGhpcy5lbWl0KCdhZnRlckFsbCcs
IGhvb2spOworICByZXR1cm4gdGhpczsKK307CisKKy8qKgorICogUnVuIGBmbih0ZXN0WywgZG9u
ZV0pYCBiZWZvcmUgZWFjaCB0ZXN0IGNhc2UuCisgKgorICogQHBhcmFtIHtGdW5jdGlvbn0gZm4K
KyAqIEByZXR1cm4ge1N1aXRlfSBmb3IgY2hhaW5pbmcKKyAqIEBhcGkgcHJpdmF0ZQorICovCisK
K1N1aXRlLnByb3RvdHlwZS5iZWZvcmVFYWNoID0gZnVuY3Rpb24odGl0bGUsIGZuKXsKKyAgaWYg
KHRoaXMucGVuZGluZykgcmV0dXJuIHRoaXM7CisgIGlmICgnZnVuY3Rpb24nID09PSB0eXBlb2Yg
dGl0bGUpIHsKKyAgICBmbiA9IHRpdGxlOworICAgIHRpdGxlID0gZm4ubmFtZTsKKyAgfQorICB0
aXRsZSA9ICciYmVmb3JlIGVhY2giIGhvb2snICsgKHRpdGxlID8gJzogJyArIHRpdGxlIDogJycp
OworCisgIHZhciBob29rID0gbmV3IEhvb2sodGl0bGUsIGZuKTsKKyAgaG9vay5wYXJlbnQgPSB0
aGlzOworICBob29rLnRpbWVvdXQodGhpcy50aW1lb3V0KCkpOworICBob29rLmVuYWJsZVRpbWVv
dXRzKHRoaXMuZW5hYmxlVGltZW91dHMoKSk7CisgIGhvb2suc2xvdyh0aGlzLnNsb3coKSk7Cisg
IGhvb2suY3R4ID0gdGhpcy5jdHg7CisgIHRoaXMuX2JlZm9yZUVhY2gucHVzaChob29rKTsKKyAg
dGhpcy5lbWl0KCdiZWZvcmVFYWNoJywgaG9vayk7CisgIHJldHVybiB0aGlzOworfTsKKworLyoq
CisgKiBSdW4gYGZuKHRlc3RbLCBkb25lXSlgIGFmdGVyIGVhY2ggdGVzdCBjYXNlLgorICoKKyAq
IEBwYXJhbSB7RnVuY3Rpb259IGZuCisgKiBAcmV0dXJuIHtTdWl0ZX0gZm9yIGNoYWluaW5nCisg
KiBAYXBpIHByaXZhdGUKKyAqLworCitTdWl0ZS5wcm90b3R5cGUuYWZ0ZXJFYWNoID0gZnVuY3Rp
b24odGl0bGUsIGZuKXsKKyAgaWYgKHRoaXMucGVuZGluZykgcmV0dXJuIHRoaXM7CisgIGlmICgn
ZnVuY3Rpb24nID09PSB0eXBlb2YgdGl0bGUpIHsKKyAgICBmbiA9IHRpdGxlOworICAgIHRpdGxl
ID0gZm4ubmFtZTsKKyAgfQorICB0aXRsZSA9ICciYWZ0ZXIgZWFjaCIgaG9vaycgKyAodGl0bGUg
PyAnOiAnICsgdGl0bGUgOiAnJyk7CisKKyAgdmFyIGhvb2sgPSBuZXcgSG9vayh0aXRsZSwgZm4p
OworICBob29rLnBhcmVudCA9IHRoaXM7CisgIGhvb2sudGltZW91dCh0aGlzLnRpbWVvdXQoKSk7
CisgIGhvb2suZW5hYmxlVGltZW91dHModGhpcy5lbmFibGVUaW1lb3V0cygpKTsKKyAgaG9vay5z
bG93KHRoaXMuc2xvdygpKTsKKyAgaG9vay5jdHggPSB0aGlzLmN0eDsKKyAgdGhpcy5fYWZ0ZXJF
YWNoLnB1c2goaG9vayk7CisgIHRoaXMuZW1pdCgnYWZ0ZXJFYWNoJywgaG9vayk7CisgIHJldHVy
biB0aGlzOworfTsKKworLyoqCisgKiBBZGQgYSB0ZXN0IGBzdWl0ZWAuCisgKgorICogQHBhcmFt
IHtTdWl0ZX0gc3VpdGUKKyAqIEByZXR1cm4ge1N1aXRlfSBmb3IgY2hhaW5pbmcKKyAqIEBhcGkg
cHJpdmF0ZQorICovCisKK1N1aXRlLnByb3RvdHlwZS5hZGRTdWl0ZSA9IGZ1bmN0aW9uKHN1aXRl
KXsKKyAgc3VpdGUucGFyZW50ID0gdGhpczsKKyAgc3VpdGUudGltZW91dCh0aGlzLnRpbWVvdXQo
KSk7CisgIHN1aXRlLmVuYWJsZVRpbWVvdXRzKHRoaXMuZW5hYmxlVGltZW91dHMoKSk7CisgIHN1
aXRlLnNsb3codGhpcy5zbG93KCkpOworICBzdWl0ZS5iYWlsKHRoaXMuYmFpbCgpKTsKKyAgdGhp
cy5zdWl0ZXMucHVzaChzdWl0ZSk7CisgIHRoaXMuZW1pdCgnc3VpdGUnLCBzdWl0ZSk7CisgIHJl
dHVybiB0aGlzOworfTsKKworLyoqCisgKiBBZGQgYSBgdGVzdGAgdG8gdGhpcyBzdWl0ZS4KKyAq
CisgKiBAcGFyYW0ge1Rlc3R9IHRlc3QKKyAqIEByZXR1cm4ge1N1aXRlfSBmb3IgY2hhaW5pbmcK
KyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1N1aXRlLnByb3RvdHlwZS5hZGRUZXN0ID0gZnVuY3Rp
b24odGVzdCl7CisgIHRlc3QucGFyZW50ID0gdGhpczsKKyAgdGVzdC50aW1lb3V0KHRoaXMudGlt
ZW91dCgpKTsKKyAgdGVzdC5lbmFibGVUaW1lb3V0cyh0aGlzLmVuYWJsZVRpbWVvdXRzKCkpOwor
ICB0ZXN0LnNsb3codGhpcy5zbG93KCkpOworICB0ZXN0LmN0eCA9IHRoaXMuY3R4OworICB0aGlz
LnRlc3RzLnB1c2godGVzdCk7CisgIHRoaXMuZW1pdCgndGVzdCcsIHRlc3QpOworICByZXR1cm4g
dGhpczsKK307CisKKy8qKgorICogUmV0dXJuIHRoZSBmdWxsIHRpdGxlIGdlbmVyYXRlZCBieSBy
ZWN1cnNpdmVseQorICogY29uY2F0ZW5hdGluZyB0aGUgcGFyZW50J3MgZnVsbCB0aXRsZS4KKyAq
CisgKiBAcmV0dXJuIHtTdHJpbmd9CisgKiBAYXBpIHB1YmxpYworICovCisKK1N1aXRlLnByb3Rv
dHlwZS5mdWxsVGl0bGUgPSBmdW5jdGlvbigpeworICBpZiAodGhpcy5wYXJlbnQpIHsKKyAgICB2
YXIgZnVsbCA9IHRoaXMucGFyZW50LmZ1bGxUaXRsZSgpOworICAgIGlmIChmdWxsKSByZXR1cm4g
ZnVsbCArICcgJyArIHRoaXMudGl0bGU7CisgIH0KKyAgcmV0dXJuIHRoaXMudGl0bGU7Cit9Owor
CisvKioKKyAqIFJldHVybiB0aGUgdG90YWwgbnVtYmVyIG9mIHRlc3RzLgorICoKKyAqIEByZXR1
cm4ge051bWJlcn0KKyAqIEBhcGkgcHVibGljCisgKi8KKworU3VpdGUucHJvdG90eXBlLnRvdGFs
ID0gZnVuY3Rpb24oKXsKKyAgcmV0dXJuIHV0aWxzLnJlZHVjZSh0aGlzLnN1aXRlcywgZnVuY3Rp
b24oc3VtLCBzdWl0ZSl7CisgICAgcmV0dXJuIHN1bSArIHN1aXRlLnRvdGFsKCk7CisgIH0sIDAp
ICsgdGhpcy50ZXN0cy5sZW5ndGg7Cit9OworCisvKioKKyAqIEl0ZXJhdGVzIHRocm91Z2ggZWFj
aCBzdWl0ZSByZWN1cnNpdmVseSB0byBmaW5kCisgKiBhbGwgdGVzdHMuIEFwcGxpZXMgYSBmdW5j
dGlvbiBpbiB0aGUgZm9ybWF0CisgKiBgZm4odGVzdClgLgorICoKKyAqIEBwYXJhbSB7RnVuY3Rp
b259IGZuCisgKiBAcmV0dXJuIHtTdWl0ZX0KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1N1aXRl
LnByb3RvdHlwZS5lYWNoVGVzdCA9IGZ1bmN0aW9uKGZuKXsKKyAgdXRpbHMuZm9yRWFjaCh0aGlz
LnRlc3RzLCBmbik7CisgIHV0aWxzLmZvckVhY2godGhpcy5zdWl0ZXMsIGZ1bmN0aW9uKHN1aXRl
KXsKKyAgICBzdWl0ZS5lYWNoVGVzdChmbik7CisgIH0pOworICByZXR1cm4gdGhpczsKK307CisK
K30pOyAvLyBtb2R1bGU6IHN1aXRlLmpzCisKK3JlcXVpcmUucmVnaXN0ZXIoInRlc3QuanMiLCBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIHJlcXVpcmUpeworCisvKioKKyAqIE1vZHVsZSBkZXBl
bmRlbmNpZXMuCisgKi8KKwordmFyIFJ1bm5hYmxlID0gcmVxdWlyZSgnLi9ydW5uYWJsZScpOwor
CisvKioKKyAqIEV4cG9zZSBgVGVzdGAuCisgKi8KKworbW9kdWxlLmV4cG9ydHMgPSBUZXN0Owor
CisvKioKKyAqIEluaXRpYWxpemUgYSBuZXcgYFRlc3RgIHdpdGggdGhlIGdpdmVuIGB0aXRsZWAg
YW5kIGNhbGxiYWNrIGBmbmAuCisgKgorICogQHBhcmFtIHtTdHJpbmd9IHRpdGxlCisgKiBAcGFy
YW0ge0Z1bmN0aW9ufSBmbgorICogQGFwaSBwcml2YXRlCisgKi8KKworZnVuY3Rpb24gVGVzdCh0
aXRsZSwgZm4pIHsKKyAgUnVubmFibGUuY2FsbCh0aGlzLCB0aXRsZSwgZm4pOworICB0aGlzLnBl
bmRpbmcgPSAhZm47CisgIHRoaXMudHlwZSA9ICd0ZXN0JzsKK30KKworLyoqCisgKiBJbmhlcml0
IGZyb20gYFJ1bm5hYmxlLnByb3RvdHlwZWAuCisgKi8KKworZnVuY3Rpb24gRigpe307CitGLnBy
b3RvdHlwZSA9IFJ1bm5hYmxlLnByb3RvdHlwZTsKK1Rlc3QucHJvdG90eXBlID0gbmV3IEY7CitU
ZXN0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRlc3Q7CisKKworfSk7IC8vIG1vZHVsZTogdGVz
dC5qcworCityZXF1aXJlLnJlZ2lzdGVyKCJ1dGlscy5qcyIsIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgcmVxdWlyZSl7CisvKioKKyAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuCisgKi8KKwordmFy
IGZzID0gcmVxdWlyZSgnYnJvd3Nlci9mcycpCisgICwgcGF0aCA9IHJlcXVpcmUoJ2Jyb3dzZXIv
cGF0aCcpCisgICwgam9pbiA9IHBhdGguam9pbgorICAsIGRlYnVnID0gcmVxdWlyZSgnYnJvd3Nl
ci9kZWJ1ZycpKCdtb2NoYTp3YXRjaCcpOworCisvKioKKyAqIElnbm9yZWQgZGlyZWN0b3JpZXMu
CisgKi8KKwordmFyIGlnbm9yZSA9IFsnbm9kZV9tb2R1bGVzJywgJy5naXQnXTsKKworLyoqCisg
KiBFc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIHRoZSBnaXZlbiBzdHJpbmcgb2YgaHRtbC4K
KyAqCisgKiBAcGFyYW0gIHtTdHJpbmd9IGh0bWwKKyAqIEByZXR1cm4ge1N0cmluZ30KKyAqIEBh
cGkgcHJpdmF0ZQorICovCisKK2V4cG9ydHMuZXNjYXBlID0gZnVuY3Rpb24oaHRtbCl7CisgIHJl
dHVybiBTdHJpbmcoaHRtbCkKKyAgICAucmVwbGFjZSgvJi9nLCAnJmFtcDsnKQorICAgIC5yZXBs
YWNlKC8iL2csICcmcXVvdDsnKQorICAgIC5yZXBsYWNlKC88L2csICcmbHQ7JykKKyAgICAucmVw
bGFjZSgvPi9nLCAnJmd0OycpOworfTsKKworLyoqCisgKiBBcnJheSNmb3JFYWNoICg8PUlFOCkK
KyAqCisgKiBAcGFyYW0ge0FycmF5fSBhcnJheQorICogQHBhcmFtIHtGdW5jdGlvbn0gZm4KKyAq
IEBwYXJhbSB7T2JqZWN0fSBzY29wZQorICogQGFwaSBwcml2YXRlCisgKi8KKworZXhwb3J0cy5m
b3JFYWNoID0gZnVuY3Rpb24oYXJyLCBmbiwgc2NvcGUpeworICBmb3IgKHZhciBpID0gMCwgbCA9
IGFyci5sZW5ndGg7IGkgPCBsOyBpKyspCisgICAgZm4uY2FsbChzY29wZSwgYXJyW2ldLCBpKTsK
K307CisKKy8qKgorICogQXJyYXkjbWFwICg8PUlFOCkKKyAqCisgKiBAcGFyYW0ge0FycmF5fSBh
cnJheQorICogQHBhcmFtIHtGdW5jdGlvbn0gZm4KKyAqIEBwYXJhbSB7T2JqZWN0fSBzY29wZQor
ICogQGFwaSBwcml2YXRlCisgKi8KKworZXhwb3J0cy5tYXAgPSBmdW5jdGlvbihhcnIsIGZuLCBz
Y29wZSl7CisgIHZhciByZXN1bHQgPSBbXTsKKyAgZm9yICh2YXIgaSA9IDAsIGwgPSBhcnIubGVu
Z3RoOyBpIDwgbDsgaSsrKQorICAgIHJlc3VsdC5wdXNoKGZuLmNhbGwoc2NvcGUsIGFycltpXSwg
aSkpOworICByZXR1cm4gcmVzdWx0OworfTsKKworLyoqCisgKiBBcnJheSNpbmRleE9mICg8PUlF
OCkKKyAqCisgKiBAcGFybWEge0FycmF5fSBhcnIKKyAqIEBwYXJhbSB7T2JqZWN0fSBvYmogdG8g
ZmluZCBpbmRleCBvZgorICogQHBhcmFtIHtOdW1iZXJ9IHN0YXJ0CisgKiBAYXBpIHByaXZhdGUK
KyAqLworCitleHBvcnRzLmluZGV4T2YgPSBmdW5jdGlvbihhcnIsIG9iaiwgc3RhcnQpeworICBm
b3IgKHZhciBpID0gc3RhcnQgfHwgMCwgbCA9IGFyci5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAg
ICBpZiAoYXJyW2ldID09PSBvYmopCisgICAgICByZXR1cm4gaTsKKyAgfQorICByZXR1cm4gLTE7
Cit9OworCisvKioKKyAqIEFycmF5I3JlZHVjZSAoPD1JRTgpCisgKgorICogQHBhcmFtIHtBcnJh
eX0gYXJyYXkKKyAqIEBwYXJhbSB7RnVuY3Rpb259IGZuCisgKiBAcGFyYW0ge09iamVjdH0gaW5p
dGlhbCB2YWx1ZQorICogQGFwaSBwcml2YXRlCisgKi8KKworZXhwb3J0cy5yZWR1Y2UgPSBmdW5j
dGlvbihhcnIsIGZuLCB2YWwpeworICB2YXIgcnZhbCA9IHZhbDsKKworICBmb3IgKHZhciBpID0g
MCwgbCA9IGFyci5sZW5ndGg7IGkgPCBsOyBpKyspIHsKKyAgICBydmFsID0gZm4ocnZhbCwgYXJy
W2ldLCBpLCBhcnIpOworICB9CisKKyAgcmV0dXJuIHJ2YWw7Cit9OworCisvKioKKyAqIEFycmF5
I2ZpbHRlciAoPD1JRTgpCisgKgorICogQHBhcmFtIHtBcnJheX0gYXJyYXkKKyAqIEBwYXJhbSB7
RnVuY3Rpb259IGZuCisgKiBAYXBpIHByaXZhdGUKKyAqLworCitleHBvcnRzLmZpbHRlciA9IGZ1
bmN0aW9uKGFyciwgZm4peworICB2YXIgcmV0ID0gW107CisKKyAgZm9yICh2YXIgaSA9IDAsIGwg
PSBhcnIubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CisgICAgdmFyIHZhbCA9IGFycltpXTsKKyAgICBp
ZiAoZm4odmFsLCBpLCBhcnIpKSByZXQucHVzaCh2YWwpOworICB9CisKKyAgcmV0dXJuIHJldDsK
K307CisKKy8qKgorICogT2JqZWN0LmtleXMgKDw9SUU4KQorICoKKyAqIEBwYXJhbSB7T2JqZWN0
fSBvYmoKKyAqIEByZXR1cm4ge0FycmF5fSBrZXlzCisgKiBAYXBpIHByaXZhdGUKKyAqLworCitl
eHBvcnRzLmtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbihvYmopIHsKKyAgdmFyIGtleXMg
PSBbXQorICAgICwgaGFzID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSAvLyBmb3Ig
YHdpbmRvd2Agb24gPD1JRTgKKworICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7CisgICAgaWYgKGhh
cy5jYWxsKG9iaiwga2V5KSkgeworICAgICAga2V5cy5wdXNoKGtleSk7CisgICAgfQorICB9CisK
KyAgcmV0dXJuIGtleXM7Cit9OworCisvKioKKyAqIFdhdGNoIHRoZSBnaXZlbiBgZmlsZXNgIGZv
ciBjaGFuZ2VzCisgKiBhbmQgaW52b2tlIGBmbihmaWxlKWAgb24gbW9kaWZpY2F0aW9uLgorICoK
KyAqIEBwYXJhbSB7QXJyYXl9IGZpbGVzCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbgorICogQGFw
aSBwcml2YXRlCisgKi8KKworZXhwb3J0cy53YXRjaCA9IGZ1bmN0aW9uKGZpbGVzLCBmbil7Cisg
IHZhciBvcHRpb25zID0geyBpbnRlcnZhbDogMTAwIH07CisgIGZpbGVzLmZvckVhY2goZnVuY3Rp
b24oZmlsZSl7CisgICAgZGVidWcoJ2ZpbGUgJXMnLCBmaWxlKTsKKyAgICBmcy53YXRjaEZpbGUo
ZmlsZSwgb3B0aW9ucywgZnVuY3Rpb24oY3VyciwgcHJldil7CisgICAgICBpZiAocHJldi5tdGlt
ZSA8IGN1cnIubXRpbWUpIGZuKGZpbGUpOworICAgIH0pOworICB9KTsKK307CisKKy8qKgorICog
SWdub3JlZCBmaWxlcy4KKyAqLworCitmdW5jdGlvbiBpZ25vcmVkKHBhdGgpeworICByZXR1cm4g
IX5pZ25vcmUuaW5kZXhPZihwYXRoKTsKK30KKworLyoqCisgKiBMb29rdXAgZmlsZXMgaW4gdGhl
IGdpdmVuIGBkaXJgLgorICoKKyAqIEByZXR1cm4ge0FycmF5fQorICogQGFwaSBwcml2YXRlCisg
Ki8KKworZXhwb3J0cy5maWxlcyA9IGZ1bmN0aW9uKGRpciwgZXh0LCByZXQpeworICByZXQgPSBy
ZXQgfHwgW107CisgIGV4dCA9IGV4dCB8fCBbJ2pzJ107CisKKyAgdmFyIHJlID0gbmV3IFJlZ0V4
cCgnXFwuKCcgKyBleHQuam9pbignfCcpICsgJykkJyk7CisKKyAgZnMucmVhZGRpclN5bmMoZGly
KQorICAuZmlsdGVyKGlnbm9yZWQpCisgIC5mb3JFYWNoKGZ1bmN0aW9uKHBhdGgpeworICAgIHBh
dGggPSBqb2luKGRpciwgcGF0aCk7CisgICAgaWYgKGZzLnN0YXRTeW5jKHBhdGgpLmlzRGlyZWN0
b3J5KCkpIHsKKyAgICAgIGV4cG9ydHMuZmlsZXMocGF0aCwgZXh0LCByZXQpOworICAgIH0gZWxz
ZSBpZiAocGF0aC5tYXRjaChyZSkpIHsKKyAgICAgIHJldC5wdXNoKHBhdGgpOworICAgIH0KKyAg
fSk7CisKKyAgcmV0dXJuIHJldDsKK307CisKKy8qKgorICogQ29tcHV0ZSBhIHNsdWcgZnJvbSB0
aGUgZ2l2ZW4gYHN0cmAuCisgKgorICogQHBhcmFtIHtTdHJpbmd9IHN0cgorICogQHJldHVybiB7
U3RyaW5nfQorICogQGFwaSBwcml2YXRlCisgKi8KKworZXhwb3J0cy5zbHVnID0gZnVuY3Rpb24o
c3RyKXsKKyAgcmV0dXJuIHN0cgorICAgIC50b0xvd2VyQ2FzZSgpCisgICAgLnJlcGxhY2UoLyAr
L2csICctJykKKyAgICAucmVwbGFjZSgvW14tXHddL2csICcnKTsKK307CisKKy8qKgorICogU3Ry
aXAgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZnJvbSBgc3RyYCwKKyAqIGFuZCByZS1pbmRlbnQg
Zm9yIHByZSB3aGl0ZXNwYWNlLgorICovCisKK2V4cG9ydHMuY2xlYW4gPSBmdW5jdGlvbihzdHIp
IHsKKyAgc3RyID0gc3RyCisgICAgLnJlcGxhY2UoL1xyXG4/fFtcblx1MjAyOFx1MjAyOV0vZywg
IlxuIikucmVwbGFjZSgvXlx1RkVGRi8sICcnKQorICAgIC5yZXBsYWNlKC9eZnVuY3Rpb24gKlwo
LipcKSAqe3xcKC4qXCkgKj0+ICp7Py8sICcnKQorICAgIC5yZXBsYWNlKC9ccytcfSQvLCAnJyk7
CisKKyAgdmFyIHNwYWNlcyA9IHN0ci5tYXRjaCgvXlxuPyggKikvKVsxXS5sZW5ndGgKKyAgICAs
IHRhYnMgPSBzdHIubWF0Y2goL15cbj8oXHQqKS8pWzFdLmxlbmd0aAorICAgICwgcmUgPSBuZXcg
UmVnRXhwKCdeXG4/JyArICh0YWJzID8gJ1x0JyA6ICcgJykgKyAneycgKyAodGFicyA/IHRhYnMg
OiBzcGFjZXMpICsgJ30nLCAnZ20nKTsKKworICBzdHIgPSBzdHIucmVwbGFjZShyZSwgJycpOwor
CisgIHJldHVybiBleHBvcnRzLnRyaW0oc3RyKTsKK307CisKKy8qKgorICogRXNjYXBlIHJlZ3Vs
YXIgZXhwcmVzc2lvbiBjaGFyYWN0ZXJzIGluIGBzdHJgLgorICoKKyAqIEBwYXJhbSB7U3RyaW5n
fSBzdHIKKyAqIEByZXR1cm4ge1N0cmluZ30KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK2V4cG9y
dHMuZXNjYXBlUmVnZXhwID0gZnVuY3Rpb24oc3RyKXsKKyAgcmV0dXJuIHN0ci5yZXBsYWNlKC9b
LVxcXiQqKz8uKCl8W1xde31dL2csICJcXCQmIik7Cit9OworCisvKioKKyAqIFRyaW0gdGhlIGdp
dmVuIGBzdHJgLgorICoKKyAqIEBwYXJhbSB7U3RyaW5nfSBzdHIKKyAqIEByZXR1cm4ge1N0cmlu
Z30KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK2V4cG9ydHMudHJpbSA9IGZ1bmN0aW9uKHN0cil7
CisgIHJldHVybiBzdHIucmVwbGFjZSgvXlxzK3xccyskL2csICcnKTsKK307CisKKy8qKgorICog
UGFyc2UgdGhlIGdpdmVuIGBxc2AuCisgKgorICogQHBhcmFtIHtTdHJpbmd9IHFzCisgKiBAcmV0
dXJuIHtPYmplY3R9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitleHBvcnRzLnBhcnNlUXVlcnkg
PSBmdW5jdGlvbihxcyl7CisgIHJldHVybiBleHBvcnRzLnJlZHVjZShxcy5yZXBsYWNlKCc/Jywg
JycpLnNwbGl0KCcmJyksIGZ1bmN0aW9uKG9iaiwgcGFpcil7CisgICAgdmFyIGkgPSBwYWlyLmlu
ZGV4T2YoJz0nKQorICAgICAgLCBrZXkgPSBwYWlyLnNsaWNlKDAsIGkpCisgICAgICAsIHZhbCA9
IHBhaXIuc2xpY2UoKytpKTsKKworICAgIG9ialtrZXldID0gZGVjb2RlVVJJQ29tcG9uZW50KHZh
bCk7CisgICAgcmV0dXJuIG9iajsKKyAgfSwge30pOworfTsKKworLyoqCisgKiBIaWdobGlnaHQg
dGhlIGdpdmVuIHN0cmluZyBvZiBganNgLgorICoKKyAqIEBwYXJhbSB7U3RyaW5nfSBqcworICog
QHJldHVybiB7U3RyaW5nfQorICogQGFwaSBwcml2YXRlCisgKi8KKworZnVuY3Rpb24gaGlnaGxp
Z2h0KGpzKSB7CisgIHJldHVybiBqcworICAgIC5yZXBsYWNlKC88L2csICcmbHQ7JykKKyAgICAu
cmVwbGFjZSgvPi9nLCAnJmd0OycpCisgICAgLnJlcGxhY2UoL1wvXC8oLiopL2dtLCAnPHNwYW4g
Y2xhc3M9ImNvbW1lbnQiPi8vJDE8L3NwYW4+JykKKyAgICAucmVwbGFjZSgvKCcuKj8nKS9nbSwg
JzxzcGFuIGNsYXNzPSJzdHJpbmciPiQxPC9zcGFuPicpCisgICAgLnJlcGxhY2UoLyhcZCtcLlxk
KykvZ20sICc8c3BhbiBjbGFzcz0ibnVtYmVyIj4kMTwvc3Bhbj4nKQorICAgIC5yZXBsYWNlKC8o
XGQrKS9nbSwgJzxzcGFuIGNsYXNzPSJudW1iZXIiPiQxPC9zcGFuPicpCisgICAgLnJlcGxhY2Uo
L1xibmV3WyBcdF0rKFx3KykvZ20sICc8c3BhbiBjbGFzcz0ia2V5d29yZCI+bmV3PC9zcGFuPiA8
c3BhbiBjbGFzcz0iaW5pdCI+JDE8L3NwYW4+JykKKyAgICAucmVwbGFjZSgvXGIoZnVuY3Rpb258
bmV3fHRocm93fHJldHVybnx2YXJ8aWZ8ZWxzZSlcYi9nbSwgJzxzcGFuIGNsYXNzPSJrZXl3b3Jk
Ij4kMTwvc3Bhbj4nKQorfQorCisvKioKKyAqIEhpZ2hsaWdodCB0aGUgY29udGVudHMgb2YgdGFn
IGBuYW1lYC4KKyAqCisgKiBAcGFyYW0ge1N0cmluZ30gbmFtZQorICogQGFwaSBwcml2YXRlCisg
Ki8KKworZXhwb3J0cy5oaWdobGlnaHRUYWdzID0gZnVuY3Rpb24obmFtZSkgeworICB2YXIgY29k
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKG5hbWUpOworICBmb3IgKHZhciBpID0g
MCwgbGVuID0gY29kZS5sZW5ndGg7IGkgPCBsZW47ICsraSkgeworICAgIGNvZGVbaV0uaW5uZXJI
VE1MID0gaGlnaGxpZ2h0KGNvZGVbaV0uaW5uZXJIVE1MKTsKKyAgfQorfTsKKworCisvKioKKyAq
IFN0cmluZ2lmeSBgb2JqYC4KKyAqCisgKiBAcGFyYW0ge09iamVjdH0gb2JqCisgKiBAcmV0dXJu
IHtTdHJpbmd9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitleHBvcnRzLnN0cmluZ2lmeSA9IGZ1
bmN0aW9uKG9iaikgeworICBpZiAob2JqIGluc3RhbmNlb2YgUmVnRXhwKSByZXR1cm4gb2JqLnRv
U3RyaW5nKCk7CisgIHJldHVybiBKU09OLnN0cmluZ2lmeShleHBvcnRzLmNhbm9uaWNhbGl6ZShv
YmopLCBudWxsLCAyKS5yZXBsYWNlKC8sKFxufCQpL2csICckMScpOworfQorCisvKioKKyAqIFJl
dHVybiBhIG5ldyBvYmplY3QgdGhhdCBoYXMgdGhlIGtleXMgaW4gc29ydGVkIG9yZGVyLgorICog
QHBhcmFtIHtPYmplY3R9IG9iagorICogQHJldHVybiB7T2JqZWN0fQorICogQGFwaSBwcml2YXRl
CisgKi8KKworZXhwb3J0cy5jYW5vbmljYWxpemUgPSBmdW5jdGlvbihvYmosIHN0YWNrKSB7Cisg
ICBzdGFjayA9IHN0YWNrIHx8IFtdOworCisgICBpZiAoZXhwb3J0cy5pbmRleE9mKHN0YWNrLCBv
YmopICE9PSAtMSkgcmV0dXJuICdbQ2lyY3VsYXJdJzsKKworICAgdmFyIGNhbm9uaWNhbGl6ZWRP
Ymo7CisKKyAgIGlmICh7fS50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IEFycmF5XScp
IHsKKyAgICAgc3RhY2sucHVzaChvYmopOworICAgICBjYW5vbmljYWxpemVkT2JqID0gZXhwb3J0
cy5tYXAob2JqLCBmdW5jdGlvbihpdGVtKSB7CisgICAgICAgcmV0dXJuIGV4cG9ydHMuY2Fub25p
Y2FsaXplKGl0ZW0sIHN0YWNrKTsKKyAgICAgfSk7CisgICAgIHN0YWNrLnBvcCgpOworICAgfSBl
bHNlIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHsKKyAgICAg
c3RhY2sucHVzaChvYmopOworICAgICBjYW5vbmljYWxpemVkT2JqID0ge307CisgICAgIGV4cG9y
dHMuZm9yRWFjaChleHBvcnRzLmtleXMob2JqKS5zb3J0KCksIGZ1bmN0aW9uKGtleSkgeworICAg
ICAgIGNhbm9uaWNhbGl6ZWRPYmpba2V5XSA9IGV4cG9ydHMuY2Fub25pY2FsaXplKG9ialtrZXld
LCBzdGFjayk7CisgICAgIH0pOworICAgICBzdGFjay5wb3AoKTsKKyAgIH0gZWxzZSB7CisgICAg
IGNhbm9uaWNhbGl6ZWRPYmogPSBvYmo7CisgICB9CisKKyAgIHJldHVybiBjYW5vbmljYWxpemVk
T2JqOworIH0KKworfSk7IC8vIG1vZHVsZTogdXRpbHMuanMKKy8vIFRoZSBnbG9iYWwgb2JqZWN0
IGlzICJzZWxmIiBpbiBXZWIgV29ya2Vycy4KK3ZhciBnbG9iYWwgPSAoZnVuY3Rpb24oKSB7IHJl
dHVybiB0aGlzOyB9KSgpOworCisvKioKKyAqIFNhdmUgdGltZXIgcmVmZXJlbmNlcyB0byBhdm9p
ZCBTaW5vbiBpbnRlcmZlcmluZyAoc2VlIEdILTIzNykuCisgKi8KKwordmFyIERhdGUgPSBnbG9i
YWwuRGF0ZTsKK3ZhciBzZXRUaW1lb3V0ID0gZ2xvYmFsLnNldFRpbWVvdXQ7Cit2YXIgc2V0SW50
ZXJ2YWwgPSBnbG9iYWwuc2V0SW50ZXJ2YWw7Cit2YXIgY2xlYXJUaW1lb3V0ID0gZ2xvYmFsLmNs
ZWFyVGltZW91dDsKK3ZhciBjbGVhckludGVydmFsID0gZ2xvYmFsLmNsZWFySW50ZXJ2YWw7CisK
Ky8qKgorICogTm9kZSBzaGltcy4KKyAqCisgKiBUaGVzZSBhcmUgbWVhbnQgb25seSB0byBhbGxv
dworICogbW9jaGEuanMgdG8gcnVuIHVudG91Y2hlZCwgbm90CisgKiB0byBhbGxvdyBydW5uaW5n
IG5vZGUgY29kZSBpbgorICogdGhlIGJyb3dzZXIuCisgKi8KKwordmFyIHByb2Nlc3MgPSB7fTsK
K3Byb2Nlc3MuZXhpdCA9IGZ1bmN0aW9uKHN0YXR1cyl7fTsKK3Byb2Nlc3Muc3Rkb3V0ID0ge307
CisKK3ZhciB1bmNhdWdodEV4Y2VwdGlvbkhhbmRsZXJzID0gW107CisKK3ZhciBvcmlnaW5hbE9u
ZXJyb3JIYW5kbGVyID0gZ2xvYmFsLm9uZXJyb3I7CisKKy8qKgorICogUmVtb3ZlIHVuY2F1Z2h0
RXhjZXB0aW9uIGxpc3RlbmVyLgorICogUmV2ZXJ0IHRvIG9yaWdpbmFsIG9uZXJyb3IgaGFuZGxl
ciBpZiBwcmV2aW91c2x5IGRlZmluZWQuCisgKi8KKworcHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9
IGZ1bmN0aW9uKGUsIGZuKXsKKyAgaWYgKCd1bmNhdWdodEV4Y2VwdGlvbicgPT0gZSkgeworICAg
IGlmIChvcmlnaW5hbE9uZXJyb3JIYW5kbGVyKSB7CisgICAgICBnbG9iYWwub25lcnJvciA9IG9y
aWdpbmFsT25lcnJvckhhbmRsZXI7CisgICAgfSBlbHNlIHsKKyAgICAgIGdsb2JhbC5vbmVycm9y
ID0gZnVuY3Rpb24oKSB7fTsKKyAgICB9CisgICAgdmFyIGkgPSBNb2NoYS51dGlscy5pbmRleE9m
KHVuY2F1Z2h0RXhjZXB0aW9uSGFuZGxlcnMsIGZuKTsKKyAgICBpZiAoaSAhPSAtMSkgeyB1bmNh
dWdodEV4Y2VwdGlvbkhhbmRsZXJzLnNwbGljZShpLCAxKTsgfQorICB9Cit9OworCisvKioKKyAq
IEltcGxlbWVudHMgdW5jYXVnaHRFeGNlcHRpb24gbGlzdGVuZXIuCisgKi8KKworcHJvY2Vzcy5v
biA9IGZ1bmN0aW9uKGUsIGZuKXsKKyAgaWYgKCd1bmNhdWdodEV4Y2VwdGlvbicgPT0gZSkgewor
ICAgIGdsb2JhbC5vbmVycm9yID0gZnVuY3Rpb24oZXJyLCB1cmwsIGxpbmUpeworICAgICAgZm4o
bmV3IEVycm9yKGVyciArICcgKCcgKyB1cmwgKyAnOicgKyBsaW5lICsgJyknKSk7CisgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9OworICAgIHVuY2F1Z2h0RXhjZXB0aW9uSGFuZGxlcnMucHVzaChm
bik7CisgIH0KK307CisKKy8qKgorICogRXhwb3NlIG1vY2hhLgorICovCisKK3ZhciBNb2NoYSA9
IGdsb2JhbC5Nb2NoYSA9IHJlcXVpcmUoJ21vY2hhJyksCisgICAgbW9jaGEgPSBnbG9iYWwubW9j
aGEgPSBuZXcgTW9jaGEoeyByZXBvcnRlcjogJ2h0bWwnIH0pOworCisvLyBUaGUgQkREIFVJIGlz
IHJlZ2lzdGVyZWQgYnkgZGVmYXVsdCwgYnV0IG5vIFVJIHdpbGwgYmUgZnVuY3Rpb25hbCBpbiB0
aGUKKy8vIGJyb3dzZXIgd2l0aG91dCBhbiBleHBsaWNpdCBjYWxsIHRvIHRoZSBvdmVycmlkZGVu
IGBtb2NoYS51aWAgKHNlZSBiZWxvdykuCisvLyBFbnN1cmUgdGhhdCB0aGlzIGRlZmF1bHQgVUkg
ZG9lcyBub3QgZXhwb3NlIGl0cyBtZXRob2RzIHRvIHRoZSBnbG9iYWwgc2NvcGUuCittb2NoYS5z
dWl0ZS5yZW1vdmVBbGxMaXN0ZW5lcnMoJ3ByZS1yZXF1aXJlJyk7CisKK3ZhciBpbW1lZGlhdGVR
dWV1ZSA9IFtdCisgICwgaW1tZWRpYXRlVGltZW91dDsKKworZnVuY3Rpb24gdGltZXNsaWNlKCkg
eworICB2YXIgaW1tZWRpYXRlU3RhcnQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKKyAgd2hpbGUg
KGltbWVkaWF0ZVF1ZXVlLmxlbmd0aCAmJiAobmV3IERhdGUoKS5nZXRUaW1lKCkgLSBpbW1lZGlh
dGVTdGFydCkgPCAxMDApIHsKKyAgICBpbW1lZGlhdGVRdWV1ZS5zaGlmdCgpKCk7CisgIH0KKyAg
aWYgKGltbWVkaWF0ZVF1ZXVlLmxlbmd0aCkgeworICAgIGltbWVkaWF0ZVRpbWVvdXQgPSBzZXRU
aW1lb3V0KHRpbWVzbGljZSwgMCk7CisgIH0gZWxzZSB7CisgICAgaW1tZWRpYXRlVGltZW91dCA9
IG51bGw7CisgIH0KK30KKworLyoqCisgKiBIaWdoLXBlcmZvcm1hbmNlIG92ZXJyaWRlIG9mIFJ1
bm5lci5pbW1lZGlhdGVseS4KKyAqLworCitNb2NoYS5SdW5uZXIuaW1tZWRpYXRlbHkgPSBmdW5j
dGlvbihjYWxsYmFjaykgeworICBpbW1lZGlhdGVRdWV1ZS5wdXNoKGNhbGxiYWNrKTsKKyAgaWYg
KCFpbW1lZGlhdGVUaW1lb3V0KSB7CisgICAgaW1tZWRpYXRlVGltZW91dCA9IHNldFRpbWVvdXQo
dGltZXNsaWNlLCAwKTsKKyAgfQorfTsKKworLyoqCisgKiBGdW5jdGlvbiB0byBhbGxvdyBhc3Nl
cnRpb24gbGlicmFyaWVzIHRvIHRocm93IGVycm9ycyBkaXJlY3RseSBpbnRvIG1vY2hhLgorICog
VGhpcyBpcyB1c2VmdWwgd2hlbiBydW5uaW5nIHRlc3RzIGluIGEgYnJvd3NlciBiZWNhdXNlIHdp
bmRvdy5vbmVycm9yIHdpbGwKKyAqIG9ubHkgcmVjZWl2ZSB0aGUgJ21lc3NhZ2UnIGF0dHJpYnV0
ZSBvZiB0aGUgRXJyb3IuCisgKi8KK21vY2hhLnRocm93RXJyb3IgPSBmdW5jdGlvbihlcnIpIHsK
KyAgTW9jaGEudXRpbHMuZm9yRWFjaCh1bmNhdWdodEV4Y2VwdGlvbkhhbmRsZXJzLCBmdW5jdGlv
biAoZm4pIHsKKyAgICBmbihlcnIpOworICB9KTsKKyAgdGhyb3cgZXJyOworfTsKKworLyoqCisg
KiBPdmVycmlkZSB1aSB0byBlbnN1cmUgdGhhdCB0aGUgdWkgZnVuY3Rpb25zIGFyZSBpbml0aWFs
aXplZC4KKyAqIE5vcm1hbGx5IHRoaXMgd291bGQgaGFwcGVuIGluIE1vY2hhLnByb3RvdHlwZS5s
b2FkRmlsZXMuCisgKi8KKworbW9jaGEudWkgPSBmdW5jdGlvbih1aSl7CisgIE1vY2hhLnByb3Rv
dHlwZS51aS5jYWxsKHRoaXMsIHVpKTsKKyAgdGhpcy5zdWl0ZS5lbWl0KCdwcmUtcmVxdWlyZScs
IGdsb2JhbCwgbnVsbCwgdGhpcyk7CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBTZXR1
cCBtb2NoYSB3aXRoIHRoZSBnaXZlbiBzZXR0aW5nIG9wdGlvbnMuCisgKi8KKworbW9jaGEuc2V0
dXAgPSBmdW5jdGlvbihvcHRzKXsKKyAgaWYgKCdzdHJpbmcnID09IHR5cGVvZiBvcHRzKSBvcHRz
ID0geyB1aTogb3B0cyB9OworICBmb3IgKHZhciBvcHQgaW4gb3B0cykgdGhpc1tvcHRdKG9wdHNb
b3B0XSk7CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBSdW4gbW9jaGEsIHJldHVybmlu
ZyB0aGUgUnVubmVyLgorICovCisKK21vY2hhLnJ1biA9IGZ1bmN0aW9uKGZuKXsKKyAgdmFyIG9w
dGlvbnMgPSBtb2NoYS5vcHRpb25zOworICBtb2NoYS5nbG9iYWxzKCdsb2NhdGlvbicpOworCisg
IHZhciBxdWVyeSA9IE1vY2hhLnV0aWxzLnBhcnNlUXVlcnkoZ2xvYmFsLmxvY2F0aW9uLnNlYXJj
aCB8fCAnJyk7CisgIGlmIChxdWVyeS5ncmVwKSBtb2NoYS5ncmVwKHF1ZXJ5LmdyZXApOworICBp
ZiAocXVlcnkuaW52ZXJ0KSBtb2NoYS5pbnZlcnQoKTsKKworICByZXR1cm4gTW9jaGEucHJvdG90
eXBlLnJ1bi5jYWxsKG1vY2hhLCBmdW5jdGlvbihlcnIpeworICAgIC8vIFRoZSBET00gRG9jdW1l
bnQgaXMgbm90IGF2YWlsYWJsZSBpbiBXZWIgV29ya2Vycy4KKyAgICBpZiAoZ2xvYmFsLmRvY3Vt
ZW50KSB7CisgICAgICBNb2NoYS51dGlscy5oaWdobGlnaHRUYWdzKCdjb2RlJyk7CisgICAgfQor
ICAgIGlmIChmbikgZm4oZXJyKTsKKyAgfSk7Cit9OworCisvKioKKyAqIEV4cG9zZSB0aGUgcHJv
Y2VzcyBzaGltLgorICovCisKK01vY2hhLnByb2Nlc3MgPSBwcm9jZXNzOworfSkoKTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNl
cy10ZXN0cy9zaW5vbmpzLkxJQ0VOU0UgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlcy10ZXN0cy9z
aW5vbmpzLkxJQ0VOU0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdmNTBkMTIzYjBkODA2ZmRmZjU0NzNlNmFmYTEy
NDNkYTk3MDQ3NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2VzLXRl
c3RzL3Npbm9uanMuTElDRU5TRQpAQCAtMCwwICsxLDI3IEBACisoVGhlIEJTRCBMaWNlbnNlKQor
CitDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNCwgQ2hyaXN0aWFuIEpvaGFuc2VuLCBjaHJpc3RpYW5A
Y2pvaGFuc2VuLm5vCitBbGwgcmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0
aW9uLAorYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUgbWV0OgorCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgICAgICB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlLAorICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICAgICAgYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIENocmlzdGlhbiBKb2hhbnNlbiBub3IgdGhlIG5hbWVzIG9mIGhpcyBjb250cmlidXRvcnMK
KyAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20gdGhpcyBzb2Z0d2FyZQorICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKK0FOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECitXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCitESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCitGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAorREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKK1NFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCitDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAorT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKK1RISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>