<?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>224604</bug_id>
          
          <creation_ts>2021-04-15 05:38:53 -0700</creation_ts>
          <short_desc>Migrate some WebRTC encoded transform tests to WPT</short_desc>
          <delta_ts>2021-04-24 15:05:29 -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>WebRTC</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://github.com/web-platform-tests/wpt/pull/28509</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>clopez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1750581</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-04-15 05:38:53 -0700</bug_when>
    <thetext>Migrate some WebRTC encoded transform tests to WPT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750585</commentid>
    <comment_count>1</comment_count>
      <attachid>426099</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-04-15 05:45:23 -0700</bug_when>
    <thetext>Created attachment 426099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750586</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-04-15 05:46:19 -0700</bug_when>
    <thetext>Submitted web-platform-tests pull request: https://github.com/web-platform-tests/wpt/pull/28509</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750587</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-04-15 05:46:21 -0700</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750655</commentid>
    <comment_count>4</comment_count>
      <attachid>426113</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-04-15 10:01:46 -0700</bug_when>
    <thetext>Created attachment 426113
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751073</commentid>
    <comment_count>5</comment_count>
      <attachid>426226</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-04-16 07:48:18 -0700</bug_when>
    <thetext>Created attachment 426226
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751717</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-19 02:49:27 -0700</bug_when>
    <thetext>Committed r276242 (236724@main): &lt;https://commits.webkit.org/236724@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 426226.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753913</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-24 15:05:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/77110061&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426099</attachid>
            <date>2021-04-15 05:45:23 -0700</date>
            <delta_ts>2021-04-15 10:01:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224604-20210415144516.patch</filename>
            <type>text/plain</type>
            <size>101514</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MDEzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTE2Zjk0ZjZlMzBkYzRhYzJkOTk3
MTIxYjZlNmM1MTUyZGQyZDk2Ny4uOGVkY2RhNzg0YjA1MDhmYTUzNmEwM2JiN2M1MmRlYjllM2E5
ZDVlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA0LTE1ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNaWdyYXRlIHNvbWUgV2ViUlRDIGVuY29kZWQg
dHJhbnNmb3JtIHRlc3RzIHRvIFdQVAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI0NjA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJs
ZS1jcmFzaC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVj
dGF0aW9uczoKKyAgICAgICAgKiB3ZWJydGMvc2NyaXB0LXRyYW5zZm9ybS5qczogUmVtb3ZlZC4K
KwogMjAyMS0wNC0xNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgVXBkYXRlIFJUQ1NjcmlwdFRyYW5zZm9ybSBjb25zdHJ1Y3RvciB1cCB0byBzcGVjCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA1YzQ0Njk0NzFjZjIyMTI2YzhhY2UzOGExNDJj
YWE3ODU1YmI4ZTkxLi4xNWU5Yzg0N2Y4YjQ5MGM3N2M1NDEyNTdkNWZlYTQzOWZhMDYwZjI1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAyMS0wNC0x
NSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBz
b21lIFdlYlJUQyBlbmNvZGVkIHRyYW5zZm9ybSB0ZXN0cyB0byBXUFQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDYwNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9yb3V0aW5lcy5qczogQWRkZWQuCisgICAgICAgIChhc3lu
YyBjcmVhdGVDb25uZWN0aW9ucyk6CisgICAgICAgICh3YWl0Rm9yKToKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1hdWRpby10cmFu
c2Zvcm0td29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKE1vY2tSVENSdHBUcmFuc2Zvcm1lcik6
CisgICAgICAgIChNb2NrUlRDUnRwVHJhbnNmb3JtZXIucHJvdG90eXBlLnN0YXJ0KToKKyAgICAg
ICAgKE1vY2tSVENSdHBUcmFuc2Zvcm1lci5wcm90b3R5cGUucHJvY2Vzcyk6CisgICAgICAgIChv
bnJ0Y3RyYW5zZm9ybSk6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNv
ZGVkLXRyYW5zZm9ybS9zY3JpcHQtYXVkaW8tdHJhbnNmb3JtLmh0dHBzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5z
Zm9ybS9zY3JpcHQtYXVkaW8tdHJhbnNmb3JtLmh0dHBzLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJydGMvYXVkaW8tc2NyaXB0LXRyYW5zZm9ybS5odG1sLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0
LWNoYW5nZS10cmFuc2Zvcm0td29ya2VyLmpzOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2VicnRjL2NoYW5nZS1lbmNvZGVkLXRyYW5zZm9ybS5qcy4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1jaGFuZ2UtdHJh
bnNmb3JtLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtY2hhbmdlLXRyYW5zZm9ybS5o
dHRwcy5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL2NoYW5n
ZS1lbmNvZGVkLXRyYW5zZm9ybS5odG1sLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LWxhdGUtdHJhbnNmb3JtLmh0dHBzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNv
ZGVkLXRyYW5zZm9ybS9zY3JpcHQtbGF0ZS10cmFuc2Zvcm0uaHR0cHMuaHRtbDogUmVuYW1lZCBm
cm9tIExheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy93ZWJydGMtbGF0ZS10cmFuc2Zvcm0uaHRt
bC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3Jt
L3NjcmlwdC1tZXRhZGF0YS10cmFuc2Zvcm0td29ya2VyLmpzOiBSZW5hbWVkIGZyb20gTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2VicnRjL21ldGFkYXRhLXRyYW5zZm9ybS13b3JrZXIuanMuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQt
bWV0YWRhdGEtdHJhbnNmb3JtLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtbWV0YWRh
dGEtdHJhbnNmb3JtLmh0dHBzLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJydGMvbWV0YWRhdGEtdHJhbnNmb3JtLmh0bWwuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtdHJhbnNmb3JtLXdvcmtlci5q
czogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zY3JpcHQtdHJhbnNm
b3JtLmpzLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFu
c2Zvcm0vc2NyaXB0LXRyYW5zZm9ybS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LXRy
YW5zZm9ybS5odHRwcy5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
cnRjL3dlYnJ0Yy10cmFuc2Zvcm0uaHRtbC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
d2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC13cml0ZS10d2ljZS10cmFuc2Zvcm0td29y
a2VyLmpzOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dyaXRlLXR3
aWNlLXRyYW5zZm9ybS5qcy4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVu
Y29kZWQtdHJhbnNmb3JtL3NjcmlwdC13cml0ZS10d2ljZS10cmFuc2Zvcm0uaHR0cHMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29k
ZWQtdHJhbnNmb3JtL3NjcmlwdC13cml0ZS10d2ljZS10cmFuc2Zvcm0uaHR0cHMuaHRtbDogUmVu
YW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy93cml0ZS10d2ljZS10cmFuc2Zv
cm0uaHRtbC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJh
bnNmb3JtL3NmcmFtZS1rZXlzLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUta2V5cy5o
dHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVu
Y29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0tYnVmZmVyLXNvdXJjZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10
cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1idWZmZXItc291cmNlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1l
LXRyYW5zZm9ybS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1pbi13b3JrZXIu
aHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
d2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0taW4td29ya2VyLmh0dHBz
Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRy
YW5zZm9ybS1pbi13b3JrZXIuaHRtbC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
cnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0tcmVhZGFibGUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQt
dHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0tcmVhZGFibGUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJh
bnNmb3JtLXdvcmtlci5qczogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0
Yy9zZnJhbWUtdHJhbnNmb3JtLmpzLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJy
dGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS5odG1sOiBSZW5hbWVkIGZyb20g
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0uaHRtbC4KKwogMjAy
MS0wNC0xNCAgVGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgogCiAgICAgICAgIE9taXQgZGVm
YXVsdCBwb3NpdGlvbi9hbmdsZSB3aGVuIHNlcmlhbGl6aW5nIHJhZGlhbCAmIGNvbmljIGdyYWRp
ZW50cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL2F1ZGlvLXNjcmlw
dC10cmFuc2Zvcm0uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9hdWRpby1zY3Jp
cHQtdHJhbnNmb3JtLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4NDY2NDFk
YTE5Nzc1M2U0NDFjZjYzZDBmYzM4ZDYxMTVmNjVmMzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL2F1ZGlv
LXNjcmlwdC10cmFuc2Zvcm0uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLTwh
ZG9jdHlwZSBodG1sPgotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAgICAgIDxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KLSAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Ci0gICAgPC9oZWFkPgotICAgIDxib2R5PgotICAgICAgICA8dmlk
ZW8gaWQ9InZpZGVvIiBhdXRvcGxheSBwbGF5c0lubGluZT48L3ZpZGVvPgotICAgICAgICA8c2Ny
aXB0IHNyYz0icm91dGluZXMuanMiPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0PgotZnVuY3Rp
b24gd2FpdEZvck1lc3NhZ2UocG9ydCwgZGF0YSkKLXsKLSAgICBsZXQgZ290TWVzc2FnZTsKLSAg
ICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAg
ICAgICBnb3RNZXNzYWdlID0gcmVzb2x2ZTsKLSAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHJl
amVjdCgiZGlkIG5vdCBnZXQgIiArIGRhdGEpIH0sIDUwMDApOwotICAgIH0pOwotICAgIHBvcnQu
b25tZXNzYWdlID0gZXZlbnQgPT4gewotICAgICAgIGlmIChldmVudC5kYXRhID09PSBkYXRhKQot
ICAgICAgICAgICBnb3RNZXNzYWdlKCk7Ci0gICAgfTsKLSAgICByZXR1cm4gcHJvbWlzZTsKLX0K
LQotbGV0IHNlbmRlclRyYW5zZm9ybSwgcmVjZWl2ZXJUcmFuc2Zvcm07Ci1sZXQgc3RyZWFtOwot
cHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7Ci0gICAgd29ya2VyID0gbmV3IFdvcmtlcigi
Y29udGV4dC10cmFuc2Zvcm0uanMiKTsKLSAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21p
c2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50
LmRhdGEpKTsKLSAgICBhc3NlcnRfZXF1YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7Ci0KLSAgICBj
b25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1l
ZGlhKHthdWRpbzogdHJ1ZX0pOwotCi0gICAgY29uc3Qgc2VuZGVyQ2hhbm5lbCA9IG5ldyBNZXNz
YWdlQ2hhbm5lbDsKLSAgICBjb25zdCByZWNlaXZlckNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5u
ZWw7Ci0gICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7Ci0gICAgc2VuZGVyVHJhbnNmb3JtID0gbmV3
IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsIHtuYW1lOidNb2NrUlRDUnRwVHJhbnNmb3Jt
JywgbWVkaWFUeXBlOidhdWRpbycsIHNpZGU6J3NlbmRlcicsIHBvcnQ6c2VuZGVyQ2hhbm5lbC5w
b3J0Mn0sIFtzZW5kZXJDaGFubmVsLnBvcnQyXSk7Ci0gICAgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBu
ZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25hbWU6J01vY2tSVENSdHBUcmFuc2Zv
cm0nLCBtZWRpYVR5cGU6J2F1ZGlvJywgc2lkZToncmVjZWl2ZXInLCBwb3J0OnJlY2VpdmVyQ2hh
bm5lbC5wb3J0Mn0sIFtyZWNlaXZlckNoYW5uZWwucG9ydDJdKTsKLSAgICBzZW5kZXJUcmFuc2Zv
cm0ucG9ydCA9IHNlbmRlckNoYW5uZWwucG9ydDE7Ci0gICAgcmVjZWl2ZXJUcmFuc2Zvcm0ucG9y
dCA9IHJlY2VpdmVyQ2hhbm5lbC5wb3J0MTsKLQotICAgIHByb21pc2UxID0gd2FpdEZvck1lc3Nh
Z2Uoc2VuZGVyVHJhbnNmb3JtLnBvcnQsICJzdGFydGVkIGF1ZGlvIHNlbmRlciIpOwotICAgIHBy
b21pc2UyID0gd2FpdEZvck1lc3NhZ2UocmVjZWl2ZXJUcmFuc2Zvcm0ucG9ydCwgInN0YXJ0ZWQg
YXVkaW8gcmVjZWl2ZXIiKTsKLQotICAgIHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNv
bHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVj
dGlvbikgPT4gewotICAgICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNr
KGxvY2FsU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKLSAgICAgICAg
ICAgIHNlbmRlci50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07Ci0gICAgICAgIH0sIChzZWNv
bmRDb25uZWN0aW9uKSA9PiB7Ci0gICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sg
PSAodHJhY2tFdmVudCkgPT4gewotICAgICAgICAgICAgICAgIHJlY2VpdmVyID0gdHJhY2tFdmVu
dC5yZWNlaXZlcjsKLSAgICAgICAgICAgICAgICByZWNlaXZlci50cmFuc2Zvcm0gPSByZWNlaXZl
clRyYW5zZm9ybTsKLSAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1sw
XSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9KTsKLSAgICAgICAgc2V0VGltZW91dCgoKSA9
PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDApOwotICAgIH0pOwotCi0gICAgYXdhaXQg
cHJvbWlzZTE7Ci0gICAgYXdhaXQgcHJvbWlzZTI7Ci19LCAic2V0dXAgYW5kIGNoZWNrIGNvbnRl
eHQiKTsKLQotcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7Ci0gICAgdmlkZW8uc3JjT2JqZWN0ID0g
c3RyZWFtOwotICAgIHJldHVybiB2aWRlby5wbGF5KCk7Ci19LCAiYXVkaW8gaXMgcGxheWluZyIp
OwotICAgICAgICA8L3NjcmlwdD4KLSAgICA8L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvY2hhbmdlLWVuY29kZWQtdHJhbnNmb3JtLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvY2hhbmdlLWVuY29kZWQtdHJhbnNmb3JtLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmYWNmNTY0ZTc4OThjZjgzNTNlNTQ1
YWU0NDFjNzJmMmYzN2RmODAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL2NoYW5nZS1lbmNvZGVkLXRyYW5z
Zm9ybS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotPCFkb2N0eXBlIGh0bWw+
Ci08aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgotICAg
ICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci0g
ICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLSAgICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgICAgIDx2aWRlbyBpZD0idmlkZW8x
IiBhdXRvcGxheSBjb250cm9scyBwbGF5c2lubGluZT48L3ZpZGVvPgotICAgICAgICA8c2NyaXB0
IHNyYyA9InJvdXRpbmVzLmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdD4KLWFzeW5jIGZ1
bmN0aW9uIHdhaXRGb3JNZXNzYWdlKHdvcmtlciwgZGF0YSkKLXsKLSAgICB3aGlsZSAodHJ1ZSkg
ewotICAgICAgICBjb25zdCByZWNlaXZlZCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
d29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7Ci0gICAg
ICAgIGlmIChkYXRhID09PSByZWNlaXZlZCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci19
Ci0KLXByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewotICAgIHdvcmtlciA9IG5ldyBXb3Jr
ZXIoJ2NoYW5nZS1lbmNvZGVkLXRyYW5zZm9ybS5qcycpOwotICAgIGNvbnN0IGRhdGEgPSBhd2Fp
dCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJl
c29sdmUoZXZlbnQuZGF0YSkpOwotICAgIGFzc2VydF9lcXVhbHMoZGF0YSwgInJlZ2lzdGVyZWQi
KTsKLQotICAgIGNvbnN0IGxvY2FsU3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoe3ZpZGVvOiB0cnVlfSk7Ci0KLSAgICBsZXQgc2VuZGVyLCByZWNlaXZl
cjsKLSAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0xID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9y
bSh3b3JrZXIsIHtuYW1lOidzZW5kZXIxJ30pOwotICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybTIg
PSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25hbWU6J3NlbmRlcjInfSk7Ci0g
ICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdv
cmtlciwge25hbWU6J3JlY2VpdmVyJ30pOwotCi0gICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmV3
IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAgICAgICBjcmVhdGVDb25uZWN0aW9u
cygoZmlyc3RDb25uZWN0aW9uKSA9PiB7Ci0gICAgICAgICAgICBzZW5kZXIgPSBmaXJzdENvbm5l
Y3Rpb24uYWRkVHJhY2sobG9jYWxTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSwgbG9jYWxTdHJl
YW0pOwotICAgICAgICAgICAgZmlyc3RDb25uZWN0aW9uLmdldFRyYW5zY2VpdmVycygpWzBdLnNl
dENvZGVjUHJlZmVyZW5jZXMoW3ttaW1lVHlwZTogInZpZGVvL1ZQOCIsIGNsb2NrUmF0ZTogOTAw
MDB9XSk7Ci0gICAgICAgICAgICBzZW5kZXIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtMTsK
LSAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKLSAgICAgICAgICAgIHNlY29uZENv
bm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgcmVj
ZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOwotICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRy
YW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOwotICAgICAgICAgICAgICAgIHJlc29sdmUodHJh
Y2tFdmVudC5zdHJlYW1zWzBdKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0pOwotICAgICAg
ICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7Ci0gICAg
fSk7Ci0KLSAgICB2aWRlbzEuc3JjT2JqZWN0ID0gc3RyZWFtOwotICAgIGF3YWl0IHZpZGVvMS5w
bGF5KCk7Ci0KLSAgICBjb25zdCB1cGRhdGVQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9
PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKLSAg
ICBzZW5kZXIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtMjsKLSAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IHVwZGF0ZVByb21pc2UsICJnb3QgdmFsdWUgMiIpOwotfSwgImNoYW5nZSBzZW5kZXIg
dHJhbnNmb3JtIik7Ci0gICAgICAgIDwvc2NyaXB0PgotICAgIDwvYm9keT4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9jaGFuZ2UtZW5jb2RlZC10cmFu
c2Zvcm0uanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvY2hhbmdlLWVuY29kZWQtdHJh
bnNmb3JtLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGE3YWFhYzE4MWRiNGNl
MmFiZGFjMjk1ZmFhMTU1NTE5NmU5YjlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9jaGFuZ2UtZW5jb2Rl
ZC10cmFuc2Zvcm0uanMKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1mdW5jdGlvbiBh
cHBlbmRUb0J1ZmZlcihidWZmZXIsIHZhbHVlKSB7Ci0gICAgY29uc3QgcmVzdWx0ID0gbmV3IEFy
cmF5QnVmZmVyKGJ1ZmZlci5ieXRlTGVuZ3RoICsgMSk7Ci0gICAgY29uc3QgYnl0ZVJlc3VsdCA9
IG5ldyBVaW50OEFycmF5KHJlc3VsdCk7Ci0gICAgYnl0ZVJlc3VsdC5zZXQobmV3IFVpbnQ4QXJy
YXkoYnVmZmVyKSwgMCk7Ci0gICAgYnl0ZVJlc3VsdFtidWZmZXIuYnl0ZUxlbmd0aF0gPSB2YWx1
ZTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1vbnJ0Y3RyYW5zZm9ybSA9IChldmVudCkgPT4g
ewotICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gZXZlbnQudHJhbnNmb3JtZXI7Ci0KLSAgICB0cmFu
c2Zvcm1lci5yZWFkZXIgPSB0cmFuc2Zvcm1lci5yZWFkYWJsZS5nZXRSZWFkZXIoKTsKLSAgICB0
cmFuc2Zvcm1lci53cml0ZXIgPSB0cmFuc2Zvcm1lci53cml0YWJsZS5nZXRXcml0ZXIoKTsKLQot
ICAgIGZ1bmN0aW9uIHByb2Nlc3ModHJhbnNmb3JtZXIpCi0gICAgewotICAgICAgICB0cmFuc2Zv
cm1lci5yZWFkZXIucmVhZCgpLnRoZW4oY2h1bmsgPT4gewotICAgICAgICAgICAgaWYgKGNodW5r
LmRvbmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKHRyYW5zZm9y
bWVyLm9wdGlvbnMubmFtZSA9PT0gJ3NlbmRlcjEnKQotICAgICAgICAgICAgICAgIGNodW5rLnZh
bHVlLmRhdGEgPSBhcHBlbmRUb0J1ZmZlcihjaHVuay52YWx1ZS5kYXRhLCAxKTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKHRyYW5zZm9ybWVyLm9wdGlvbnMubmFtZSA9PT0gJ3NlbmRlcjInKQotICAg
ICAgICAgICAgICAgIGNodW5rLnZhbHVlLmRhdGEgPSBhcHBlbmRUb0J1ZmZlcihjaHVuay52YWx1
ZS5kYXRhLCAyKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGNvbnN0IHZh
bHVlID0gbmV3IFVpbnQ4QXJyYXkoY2h1bmsudmFsdWUuZGF0YSlbY2h1bmsudmFsdWUuZGF0YS5i
eXRlTGVuZ3RoIC0gMV07Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSAxICYmIHZhbHVl
ICE9PSAyKQotICAgICAgICAgICAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKCJ1bmV4cGVjdGVk
IHZhbHVlOiAiICsgdmFsdWUpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09PSAy
KQotICAgICAgICAgICAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKCJnb3QgdmFsdWUgMiIpOwot
ICAgICAgICAgICAgICAgIGNodW5rLnZhbHVlLmRhdGEgPSBjaHVuay52YWx1ZS5kYXRhLnNsaWNl
KDAsIGNodW5rLnZhbHVlLmRhdGEuYnl0ZUxlbmd0aCAtIDEpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgdHJhbnNmb3JtZXIud3JpdGVyLndyaXRlKGNodW5rLnZhbHVlKTsKLSAgICAgICAg
ICAgIHByb2Nlc3ModHJhbnNmb3JtZXIpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBwcm9j
ZXNzKHRyYW5zZm9ybWVyKTsKLX07Ci1zZWxmLnBvc3RNZXNzYWdlKCJyZWdpc3RlcmVkIik7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvbWV0YWRhdGEtdHJhbnNmb3Jt
LXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9tZXRhZGF0YS10cmFuc2Zv
cm0td29ya2VyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2JhMWY0ZWU2ZTA5
NzZhNjhkNjA3ZGU5ODI0ZDJmZDIzZGFhY2QwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9tZXRhZGF0YS10
cmFuc2Zvcm0td29ya2VyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotb25ydGN0
cmFuc2Zvcm0gPSAoZXZlbnQpID0+IHsKLSAgICBjb25zdCB0cmFuc2Zvcm1lciA9IGV2ZW50LnRy
YW5zZm9ybWVyOwotCi0gICAgdHJhbnNmb3JtZXIucmVhZGVyID0gdHJhbnNmb3JtZXIucmVhZGFi
bGUuZ2V0UmVhZGVyKCk7Ci0gICAgdHJhbnNmb3JtZXIud3JpdGVyID0gdHJhbnNmb3JtZXIud3Jp
dGFibGUuZ2V0V3JpdGVyKCk7Ci0KLSAgICBsZXQgaXNGaXJzdEZyYW1lID0gdHJ1ZTsKLSAgICBm
dW5jdGlvbiBwcm9jZXNzKHRyYW5zZm9ybWVyKQotICAgIHsKLSAgICAgICAgdHJhbnNmb3JtZXIu
cmVhZGVyLnJlYWQoKS50aGVuKGNodW5rID0+IHsKLSAgICAgICAgICAgIGlmIChjaHVuay5kb25l
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgaWYgKGlzRmlyc3RGcmFt
ZSkgewotICAgICAgICAgICAgICAgIGlzRmlyc3RGcmFtZSA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgIHNlbGYucG9zdE1lc3NhZ2UoeyBuYW1lOiB0cmFuc2Zvcm1lci5vcHRpb25zLm5hbWUsIHRp
bWVzdGFtcDogY2h1bmsudmFsdWUudGltZXN0YW1wLCBtZXRhZGF0YTogY2h1bmsudmFsdWUuZ2V0
TWV0YWRhdGEoKSB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRyYW5zZm9ybWVyLndy
aXRlci53cml0ZShjaHVuay52YWx1ZSk7Ci0gICAgICAgICAgICBwcm9jZXNzKHRyYW5zZm9ybWVy
KTsKLSAgICAgICAgfSk7Ci0gICAgfQotICAgIHByb2Nlc3ModHJhbnNmb3JtZXIpOwotfTsKLXNl
bGYucG9zdE1lc3NhZ2UoInJlZ2lzdGVyZWQiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYnJ0Yy9tZXRhZGF0YS10cmFuc2Zvcm0uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYnJ0Yy9tZXRhZGF0YS10cmFuc2Zvcm0uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZDI2Y2FkZTY1M2VkYmUzMTgyODZiM2MwODViMjk5MGEzZDUxMjNhNy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJydGMvbWV0YWRhdGEtdHJhbnNmb3JtLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4
NSArMCwwIEBACi08IWRvY3R5cGUgaHRtbD4KLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotICAgIDwvaGVhZD4KLSAgICA8Ym9keT4K
LSAgICAgICAgPHZpZGVvIGlkPSJ2aWRlbzEiIGF1dG9wbGF5PjwvdmlkZW8+Ci0gICAgICAgIDxz
Y3JpcHQgc3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0PgotYXN5
bmMgZnVuY3Rpb24gd2FpdEZvck1lc3NhZ2Uod29ya2VyLCBkYXRhKQotewotICAgIHdoaWxlICh0
cnVlKSB7Ci0gICAgICAgIGNvbnN0IHJlY2VpdmVkID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsK
LSAgICAgICAgaWYgKGRhdGEgPT09IHJlY2VpdmVkKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
IH0KLX0KLQotYXN5bmMgZnVuY3Rpb24gZ2F0aGVyTWV0YWRhdGEoYXVkaW8pCi17Ci0gICAgd29y
a2VyID0gbmV3IFdvcmtlcignbWV0YWRhdGEtdHJhbnNmb3JtLXdvcmtlci5qcycpOwotICAgIGNv
bnN0IGRhdGEgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2Ug
PSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOwotICAgIGFzc2VydF9lcXVhbHMoZGF0
YSwgInJlZ2lzdGVyZWQiKTsKLQotICAgIGNvbnN0IGxvY2FsU3RyZWFtID0gYXdhaXQgbmF2aWdh
dG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiBhdWRpbywgdmlkZW86ICFhdWRp
b30pOwotCi0gICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7Ci0gICAgY29uc3Qgc2VuZGVyVHJhbnNm
b3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsIHtuYW1lOidzZW5kZXInfSk7
Ci0gICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
KHdvcmtlciwge25hbWU6J3JlY2VpdmVyJ30pOwotCi0gICAgYXdhaXQgbmV3IFByb21pc2UoKHJl
c29sdmUsIHJlamVjdCkgPT4gewotICAgICAgICBjcmVhdGVDb25uZWN0aW9ucygoZmlyc3RDb25u
ZWN0aW9uKSA9PiB7Ci0gICAgICAgICAgICBwYzEgPSBmaXJzdENvbm5lY3Rpb247Ci0gICAgICAg
ICAgICBzZW5kZXIgPSBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxTdHJlYW0uZ2V0VHJh
Y2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKLSAgICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0gPSBz
ZW5kZXJUcmFuc2Zvcm07Ci0gICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7Ci0gICAg
ICAgICAgICBwYzIgPSBzZWNvbmRDb25uZWN0aW9uOwotICAgICAgICAgICAgc2Vjb25kQ29ubmVj
dGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICByZWNlaXZl
ciA9IHRyYWNrRXZlbnQucmVjZWl2ZXI7Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJhbnNm
b3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07Ci0gICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2
ZW50LnN0cmVhbXNbMF0pOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHNl
dFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKLSAgICB9KTsK
LQotICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAg
IGxldCBzZW5kZXJNZXRhZGF0YSwgc2VuZGVyVGltZXN0YW1wOwotICAgICAgICB3b3JrZXIub25t
ZXNzYWdlID0gKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5uYW1lID09
PSAnc2VuZGVyJykgewotICAgICAgICAgICAgICAgIHNlbmRlck1ldGFkYXRhID0gZXZlbnQuZGF0
YS5tZXRhZGF0YTsKLSAgICAgICAgICAgICAgICBzZW5kZXJUaW1lc3RhbXAgPSBldmVudC5kYXRh
LnRpbWVzdGFtcDsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YS5uYW1lID09PSAn
cmVjZWl2ZXInKQotICAgICAgICAgICAgICAgcmVzb2x2ZShbc2VuZGVyTWV0YWRhdGEsIHNlbmRl
clRpbWVzdGFtcCwgZXZlbnQuZGF0YS5tZXRhZGF0YSwgZXZlbnQuZGF0YS50aW1lc3RhbXBdKTsK
LSAgICAgICAgfTsKLSAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIk1ldGFkYXRhIHRl
c3QgdGltZWQgb3V0IiksIDUwMDApOyAKLSAgICB9KTsKLX0KLQotcHJvbWlzZV90ZXN0KGFzeW5j
ICh0ZXN0KSA9PiB7Ci0gICAgY29uc3QgW3NlbmRlck1ldGFkYXRhLCBzZW5kZXJUaW1lc3RhbXAs
IHJlY2VpdmVyTWV0YWRhdGEsIHJlY2VpdmVyVGltZXN0YW1wXSA9IGF3YWl0IGdhdGhlck1ldGFk
YXRhKHRydWUpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhzZW5kZXJUaW1lc3RhbXAsIHJlY2VpdmVy
VGltZXN0YW1wLCAidGltZXN0YW1wIik7Ci0gICAgYXNzZXJ0X3RydWUoISFzZW5kZXJNZXRhZGF0
YS5zeW5jaHJvbml6YXRpb25Tb3VyY2UsICJzc3JjIik7Ci0gICAgYXNzZXJ0X2VxdWFscyhzZW5k
ZXJNZXRhZGF0YS5zeW5jaHJvbml6YXRpb25Tb3VyY2UsIHJlY2VpdmVyTWV0YWRhdGEuc3luY2hy
b25pemF0aW9uU291cmNlLCAic3NyYyIpOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMoc2VuZGVy
TWV0YWRhdGEuY29udHJpYnV0aW5nU291cmNlcywgcmVjZWl2ZXJNZXRhZGF0YS5jb250cmlidXRp
bmdTb3VyY2VzLCAiY3NyYyIpOwotfSwgImF1ZGlvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtIik7
Ci0KLXByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewotICAgIGNvbnN0IFtzZW5kZXJNZXRh
ZGF0YSwgc2VuZGVyVGltZXN0YW1wLCByZWNlaXZlck1ldGFkYXRhLCByZWNlaXZlclRpbWVzdGFt
cF0gPSBhd2FpdCBnYXRoZXJNZXRhZGF0YSh0cnVlKTsKLQotICAgIGFzc2VydF9lcXVhbHMoc2Vu
ZGVyVGltZXN0YW1wLCByZWNlaXZlclRpbWVzdGFtcCwgInRpbWVzdGFtcCIpOwotICAgIGFzc2Vy
dF90cnVlKCEhc2VuZGVyTWV0YWRhdGEuc3luY2hyb25pemF0aW9uU291cmNlLCAic3NyYyIpOwot
ICAgIGFzc2VydF9lcXVhbHMoc2VuZGVyTWV0YWRhdGEuc3luY2hyb25pemF0aW9uU291cmNlLCBy
ZWNlaXZlck1ldGFkYXRhLnN5bmNocm9uaXphdGlvblNvdXJjZSwgInNzcmMiKTsKLSAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHNlbmRlck1ldGFkYXRhLmNvbnRyaWJ1dGluZ1NvdXJjZXMsIHJlY2Vp
dmVyTWV0YWRhdGEuY29udHJpYnV0aW5nU291cmNlcywgImNzcmMiKTsKLSAgICBhc3NlcnRfZXF1
YWxzKHNlbmRlck1ldGFkYXRhLmhlaWdodCwgcmVjZWl2ZXJNZXRhZGF0YS5oZWlnaHQsICJoZWln
aHQiKTsKLSAgICBhc3NlcnRfZXF1YWxzKHNlbmRlck1ldGFkYXRhLndpZHRoLCByZWNlaXZlck1l
dGFkYXRhLndpZHRoLCAid2lkdGgiKTsKLSAgICBhc3NlcnRfZXF1YWxzKHNlbmRlck1ldGFkYXRh
LnNwYXRpYWxJbmRleCwgcmVjZWl2ZXJNZXRhZGF0YS5zcGF0aWFsSW5kZXgsICJzcGF0aWFsSW5k
ZXgiKTsKLSAgICBhc3NlcnRfZXF1YWxzKHNlbmRlck1ldGFkYXRhLnRlbXBvcmFsSW5kZXgsIHJl
Y2VpdmVyTWV0YWRhdGEudGVtcG9yYWxJbmRleCwgInRlbXBvcmFsSW5kZXgiKTsKLX0sICJ2aWRl
byBleGNoYW5nZSB3aXRoIHRyYW5zZm9ybSIpOwotICAgICAgICA8L3NjcmlwdD4KLSAgICA8L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2Ny
aXB0LXRyYW5zZm9ybS5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zY3JpcHQtdHJh
bnNmb3JtLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWE5OWNkMmJmNzMyY2Yw
NTgyYTJhZWYxMTk5YTE0OTczODI2OWVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zY3JpcHQtdHJhbnNm
b3JtLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotb25ydGN0cmFuc2Zvcm0gPSAo
ZXZlbnQpID0+IHsKLSAgICBjb25zdCB0cmFuc2Zvcm1lciA9IGV2ZW50LnRyYW5zZm9ybWVyOwot
ICAgIHRyYW5zZm9ybWVyLm9wdGlvbnMucG9ydC5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHRyYW5z
Zm9ybWVyLm9wdGlvbnMucG9ydC5wb3N0TWVzc2FnZShldmVudC5kYXRhKTsKLQotICAgIHNlbGYu
cG9zdE1lc3NhZ2UoInN0YXJ0ZWQiKTsKLSAgICB0cmFuc2Zvcm1lci5yZWFkZXIgPSB0cmFuc2Zv
cm1lci5yZWFkYWJsZS5nZXRSZWFkZXIoKTsKLSAgICB0cmFuc2Zvcm1lci53cml0ZXIgPSB0cmFu
c2Zvcm1lci53cml0YWJsZS5nZXRXcml0ZXIoKTsKLQotICAgIGZ1bmN0aW9uIHByb2Nlc3ModHJh
bnNmb3JtZXIpCi0gICAgewotICAgICAgICB0cmFuc2Zvcm1lci5yZWFkZXIucmVhZCgpLnRoZW4o
Y2h1bmsgPT4gewotICAgICAgICAgICAgaWYgKGNodW5rLmRvbmUpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgaWYgKGNodW5rLnZhbHVlIGluc3RhbmNlb2YgUlRDRW5jb2Rl
ZFZpZGVvRnJhbWUpCi0gICAgICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgidmlkZW8gY2h1
bmsiKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNodW5rLnZhbHVlIGluc3RhbmNlb2YgUlRDRW5j
b2RlZEF1ZGlvRnJhbWUpCi0gICAgICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgiYXVkaW8g
Y2h1bmsiKTsKLSAgICAgICAgICAgIHRyYW5zZm9ybWVyLndyaXRlci53cml0ZShjaHVuay52YWx1
ZSk7Ci0gICAgICAgICAgICBwcm9jZXNzKHRyYW5zZm9ybWVyKTsKLSAgICAgICAgfSk7Ci0gICAg
fQotCi0gICAgcHJvY2Vzcyh0cmFuc2Zvcm1lcik7Ci19Owotc2VsZi5wb3N0TWVzc2FnZSgicmVn
aXN0ZXJlZCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3NmcmFt
ZS10cmFuc2Zvcm0taW4td29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMv
c2ZyYW1lLXRyYW5zZm9ybS1pbi13b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZGI4MDI2MDUyYmZhOTdiZDFhMWI4ZmQ5ZDc3MTY4MjE4OWNkMWZkOS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1pbi13b3JrZXIuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDU3ICswLDAgQEAKLTwhZG9jdHlwZSBodG1sPgotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAg
ICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0gICAgPC9oZWFkPgotICAgIDxi
b2R5PgotICAgICAgICA8dmlkZW8gaWQ9InZpZGVvMSIgY29udHJvbHMgYXV0b3BsYXk+PC92aWRl
bz4KLSAgICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+Ci0gICAgICAg
IDxzY3JpcHQ+Ci1hc3luYyBmdW5jdGlvbiB3YWl0Rm9yTWVzc2FnZSh3b3JrZXIsIGRhdGEpCi17
Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBhd2FpdCBuZXcg
UHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUo
ZXZlbnQuZGF0YSkpOwotICAgICAgICBpZiAoZGF0YSA9PT0gcmVjZWl2ZWQpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgfQotfQotCi1wcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKLSAg
ICB3b3JrZXIgPSBuZXcgV29ya2VyKCdzZnJhbWUtdHJhbnNmb3JtLmpzJyk7Ci0gICAgY29uc3Qg
ZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChl
dmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAi
cmVnaXN0ZXJlZCIpOwotICAgIGNvbnN0IGxvY2FsU3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1l
ZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyB2aWRlbzogdHJ1ZSB9KTsKLQotICAgIGxldCBzZW5k
ZXIsIHJlY2VpdmVyOwotICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFu
c2Zvcm0oeyBjb21wYXRpYmlsaXR5TW9kZTogIkgyNjQiIH0pOwotICAgIGNvbnN0IHJlY2VpdmVy
VHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsICJTRnJhbWVSVENS
dHBUcmFuc2Zvcm0iKTsKLQotICAgIGNvbnN0IGtleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuaW1w
b3J0S2V5KCJyYXciLCBuZXcgVWludDhBcnJheShbMTQzLCA3NywgNDMsIDEwLCA3MiwgMTksIDM3
LCA2NywgMjM2LCAyMTksIDI0LCA5MywgMjYsIDE2NSwgOTEsIDE3OF0pLCAiSEtERiIsIGZhbHNl
LCBbImRlcml2ZUJpdHMiLCAiZGVyaXZlS2V5Il0pOwotICAgIHNlbmRlclRyYW5zZm9ybS5zZXRF
bmNyeXB0aW9uS2V5KGtleSk7Ci0KLSAgICBjb25zdCBzdGFydGVkUHJvbWlzZSA9IG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVu
dC5kYXRhKSk7Ci0KLSAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2
ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rp
b24pID0+IHsKLSAgICAgICAgICAgIHBjMSA9IGZpcnN0Q29ubmVjdGlvbjsKLSAgICAgICAgICAg
IHNlbmRlciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRUcmFja3Mo
KVswXSwgbG9jYWxTdHJlYW0pOwotICAgICAgICAgICAgc2VuZGVyLnRyYW5zZm9ybSA9IHNlbmRl
clRyYW5zZm9ybTsKLSAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKLSAgICAgICAg
ICAgIHBjMiA9IHNlY29uZENvbm5lY3Rpb247Ci0gICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9u
Lm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4gewotICAgICAgICAgICAgICAgIHJlY2VpdmVyID0g
dHJhY2tFdmVudC5yZWNlaXZlcjsKLSAgICAgICAgICAgICAgICByZWNlaXZlci50cmFuc2Zvcm0g
PSByZWNlaXZlclRyYW5zZm9ybTsKLSAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQu
c3RyZWFtc1swXSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9KTsKLSAgICAgICAgc2V0VGlt
ZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDApOwotICAgIH0pOwotCi0g
ICAgdmlkZW8xLnNyY09iamVjdCA9IHN0cmVhbTsKLSAgICBhd2FpdCB2aWRlbzEucGxheSgpOwot
fSwgInZpZGVvIGV4Y2hhbmdlIHdpdGggU0ZyYW1lIHRyYW5zZm9ybSBpbiB3b3JrZXIiKTsKLSAg
ICAgICAgPC9zY3JpcHQ+Ci0gICAgPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0tcmVhZGFibGUtY3Jhc2guaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLXJlYWRhYmxl
LWNyYXNoLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkZWU1YTYyYTE0ZGVj
MjkxMzYyYTRjY2U2NTdiZjQ3ZGQzYmQwMDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFu
c2Zvcm0tcmVhZGFibGUtY3Jhc2guaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAK
LTxpZnJhbWUgc3JjPSIuIiBpZD0iZnJhbWUiPjwvaWZyYW1lPgotPHNjcmlwdD4KLW9ubG9hZCA9
IGFzeW5jICgpID0+IHsKLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKLWNvbnN0IHRyYW5zZm9ybSA9IG5ldyBmcmFtZS5jb250ZW50V2luZG93LlNG
cmFtZVRyYW5zZm9ybTsKLWZyYW1lLnJlbW92ZSgpOwotdHJhbnNmb3JtLnJlYWRhYmxlOwotfQot
PC9zY3JpcHQ+Ci08cD5UaGlzIHRlc3Qgc2hvdWxkIG5vdCBjcmFzaC48L3A+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0uaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMmU0MDEzNWIwNGY0Zjg1YmE2NzliMDE4MDI4YjM5NTQyNTdj
MTdhOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMTQxICswLDAgQEAKLTwhZG9jdHlwZSBodG1sPgotPGh0bWw+Ci0gICAgPGhlYWQ+
Ci0gICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICAgICAgPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0gICAgPC9oZWFkPgot
ICAgIDxib2R5PgotICAgICAgICA8c2NyaXB0PgotCi1wcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3Qp
ID0+IHsKLSAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgIGNvbnN0
IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oKTsKLSAgICBjb25zdCByZWNl
aXZlclRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oKTsKLSAgICBjb25zdCBzZW5kZXIx
ID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJykuc2VuZGVyOwotICAgIGNvbnN0IHNlbmRlcjIg
PSBwYy5hZGRUcmFuc2NlaXZlcigndmlkZW8nKS5zZW5kZXI7Ci0gICAgY29uc3QgcmVjZWl2ZXIx
ID0gcGMuZ2V0UmVjZWl2ZXJzKClbMF07Ci0gICAgY29uc3QgcmVjZWl2ZXIyID0gcGMuZ2V0UmVj
ZWl2ZXJzKClbMV07Ci0KLSAgICBzZW5kZXIxLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsK
LSAgICByZWNlaXZlcjEudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07Ci0gICAgYXNzZXJ0
X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4gc2VuZGVyMi50cmFuc2Zvcm0g
PSBzZW5kZXJUcmFuc2Zvcm0pOwotICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVF
cnJvciIsICgpID0+IHJlY2VpdmVyMi50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybSk7Ci0K
LSAgICBzZW5kZXIxLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKLSAgICByZWNlaXZlcjEu
dHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07Ci0KLSAgICBzZW5kZXIxLnRyYW5zZm9ybSA9
IG51bGw7Ci0gICAgcmVjZWl2ZXIxLnRyYW5zZm9ybSA9IG51bGw7Ci19LCAiQ2Fubm90IHJldXNl
IGF0dGFjaGVkIHRyYW5zZm9ybXMiKTsKLQotdGVzdCgoKSA9PiB7Ci0gICAgY29uc3Qgc2VuZGVy
VHJhbnNmb3JtID0gbmV3IFNGcmFtZVRyYW5zZm9ybSgpOwotCi0gICAgYXNzZXJ0X3RydWUoc2Vu
ZGVyVHJhbnNmb3JtLnJlYWRhYmxlIGluc3RhbmNlb2YgUmVhZGFibGVTdHJlYW0pOwotICAgIGFz
c2VydF90cnVlKHNlbmRlclRyYW5zZm9ybS53cml0YWJsZSBpbnN0YW5jZW9mIFdyaXRhYmxlU3Ry
ZWFtKTsKLX0sICJTRnJhbWVUcmFuc2Zvcm0gZXhwb3NlcyByZWFkYWJsZSBhbmQgd3JpdGFibGUi
KTsKLQotcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7Ci0gICAgY29uc3QgcGMgPSBuZXcg
UlRDUGVlckNvbm5lY3Rpb24oKTsKLSAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgU0Zy
YW1lVHJhbnNmb3JtKCk7Ci0gICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgU0ZyYW1l
VHJhbnNmb3JtKCk7Ci0gICAgY29uc3Qgc2VuZGVyMSA9IHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRp
bycpLnNlbmRlcjsKLSAgICBjb25zdCBzZW5kZXIyID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ3ZpZGVv
Jykuc2VuZGVyOwotICAgIGNvbnN0IHJlY2VpdmVyMSA9IHBjLmdldFJlY2VpdmVycygpWzBdOwot
ICAgIGNvbnN0IHJlY2VpdmVyMiA9IHBjLmdldFJlY2VpdmVycygpWzFdOwotCi0gICAgYXNzZXJ0
X2ZhbHNlKHNlbmRlclRyYW5zZm9ybS5yZWFkYWJsZS5sb2NrZWQsICJzZW5kZXIgcmVhZGFibGUg
YmVmb3JlIik7Ci0gICAgYXNzZXJ0X2ZhbHNlKHNlbmRlclRyYW5zZm9ybS53cml0YWJsZS5sb2Nr
ZWQsICJzZW5kZXIgd3JpdGFibGUgYmVmb3JlIik7Ci0gICAgYXNzZXJ0X2ZhbHNlKHJlY2VpdmVy
VHJhbnNmb3JtLnJlYWRhYmxlLmxvY2tlZCwgInJlY2VpdmVyIHJlYWRhYmxlIGJlZm9yZSIpOwot
ICAgIGFzc2VydF9mYWxzZShyZWNlaXZlclRyYW5zZm9ybS53cml0YWJsZS5sb2NrZWQsICJyZWNl
aXZlciB3cml0YWJsZSBiZWZvcmUiKTsKLQotICAgIHNlbmRlcjEudHJhbnNmb3JtID0gc2VuZGVy
VHJhbnNmb3JtOwotICAgIHJlY2VpdmVyMS50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsK
LQotICAgIGFzc2VydF90cnVlKHNlbmRlclRyYW5zZm9ybS5yZWFkYWJsZS5sb2NrZWQsICJzZW5k
ZXIgcmVhZGFibGUgZHVyaW5nIik7Ci0gICAgYXNzZXJ0X3RydWUoc2VuZGVyVHJhbnNmb3JtLndy
aXRhYmxlLmxvY2tlZCwgInNlbmRlciB3cml0YWJsZSBkdXJpbmciKTsKLSAgICBhc3NlcnRfdHJ1
ZShyZWNlaXZlclRyYW5zZm9ybS5yZWFkYWJsZS5sb2NrZWQsICJyZWNlaXZlciByZWFkYWJsZSBk
dXJpbmciKTsKLSAgICBhc3NlcnRfdHJ1ZShyZWNlaXZlclRyYW5zZm9ybS53cml0YWJsZS5sb2Nr
ZWQsICJyZWNlaXZlciB3cml0YWJsZSBkdXJpbmciKTsKLQotICAgIHNlbmRlcjEudHJhbnNmb3Jt
ID0gbnVsbDsKLSAgICByZWNlaXZlcjEudHJhbnNmb3JtID0gbnVsbDsKLQotICAgIGFzc2VydF90
cnVlKHNlbmRlclRyYW5zZm9ybS5yZWFkYWJsZS5sb2NrZWQsICJzZW5kZXIgcmVhZGFibGUgYWZ0
ZXIiKTsKLSAgICBhc3NlcnRfdHJ1ZShzZW5kZXJUcmFuc2Zvcm0ud3JpdGFibGUubG9ja2VkLCAi
c2VuZGVyIHdyaXRhYmxlIGFmdGVyIik7Ci0gICAgYXNzZXJ0X3RydWUocmVjZWl2ZXJUcmFuc2Zv
cm0ucmVhZGFibGUubG9ja2VkLCAicmVjZWl2ZXIgcmVhZGFibGUgYWZ0ZXIiKTsKLSAgICBhc3Nl
cnRfdHJ1ZShyZWNlaXZlclRyYW5zZm9ybS53cml0YWJsZS5sb2NrZWQsICJyZWNlaXZlciB3cml0
YWJsZSBhZnRlciIpOwotfSwgInJlYWRhYmxlL3dyaXRhYmxlIGFyZSBsb2NrZWQgd2hlbiBhdHRh
Y2hlZCBhbmQgYWZ0ZXIgYmVpbmcgYXR0YWNoZWQiKTsKLQotcHJvbWlzZV90ZXN0KGFzeW5jICh0
ZXN0KSA9PiB7Ci0gICAgY29uc3Qga2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXko
InJhdyIsIG5ldyBVaW50OEFycmF5KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAy
MzYsIDIxOSwgMjQsIDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVy
aXZlQml0cyIsICJkZXJpdmVLZXkiXSk7Ci0KLSAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBu
ZXcgU0ZyYW1lVHJhbnNmb3JtKHsgcm9sZSA6ICdlbmNyeXB0JywgYXV0aGVudGljYXRpb25TaXpl
OiAxMCB9KTsKLSAgICBzZW5kZXJUcmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkpOwotCi0g
ICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgU0ZyYW1lVHJhbnNmb3JtKHsgcm9sZSA6
ICdkZWNyeXB0JywgYXV0aGVudGljYXRpb25TaXplOiAxMCB9KTsKLSAgICByZWNlaXZlclRyYW5z
Zm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleSk7Ci0KLSAgICBjb25zdCB3cml0ZXIgPSBzZW5kZXJU
cmFuc2Zvcm0ud3JpdGFibGUuZ2V0V3JpdGVyKCk7Ci0gICAgY29uc3QgcmVhZGVyID0gcmVjZWl2
ZXJUcmFuc2Zvcm0ucmVhZGFibGUuZ2V0UmVhZGVyKCk7Ci0KLSAgICBzZW5kZXJUcmFuc2Zvcm0u
cmVhZGFibGUucGlwZVRvKHJlY2VpdmVyVHJhbnNmb3JtLndyaXRhYmxlKTsKLQotICAgIGNvbnN0
IHNlbnQgPSBuZXcgQXJyYXlCdWZmZXIoOCk7Ci0gICAgY29uc3QgdmlldyA9IG5ldyBJbnQ4QXJy
YXkoc2VudCk7Ci0gICAgZm9yIChsZXQgY3B0ciA9IDA7IGNwdHIgPCBzZW50LmJ5dGVMZW5ndGg7
ICsrY3B0cikKLSAgICAgICAgdmlld1tjcHRyXSA9IGNwdHI7Ci0KLSAgICB3cml0ZXIud3JpdGUo
c2VudCk7Ci0gICAgY29uc3QgcmVjZWl2ZWQgPSBhd2FpdCByZWFkZXIucmVhZCgpOwotCi0gICAg
YXNzZXJ0X2VxdWFscyhyZWNlaXZlZC52YWx1ZS5ieXRlTGVuZ3RoLCA4KTsKLSAgICBjb25zdCB2
aWV3MiA9IG5ldyBJbnQ4QXJyYXkocmVjZWl2ZWQudmFsdWUpOwotICAgIGZvciAobGV0IGNwdHIg
PSAwOyBjcHRyIDwgc2VudC5ieXRlTGVuZ3RoOyArK2NwdHIpCi0gICAgICAgIGFzc2VydF9lcXVh
bHModmlldzJbY3B0cl0sIHZpZXdbY3B0cl0pOwotfSwgIlNGcmFtZSB3aXRoIGFycmF5IGJ1ZmZl
ciAtIGF1dGhlbnRpY2F0aW9uIHNpemUgMTAiKTsKLQotcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0
KSA9PiB7Ci0gICAgY29uc3Qga2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJh
dyIsIG5ldyBVaW50OEFycmF5KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYs
IDIxOSwgMjQsIDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZl
Qml0cyIsICJkZXJpdmVLZXkiXSk7Ci0KLSAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcg
U0ZyYW1lVHJhbnNmb3JtKHsgcm9sZSA6ICdlbmNyeXB0JywgYXV0aGVudGljYXRpb25TaXplOiAx
MCB9KTsKLSAgICBjb25zdCBzZW5kZXJXcml0ZXIgPSBzZW5kZXJUcmFuc2Zvcm0ud3JpdGFibGUu
Z2V0V3JpdGVyKCk7Ci0gICAgY29uc3Qgc2VuZGVyUmVhZGVyID0gc2VuZGVyVHJhbnNmb3JtLnJl
YWRhYmxlLmdldFJlYWRlcigpOwotCi0gICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcg
U0ZyYW1lVHJhbnNmb3JtKHsgcm9sZSA6ICdkZWNyeXB0JywgYXV0aGVudGljYXRpb25TaXplOiAx
MCB9KTsKLSAgICBjb25zdCByZWNlaXZlcldyaXRlciA9IHJlY2VpdmVyVHJhbnNmb3JtLndyaXRh
YmxlLmdldFdyaXRlcigpOwotICAgIGNvbnN0IHJlY2VpdmVyUmVhZGVyID0gcmVjZWl2ZXJUcmFu
c2Zvcm0ucmVhZGFibGUuZ2V0UmVhZGVyKCk7Ci0KLSAgICBzZW5kZXJUcmFuc2Zvcm0uc2V0RW5j
cnlwdGlvbktleShrZXkpOwotICAgIHJlY2VpdmVyVHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXko
a2V5KTsKLQotICAgIGNvbnN0IGNodW5rID0gbmV3IEFycmF5QnVmZmVyKDgpOwotCi0gICAgLy8g
ZGVjcnlwdGlvbiBzaG91bGQgZmFpbCwgbGVhZGluZyB0byBhbiBlbXB0eSBhcnJheSBidWZmZXIu
Ci0gICAgYXdhaXQgcmVjZWl2ZXJXcml0ZXIud3JpdGUoY2h1bmspOwotICAgIGxldCByZWNlaXZl
ZCA9IGF3YWl0IHJlY2VpdmVyUmVhZGVyLnJlYWQoKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlY2Vp
dmVkLnZhbHVlLmJ5dGVMZW5ndGgsIDApOwotCi0gICAgLy8gV2Ugd3JpdGUgYWdhaW4gYnV0IHRo
aXMgdGltZSB3aXRoIGEgY2h1bmsgd2UgY2FuIGRlY3J5cHQuCi0gICAgYXdhaXQgc2VuZGVyV3Jp
dGVyLndyaXRlKGNodW5rKTsKLSAgICBjb25zdCBlbmNyeXB0ZWQgPSBhd2FpdCBzZW5kZXJSZWFk
ZXIucmVhZCgpOwotICAgIGF3YWl0IHJlY2VpdmVyV3JpdGVyLndyaXRlKGVuY3J5cHRlZC52YWx1
ZSk7Ci0gICAgcmVjZWl2ZWQgPSBhd2FpdCByZWNlaXZlclJlYWRlci5yZWFkKCk7Ci0gICAgYXNz
ZXJ0X2VxdWFscyhyZWNlaXZlZC52YWx1ZS5ieXRlTGVuZ3RoLCA4KTsKLX0sICJTRnJhbWUgZGVj
cnlwdGlvbiB3aXRoIGFycmF5IGJ1ZmZlciB0aGF0IGlzIHRvbyBzbWFsbCIpOwotCi1wcm9taXNl
X3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKLSAgICBjb25zdCBrZXkgPSBhd2FpdCBjcnlwdG8uc3Vi
dGxlLmltcG9ydEtleSgicmF3IiwgbmV3IFVpbnQ4QXJyYXkoWzE0MywgNzcsIDQzLCAxMCwgNzIs
IDE5LCAzNywgNjcsIDIzNiwgMjE5LCAyNCwgOTMsIDI2LCAxNjUsIDkxLCAxNzhdKSwgIkhLREYi
LCBmYWxzZSwgWyJkZXJpdmVCaXRzIiwgImRlcml2ZUtleSJdKTsKLQotICAgIGNvbnN0IHJlY2Vp
dmVyVHJhbnNmb3JtID0gbmV3IFNGcmFtZVRyYW5zZm9ybSh7IHJvbGUgOiAnZGVjcnlwdCcsIGF1
dGhlbnRpY2F0aW9uU2l6ZTogMTAgfSk7Ci0gICAgY29uc3QgcmVjZWl2ZXJXcml0ZXIgPSByZWNl
aXZlclRyYW5zZm9ybS53cml0YWJsZS5nZXRXcml0ZXIoKTsKLSAgICByZWNlaXZlclRyYW5zZm9y
bS5zZXRFbmNyeXB0aW9uS2V5KGtleSk7Ci0KLSAgICAvLyBkZWNyeXB0aW9uIHNob3VsZCBmYWls
LCBsZWFkaW5nIHRvIGVycm9yaW5nIHRoZSB0cmFuc2Zvcm0uCi0gICAgYXdhaXQgcHJvbWlzZV9y
ZWplY3RzX2pzKHRlc3QsIFR5cGVFcnJvciwgcmVjZWl2ZXJXcml0ZXIud3JpdGUoeyB9KSk7Ci0g
ICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2pzKHRlc3QsIFR5cGVFcnJvciwgcmVjZWl2ZXJXcml0
ZXIuY2xvc2VkKTsKLX0sICJTRnJhbWUgdHJhbnNmb3JtIGdldHMgZXJyb3JlZCBpZiB0cnlpbmcg
dG8gcHJvY2VzcyB1bmV4cGVjdGVkIHZhbHVlIHR5cGVzIik7Ci0KLSAgICAgICAgPC9zY3JpcHQ+
Ci0gICAgPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2VicnRjL3NmcmFtZS10cmFuc2Zvcm0uanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMv
c2ZyYW1lLXRyYW5zZm9ybS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE3Y2Yw
YTM4YWEwODU5ZmE2ZWU4YWYwMWZkYWI1Zjk0YjViZWIxOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2Zy
YW1lLXRyYW5zZm9ybS5qcworKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotb25ydGN0cmFu
c2Zvcm0gPSAoZXZlbnQpID0+IHsKLSAgICBjb25zdCBzZnJhbWVUcmFuc2Zvcm0gPSBuZXcgU0Zy
YW1lVHJhbnNmb3JtKHsgcm9sZSA6ICJkZWNyeXB0IiwgYXV0aGVudGljYXRpb25TaXplOiAiMTAi
LCBjb21wYXRpYmlsaXR5TW9kZTogIkgyNjQiIH0pOwotICAgIGNyeXB0by5zdWJ0bGUuaW1wb3J0
S2V5KCJyYXciLCBuZXcgVWludDhBcnJheShbMTQzLCA3NywgNDMsIDEwLCA3MiwgMTksIDM3LCA2
NywgMjM2LCAyMTksIDI0LCA5MywgMjYsIDE2NSwgOTEsIDE3OF0pLCAiSEtERiIsIGZhbHNlLCBb
ImRlcml2ZUJpdHMiLCAiZGVyaXZlS2V5Il0pLnRoZW4oa2V5ID0+IHNmcmFtZVRyYW5zZm9ybS5z
ZXRFbmNyeXB0aW9uS2V5KGtleSkpOwotICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gZXZlbnQudHJh
bnNmb3JtZXI7Ci0gICAgdHJhbnNmb3JtZXIucmVhZGFibGUucGlwZVRocm91Z2goc2ZyYW1lVHJh
bnNmb3JtKS5waXBlVG8odHJhbnNmb3JtZXIud3JpdGFibGUpOwotfQotc2VsZi5wb3N0TWVzc2Fn
ZSgicmVnaXN0ZXJlZCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRj
L3dlYnJ0Yy1sYXRlLXRyYW5zZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRj
L3dlYnJ0Yy1sYXRlLXRyYW5zZm9ybS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzY2ZmMTczNzgzYjQyM2E1MzMxZmE1MjU0NTA0ZGRjYzQ1NTkxYjJmLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YnJ0Yy93ZWJydGMtbGF0ZS10cmFuc2Zvcm0uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDkwICsw
LDAgQEAKLTwhZG9jdHlwZSBodG1sPgotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAgICAgIDxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KLSAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0gICAgPC9oZWFkPgotICAgIDxib2R5PgotICAg
ICAgICA8dmlkZW8gY29udHJvbHMgaWQ9InZpZGVvIiBhdXRvcGxheT48L3ZpZGVvPgotICAgICAg
ICA8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI2NDAiIGhlaWdodD0iNDgwIj48L2NhbnZhcz4K
LSAgICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxz
Y3JpcHQ+Ci1mdW5jdGlvbiBncmFiRnJhbWVEYXRhKHgsIHksIHcsIGgpCi17Ci0gICAgY2FudmFz
LndpZHRoID0gdmlkZW8udmlkZW9XaWR0aDsKLSAgICBjYW52YXMuaGVpZ2h0ID0gdmlkZW8udmlk
ZW9IZWlnaHQ7Ci0KLSAgICBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5kcmF3SW1hZ2UodmlkZW8s
IHgsIHksIHcsIGgsIHgsIHksIHcsIGgpOwotICAgIHJldHVybiBjYW52YXMuZ2V0Q29udGV4dCgn
MmQnKS5nZXRJbWFnZURhdGEoeCwgeSwgdywgaCkuZGF0YTsKLX0KLQotZnVuY3Rpb24gZ2V0Q2ly
Y2xlSW1hZ2VEYXRhKCkKLXsKLSAgICByZXR1cm4gZ3JhYkZyYW1lRGF0YSg0NTAsIDEwMCwgMTUw
LCAxMDApOwotfQotCi1hc3luYyBmdW5jdGlvbiBjaGVja1ZpZGVvSXNVcGRhdGVkKHNob3VsZEJl
VXBkYXRlZCwgY291bnQsIHJlZmVyZW5jZURhdGEpCi17Ci0gICAgaWYgKGNvdW50ID09PSB1bmRl
ZmluZWQpCi0gICAgICAgIGNvdW50ID0gMDsKLSAgICBlbHNlIGlmIChjb3VudCA+PSAyMCkKLSAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJjaGVja1ZpZGVvSXNVcGRhdGVkIHRpbWVkIG91
dCA6IiArIHNob3VsZEJlVXBkYXRlZCArICIgIiArIGNvdW50KTsKLQotICAgIGlmIChyZWZlcmVu
Y2VEYXRhID09PSB1bmRlZmluZWQpCi0gICAgICAgIHJlZmVyZW5jZURhdGEgPSBnZXRDaXJjbGVJ
bWFnZURhdGEoKTsKLQotICAgIGF3YWl0IHdhaXRGb3IoMjAwKTsKLSAgICBjb25zdCBuZXdEYXRh
ID0gZ2V0Q2lyY2xlSW1hZ2VEYXRhKCk7Ci0KLSAgICBpZiAoc2hvdWxkQmVVcGRhdGVkID09PSAo
SlNPTi5zdHJpbmdpZnkocmVmZXJlbmNlRGF0YSkgIT09IEpTT04uc3RyaW5naWZ5KG5ld0RhdGEp
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXdhaXQgY2hlY2tWaWRlb0lzVXBkYXRlZChzaG91
bGRCZVVwZGF0ZWQsICsrY291bnQsIG5ld0RhdGEpOwotfQotCi1wcm9taXNlX3Rlc3QoYXN5bmMg
KHRlc3QpID0+IHsKLSAgICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRp
YURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzogdHJ1ZX0pOwotICAgIGNvbnN0IHNlbmRlclRy
YW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oeyBjb21wYXRpYmlsaXR5TW9kZTogIkgyNjQi
IH0pOwotICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNmb3JtID0gbmV3IFNGcmFtZVRyYW5zZm9ybSh7
IGNvbXBhdGliaWxpdHlNb2RlOiAiSDI2NCIgfSk7Ci0gICAgYXdhaXQgY3J5cHRvLnN1YnRsZS5p
bXBvcnRLZXkoInJhdyIsIG5ldyBVaW50OEFycmF5KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwg
MzcsIDY3LCAyMzYsIDIxOSwgMjQsIDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFs
c2UsIFsiZGVyaXZlQml0cyIsICJkZXJpdmVLZXkiXSkudGhlbihrZXkgPT4gewotICAgICAgIHNl
bmRlclRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleSk7Ci0gICAgICAgcmVjZWl2ZXJUcmFu
c2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkpOwotICAgIH0pOwotCi0gICAgbGV0IHNlbmRlciwg
cmVjZWl2ZXI7Ci0gICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUs
IHJlamVjdCkgPT4gewotICAgICAgICBjcmVhdGVDb25uZWN0aW9ucygoZmlyc3RDb25uZWN0aW9u
KSA9PiB7Ci0gICAgICAgICAgICBwYzEgPSBmaXJzdENvbm5lY3Rpb247Ci0gICAgICAgICAgICBz
ZW5kZXIgPSBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxTdHJlYW0uZ2V0VmlkZW9UcmFj
a3MoKVswXSwgbG9jYWxTdHJlYW0pOwotICAgICAgICAgICAgc2VuZGVyLnRyYW5zZm9ybSA9IHNl
bmRlclRyYW5zZm9ybTsKLSAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKLSAgICAg
ICAgICAgIHBjMiA9IHNlY29uZENvbm5lY3Rpb247Ci0gICAgICAgICAgICBzZWNvbmRDb25uZWN0
aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4gewotICAgICAgICAgICAgICAgIHJlY2VpdmVy
ID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKLSAgICAgICAgICAgICAgICAvLyB3ZSBkbyBub3Qgc2V0
IHRoZSByZWNlaXZlciB0cmFuc2Zvcm0gaGVyZTsKLSAgICAgICAgICAgICAgICByZXNvbHZlKHRy
YWNrRXZlbnQuc3RyZWFtc1swXSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9LCB7Ci0gICAg
ICAgICAgICBvYnNlcnZlT2ZmZXIgOiAob2ZmZXIpID0+IHsKLSAgICAgICAgICAgICAgICBjb25z
dCBsaW5lcyA9IG9mZmVyLnNkcC5zcGxpdCgnXHJcbicpOwotICAgICAgICAgICAgICAgIGNvbnN0
IGgyNjRMaW5lcyA9IGxpbmVzLmZpbHRlcihsaW5lID0+IGxpbmUuaW5kZXhPZigiYT1mbXRwIikg
PT09IDAgJiYgbGluZS5pbmRleE9mKCI0MmUwMWYiKSAhPT0gLTEpOwotICAgICAgICAgICAgICAg
IGNvbnN0IGJhc2VsaW5lTnVtYmVyID0gaDI2NExpbmVzWzBdLnN1YnN0cmluZyg2KS5zcGxpdCgn
ICcpWzBdOwotICAgICAgICAgICAgICAgIG9mZmVyLnNkcCA9IGxpbmVzLmZpbHRlcihsaW5lID0+
IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChsaW5lLmluZGV4T2YoJ2E9Zm10cCcpID09
PSAtMSAmJiBsaW5lLmluZGV4T2YoJ2E9cnRjcC1mYicpID09PSAtMSAmJiBsaW5lLmluZGV4T2Yo
J2E9cnRwbWFwJykgPT09IC0xKSB8fCBsaW5lLmluZGV4T2YoYmFzZWxpbmVOdW1iZXIpICE9PSAt
MTsKLSAgICAgICAgICAgICAgICB9KS5qb2luKCdcclxuJyk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0pOwotICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQi
KSwgNTAwMCk7Ci0gICAgfSk7Ci0KLSAgICB2aWRlby5zcmNPYmplY3QgPSBzdHJlYW07Ci0gICAg
dmlkZW8ucGxheSgpOwotCi0gICAgLy8gV2Ugc2V0IHRoZSByZWNlaXZlciB0cmFuc2Zvcm0gaGVy
ZSBzbyB0aGF0IHRoZSBkZWNvZGVyIHByb2JhYmx5IHRyaWVkIHRvIGRlY29kZSBzZnJhbWUgY29u
dGVudC4KLSAgICBzZXRUaW1lb3V0KCgpID0+IHJlY2VpdmVyLnRyYW5zZm9ybSA9IHJlY2VpdmVy
VHJhbnNmb3JtLCA1MCk7Ci0gICAgYXdhaXQgY2hlY2tWaWRlb0lzVXBkYXRlZCh0cnVlKTsKLX0s
ICJ2aWRlbyBleGNoYW5nZSB3aXRoIGxhdGUgcmVjZWl2ZXIgdHJhbnNmb3JtIik7Ci0gICAgICAg
IDwvc2NyaXB0PgotICAgIDwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2MTJkMjk0Y2E1ZmRmNTMxZmQxMjkxMmVkOTI4YjVhZGEzMWYyY2ZjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDgg
KzAsMCBAQAotPCFkb2N0eXBlIGh0bWw+Ci08aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAgPG1l
dGEgY2hhcnNldD0idXRmLTgiPgotICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLSAgICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0g
ICAgICAgIDx2aWRlbyBpZD0idmlkZW8xIiBhdXRvcGxheT48L3ZpZGVvPgotICAgICAgICA8dmlk
ZW8gaWQ9InZpZGVvMiIgYXV0b3BsYXk+PC92aWRlbz4KLSAgICAgICAgPHNjcmlwdCBzcmMgPSJy
b3V0aW5lcy5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQ+Ci1hc3luYyBmdW5jdGlvbiB3
YWl0Rm9yTWVzc2FnZSh3b3JrZXIsIGRhdGEpCi17Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAg
ICAgY29uc3QgcmVjZWl2ZWQgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5v
bm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOwotICAgICAgICBpZiAo
ZGF0YSA9PT0gcmVjZWl2ZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi1wcm9t
aXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKLSAgICB3b3JrZXIgPSBuZXcgV29ya2VyKCdzY3Jp
cHQtdHJhbnNmb3JtLmpzJyk7Ci0gICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJl
c29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRh
KSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOwotCi0gICAgY29uc3Qg
Y2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICBjb25zdCB0cmFuc2Zvcm0gPSBuZXcg
UlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25hbWU6J01vY2tSVENSdHBUcmFuc2Zvcm0n
LCBwb3J0OiBjaGFubmVsLnBvcnQyfSwgW2NoYW5uZWwucG9ydDJdKTsKLSAgICB0cmFuc2Zvcm0u
cG9ydCA9IGNoYW5uZWwucG9ydDE7Ci0gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHJl
c29sdmUgPT4gdHJhbnNmb3JtLnBvcnQub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2
ZW50LmRhdGEpKTsKLSAgICB0cmFuc2Zvcm0ucG9ydC5wb3N0TWVzc2FnZSgidGVzdCIpOwotICAg
IGFzc2VydF9lcXVhbHMoYXdhaXQgcHJvbWlzZSwgInRlc3QiKTsKLX0sICJ0cmFuc2Zvcm0gbWVz
c2FnaW5nIik7Ci0KLXByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewotICAgIHdvcmtlciA9
IG5ldyBXb3JrZXIoJ3NjcmlwdC10cmFuc2Zvcm0uanMnKTsKLSAgICBjb25zdCBkYXRhID0gYXdh
aXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiBy
ZXNvbHZlKGV2ZW50LmRhdGEpKTsKLSAgICBhc3NlcnRfZXF1YWxzKGRhdGEsICJyZWdpc3RlcmVk
Iik7Ci0KLSAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotCi0gICAgY29u
c3Qgc2VuZGVyQ2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICBjb25zdCByZWNlaXZl
ckNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgY29uc3Qgc2VuZGVyVHJhbnNmb3Jt
ID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsIHtuYW1lOidNb2NrUlRDUnRwVHJh
bnNmb3JtJywgcG9ydDogc2VuZGVyQ2hhbm5lbC5wb3J0Mn0sIFtzZW5kZXJDaGFubmVsLnBvcnQy
XSk7Ci0gICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNm
b3JtKHdvcmtlciwge25hbWU6J01vY2tSVENSdHBUcmFuc2Zvcm0nLCBwb3J0OiByZWNlaXZlckNo
YW5uZWwucG9ydDJ9LCBbcmVjZWl2ZXJDaGFubmVsLnBvcnQyXSk7Ci0gICAgc2VuZGVyVHJhbnNm
b3JtLnBvcnQgPSBzZW5kZXJDaGFubmVsLnBvcnQxOwotICAgIHJlY2VpdmVyVHJhbnNmb3JtLnBv
cnQgPSByZWNlaXZlckNoYW5uZWwucG9ydDE7Ci0KLSAgICBjb25zdCBzZW5kZXIxID0gcGMuYWRk
VHJhbnNjZWl2ZXIoJ2F1ZGlvJykuc2VuZGVyOwotICAgIGNvbnN0IHNlbmRlcjIgPSBwYy5hZGRU
cmFuc2NlaXZlcigndmlkZW8nKS5zZW5kZXI7Ci0gICAgY29uc3QgcmVjZWl2ZXIxID0gcGMuZ2V0
UmVjZWl2ZXJzKClbMF07Ci0gICAgY29uc3QgcmVjZWl2ZXIyID0gcGMuZ2V0UmVjZWl2ZXJzKClb
MV07Ci0KLSAgICBzZW5kZXIxLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKLSAgICByZWNl
aXZlcjEudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07Ci0gICAgYXNzZXJ0X3Rocm93c19k
b20oIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4gc2VuZGVyMi50cmFuc2Zvcm0gPSBzZW5kZXJU
cmFuc2Zvcm0pOwotICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsICgp
ID0+IHJlY2VpdmVyMi50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybSk7Ci0KLSAgICBzZW5k
ZXIxLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKLSAgICByZWNlaXZlcjEudHJhbnNmb3Jt
ID0gcmVjZWl2ZXJUcmFuc2Zvcm07Ci0KLSAgICBzZW5kZXIxLnRyYW5zZm9ybSA9IG51bGw7Ci0g
ICAgcmVjZWl2ZXIxLnRyYW5zZm9ybSA9IG51bGw7Ci19LCAiQ2Fubm90IHJldXNlIGF0dGFjaGVk
IHRyYW5zZm9ybXMiKTsKLQotcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7Ci0gICAgd29y
a2VyID0gbmV3IFdvcmtlcignc2NyaXB0LXRyYW5zZm9ybS5qcycpOwotICAgIGNvbnN0IGRhdGEg
PSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQp
ID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOwotICAgIGFzc2VydF9lcXVhbHMoZGF0YSwgInJlZ2lz
dGVyZWQiKTsKLSAgICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURl
dmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOwotCi0gICAgY29uc3Qgc2VuZGVyQ2hh
bm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICBjb25zdCByZWNlaXZlckNoYW5uZWwgPSBu
ZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7Ci0gICAgY29uc3Qg
c2VuZGVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsIHtuYW1l
OidNb2NrUlRDUnRwVHJhbnNmb3JtJywgcG9ydDogc2VuZGVyQ2hhbm5lbC5wb3J0Mn0sIFtzZW5k
ZXJDaGFubmVsLnBvcnQyXSk7Ci0gICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgUlRD
UnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25hbWU6J01vY2tSVENSdHBUcmFuc2Zvcm0nLCBw
b3J0OiByZWNlaXZlckNoYW5uZWwucG9ydDJ9LCBbcmVjZWl2ZXJDaGFubmVsLnBvcnQyXSk7Ci0g
ICAgc2VuZGVyVHJhbnNmb3JtLnBvcnQgPSBzZW5kZXJDaGFubmVsLnBvcnQxOwotICAgIHJlY2Vp
dmVyVHJhbnNmb3JtLnBvcnQgPSByZWNlaXZlckNoYW5uZWwucG9ydDE7Ci0KLSAgICBjb25zdCBz
dGFydGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9
IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7Ci0KLSAgICBjb25zdCBzdHJlYW0gPSBh
d2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgIGNyZWF0ZUNv
bm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKLSAgICAgICAgICAgIHBjMSA9IGZpcnN0
Q29ubmVjdGlvbjsKLSAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFj
ayhsb2NhbFN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdLCBsb2NhbFN0cmVhbSk7Ci0gICAgICAg
ICAgICBzZW5kZXIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtOwotICAgICAgICB9LCAoc2Vj
b25kQ29ubmVjdGlvbikgPT4gewotICAgICAgICAgICAgcGMyID0gc2Vjb25kQ29ubmVjdGlvbjsK
LSAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7
Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOwotICAgICAg
ICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOwotICAgICAg
ICAgICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsKLSAgICAgICAgICAgIH07
Ci0gICAgICAgIH0pOwotICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1l
ZCBvdXQiKSwgNTAwMCk7Ci0gICAgfSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IHN0YXJ0
ZWRQcm9taXNlLCAic3RhcnRlZCIpOwotCi0gICAgYXdhaXQgd2FpdEZvck1lc3NhZ2Uod29ya2Vy
LCAiYXVkaW8gY2h1bmsiKTsKLQotICAgIHZpZGVvMS5zcmNPYmplY3QgPSBzdHJlYW07Ci0gICAg
YXdhaXQgdmlkZW8xLnBsYXkoKTsKLX0sICJhdWRpbyBleGNoYW5nZSB3aXRoIHRyYW5zZm9ybSIp
OwotCi1wcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKLSAgICB3b3JrZXIgPSBuZXcgV29y
a2VyKCdzY3JpcHQtdHJhbnNmb3JtLmpzJyk7Ci0gICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShl
dmVudC5kYXRhKSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOwotCi0g
ICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVz
ZXJNZWRpYSh7dmlkZW86IHRydWV9KTsKLQotICAgIGNvbnN0IHNlbmRlckNoYW5uZWwgPSBuZXcg
TWVzc2FnZUNoYW5uZWw7Ci0gICAgY29uc3QgcmVjZWl2ZXJDaGFubmVsID0gbmV3IE1lc3NhZ2VD
aGFubmVsOwotICAgIGxldCBzZW5kZXIsIHJlY2VpdmVyOwotICAgIGNvbnN0IHNlbmRlclRyYW5z
Zm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZTonTW9ja1JUQ1J0
cFRyYW5zZm9ybScsIHBvcnQ6IHNlbmRlckNoYW5uZWwucG9ydDJ9LCBbc2VuZGVyQ2hhbm5lbC5w
b3J0Ml0pOwotICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRy
YW5zZm9ybSh3b3JrZXIsIHtuYW1lOidNb2NrUlRDUnRwVHJhbnNmb3JtJywgcG9ydDogcmVjZWl2
ZXJDaGFubmVsLnBvcnQyfSwgW3JlY2VpdmVyQ2hhbm5lbC5wb3J0Ml0pOwotICAgIHNlbmRlclRy
YW5zZm9ybS5wb3J0ID0gc2VuZGVyQ2hhbm5lbC5wb3J0MTsKLSAgICByZWNlaXZlclRyYW5zZm9y
bS5wb3J0ID0gcmVjZWl2ZXJDaGFubmVsLnBvcnQxOwotCi0gICAgY29uc3Qgc3RhcnRlZFByb21p
c2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+
IHJlc29sdmUoZXZlbnQuZGF0YSkpOwotCi0gICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmV3IFBy
b21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAgICAgICBjcmVhdGVDb25uZWN0aW9ucygo
Zmlyc3RDb25uZWN0aW9uKSA9PiB7Ci0gICAgICAgICAgICBwYzEgPSBmaXJzdENvbm5lY3Rpb247
Ci0gICAgICAgICAgICBzZW5kZXIgPSBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxTdHJl
YW0uZ2V0VmlkZW9UcmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOwotICAgICAgICAgICAgc2VuZGVy
LnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKLSAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rp
b24pID0+IHsKLSAgICAgICAgICAgIHBjMiA9IHNlY29uZENvbm5lY3Rpb247Ci0gICAgICAgICAg
ICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4gewotICAgICAgICAg
ICAgICAgIHJlY2VpdmVyID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKLSAgICAgICAgICAgICAgICBy
ZWNlaXZlci50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKLSAgICAgICAgICAgICAgICBy
ZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9
KTsKLSAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUw
MDApOwotICAgIH0pOwotCi0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBzdGFydGVkUHJvbWlzZSwg
InN0YXJ0ZWQiKTsKLQotICAgIGF3YWl0IHdhaXRGb3JNZXNzYWdlKHdvcmtlciwgInZpZGVvIGNo
dW5rIik7Ci0KLSAgICB2aWRlbzEuc3JjT2JqZWN0ID0gc3RyZWFtOwotICAgIGF3YWl0IHZpZGVv
MS5wbGF5KCk7Ci19LCAidmlkZW8gZXhjaGFuZ2Ugd2l0aCB0cmFuc2Zvcm0iKTsKLSAgICAgICAg
PC9zY3JpcHQ+Ci0gICAgPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2VicnRjL3dyaXRlLXR3aWNlLXRyYW5zZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2VicnRjL3dyaXRlLXR3aWNlLXRyYW5zZm9ybS5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzOThiNWEzYzU3MWE0OTI5MmZkMzExM2E0ODgxYjFjZWM3MDcxZTY4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYnJ0Yy93cml0ZS10d2ljZS10cmFuc2Zvcm0uaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDU4ICswLDAgQEAKLTwhZG9jdHlwZSBodG1sPgotPGh0bWw+Ci0gICAgPGhlYWQ+
Ci0gICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICAgICAgPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0gICAgPC9oZWFkPgot
ICAgIDxib2R5PgotICAgICAgICA8dmlkZW8gaWQ9InZpZGVvMSIgYXV0b3BsYXk+PC92aWRlbz4K
LSAgICAgICAgPHZpZGVvIGlkPSJ2aWRlbzIiIGF1dG9wbGF5PjwvdmlkZW8+Ci0gICAgICAgIDxz
Y3JpcHQgc3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0PgotYXN5
bmMgZnVuY3Rpb24gd2FpdEZvck1lc3NhZ2Uod29ya2VyLCBkYXRhKQotewotICAgIHdoaWxlICh0
cnVlKSB7Ci0gICAgICAgIGNvbnN0IHJlY2VpdmVkID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsK
LSAgICAgICAgaWYgKGRhdGEgPT09IHJlY2VpdmVkKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
IH0KLX0KLQotcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7Ci0gICAgd29ya2VyID0gbmV3
IFdvcmtlcignd3JpdGUtdHdpY2UtdHJhbnNmb3JtLmpzJyk7Ci0gICAgY29uc3QgZGF0YSA9IGF3
YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4g
cmVzb2x2ZShldmVudC5kYXRhKSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJl
ZCIpOwotCi0gICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZp
Y2VzLmdldFVzZXJNZWRpYSh7dmlkZW86IHRydWV9KTsKLQotICAgIGxldCBzZW5kZXIsIHJlY2Vp
dmVyOwotICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zv
cm0od29ya2VyLCB7bmFtZTonTW9ja1JUQ1J0cFRyYW5zZm9ybScsIHNpZGU6J3NlbmRlcicsIHJv
bGU6J2VuY3J5cHQnfSk7Ci0gICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRw
U2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25hbWU6J01vY2tSVENSdHBUcmFuc2Zvcm0nLCBzaWRl
OidyZWNlaXZlcicsIHJvbGU6J2RlY3J5cHQnfSk7Ci0KLSAgICBjb25zdCBzdGFydGVkUHJvbWlz
ZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4g
cmVzb2x2ZShldmVudC5kYXRhKSk7Ci0KLSAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJv
bWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChm
aXJzdENvbm5lY3Rpb24pID0+IHsKLSAgICAgICAgICAgIHBjMSA9IGZpcnN0Q29ubmVjdGlvbjsK
LSAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhsb2NhbFN0cmVh
bS5nZXRWaWRlb1RyYWNrcygpWzBdLCBsb2NhbFN0cmVhbSk7Ci0gICAgICAgICAgICBzZW5kZXIu
dHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtOwotICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlv
bikgPT4gewotICAgICAgICAgICAgcGMyID0gc2Vjb25kQ29ubmVjdGlvbjsKLSAgICAgICAgICAg
IHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7Ci0gICAgICAgICAg
ICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOwotICAgICAgICAgICAgICAgIHJl
Y2VpdmVyLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOwotICAgICAgICAgICAgICAgIHJl
c29sdmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0p
OwotICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAw
MCk7Ci0gICAgfSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IHN0YXJ0ZWRQcm9taXNlLCAi
c3RhcnRlZCIpOwotCi0gICAgdmlkZW8xLnNyY09iamVjdCA9IHN0cmVhbTsKLSAgICBhd2FpdCB2
aWRlbzEucGxheSgpOwotfSwgInZpZGVvIGV4Y2hhbmdlIHdpdGggd3JpdGUgdHdpY2UgdHJhbnNm
b3JtIik7Ci0gICAgICAgIDwvc2NyaXB0PgotICAgIDwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy93cml0ZS10d2ljZS10cmFuc2Zvcm0uanMg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvd3JpdGUtdHdpY2UtdHJhbnNmb3JtLmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDQyOGM4MWIzYWE1NDM0MzE5ZTEwZmJlYzZh
MDA3NWE3ZDQwYjk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy93cml0ZS10d2ljZS10cmFuc2Zvcm0uanMK
KysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1vbnJ0Y3RyYW5zZm9ybSA9IChldmVudCkg
PT4gewotICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gZXZlbnQudHJhbnNmb3JtZXI7Ci0KLSAgICBz
ZWxmLnBvc3RNZXNzYWdlKCJzdGFydGVkIik7Ci0KLSAgICB0cmFuc2Zvcm1lci5yZWFkZXIgPSB0
cmFuc2Zvcm1lci5yZWFkYWJsZS5nZXRSZWFkZXIoKTsKLSAgICB0cmFuc2Zvcm1lci53cml0ZXIg
PSB0cmFuc2Zvcm1lci53cml0YWJsZS5nZXRXcml0ZXIoKTsKLSAgICBmdW5jdGlvbiBwcm9jZXNz
KHRyYW5zZm9ybWVyKQotICAgIHsKLSAgICAgICAgdHJhbnNmb3JtZXIucmVhZGVyLnJlYWQoKS50
aGVuKGNodW5rID0+IHsKLSAgICAgICAgICAgIGlmIChjaHVuay5kb25lKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAgICAgdHJhbnNmb3JtZXIud3JpdGVyLndyaXRlKGNodW5r
LnZhbHVlKTsKLSAgICAgICAgICAgIHRyYW5zZm9ybWVyLndyaXRlci53cml0ZShjaHVuay52YWx1
ZSk7Ci0gICAgICAgICAgICBwcm9jZXNzKHRyYW5zZm9ybWVyKTsKLSAgICAgICAgfSk7Ci0gICAg
fQotCi0gICAgcHJvY2Vzcyh0cmFuc2Zvcm1lcik7Ci19Owotc2VsZi5wb3N0TWVzc2FnZSgicmVn
aXN0ZXJlZCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vcm91dGluZXMuanMgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5z
Zm9ybS9yb3V0aW5lcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGI3ZjM5NjIxY2M4OTEyODhmZTdmYjViMTA3
ZWI5ZGJmMjFmYzJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vcm91dGluZXMuanMK
QEAgLTAsMCArMSwzMiBAQAorYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29ubmVjdGlvbnModGVzdCwg
c2V0dXBMb2NhbENvbm5lY3Rpb24sIHNldHVwUmVtb3RlQ29ubmVjdGlvbiwgZG9Ob3RDbG9zZUF1
dG1vYXRpY2FsbHkpIHsKKyAgICBjb25zdCBsb2NhbENvbm5lY3Rpb24gPSBuZXcgUlRDUGVlckNv
bm5lY3Rpb24oKTsKKyAgICBjb25zdCByZW1vdGVDb25uZWN0aW9uID0gbmV3IFJUQ1BlZXJDb25u
ZWN0aW9uKCk7CisKKyAgICByZW1vdGVDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gKGV2ZW50
KSA9PiB7IGxvY2FsQ29ubmVjdGlvbi5hZGRJY2VDYW5kaWRhdGUoZXZlbnQuY2FuZGlkYXRlKTsg
fTsKKyAgICBsb2NhbENvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSAoZXZlbnQpID0+IHsgcmVt
b3RlQ29ubmVjdGlvbi5hZGRJY2VDYW5kaWRhdGUoZXZlbnQuY2FuZGlkYXRlKTsgfTsKKworICAg
IGF3YWl0IHNldHVwTG9jYWxDb25uZWN0aW9uKGxvY2FsQ29ubmVjdGlvbik7CisgICAgYXdhaXQg
c2V0dXBSZW1vdGVDb25uZWN0aW9uKHJlbW90ZUNvbm5lY3Rpb24pOworCisgICAgY29uc3Qgb2Zm
ZXIgPSBhd2FpdCBsb2NhbENvbm5lY3Rpb24uY3JlYXRlT2ZmZXIoKTsKKyAgICBhd2FpdCBsb2Nh
bENvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7CisgICAgYXdhaXQgcmVtb3Rl
Q29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcik7CisKKyAgICBjb25zdCBhbnN3
ZXIgPSBhd2FpdCByZW1vdGVDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcigpOworICAgIGF3YWl0IHJl
bW90ZUNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihhbnN3ZXIpOworICAgIGF3YWl0IGxv
Y2FsQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihhbnN3ZXIpOworCisgICAgaWYgKCFk
b05vdENsb3NlQXV0bW9hdGljYWxseSkgeworICAgICAgICB0ZXN0LmFkZF9jbGVhbnVwKCgpID0+
IHsKKyAgICAgICAgICAgIGxvY2FsQ29ubmVjdGlvbi5jbG9zZSgpOworICAgICAgICAgICAgcmVt
b3RlQ29ubmVjdGlvbi5jbG9zZSgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICByZXR1cm4g
W2xvY2FsQ29ubmVjdGlvbiwgcmVtb3RlQ29ubmVjdGlvbl07Cit9CisKK2Z1bmN0aW9uIHdhaXRG
b3IodGVzdCwgZHVyYXRpb24pCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9
PiB0ZXN0LnN0ZXBfdGltZW91dChyZXNvbHZlLCBkdXJhdGlvbikpOworfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2Rl
ZC10cmFuc2Zvcm0vc2NyaXB0LWF1ZGlvLXRyYW5zZm9ybS13b3JrZXIuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9y
bS9zY3JpcHQtYXVkaW8tdHJhbnNmb3JtLXdvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2I0MzcxM2Qz
YWE0ZGZhNzkxMDQ2MDUwMDI2N2Y2NjRjMmIwM2Y2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFu
c2Zvcm0vc2NyaXB0LWF1ZGlvLXRyYW5zZm9ybS13b3JrZXIuanMKQEAgLTAsMCArMSwzMCBAQAor
Y2xhc3MgTW9ja1JUQ1J0cFRyYW5zZm9ybWVyIHsKKyAgICBjb25zdHJ1Y3Rvcih0cmFuc2Zvcm1l
cikgeworICAgICAgICB0aGlzLmNvbnRleHQgPSB0cmFuc2Zvcm1lcjsKKyAgICAgICAgdGhpcy5z
dGFydCgpOworICAgIH0KKyAgICBzdGFydCgpCisgICAgeworICAgICAgICB0aGlzLnJlYWRlciA9
IHRoaXMuY29udGV4dC5yZWFkYWJsZS5nZXRSZWFkZXIoKTsKKyAgICAgICAgdGhpcy53cml0ZXIg
PSB0aGlzLmNvbnRleHQud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgICAgICAgIHRoaXMucHJvY2Vz
cygpOworICAgICAgICB0aGlzLmNvbnRleHQub3B0aW9ucy5wb3J0LnBvc3RNZXNzYWdlKCJzdGFy
dGVkICIgKyB0aGlzLmNvbnRleHQub3B0aW9ucy5tZWRpYVR5cGUgKyAiICIgKyB0aGlzLmNvbnRl
eHQub3B0aW9ucy5zaWRlKTsKKyAgICB9CisKKyAgICBwcm9jZXNzKCkKKyAgICB7CisgICAgICAg
IHRoaXMucmVhZGVyLnJlYWQoKS50aGVuKGNodW5rID0+IHsKKyAgICAgICAgICAgIGlmIChjaHVu
ay5kb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgdGhpcy53cml0
ZXIud3JpdGUoY2h1bmsudmFsdWUpOworICAgICAgICAgICAgdGhpcy5wcm9jZXNzKCk7CisgICAg
ICAgIH0pOworICAgIH0KK307CisKK29ucnRjdHJhbnNmb3JtID0gKGV2ZW50KSA9PiB7CisgICAg
bmV3IE1vY2tSVENSdHBUcmFuc2Zvcm1lcihldmVudC50cmFuc2Zvcm1lcik7Cit9OworCitzZWxm
LnBvc3RNZXNzYWdlKCJyZWdpc3RlcmVkIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3Jp
cHQtYXVkaW8tdHJhbnNmb3JtLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3Njcmlw
dC1hdWRpby10cmFuc2Zvcm0uaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhYTdkYzdk
Yjg0OGM2MDIxZDUwODc0YzYwMTgxYzdkZTgyMDEyZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRy
YW5zZm9ybS9zY3JpcHQtYXVkaW8tdHJhbnNmb3JtLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDQgQEAKKworCitQQVNTIHNjcmlwdC1hdWRpby10cmFuc2Zvcm0KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2Rl
ZC10cmFuc2Zvcm0vc2NyaXB0LWF1ZGlvLXRyYW5zZm9ybS5odHRwcy5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zv
cm0vc2NyaXB0LWF1ZGlvLXRyYW5zZm9ybS5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkYTA1ZTQ5
ZWYwMDVkODI4NzYyZTc1MTc3MDZjMmJmNzVjOGMzMzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRy
YW5zZm9ybS9zY3JpcHQtYXVkaW8tdHJhbnNmb3JtLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw2NSBA
QAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAg
IDx2aWRlbyBpZD0idmlkZW8iIGF1dG9wbGF5IHBsYXlzSW5saW5lPjwvdmlkZW8+CisgICAgICAg
IDxzY3JpcHQgc3JjPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Citm
dW5jdGlvbiB3YWl0Rm9yTWVzc2FnZSh0ZXN0LCBwb3J0LCBkYXRhKQoreworICAgIGxldCBnb3RN
ZXNzYWdlOworICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0
KSA9PiB7CisgICAgICAgIGdvdE1lc3NhZ2UgPSByZXNvbHZlOworICAgICAgICB0ZXN0LnN0ZXBf
dGltZW91dCgoKSA9PiB7IHJlamVjdCgiZGlkIG5vdCBnZXQgIiArIGRhdGEpIH0sIDUwMDApOwor
ICAgIH0pOworICAgIHBvcnQub25tZXNzYWdlID0gZXZlbnQgPT4geworICAgICAgIGlmIChldmVu
dC5kYXRhID09PSBkYXRhKQorICAgICAgICAgICBnb3RNZXNzYWdlKCk7CisgICAgfTsKKyAgICBy
ZXR1cm4gcHJvbWlzZTsKK30KKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAg
d29ya2VyID0gbmV3IFdvcmtlcigic2NyaXB0LWF1ZGlvLXRyYW5zZm9ybS13b3JrZXIuanMiKTsK
KyAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25t
ZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7CisKKyAgICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0
IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOworCisg
ICAgY29uc3Qgc2VuZGVyQ2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKKyAgICBjb25zdCBy
ZWNlaXZlckNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CisgICAgY29uc3Qgc2VuZGVyVHJh
bnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsIHtuYW1lOidNb2NrUlRD
UnRwVHJhbnNmb3JtJywgbWVkaWFUeXBlOidhdWRpbycsIHNpZGU6J3NlbmRlcicsIHBvcnQ6c2Vu
ZGVyQ2hhbm5lbC5wb3J0Mn0sIFtzZW5kZXJDaGFubmVsLnBvcnQyXSk7CisgICAgY29uc3QgcmVj
ZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25hbWU6
J01vY2tSVENSdHBUcmFuc2Zvcm0nLCBtZWRpYVR5cGU6J2F1ZGlvJywgc2lkZToncmVjZWl2ZXIn
LCBwb3J0OnJlY2VpdmVyQ2hhbm5lbC5wb3J0Mn0sIFtyZWNlaXZlckNoYW5uZWwucG9ydDJdKTsK
KyAgICBzZW5kZXJUcmFuc2Zvcm0ucG9ydCA9IHNlbmRlckNoYW5uZWwucG9ydDE7CisgICAgcmVj
ZWl2ZXJUcmFuc2Zvcm0ucG9ydCA9IHJlY2VpdmVyQ2hhbm5lbC5wb3J0MTsKKworICAgIHByb21p
c2UxID0gd2FpdEZvck1lc3NhZ2UodGVzdCwgc2VuZGVyVHJhbnNmb3JtLnBvcnQsICJzdGFydGVk
IGF1ZGlvIHNlbmRlciIpOworICAgIHByb21pc2UyID0gd2FpdEZvck1lc3NhZ2UodGVzdCwgcmVj
ZWl2ZXJUcmFuc2Zvcm0ucG9ydCwgInN0YXJ0ZWQgYXVkaW8gcmVjZWl2ZXIiKTsKKworICAgIGNv
bnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAg
ICAgICAgY3JlYXRlQ29ubmVjdGlvbnModGVzdCwgKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAg
ICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdl
dEF1ZGlvVHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKKyAgICAgICAgICAgIHNlbmRlci50cmFu
c2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07CisgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9
PiB7CisgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkg
PT4geworICAgICAgICAgICAgICAgIHJlY2VpdmVyID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKKyAg
ICAgICAgICAgICAgICByZWNlaXZlci50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKKyAg
ICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAg
ICB9OworICAgICAgICB9KTsKKyAgICAgICAgdGVzdC5zdGVwX3RpbWVvdXQoKCkgPT4gcmVqZWN0
KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKKyAgICB9KTsKKworICAgIGF3YWl0IHByb21pc2Ux
OworICAgIGF3YWl0IHByb21pc2UyOworCisgICAgdmlkZW8uc3JjT2JqZWN0ID0gc3RyZWFtOwor
ICAgIHJldHVybiB2aWRlby5wbGF5KCk7Cit9KTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LWNoYW5nZS10cmFu
c2Zvcm0td29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LWNoYW5nZS10cmFuc2Zvcm0td29y
a2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg0YTdhYWFjMTgxZGI0Y2UyYWJkYWMyOTVmYWExNTU1MTk2ZTli
OWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtY2hhbmdlLXRyYW5zZm9y
bS13b3JrZXIuanMKQEAgLTAsMCArMSwzOSBAQAorZnVuY3Rpb24gYXBwZW5kVG9CdWZmZXIoYnVm
ZmVyLCB2YWx1ZSkgeworICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheUJ1ZmZlcihidWZmZXIu
Ynl0ZUxlbmd0aCArIDEpOworICAgIGNvbnN0IGJ5dGVSZXN1bHQgPSBuZXcgVWludDhBcnJheShy
ZXN1bHQpOworICAgIGJ5dGVSZXN1bHQuc2V0KG5ldyBVaW50OEFycmF5KGJ1ZmZlciksIDApOwor
ICAgIGJ5dGVSZXN1bHRbYnVmZmVyLmJ5dGVMZW5ndGhdID0gdmFsdWU7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworb25ydGN0cmFuc2Zvcm0gPSAoZXZlbnQpID0+IHsKKyAgICBjb25zdCB0cmFu
c2Zvcm1lciA9IGV2ZW50LnRyYW5zZm9ybWVyOworCisgICAgdHJhbnNmb3JtZXIucmVhZGVyID0g
dHJhbnNmb3JtZXIucmVhZGFibGUuZ2V0UmVhZGVyKCk7CisgICAgdHJhbnNmb3JtZXIud3JpdGVy
ID0gdHJhbnNmb3JtZXIud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisKKyAgICBmdW5jdGlvbiBwcm9j
ZXNzKHRyYW5zZm9ybWVyKQorICAgIHsKKyAgICAgICAgdHJhbnNmb3JtZXIucmVhZGVyLnJlYWQo
KS50aGVuKGNodW5rID0+IHsKKyAgICAgICAgICAgIGlmIChjaHVuay5kb25lKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1lci5vcHRpb25zLm5hbWUg
PT09ICdzZW5kZXIxJykKKyAgICAgICAgICAgICAgICBjaHVuay52YWx1ZS5kYXRhID0gYXBwZW5k
VG9CdWZmZXIoY2h1bmsudmFsdWUuZGF0YSwgMSk7CisgICAgICAgICAgICBlbHNlIGlmICh0cmFu
c2Zvcm1lci5vcHRpb25zLm5hbWUgPT09ICdzZW5kZXIyJykKKyAgICAgICAgICAgICAgICBjaHVu
ay52YWx1ZS5kYXRhID0gYXBwZW5kVG9CdWZmZXIoY2h1bmsudmFsdWUuZGF0YSwgMik7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IG5ldyBVaW50OEFy
cmF5KGNodW5rLnZhbHVlLmRhdGEpW2NodW5rLnZhbHVlLmRhdGEuYnl0ZUxlbmd0aCAtIDFdOwor
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gMSAmJiB2YWx1ZSAhPT0gMikKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgidW5leHBlY3RlZCB2YWx1ZTogIiArIHZhbHVl
KTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gMikKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5wb3N0TWVzc2FnZSgiZ290IHZhbHVlIDIiKTsKKyAgICAgICAgICAgICAgICBj
aHVuay52YWx1ZS5kYXRhID0gY2h1bmsudmFsdWUuZGF0YS5zbGljZSgwLCBjaHVuay52YWx1ZS5k
YXRhLmJ5dGVMZW5ndGggLSAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRyYW5zZm9y
bWVyLndyaXRlci53cml0ZShjaHVuay52YWx1ZSk7CisgICAgICAgICAgICBwcm9jZXNzKHRyYW5z
Zm9ybWVyKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgcHJvY2Vzcyh0cmFuc2Zvcm1lcik7
Cit9Oworc2VsZi5wb3N0TWVzc2FnZSgicmVnaXN0ZXJlZCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFu
c2Zvcm0vc2NyaXB0LWNoYW5nZS10cmFuc2Zvcm0uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFu
c2Zvcm0vc2NyaXB0LWNoYW5nZS10cmFuc2Zvcm0uaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjMzZWY0ODNmZDllZWNhNGU4OWYzYjliOTU4N2U3MDQ2YjQ4ZDFhOTMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0
Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtY2hhbmdlLXRyYW5zZm9ybS5odHRwcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0IEBACisKKworUEFTUyBjaGFuZ2Ugc2VuZGVyIHRyYW5zZm9ybQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtY2hhbmdlLXRyYW5zZm9ybS5odHRwcy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMt
ZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LWNoYW5nZS10cmFuc2Zvcm0uaHR0cHMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iYjg3OGM1YzE5NjkxMWIwNjkyNDFmNDExZjY0NGExNzQyMzgxNzM0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LWNoYW5nZS10cmFuc2Zvcm0uaHR0cHMuaHRt
bApAQCAtMCwwICsxLDU3IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIDxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keT4KKyAgICAgICAgPHZpZGVvIGlkPSJ2aWRlbzEiIGF1dG9wbGF5IGNvbnRyb2xzIHBs
YXlzaW5saW5lPjwvdmlkZW8+CisgICAgICAgIDxzY3JpcHQgc3JjID0icm91dGluZXMuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorYXN5bmMgZnVuY3Rpb24gd2FpdEZvck1lc3NhZ2Uo
d29ya2VyLCBkYXRhKQoreworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGNvbnN0IHJlY2Vp
dmVkID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2
ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICAgICAgaWYgKGRhdGEgPT09IHJlY2Vp
dmVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworcHJvbWlzZV90ZXN0KGFzeW5j
ICh0ZXN0KSA9PiB7CisgICAgd29ya2VyID0gbmV3IFdvcmtlcignc2NyaXB0LWNoYW5nZS10cmFu
c2Zvcm0td29ya2VyLmpzJyk7CisgICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJl
c29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRh
KSk7CisgICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOworCisgICAgY29uc3Qg
bG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7
dmlkZW86IHRydWV9KTsKKworICAgIGxldCBzZW5kZXIsIHJlY2VpdmVyOworICAgIGNvbnN0IHNl
bmRlclRyYW5zZm9ybTEgPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25hbWU6
J3NlbmRlcjEnfSk7CisgICAgY29uc3Qgc2VuZGVyVHJhbnNmb3JtMiA9IG5ldyBSVENSdHBTY3Jp
cHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZTonc2VuZGVyMid9KTsKKyAgICBjb25zdCByZWNlaXZl
clRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZToncmVj
ZWl2ZXInfSk7CisKKyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2
ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKHRlc3QsIChmaXJzdENv
bm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRU
cmFjayhsb2NhbFN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLCBsb2NhbFN0cmVhbSk7CisgICAg
ICAgICAgICBmaXJzdENvbm5lY3Rpb24uZ2V0VHJhbnNjZWl2ZXJzKClbMF0uc2V0Q29kZWNQcmVm
ZXJlbmNlcyhbe21pbWVUeXBlOiAidmlkZW8vVlA4IiwgY2xvY2tSYXRlOiA5MDAwMH1dKTsKKyAg
ICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm0xOworICAgICAgICB9
LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5v
bnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICByZWNlaXZlciA9IHRy
YWNrRXZlbnQucmVjZWl2ZXI7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJhbnNmb3JtID0g
cmVjZWl2ZXJUcmFuc2Zvcm07CisgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0
cmVhbXNbMF0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgfSk7CisgICAgICAgIHRlc3Quc3Rl
cF90aW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7CisgICAgfSk7
CisKKyAgICB2aWRlbzEuc3JjT2JqZWN0ID0gc3RyZWFtOworICAgIGF3YWl0IHZpZGVvMS5wbGF5
KCk7CisKKyAgICBjb25zdCB1cGRhdGVQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3
b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBz
ZW5kZXIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtMjsKKyAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IHVwZGF0ZVByb21pc2UsICJnb3QgdmFsdWUgMiIpOworfSwgImNoYW5nZSBzZW5kZXIgdHJh
bnNmb3JtIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
LWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1sYXRlLXRyYW5zZm9ybS5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1l
bmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtbGF0ZS10cmFuc2Zvcm0uaHR0cHMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI3NzFiZjFjNmE2YTJmZTA0MjRlMmExNzllNzE2NjdkMzAyMjlhMzAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtbGF0ZS10cmFuc2Zvcm0uaHR0cHMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCisKK1BBU1MgdmlkZW8gZXhjaGFuZ2Ugd2l0
aCBsYXRlIHJlY2VpdmVyIHRyYW5zZm9ybQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3Jp
cHQtbGF0ZS10cmFuc2Zvcm0uaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1sYXRlLXRy
YW5zZm9ybS5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5YWQwZTE5OTkyNTI3NTg5M2VkNmM3MzNk
NmMwNWJkZTcwMzI4ODYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtbGF0
ZS10cmFuc2Zvcm0uaHR0cHMuaHRtbApAQCAtMCwwICsxLDkwIEBACis8IWRvY3R5cGUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHZpZGVvIGNvbnRyb2xzIGlk
PSJ2aWRlbyIgYXV0b3BsYXk+PC92aWRlbz4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzIiB3
aWR0aD0iNjQwIiBoZWlnaHQ9IjQ4MCI+PC9jYW52YXM+CisgICAgICAgIDxzY3JpcHQgc3JjID0i
cm91dGluZXMuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorZnVuY3Rpb24gZ3JhYkZy
YW1lRGF0YSh4LCB5LCB3LCBoKQoreworICAgIGNhbnZhcy53aWR0aCA9IHZpZGVvLnZpZGVvV2lk
dGg7CisgICAgY2FudmFzLmhlaWdodCA9IHZpZGVvLnZpZGVvSGVpZ2h0OworCisgICAgY2FudmFz
LmdldENvbnRleHQoJzJkJykuZHJhd0ltYWdlKHZpZGVvLCB4LCB5LCB3LCBoLCB4LCB5LCB3LCBo
KTsKKyAgICByZXR1cm4gY2FudmFzLmdldENvbnRleHQoJzJkJykuZ2V0SW1hZ2VEYXRhKHgsIHks
IHcsIGgpLmRhdGE7Cit9CisKK2Z1bmN0aW9uIGdldENpcmNsZUltYWdlRGF0YSgpCit7CisgICAg
cmV0dXJuIGdyYWJGcmFtZURhdGEoNDUwLCAxMDAsIDE1MCwgMTAwKTsKK30KKworYXN5bmMgZnVu
Y3Rpb24gY2hlY2tWaWRlb0lzVXBkYXRlZCh0ZXN0LCBzaG91bGRCZVVwZGF0ZWQsIGNvdW50LCBy
ZWZlcmVuY2VEYXRhKQoreworICAgIGlmIChjb3VudCA9PT0gdW5kZWZpbmVkKQorICAgICAgICBj
b3VudCA9IDA7CisgICAgZWxzZSBpZiAoY291bnQgPj0gMjApCisgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlamVjdCgiY2hlY2tWaWRlb0lzVXBkYXRlZCB0aW1lZCBvdXQgOiIgKyBzaG91bGRCZVVw
ZGF0ZWQgKyAiICIgKyBjb3VudCk7CisKKyAgICBpZiAocmVmZXJlbmNlRGF0YSA9PT0gdW5kZWZp
bmVkKQorICAgICAgICByZWZlcmVuY2VEYXRhID0gZ2V0Q2lyY2xlSW1hZ2VEYXRhKCk7CisKKyAg
ICBhd2FpdCB3YWl0Rm9yKHRlc3QsIDIwMCk7CisgICAgY29uc3QgbmV3RGF0YSA9IGdldENpcmNs
ZUltYWdlRGF0YSgpOworCisgICAgaWYgKHNob3VsZEJlVXBkYXRlZCA9PT0gKEpTT04uc3RyaW5n
aWZ5KHJlZmVyZW5jZURhdGEpICE9PSBKU09OLnN0cmluZ2lmeShuZXdEYXRhKSkpCisgICAgICAg
IHJldHVybjsKKworICAgIGF3YWl0IGNoZWNrVmlkZW9Jc1VwZGF0ZWQodGVzdCwgc2hvdWxkQmVV
cGRhdGVkLCArK2NvdW50LCBuZXdEYXRhKTsKK30KKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0
KSA9PiB7CisgICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZp
Y2VzLmdldFVzZXJNZWRpYSh7dmlkZW86IHRydWV9KTsKKyAgICBjb25zdCBzZW5kZXJUcmFuc2Zv
cm0gPSBuZXcgU0ZyYW1lVHJhbnNmb3JtKHsgY29tcGF0aWJpbGl0eU1vZGU6ICJIMjY0IiB9KTsK
KyAgICBjb25zdCByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oeyBjb21w
YXRpYmlsaXR5TW9kZTogIkgyNjQiIH0pOworICAgIGF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0
S2V5KCJyYXciLCBuZXcgVWludDhBcnJheShbMTQzLCA3NywgNDMsIDEwLCA3MiwgMTksIDM3LCA2
NywgMjM2LCAyMTksIDI0LCA5MywgMjYsIDE2NSwgOTEsIDE3OF0pLCAiSEtERiIsIGZhbHNlLCBb
ImRlcml2ZUJpdHMiLCAiZGVyaXZlS2V5Il0pLnRoZW4oa2V5ID0+IHsKKyAgICAgICBzZW5kZXJU
cmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkpOworICAgICAgIHJlY2VpdmVyVHJhbnNmb3Jt
LnNldEVuY3J5cHRpb25LZXkoa2V5KTsKKyAgICB9KTsKKworICAgIGxldCBzZW5kZXIsIHJlY2Vp
dmVyOworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWpl
Y3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnModGVzdCwgKGZpcnN0Q29ubmVjdGlv
bikgPT4geworICAgICAgICAgICAgcGMxID0gZmlyc3RDb25uZWN0aW9uOworICAgICAgICAgICAg
c2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldFZpZGVvVHJh
Y2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKKyAgICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0gPSBz
ZW5kZXJUcmFuc2Zvcm07CisgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAg
ICAgICAgICBwYzIgPSBzZWNvbmRDb25uZWN0aW9uOworICAgICAgICAgICAgc2Vjb25kQ29ubmVj
dGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICByZWNlaXZl
ciA9IHRyYWNrRXZlbnQucmVjZWl2ZXI7CisgICAgICAgICAgICAgICAgLy8gd2UgZG8gbm90IHNl
dCB0aGUgcmVjZWl2ZXIgdHJhbnNmb3JtIGhlcmU7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSh0
cmFja0V2ZW50LnN0cmVhbXNbMF0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgfSwgeworICAg
ICAgICAgICAgb2JzZXJ2ZU9mZmVyIDogKG9mZmVyKSA9PiB7CisgICAgICAgICAgICAgICAgY29u
c3QgbGluZXMgPSBvZmZlci5zZHAuc3BsaXQoJ1xyXG4nKTsKKyAgICAgICAgICAgICAgICBjb25z
dCBoMjY0TGluZXMgPSBsaW5lcy5maWx0ZXIobGluZSA9PiBsaW5lLmluZGV4T2YoImE9Zm10cCIp
ID09PSAwICYmIGxpbmUuaW5kZXhPZigiNDJlMDFmIikgIT09IC0xKTsKKyAgICAgICAgICAgICAg
ICBjb25zdCBiYXNlbGluZU51bWJlciA9IGgyNjRMaW5lc1swXS5zdWJzdHJpbmcoNikuc3BsaXQo
JyAnKVswXTsKKyAgICAgICAgICAgICAgICBvZmZlci5zZHAgPSBsaW5lcy5maWx0ZXIobGluZSA9
PiB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAobGluZS5pbmRleE9mKCdhPWZtdHAnKSA9
PT0gLTEgJiYgbGluZS5pbmRleE9mKCdhPXJ0Y3AtZmInKSA9PT0gLTEgJiYgbGluZS5pbmRleE9m
KCdhPXJ0cG1hcCcpID09PSAtMSkgfHwgbGluZS5pbmRleE9mKGJhc2VsaW5lTnVtYmVyKSAhPT0g
LTE7CisgICAgICAgICAgICAgICAgfSkuam9pbignXHJcbicpOworICAgICAgICAgICAgfQorICAg
ICAgICB9KTsKKyAgICAgICAgdGVzdC5zdGVwX3RpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRp
bWVkIG91dCIpLCA1MDAwKTsKKyAgICB9KTsKKworICAgIHZpZGVvLnNyY09iamVjdCA9IHN0cmVh
bTsKKyAgICB2aWRlby5wbGF5KCk7CisKKyAgICAvLyBXZSBzZXQgdGhlIHJlY2VpdmVyIHRyYW5z
Zm9ybSBoZXJlIHNvIHRoYXQgdGhlIGRlY29kZXIgcHJvYmFibHkgdHJpZWQgdG8gZGVjb2RlIHNm
cmFtZSBjb250ZW50LgorICAgIHRlc3Quc3RlcF90aW1lb3V0KCgpID0+IHJlY2VpdmVyLnRyYW5z
Zm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtLCA1MCk7CisgICAgYXdhaXQgY2hlY2tWaWRlb0lzVXBk
YXRlZCh0ZXN0LCB0cnVlKTsKK30sICJ2aWRlbyBleGNoYW5nZSB3aXRoIGxhdGUgcmVjZWl2ZXIg
dHJhbnNmb3JtIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
cnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1tZXRhZGF0YS10cmFuc2Zvcm0td29ya2VyLmpz
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5j
b2RlZC10cmFuc2Zvcm0vc2NyaXB0LW1ldGFkYXRhLXRyYW5zZm9ybS13b3JrZXIuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDNiYTFmNGVlNmUwOTc2YTY4ZDYwN2RlOTgyNGQyZmQyM2RhYWNkMAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
cnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1tZXRhZGF0YS10cmFuc2Zvcm0td29ya2VyLmpz
CkBAIC0wLDAgKzEsMjQgQEAKK29ucnRjdHJhbnNmb3JtID0gKGV2ZW50KSA9PiB7CisgICAgY29u
c3QgdHJhbnNmb3JtZXIgPSBldmVudC50cmFuc2Zvcm1lcjsKKworICAgIHRyYW5zZm9ybWVyLnJl
YWRlciA9IHRyYW5zZm9ybWVyLnJlYWRhYmxlLmdldFJlYWRlcigpOworICAgIHRyYW5zZm9ybWVy
LndyaXRlciA9IHRyYW5zZm9ybWVyLndyaXRhYmxlLmdldFdyaXRlcigpOworCisgICAgbGV0IGlz
Rmlyc3RGcmFtZSA9IHRydWU7CisgICAgZnVuY3Rpb24gcHJvY2Vzcyh0cmFuc2Zvcm1lcikKKyAg
ICB7CisgICAgICAgIHRyYW5zZm9ybWVyLnJlYWRlci5yZWFkKCkudGhlbihjaHVuayA9PiB7Cisg
ICAgICAgICAgICBpZiAoY2h1bmsuZG9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIGlmIChpc0ZpcnN0RnJhbWUpIHsKKyAgICAgICAgICAgICAgICBpc0ZpcnN0RnJh
bWUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKHsgbmFtZTogdHJh
bnNmb3JtZXIub3B0aW9ucy5uYW1lLCB0aW1lc3RhbXA6IGNodW5rLnZhbHVlLnRpbWVzdGFtcCwg
bWV0YWRhdGE6IGNodW5rLnZhbHVlLmdldE1ldGFkYXRhKCkgfSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB0cmFuc2Zvcm1lci53cml0ZXIud3JpdGUoY2h1bmsudmFsdWUpOworICAgICAg
ICAgICAgcHJvY2Vzcyh0cmFuc2Zvcm1lcik7CisgICAgICAgIH0pOworICAgIH0KKyAgICBwcm9j
ZXNzKHRyYW5zZm9ybWVyKTsKK307CitzZWxmLnBvc3RNZXNzYWdlKCJyZWdpc3RlcmVkIik7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtbWV0YWRhdGEtdHJhbnNmb3JtLmh0dHBzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1tZXRhZGF0YS10cmFuc2Zvcm0uaHR0cHMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhOGY1MWIzYzgwMGM1ZDdhYzQ5M2Q3MDMzMDBhY2Q2
ODI3OGY5ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtbWV0YWRhdGEt
dHJhbnNmb3JtLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworCitQQVNTIGF1
ZGlvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtCitQQVNTIHZpZGVvIGV4Y2hhbmdlIHdpdGggdHJh
bnNmb3JtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1tZXRhZGF0YS10cmFuc2Zv
cm0uaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1tZXRhZGF0YS10cmFuc2Zvcm0uaHR0
cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lOGUyYjEyODk5NjZkMTIxNmVhMGJlZmQ2MTZiMzZiMDAzMTM3
NzkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LW1ldGFkYXRhLXRyYW5z
Zm9ybS5odHRwcy5odG1sCkBAIC0wLDAgKzEsODUgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+
CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8dmlkZW8gaWQ9InZpZGVvMSIgYXV0b3Bs
YXk+PC92aWRlbz4KKyAgICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+Cithc3luYyBmdW5jdGlvbiB3YWl0Rm9yTWVzc2FnZSh3b3JrZXIs
IGRhdGEpCit7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBh
d2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+
IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgICAgICBpZiAoZGF0YSA9PT0gcmVjZWl2ZWQpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgfQorfQorCithc3luYyBmdW5jdGlvbiBnYXRoZXJNZXRh
ZGF0YSh0ZXN0LCBhdWRpbykKK3sKKyAgICB3b3JrZXIgPSBuZXcgV29ya2VyKCdzY3JpcHQtbWV0
YWRhdGEtdHJhbnNmb3JtLXdvcmtlci5qcycpOworICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBuZXcg
UHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUo
ZXZlbnQuZGF0YSkpOworICAgIGFzc2VydF9lcXVhbHMoZGF0YSwgInJlZ2lzdGVyZWQiKTsKKwor
ICAgIGNvbnN0IGxvY2FsU3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRV
c2VyTWVkaWEoe2F1ZGlvOiBhdWRpbywgdmlkZW86ICFhdWRpb30pOworCisgICAgbGV0IHNlbmRl
ciwgcmVjZWl2ZXI7CisgICAgY29uc3Qgc2VuZGVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlw
dFRyYW5zZm9ybSh3b3JrZXIsIHtuYW1lOidzZW5kZXInfSk7CisgICAgY29uc3QgcmVjZWl2ZXJU
cmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25hbWU6J3JlY2Vp
dmVyJ30pOworCisgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewor
ICAgICAgICBjcmVhdGVDb25uZWN0aW9ucyh0ZXN0LCAoZmlyc3RDb25uZWN0aW9uKSA9PiB7Cisg
ICAgICAgICAgICBwYzEgPSBmaXJzdENvbm5lY3Rpb247CisgICAgICAgICAgICBzZW5kZXIgPSBm
aXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxTdHJlYW0uZ2V0VHJhY2tzKClbMF0sIGxvY2Fs
U3RyZWFtKTsKKyAgICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07
CisgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBwYzIgPSBz
ZWNvbmRDb25uZWN0aW9uOworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0g
KHRyYWNrRXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICByZWNlaXZlciA9IHRyYWNrRXZlbnQu
cmVjZWl2ZXI7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJhbnNmb3JtID0gcmVjZWl2ZXJU
cmFuc2Zvcm07CisgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0p
OworICAgICAgICAgICAgfTsKKyAgICAgICAgfSk7CisgICAgICAgIHRlc3Quc3RlcF90aW1lb3V0
KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7CisgICAgfSk7CisKKyAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBsZXQgc2Vu
ZGVyTWV0YWRhdGEsIHNlbmRlclRpbWVzdGFtcDsKKyAgICAgICAgd29ya2VyLm9ubWVzc2FnZSA9
IChldmVudCkgPT4geworICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSA9PT0gJ3NlbmRl
cicpIHsKKyAgICAgICAgICAgICAgICBzZW5kZXJNZXRhZGF0YSA9IGV2ZW50LmRhdGEubWV0YWRh
dGE7CisgICAgICAgICAgICAgICAgc2VuZGVyVGltZXN0YW1wID0gZXZlbnQuZGF0YS50aW1lc3Rh
bXA7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEubmFtZSA9PT0gJ3JlY2VpdmVy
JykKKyAgICAgICAgICAgICAgIHJlc29sdmUoW3NlbmRlck1ldGFkYXRhLCBzZW5kZXJUaW1lc3Rh
bXAsIGV2ZW50LmRhdGEubWV0YWRhdGEsIGV2ZW50LmRhdGEudGltZXN0YW1wXSk7CisgICAgICAg
IH07CisgICAgICAgIHRlc3Quc3RlcF90aW1lb3V0KCgpID0+IHJlamVjdCgiTWV0YWRhdGEgdGVz
dCB0aW1lZCBvdXQiKSwgNTAwMCk7CisgICAgfSk7Cit9CisKK3Byb21pc2VfdGVzdChhc3luYyAo
dGVzdCkgPT4geworICAgIGNvbnN0IFtzZW5kZXJNZXRhZGF0YSwgc2VuZGVyVGltZXN0YW1wLCBy
ZWNlaXZlck1ldGFkYXRhLCByZWNlaXZlclRpbWVzdGFtcF0gPSBhd2FpdCBnYXRoZXJNZXRhZGF0
YSh0ZXN0LCB0cnVlKTsKKworICAgIGFzc2VydF9lcXVhbHMoc2VuZGVyVGltZXN0YW1wLCByZWNl
aXZlclRpbWVzdGFtcCwgInRpbWVzdGFtcCIpOworICAgIGFzc2VydF90cnVlKCEhc2VuZGVyTWV0
YWRhdGEuc3luY2hyb25pemF0aW9uU291cmNlLCAic3NyYyIpOworICAgIGFzc2VydF9lcXVhbHMo
c2VuZGVyTWV0YWRhdGEuc3luY2hyb25pemF0aW9uU291cmNlLCByZWNlaXZlck1ldGFkYXRhLnN5
bmNocm9uaXphdGlvblNvdXJjZSwgInNzcmMiKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHNl
bmRlck1ldGFkYXRhLmNvbnRyaWJ1dGluZ1NvdXJjZXMsIHJlY2VpdmVyTWV0YWRhdGEuY29udHJp
YnV0aW5nU291cmNlcywgImNzcmMiKTsKK30sICJhdWRpbyBleGNoYW5nZSB3aXRoIHRyYW5zZm9y
bSIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCBbc2VuZGVy
TWV0YWRhdGEsIHNlbmRlclRpbWVzdGFtcCwgcmVjZWl2ZXJNZXRhZGF0YSwgcmVjZWl2ZXJUaW1l
c3RhbXBdID0gYXdhaXQgZ2F0aGVyTWV0YWRhdGEodGVzdCwgdHJ1ZSk7CisKKyAgICBhc3NlcnRf
ZXF1YWxzKHNlbmRlclRpbWVzdGFtcCwgcmVjZWl2ZXJUaW1lc3RhbXAsICJ0aW1lc3RhbXAiKTsK
KyAgICBhc3NlcnRfdHJ1ZSghIXNlbmRlck1ldGFkYXRhLnN5bmNocm9uaXphdGlvblNvdXJjZSwg
InNzcmMiKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNlbmRlck1ldGFkYXRhLnN5bmNocm9uaXphdGlv
blNvdXJjZSwgcmVjZWl2ZXJNZXRhZGF0YS5zeW5jaHJvbml6YXRpb25Tb3VyY2UsICJzc3JjIik7
CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhzZW5kZXJNZXRhZGF0YS5jb250cmlidXRpbmdTb3Vy
Y2VzLCByZWNlaXZlck1ldGFkYXRhLmNvbnRyaWJ1dGluZ1NvdXJjZXMsICJjc3JjIik7CisgICAg
YXNzZXJ0X2VxdWFscyhzZW5kZXJNZXRhZGF0YS5oZWlnaHQsIHJlY2VpdmVyTWV0YWRhdGEuaGVp
Z2h0LCAiaGVpZ2h0Iik7CisgICAgYXNzZXJ0X2VxdWFscyhzZW5kZXJNZXRhZGF0YS53aWR0aCwg
cmVjZWl2ZXJNZXRhZGF0YS53aWR0aCwgIndpZHRoIik7CisgICAgYXNzZXJ0X2VxdWFscyhzZW5k
ZXJNZXRhZGF0YS5zcGF0aWFsSW5kZXgsIHJlY2VpdmVyTWV0YWRhdGEuc3BhdGlhbEluZGV4LCAi
c3BhdGlhbEluZGV4Iik7CisgICAgYXNzZXJ0X2VxdWFscyhzZW5kZXJNZXRhZGF0YS50ZW1wb3Jh
bEluZGV4LCByZWNlaXZlck1ldGFkYXRhLnRlbXBvcmFsSW5kZXgsICJ0ZW1wb3JhbEluZGV4Iik7
Cit9LCAidmlkZW8gZXhjaGFuZ2Ugd2l0aCB0cmFuc2Zvcm0iKTsKKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LXRy
YW5zZm9ybS13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtdHJhbnNmb3JtLXdvcmtlci5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZWE5OWNkMmJmNzMyY2YwNTgyYTJhZWYxMTk5YTE0OTczODI2OWVjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LXRyYW5zZm9ybS13b3JrZXIuanMK
QEAgLTAsMCArMSwyNSBAQAorb25ydGN0cmFuc2Zvcm0gPSAoZXZlbnQpID0+IHsKKyAgICBjb25z
dCB0cmFuc2Zvcm1lciA9IGV2ZW50LnRyYW5zZm9ybWVyOworICAgIHRyYW5zZm9ybWVyLm9wdGlv
bnMucG9ydC5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHRyYW5zZm9ybWVyLm9wdGlvbnMucG9ydC5w
b3N0TWVzc2FnZShldmVudC5kYXRhKTsKKworICAgIHNlbGYucG9zdE1lc3NhZ2UoInN0YXJ0ZWQi
KTsKKyAgICB0cmFuc2Zvcm1lci5yZWFkZXIgPSB0cmFuc2Zvcm1lci5yZWFkYWJsZS5nZXRSZWFk
ZXIoKTsKKyAgICB0cmFuc2Zvcm1lci53cml0ZXIgPSB0cmFuc2Zvcm1lci53cml0YWJsZS5nZXRX
cml0ZXIoKTsKKworICAgIGZ1bmN0aW9uIHByb2Nlc3ModHJhbnNmb3JtZXIpCisgICAgeworICAg
ICAgICB0cmFuc2Zvcm1lci5yZWFkZXIucmVhZCgpLnRoZW4oY2h1bmsgPT4geworICAgICAgICAg
ICAgaWYgKGNodW5rLmRvbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
aWYgKGNodW5rLnZhbHVlIGluc3RhbmNlb2YgUlRDRW5jb2RlZFZpZGVvRnJhbWUpCisgICAgICAg
ICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgidmlkZW8gY2h1bmsiKTsKKyAgICAgICAgICAgIGVs
c2UgaWYgKGNodW5rLnZhbHVlIGluc3RhbmNlb2YgUlRDRW5jb2RlZEF1ZGlvRnJhbWUpCisgICAg
ICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgiYXVkaW8gY2h1bmsiKTsKKyAgICAgICAgICAg
IHRyYW5zZm9ybWVyLndyaXRlci53cml0ZShjaHVuay52YWx1ZSk7CisgICAgICAgICAgICBwcm9j
ZXNzKHRyYW5zZm9ybWVyKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgcHJvY2Vzcyh0cmFu
c2Zvcm1lcik7Cit9Oworc2VsZi5wb3N0TWVzc2FnZSgicmVnaXN0ZXJlZCIpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5j
b2RlZC10cmFuc2Zvcm0vc2NyaXB0LXRyYW5zZm9ybS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRy
YW5zZm9ybS9zY3JpcHQtdHJhbnNmb3JtLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
ZjlkNTZlZTg1ZTYwZTQ3MThkZjZkMDFjMzEzMWMxMTQ1NDRlNWU3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5j
b2RlZC10cmFuc2Zvcm0vc2NyaXB0LXRyYW5zZm9ybS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw3IEBACisKKworUEFTUyB0cmFuc2Zvcm0gbWVzc2FnaW5nCitQQVNTIENhbm5vdCByZXVz
ZSBhdHRhY2hlZCB0cmFuc2Zvcm1zCitQQVNTIGF1ZGlvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3Jt
CitQQVNTIHZpZGVvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJh
bnNmb3JtL3NjcmlwdC10cmFuc2Zvcm0uaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC10
cmFuc2Zvcm0uaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWVkZDhhZjk0MDA5MWVlZGZkZTA3NDEx
MWRmNGVhYzMzNDNjMmFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LXRy
YW5zZm9ybS5odHRwcy5odG1sCkBAIC0wLDAgKzEsMTQ4IEBACis8IWRvY3R5cGUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHZpZGVvIGlkPSJ2aWRlbzEiIGF1
dG9wbGF5PjwvdmlkZW8+CisgICAgICAgIDx2aWRlbyBpZD0idmlkZW8yIiBhdXRvcGxheT48L3Zp
ZGVvPgorICAgICAgICA8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpzIj48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdD4KK2FzeW5jIGZ1bmN0aW9uIHdhaXRGb3JNZXNzYWdlKHdvcmtlciwgZGF0YSkK
K3sKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBjb25zdCByZWNlaXZlZCA9IGF3YWl0IG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2
ZShldmVudC5kYXRhKSk7CisgICAgICAgIGlmIChkYXRhID09PSByZWNlaXZlZCkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICB9Cit9CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewor
ICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3NjcmlwdC10cmFuc2Zvcm0td29ya2VyLmpzJyk7Cisg
ICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVz
c2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisgICAgYXNzZXJ0X2VxdWFs
cyhkYXRhLCAicmVnaXN0ZXJlZCIpOworCisgICAgY29uc3QgY2hhbm5lbCA9IG5ldyBNZXNzYWdl
Q2hhbm5lbDsKKyAgICBjb25zdCB0cmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
KHdvcmtlciwge25hbWU6J01vY2tSVENSdHBUcmFuc2Zvcm0nLCBwb3J0OiBjaGFubmVsLnBvcnQy
fSwgW2NoYW5uZWwucG9ydDJdKTsKKyAgICB0cmFuc2Zvcm0ucG9ydCA9IGNoYW5uZWwucG9ydDE7
CisgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gdHJhbnNmb3JtLnBv
cnQub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICB0cmFu
c2Zvcm0ucG9ydC5wb3N0TWVzc2FnZSgidGVzdCIpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
cHJvbWlzZSwgInRlc3QiKTsKK30sICJ0cmFuc2Zvcm0gbWVzc2FnaW5nIik7CisKK3Byb21pc2Vf
dGVzdChhc3luYyAodGVzdCkgPT4geworICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3NjcmlwdC10
cmFuc2Zvcm0td29ya2VyLmpzJyk7CisgICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNl
KHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5k
YXRhKSk7CisgICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOworCisgICAgY29u
c3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKworICAgIGNvbnN0IHNlbmRlckNoYW5u
ZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CisgICAgY29uc3QgcmVjZWl2ZXJDaGFubmVsID0gbmV3
IE1lc3NhZ2VDaGFubmVsOworICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBT
Y3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZTonTW9ja1JUQ1J0cFRyYW5zZm9ybScsIHBvcnQ6
IHNlbmRlckNoYW5uZWwucG9ydDJ9LCBbc2VuZGVyQ2hhbm5lbC5wb3J0Ml0pOworICAgIGNvbnN0
IHJlY2VpdmVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsIHtu
YW1lOidNb2NrUlRDUnRwVHJhbnNmb3JtJywgcG9ydDogcmVjZWl2ZXJDaGFubmVsLnBvcnQyfSwg
W3JlY2VpdmVyQ2hhbm5lbC5wb3J0Ml0pOworICAgIHNlbmRlclRyYW5zZm9ybS5wb3J0ID0gc2Vu
ZGVyQ2hhbm5lbC5wb3J0MTsKKyAgICByZWNlaXZlclRyYW5zZm9ybS5wb3J0ID0gcmVjZWl2ZXJD
aGFubmVsLnBvcnQxOworCisgICAgY29uc3Qgc2VuZGVyMSA9IHBjLmFkZFRyYW5zY2VpdmVyKCdh
dWRpbycpLnNlbmRlcjsKKyAgICBjb25zdCBzZW5kZXIyID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ3Zp
ZGVvJykuc2VuZGVyOworICAgIGNvbnN0IHJlY2VpdmVyMSA9IHBjLmdldFJlY2VpdmVycygpWzBd
OworICAgIGNvbnN0IHJlY2VpdmVyMiA9IHBjLmdldFJlY2VpdmVycygpWzFdOworCisgICAgc2Vu
ZGVyMS50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07CisgICAgcmVjZWl2ZXIxLnRyYW5zZm9y
bSA9IHJlY2VpdmVyVHJhbnNmb3JtOworICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3Rh
dGVFcnJvciIsICgpID0+IHNlbmRlcjIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtKTsKKyAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiByZWNlaXZlcjIu
dHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm0pOworCisgICAgc2VuZGVyMS50cmFuc2Zvcm0g
PSBzZW5kZXJUcmFuc2Zvcm07CisgICAgcmVjZWl2ZXIxLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJh
bnNmb3JtOworCisgICAgc2VuZGVyMS50cmFuc2Zvcm0gPSBudWxsOworICAgIHJlY2VpdmVyMS50
cmFuc2Zvcm0gPSBudWxsOworfSwgIkNhbm5vdCByZXVzZSBhdHRhY2hlZCB0cmFuc2Zvcm1zIik7
CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIHdvcmtlciA9IG5ldyBXb3Jr
ZXIoJ3NjcmlwdC10cmFuc2Zvcm0td29ya2VyLmpzJyk7CisgICAgY29uc3QgZGF0YSA9IGF3YWl0
IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVz
b2x2ZShldmVudC5kYXRhKSk7CisgICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJlZCIp
OworICAgIGNvbnN0IGxvY2FsU3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5n
ZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSk7CisKKyAgICBjb25zdCBzZW5kZXJDaGFubmVsID0g
bmV3IE1lc3NhZ2VDaGFubmVsOworICAgIGNvbnN0IHJlY2VpdmVyQ2hhbm5lbCA9IG5ldyBNZXNz
YWdlQ2hhbm5lbDsKKyAgICBsZXQgc2VuZGVyLCByZWNlaXZlcjsKKyAgICBjb25zdCBzZW5kZXJU
cmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25hbWU6J01vY2tS
VENSdHBUcmFuc2Zvcm0nLCBwb3J0OiBzZW5kZXJDaGFubmVsLnBvcnQyfSwgW3NlbmRlckNoYW5u
ZWwucG9ydDJdKTsKKyAgICBjb25zdCByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3Jp
cHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZTonTW9ja1JUQ1J0cFRyYW5zZm9ybScsIHBvcnQ6IHJl
Y2VpdmVyQ2hhbm5lbC5wb3J0Mn0sIFtyZWNlaXZlckNoYW5uZWwucG9ydDJdKTsKKyAgICBzZW5k
ZXJUcmFuc2Zvcm0ucG9ydCA9IHNlbmRlckNoYW5uZWwucG9ydDE7CisgICAgcmVjZWl2ZXJUcmFu
c2Zvcm0ucG9ydCA9IHJlY2VpdmVyQ2hhbm5lbC5wb3J0MTsKKworICAgIGNvbnN0IHN0YXJ0ZWRQ
cm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50
KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5l
dyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29ubmVjdGlv
bnModGVzdCwgKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgcGMxID0gZmlyc3RD
b25uZWN0aW9uOworICAgICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNr
KGxvY2FsU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKKyAgICAgICAg
ICAgIHNlbmRlci50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07CisgICAgICAgIH0sIChzZWNv
bmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBwYzIgPSBzZWNvbmRDb25uZWN0aW9uOwor
ICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsK
KyAgICAgICAgICAgICAgICByZWNlaXZlciA9IHRyYWNrRXZlbnQucmVjZWl2ZXI7CisgICAgICAg
ICAgICAgICAgcmVjZWl2ZXIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07CisgICAgICAg
ICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOworICAgICAgICAgICAgfTsK
KyAgICAgICAgfSk7CisgICAgICAgIHRlc3Quc3RlcF90aW1lb3V0KCgpID0+IHJlamVjdCgiVGVz
dCB0aW1lZCBvdXQiKSwgNTAwMCk7CisgICAgfSk7CisKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IHN0YXJ0ZWRQcm9taXNlLCAic3RhcnRlZCIpOworCisgICAgYXdhaXQgd2FpdEZvck1lc3NhZ2Uo
d29ya2VyLCAiYXVkaW8gY2h1bmsiKTsKKworICAgIHZpZGVvMS5zcmNPYmplY3QgPSBzdHJlYW07
CisgICAgYXdhaXQgdmlkZW8xLnBsYXkoKTsKK30sICJhdWRpbyBleGNoYW5nZSB3aXRoIHRyYW5z
Zm9ybSIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICB3b3JrZXIgPSBu
ZXcgV29ya2VyKCdzY3JpcHQtdHJhbnNmb3JtLXdvcmtlci5qcycpOworICAgIGNvbnN0IGRhdGEg
PSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQp
ID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIGFzc2VydF9lcXVhbHMoZGF0YSwgInJlZ2lz
dGVyZWQiKTsKKworICAgIGNvbnN0IGxvY2FsU3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlh
RGV2aWNlcy5nZXRVc2VyTWVkaWEoe3ZpZGVvOiB0cnVlfSk7CisKKyAgICBjb25zdCBzZW5kZXJD
aGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOworICAgIGNvbnN0IHJlY2VpdmVyQ2hhbm5lbCA9
IG5ldyBNZXNzYWdlQ2hhbm5lbDsKKyAgICBsZXQgc2VuZGVyLCByZWNlaXZlcjsKKyAgICBjb25z
dCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25h
bWU6J01vY2tSVENSdHBUcmFuc2Zvcm0nLCBwb3J0OiBzZW5kZXJDaGFubmVsLnBvcnQyfSwgW3Nl
bmRlckNoYW5uZWwucG9ydDJdKTsKKyAgICBjb25zdCByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBS
VENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZTonTW9ja1JUQ1J0cFRyYW5zZm9ybScs
IHBvcnQ6IHJlY2VpdmVyQ2hhbm5lbC5wb3J0Mn0sIFtyZWNlaXZlckNoYW5uZWwucG9ydDJdKTsK
KyAgICBzZW5kZXJUcmFuc2Zvcm0ucG9ydCA9IHNlbmRlckNoYW5uZWwucG9ydDE7CisgICAgcmVj
ZWl2ZXJUcmFuc2Zvcm0ucG9ydCA9IHJlY2VpdmVyQ2hhbm5lbC5wb3J0MTsKKworICAgIGNvbnN0
IHN0YXJ0ZWRQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdl
ID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKworICAgIGNvbnN0IHN0cmVhbSA9
IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgY3JlYXRl
Q29ubmVjdGlvbnModGVzdCwgKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgcGMx
ID0gZmlyc3RDb25uZWN0aW9uOworICAgICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9u
LmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsK
KyAgICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07CisgICAgICAg
IH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBwYzIgPSBzZWNvbmRDb25u
ZWN0aW9uOworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZl
bnQpID0+IHsKKyAgICAgICAgICAgICAgICByZWNlaXZlciA9IHRyYWNrRXZlbnQucmVjZWl2ZXI7
CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07
CisgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOworICAgICAg
ICAgICAgfTsKKyAgICAgICAgfSk7CisgICAgICAgIHRlc3Quc3RlcF90aW1lb3V0KCgpID0+IHJl
amVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7CisgICAgfSk7CisKKyAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IHN0YXJ0ZWRQcm9taXNlLCAic3RhcnRlZCIpOworCisgICAgYXdhaXQgd2FpdEZv
ck1lc3NhZ2Uod29ya2VyLCAidmlkZW8gY2h1bmsiKTsKKworICAgIHZpZGVvMS5zcmNPYmplY3Qg
PSBzdHJlYW07CisgICAgYXdhaXQgdmlkZW8xLnBsYXkoKTsKK30sICJ2aWRlbyBleGNoYW5nZSB3
aXRoIHRyYW5zZm9ybSIpOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtd3JpdGUtdHdpY2UtdHJhbnNmb3JtLXdv
cmtlci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
cnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC13cml0ZS10d2ljZS10cmFuc2Zvcm0td29ya2Vy
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVkNDI4YzgxYjNhYTU0MzQzMTllMTBmYmVjNmEwMDc1YTdkNDBiOTgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtd3JpdGUtdHdpY2UtdHJhbnNm
b3JtLXdvcmtlci5qcwpAQCAtMCwwICsxLDIyIEBACitvbnJ0Y3RyYW5zZm9ybSA9IChldmVudCkg
PT4geworICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gZXZlbnQudHJhbnNmb3JtZXI7CisKKyAgICBz
ZWxmLnBvc3RNZXNzYWdlKCJzdGFydGVkIik7CisKKyAgICB0cmFuc2Zvcm1lci5yZWFkZXIgPSB0
cmFuc2Zvcm1lci5yZWFkYWJsZS5nZXRSZWFkZXIoKTsKKyAgICB0cmFuc2Zvcm1lci53cml0ZXIg
PSB0cmFuc2Zvcm1lci53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgICBmdW5jdGlvbiBwcm9jZXNz
KHRyYW5zZm9ybWVyKQorICAgIHsKKyAgICAgICAgdHJhbnNmb3JtZXIucmVhZGVyLnJlYWQoKS50
aGVuKGNodW5rID0+IHsKKyAgICAgICAgICAgIGlmIChjaHVuay5kb25lKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgdHJhbnNmb3JtZXIud3JpdGVyLndyaXRlKGNodW5r
LnZhbHVlKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybWVyLndyaXRlci53cml0ZShjaHVuay52YWx1
ZSk7CisgICAgICAgICAgICBwcm9jZXNzKHRyYW5zZm9ybWVyKTsKKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgcHJvY2Vzcyh0cmFuc2Zvcm1lcik7Cit9Oworc2VsZi5wb3N0TWVzc2FnZSgicmVn
aXN0ZXJlZCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LXdyaXRlLXR3aWNlLXRy
YW5zZm9ybS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtd3JpdGUtdHdp
Y2UtdHJhbnNmb3JtLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzY1ZmYwODRhNzJk
ZWNkNzg5YzE1NjdkNzQ3ZDk5YmY5ODY3ODdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zv
cm0vc2NyaXB0LXdyaXRlLXR3aWNlLXRyYW5zZm9ybS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0IEBACisKKworUEFTUyB2aWRlbyBleGNoYW5nZSB3aXRoIHdyaXRlIHR3aWNlIHRyYW5z
Zm9ybQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtd3JpdGUtdHdpY2UtdHJhbnNm
b3JtLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtd3JpdGUtdHdpY2UtdHJhbnNmb3Jt
Lmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzA2MGFhYzk5NjI4MThkZmVhNWFiZmM0YTg4MGJmYjBh
NGZkZjE0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC13cml0ZS10d2lj
ZS10cmFuc2Zvcm0uaHR0cHMuaHRtbApAQCAtMCwwICsxLDU4IEBACis8IWRvY3R5cGUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHZpZGVvIGlkPSJ2aWRlbzEi
IGF1dG9wbGF5PjwvdmlkZW8+CisgICAgICAgIDx2aWRlbyBpZD0idmlkZW8yIiBhdXRvcGxheT48
L3ZpZGVvPgorICAgICAgICA8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KK2FzeW5jIGZ1bmN0aW9uIHdhaXRGb3JNZXNzYWdlKHdvcmtlciwgZGF0
YSkKK3sKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBjb25zdCByZWNlaXZlZCA9IGF3YWl0
IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVz
b2x2ZShldmVudC5kYXRhKSk7CisgICAgICAgIGlmIChkYXRhID09PSByZWNlaXZlZCkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4g
eworICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3NjcmlwdC13cml0ZS10d2ljZS10cmFuc2Zvcm0t
d29ya2VyLmpzJyk7CisgICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUg
PT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOworCisgICAgY29uc3QgbG9jYWxT
dHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7dmlkZW86
IHRydWV9KTsKKworICAgIGxldCBzZW5kZXIsIHJlY2VpdmVyOworICAgIGNvbnN0IHNlbmRlclRy
YW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZTonTW9ja1JU
Q1J0cFRyYW5zZm9ybScsIHNpZGU6J3NlbmRlcicsIHJvbGU6J2VuY3J5cHQnfSk7CisgICAgY29u
c3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwg
e25hbWU6J01vY2tSVENSdHBUcmFuc2Zvcm0nLCBzaWRlOidyZWNlaXZlcicsIHJvbGU6J2RlY3J5
cHQnfSk7CisKKyAgICBjb25zdCBzdGFydGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUg
PT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisK
KyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9
PiB7CisgICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKHRlc3QsIChmaXJzdENvbm5lY3Rpb24pID0+
IHsKKyAgICAgICAgICAgIHBjMSA9IGZpcnN0Q29ubmVjdGlvbjsKKyAgICAgICAgICAgIHNlbmRl
ciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRWaWRlb1RyYWNrcygp
WzBdLCBsb2NhbFN0cmVhbSk7CisgICAgICAgICAgICBzZW5kZXIudHJhbnNmb3JtID0gc2VuZGVy
VHJhbnNmb3JtOworICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4geworICAgICAgICAg
ICAgcGMyID0gc2Vjb25kQ29ubmVjdGlvbjsKKyAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24u
b250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0
cmFja0V2ZW50LnJlY2VpdmVyOworICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9
IHJlY2VpdmVyVHJhbnNmb3JtOworICAgICAgICAgICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5z
dHJlYW1zWzBdKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0pOworICAgICAgICB0ZXN0LnN0
ZXBfdGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDApOworICAgIH0p
OworCisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBzdGFydGVkUHJvbWlzZSwgInN0YXJ0ZWQiKTsK
KworICAgIHZpZGVvMS5zcmNPYmplY3QgPSBzdHJlYW07CisgICAgYXdhaXQgdmlkZW8xLnBsYXko
KTsKK30sICJ2aWRlbyBleGNoYW5nZSB3aXRoIHdyaXRlIHR3aWNlIHRyYW5zZm9ybSIpOworICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5z
Zm9ybS9zZnJhbWUta2V5cy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUt
a2V5cy5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTViMzBhZWY4ZTE0ZjcxZjVhZmU4
NGQ4MDQ0NWNkYTkzYzU3Njc1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFt
ZS1rZXlzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworCitQQVNTIFBhc3Np
bmcgdmFyaW91cyBrZXkgSURzCitQQVNTIEF1ZGlvIGV4Y2hhbmdlIHdpdGggU0ZyYW1lIHNldHVw
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS1rZXlzLmh0dHBzLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRy
YW5zZm9ybS9zZnJhbWUta2V5cy5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjMGFhYjhkOTEyYWM2
NWExNTljZDBhNDRjNjJmOTcyNTQ1YmJjOTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9y
bS9zZnJhbWUta2V5cy5odHRwcy5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzwhZG9jdHlwZSBodG1s
PgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8dmlkZW8gaWQ9ImF1ZGlv
IiBhdXRvcGxheSBwbGF5c0lubGluZT48L3ZpZGVvPgorICAgICAgICA8c2NyaXB0IHNyYyA9InJv
dXRpbmVzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KK2xldCBzZW5kZXIsIHJlY2Vp
dmVyOworbGV0IGtleTEsIGtleTIsIGtleTMsIGtleTQ7CisKK3Byb21pc2VfdGVzdChhc3luYyAo
dGVzdCkgPT4geworICAgIGNvbnN0IGtleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5
KCJyYXciLCBuZXcgVWludDhBcnJheShbMTQzLCA3NywgNDMsIDEwLCA3MiwgMTksIDM3LCA2Nywg
MjM2LCAyMTksIDI0LCA5MywgMjYsIDE2NSwgOTEsIDE3OF0pLCAiSEtERiIsIGZhbHNlLCBbImRl
cml2ZUJpdHMiLCAiZGVyaXZlS2V5Il0pOworICAgIGNvbnN0IHRyYW5zZm9ybSA9IG5ldyBTRnJh
bWVUcmFuc2Zvcm07CisKKyAgICBhd2FpdCB0cmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkp
OworICAgIGF3YWl0IHRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleSwgMSk7CisKKyAgICBh
d2FpdCB0cmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXksIEJpZ0ludCgnMTg0NDY3NDQwNzM3
MDk1NTE2MTMnKSk7CisgICAgYXdhaXQgdHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5LCBC
aWdJbnQoJzE4NDQ2NzQ0MDczNzA5NTUxNjE0JykpOworICAgIGF3YWl0IHRyYW5zZm9ybS5zZXRF
bmNyeXB0aW9uS2V5KGtleSwgQmlnSW50KCcxODQ0Njc0NDA3MzcwOTU1MTYxNScpKTsKKyAgICBh
d2FpdCB0cmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXksIEJpZ0ludCgnMTg0NDY3NDQwNzM3
MDk1NTE2MTYnKSkudGhlbihhc3NlcnRfdW5yZWFjaGVkLCAoZSkgPT4geworICAgICAgICBhc3Nl
cnRfdHJ1ZShlIGluc3RhbmNlb2YgUmFuZ2VFcnJvcik7CisgICAgICAgIGFzc2VydF9lcXVhbHMo
ZS5tZXNzYWdlLCAiTm90IGEgNjQgYml0cyBpbnRlZ2VyIik7CisgICAgfSk7Cit9LCAiUGFzc2lu
ZyB2YXJpb3VzIGtleSBJRHMiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7Cisg
ICAga2V5MSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLCBuZXcgVWludDhB
cnJheShbMTQzLCA3NywgNDMsIDEwLCA3MiwgMTksIDM3LCA2NywgMjM2LCAyMTksIDI0LCA5Mywg
MjYsIDE2NSwgOTEsIDE3OF0pLCAiSEtERiIsIGZhbHNlLCBbImRlcml2ZUJpdHMiLCAiZGVyaXZl
S2V5Il0pOworICAgIGtleTIgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3Iiwg
bmV3IFVpbnQ4QXJyYXkoWzE0NCwgNzcsIDQzLCAxMCwgNzIsIDE5LCAzNywgNjcsIDIzNiwgMjE5
LCAyNCwgOTMsIDI2LCAxNjUsIDkxLCAxNzhdKSwgIkhLREYiLCBmYWxzZSwgWyJkZXJpdmVCaXRz
IiwgImRlcml2ZUtleSJdKTsKKyAgICBrZXkzID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRL
ZXkoInJhdyIsIG5ldyBVaW50OEFycmF5KFsxNDUsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3
LCAyMzYsIDIxOSwgMjQsIDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsi
ZGVyaXZlQml0cyIsICJkZXJpdmVLZXkiXSk7CisgICAga2V5NCA9IGF3YWl0IGNyeXB0by5zdWJ0
bGUuaW1wb3J0S2V5KCJyYXciLCBuZXcgVWludDhBcnJheShbMTQ2LCA3NywgNDMsIDEwLCA3Miwg
MTksIDM3LCA2NywgMjM2LCAyMTksIDI0LCA5MywgMjYsIDE2NSwgOTEsIDE3OF0pLCAiSEtERiIs
IGZhbHNlLCBbImRlcml2ZUJpdHMiLCAiZGVyaXZlS2V5Il0pOworCisgICAgY29uc3QgbG9jYWxT
dHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86
IHRydWV9KTsKKyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwg
cmVqZWN0KSA9PiB7CisgICAgICAgIGNvbnN0IGNvbm5lY3Rpb25zID0gY3JlYXRlQ29ubmVjdGlv
bnModGVzdCwgKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgc2VuZGVyID0gZmly
c3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0sIGxv
Y2FsU3RyZWFtKTsKKyAgICAgICAgICAgIGxldCB0cmFuc2Zvcm0gPSBuZXcgU0ZyYW1lVHJhbnNm
b3JtOworICAgICAgICAgICAgdHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5MSk7CisgICAg
ICAgICAgICBzZW5kZXIudHJhbnNmb3JtID0gdHJhbnNmb3JtOworICAgICAgICB9LCAoc2Vjb25k
Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0g
KHRyYWNrRXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgdHJhbnNmb3JtID0gbmV3IFNG
cmFtZVRyYW5zZm9ybTsKKyAgICAgICAgICAgICAgICB0cmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktl
eShrZXkxKTsKKyAgICAgICAgICAgICAgICB0cmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXky
KTsKKyAgICAgICAgICAgICAgICB0cmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkzLCAxMDAw
KTsKKyAgICAgICAgICAgICAgICB0cmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXk0LCBCaWdJ
bnQoJzE4NDQ2NzQ0MDczNzA5NTUxNjE1JykpOworICAgICAgICAgICAgICAgIHJlY2VpdmVyID0g
dHJhY2tFdmVudC5yZWNlaXZlcjsKKyAgICAgICAgICAgICAgICByZWNlaXZlci50cmFuc2Zvcm0g
PSB0cmFuc2Zvcm07CisgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNb
MF0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgdGVzdC5zdGVwX3Rp
bWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKKyAgICB9KTsKKwor
ICAgIGF1ZGlvLnNyY09iamVjdCA9IHN0cmVhbTsKKyAgICBhd2FpdCBhdWRpby5wbGF5KCk7Cit9
LCAiQXVkaW8gZXhjaGFuZ2Ugd2l0aCBTRnJhbWUgc2V0dXAiKTsKKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRy
YW5zZm9ybS1idWZmZXItc291cmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10
cmFuc2Zvcm0tYnVmZmVyLXNvdXJjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWIxZDFmZDU1
MGY0NjcxMjkzMzM3ZjdhMDkyNjAzNTE0ZGZiZmJhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJh
bnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0tYnVmZmVyLXNvdXJjZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzIEBACisKK1BBU1MgVWludDhBcnJheSBhcyBpbnB1dCB0byBTRnJhbWVUcmFuc2Zvcm0K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1idWZmZXItc291cmNl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0
Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLWJ1ZmZlci1zb3VyY2UuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45OWI0NWYyMmM5N2U3N2EzZjViZWM3YjhjMzIxZjM4M2Q4NjdhMWE3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1idWZmZXItc291cmNl
Lmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgICAgICA8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+
CisgICAgPGJvZHk+CisgICAgICAgIDxzY3JpcHQ+CisKK2FzeW5jIGZ1bmN0aW9uIGdldEVuY3J5
cHRlZERhdGEodHJhbnNmb3JtKQoreworICAgIGNvbnN0IGNodW5rID0gYXdhaXQgdHJhbnNmb3Jt
LnJlYWRhYmxlLmdldFJlYWRlcigpLnJlYWQoKTsKKyAgICBjb25zdCB2YWx1ZSA9IG5ldyBVaW50
OEFycmF5KGNodW5rLnZhbHVlKTsKKyAgICByZXR1cm4gWy4uLnZhbHVlXTsKK30KKworcHJvbWlz
ZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3Qga2V5ID0gYXdhaXQgY3J5cHRvLnN1
YnRsZS5pbXBvcnRLZXkoInJhdyIsIG5ldyBVaW50OEFycmF5KFsxNDMsIDc3LCA0MywgMTAsIDcy
LCAxOSwgMzcsIDY3LCAyMzYsIDIxOSwgMjQsIDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RG
IiwgZmFsc2UsIFsiZGVyaXZlQml0cyIsICJkZXJpdmVLZXkiXSk7CisgICAgY29uc3QgdHJhbnNm
b3JtMSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm07CisgICAgY29uc3QgdHJhbnNmb3JtMiA9IG5ldyBT
RnJhbWVUcmFuc2Zvcm07CisgICAgY29uc3QgdHJhbnNmb3JtMyA9IG5ldyBTRnJhbWVUcmFuc2Zv
cm07CisKKyAgICBhd2FpdCB0cmFuc2Zvcm0xLnNldEVuY3J5cHRpb25LZXkoa2V5KTsKKyAgICBh
d2FpdCB0cmFuc2Zvcm0yLnNldEVuY3J5cHRpb25LZXkoa2V5KTsKKyAgICBhd2FpdCB0cmFuc2Zv
cm0zLnNldEVuY3J5cHRpb25LZXkoa2V5KTsKKworICAgIGNvbnN0IGJ1ZmZlcjEgPSBuZXcgQXJy
YXlCdWZmZXIoMTApOworICAgIGNvbnN0IGJ1ZmZlcjIgPSBuZXcgQXJyYXlCdWZmZXIoMTEpOwor
ICAgIGNvbnN0IHZpZXcxID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyMSk7CisgICAgY29uc3Qgdmll
dzIgPSBuZXcgVWludDhBcnJheShidWZmZXIyLCAxKTsKKyAgICBmb3IgKGxldCBpID0gMCA7IGkg
PCBidWZmZXIxLmJ5dGVMZW5ndGg7ICsraSkgeworICAgICAgICB2aWV3MVtpXSA9IGk7CisgICAg
ICAgIHZpZXcyW2ldID0gaTsKKyAgICB9CisKKyAgICB0cmFuc2Zvcm0xLndyaXRhYmxlLmdldFdy
aXRlcigpLndyaXRlKGJ1ZmZlcjEpOworICAgIHRyYW5zZm9ybTIud3JpdGFibGUuZ2V0V3JpdGVy
KCkud3JpdGUodmlldzEpOworICAgIHRyYW5zZm9ybTMud3JpdGFibGUuZ2V0V3JpdGVyKCkud3Jp
dGUodmlldzIpOworCisgICAgY29uc3QgcmVzdWx0MSA9IGF3YWl0IGdldEVuY3J5cHRlZERhdGEo
dHJhbnNmb3JtMSk7CisgICAgY29uc3QgcmVzdWx0MiA9IGF3YWl0IGdldEVuY3J5cHRlZERhdGEo
dHJhbnNmb3JtMik7CisgICAgY29uc3QgcmVzdWx0MyA9IGF3YWl0IGdldEVuY3J5cHRlZERhdGEo
dHJhbnNmb3JtMyk7CisKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHJlc3VsdDEsIHJlc3VsdDIs
ICJyZXN1bHQyIik7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhyZXN1bHQxLCByZXN1bHQzLCAi
cmVzdWx0MyIpOworfSwgIlVpbnQ4QXJyYXkgYXMgaW5wdXQgdG8gU0ZyYW1lVHJhbnNmb3JtIik7
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQt
dHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2Zy
YW1lLXRyYW5zZm9ybS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjVhZGI2OTYxMDQ3OGYxNDYw
OTZhYjRiZTYyZmFhNTY2NWM5ZWNhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3Nm
cmFtZS10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorCitQQVNTIENhbm5v
dCByZXVzZSBhdHRhY2hlZCB0cmFuc2Zvcm1zCitQQVNTIFNGcmFtZVRyYW5zZm9ybSBleHBvc2Vz
IHJlYWRhYmxlIGFuZCB3cml0YWJsZQorUEFTUyByZWFkYWJsZS93cml0YWJsZSBhcmUgbG9ja2Vk
IHdoZW4gYXR0YWNoZWQgYW5kIGFmdGVyIGJlaW5nIGF0dGFjaGVkCitQQVNTIFNGcmFtZSB3aXRo
IGFycmF5IGJ1ZmZlciAtIGF1dGhlbnRpY2F0aW9uIHNpemUgMTAKK1BBU1MgU0ZyYW1lIGRlY3J5
cHRpb24gd2l0aCBhcnJheSBidWZmZXIgdGhhdCBpcyB0b28gc21hbGwKK1BBU1MgU0ZyYW1lIHRy
YW5zZm9ybSBnZXRzIGVycm9yZWQgaWYgdHJ5aW5nIHRvIHByb2Nlc3MgdW5leHBlY3RlZCB2YWx1
ZSB0eXBlcworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLWluLXdv
cmtlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLWlu
LXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI1ODVjOWQ1N2NlZWZlY2I3
N2IxNzQwY2ZiMTNkYWZkZDM5MzBiYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3Nm
cmFtZS10cmFuc2Zvcm0taW4td29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQg
QEAKKworCitQQVNTIHZpZGVvIGV4Y2hhbmdlIHdpdGggU0ZyYW1lIHRyYW5zZm9ybSBpbiB3b3Jr
ZXIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1pbi13b3JrZXIu
aHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0taW4td29ya2VyLmh0dHBz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDcxYWZmMjE5YTVjNjFiODIxZTJiMDYzMjZmNjNlNDI1NDcyODZh
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0taW4td29y
a2VyLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw1NyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDx2aWRlbyBpZD0idmlkZW8xIiBjb250cm9s
cyBhdXRvcGxheT48L3ZpZGVvPgorICAgICAgICA8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpzIj48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KK2FzeW5jIGZ1bmN0aW9uIHdhaXRGb3JNZXNzYWdl
KHdvcmtlciwgZGF0YSkKK3sKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBjb25zdCByZWNl
aXZlZCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChl
dmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisgICAgICAgIGlmIChkYXRhID09PSByZWNl
aXZlZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3Byb21pc2VfdGVzdChhc3lu
YyAodGVzdCkgPT4geworICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3NmcmFtZS10cmFuc2Zvcm0t
d29ya2VyLmpzJyk7CisgICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUg
PT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOworICAgIGNvbnN0IGxvY2FsU3Ry
ZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyB2aWRlbzog
dHJ1ZSB9KTsKKworICAgIGxldCBzZW5kZXIsIHJlY2VpdmVyOworICAgIGNvbnN0IHNlbmRlclRy
YW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oeyBjb21wYXRpYmlsaXR5TW9kZTogIkgyNjQi
IH0pOworICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybSh3b3JrZXIsICJTRnJhbWVSVENSdHBUcmFuc2Zvcm0iKTsKKworICAgIGNvbnN0IGtleSA9
IGF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLCBuZXcgVWludDhBcnJheShbMTQz
LCA3NywgNDMsIDEwLCA3MiwgMTksIDM3LCA2NywgMjM2LCAyMTksIDI0LCA5MywgMjYsIDE2NSwg
OTEsIDE3OF0pLCAiSEtERiIsIGZhbHNlLCBbImRlcml2ZUJpdHMiLCAiZGVyaXZlS2V5Il0pOwor
ICAgIHNlbmRlclRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleSk7CisKKyAgICBjb25zdCBz
dGFydGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9
IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisKKyAgICBjb25zdCBzdHJlYW0gPSBh
d2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGNyZWF0ZUNv
bm5lY3Rpb25zKHRlc3QsIChmaXJzdENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIHBjMSA9
IGZpcnN0Q29ubmVjdGlvbjsKKyAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29ubmVjdGlvbi5h
ZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRUcmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOworICAgICAg
ICAgICAgc2VuZGVyLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAgICAgICAgfSwgKHNl
Y29uZENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIHBjMiA9IHNlY29uZENvbm5lY3Rpb247
CisgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4g
eworICAgICAgICAgICAgICAgIHJlY2VpdmVyID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKKyAgICAg
ICAgICAgICAgICByZWNlaXZlci50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKKyAgICAg
ICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9
OworICAgICAgICB9KTsKKyAgICAgICAgdGVzdC5zdGVwX3RpbWVvdXQoKCkgPT4gcmVqZWN0KCJU
ZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKKyAgICB9KTsKKworICAgIHZpZGVvMS5zcmNPYmplY3Qg
PSBzdHJlYW07CisgICAgYXdhaXQgdmlkZW8xLnBsYXkoKTsKK30sICJ2aWRlbyBleGNoYW5nZSB3
aXRoIFNGcmFtZSB0cmFuc2Zvcm0gaW4gd29ya2VyIik7CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zv
cm0tcmVhZGFibGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1y
ZWFkYWJsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM3MjkxNmY5YjVhMDRmZDUxYjFiZDIy
MDllOWZlNmUyMjY3MTJiMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10
cmFuc2Zvcm0tcmVhZGFibGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIHNm
cmFtZS10cmFuc2Zvcm0tcmVhZGFibGUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1l
LXRyYW5zZm9ybS1yZWFkYWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1y
ZWFkYWJsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2NjE4MjUwYmQxODczNjE0YjcyMGQzZDIwMjQ0YjVh
OWEyMWQ2N2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3Jt
LXJlYWRhYmxlLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxpZnJhbWUgc3JjPSIuIiBpZD0iZnJhbWUi
PjwvaWZyYW1lPgorICAgICAgICA8c2NyaXB0PgorcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9
PiB7CisgICAgY29uc3QgdHJhbnNmb3JtID0gbmV3IGZyYW1lLmNvbnRlbnRXaW5kb3cuU0ZyYW1l
VHJhbnNmb3JtOworICAgIGZyYW1lLnJlbW92ZSgpOworICAgIGFzc2VydF90aHJvd3NfZG9tKCJJ
bnZhbGlkU3RhdGVFcnJvciIsICgpID0+IHRyYW5zZm9ybS5yZWFkYWJsZSk7Cit9KTsKKyAgICAg
ICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9y
bS9zZnJhbWUtdHJhbnNmb3JtLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zv
cm0td29ya2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxN2NmMGEzOGFhMDg1OWZhNmVlOGFmMDFmZGFiNWY5
NGI1YmViMTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3Jt
LXdvcmtlci5qcwpAQCAtMCwwICsxLDcgQEAKK29ucnRjdHJhbnNmb3JtID0gKGV2ZW50KSA9PiB7
CisgICAgY29uc3Qgc2ZyYW1lVHJhbnNmb3JtID0gbmV3IFNGcmFtZVRyYW5zZm9ybSh7IHJvbGUg
OiAiZGVjcnlwdCIsIGF1dGhlbnRpY2F0aW9uU2l6ZTogIjEwIiwgY29tcGF0aWJpbGl0eU1vZGU6
ICJIMjY0IiB9KTsKKyAgICBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3IiwgbmV3IFVpbnQ4
QXJyYXkoWzE0MywgNzcsIDQzLCAxMCwgNzIsIDE5LCAzNywgNjcsIDIzNiwgMjE5LCAyNCwgOTMs
IDI2LCAxNjUsIDkxLCAxNzhdKSwgIkhLREYiLCBmYWxzZSwgWyJkZXJpdmVCaXRzIiwgImRlcml2
ZUtleSJdKS50aGVuKGtleSA9PiBzZnJhbWVUcmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkp
KTsKKyAgICBjb25zdCB0cmFuc2Zvcm1lciA9IGV2ZW50LnRyYW5zZm9ybWVyOworICAgIHRyYW5z
Zm9ybWVyLnJlYWRhYmxlLnBpcGVUaHJvdWdoKHNmcmFtZVRyYW5zZm9ybSkucGlwZVRvKHRyYW5z
Zm9ybWVyLndyaXRhYmxlKTsKK30KK3NlbGYucG9zdE1lc3NhZ2UoInJlZ2lzdGVyZWQiKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
cnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0uaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3Jt
L3NmcmFtZS10cmFuc2Zvcm0uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTQwMTM1YjA0ZjRmODViYTY3OWIw
MTgwMjhiMzk1NDI1N2MxN2E4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1l
LXRyYW5zZm9ybS5odG1sCkBAIC0wLDAgKzEsMTQxIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgor
ICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHNjcmlwdD4KKworcHJvbWlzZV90ZXN0
KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24o
KTsKKyAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgU0ZyYW1lVHJhbnNmb3JtKCk7Cisg
ICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgU0ZyYW1lVHJhbnNmb3JtKCk7CisgICAg
Y29uc3Qgc2VuZGVyMSA9IHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpLnNlbmRlcjsKKyAgICBj
b25zdCBzZW5kZXIyID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ3ZpZGVvJykuc2VuZGVyOworICAgIGNv
bnN0IHJlY2VpdmVyMSA9IHBjLmdldFJlY2VpdmVycygpWzBdOworICAgIGNvbnN0IHJlY2VpdmVy
MiA9IHBjLmdldFJlY2VpdmVycygpWzFdOworCisgICAgc2VuZGVyMS50cmFuc2Zvcm0gPSBzZW5k
ZXJUcmFuc2Zvcm07CisgICAgcmVjZWl2ZXIxLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3Jt
OworICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+IHNlbmRl
cjIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtKTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgi
SW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiByZWNlaXZlcjIudHJhbnNmb3JtID0gcmVjZWl2ZXJU
cmFuc2Zvcm0pOworCisgICAgc2VuZGVyMS50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07Cisg
ICAgcmVjZWl2ZXIxLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOworCisgICAgc2VuZGVy
MS50cmFuc2Zvcm0gPSBudWxsOworICAgIHJlY2VpdmVyMS50cmFuc2Zvcm0gPSBudWxsOworfSwg
IkNhbm5vdCByZXVzZSBhdHRhY2hlZCB0cmFuc2Zvcm1zIik7CisKK3Rlc3QoKCkgPT4geworICAg
IGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oKTsKKworICAgIGFz
c2VydF90cnVlKHNlbmRlclRyYW5zZm9ybS5yZWFkYWJsZSBpbnN0YW5jZW9mIFJlYWRhYmxlU3Ry
ZWFtKTsKKyAgICBhc3NlcnRfdHJ1ZShzZW5kZXJUcmFuc2Zvcm0ud3JpdGFibGUgaW5zdGFuY2Vv
ZiBXcml0YWJsZVN0cmVhbSk7Cit9LCAiU0ZyYW1lVHJhbnNmb3JtIGV4cG9zZXMgcmVhZGFibGUg
YW5kIHdyaXRhYmxlIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNv
bnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgY29uc3Qgc2VuZGVyVHJhbnNm
b3JtID0gbmV3IFNGcmFtZVRyYW5zZm9ybSgpOworICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNmb3Jt
ID0gbmV3IFNGcmFtZVRyYW5zZm9ybSgpOworICAgIGNvbnN0IHNlbmRlcjEgPSBwYy5hZGRUcmFu
c2NlaXZlcignYXVkaW8nKS5zZW5kZXI7CisgICAgY29uc3Qgc2VuZGVyMiA9IHBjLmFkZFRyYW5z
Y2VpdmVyKCd2aWRlbycpLnNlbmRlcjsKKyAgICBjb25zdCByZWNlaXZlcjEgPSBwYy5nZXRSZWNl
aXZlcnMoKVswXTsKKyAgICBjb25zdCByZWNlaXZlcjIgPSBwYy5nZXRSZWNlaXZlcnMoKVsxXTsK
KworICAgIGFzc2VydF9mYWxzZShzZW5kZXJUcmFuc2Zvcm0ucmVhZGFibGUubG9ja2VkLCAic2Vu
ZGVyIHJlYWRhYmxlIGJlZm9yZSIpOworICAgIGFzc2VydF9mYWxzZShzZW5kZXJUcmFuc2Zvcm0u
d3JpdGFibGUubG9ja2VkLCAic2VuZGVyIHdyaXRhYmxlIGJlZm9yZSIpOworICAgIGFzc2VydF9m
YWxzZShyZWNlaXZlclRyYW5zZm9ybS5yZWFkYWJsZS5sb2NrZWQsICJyZWNlaXZlciByZWFkYWJs
ZSBiZWZvcmUiKTsKKyAgICBhc3NlcnRfZmFsc2UocmVjZWl2ZXJUcmFuc2Zvcm0ud3JpdGFibGUu
bG9ja2VkLCAicmVjZWl2ZXIgd3JpdGFibGUgYmVmb3JlIik7CisKKyAgICBzZW5kZXIxLnRyYW5z
Zm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAgICByZWNlaXZlcjEudHJhbnNmb3JtID0gcmVjZWl2
ZXJUcmFuc2Zvcm07CisKKyAgICBhc3NlcnRfdHJ1ZShzZW5kZXJUcmFuc2Zvcm0ucmVhZGFibGUu
bG9ja2VkLCAic2VuZGVyIHJlYWRhYmxlIGR1cmluZyIpOworICAgIGFzc2VydF90cnVlKHNlbmRl
clRyYW5zZm9ybS53cml0YWJsZS5sb2NrZWQsICJzZW5kZXIgd3JpdGFibGUgZHVyaW5nIik7Cisg
ICAgYXNzZXJ0X3RydWUocmVjZWl2ZXJUcmFuc2Zvcm0ucmVhZGFibGUubG9ja2VkLCAicmVjZWl2
ZXIgcmVhZGFibGUgZHVyaW5nIik7CisgICAgYXNzZXJ0X3RydWUocmVjZWl2ZXJUcmFuc2Zvcm0u
d3JpdGFibGUubG9ja2VkLCAicmVjZWl2ZXIgd3JpdGFibGUgZHVyaW5nIik7CisKKyAgICBzZW5k
ZXIxLnRyYW5zZm9ybSA9IG51bGw7CisgICAgcmVjZWl2ZXIxLnRyYW5zZm9ybSA9IG51bGw7CisK
KyAgICBhc3NlcnRfdHJ1ZShzZW5kZXJUcmFuc2Zvcm0ucmVhZGFibGUubG9ja2VkLCAic2VuZGVy
IHJlYWRhYmxlIGFmdGVyIik7CisgICAgYXNzZXJ0X3RydWUoc2VuZGVyVHJhbnNmb3JtLndyaXRh
YmxlLmxvY2tlZCwgInNlbmRlciB3cml0YWJsZSBhZnRlciIpOworICAgIGFzc2VydF90cnVlKHJl
Y2VpdmVyVHJhbnNmb3JtLnJlYWRhYmxlLmxvY2tlZCwgInJlY2VpdmVyIHJlYWRhYmxlIGFmdGVy
Iik7CisgICAgYXNzZXJ0X3RydWUocmVjZWl2ZXJUcmFuc2Zvcm0ud3JpdGFibGUubG9ja2VkLCAi
cmVjZWl2ZXIgd3JpdGFibGUgYWZ0ZXIiKTsKK30sICJyZWFkYWJsZS93cml0YWJsZSBhcmUgbG9j
a2VkIHdoZW4gYXR0YWNoZWQgYW5kIGFmdGVyIGJlaW5nIGF0dGFjaGVkIik7CisKK3Byb21pc2Vf
dGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IGtleSA9IGF3YWl0IGNyeXB0by5zdWJ0
bGUuaW1wb3J0S2V5KCJyYXciLCBuZXcgVWludDhBcnJheShbMTQzLCA3NywgNDMsIDEwLCA3Miwg
MTksIDM3LCA2NywgMjM2LCAyMTksIDI0LCA5MywgMjYsIDE2NSwgOTEsIDE3OF0pLCAiSEtERiIs
IGZhbHNlLCBbImRlcml2ZUJpdHMiLCAiZGVyaXZlS2V5Il0pOworCisgICAgY29uc3Qgc2VuZGVy
VHJhbnNmb3JtID0gbmV3IFNGcmFtZVRyYW5zZm9ybSh7IHJvbGUgOiAnZW5jcnlwdCcsIGF1dGhl
bnRpY2F0aW9uU2l6ZTogMTAgfSk7CisgICAgc2VuZGVyVHJhbnNmb3JtLnNldEVuY3J5cHRpb25L
ZXkoa2V5KTsKKworICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNmb3JtID0gbmV3IFNGcmFtZVRyYW5z
Zm9ybSh7IHJvbGUgOiAnZGVjcnlwdCcsIGF1dGhlbnRpY2F0aW9uU2l6ZTogMTAgfSk7CisgICAg
cmVjZWl2ZXJUcmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkpOworCisgICAgY29uc3Qgd3Jp
dGVyID0gc2VuZGVyVHJhbnNmb3JtLndyaXRhYmxlLmdldFdyaXRlcigpOworICAgIGNvbnN0IHJl
YWRlciA9IHJlY2VpdmVyVHJhbnNmb3JtLnJlYWRhYmxlLmdldFJlYWRlcigpOworCisgICAgc2Vu
ZGVyVHJhbnNmb3JtLnJlYWRhYmxlLnBpcGVUbyhyZWNlaXZlclRyYW5zZm9ybS53cml0YWJsZSk7
CisKKyAgICBjb25zdCBzZW50ID0gbmV3IEFycmF5QnVmZmVyKDgpOworICAgIGNvbnN0IHZpZXcg
PSBuZXcgSW50OEFycmF5KHNlbnQpOworICAgIGZvciAobGV0IGNwdHIgPSAwOyBjcHRyIDwgc2Vu
dC5ieXRlTGVuZ3RoOyArK2NwdHIpCisgICAgICAgIHZpZXdbY3B0cl0gPSBjcHRyOworCisgICAg
d3JpdGVyLndyaXRlKHNlbnQpOworICAgIGNvbnN0IHJlY2VpdmVkID0gYXdhaXQgcmVhZGVyLnJl
YWQoKTsKKworICAgIGFzc2VydF9lcXVhbHMocmVjZWl2ZWQudmFsdWUuYnl0ZUxlbmd0aCwgOCk7
CisgICAgY29uc3QgdmlldzIgPSBuZXcgSW50OEFycmF5KHJlY2VpdmVkLnZhbHVlKTsKKyAgICBm
b3IgKGxldCBjcHRyID0gMDsgY3B0ciA8IHNlbnQuYnl0ZUxlbmd0aDsgKytjcHRyKQorICAgICAg
ICBhc3NlcnRfZXF1YWxzKHZpZXcyW2NwdHJdLCB2aWV3W2NwdHJdKTsKK30sICJTRnJhbWUgd2l0
aCBhcnJheSBidWZmZXIgLSBhdXRoZW50aWNhdGlvbiBzaXplIDEwIik7CisKK3Byb21pc2VfdGVz
dChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IGtleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUu
aW1wb3J0S2V5KCJyYXciLCBuZXcgVWludDhBcnJheShbMTQzLCA3NywgNDMsIDEwLCA3MiwgMTks
IDM3LCA2NywgMjM2LCAyMTksIDI0LCA5MywgMjYsIDE2NSwgOTEsIDE3OF0pLCAiSEtERiIsIGZh
bHNlLCBbImRlcml2ZUJpdHMiLCAiZGVyaXZlS2V5Il0pOworCisgICAgY29uc3Qgc2VuZGVyVHJh
bnNmb3JtID0gbmV3IFNGcmFtZVRyYW5zZm9ybSh7IHJvbGUgOiAnZW5jcnlwdCcsIGF1dGhlbnRp
Y2F0aW9uU2l6ZTogMTAgfSk7CisgICAgY29uc3Qgc2VuZGVyV3JpdGVyID0gc2VuZGVyVHJhbnNm
b3JtLndyaXRhYmxlLmdldFdyaXRlcigpOworICAgIGNvbnN0IHNlbmRlclJlYWRlciA9IHNlbmRl
clRyYW5zZm9ybS5yZWFkYWJsZS5nZXRSZWFkZXIoKTsKKworICAgIGNvbnN0IHJlY2VpdmVyVHJh
bnNmb3JtID0gbmV3IFNGcmFtZVRyYW5zZm9ybSh7IHJvbGUgOiAnZGVjcnlwdCcsIGF1dGhlbnRp
Y2F0aW9uU2l6ZTogMTAgfSk7CisgICAgY29uc3QgcmVjZWl2ZXJXcml0ZXIgPSByZWNlaXZlclRy
YW5zZm9ybS53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgICBjb25zdCByZWNlaXZlclJlYWRlciA9
IHJlY2VpdmVyVHJhbnNmb3JtLnJlYWRhYmxlLmdldFJlYWRlcigpOworCisgICAgc2VuZGVyVHJh
bnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5KTsKKyAgICByZWNlaXZlclRyYW5zZm9ybS5zZXRF
bmNyeXB0aW9uS2V5KGtleSk7CisKKyAgICBjb25zdCBjaHVuayA9IG5ldyBBcnJheUJ1ZmZlcig4
KTsKKworICAgIC8vIGRlY3J5cHRpb24gc2hvdWxkIGZhaWwsIGxlYWRpbmcgdG8gYW4gZW1wdHkg
YXJyYXkgYnVmZmVyLgorICAgIGF3YWl0IHJlY2VpdmVyV3JpdGVyLndyaXRlKGNodW5rKTsKKyAg
ICBsZXQgcmVjZWl2ZWQgPSBhd2FpdCByZWNlaXZlclJlYWRlci5yZWFkKCk7CisgICAgYXNzZXJ0
X2VxdWFscyhyZWNlaXZlZC52YWx1ZS5ieXRlTGVuZ3RoLCAwKTsKKworICAgIC8vIFdlIHdyaXRl
IGFnYWluIGJ1dCB0aGlzIHRpbWUgd2l0aCBhIGNodW5rIHdlIGNhbiBkZWNyeXB0LgorICAgIGF3
YWl0IHNlbmRlcldyaXRlci53cml0ZShjaHVuayk7CisgICAgY29uc3QgZW5jcnlwdGVkID0gYXdh
aXQgc2VuZGVyUmVhZGVyLnJlYWQoKTsKKyAgICBhd2FpdCByZWNlaXZlcldyaXRlci53cml0ZShl
bmNyeXB0ZWQudmFsdWUpOworICAgIHJlY2VpdmVkID0gYXdhaXQgcmVjZWl2ZXJSZWFkZXIucmVh
ZCgpOworICAgIGFzc2VydF9lcXVhbHMocmVjZWl2ZWQudmFsdWUuYnl0ZUxlbmd0aCwgOCk7Cit9
LCAiU0ZyYW1lIGRlY3J5cHRpb24gd2l0aCBhcnJheSBidWZmZXIgdGhhdCBpcyB0b28gc21hbGwi
KTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3Qga2V5ID0gYXdh
aXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIG5ldyBVaW50OEFycmF5KFsxNDMsIDc3
LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYsIDIxOSwgMjQsIDkzLCAyNiwgMTY1LCA5MSwg
MTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZlQml0cyIsICJkZXJpdmVLZXkiXSk7CisKKyAg
ICBjb25zdCByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oeyByb2xlIDog
J2RlY3J5cHQnLCBhdXRoZW50aWNhdGlvblNpemU6IDEwIH0pOworICAgIGNvbnN0IHJlY2VpdmVy
V3JpdGVyID0gcmVjZWl2ZXJUcmFuc2Zvcm0ud3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgICAgcmVj
ZWl2ZXJUcmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkpOworCisgICAgLy8gZGVjcnlwdGlv
biBzaG91bGQgZmFpbCwgbGVhZGluZyB0byBlcnJvcmluZyB0aGUgdHJhbnNmb3JtLgorICAgIGF3
YWl0IHByb21pc2VfcmVqZWN0c19qcyh0ZXN0LCBUeXBlRXJyb3IsIHJlY2VpdmVyV3JpdGVyLndy
aXRlKHsgfSkpOworICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19qcyh0ZXN0LCBUeXBlRXJyb3Is
IHJlY2VpdmVyV3JpdGVyLmNsb3NlZCk7Cit9LCAiU0ZyYW1lIHRyYW5zZm9ybSBnZXRzIGVycm9y
ZWQgaWYgdHJ5aW5nIHRvIHByb2Nlc3MgdW5leHBlY3RlZCB2YWx1ZSB0eXBlcyIpOworCisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2dsaWIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzNTY5NDE1OWE5MDEzNjdkMjA1MjU2NTQ2NWJh
ZjllMTI3YjMyNTg4Li5jY2JjZTA3MTI2YjgzMTA2MGRmNzNkNTgzNGI2NzU4OWM4YjdmNGY1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNTY1LDgg
KzE1NjUsOCBAQCB3ZWJraXQub3JnL2IvMTM2MjI0IGZhc3Qvc3BlZWNoc3ludGhlc2lzIFsgU2tp
cCBdCiB3ZWJraXQub3JnL2IvMTM2MjI0IGZhc3Qvc3BlZWNocmVjb2duaXRpb24gWyBTa2lwIF0K
IAogIyBObyBwbGFucyB0byBzdXBwb3J0IFNmcmFtZXMgZm9yIGEgd2hpbGUKLWh0dHAvd3B0L3dl
YnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLmh0bWwgWyBTa2lwIF0KLWh0dHAvd3B0L3dlYnJ0Yy9zZnJh
bWUtdHJhbnNmb3JtLWluLXdvcmtlci5odG1sIFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLmh0
bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29k
ZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0taW4td29ya2VyLmh0dHBzLmh0bWwgWyBTa2lw
IF0KIHdlYnJ0Yy9hdWRpby1zZnJhbWUuaHRtbCBbIFNraXAgXQogd2VicnRjL3NmcmFtZS10ZXN0
LXZlY3RvcnMuaHRtbCBbIFNraXAgXQogd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0tYnVmZmVyLXNv
dXJjZS5odG1sIFsgU2tpcCBdCkBAIC0yMDMwLDcgKzIwMzAsNyBAQCB3ZWJraXQub3JnL2IvMjIz
OTY1IGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvYmxvY2stZXZlcnl0aGluZy11bmxlc3Mt
ZG9tYWluLQogd2Via2l0Lm9yZy9iLzIyMzk2NSBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25z
L2hpZGUtb24tY3NwLXJlcG9ydC5weSBbIENyYXNoIF0KIHdlYmtpdC5vcmcvYi8yMjM5NjUgaHR0
cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNlLXJlZGlyZWN0LWJsb2NrZWQu
cHkgWyBDcmFzaCBdCiAKLXdlYmtpdC5vcmcvYi8yMjQwNjggaHR0cC93cHQvd2VicnRjL3dlYnJ0
Yy1sYXRlLXRyYW5zZm9ybS5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjI0MDY4IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3Nj
cmlwdC1sYXRlLXRyYW5zZm9ybS5odHRwcy5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcv
Yi8yMjQwNzEgd2ViZ2wvcGVuZGluZy9jb25mb3JtYW5jZS9jb250ZXh0L2NvbnRleHQtYXR0cmli
dXRlcy1hbHBoYS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5odG1sIFsgVGltZW91dCBdCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzIGIvTGF5b3V0
VGVzdHMvd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDJlNjhjNjIyYmZjMTFhY2UxZWIxZjFmY2M4ZDgyZDIyZmM0ODJkNTAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRj
L3NjcmlwdC10cmFuc2Zvcm0uanMKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLWNsYXNz
IE1vY2tSVENSdHBUcmFuc2Zvcm1lciBleHRlbmRzIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyIHsK
LSAgICBjb25zdHJ1Y3RvcigpIHsgfQotICAgIHN0YXJ0KHJlYWRhYmxlU3RyZWFtLCB3cml0YWJs
ZVN0cmVhbSkgeyByZWFkYWJsZVN0cmVhbS5waXBlVG8od3JpdGFibGVTdHJlYW0pOyB9Ci19Owot
Ci1yZWdpc3RlclJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKCJNb2NrUlRDUnRwVHJhbnNmb3JtIiwg
TW9ja1JUQ1J0cFRyYW5zZm9ybWVyKTsKLXNlbGYucG9zdE1lc3NhZ2UoInN0YXJ0ZWQiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426113</attachid>
            <date>2021-04-15 10:01:46 -0700</date>
            <delta_ts>2021-04-16 07:48:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224604-20210415190140.patch</filename>
            <type>text/plain</type>
            <size>103020</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MDEzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTE2Zjk0ZjZlMzBkYzRhYzJkOTk3
MTIxYjZlNmM1MTUyZGQyZDk2Ny4uYTc1YWI0MjU2ZTU0NjEyN2Y1MTA5MDM2ZjM5ZWZhMjIzNjk2
N2M5OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA0LTE1ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNaWdyYXRlIHNvbWUgV2ViUlRDIGVuY29kZWQg
dHJhbnNmb3JtIHRlc3RzIHRvIFdQVAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI0NjA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJs
ZS1jcmFzaC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVj
dGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHdl
YnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzOiBSZW1vdmVkLgorCiAyMDIxLTA0LTE1ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgUlRDU2NyaXB0VHJh
bnNmb3JtIGNvbnN0cnVjdG9yIHVwIHRvIHNwZWMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CmluZGV4IDVjNDQ2OTQ3MWNmMjIxMjZjOGFjZTM4YTE0MmNhYTc4NTViYjhlOTEuLjE1ZTljODQ3
ZjhiNDkwYzc3YzU0MTI1N2Q1ZmVhNDM5ZmEwNjBmMjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTA0LTE1ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNaWdyYXRlIHNvbWUgV2ViUlRDIGVuY29kZWQgdHJh
bnNmb3JtIHRlc3RzIHRvIFdQVAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI0NjA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3Jt
L3JvdXRpbmVzLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzeW5jIGNyZWF0ZUNvbm5lY3Rpb25zKToK
KyAgICAgICAgKHdhaXRGb3IpOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMt
ZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LWF1ZGlvLXRyYW5zZm9ybS13b3JrZXIuanM6IEFkZGVk
LgorICAgICAgICAoTW9ja1JUQ1J0cFRyYW5zZm9ybWVyKToKKyAgICAgICAgKE1vY2tSVENSdHBU
cmFuc2Zvcm1lci5wcm90b3R5cGUuc3RhcnQpOgorICAgICAgICAoTW9ja1JUQ1J0cFRyYW5zZm9y
bWVyLnByb3RvdHlwZS5wcm9jZXNzKToKKyAgICAgICAgKG9ucnRjdHJhbnNmb3JtKToKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1h
dWRpby10cmFuc2Zvcm0uaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1hdWRpby10cmFu
c2Zvcm0uaHR0cHMuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0
Yy9hdWRpby1zY3JpcHQtdHJhbnNmb3JtLmh0bWwuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtY2hhbmdlLXRyYW5zZm9ybS13b3Jr
ZXIuanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvY2hhbmdlLWVu
Y29kZWQtdHJhbnNmb3JtLmpzLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMt
ZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LWNoYW5nZS10cmFuc2Zvcm0uaHR0cHMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQt
dHJhbnNmb3JtL3NjcmlwdC1jaGFuZ2UtdHJhbnNmb3JtLmh0dHBzLmh0bWw6IFJlbmFtZWQgZnJv
bSBMYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvY2hhbmdlLWVuY29kZWQtdHJhbnNmb3JtLmh0
bWwuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9y
bS9zY3JpcHQtbGF0ZS10cmFuc2Zvcm0uaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1s
YXRlLXRyYW5zZm9ybS5odHRwcy5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2VicnRjL3dlYnJ0Yy1sYXRlLXRyYW5zZm9ybS5odG1sLgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LW1ldGFkYXRhLXRyYW5z
Zm9ybS13b3JrZXIuanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMv
bWV0YWRhdGEtdHJhbnNmb3JtLXdvcmtlci5qcy4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1tZXRhZGF0YS10cmFuc2Zvcm0uaHR0
cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
cnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1tZXRhZGF0YS10cmFuc2Zvcm0uaHR0cHMuaHRt
bDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9tZXRhZGF0YS10cmFu
c2Zvcm0uaHRtbC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQt
dHJhbnNmb3JtL3NjcmlwdC10cmFuc2Zvcm0td29ya2VyLmpzOiBSZW5hbWVkIGZyb20gTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanMuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtdHJhbnNmb3Jt
Lmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtdHJhbnNmb3JtLmh0dHBzLmh0bWw6IFJl
bmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS5o
dG1sLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zv
cm0vc2NyaXB0LXdyaXRlLXR3aWNlLXRyYW5zZm9ybS13b3JrZXIuanM6IFJlbmFtZWQgZnJvbSBM
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvd3JpdGUtdHdpY2UtdHJhbnNmb3JtLmpzLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0
LXdyaXRlLXR3aWNlLXRyYW5zZm9ybS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LXdy
aXRlLXR3aWNlLXRyYW5zZm9ybS5odHRwcy5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2VicnRjL3dyaXRlLXR3aWNlLXRyYW5zZm9ybS5odG1sLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLWtleXMuaHR0
cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
cnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS1rZXlzLmh0dHBzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1l
LXRyYW5zZm9ybS1idWZmZXItc291cmNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNm
b3JtLWJ1ZmZlci1zb3VyY2UuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRy
YW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLWluLXdvcmtlci5odHRwcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zv
cm0vc2ZyYW1lLXRyYW5zZm9ybS1pbi13b3JrZXIuaHR0cHMuaHRtbDogUmVuYW1lZCBmcm9tIExh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLWluLXdvcmtlci5odG1s
LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0v
c2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5z
Zm9ybS1yZWFkYWJsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
d2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0td29ya2VyLmpzOiBSZW5h
bWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0uanMu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9z
ZnJhbWUtdHJhbnNmb3JtLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS5odG1sLgorCiAyMDIxLTA0LTE0ICBUaW0gTmd1eWVuICA8
bnRpbUBhcHBsZS5jb20+CiAKICAgICAgICAgT21pdCBkZWZhdWx0IHBvc2l0aW9uL2FuZ2xlIHdo
ZW4gc2VyaWFsaXppbmcgcmFkaWFsICYgY29uaWMgZ3JhZGllbnRzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJydGMvYXVkaW8tc2NyaXB0LXRyYW5zZm9ybS5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL2F1ZGlvLXNjcmlwdC10cmFuc2Zvcm0uaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg0NjY0MWRhMTk3NzUzZTQ0MWNmNjNkMGZjMzhk
NjExNWY2NWYzMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvYXVkaW8tc2NyaXB0LXRyYW5zZm9ybS5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotPCFkb2N0eXBlIGh0bWw+Ci08aHRtbD4K
LSAgICA8aGVhZD4KLSAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgotICAgICAgICA8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLSAg
ICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgICAgIDx2aWRlbyBpZD0idmlkZW8iIGF1dG9wbGF5
IHBsYXlzSW5saW5lPjwvdmlkZW8+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSJyb3V0aW5lcy5qcyI+
PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQ+Ci1mdW5jdGlvbiB3YWl0Rm9yTWVzc2FnZShwb3J0
LCBkYXRhKQotewotICAgIGxldCBnb3RNZXNzYWdlOwotICAgIGNvbnN0IHByb21pc2UgPSBuZXcg
UHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgIGdvdE1lc3NhZ2UgPSByZXNv
bHZlOwotICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJkaWQgbm90IGdldCAiICsg
ZGF0YSkgfSwgNTAwMCk7Ci0gICAgfSk7Ci0gICAgcG9ydC5vbm1lc3NhZ2UgPSBldmVudCA9PiB7
Ci0gICAgICAgaWYgKGV2ZW50LmRhdGEgPT09IGRhdGEpCi0gICAgICAgICAgIGdvdE1lc3NhZ2Uo
KTsKLSAgICB9OwotICAgIHJldHVybiBwcm9taXNlOwotfQotCi1sZXQgc2VuZGVyVHJhbnNmb3Jt
LCByZWNlaXZlclRyYW5zZm9ybTsKLWxldCBzdHJlYW07Ci1wcm9taXNlX3Rlc3QoYXN5bmMgKHRl
c3QpID0+IHsKLSAgICB3b3JrZXIgPSBuZXcgV29ya2VyKCJjb250ZXh0LXRyYW5zZm9ybS5qcyIp
OwotICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5v
bm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOwotICAgIGFzc2VydF9l
cXVhbHMoZGF0YSwgInJlZ2lzdGVyZWQiKTsKLQotICAgIGNvbnN0IGxvY2FsU3RyZWFtID0gYXdh
aXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSk7Ci0K
LSAgICBjb25zdCBzZW5kZXJDaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIGNvbnN0
IHJlY2VpdmVyQ2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICBsZXQgc2VuZGVyLCBy
ZWNlaXZlcjsKLSAgICBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
KHdvcmtlciwge25hbWU6J01vY2tSVENSdHBUcmFuc2Zvcm0nLCBtZWRpYVR5cGU6J2F1ZGlvJywg
c2lkZTonc2VuZGVyJywgcG9ydDpzZW5kZXJDaGFubmVsLnBvcnQyfSwgW3NlbmRlckNoYW5uZWwu
cG9ydDJdKTsKLSAgICByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zv
cm0od29ya2VyLCB7bmFtZTonTW9ja1JUQ1J0cFRyYW5zZm9ybScsIG1lZGlhVHlwZTonYXVkaW8n
LCBzaWRlOidyZWNlaXZlcicsIHBvcnQ6cmVjZWl2ZXJDaGFubmVsLnBvcnQyfSwgW3JlY2VpdmVy
Q2hhbm5lbC5wb3J0Ml0pOwotICAgIHNlbmRlclRyYW5zZm9ybS5wb3J0ID0gc2VuZGVyQ2hhbm5l
bC5wb3J0MTsKLSAgICByZWNlaXZlclRyYW5zZm9ybS5wb3J0ID0gcmVjZWl2ZXJDaGFubmVsLnBv
cnQxOwotCi0gICAgcHJvbWlzZTEgPSB3YWl0Rm9yTWVzc2FnZShzZW5kZXJUcmFuc2Zvcm0ucG9y
dCwgInN0YXJ0ZWQgYXVkaW8gc2VuZGVyIik7Ci0gICAgcHJvbWlzZTIgPSB3YWl0Rm9yTWVzc2Fn
ZShyZWNlaXZlclRyYW5zZm9ybS5wb3J0LCAic3RhcnRlZCBhdWRpbyByZWNlaXZlciIpOwotCi0g
ICAgc3RyZWFtID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAg
ICAgICBjcmVhdGVDb25uZWN0aW9ucygoZmlyc3RDb25uZWN0aW9uKSA9PiB7Ci0gICAgICAgICAg
ICBzZW5kZXIgPSBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxTdHJlYW0uZ2V0QXVkaW9U
cmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOwotICAgICAgICAgICAgc2VuZGVyLnRyYW5zZm9ybSA9
IHNlbmRlclRyYW5zZm9ybTsKLSAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKLSAg
ICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7Ci0g
ICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOwotICAgICAgICAg
ICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOwotICAgICAgICAg
ICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsKLSAgICAgICAgICAgIH07Ci0g
ICAgICAgIH0pOwotICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBv
dXQiKSwgNTAwMCk7Ci0gICAgfSk7Ci0KLSAgICBhd2FpdCBwcm9taXNlMTsKLSAgICBhd2FpdCBw
cm9taXNlMjsKLX0sICJzZXR1cCBhbmQgY2hlY2sgY29udGV4dCIpOwotCi1wcm9taXNlX3Rlc3Qo
KHRlc3QpID0+IHsKLSAgICB2aWRlby5zcmNPYmplY3QgPSBzdHJlYW07Ci0gICAgcmV0dXJuIHZp
ZGVvLnBsYXkoKTsKLX0sICJhdWRpbyBpcyBwbGF5aW5nIik7Ci0gICAgICAgIDwvc2NyaXB0Pgot
ICAgIDwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YnJ0Yy9jaGFuZ2UtZW5jb2RlZC10cmFuc2Zvcm0uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYnJ0Yy9jaGFuZ2UtZW5jb2RlZC10cmFuc2Zvcm0uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2ZhY2Y1NjRlNzg5OGNmODM1M2U1NDVhZTQ0MWM3MmYyZjM3ZGY4MC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJydGMvY2hhbmdlLWVuY29kZWQtdHJhbnNmb3JtLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw1NyArMCwwIEBACi08IWRvY3R5cGUgaHRtbD4KLTxodG1sPgotICAgIDxoZWFkPgot
ICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotICAgIDwvaGVhZD4KLSAg
ICA8Ym9keT4KLSAgICAgICAgPHZpZGVvIGlkPSJ2aWRlbzEiIGF1dG9wbGF5IGNvbnRyb2xzIHBs
YXlzaW5saW5lPjwvdmlkZW8+Ci0gICAgICAgIDxzY3JpcHQgc3JjID0icm91dGluZXMuanMiPjwv
c2NyaXB0PgotICAgICAgICA8c2NyaXB0PgotYXN5bmMgZnVuY3Rpb24gd2FpdEZvck1lc3NhZ2Uo
d29ya2VyLCBkYXRhKQotewotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGNvbnN0IHJlY2Vp
dmVkID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2
ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKLSAgICAgICAgaWYgKGRhdGEgPT09IHJlY2Vp
dmVkKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotcHJvbWlzZV90ZXN0KGFzeW5j
ICh0ZXN0KSA9PiB7Ci0gICAgd29ya2VyID0gbmV3IFdvcmtlcignY2hhbmdlLWVuY29kZWQtdHJh
bnNmb3JtLmpzJyk7Ci0gICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUg
PT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOwotCi0gICAgY29uc3QgbG9jYWxT
dHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7dmlkZW86
IHRydWV9KTsKLQotICAgIGxldCBzZW5kZXIsIHJlY2VpdmVyOwotICAgIGNvbnN0IHNlbmRlclRy
YW5zZm9ybTEgPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25hbWU6J3NlbmRl
cjEnfSk7Ci0gICAgY29uc3Qgc2VuZGVyVHJhbnNmb3JtMiA9IG5ldyBSVENSdHBTY3JpcHRUcmFu
c2Zvcm0od29ya2VyLCB7bmFtZTonc2VuZGVyMid9KTsKLSAgICBjb25zdCByZWNlaXZlclRyYW5z
Zm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZToncmVjZWl2ZXIn
fSk7Ci0KLSAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVq
ZWN0KSA9PiB7Ci0gICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+
IHsKLSAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhsb2NhbFN0
cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLCBsb2NhbFN0cmVhbSk7Ci0gICAgICAgICAgICBmaXJz
dENvbm5lY3Rpb24uZ2V0VHJhbnNjZWl2ZXJzKClbMF0uc2V0Q29kZWNQcmVmZXJlbmNlcyhbe21p
bWVUeXBlOiAidmlkZW8vVlA4IiwgY2xvY2tSYXRlOiA5MDAwMH1dKTsKLSAgICAgICAgICAgIHNl
bmRlci50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm0xOwotICAgICAgICB9LCAoc2Vjb25kQ29u
bmVjdGlvbikgPT4gewotICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRy
YWNrRXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICByZWNlaXZlciA9IHRyYWNrRXZlbnQucmVj
ZWl2ZXI7Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFu
c2Zvcm07Ci0gICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOwot
ICAgICAgICAgICAgfTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVq
ZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKLSAgICB9KTsKLQotICAgIHZpZGVvMS5zcmNP
YmplY3QgPSBzdHJlYW07Ci0gICAgYXdhaXQgdmlkZW8xLnBsYXkoKTsKLQotICAgIGNvbnN0IHVw
ZGF0ZVByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAo
ZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOwotICAgIHNlbmRlci50cmFuc2Zvcm0gPSBz
ZW5kZXJUcmFuc2Zvcm0yOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgdXBkYXRlUHJvbWlzZSwg
ImdvdCB2YWx1ZSAyIik7Ci19LCAiY2hhbmdlIHNlbmRlciB0cmFuc2Zvcm0iKTsKLSAgICAgICAg
PC9zY3JpcHQ+Ci0gICAgPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2VicnRjL2NoYW5nZS1lbmNvZGVkLXRyYW5zZm9ybS5qcyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYnJ0Yy9jaGFuZ2UtZW5jb2RlZC10cmFuc2Zvcm0uanMKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDg0YTdhYWFjMTgxZGI0Y2UyYWJkYWMyOTVmYWExNTU1MTk2ZTli
OWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2VicnRjL2NoYW5nZS1lbmNvZGVkLXRyYW5zZm9ybS5qcworKysgL2Rl
di9udWxsCkBAIC0xLDM5ICswLDAgQEAKLWZ1bmN0aW9uIGFwcGVuZFRvQnVmZmVyKGJ1ZmZlciwg
dmFsdWUpIHsKLSAgICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXlCdWZmZXIoYnVmZmVyLmJ5dGVM
ZW5ndGggKyAxKTsKLSAgICBjb25zdCBieXRlUmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkocmVzdWx0
KTsKLSAgICBieXRlUmVzdWx0LnNldChuZXcgVWludDhBcnJheShidWZmZXIpLCAwKTsKLSAgICBi
eXRlUmVzdWx0W2J1ZmZlci5ieXRlTGVuZ3RoXSA9IHZhbHVlOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLW9ucnRjdHJhbnNmb3JtID0gKGV2ZW50KSA9PiB7Ci0gICAgY29uc3QgdHJhbnNmb3Jt
ZXIgPSBldmVudC50cmFuc2Zvcm1lcjsKLQotICAgIHRyYW5zZm9ybWVyLnJlYWRlciA9IHRyYW5z
Zm9ybWVyLnJlYWRhYmxlLmdldFJlYWRlcigpOwotICAgIHRyYW5zZm9ybWVyLndyaXRlciA9IHRy
YW5zZm9ybWVyLndyaXRhYmxlLmdldFdyaXRlcigpOwotCi0gICAgZnVuY3Rpb24gcHJvY2Vzcyh0
cmFuc2Zvcm1lcikKLSAgICB7Ci0gICAgICAgIHRyYW5zZm9ybWVyLnJlYWRlci5yZWFkKCkudGhl
bihjaHVuayA9PiB7Ci0gICAgICAgICAgICBpZiAoY2h1bmsuZG9uZSkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICBpZiAodHJhbnNmb3JtZXIub3B0aW9ucy5uYW1lID09PSAn
c2VuZGVyMScpCi0gICAgICAgICAgICAgICAgY2h1bmsudmFsdWUuZGF0YSA9IGFwcGVuZFRvQnVm
ZmVyKGNodW5rLnZhbHVlLmRhdGEsIDEpOwotICAgICAgICAgICAgZWxzZSBpZiAodHJhbnNmb3Jt
ZXIub3B0aW9ucy5uYW1lID09PSAnc2VuZGVyMicpCi0gICAgICAgICAgICAgICAgY2h1bmsudmFs
dWUuZGF0YSA9IGFwcGVuZFRvQnVmZmVyKGNodW5rLnZhbHVlLmRhdGEsIDIpOwotICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBuZXcgVWludDhBcnJheShj
aHVuay52YWx1ZS5kYXRhKVtjaHVuay52YWx1ZS5kYXRhLmJ5dGVMZW5ndGggLSAxXTsKLSAgICAg
ICAgICAgICAgICBpZiAodmFsdWUgIT09IDEgJiYgdmFsdWUgIT09IDIpCi0gICAgICAgICAgICAg
ICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoInVuZXhwZWN0ZWQgdmFsdWU6ICIgKyB2YWx1ZSk7Ci0g
ICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09IDIpCi0gICAgICAgICAgICAgICAgICAg
IHNlbGYucG9zdE1lc3NhZ2UoImdvdCB2YWx1ZSAyIik7Ci0gICAgICAgICAgICAgICAgY2h1bmsu
dmFsdWUuZGF0YSA9IGNodW5rLnZhbHVlLmRhdGEuc2xpY2UoMCwgY2h1bmsudmFsdWUuZGF0YS5i
eXRlTGVuZ3RoIC0gMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0cmFuc2Zvcm1lci53
cml0ZXIud3JpdGUoY2h1bmsudmFsdWUpOwotICAgICAgICAgICAgcHJvY2Vzcyh0cmFuc2Zvcm1l
cik7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIHByb2Nlc3ModHJhbnNmb3JtZXIpOwotfTsK
LXNlbGYucG9zdE1lc3NhZ2UoInJlZ2lzdGVyZWQiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYnJ0Yy9tZXRhZGF0YS10cmFuc2Zvcm0td29ya2VyLmpzIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2VicnRjL21ldGFkYXRhLXRyYW5zZm9ybS13b3JrZXIuanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYmExZjRlZTZlMDk3NmE2OGQ2MDdkZTk4MjRkMmZkMjNk
YWFjZDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL21ldGFkYXRhLXRyYW5zZm9ybS13b3JrZXIuanMKKysr
IC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1vbnJ0Y3RyYW5zZm9ybSA9IChldmVudCkgPT4g
ewotICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gZXZlbnQudHJhbnNmb3JtZXI7Ci0KLSAgICB0cmFu
c2Zvcm1lci5yZWFkZXIgPSB0cmFuc2Zvcm1lci5yZWFkYWJsZS5nZXRSZWFkZXIoKTsKLSAgICB0
cmFuc2Zvcm1lci53cml0ZXIgPSB0cmFuc2Zvcm1lci53cml0YWJsZS5nZXRXcml0ZXIoKTsKLQot
ICAgIGxldCBpc0ZpcnN0RnJhbWUgPSB0cnVlOwotICAgIGZ1bmN0aW9uIHByb2Nlc3ModHJhbnNm
b3JtZXIpCi0gICAgewotICAgICAgICB0cmFuc2Zvcm1lci5yZWFkZXIucmVhZCgpLnRoZW4oY2h1
bmsgPT4gewotICAgICAgICAgICAgaWYgKGNodW5rLmRvbmUpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgICAgICBpZiAoaXNGaXJzdEZyYW1lKSB7Ci0gICAgICAgICAgICAgICAg
aXNGaXJzdEZyYW1lID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7
IG5hbWU6IHRyYW5zZm9ybWVyLm9wdGlvbnMubmFtZSwgdGltZXN0YW1wOiBjaHVuay52YWx1ZS50
aW1lc3RhbXAsIG1ldGFkYXRhOiBjaHVuay52YWx1ZS5nZXRNZXRhZGF0YSgpIH0pOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgdHJhbnNmb3JtZXIud3JpdGVyLndyaXRlKGNodW5rLnZhbHVl
KTsKLSAgICAgICAgICAgIHByb2Nlc3ModHJhbnNmb3JtZXIpOwotICAgICAgICB9KTsKLSAgICB9
Ci0gICAgcHJvY2Vzcyh0cmFuc2Zvcm1lcik7Ci19Owotc2VsZi5wb3N0TWVzc2FnZSgicmVnaXN0
ZXJlZCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL21ldGFkYXRh
LXRyYW5zZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL21ldGFkYXRhLXRy
YW5zZm9ybS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjZjYWRlNjUzZWRi
ZTMxODI4NmIzYzA4NWIyOTkwYTNkNTEyM2E3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9tZXRhZGF0YS10
cmFuc2Zvcm0uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLTwhZG9jdHlwZSBo
dG1sPgotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
LSAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgotICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Ci0gICAgPC9oZWFkPgotICAgIDxib2R5PgotICAgICAgICA8dmlkZW8gaWQ9InZp
ZGVvMSIgYXV0b3BsYXk+PC92aWRlbz4KLSAgICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5q
cyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQ+Ci1hc3luYyBmdW5jdGlvbiB3YWl0Rm9yTWVz
c2FnZSh3b3JrZXIsIGRhdGEpCi17Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgY29uc3Qg
cmVjZWl2ZWQgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2Ug
PSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOwotICAgICAgICBpZiAoZGF0YSA9PT0g
cmVjZWl2ZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi1hc3luYyBmdW5jdGlv
biBnYXRoZXJNZXRhZGF0YShhdWRpbykKLXsKLSAgICB3b3JrZXIgPSBuZXcgV29ya2VyKCdtZXRh
ZGF0YS10cmFuc2Zvcm0td29ya2VyLmpzJyk7Ci0gICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShl
dmVudC5kYXRhKSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOwotCi0g
ICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVz
ZXJNZWRpYSh7YXVkaW86IGF1ZGlvLCB2aWRlbzogIWF1ZGlvfSk7Ci0KLSAgICBsZXQgc2VuZGVy
LCByZWNlaXZlcjsKLSAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0
VHJhbnNmb3JtKHdvcmtlciwge25hbWU6J3NlbmRlcid9KTsKLSAgICBjb25zdCByZWNlaXZlclRy
YW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZToncmVjZWl2
ZXInfSk7Ci0KLSAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0g
ICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKLSAgICAgICAg
ICAgIHBjMSA9IGZpcnN0Q29ubmVjdGlvbjsKLSAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29u
bmVjdGlvbi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRUcmFja3MoKVswXSwgbG9jYWxTdHJlYW0p
OwotICAgICAgICAgICAgc2VuZGVyLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKLSAgICAg
ICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKLSAgICAgICAgICAgIHBjMiA9IHNlY29uZENv
bm5lY3Rpb247Ci0gICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tF
dmVudCkgPT4gewotICAgICAgICAgICAgICAgIHJlY2VpdmVyID0gdHJhY2tFdmVudC5yZWNlaXZl
cjsKLSAgICAgICAgICAgICAgICByZWNlaXZlci50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9y
bTsKLSAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7Ci0gICAg
ICAgICAgICB9OwotICAgICAgICB9KTsKLSAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3Qo
IlRlc3QgdGltZWQgb3V0IiksIDUwMDApOwotICAgIH0pOwotCi0gICAgcmV0dXJuIG5ldyBQcm9t
aXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgbGV0IHNlbmRlck1ldGFkYXRhLCBz
ZW5kZXJUaW1lc3RhbXA7Ci0gICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHsK
LSAgICAgICAgICAgIGlmIChldmVudC5kYXRhLm5hbWUgPT09ICdzZW5kZXInKSB7Ci0gICAgICAg
ICAgICAgICAgc2VuZGVyTWV0YWRhdGEgPSBldmVudC5kYXRhLm1ldGFkYXRhOwotICAgICAgICAg
ICAgICAgIHNlbmRlclRpbWVzdGFtcCA9IGV2ZW50LmRhdGEudGltZXN0YW1wOwotICAgICAgICAg
ICAgfSBlbHNlIGlmIChldmVudC5kYXRhLm5hbWUgPT09ICdyZWNlaXZlcicpCi0gICAgICAgICAg
ICAgICByZXNvbHZlKFtzZW5kZXJNZXRhZGF0YSwgc2VuZGVyVGltZXN0YW1wLCBldmVudC5kYXRh
Lm1ldGFkYXRhLCBldmVudC5kYXRhLnRpbWVzdGFtcF0pOwotICAgICAgICB9OwotICAgICAgICBz
ZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiTWV0YWRhdGEgdGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7
IAotICAgIH0pOwotfQotCi1wcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKLSAgICBjb25z
dCBbc2VuZGVyTWV0YWRhdGEsIHNlbmRlclRpbWVzdGFtcCwgcmVjZWl2ZXJNZXRhZGF0YSwgcmVj
ZWl2ZXJUaW1lc3RhbXBdID0gYXdhaXQgZ2F0aGVyTWV0YWRhdGEodHJ1ZSk7Ci0KLSAgICBhc3Nl
cnRfZXF1YWxzKHNlbmRlclRpbWVzdGFtcCwgcmVjZWl2ZXJUaW1lc3RhbXAsICJ0aW1lc3RhbXAi
KTsKLSAgICBhc3NlcnRfdHJ1ZSghIXNlbmRlck1ldGFkYXRhLnN5bmNocm9uaXphdGlvblNvdXJj
ZSwgInNzcmMiKTsKLSAgICBhc3NlcnRfZXF1YWxzKHNlbmRlck1ldGFkYXRhLnN5bmNocm9uaXph
dGlvblNvdXJjZSwgcmVjZWl2ZXJNZXRhZGF0YS5zeW5jaHJvbml6YXRpb25Tb3VyY2UsICJzc3Jj
Iik7Ci0gICAgYXNzZXJ0X2FycmF5X2VxdWFscyhzZW5kZXJNZXRhZGF0YS5jb250cmlidXRpbmdT
b3VyY2VzLCByZWNlaXZlck1ldGFkYXRhLmNvbnRyaWJ1dGluZ1NvdXJjZXMsICJjc3JjIik7Ci19
LCAiYXVkaW8gZXhjaGFuZ2Ugd2l0aCB0cmFuc2Zvcm0iKTsKLQotcHJvbWlzZV90ZXN0KGFzeW5j
ICh0ZXN0KSA9PiB7Ci0gICAgY29uc3QgW3NlbmRlck1ldGFkYXRhLCBzZW5kZXJUaW1lc3RhbXAs
IHJlY2VpdmVyTWV0YWRhdGEsIHJlY2VpdmVyVGltZXN0YW1wXSA9IGF3YWl0IGdhdGhlck1ldGFk
YXRhKHRydWUpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhzZW5kZXJUaW1lc3RhbXAsIHJlY2VpdmVy
VGltZXN0YW1wLCAidGltZXN0YW1wIik7Ci0gICAgYXNzZXJ0X3RydWUoISFzZW5kZXJNZXRhZGF0
YS5zeW5jaHJvbml6YXRpb25Tb3VyY2UsICJzc3JjIik7Ci0gICAgYXNzZXJ0X2VxdWFscyhzZW5k
ZXJNZXRhZGF0YS5zeW5jaHJvbml6YXRpb25Tb3VyY2UsIHJlY2VpdmVyTWV0YWRhdGEuc3luY2hy
b25pemF0aW9uU291cmNlLCAic3NyYyIpOwotICAgIGFzc2VydF9hcnJheV9lcXVhbHMoc2VuZGVy
TWV0YWRhdGEuY29udHJpYnV0aW5nU291cmNlcywgcmVjZWl2ZXJNZXRhZGF0YS5jb250cmlidXRp
bmdTb3VyY2VzLCAiY3NyYyIpOwotICAgIGFzc2VydF9lcXVhbHMoc2VuZGVyTWV0YWRhdGEuaGVp
Z2h0LCByZWNlaXZlck1ldGFkYXRhLmhlaWdodCwgImhlaWdodCIpOwotICAgIGFzc2VydF9lcXVh
bHMoc2VuZGVyTWV0YWRhdGEud2lkdGgsIHJlY2VpdmVyTWV0YWRhdGEud2lkdGgsICJ3aWR0aCIp
OwotICAgIGFzc2VydF9lcXVhbHMoc2VuZGVyTWV0YWRhdGEuc3BhdGlhbEluZGV4LCByZWNlaXZl
ck1ldGFkYXRhLnNwYXRpYWxJbmRleCwgInNwYXRpYWxJbmRleCIpOwotICAgIGFzc2VydF9lcXVh
bHMoc2VuZGVyTWV0YWRhdGEudGVtcG9yYWxJbmRleCwgcmVjZWl2ZXJNZXRhZGF0YS50ZW1wb3Jh
bEluZGV4LCAidGVtcG9yYWxJbmRleCIpOwotfSwgInZpZGVvIGV4Y2hhbmdlIHdpdGggdHJhbnNm
b3JtIik7Ci0gICAgICAgIDwvc2NyaXB0PgotICAgIDwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanMKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDVlYTk5Y2QyYmY3MzJjZjA1ODJhMmFlZjExOTlhMTQ5NzM4MjY5
ZWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanMKKysrIC9kZXYvbnVsbApA
QCAtMSwyNSArMCwwIEBACi1vbnJ0Y3RyYW5zZm9ybSA9IChldmVudCkgPT4gewotICAgIGNvbnN0
IHRyYW5zZm9ybWVyID0gZXZlbnQudHJhbnNmb3JtZXI7Ci0gICAgdHJhbnNmb3JtZXIub3B0aW9u
cy5wb3J0Lm9ubWVzc2FnZSA9IChldmVudCkgPT4gdHJhbnNmb3JtZXIub3B0aW9ucy5wb3J0LnBv
c3RNZXNzYWdlKGV2ZW50LmRhdGEpOwotCi0gICAgc2VsZi5wb3N0TWVzc2FnZSgic3RhcnRlZCIp
OwotICAgIHRyYW5zZm9ybWVyLnJlYWRlciA9IHRyYW5zZm9ybWVyLnJlYWRhYmxlLmdldFJlYWRl
cigpOwotICAgIHRyYW5zZm9ybWVyLndyaXRlciA9IHRyYW5zZm9ybWVyLndyaXRhYmxlLmdldFdy
aXRlcigpOwotCi0gICAgZnVuY3Rpb24gcHJvY2Vzcyh0cmFuc2Zvcm1lcikKLSAgICB7Ci0gICAg
ICAgIHRyYW5zZm9ybWVyLnJlYWRlci5yZWFkKCkudGhlbihjaHVuayA9PiB7Ci0gICAgICAgICAg
ICBpZiAoY2h1bmsuZG9uZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBp
ZiAoY2h1bmsudmFsdWUgaW5zdGFuY2VvZiBSVENFbmNvZGVkVmlkZW9GcmFtZSkKLSAgICAgICAg
ICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKCJ2aWRlbyBjaHVuayIpOwotICAgICAgICAgICAgZWxz
ZSBpZiAoY2h1bmsudmFsdWUgaW5zdGFuY2VvZiBSVENFbmNvZGVkQXVkaW9GcmFtZSkKLSAgICAg
ICAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKCJhdWRpbyBjaHVuayIpOwotICAgICAgICAgICAg
dHJhbnNmb3JtZXIud3JpdGVyLndyaXRlKGNodW5rLnZhbHVlKTsKLSAgICAgICAgICAgIHByb2Nl
c3ModHJhbnNmb3JtZXIpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBwcm9jZXNzKHRyYW5z
Zm9ybWVyKTsKLX07Ci1zZWxmLnBvc3RNZXNzYWdlKCJyZWdpc3RlcmVkIik7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1pbi13b3JrZXIu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLWluLXdv
cmtlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjgwMjYwNTJiZmE5N2Jk
MWExYjhmZDlkNzcxNjgyMTg5Y2QxZmQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNm
b3JtLWluLXdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotPCFkb2N0
eXBlIGh0bWw+Ci08aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAgPG1ldGEgY2hhcnNldD0idXRm
LTgiPgotICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KLSAgICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgICAgIDx2aWRlbyBp
ZD0idmlkZW8xIiBjb250cm9scyBhdXRvcGxheT48L3ZpZGVvPgotICAgICAgICA8c2NyaXB0IHNy
YyA9InJvdXRpbmVzLmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdD4KLWFzeW5jIGZ1bmN0
aW9uIHdhaXRGb3JNZXNzYWdlKHdvcmtlciwgZGF0YSkKLXsKLSAgICB3aGlsZSAodHJ1ZSkgewot
ICAgICAgICBjb25zdCByZWNlaXZlZCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29y
a2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7Ci0gICAgICAg
IGlmIChkYXRhID09PSByZWNlaXZlZCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0K
LXByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewotICAgIHdvcmtlciA9IG5ldyBXb3JrZXIo
J3NmcmFtZS10cmFuc2Zvcm0uanMnKTsKLSAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21p
c2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50
LmRhdGEpKTsKLSAgICBhc3NlcnRfZXF1YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7Ci0gICAgY29u
c3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSh7IHZpZGVvOiB0cnVlIH0pOwotCi0gICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7Ci0gICAgY29u
c3Qgc2VuZGVyVHJhbnNmb3JtID0gbmV3IFNGcmFtZVRyYW5zZm9ybSh7IGNvbXBhdGliaWxpdHlN
b2RlOiAiSDI2NCIgfSk7Ci0gICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRw
U2NyaXB0VHJhbnNmb3JtKHdvcmtlciwgIlNGcmFtZVJUQ1J0cFRyYW5zZm9ybSIpOwotCi0gICAg
Y29uc3Qga2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIG5ldyBVaW50
OEFycmF5KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYsIDIxOSwgMjQsIDkz
LCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZlQml0cyIsICJkZXJp
dmVLZXkiXSk7Ci0gICAgc2VuZGVyVHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5KTsKLQot
ICAgIGNvbnN0IHN0YXJ0ZWRQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIu
b25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKLQotICAgIGNvbnN0
IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAg
ICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4gewotICAgICAgICAgICAg
cGMxID0gZmlyc3RDb25uZWN0aW9uOwotICAgICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0
aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldFRyYWNrcygpWzBdLCBsb2NhbFN0cmVhbSk7Ci0g
ICAgICAgICAgICBzZW5kZXIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtOwotICAgICAgICB9
LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4gewotICAgICAgICAgICAgcGMyID0gc2Vjb25kQ29ubmVj
dGlvbjsKLSAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50
KSA9PiB7Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOwot
ICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOwot
ICAgICAgICAgICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsKLSAgICAgICAg
ICAgIH07Ci0gICAgICAgIH0pOwotICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVz
dCB0aW1lZCBvdXQiKSwgNTAwMCk7Ci0gICAgfSk7Ci0KLSAgICB2aWRlbzEuc3JjT2JqZWN0ID0g
c3RyZWFtOwotICAgIGF3YWl0IHZpZGVvMS5wbGF5KCk7Ci19LCAidmlkZW8gZXhjaGFuZ2Ugd2l0
aCBTRnJhbWUgdHJhbnNmb3JtIGluIHdvcmtlciIpOwotICAgICAgICA8L3NjcmlwdD4KLSAgICA8
L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMv
c2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJsZS1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0tcmVhZGFibGUtY3Jhc2guaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZmRlZTVhNjJhMTRkZWMyOTEzNjJhNGNjZTY1N2JmNDdkZDNi
ZDAwOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJsZS1jcmFzaC5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPGlmcmFtZSBzcmM9Ii4iIGlkPSJm
cmFtZSI+PC9pZnJhbWU+Ci08c2NyaXB0Pgotb25sb2FkID0gYXN5bmMgKCkgPT4gewotaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotY29uc3QgdHJh
bnNmb3JtID0gbmV3IGZyYW1lLmNvbnRlbnRXaW5kb3cuU0ZyYW1lVHJhbnNmb3JtOwotZnJhbWUu
cmVtb3ZlKCk7Ci10cmFuc2Zvcm0ucmVhZGFibGU7Ci19Ci08L3NjcmlwdD4KLTxwPlRoaXMgdGVz
dCBzaG91bGQgbm90IGNyYXNoLjwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJy
dGMvc2ZyYW1lLXRyYW5zZm9ybS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
ZTQwMTM1YjA0ZjRmODViYTY3OWIwMTgwMjhiMzk1NDI1N2MxN2E4Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0
Yy9zZnJhbWUtdHJhbnNmb3JtLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAot
PCFkb2N0eXBlIGh0bWw+Ci08aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAgPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgotICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLSAgICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgICAgIDxz
Y3JpcHQ+Ci0KLXByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewotICAgIGNvbnN0IHBjID0g
bmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Ci0gICAgY29uc3Qgc2VuZGVyVHJhbnNmb3JtID0gbmV3
IFNGcmFtZVRyYW5zZm9ybSgpOwotICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNmb3JtID0gbmV3IFNG
cmFtZVRyYW5zZm9ybSgpOwotICAgIGNvbnN0IHNlbmRlcjEgPSBwYy5hZGRUcmFuc2NlaXZlcign
YXVkaW8nKS5zZW5kZXI7Ci0gICAgY29uc3Qgc2VuZGVyMiA9IHBjLmFkZFRyYW5zY2VpdmVyKCd2
aWRlbycpLnNlbmRlcjsKLSAgICBjb25zdCByZWNlaXZlcjEgPSBwYy5nZXRSZWNlaXZlcnMoKVsw
XTsKLSAgICBjb25zdCByZWNlaXZlcjIgPSBwYy5nZXRSZWNlaXZlcnMoKVsxXTsKLQotICAgIHNl
bmRlcjEudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtOwotICAgIHJlY2VpdmVyMS50cmFuc2Zv
cm0gPSByZWNlaXZlclRyYW5zZm9ybTsKLSAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0
YXRlRXJyb3IiLCAoKSA9PiBzZW5kZXIyLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybSk7Ci0g
ICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4gcmVjZWl2ZXIy
LnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtKTsKLQotICAgIHNlbmRlcjEudHJhbnNmb3Jt
ID0gc2VuZGVyVHJhbnNmb3JtOwotICAgIHJlY2VpdmVyMS50cmFuc2Zvcm0gPSByZWNlaXZlclRy
YW5zZm9ybTsKLQotICAgIHNlbmRlcjEudHJhbnNmb3JtID0gbnVsbDsKLSAgICByZWNlaXZlcjEu
dHJhbnNmb3JtID0gbnVsbDsKLX0sICJDYW5ub3QgcmV1c2UgYXR0YWNoZWQgdHJhbnNmb3JtcyIp
OwotCi10ZXN0KCgpID0+IHsKLSAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgU0ZyYW1l
VHJhbnNmb3JtKCk7Ci0KLSAgICBhc3NlcnRfdHJ1ZShzZW5kZXJUcmFuc2Zvcm0ucmVhZGFibGUg
aW5zdGFuY2VvZiBSZWFkYWJsZVN0cmVhbSk7Ci0gICAgYXNzZXJ0X3RydWUoc2VuZGVyVHJhbnNm
b3JtLndyaXRhYmxlIGluc3RhbmNlb2YgV3JpdGFibGVTdHJlYW0pOwotfSwgIlNGcmFtZVRyYW5z
Zm9ybSBleHBvc2VzIHJlYWRhYmxlIGFuZCB3cml0YWJsZSIpOwotCi1wcm9taXNlX3Rlc3QoYXN5
bmMgKHRlc3QpID0+IHsKLSAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwot
ICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oKTsKLSAgICBj
b25zdCByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oKTsKLSAgICBjb25z
dCBzZW5kZXIxID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJykuc2VuZGVyOwotICAgIGNvbnN0
IHNlbmRlcjIgPSBwYy5hZGRUcmFuc2NlaXZlcigndmlkZW8nKS5zZW5kZXI7Ci0gICAgY29uc3Qg
cmVjZWl2ZXIxID0gcGMuZ2V0UmVjZWl2ZXJzKClbMF07Ci0gICAgY29uc3QgcmVjZWl2ZXIyID0g
cGMuZ2V0UmVjZWl2ZXJzKClbMV07Ci0KLSAgICBhc3NlcnRfZmFsc2Uoc2VuZGVyVHJhbnNmb3Jt
LnJlYWRhYmxlLmxvY2tlZCwgInNlbmRlciByZWFkYWJsZSBiZWZvcmUiKTsKLSAgICBhc3NlcnRf
ZmFsc2Uoc2VuZGVyVHJhbnNmb3JtLndyaXRhYmxlLmxvY2tlZCwgInNlbmRlciB3cml0YWJsZSBi
ZWZvcmUiKTsKLSAgICBhc3NlcnRfZmFsc2UocmVjZWl2ZXJUcmFuc2Zvcm0ucmVhZGFibGUubG9j
a2VkLCAicmVjZWl2ZXIgcmVhZGFibGUgYmVmb3JlIik7Ci0gICAgYXNzZXJ0X2ZhbHNlKHJlY2Vp
dmVyVHJhbnNmb3JtLndyaXRhYmxlLmxvY2tlZCwgInJlY2VpdmVyIHdyaXRhYmxlIGJlZm9yZSIp
OwotCi0gICAgc2VuZGVyMS50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07Ci0gICAgcmVjZWl2
ZXIxLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOwotCi0gICAgYXNzZXJ0X3RydWUoc2Vu
ZGVyVHJhbnNmb3JtLnJlYWRhYmxlLmxvY2tlZCwgInNlbmRlciByZWFkYWJsZSBkdXJpbmciKTsK
LSAgICBhc3NlcnRfdHJ1ZShzZW5kZXJUcmFuc2Zvcm0ud3JpdGFibGUubG9ja2VkLCAic2VuZGVy
IHdyaXRhYmxlIGR1cmluZyIpOwotICAgIGFzc2VydF90cnVlKHJlY2VpdmVyVHJhbnNmb3JtLnJl
YWRhYmxlLmxvY2tlZCwgInJlY2VpdmVyIHJlYWRhYmxlIGR1cmluZyIpOwotICAgIGFzc2VydF90
cnVlKHJlY2VpdmVyVHJhbnNmb3JtLndyaXRhYmxlLmxvY2tlZCwgInJlY2VpdmVyIHdyaXRhYmxl
IGR1cmluZyIpOwotCi0gICAgc2VuZGVyMS50cmFuc2Zvcm0gPSBudWxsOwotICAgIHJlY2VpdmVy
MS50cmFuc2Zvcm0gPSBudWxsOwotCi0gICAgYXNzZXJ0X3RydWUoc2VuZGVyVHJhbnNmb3JtLnJl
YWRhYmxlLmxvY2tlZCwgInNlbmRlciByZWFkYWJsZSBhZnRlciIpOwotICAgIGFzc2VydF90cnVl
KHNlbmRlclRyYW5zZm9ybS53cml0YWJsZS5sb2NrZWQsICJzZW5kZXIgd3JpdGFibGUgYWZ0ZXIi
KTsKLSAgICBhc3NlcnRfdHJ1ZShyZWNlaXZlclRyYW5zZm9ybS5yZWFkYWJsZS5sb2NrZWQsICJy
ZWNlaXZlciByZWFkYWJsZSBhZnRlciIpOwotICAgIGFzc2VydF90cnVlKHJlY2VpdmVyVHJhbnNm
b3JtLndyaXRhYmxlLmxvY2tlZCwgInJlY2VpdmVyIHdyaXRhYmxlIGFmdGVyIik7Ci19LCAicmVh
ZGFibGUvd3JpdGFibGUgYXJlIGxvY2tlZCB3aGVuIGF0dGFjaGVkIGFuZCBhZnRlciBiZWluZyBh
dHRhY2hlZCIpOwotCi1wcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKLSAgICBjb25zdCBr
ZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3IiwgbmV3IFVpbnQ4QXJyYXko
WzE0MywgNzcsIDQzLCAxMCwgNzIsIDE5LCAzNywgNjcsIDIzNiwgMjE5LCAyNCwgOTMsIDI2LCAx
NjUsIDkxLCAxNzhdKSwgIkhLREYiLCBmYWxzZSwgWyJkZXJpdmVCaXRzIiwgImRlcml2ZUtleSJd
KTsKLQotICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oeyBy
b2xlIDogJ2VuY3J5cHQnLCBhdXRoZW50aWNhdGlvblNpemU6IDEwIH0pOwotICAgIHNlbmRlclRy
YW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleSk7Ci0KLSAgICBjb25zdCByZWNlaXZlclRyYW5z
Zm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oeyByb2xlIDogJ2RlY3J5cHQnLCBhdXRoZW50aWNh
dGlvblNpemU6IDEwIH0pOwotICAgIHJlY2VpdmVyVHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXko
a2V5KTsKLQotICAgIGNvbnN0IHdyaXRlciA9IHNlbmRlclRyYW5zZm9ybS53cml0YWJsZS5nZXRX
cml0ZXIoKTsKLSAgICBjb25zdCByZWFkZXIgPSByZWNlaXZlclRyYW5zZm9ybS5yZWFkYWJsZS5n
ZXRSZWFkZXIoKTsKLQotICAgIHNlbmRlclRyYW5zZm9ybS5yZWFkYWJsZS5waXBlVG8ocmVjZWl2
ZXJUcmFuc2Zvcm0ud3JpdGFibGUpOwotCi0gICAgY29uc3Qgc2VudCA9IG5ldyBBcnJheUJ1ZmZl
cig4KTsKLSAgICBjb25zdCB2aWV3ID0gbmV3IEludDhBcnJheShzZW50KTsKLSAgICBmb3IgKGxl
dCBjcHRyID0gMDsgY3B0ciA8IHNlbnQuYnl0ZUxlbmd0aDsgKytjcHRyKQotICAgICAgICB2aWV3
W2NwdHJdID0gY3B0cjsKLQotICAgIHdyaXRlci53cml0ZShzZW50KTsKLSAgICBjb25zdCByZWNl
aXZlZCA9IGF3YWl0IHJlYWRlci5yZWFkKCk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKHJlY2VpdmVk
LnZhbHVlLmJ5dGVMZW5ndGgsIDgpOwotICAgIGNvbnN0IHZpZXcyID0gbmV3IEludDhBcnJheShy
ZWNlaXZlZC52YWx1ZSk7Ci0gICAgZm9yIChsZXQgY3B0ciA9IDA7IGNwdHIgPCBzZW50LmJ5dGVM
ZW5ndGg7ICsrY3B0cikKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3MltjcHRyXSwgdmlld1tj
cHRyXSk7Ci19LCAiU0ZyYW1lIHdpdGggYXJyYXkgYnVmZmVyIC0gYXV0aGVudGljYXRpb24gc2l6
ZSAxMCIpOwotCi1wcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKLSAgICBjb25zdCBrZXkg
PSBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3IiwgbmV3IFVpbnQ4QXJyYXkoWzE0
MywgNzcsIDQzLCAxMCwgNzIsIDE5LCAzNywgNjcsIDIzNiwgMjE5LCAyNCwgOTMsIDI2LCAxNjUs
IDkxLCAxNzhdKSwgIkhLREYiLCBmYWxzZSwgWyJkZXJpdmVCaXRzIiwgImRlcml2ZUtleSJdKTsK
LQotICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oeyByb2xl
IDogJ2VuY3J5cHQnLCBhdXRoZW50aWNhdGlvblNpemU6IDEwIH0pOwotICAgIGNvbnN0IHNlbmRl
cldyaXRlciA9IHNlbmRlclRyYW5zZm9ybS53cml0YWJsZS5nZXRXcml0ZXIoKTsKLSAgICBjb25z
dCBzZW5kZXJSZWFkZXIgPSBzZW5kZXJUcmFuc2Zvcm0ucmVhZGFibGUuZ2V0UmVhZGVyKCk7Ci0K
LSAgICBjb25zdCByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oeyByb2xl
IDogJ2RlY3J5cHQnLCBhdXRoZW50aWNhdGlvblNpemU6IDEwIH0pOwotICAgIGNvbnN0IHJlY2Vp
dmVyV3JpdGVyID0gcmVjZWl2ZXJUcmFuc2Zvcm0ud3JpdGFibGUuZ2V0V3JpdGVyKCk7Ci0gICAg
Y29uc3QgcmVjZWl2ZXJSZWFkZXIgPSByZWNlaXZlclRyYW5zZm9ybS5yZWFkYWJsZS5nZXRSZWFk
ZXIoKTsKLQotICAgIHNlbmRlclRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleSk7Ci0gICAg
cmVjZWl2ZXJUcmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkpOwotCi0gICAgY29uc3QgY2h1
bmsgPSBuZXcgQXJyYXlCdWZmZXIoOCk7Ci0KLSAgICAvLyBkZWNyeXB0aW9uIHNob3VsZCBmYWls
LCBsZWFkaW5nIHRvIGFuIGVtcHR5IGFycmF5IGJ1ZmZlci4KLSAgICBhd2FpdCByZWNlaXZlcldy
aXRlci53cml0ZShjaHVuayk7Ci0gICAgbGV0IHJlY2VpdmVkID0gYXdhaXQgcmVjZWl2ZXJSZWFk
ZXIucmVhZCgpOwotICAgIGFzc2VydF9lcXVhbHMocmVjZWl2ZWQudmFsdWUuYnl0ZUxlbmd0aCwg
MCk7Ci0KLSAgICAvLyBXZSB3cml0ZSBhZ2FpbiBidXQgdGhpcyB0aW1lIHdpdGggYSBjaHVuayB3
ZSBjYW4gZGVjcnlwdC4KLSAgICBhd2FpdCBzZW5kZXJXcml0ZXIud3JpdGUoY2h1bmspOwotICAg
IGNvbnN0IGVuY3J5cHRlZCA9IGF3YWl0IHNlbmRlclJlYWRlci5yZWFkKCk7Ci0gICAgYXdhaXQg
cmVjZWl2ZXJXcml0ZXIud3JpdGUoZW5jcnlwdGVkLnZhbHVlKTsKLSAgICByZWNlaXZlZCA9IGF3
YWl0IHJlY2VpdmVyUmVhZGVyLnJlYWQoKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlY2VpdmVkLnZh
bHVlLmJ5dGVMZW5ndGgsIDgpOwotfSwgIlNGcmFtZSBkZWNyeXB0aW9uIHdpdGggYXJyYXkgYnVm
ZmVyIHRoYXQgaXMgdG9vIHNtYWxsIik7Ci0KLXByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4g
ewotICAgIGNvbnN0IGtleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLCBu
ZXcgVWludDhBcnJheShbMTQzLCA3NywgNDMsIDEwLCA3MiwgMTksIDM3LCA2NywgMjM2LCAyMTks
IDI0LCA5MywgMjYsIDE2NSwgOTEsIDE3OF0pLCAiSEtERiIsIGZhbHNlLCBbImRlcml2ZUJpdHMi
LCAiZGVyaXZlS2V5Il0pOwotCi0gICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgU0Zy
YW1lVHJhbnNmb3JtKHsgcm9sZSA6ICdkZWNyeXB0JywgYXV0aGVudGljYXRpb25TaXplOiAxMCB9
KTsKLSAgICBjb25zdCByZWNlaXZlcldyaXRlciA9IHJlY2VpdmVyVHJhbnNmb3JtLndyaXRhYmxl
LmdldFdyaXRlcigpOwotICAgIHJlY2VpdmVyVHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5
KTsKLQotICAgIC8vIGRlY3J5cHRpb24gc2hvdWxkIGZhaWwsIGxlYWRpbmcgdG8gZXJyb3Jpbmcg
dGhlIHRyYW5zZm9ybS4KLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfanModGVzdCwgVHlwZUVy
cm9yLCByZWNlaXZlcldyaXRlci53cml0ZSh7IH0pKTsKLSAgICBhd2FpdCBwcm9taXNlX3JlamVj
dHNfanModGVzdCwgVHlwZUVycm9yLCByZWNlaXZlcldyaXRlci5jbG9zZWQpOwotfSwgIlNGcmFt
ZSB0cmFuc2Zvcm0gZ2V0cyBlcnJvcmVkIGlmIHRyeWluZyB0byBwcm9jZXNzIHVuZXhwZWN0ZWQg
dmFsdWUgdHlwZXMiKTsKLQotICAgICAgICA8L3NjcmlwdD4KLSAgICA8L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9y
bS5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTdjZjBhMzhhYTA4NTlmYTZlZThhZjAxZmRh
YjVmOTRiNWJlYjE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLmpzCisrKyAv
ZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1vbnJ0Y3RyYW5zZm9ybSA9IChldmVudCkgPT4gewot
ICAgIGNvbnN0IHNmcmFtZVRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oeyByb2xlIDog
ImRlY3J5cHQiLCBhdXRoZW50aWNhdGlvblNpemU6ICIxMCIsIGNvbXBhdGliaWxpdHlNb2RlOiAi
SDI2NCIgfSk7Ci0gICAgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIG5ldyBVaW50OEFy
cmF5KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYsIDIxOSwgMjQsIDkzLCAy
NiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZlQml0cyIsICJkZXJpdmVL
ZXkiXSkudGhlbihrZXkgPT4gc2ZyYW1lVHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5KSk7
Ci0gICAgY29uc3QgdHJhbnNmb3JtZXIgPSBldmVudC50cmFuc2Zvcm1lcjsKLSAgICB0cmFuc2Zv
cm1lci5yZWFkYWJsZS5waXBlVGhyb3VnaChzZnJhbWVUcmFuc2Zvcm0pLnBpcGVUbyh0cmFuc2Zv
cm1lci53cml0YWJsZSk7Ci19Ci1zZWxmLnBvc3RNZXNzYWdlKCJyZWdpc3RlcmVkIik7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvd2VicnRjLWxhdGUtdHJhbnNmb3Jt
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvd2VicnRjLWxhdGUtdHJhbnNmb3Jt
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZmYxNzM3ODNiNDIzYTUzMzFm
YTUyNTQ1MDRkZGNjNDU1OTFiMmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy1sYXRlLXRyYW5z
Zm9ybS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotPCFkb2N0eXBlIGh0bWw+
Ci08aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgotICAg
ICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci0g
ICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLSAgICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgICAgIDx2aWRlbyBjb250cm9scyBp
ZD0idmlkZW8iIGF1dG9wbGF5PjwvdmlkZW8+Ci0gICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcyIg
d2lkdGg9IjY0MCIgaGVpZ2h0PSI0ODAiPjwvY2FudmFzPgotICAgICAgICA8c2NyaXB0IHNyYyA9
InJvdXRpbmVzLmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdD4KLWZ1bmN0aW9uIGdyYWJG
cmFtZURhdGEoeCwgeSwgdywgaCkKLXsKLSAgICBjYW52YXMud2lkdGggPSB2aWRlby52aWRlb1dp
ZHRoOwotICAgIGNhbnZhcy5oZWlnaHQgPSB2aWRlby52aWRlb0hlaWdodDsKLQotICAgIGNhbnZh
cy5nZXRDb250ZXh0KCcyZCcpLmRyYXdJbWFnZSh2aWRlbywgeCwgeSwgdywgaCwgeCwgeSwgdywg
aCk7Ci0gICAgcmV0dXJuIGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLmdldEltYWdlRGF0YSh4LCB5
LCB3LCBoKS5kYXRhOwotfQotCi1mdW5jdGlvbiBnZXRDaXJjbGVJbWFnZURhdGEoKQotewotICAg
IHJldHVybiBncmFiRnJhbWVEYXRhKDQ1MCwgMTAwLCAxNTAsIDEwMCk7Ci19Ci0KLWFzeW5jIGZ1
bmN0aW9uIGNoZWNrVmlkZW9Jc1VwZGF0ZWQoc2hvdWxkQmVVcGRhdGVkLCBjb3VudCwgcmVmZXJl
bmNlRGF0YSkKLXsKLSAgICBpZiAoY291bnQgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgY291bnQg
PSAwOwotICAgIGVsc2UgaWYgKGNvdW50ID49IDIwKQotICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZWplY3QoImNoZWNrVmlkZW9Jc1VwZGF0ZWQgdGltZWQgb3V0IDoiICsgc2hvdWxkQmVVcGRhdGVk
ICsgIiAiICsgY291bnQpOwotCi0gICAgaWYgKHJlZmVyZW5jZURhdGEgPT09IHVuZGVmaW5lZCkK
LSAgICAgICAgcmVmZXJlbmNlRGF0YSA9IGdldENpcmNsZUltYWdlRGF0YSgpOwotCi0gICAgYXdh
aXQgd2FpdEZvcigyMDApOwotICAgIGNvbnN0IG5ld0RhdGEgPSBnZXRDaXJjbGVJbWFnZURhdGEo
KTsKLQotICAgIGlmIChzaG91bGRCZVVwZGF0ZWQgPT09IChKU09OLnN0cmluZ2lmeShyZWZlcmVu
Y2VEYXRhKSAhPT0gSlNPTi5zdHJpbmdpZnkobmV3RGF0YSkpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBhd2FpdCBjaGVja1ZpZGVvSXNVcGRhdGVkKHNob3VsZEJlVXBkYXRlZCwgKytjb3VudCwg
bmV3RGF0YSk7Ci19Ci0KLXByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewotICAgIGNvbnN0
IGxvY2FsU3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEo
e3ZpZGVvOiB0cnVlfSk7Ci0gICAgY29uc3Qgc2VuZGVyVHJhbnNmb3JtID0gbmV3IFNGcmFtZVRy
YW5zZm9ybSh7IGNvbXBhdGliaWxpdHlNb2RlOiAiSDI2NCIgfSk7Ci0gICAgY29uc3QgcmVjZWl2
ZXJUcmFuc2Zvcm0gPSBuZXcgU0ZyYW1lVHJhbnNmb3JtKHsgY29tcGF0aWJpbGl0eU1vZGU6ICJI
MjY0IiB9KTsKLSAgICBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3IiwgbmV3IFVp
bnQ4QXJyYXkoWzE0MywgNzcsIDQzLCAxMCwgNzIsIDE5LCAzNywgNjcsIDIzNiwgMjE5LCAyNCwg
OTMsIDI2LCAxNjUsIDkxLCAxNzhdKSwgIkhLREYiLCBmYWxzZSwgWyJkZXJpdmVCaXRzIiwgImRl
cml2ZUtleSJdKS50aGVuKGtleSA9PiB7Ci0gICAgICAgc2VuZGVyVHJhbnNmb3JtLnNldEVuY3J5
cHRpb25LZXkoa2V5KTsKLSAgICAgICByZWNlaXZlclRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5
KGtleSk7Ci0gICAgfSk7Ci0KLSAgICBsZXQgc2VuZGVyLCByZWNlaXZlcjsKLSAgICBjb25zdCBz
dHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAg
IGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKLSAgICAgICAgICAgIHBj
MSA9IGZpcnN0Q29ubmVjdGlvbjsKLSAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29ubmVjdGlv
bi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLCBsb2NhbFN0cmVhbSk7
Ci0gICAgICAgICAgICBzZW5kZXIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtOwotICAgICAg
ICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4gewotICAgICAgICAgICAgcGMyID0gc2Vjb25kQ29u
bmVjdGlvbjsKLSAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2
ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVy
OwotICAgICAgICAgICAgICAgIC8vIHdlIGRvIG5vdCBzZXQgdGhlIHJlY2VpdmVyIHRyYW5zZm9y
bSBoZXJlOwotICAgICAgICAgICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsK
LSAgICAgICAgICAgIH07Ci0gICAgICAgIH0sIHsKLSAgICAgICAgICAgIG9ic2VydmVPZmZlciA6
IChvZmZlcikgPT4gewotICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVzID0gb2ZmZXIuc2RwLnNw
bGl0KCdcclxuJyk7Ci0gICAgICAgICAgICAgICAgY29uc3QgaDI2NExpbmVzID0gbGluZXMuZmls
dGVyKGxpbmUgPT4gbGluZS5pbmRleE9mKCJhPWZtdHAiKSA9PT0gMCAmJiBsaW5lLmluZGV4T2Yo
IjQyZTAxZiIpICE9PSAtMSk7Ci0gICAgICAgICAgICAgICAgY29uc3QgYmFzZWxpbmVOdW1iZXIg
PSBoMjY0TGluZXNbMF0uc3Vic3RyaW5nKDYpLnNwbGl0KCcgJylbMF07Ci0gICAgICAgICAgICAg
ICAgb2ZmZXIuc2RwID0gbGluZXMuZmlsdGVyKGxpbmUgPT4gewotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gKGxpbmUuaW5kZXhPZignYT1mbXRwJykgPT09IC0xICYmIGxpbmUuaW5kZXhPZign
YT1ydGNwLWZiJykgPT09IC0xICYmIGxpbmUuaW5kZXhPZignYT1ydHBtYXAnKSA9PT0gLTEpIHx8
IGxpbmUuaW5kZXhPZihiYXNlbGluZU51bWJlcikgIT09IC0xOwotICAgICAgICAgICAgICAgIH0p
LmpvaW4oJ1xyXG4nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgICAgIHNldFRp
bWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKLSAgICB9KTsKLQot
ICAgIHZpZGVvLnNyY09iamVjdCA9IHN0cmVhbTsKLSAgICB2aWRlby5wbGF5KCk7Ci0KLSAgICAv
LyBXZSBzZXQgdGhlIHJlY2VpdmVyIHRyYW5zZm9ybSBoZXJlIHNvIHRoYXQgdGhlIGRlY29kZXIg
cHJvYmFibHkgdHJpZWQgdG8gZGVjb2RlIHNmcmFtZSBjb250ZW50LgotICAgIHNldFRpbWVvdXQo
KCkgPT4gcmVjZWl2ZXIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm0sIDUwKTsKLSAgICBh
d2FpdCBjaGVja1ZpZGVvSXNVcGRhdGVkKHRydWUpOwotfSwgInZpZGVvIGV4Y2hhbmdlIHdpdGgg
bGF0ZSByZWNlaXZlciB0cmFuc2Zvcm0iKTsKLSAgICAgICAgPC9zY3JpcHQ+Ci0gICAgPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dlYnJ0
Yy10cmFuc2Zvcm0uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy93ZWJydGMtdHJh
bnNmb3JtLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxMmQyOTRjYTVmZGY1
MzFmZDEyOTEyZWQ5MjhiNWFkYTMxZjJjZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFu
c2Zvcm0uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCwwIEBACi08IWRvY3R5cGUgaHRt
bD4KLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci0g
ICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
LSAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgotICAgIDwvaGVhZD4KLSAgICA8Ym9keT4KLSAgICAgICAgPHZpZGVvIGlkPSJ2aWRl
bzEiIGF1dG9wbGF5PjwvdmlkZW8+Ci0gICAgICAgIDx2aWRlbyBpZD0idmlkZW8yIiBhdXRvcGxh
eT48L3ZpZGVvPgotICAgICAgICA8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpzIj48L3NjcmlwdD4K
LSAgICAgICAgPHNjcmlwdD4KLWFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JNZXNzYWdlKHdvcmtlciwg
ZGF0YSkKLXsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBjb25zdCByZWNlaXZlZCA9IGF3
YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4g
cmVzb2x2ZShldmVudC5kYXRhKSk7Ci0gICAgICAgIGlmIChkYXRhID09PSByZWNlaXZlZCkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLXByb21pc2VfdGVzdChhc3luYyAodGVzdCkg
PT4gewotICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3NjcmlwdC10cmFuc2Zvcm0uanMnKTsKLSAg
ICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNz
YWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKLSAgICBhc3NlcnRfZXF1YWxz
KGRhdGEsICJyZWdpc3RlcmVkIik7Ci0KLSAgICBjb25zdCBjaGFubmVsID0gbmV3IE1lc3NhZ2VD
aGFubmVsOwotICAgIGNvbnN0IHRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0o
d29ya2VyLCB7bmFtZTonTW9ja1JUQ1J0cFRyYW5zZm9ybScsIHBvcnQ6IGNoYW5uZWwucG9ydDJ9
LCBbY2hhbm5lbC5wb3J0Ml0pOwotICAgIHRyYW5zZm9ybS5wb3J0ID0gY2hhbm5lbC5wb3J0MTsK
LSAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0cmFuc2Zvcm0ucG9y
dC5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOwotICAgIHRyYW5z
Zm9ybS5wb3J0LnBvc3RNZXNzYWdlKCJ0ZXN0Iik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBw
cm9taXNlLCAidGVzdCIpOwotfSwgInRyYW5zZm9ybSBtZXNzYWdpbmciKTsKLQotcHJvbWlzZV90
ZXN0KGFzeW5jICh0ZXN0KSA9PiB7Ci0gICAgd29ya2VyID0gbmV3IFdvcmtlcignc2NyaXB0LXRy
YW5zZm9ybS5qcycpOwotICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZl
ID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOwot
ICAgIGFzc2VydF9lcXVhbHMoZGF0YSwgInJlZ2lzdGVyZWQiKTsKLQotICAgIGNvbnN0IHBjID0g
bmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Ci0KLSAgICBjb25zdCBzZW5kZXJDaGFubmVsID0gbmV3
IE1lc3NhZ2VDaGFubmVsOwotICAgIGNvbnN0IHJlY2VpdmVyQ2hhbm5lbCA9IG5ldyBNZXNzYWdl
Q2hhbm5lbDsKLSAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJh
bnNmb3JtKHdvcmtlciwge25hbWU6J01vY2tSVENSdHBUcmFuc2Zvcm0nLCBwb3J0OiBzZW5kZXJD
aGFubmVsLnBvcnQyfSwgW3NlbmRlckNoYW5uZWwucG9ydDJdKTsKLSAgICBjb25zdCByZWNlaXZl
clRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZTonTW9j
a1JUQ1J0cFRyYW5zZm9ybScsIHBvcnQ6IHJlY2VpdmVyQ2hhbm5lbC5wb3J0Mn0sIFtyZWNlaXZl
ckNoYW5uZWwucG9ydDJdKTsKLSAgICBzZW5kZXJUcmFuc2Zvcm0ucG9ydCA9IHNlbmRlckNoYW5u
ZWwucG9ydDE7Ci0gICAgcmVjZWl2ZXJUcmFuc2Zvcm0ucG9ydCA9IHJlY2VpdmVyQ2hhbm5lbC5w
b3J0MTsKLQotICAgIGNvbnN0IHNlbmRlcjEgPSBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8nKS5z
ZW5kZXI7Ci0gICAgY29uc3Qgc2VuZGVyMiA9IHBjLmFkZFRyYW5zY2VpdmVyKCd2aWRlbycpLnNl
bmRlcjsKLSAgICBjb25zdCByZWNlaXZlcjEgPSBwYy5nZXRSZWNlaXZlcnMoKVswXTsKLSAgICBj
b25zdCByZWNlaXZlcjIgPSBwYy5nZXRSZWNlaXZlcnMoKVsxXTsKLQotICAgIHNlbmRlcjEudHJh
bnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtOwotICAgIHJlY2VpdmVyMS50cmFuc2Zvcm0gPSByZWNl
aXZlclRyYW5zZm9ybTsKLSAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3Ii
LCAoKSA9PiBzZW5kZXIyLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybSk7Ci0gICAgYXNzZXJ0
X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4gcmVjZWl2ZXIyLnRyYW5zZm9y
bSA9IHJlY2VpdmVyVHJhbnNmb3JtKTsKLQotICAgIHNlbmRlcjEudHJhbnNmb3JtID0gc2VuZGVy
VHJhbnNmb3JtOwotICAgIHJlY2VpdmVyMS50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsK
LQotICAgIHNlbmRlcjEudHJhbnNmb3JtID0gbnVsbDsKLSAgICByZWNlaXZlcjEudHJhbnNmb3Jt
ID0gbnVsbDsKLX0sICJDYW5ub3QgcmV1c2UgYXR0YWNoZWQgdHJhbnNmb3JtcyIpOwotCi1wcm9t
aXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKLSAgICB3b3JrZXIgPSBuZXcgV29ya2VyKCdzY3Jp
cHQtdHJhbnNmb3JtLmpzJyk7Ci0gICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJl
c29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRh
KSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOwotICAgIGNvbnN0IGxv
Y2FsU3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1
ZGlvOiB0cnVlfSk7Ci0KLSAgICBjb25zdCBzZW5kZXJDaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFu
bmVsOwotICAgIGNvbnN0IHJlY2VpdmVyQ2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAg
ICBsZXQgc2VuZGVyLCByZWNlaXZlcjsKLSAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcg
UlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25hbWU6J01vY2tSVENSdHBUcmFuc2Zvcm0n
LCBwb3J0OiBzZW5kZXJDaGFubmVsLnBvcnQyfSwgW3NlbmRlckNoYW5uZWwucG9ydDJdKTsKLSAg
ICBjb25zdCByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29y
a2VyLCB7bmFtZTonTW9ja1JUQ1J0cFRyYW5zZm9ybScsIHBvcnQ6IHJlY2VpdmVyQ2hhbm5lbC5w
b3J0Mn0sIFtyZWNlaXZlckNoYW5uZWwucG9ydDJdKTsKLSAgICBzZW5kZXJUcmFuc2Zvcm0ucG9y
dCA9IHNlbmRlckNoYW5uZWwucG9ydDE7Ci0gICAgcmVjZWl2ZXJUcmFuc2Zvcm0ucG9ydCA9IHJl
Y2VpdmVyQ2hhbm5lbC5wb3J0MTsKLQotICAgIGNvbnN0IHN0YXJ0ZWRQcm9taXNlID0gbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2
ZW50LmRhdGEpKTsKLQotICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNv
bHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVj
dGlvbikgPT4gewotICAgICAgICAgICAgcGMxID0gZmlyc3RDb25uZWN0aW9uOwotICAgICAgICAg
ICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldEF1ZGlv
VHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKLSAgICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0g
PSBzZW5kZXJUcmFuc2Zvcm07Ci0gICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7Ci0g
ICAgICAgICAgICBwYzIgPSBzZWNvbmRDb25uZWN0aW9uOwotICAgICAgICAgICAgc2Vjb25kQ29u
bmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICByZWNl
aXZlciA9IHRyYWNrRXZlbnQucmVjZWl2ZXI7Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJh
bnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07Ci0gICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFj
a0V2ZW50LnN0cmVhbXNbMF0pOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfSk7Ci0gICAgICAg
IHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKLSAgICB9
KTsKLQotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgc3RhcnRlZFByb21pc2UsICJzdGFydGVkIik7
Ci0KLSAgICBhd2FpdCB3YWl0Rm9yTWVzc2FnZSh3b3JrZXIsICJhdWRpbyBjaHVuayIpOwotCi0g
ICAgdmlkZW8xLnNyY09iamVjdCA9IHN0cmVhbTsKLSAgICBhd2FpdCB2aWRlbzEucGxheSgpOwot
fSwgImF1ZGlvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtIik7Ci0KLXByb21pc2VfdGVzdChhc3lu
YyAodGVzdCkgPT4gewotICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3NjcmlwdC10cmFuc2Zvcm0u
anMnKTsKLSAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3Jr
ZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKLSAgICBhc3Nl
cnRfZXF1YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7Ci0KLSAgICBjb25zdCBsb2NhbFN0cmVhbSA9
IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzogdHJ1ZX0p
OwotCi0gICAgY29uc3Qgc2VuZGVyQ2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICBj
b25zdCByZWNlaXZlckNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgbGV0IHNlbmRl
ciwgcmVjZWl2ZXI7Ci0gICAgY29uc3Qgc2VuZGVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlw
dFRyYW5zZm9ybSh3b3JrZXIsIHtuYW1lOidNb2NrUlRDUnRwVHJhbnNmb3JtJywgcG9ydDogc2Vu
ZGVyQ2hhbm5lbC5wb3J0Mn0sIFtzZW5kZXJDaGFubmVsLnBvcnQyXSk7Ci0gICAgY29uc3QgcmVj
ZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25hbWU6
J01vY2tSVENSdHBUcmFuc2Zvcm0nLCBwb3J0OiByZWNlaXZlckNoYW5uZWwucG9ydDJ9LCBbcmVj
ZWl2ZXJDaGFubmVsLnBvcnQyXSk7Ci0gICAgc2VuZGVyVHJhbnNmb3JtLnBvcnQgPSBzZW5kZXJD
aGFubmVsLnBvcnQxOwotICAgIHJlY2VpdmVyVHJhbnNmb3JtLnBvcnQgPSByZWNlaXZlckNoYW5u
ZWwucG9ydDE7Ci0KLSAgICBjb25zdCBzdGFydGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29s
dmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7
Ci0KLSAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0
KSA9PiB7Ci0gICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsK
LSAgICAgICAgICAgIHBjMSA9IGZpcnN0Q29ubmVjdGlvbjsKLSAgICAgICAgICAgIHNlbmRlciA9
IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBd
LCBsb2NhbFN0cmVhbSk7Ci0gICAgICAgICAgICBzZW5kZXIudHJhbnNmb3JtID0gc2VuZGVyVHJh
bnNmb3JtOwotICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4gewotICAgICAgICAgICAg
cGMyID0gc2Vjb25kQ29ubmVjdGlvbjsKLSAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250
cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFj
a0V2ZW50LnJlY2VpdmVyOwotICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHJl
Y2VpdmVyVHJhbnNmb3JtOwotICAgICAgICAgICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJl
YW1zWzBdKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0pOwotICAgICAgICBzZXRUaW1lb3V0
KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7Ci0gICAgfSk7Ci0KLSAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IHN0YXJ0ZWRQcm9taXNlLCAic3RhcnRlZCIpOwotCi0gICAgYXdh
aXQgd2FpdEZvck1lc3NhZ2Uod29ya2VyLCAidmlkZW8gY2h1bmsiKTsKLQotICAgIHZpZGVvMS5z
cmNPYmplY3QgPSBzdHJlYW07Ci0gICAgYXdhaXQgdmlkZW8xLnBsYXkoKTsKLX0sICJ2aWRlbyBl
eGNoYW5nZSB3aXRoIHRyYW5zZm9ybSIpOwotICAgICAgICA8L3NjcmlwdD4KLSAgICA8L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvd3JpdGUt
dHdpY2UtdHJhbnNmb3JtLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvd3JpdGUt
dHdpY2UtdHJhbnNmb3JtLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5OGI1
YTNjNTcxYTQ5MjkyZmQzMTEzYTQ4ODFiMWNlYzcwNzFlNjguLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dy
aXRlLXR3aWNlLXRyYW5zZm9ybS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAot
PCFkb2N0eXBlIGh0bWw+Ci08aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAgPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgotICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KLSAgICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgICAgIDx2
aWRlbyBpZD0idmlkZW8xIiBhdXRvcGxheT48L3ZpZGVvPgotICAgICAgICA8dmlkZW8gaWQ9InZp
ZGVvMiIgYXV0b3BsYXk+PC92aWRlbz4KLSAgICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5q
cyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQ+Ci1hc3luYyBmdW5jdGlvbiB3YWl0Rm9yTWVz
c2FnZSh3b3JrZXIsIGRhdGEpCi17Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgY29uc3Qg
cmVjZWl2ZWQgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2Ug
PSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOwotICAgICAgICBpZiAoZGF0YSA9PT0g
cmVjZWl2ZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi1wcm9taXNlX3Rlc3Qo
YXN5bmMgKHRlc3QpID0+IHsKLSAgICB3b3JrZXIgPSBuZXcgV29ya2VyKCd3cml0ZS10d2ljZS10
cmFuc2Zvcm0uanMnKTsKLSAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsK
LSAgICBhc3NlcnRfZXF1YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7Ci0KLSAgICBjb25zdCBsb2Nh
bFN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRl
bzogdHJ1ZX0pOwotCi0gICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7Ci0gICAgY29uc3Qgc2VuZGVy
VHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsIHtuYW1lOidNb2Nr
UlRDUnRwVHJhbnNmb3JtJywgc2lkZTonc2VuZGVyJywgcm9sZTonZW5jcnlwdCd9KTsKLSAgICBj
b25zdCByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2Vy
LCB7bmFtZTonTW9ja1JUQ1J0cFRyYW5zZm9ybScsIHNpZGU6J3JlY2VpdmVyJywgcm9sZTonZGVj
cnlwdCd9KTsKLQotICAgIGNvbnN0IHN0YXJ0ZWRQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsK
LQotICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3Qp
ID0+IHsKLSAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4gewot
ICAgICAgICAgICAgcGMxID0gZmlyc3RDb25uZWN0aW9uOwotICAgICAgICAgICAgc2VuZGVyID0g
Zmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0s
IGxvY2FsU3RyZWFtKTsKLSAgICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0gPSBzZW5kZXJUcmFu
c2Zvcm07Ci0gICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7Ci0gICAgICAgICAgICBw
YzIgPSBzZWNvbmRDb25uZWN0aW9uOwotICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRy
YWNrID0gKHRyYWNrRXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICByZWNlaXZlciA9IHRyYWNr
RXZlbnQucmVjZWl2ZXI7Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJhbnNmb3JtID0gcmVj
ZWl2ZXJUcmFuc2Zvcm07Ci0gICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVh
bXNbMF0pOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHNldFRpbWVvdXQo
KCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKLSAgICB9KTsKLQotICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgc3RhcnRlZFByb21pc2UsICJzdGFydGVkIik7Ci0KLSAgICB2aWRl
bzEuc3JjT2JqZWN0ID0gc3RyZWFtOwotICAgIGF3YWl0IHZpZGVvMS5wbGF5KCk7Ci19LCAidmlk
ZW8gZXhjaGFuZ2Ugd2l0aCB3cml0ZSB0d2ljZSB0cmFuc2Zvcm0iKTsKLSAgICAgICAgPC9zY3Jp
cHQ+Ci0gICAgPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2VicnRjL3dyaXRlLXR3aWNlLXRyYW5zZm9ybS5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYnJ0Yy93cml0ZS10d2ljZS10cmFuc2Zvcm0uanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDVkNDI4YzgxYjNhYTU0MzQzMTllMTBmYmVjNmEwMDc1YTdkNDBiOTguLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2VicnRjL3dyaXRlLXR3aWNlLXRyYW5zZm9ybS5qcworKysgL2Rldi9udWxsCkBAIC0xLDIy
ICswLDAgQEAKLW9ucnRjdHJhbnNmb3JtID0gKGV2ZW50KSA9PiB7Ci0gICAgY29uc3QgdHJhbnNm
b3JtZXIgPSBldmVudC50cmFuc2Zvcm1lcjsKLQotICAgIHNlbGYucG9zdE1lc3NhZ2UoInN0YXJ0
ZWQiKTsKLQotICAgIHRyYW5zZm9ybWVyLnJlYWRlciA9IHRyYW5zZm9ybWVyLnJlYWRhYmxlLmdl
dFJlYWRlcigpOwotICAgIHRyYW5zZm9ybWVyLndyaXRlciA9IHRyYW5zZm9ybWVyLndyaXRhYmxl
LmdldFdyaXRlcigpOwotICAgIGZ1bmN0aW9uIHByb2Nlc3ModHJhbnNmb3JtZXIpCi0gICAgewot
ICAgICAgICB0cmFuc2Zvcm1lci5yZWFkZXIucmVhZCgpLnRoZW4oY2h1bmsgPT4gewotICAgICAg
ICAgICAgaWYgKGNodW5rLmRvbmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
ICAgICB0cmFuc2Zvcm1lci53cml0ZXIud3JpdGUoY2h1bmsudmFsdWUpOwotICAgICAgICAgICAg
dHJhbnNmb3JtZXIud3JpdGVyLndyaXRlKGNodW5rLnZhbHVlKTsKLSAgICAgICAgICAgIHByb2Nl
c3ModHJhbnNmb3JtZXIpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBwcm9jZXNzKHRyYW5z
Zm9ybWVyKTsKLX07Ci1zZWxmLnBvc3RNZXNzYWdlKCJyZWdpc3RlcmVkIik7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNv
ZGVkLXRyYW5zZm9ybS9yb3V0aW5lcy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3JvdXRpbmVzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRkYjdmMzk2MjFjYzg5MTI4OGZlN2ZiNWIxMDdlYjlkYmYyMWZjMmEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9yb3V0aW5lcy5qcwpAQCAtMCwwICsxLDMyIEBACithc3lu
YyBmdW5jdGlvbiBjcmVhdGVDb25uZWN0aW9ucyh0ZXN0LCBzZXR1cExvY2FsQ29ubmVjdGlvbiwg
c2V0dXBSZW1vdGVDb25uZWN0aW9uLCBkb05vdENsb3NlQXV0bW9hdGljYWxseSkgeworICAgIGNv
bnN0IGxvY2FsQ29ubmVjdGlvbiA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIGNvbnN0
IHJlbW90ZUNvbm5lY3Rpb24gPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKworICAgIHJlbW90
ZUNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSAoZXZlbnQpID0+IHsgbG9jYWxDb25uZWN0aW9u
LmFkZEljZUNhbmRpZGF0ZShldmVudC5jYW5kaWRhdGUpOyB9OworICAgIGxvY2FsQ29ubmVjdGlv
bi5vbmljZWNhbmRpZGF0ZSA9IChldmVudCkgPT4geyByZW1vdGVDb25uZWN0aW9uLmFkZEljZUNh
bmRpZGF0ZShldmVudC5jYW5kaWRhdGUpOyB9OworCisgICAgYXdhaXQgc2V0dXBMb2NhbENvbm5l
Y3Rpb24obG9jYWxDb25uZWN0aW9uKTsKKyAgICBhd2FpdCBzZXR1cFJlbW90ZUNvbm5lY3Rpb24o
cmVtb3RlQ29ubmVjdGlvbik7CisKKyAgICBjb25zdCBvZmZlciA9IGF3YWl0IGxvY2FsQ29ubmVj
dGlvbi5jcmVhdGVPZmZlcigpOworICAgIGF3YWl0IGxvY2FsQ29ubmVjdGlvbi5zZXRMb2NhbERl
c2NyaXB0aW9uKG9mZmVyKTsKKyAgICBhd2FpdCByZW1vdGVDb25uZWN0aW9uLnNldFJlbW90ZURl
c2NyaXB0aW9uKG9mZmVyKTsKKworICAgIGNvbnN0IGFuc3dlciA9IGF3YWl0IHJlbW90ZUNvbm5l
Y3Rpb24uY3JlYXRlQW5zd2VyKCk7CisgICAgYXdhaXQgcmVtb3RlQ29ubmVjdGlvbi5zZXRMb2Nh
bERlc2NyaXB0aW9uKGFuc3dlcik7CisgICAgYXdhaXQgbG9jYWxDb25uZWN0aW9uLnNldFJlbW90
ZURlc2NyaXB0aW9uKGFuc3dlcik7CisKKyAgICBpZiAoIWRvTm90Q2xvc2VBdXRtb2F0aWNhbGx5
KSB7CisgICAgICAgIHRlc3QuYWRkX2NsZWFudXAoKCkgPT4geworICAgICAgICAgICAgbG9jYWxD
b25uZWN0aW9uLmNsb3NlKCk7CisgICAgICAgICAgICByZW1vdGVDb25uZWN0aW9uLmNsb3NlKCk7
CisgICAgICAgIH0pOworICAgIH0KKworICAgIHJldHVybiBbbG9jYWxDb25uZWN0aW9uLCByZW1v
dGVDb25uZWN0aW9uXTsKK30KKworZnVuY3Rpb24gd2FpdEZvcih0ZXN0LCBkdXJhdGlvbikKK3sK
KyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHRlc3Quc3RlcF90aW1lb3V0KHJl
c29sdmUsIGR1cmF0aW9uKSk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtYXVk
aW8tdHJhbnNmb3JtLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1hdWRpby10cmFuc2Zv
cm0td29ya2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjYjQzNzEzZDNhYTRkZmE3OTEwNDYwNTAwMjY3ZjY2
NGMyYjAzZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtYXVkaW8tdHJh
bnNmb3JtLXdvcmtlci5qcwpAQCAtMCwwICsxLDMwIEBACitjbGFzcyBNb2NrUlRDUnRwVHJhbnNm
b3JtZXIgeworICAgIGNvbnN0cnVjdG9yKHRyYW5zZm9ybWVyKSB7CisgICAgICAgIHRoaXMuY29u
dGV4dCA9IHRyYW5zZm9ybWVyOworICAgICAgICB0aGlzLnN0YXJ0KCk7CisgICAgfQorICAgIHN0
YXJ0KCkKKyAgICB7CisgICAgICAgIHRoaXMucmVhZGVyID0gdGhpcy5jb250ZXh0LnJlYWRhYmxl
LmdldFJlYWRlcigpOworICAgICAgICB0aGlzLndyaXRlciA9IHRoaXMuY29udGV4dC53cml0YWJs
ZS5nZXRXcml0ZXIoKTsKKyAgICAgICAgdGhpcy5wcm9jZXNzKCk7CisgICAgICAgIHRoaXMuY29u
dGV4dC5vcHRpb25zLnBvcnQucG9zdE1lc3NhZ2UoInN0YXJ0ZWQgIiArIHRoaXMuY29udGV4dC5v
cHRpb25zLm1lZGlhVHlwZSArICIgIiArIHRoaXMuY29udGV4dC5vcHRpb25zLnNpZGUpOworICAg
IH0KKworICAgIHByb2Nlc3MoKQorICAgIHsKKyAgICAgICAgdGhpcy5yZWFkZXIucmVhZCgpLnRo
ZW4oY2h1bmsgPT4geworICAgICAgICAgICAgaWYgKGNodW5rLmRvbmUpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICB0aGlzLndyaXRlci53cml0ZShjaHVuay52YWx1ZSk7
CisgICAgICAgICAgICB0aGlzLnByb2Nlc3MoKTsKKyAgICAgICAgfSk7CisgICAgfQorfTsKKwor
b25ydGN0cmFuc2Zvcm0gPSAoZXZlbnQpID0+IHsKKyAgICBuZXcgTW9ja1JUQ1J0cFRyYW5zZm9y
bWVyKGV2ZW50LnRyYW5zZm9ybWVyKTsKK307CisKK3NlbGYucG9zdE1lc3NhZ2UoInJlZ2lzdGVy
ZWQiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1hdWRpby10cmFuc2Zvcm0uaHR0
cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LWF1ZGlvLXRyYW5zZm9ybS5odHRw
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmFhN2RjN2RiODQ4YzYwMjFkNTA4NzRjNjAxODFj
N2RlODIwMTJkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1hdWRpby10
cmFuc2Zvcm0uaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCisKK1BBU1Mgc2Ny
aXB0LWF1ZGlvLXRyYW5zZm9ybQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtYXVk
aW8tdHJhbnNmb3JtLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtYXVkaW8tdHJhbnNm
b3JtLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRhMDVlNDllZjAwNWQ4Mjg3NjJlNzUxNzcwNmMy
YmY3NWM4YzMzNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1hdWRpby10
cmFuc2Zvcm0uaHR0cHMuaHRtbApAQCAtMCwwICsxLDY1IEBACis8IWRvY3R5cGUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHZpZGVvIGlkPSJ2aWRlbyIgYXV0
b3BsYXkgcGxheXNJbmxpbmU+PC92aWRlbz4KKyAgICAgICAgPHNjcmlwdCBzcmM9InJvdXRpbmVz
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KK2Z1bmN0aW9uIHdhaXRGb3JNZXNzYWdl
KHRlc3QsIHBvcnQsIGRhdGEpCit7CisgICAgbGV0IGdvdE1lc3NhZ2U7CisgICAgY29uc3QgcHJv
bWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgZ290TWVz
c2FnZSA9IHJlc29sdmU7CisgICAgICAgIHRlc3Quc3RlcF90aW1lb3V0KCgpID0+IHsgcmVqZWN0
KCJkaWQgbm90IGdldCAiICsgZGF0YSkgfSwgNTAwMCk7CisgICAgfSk7CisgICAgcG9ydC5vbm1l
c3NhZ2UgPSBldmVudCA9PiB7CisgICAgICAgaWYgKGV2ZW50LmRhdGEgPT09IGRhdGEpCisgICAg
ICAgICAgIGdvdE1lc3NhZ2UoKTsKKyAgICB9OworICAgIHJldHVybiBwcm9taXNlOworfQorCitw
cm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICB3b3JrZXIgPSBuZXcgV29ya2VyKCJz
Y3JpcHQtYXVkaW8tdHJhbnNmb3JtLXdvcmtlci5qcyIpOworICAgIGNvbnN0IGRhdGEgPSBhd2Fp
dCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJl
c29sdmUoZXZlbnQuZGF0YSkpOworICAgIGFzc2VydF9lcXVhbHMoZGF0YSwgInJlZ2lzdGVyZWQi
KTsKKworICAgIGNvbnN0IGxvY2FsU3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSk7CisKKyAgICBjb25zdCBzZW5kZXJDaGFubmVs
ID0gbmV3IE1lc3NhZ2VDaGFubmVsOworICAgIGNvbnN0IHJlY2VpdmVyQ2hhbm5lbCA9IG5ldyBN
ZXNzYWdlQ2hhbm5lbDsKKyAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtKHdvcmtlciwge25hbWU6J01vY2tSVENSdHBUcmFuc2Zvcm0nLCBtZWRpYVR5
cGU6J2F1ZGlvJywgc2lkZTonc2VuZGVyJywgcG9ydDpzZW5kZXJDaGFubmVsLnBvcnQyfSwgW3Nl
bmRlckNoYW5uZWwucG9ydDJdKTsKKyAgICBjb25zdCByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBS
VENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZTonTW9ja1JUQ1J0cFRyYW5zZm9ybScs
IG1lZGlhVHlwZTonYXVkaW8nLCBzaWRlOidyZWNlaXZlcicsIHBvcnQ6cmVjZWl2ZXJDaGFubmVs
LnBvcnQyfSwgW3JlY2VpdmVyQ2hhbm5lbC5wb3J0Ml0pOworICAgIHNlbmRlclRyYW5zZm9ybS5w
b3J0ID0gc2VuZGVyQ2hhbm5lbC5wb3J0MTsKKyAgICByZWNlaXZlclRyYW5zZm9ybS5wb3J0ID0g
cmVjZWl2ZXJDaGFubmVsLnBvcnQxOworCisgICAgcHJvbWlzZTEgPSB3YWl0Rm9yTWVzc2FnZSh0
ZXN0LCBzZW5kZXJUcmFuc2Zvcm0ucG9ydCwgInN0YXJ0ZWQgYXVkaW8gc2VuZGVyIik7CisgICAg
cHJvbWlzZTIgPSB3YWl0Rm9yTWVzc2FnZSh0ZXN0LCByZWNlaXZlclRyYW5zZm9ybS5wb3J0LCAi
c3RhcnRlZCBhdWRpbyByZWNlaXZlciIpOworCisgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmV3
IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBjcmVhdGVDb25uZWN0aW9u
cyh0ZXN0LCAoZmlyc3RDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBzZW5kZXIgPSBmaXJz
dENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSwgbG9j
YWxTdHJlYW0pOworICAgICAgICAgICAgc2VuZGVyLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9y
bTsKKyAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIHNlY29u
ZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAg
cmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOworICAgICAgICAgICAgICAgIHJlY2VpdmVy
LnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOworICAgICAgICAgICAgICAgIHJlc29sdmUo
dHJhY2tFdmVudC5zdHJlYW1zWzBdKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0pOworICAg
ICAgICB0ZXN0LnN0ZXBfdGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUw
MDApOworICAgIH0pOworCisgICAgYXdhaXQgcHJvbWlzZTE7CisgICAgYXdhaXQgcHJvbWlzZTI7
CisKKyAgICB2aWRlby5zcmNPYmplY3QgPSBzdHJlYW07CisgICAgcmV0dXJuIHZpZGVvLnBsYXko
KTsKK30pOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1l
bmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtY2hhbmdlLXRyYW5zZm9ybS13b3JrZXIuanMgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRy
YW5zZm9ybS9zY3JpcHQtY2hhbmdlLXRyYW5zZm9ybS13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODRh
N2FhYWMxODFkYjRjZTJhYmRhYzI5NWZhYTE1NTUxOTZlOWI5YQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29k
ZWQtdHJhbnNmb3JtL3NjcmlwdC1jaGFuZ2UtdHJhbnNmb3JtLXdvcmtlci5qcwpAQCAtMCwwICsx
LDM5IEBACitmdW5jdGlvbiBhcHBlbmRUb0J1ZmZlcihidWZmZXIsIHZhbHVlKSB7CisgICAgY29u
c3QgcmVzdWx0ID0gbmV3IEFycmF5QnVmZmVyKGJ1ZmZlci5ieXRlTGVuZ3RoICsgMSk7CisgICAg
Y29uc3QgYnl0ZVJlc3VsdCA9IG5ldyBVaW50OEFycmF5KHJlc3VsdCk7CisgICAgYnl0ZVJlc3Vs
dC5zZXQobmV3IFVpbnQ4QXJyYXkoYnVmZmVyKSwgMCk7CisgICAgYnl0ZVJlc3VsdFtidWZmZXIu
Ynl0ZUxlbmd0aF0gPSB2YWx1ZTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitvbnJ0Y3RyYW5z
Zm9ybSA9IChldmVudCkgPT4geworICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gZXZlbnQudHJhbnNm
b3JtZXI7CisKKyAgICB0cmFuc2Zvcm1lci5yZWFkZXIgPSB0cmFuc2Zvcm1lci5yZWFkYWJsZS5n
ZXRSZWFkZXIoKTsKKyAgICB0cmFuc2Zvcm1lci53cml0ZXIgPSB0cmFuc2Zvcm1lci53cml0YWJs
ZS5nZXRXcml0ZXIoKTsKKworICAgIGZ1bmN0aW9uIHByb2Nlc3ModHJhbnNmb3JtZXIpCisgICAg
eworICAgICAgICB0cmFuc2Zvcm1lci5yZWFkZXIucmVhZCgpLnRoZW4oY2h1bmsgPT4geworICAg
ICAgICAgICAgaWYgKGNodW5rLmRvbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgaWYgKHRyYW5zZm9ybWVyLm9wdGlvbnMubmFtZSA9PT0gJ3NlbmRlcjEnKQorICAgICAg
ICAgICAgICAgIGNodW5rLnZhbHVlLmRhdGEgPSBhcHBlbmRUb0J1ZmZlcihjaHVuay52YWx1ZS5k
YXRhLCAxKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHRyYW5zZm9ybWVyLm9wdGlvbnMubmFtZSA9
PT0gJ3NlbmRlcjInKQorICAgICAgICAgICAgICAgIGNodW5rLnZhbHVlLmRhdGEgPSBhcHBlbmRU
b0J1ZmZlcihjaHVuay52YWx1ZS5kYXRhLCAyKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIGNvbnN0IHZhbHVlID0gbmV3IFVpbnQ4QXJyYXkoY2h1bmsudmFsdWUuZGF0YSlb
Y2h1bmsudmFsdWUuZGF0YS5ieXRlTGVuZ3RoIC0gMV07CisgICAgICAgICAgICAgICAgaWYgKHZh
bHVlICE9PSAxICYmIHZhbHVlICE9PSAyKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnBvc3RN
ZXNzYWdlKCJ1bmV4cGVjdGVkIHZhbHVlOiAiICsgdmFsdWUpOworICAgICAgICAgICAgICAgIGVs
c2UgaWYgKHZhbHVlID09PSAyKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdl
KCJnb3QgdmFsdWUgMiIpOworICAgICAgICAgICAgICAgIGNodW5rLnZhbHVlLmRhdGEgPSBjaHVu
ay52YWx1ZS5kYXRhLnNsaWNlKDAsIGNodW5rLnZhbHVlLmRhdGEuYnl0ZUxlbmd0aCAtIDEpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgdHJhbnNmb3JtZXIud3JpdGVyLndyaXRlKGNodW5r
LnZhbHVlKTsKKyAgICAgICAgICAgIHByb2Nlc3ModHJhbnNmb3JtZXIpOworICAgICAgICB9KTsK
KyAgICB9CisKKyAgICBwcm9jZXNzKHRyYW5zZm9ybWVyKTsKK307CitzZWxmLnBvc3RNZXNzYWdl
KCJyZWdpc3RlcmVkIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtY2hhbmdlLXRy
YW5zZm9ybS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtY2hhbmdlLXRy
YW5zZm9ybS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNlZjQ4M2ZkOWVlY2E0ZTg5
ZjNiOWI5NTg3ZTcwNDZiNDhkMWE5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3Nj
cmlwdC1jaGFuZ2UtdHJhbnNmb3JtLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAK
KworCitQQVNTIGNoYW5nZSBzZW5kZXIgdHJhbnNmb3JtCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNm
b3JtL3NjcmlwdC1jaGFuZ2UtdHJhbnNmb3JtLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3Jp
cHQtY2hhbmdlLXRyYW5zZm9ybS5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiODc4YzVjMTk2OTEx
YjA2OTI0MWY0MTFmNjQ0YTE3NDIzODE3MzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9y
bS9zY3JpcHQtY2hhbmdlLXRyYW5zZm9ybS5odHRwcy5odG1sCkBAIC0wLDAgKzEsNTcgQEAKKzwh
ZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8dmlk
ZW8gaWQ9InZpZGVvMSIgYXV0b3BsYXkgY29udHJvbHMgcGxheXNpbmxpbmU+PC92aWRlbz4KKyAg
ICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+Cithc3luYyBmdW5jdGlvbiB3YWl0Rm9yTWVzc2FnZSh3b3JrZXIsIGRhdGEpCit7CisgICAg
d2hpbGUgKHRydWUpIHsKKyAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBhd2FpdCBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQu
ZGF0YSkpOworICAgICAgICBpZiAoZGF0YSA9PT0gcmVjZWl2ZWQpCisgICAgICAgICAgICByZXR1
cm47CisgICAgfQorfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICB3b3Jr
ZXIgPSBuZXcgV29ya2VyKCdzY3JpcHQtY2hhbmdlLXRyYW5zZm9ybS13b3JrZXIuanMnKTsKKyAg
ICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNz
YWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxz
KGRhdGEsICJyZWdpc3RlcmVkIik7CisKKyAgICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5h
dmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzogdHJ1ZX0pOworCisgICAg
bGV0IHNlbmRlciwgcmVjZWl2ZXI7CisgICAgY29uc3Qgc2VuZGVyVHJhbnNmb3JtMSA9IG5ldyBS
VENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZTonc2VuZGVyMSd9KTsKKyAgICBjb25z
dCBzZW5kZXJUcmFuc2Zvcm0yID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsIHtu
YW1lOidzZW5kZXIyJ30pOworICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0
cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsIHtuYW1lOidyZWNlaXZlcid9KTsKKworICAgIGNvbnN0
IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAg
ICAgY3JlYXRlQ29ubmVjdGlvbnModGVzdCwgKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAg
ICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldFZp
ZGVvVHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKKyAgICAgICAgICAgIGZpcnN0Q29ubmVjdGlv
bi5nZXRUcmFuc2NlaXZlcnMoKVswXS5zZXRDb2RlY1ByZWZlcmVuY2VzKFt7bWltZVR5cGU6ICJ2
aWRlby9WUDgiLCBjbG9ja1JhdGU6IDkwMDAwfV0pOworICAgICAgICAgICAgc2VuZGVyLnRyYW5z
Zm9ybSA9IHNlbmRlclRyYW5zZm9ybTE7CisgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9
PiB7CisgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkg
PT4geworICAgICAgICAgICAgICAgIHJlY2VpdmVyID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKKyAg
ICAgICAgICAgICAgICByZWNlaXZlci50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKKyAg
ICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAg
ICB9OworICAgICAgICB9KTsKKyAgICAgICAgdGVzdC5zdGVwX3RpbWVvdXQoKCkgPT4gcmVqZWN0
KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKKyAgICB9KTsKKworICAgIHZpZGVvMS5zcmNPYmpl
Y3QgPSBzdHJlYW07CisgICAgYXdhaXQgdmlkZW8xLnBsYXkoKTsKKworICAgIGNvbnN0IHVwZGF0
ZVByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZl
bnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIHNlbmRlci50cmFuc2Zvcm0gPSBzZW5k
ZXJUcmFuc2Zvcm0yOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgdXBkYXRlUHJvbWlzZSwgImdv
dCB2YWx1ZSAyIik7Cit9LCAiY2hhbmdlIHNlbmRlciB0cmFuc2Zvcm0iKTsKKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2Ny
aXB0LWxhdGUtdHJhbnNmb3JtLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3Njcmlw
dC1sYXRlLXRyYW5zZm9ybS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc3MWJmMWM2
YTZhMmZlMDQyNGUyYTE3OWU3MTY2N2QzMDIyOWEzMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJh
bnNmb3JtL3NjcmlwdC1sYXRlLXRyYW5zZm9ybS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw0IEBACisKKworUEFTUyB2aWRlbyBleGNoYW5nZSB3aXRoIGxhdGUgcmVjZWl2ZXIgdHJhbnNm
b3JtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1sYXRlLXRyYW5zZm9ybS5odHRw
cy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJy
dGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LWxhdGUtdHJhbnNmb3JtLmh0dHBzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjlhZDBlMTk5OTI1Mjc1ODkzZWQ2YzczM2Q2YzA1YmRlNzAzMjg4NgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1sYXRlLXRyYW5zZm9ybS5odHRwcy5odG1s
CkBAIC0wLDAgKzEsOTAgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5PgorICAgICAgICA8dmlkZW8gY29udHJvbHMgaWQ9InZpZGVvIiBhdXRvcGxheT48L3Zp
ZGVvPgorICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI2NDAiIGhlaWdodD0iNDgw
Ij48L2NhbnZhcz4KKyAgICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CitmdW5jdGlvbiBncmFiRnJhbWVEYXRhKHgsIHksIHcsIGgpCit7
CisgICAgY2FudmFzLndpZHRoID0gdmlkZW8udmlkZW9XaWR0aDsKKyAgICBjYW52YXMuaGVpZ2h0
ID0gdmlkZW8udmlkZW9IZWlnaHQ7CisKKyAgICBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5kcmF3
SW1hZ2UodmlkZW8sIHgsIHksIHcsIGgsIHgsIHksIHcsIGgpOworICAgIHJldHVybiBjYW52YXMu
Z2V0Q29udGV4dCgnMmQnKS5nZXRJbWFnZURhdGEoeCwgeSwgdywgaCkuZGF0YTsKK30KKworZnVu
Y3Rpb24gZ2V0Q2lyY2xlSW1hZ2VEYXRhKCkKK3sKKyAgICByZXR1cm4gZ3JhYkZyYW1lRGF0YSg0
NTAsIDEwMCwgMTUwLCAxMDApOworfQorCithc3luYyBmdW5jdGlvbiBjaGVja1ZpZGVvSXNVcGRh
dGVkKHRlc3QsIHNob3VsZEJlVXBkYXRlZCwgY291bnQsIHJlZmVyZW5jZURhdGEpCit7CisgICAg
aWYgKGNvdW50ID09PSB1bmRlZmluZWQpCisgICAgICAgIGNvdW50ID0gMDsKKyAgICBlbHNlIGlm
IChjb3VudCA+PSAyMCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJjaGVja1ZpZGVv
SXNVcGRhdGVkIHRpbWVkIG91dCA6IiArIHNob3VsZEJlVXBkYXRlZCArICIgIiArIGNvdW50KTsK
KworICAgIGlmIChyZWZlcmVuY2VEYXRhID09PSB1bmRlZmluZWQpCisgICAgICAgIHJlZmVyZW5j
ZURhdGEgPSBnZXRDaXJjbGVJbWFnZURhdGEoKTsKKworICAgIGF3YWl0IHdhaXRGb3IodGVzdCwg
MjAwKTsKKyAgICBjb25zdCBuZXdEYXRhID0gZ2V0Q2lyY2xlSW1hZ2VEYXRhKCk7CisKKyAgICBp
ZiAoc2hvdWxkQmVVcGRhdGVkID09PSAoSlNPTi5zdHJpbmdpZnkocmVmZXJlbmNlRGF0YSkgIT09
IEpTT04uc3RyaW5naWZ5KG5ld0RhdGEpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXdhaXQg
Y2hlY2tWaWRlb0lzVXBkYXRlZCh0ZXN0LCBzaG91bGRCZVVwZGF0ZWQsICsrY291bnQsIG5ld0Rh
dGEpOworfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCBsb2Nh
bFN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRl
bzogdHJ1ZX0pOworICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zv
cm0oeyBjb21wYXRpYmlsaXR5TW9kZTogIkgyNjQiIH0pOworICAgIGNvbnN0IHJlY2VpdmVyVHJh
bnNmb3JtID0gbmV3IFNGcmFtZVRyYW5zZm9ybSh7IGNvbXBhdGliaWxpdHlNb2RlOiAiSDI2NCIg
fSk7CisgICAgYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIG5ldyBVaW50OEFy
cmF5KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYsIDIxOSwgMjQsIDkzLCAy
NiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZlQml0cyIsICJkZXJpdmVL
ZXkiXSkudGhlbihrZXkgPT4geworICAgICAgIHNlbmRlclRyYW5zZm9ybS5zZXRFbmNyeXB0aW9u
S2V5KGtleSk7CisgICAgICAgcmVjZWl2ZXJUcmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkp
OworICAgIH0pOworCisgICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7CisgICAgY29uc3Qgc3RyZWFt
ID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBjcmVh
dGVDb25uZWN0aW9ucyh0ZXN0LCAoZmlyc3RDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBw
YzEgPSBmaXJzdENvbm5lY3Rpb247CisgICAgICAgICAgICBzZW5kZXIgPSBmaXJzdENvbm5lY3Rp
b24uYWRkVHJhY2sobG9jYWxTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSwgbG9jYWxTdHJlYW0p
OworICAgICAgICAgICAgc2VuZGVyLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAgICAg
ICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIHBjMiA9IHNlY29uZENv
bm5lY3Rpb247CisgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tF
dmVudCkgPT4geworICAgICAgICAgICAgICAgIHJlY2VpdmVyID0gdHJhY2tFdmVudC5yZWNlaXZl
cjsKKyAgICAgICAgICAgICAgICAvLyB3ZSBkbyBub3Qgc2V0IHRoZSByZWNlaXZlciB0cmFuc2Zv
cm0gaGVyZTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7
CisgICAgICAgICAgICB9OworICAgICAgICB9LCB7CisgICAgICAgICAgICBvYnNlcnZlT2ZmZXIg
OiAob2ZmZXIpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBsaW5lcyA9IG9mZmVyLnNkcC5z
cGxpdCgnXHJcbicpOworICAgICAgICAgICAgICAgIGNvbnN0IGgyNjRMaW5lcyA9IGxpbmVzLmZp
bHRlcihsaW5lID0+IGxpbmUuaW5kZXhPZigiYT1mbXRwIikgPT09IDAgJiYgbGluZS5pbmRleE9m
KCI0MmUwMWYiKSAhPT0gLTEpOworICAgICAgICAgICAgICAgIGNvbnN0IGJhc2VsaW5lTnVtYmVy
ID0gaDI2NExpbmVzWzBdLnN1YnN0cmluZyg2KS5zcGxpdCgnICcpWzBdOworICAgICAgICAgICAg
ICAgIG9mZmVyLnNkcCA9IGxpbmVzLmZpbHRlcihsaW5lID0+IHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIChsaW5lLmluZGV4T2YoJ2E9Zm10cCcpID09PSAtMSAmJiBsaW5lLmluZGV4T2Yo
J2E9cnRjcC1mYicpID09PSAtMSAmJiBsaW5lLmluZGV4T2YoJ2E9cnRwbWFwJykgPT09IC0xKSB8
fCBsaW5lLmluZGV4T2YoYmFzZWxpbmVOdW1iZXIpICE9PSAtMTsKKyAgICAgICAgICAgICAgICB9
KS5qb2luKCdcclxuJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICB0ZXN0
LnN0ZXBfdGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDApOworICAg
IH0pOworCisgICAgdmlkZW8uc3JjT2JqZWN0ID0gc3RyZWFtOworICAgIHZpZGVvLnBsYXkoKTsK
KworICAgIC8vIFdlIHNldCB0aGUgcmVjZWl2ZXIgdHJhbnNmb3JtIGhlcmUgc28gdGhhdCB0aGUg
ZGVjb2RlciBwcm9iYWJseSB0cmllZCB0byBkZWNvZGUgc2ZyYW1lIGNvbnRlbnQuCisgICAgdGVz
dC5zdGVwX3RpbWVvdXQoKCkgPT4gcmVjZWl2ZXIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zv
cm0sIDUwKTsKKyAgICBhd2FpdCBjaGVja1ZpZGVvSXNVcGRhdGVkKHRlc3QsIHRydWUpOworfSwg
InZpZGVvIGV4Y2hhbmdlIHdpdGggbGF0ZSByZWNlaXZlciB0cmFuc2Zvcm0iKTsKKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0v
c2NyaXB0LW1ldGFkYXRhLXRyYW5zZm9ybS13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQt
bWV0YWRhdGEtdHJhbnNmb3JtLXdvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wM2JhMWY0ZWU2ZTA5NzZh
NjhkNjA3ZGU5ODI0ZDJmZDIzZGFhY2QwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0v
c2NyaXB0LW1ldGFkYXRhLXRyYW5zZm9ybS13b3JrZXIuanMKQEAgLTAsMCArMSwyNCBAQAorb25y
dGN0cmFuc2Zvcm0gPSAoZXZlbnQpID0+IHsKKyAgICBjb25zdCB0cmFuc2Zvcm1lciA9IGV2ZW50
LnRyYW5zZm9ybWVyOworCisgICAgdHJhbnNmb3JtZXIucmVhZGVyID0gdHJhbnNmb3JtZXIucmVh
ZGFibGUuZ2V0UmVhZGVyKCk7CisgICAgdHJhbnNmb3JtZXIud3JpdGVyID0gdHJhbnNmb3JtZXIu
d3JpdGFibGUuZ2V0V3JpdGVyKCk7CisKKyAgICBsZXQgaXNGaXJzdEZyYW1lID0gdHJ1ZTsKKyAg
ICBmdW5jdGlvbiBwcm9jZXNzKHRyYW5zZm9ybWVyKQorICAgIHsKKyAgICAgICAgdHJhbnNmb3Jt
ZXIucmVhZGVyLnJlYWQoKS50aGVuKGNodW5rID0+IHsKKyAgICAgICAgICAgIGlmIChjaHVuay5k
b25lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKGlzRmlyc3RG
cmFtZSkgeworICAgICAgICAgICAgICAgIGlzRmlyc3RGcmFtZSA9IGZhbHNlOworICAgICAgICAg
ICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoeyBuYW1lOiB0cmFuc2Zvcm1lci5vcHRpb25zLm5hbWUs
IHRpbWVzdGFtcDogY2h1bmsudmFsdWUudGltZXN0YW1wLCBtZXRhZGF0YTogY2h1bmsudmFsdWUu
Z2V0TWV0YWRhdGEoKSB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRyYW5zZm9ybWVy
LndyaXRlci53cml0ZShjaHVuay52YWx1ZSk7CisgICAgICAgICAgICBwcm9jZXNzKHRyYW5zZm9y
bWVyKTsKKyAgICAgICAgfSk7CisgICAgfQorICAgIHByb2Nlc3ModHJhbnNmb3JtZXIpOworfTsK
K3NlbGYucG9zdE1lc3NhZ2UoInJlZ2lzdGVyZWQiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3Jt
L3NjcmlwdC1tZXRhZGF0YS10cmFuc2Zvcm0uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zv
cm0vc2NyaXB0LW1ldGFkYXRhLXRyYW5zZm9ybS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmE4ZjUxYjNjODAwYzVkN2FjNDkzZDcwMzMwMGFjZDY4Mjc4ZjlmOAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
LWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1tZXRhZGF0YS10cmFuc2Zvcm0uaHR0cHMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCisKK1BBU1MgYXVkaW8gZXhjaGFuZ2Ugd2l0aCB0cmFu
c2Zvcm0KK1BBU1MgdmlkZW8gZXhjaGFuZ2Ugd2l0aCB0cmFuc2Zvcm0KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2Rl
ZC10cmFuc2Zvcm0vc2NyaXB0LW1ldGFkYXRhLXRyYW5zZm9ybS5odHRwcy5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFu
c2Zvcm0vc2NyaXB0LW1ldGFkYXRhLXRyYW5zZm9ybS5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4
ZTJiMTI4OTk2NmQxMjE2ZWEwYmVmZDYxNmIzNmIwMDMxMzc3OTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNv
ZGVkLXRyYW5zZm9ybS9zY3JpcHQtbWV0YWRhdGEtdHJhbnNmb3JtLmh0dHBzLmh0bWwKQEAgLTAs
MCArMSw4NSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAg
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+
CisgICAgICAgIDx2aWRlbyBpZD0idmlkZW8xIiBhdXRvcGxheT48L3ZpZGVvPgorICAgICAgICA8
c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KK2Fz
eW5jIGZ1bmN0aW9uIHdhaXRGb3JNZXNzYWdlKHdvcmtlciwgZGF0YSkKK3sKKyAgICB3aGlsZSAo
dHJ1ZSkgeworICAgICAgICBjb25zdCByZWNlaXZlZCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29s
dmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7
CisgICAgICAgIGlmIChkYXRhID09PSByZWNlaXZlZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICB9Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGdhdGhlck1ldGFkYXRhKHRlc3QsIGF1ZGlvKQorewor
ICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3NjcmlwdC1tZXRhZGF0YS10cmFuc2Zvcm0td29ya2Vy
LmpzJyk7CisgICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29y
a2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisgICAgYXNz
ZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOworCisgICAgY29uc3QgbG9jYWxTdHJlYW0g
PSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IGF1ZGlv
LCB2aWRlbzogIWF1ZGlvfSk7CisKKyAgICBsZXQgc2VuZGVyLCByZWNlaXZlcjsKKyAgICBjb25z
dCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25h
bWU6J3NlbmRlcid9KTsKKyAgICBjb25zdCByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBT
Y3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZToncmVjZWl2ZXInfSk7CisKKyAgICBhd2FpdCBu
ZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGNyZWF0ZUNvbm5lY3Rp
b25zKHRlc3QsIChmaXJzdENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIHBjMSA9IGZpcnN0
Q29ubmVjdGlvbjsKKyAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFj
ayhsb2NhbFN0cmVhbS5nZXRUcmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOworICAgICAgICAgICAg
c2VuZGVyLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAgICAgICAgfSwgKHNlY29uZENv
bm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIHBjMiA9IHNlY29uZENvbm5lY3Rpb247CisgICAg
ICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4geworICAg
ICAgICAgICAgICAgIHJlY2VpdmVyID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKKyAgICAgICAgICAg
ICAgICByZWNlaXZlci50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKKyAgICAgICAgICAg
ICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9OworICAg
ICAgICB9KTsKKyAgICAgICAgdGVzdC5zdGVwX3RpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRp
bWVkIG91dCIpLCA1MDAwKTsKKyAgICB9KTsKKworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVz
b2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGxldCBzZW5kZXJNZXRhZGF0YSwgc2VuZGVyVGlt
ZXN0YW1wOworICAgICAgICB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiB7CisgICAgICAg
ICAgICBpZiAoZXZlbnQuZGF0YS5uYW1lID09PSAnc2VuZGVyJykgeworICAgICAgICAgICAgICAg
IHNlbmRlck1ldGFkYXRhID0gZXZlbnQuZGF0YS5tZXRhZGF0YTsKKyAgICAgICAgICAgICAgICBz
ZW5kZXJUaW1lc3RhbXAgPSBldmVudC5kYXRhLnRpbWVzdGFtcDsKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAoZXZlbnQuZGF0YS5uYW1lID09PSAncmVjZWl2ZXInKQorICAgICAgICAgICAgICAgcmVz
b2x2ZShbc2VuZGVyTWV0YWRhdGEsIHNlbmRlclRpbWVzdGFtcCwgZXZlbnQuZGF0YS5tZXRhZGF0
YSwgZXZlbnQuZGF0YS50aW1lc3RhbXBdKTsKKyAgICAgICAgfTsKKyAgICAgICAgdGVzdC5zdGVw
X3RpbWVvdXQoKCkgPT4gcmVqZWN0KCJNZXRhZGF0YSB0ZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsK
KyAgICB9KTsKK30KKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3Qg
W3NlbmRlck1ldGFkYXRhLCBzZW5kZXJUaW1lc3RhbXAsIHJlY2VpdmVyTWV0YWRhdGEsIHJlY2Vp
dmVyVGltZXN0YW1wXSA9IGF3YWl0IGdhdGhlck1ldGFkYXRhKHRlc3QsIHRydWUpOworCisgICAg
YXNzZXJ0X2VxdWFscyhzZW5kZXJUaW1lc3RhbXAsIHJlY2VpdmVyVGltZXN0YW1wLCAidGltZXN0
YW1wIik7CisgICAgYXNzZXJ0X3RydWUoISFzZW5kZXJNZXRhZGF0YS5zeW5jaHJvbml6YXRpb25T
b3VyY2UsICJzc3JjIik7CisgICAgYXNzZXJ0X2VxdWFscyhzZW5kZXJNZXRhZGF0YS5zeW5jaHJv
bml6YXRpb25Tb3VyY2UsIHJlY2VpdmVyTWV0YWRhdGEuc3luY2hyb25pemF0aW9uU291cmNlLCAi
c3NyYyIpOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoc2VuZGVyTWV0YWRhdGEuY29udHJpYnV0
aW5nU291cmNlcywgcmVjZWl2ZXJNZXRhZGF0YS5jb250cmlidXRpbmdTb3VyY2VzLCAiY3NyYyIp
OworfSwgImF1ZGlvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtIik7CisKK3Byb21pc2VfdGVzdChh
c3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IFtzZW5kZXJNZXRhZGF0YSwgc2VuZGVyVGltZXN0
YW1wLCByZWNlaXZlck1ldGFkYXRhLCByZWNlaXZlclRpbWVzdGFtcF0gPSBhd2FpdCBnYXRoZXJN
ZXRhZGF0YSh0ZXN0LCB0cnVlKTsKKworICAgIGFzc2VydF9lcXVhbHMoc2VuZGVyVGltZXN0YW1w
LCByZWNlaXZlclRpbWVzdGFtcCwgInRpbWVzdGFtcCIpOworICAgIGFzc2VydF90cnVlKCEhc2Vu
ZGVyTWV0YWRhdGEuc3luY2hyb25pemF0aW9uU291cmNlLCAic3NyYyIpOworICAgIGFzc2VydF9l
cXVhbHMoc2VuZGVyTWV0YWRhdGEuc3luY2hyb25pemF0aW9uU291cmNlLCByZWNlaXZlck1ldGFk
YXRhLnN5bmNocm9uaXphdGlvblNvdXJjZSwgInNzcmMiKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHNlbmRlck1ldGFkYXRhLmNvbnRyaWJ1dGluZ1NvdXJjZXMsIHJlY2VpdmVyTWV0YWRhdGEu
Y29udHJpYnV0aW5nU291cmNlcywgImNzcmMiKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNlbmRlck1l
dGFkYXRhLmhlaWdodCwgcmVjZWl2ZXJNZXRhZGF0YS5oZWlnaHQsICJoZWlnaHQiKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHNlbmRlck1ldGFkYXRhLndpZHRoLCByZWNlaXZlck1ldGFkYXRhLndpZHRo
LCAid2lkdGgiKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNlbmRlck1ldGFkYXRhLnNwYXRpYWxJbmRl
eCwgcmVjZWl2ZXJNZXRhZGF0YS5zcGF0aWFsSW5kZXgsICJzcGF0aWFsSW5kZXgiKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHNlbmRlck1ldGFkYXRhLnRlbXBvcmFsSW5kZXgsIHJlY2VpdmVyTWV0YWRh
dGEudGVtcG9yYWxJbmRleCwgInRlbXBvcmFsSW5kZXgiKTsKK30sICJ2aWRlbyBleGNoYW5nZSB3
aXRoIHRyYW5zZm9ybSIpOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtdHJhbnNmb3JtLXdvcmtlci5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQt
dHJhbnNmb3JtL3NjcmlwdC10cmFuc2Zvcm0td29ya2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlYTk5Y2Qy
YmY3MzJjZjA1ODJhMmFlZjExOTlhMTQ5NzM4MjY5ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRy
YW5zZm9ybS9zY3JpcHQtdHJhbnNmb3JtLXdvcmtlci5qcwpAQCAtMCwwICsxLDI1IEBACitvbnJ0
Y3RyYW5zZm9ybSA9IChldmVudCkgPT4geworICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gZXZlbnQu
dHJhbnNmb3JtZXI7CisgICAgdHJhbnNmb3JtZXIub3B0aW9ucy5wb3J0Lm9ubWVzc2FnZSA9IChl
dmVudCkgPT4gdHJhbnNmb3JtZXIub3B0aW9ucy5wb3J0LnBvc3RNZXNzYWdlKGV2ZW50LmRhdGEp
OworCisgICAgc2VsZi5wb3N0TWVzc2FnZSgic3RhcnRlZCIpOworICAgIHRyYW5zZm9ybWVyLnJl
YWRlciA9IHRyYW5zZm9ybWVyLnJlYWRhYmxlLmdldFJlYWRlcigpOworICAgIHRyYW5zZm9ybWVy
LndyaXRlciA9IHRyYW5zZm9ybWVyLndyaXRhYmxlLmdldFdyaXRlcigpOworCisgICAgZnVuY3Rp
b24gcHJvY2Vzcyh0cmFuc2Zvcm1lcikKKyAgICB7CisgICAgICAgIHRyYW5zZm9ybWVyLnJlYWRl
ci5yZWFkKCkudGhlbihjaHVuayA9PiB7CisgICAgICAgICAgICBpZiAoY2h1bmsuZG9uZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAoY2h1bmsudmFsdWUgaW5zdGFu
Y2VvZiBSVENFbmNvZGVkVmlkZW9GcmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLnBvc3RNZXNz
YWdlKCJ2aWRlbyBjaHVuayIpOworICAgICAgICAgICAgZWxzZSBpZiAoY2h1bmsudmFsdWUgaW5z
dGFuY2VvZiBSVENFbmNvZGVkQXVkaW9GcmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLnBvc3RN
ZXNzYWdlKCJhdWRpbyBjaHVuayIpOworICAgICAgICAgICAgdHJhbnNmb3JtZXIud3JpdGVyLndy
aXRlKGNodW5rLnZhbHVlKTsKKyAgICAgICAgICAgIHByb2Nlc3ModHJhbnNmb3JtZXIpOworICAg
ICAgICB9KTsKKyAgICB9CisKKyAgICBwcm9jZXNzKHRyYW5zZm9ybWVyKTsKK307CitzZWxmLnBv
c3RNZXNzYWdlKCJyZWdpc3RlcmVkIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQt
dHJhbnNmb3JtLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC10cmFuc2Zv
cm0uaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmOWQ1NmVlODVlNjBlNDcxOGRmNmQw
MWMzMTMxYzExNDU0NGU1ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQt
dHJhbnNmb3JtLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKKworCitQQVNTIHRy
YW5zZm9ybSBtZXNzYWdpbmcKK1BBU1MgQ2Fubm90IHJldXNlIGF0dGFjaGVkIHRyYW5zZm9ybXMK
K1BBU1MgYXVkaW8gZXhjaGFuZ2Ugd2l0aCB0cmFuc2Zvcm0KK1BBU1MgdmlkZW8gZXhjaGFuZ2Ug
d2l0aCB0cmFuc2Zvcm0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LXRyYW5zZm9y
bS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LXRyYW5zZm9ybS5odHRwcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI5ZWRkOGFmOTQwMDkxZWVkZmRlMDc0MTExZGY0ZWFjMzM0M2MyYWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtdHJhbnNmb3JtLmh0dHBzLmh0bWwKQEAg
LTAsMCArMSwxNDggQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5PgorICAgICAgICA8dmlkZW8gaWQ9InZpZGVvMSIgYXV0b3BsYXk+PC92aWRlbz4KKyAgICAg
ICAgPHZpZGVvIGlkPSJ2aWRlbzIiIGF1dG9wbGF5PjwvdmlkZW8+CisgICAgICAgIDxzY3JpcHQg
c3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorYXN5bmMgZnVu
Y3Rpb24gd2FpdEZvck1lc3NhZ2Uod29ya2VyLCBkYXRhKQoreworICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgIGNvbnN0IHJlY2VpdmVkID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3
b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICAg
ICAgaWYgKGRhdGEgPT09IHJlY2VpdmVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KK30K
KworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgd29ya2VyID0gbmV3IFdvcmtl
cignc2NyaXB0LXRyYW5zZm9ybS13b3JrZXIuanMnKTsKKyAgICBjb25zdCBkYXRhID0gYXdhaXQg
bmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNv
bHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7
CisKKyAgICBjb25zdCBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOworICAgIGNvbnN0IHRy
YW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZTonTW9ja1JU
Q1J0cFRyYW5zZm9ybScsIHBvcnQ6IGNoYW5uZWwucG9ydDJ9LCBbY2hhbm5lbC5wb3J0Ml0pOwor
ICAgIHRyYW5zZm9ybS5wb3J0ID0gY2hhbm5lbC5wb3J0MTsKKyAgICBjb25zdCBwcm9taXNlID0g
bmV3IFByb21pc2UocmVzb2x2ZSA9PiB0cmFuc2Zvcm0ucG9ydC5vbm1lc3NhZ2UgPSAoZXZlbnQp
ID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIHRyYW5zZm9ybS5wb3J0LnBvc3RNZXNzYWdl
KCJ0ZXN0Iik7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBwcm9taXNlLCAidGVzdCIpOworfSwg
InRyYW5zZm9ybSBtZXNzYWdpbmciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7
CisgICAgd29ya2VyID0gbmV3IFdvcmtlcignc2NyaXB0LXRyYW5zZm9ybS13b3JrZXIuanMnKTsK
KyAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25t
ZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7CisKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29u
bmVjdGlvbigpOworCisgICAgY29uc3Qgc2VuZGVyQ2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5l
bDsKKyAgICBjb25zdCByZWNlaXZlckNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CisgICAg
Y29uc3Qgc2VuZGVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIs
IHtuYW1lOidNb2NrUlRDUnRwVHJhbnNmb3JtJywgcG9ydDogc2VuZGVyQ2hhbm5lbC5wb3J0Mn0s
IFtzZW5kZXJDaGFubmVsLnBvcnQyXSk7CisgICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBu
ZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25hbWU6J01vY2tSVENSdHBUcmFuc2Zv
cm0nLCBwb3J0OiByZWNlaXZlckNoYW5uZWwucG9ydDJ9LCBbcmVjZWl2ZXJDaGFubmVsLnBvcnQy
XSk7CisgICAgc2VuZGVyVHJhbnNmb3JtLnBvcnQgPSBzZW5kZXJDaGFubmVsLnBvcnQxOworICAg
IHJlY2VpdmVyVHJhbnNmb3JtLnBvcnQgPSByZWNlaXZlckNoYW5uZWwucG9ydDE7CisKKyAgICBj
b25zdCBzZW5kZXIxID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJykuc2VuZGVyOworICAgIGNv
bnN0IHNlbmRlcjIgPSBwYy5hZGRUcmFuc2NlaXZlcigndmlkZW8nKS5zZW5kZXI7CisgICAgY29u
c3QgcmVjZWl2ZXIxID0gcGMuZ2V0UmVjZWl2ZXJzKClbMF07CisgICAgY29uc3QgcmVjZWl2ZXIy
ID0gcGMuZ2V0UmVjZWl2ZXJzKClbMV07CisKKyAgICBzZW5kZXIxLnRyYW5zZm9ybSA9IHNlbmRl
clRyYW5zZm9ybTsKKyAgICByZWNlaXZlcjEudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07
CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4gc2VuZGVy
Mi50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm0pOworICAgIGFzc2VydF90aHJvd3NfZG9tKCJJ
bnZhbGlkU3RhdGVFcnJvciIsICgpID0+IHJlY2VpdmVyMi50cmFuc2Zvcm0gPSByZWNlaXZlclRy
YW5zZm9ybSk7CisKKyAgICBzZW5kZXIxLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAg
ICByZWNlaXZlcjEudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07CisKKyAgICBzZW5kZXIx
LnRyYW5zZm9ybSA9IG51bGw7CisgICAgcmVjZWl2ZXIxLnRyYW5zZm9ybSA9IG51bGw7Cit9LCAi
Q2Fubm90IHJldXNlIGF0dGFjaGVkIHRyYW5zZm9ybXMiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5j
ICh0ZXN0KSA9PiB7CisgICAgd29ya2VyID0gbmV3IFdvcmtlcignc2NyaXB0LXRyYW5zZm9ybS13
b3JrZXIuanMnKTsKKyAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9
PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7CisgICAgY29uc3QgbG9jYWxTdHJl
YW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IHRy
dWV9KTsKKworICAgIGNvbnN0IHNlbmRlckNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Cisg
ICAgY29uc3QgcmVjZWl2ZXJDaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOworICAgIGxldCBz
ZW5kZXIsIHJlY2VpdmVyOworICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBT
Y3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZTonTW9ja1JUQ1J0cFRyYW5zZm9ybScsIHBvcnQ6
IHNlbmRlckNoYW5uZWwucG9ydDJ9LCBbc2VuZGVyQ2hhbm5lbC5wb3J0Ml0pOworICAgIGNvbnN0
IHJlY2VpdmVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsIHtu
YW1lOidNb2NrUlRDUnRwVHJhbnNmb3JtJywgcG9ydDogcmVjZWl2ZXJDaGFubmVsLnBvcnQyfSwg
W3JlY2VpdmVyQ2hhbm5lbC5wb3J0Ml0pOworICAgIHNlbmRlclRyYW5zZm9ybS5wb3J0ID0gc2Vu
ZGVyQ2hhbm5lbC5wb3J0MTsKKyAgICByZWNlaXZlclRyYW5zZm9ybS5wb3J0ID0gcmVjZWl2ZXJD
aGFubmVsLnBvcnQxOworCisgICAgY29uc3Qgc3RhcnRlZFByb21pc2UgPSBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0
YSkpOworCisgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJl
amVjdCkgPT4geworICAgICAgICBjcmVhdGVDb25uZWN0aW9ucyh0ZXN0LCAoZmlyc3RDb25uZWN0
aW9uKSA9PiB7CisgICAgICAgICAgICBwYzEgPSBmaXJzdENvbm5lY3Rpb247CisgICAgICAgICAg
ICBzZW5kZXIgPSBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxTdHJlYW0uZ2V0QXVkaW9U
cmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOworICAgICAgICAgICAgc2VuZGVyLnRyYW5zZm9ybSA9
IHNlbmRlclRyYW5zZm9ybTsKKyAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKKyAg
ICAgICAgICAgIHBjMiA9IHNlY29uZENvbm5lY3Rpb247CisgICAgICAgICAgICBzZWNvbmRDb25u
ZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4geworICAgICAgICAgICAgICAgIHJlY2Vp
dmVyID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKKyAgICAgICAgICAgICAgICByZWNlaXZlci50cmFu
c2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNr
RXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9OworICAgICAgICB9KTsKKyAgICAgICAg
dGVzdC5zdGVwX3RpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsK
KyAgICB9KTsKKworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgc3RhcnRlZFByb21pc2UsICJzdGFy
dGVkIik7CisKKyAgICBhd2FpdCB3YWl0Rm9yTWVzc2FnZSh3b3JrZXIsICJhdWRpbyBjaHVuayIp
OworCisgICAgdmlkZW8xLnNyY09iamVjdCA9IHN0cmVhbTsKKyAgICBhd2FpdCB2aWRlbzEucGxh
eSgpOworfSwgImF1ZGlvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtIik7CisKK3Byb21pc2VfdGVz
dChhc3luYyAodGVzdCkgPT4geworICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3NjcmlwdC10cmFu
c2Zvcm0td29ya2VyLmpzJyk7CisgICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJl
c29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRh
KSk7CisgICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOworCisgICAgY29uc3Qg
bG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7
dmlkZW86IHRydWV9KTsKKworICAgIGNvbnN0IHNlbmRlckNoYW5uZWwgPSBuZXcgTWVzc2FnZUNo
YW5uZWw7CisgICAgY29uc3QgcmVjZWl2ZXJDaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwor
ICAgIGxldCBzZW5kZXIsIHJlY2VpdmVyOworICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5l
dyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZTonTW9ja1JUQ1J0cFRyYW5zZm9y
bScsIHBvcnQ6IHNlbmRlckNoYW5uZWwucG9ydDJ9LCBbc2VuZGVyQ2hhbm5lbC5wb3J0Ml0pOwor
ICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3
b3JrZXIsIHtuYW1lOidNb2NrUlRDUnRwVHJhbnNmb3JtJywgcG9ydDogcmVjZWl2ZXJDaGFubmVs
LnBvcnQyfSwgW3JlY2VpdmVyQ2hhbm5lbC5wb3J0Ml0pOworICAgIHNlbmRlclRyYW5zZm9ybS5w
b3J0ID0gc2VuZGVyQ2hhbm5lbC5wb3J0MTsKKyAgICByZWNlaXZlclRyYW5zZm9ybS5wb3J0ID0g
cmVjZWl2ZXJDaGFubmVsLnBvcnQxOworCisgICAgY29uc3Qgc3RhcnRlZFByb21pc2UgPSBuZXcg
UHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUo
ZXZlbnQuZGF0YSkpOworCisgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmV3IFByb21pc2UoKHJl
c29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBjcmVhdGVDb25uZWN0aW9ucyh0ZXN0LCAoZmly
c3RDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBwYzEgPSBmaXJzdENvbm5lY3Rpb247Cisg
ICAgICAgICAgICBzZW5kZXIgPSBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxTdHJlYW0u
Z2V0VmlkZW9UcmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOworICAgICAgICAgICAgc2VuZGVyLnRy
YW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24p
ID0+IHsKKyAgICAgICAgICAgIHBjMiA9IHNlY29uZENvbm5lY3Rpb247CisgICAgICAgICAgICBz
ZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4geworICAgICAgICAgICAg
ICAgIHJlY2VpdmVyID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKKyAgICAgICAgICAgICAgICByZWNl
aXZlci50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKKyAgICAgICAgICAgICAgICByZXNv
bHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9OworICAgICAgICB9KTsK
KyAgICAgICAgdGVzdC5zdGVwX3RpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIp
LCA1MDAwKTsKKyAgICB9KTsKKworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgc3RhcnRlZFByb21p
c2UsICJzdGFydGVkIik7CisKKyAgICBhd2FpdCB3YWl0Rm9yTWVzc2FnZSh3b3JrZXIsICJ2aWRl
byBjaHVuayIpOworCisgICAgdmlkZW8xLnNyY09iamVjdCA9IHN0cmVhbTsKKyAgICBhd2FpdCB2
aWRlbzEucGxheSgpOworfSwgInZpZGVvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtIik7CisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNm
b3JtL3NjcmlwdC13cml0ZS10d2ljZS10cmFuc2Zvcm0td29ya2VyLmpzIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0v
c2NyaXB0LXdyaXRlLXR3aWNlLXRyYW5zZm9ybS13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQ0Mjhj
ODFiM2FhNTQzNDMxOWUxMGZiZWM2YTAwNzVhN2Q0MGI5OAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQt
dHJhbnNmb3JtL3NjcmlwdC13cml0ZS10d2ljZS10cmFuc2Zvcm0td29ya2VyLmpzCkBAIC0wLDAg
KzEsMjIgQEAKK29ucnRjdHJhbnNmb3JtID0gKGV2ZW50KSA9PiB7CisgICAgY29uc3QgdHJhbnNm
b3JtZXIgPSBldmVudC50cmFuc2Zvcm1lcjsKKworICAgIHNlbGYucG9zdE1lc3NhZ2UoInN0YXJ0
ZWQiKTsKKworICAgIHRyYW5zZm9ybWVyLnJlYWRlciA9IHRyYW5zZm9ybWVyLnJlYWRhYmxlLmdl
dFJlYWRlcigpOworICAgIHRyYW5zZm9ybWVyLndyaXRlciA9IHRyYW5zZm9ybWVyLndyaXRhYmxl
LmdldFdyaXRlcigpOworICAgIGZ1bmN0aW9uIHByb2Nlc3ModHJhbnNmb3JtZXIpCisgICAgewor
ICAgICAgICB0cmFuc2Zvcm1lci5yZWFkZXIucmVhZCgpLnRoZW4oY2h1bmsgPT4geworICAgICAg
ICAgICAgaWYgKGNodW5rLmRvbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICB0cmFuc2Zvcm1lci53cml0ZXIud3JpdGUoY2h1bmsudmFsdWUpOworICAgICAgICAgICAg
dHJhbnNmb3JtZXIud3JpdGVyLndyaXRlKGNodW5rLnZhbHVlKTsKKyAgICAgICAgICAgIHByb2Nl
c3ModHJhbnNmb3JtZXIpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBwcm9jZXNzKHRyYW5z
Zm9ybWVyKTsKK307CitzZWxmLnBvc3RNZXNzYWdlKCJyZWdpc3RlcmVkIik7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNv
ZGVkLXRyYW5zZm9ybS9zY3JpcHQtd3JpdGUtdHdpY2UtdHJhbnNmb3JtLmh0dHBzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
LWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC13cml0ZS10d2ljZS10cmFuc2Zvcm0uaHR0cHMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3NjVmZjA4NGE3MmRlY2Q3ODljMTU2N2Q3NDdkOTliZjk4
Njc4N2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtd3JpdGUtdHdpY2Ut
dHJhbnNmb3JtLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworCitQQVNTIHZp
ZGVvIGV4Y2hhbmdlIHdpdGggd3JpdGUgdHdpY2UgdHJhbnNmb3JtCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQt
dHJhbnNmb3JtL3NjcmlwdC13cml0ZS10d2ljZS10cmFuc2Zvcm0uaHR0cHMuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJh
bnNmb3JtL3NjcmlwdC13cml0ZS10d2ljZS10cmFuc2Zvcm0uaHR0cHMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zMDYwYWFjOTk2MjgxOGRmZWE1YWJmYzRhODgwYmZiMGE0ZmRmMTQ5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMt
ZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LXdyaXRlLXR3aWNlLXRyYW5zZm9ybS5odHRwcy5odG1s
CkBAIC0wLDAgKzEsNTggQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5PgorICAgICAgICA8dmlkZW8gaWQ9InZpZGVvMSIgYXV0b3BsYXk+PC92aWRlbz4KKyAg
ICAgICAgPHZpZGVvIGlkPSJ2aWRlbzIiIGF1dG9wbGF5PjwvdmlkZW8+CisgICAgICAgIDxzY3Jp
cHQgc3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorYXN5bmMg
ZnVuY3Rpb24gd2FpdEZvck1lc3NhZ2Uod29ya2VyLCBkYXRhKQoreworICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgIGNvbnN0IHJlY2VpdmVkID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9
PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAg
ICAgICAgaWYgKGRhdGEgPT09IHJlY2VpdmVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0K
K30KKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgd29ya2VyID0gbmV3IFdv
cmtlcignc2NyaXB0LXdyaXRlLXR3aWNlLXRyYW5zZm9ybS13b3JrZXIuanMnKTsKKyAgICBjb25z
dCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0g
KGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRhdGEs
ICJyZWdpc3RlcmVkIik7CisKKyAgICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5hdmlnYXRv
ci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzogdHJ1ZX0pOworCisgICAgbGV0IHNl
bmRlciwgcmVjZWl2ZXI7CisgICAgY29uc3Qgc2VuZGVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNj
cmlwdFRyYW5zZm9ybSh3b3JrZXIsIHtuYW1lOidNb2NrUlRDUnRwVHJhbnNmb3JtJywgc2lkZTon
c2VuZGVyJywgcm9sZTonZW5jcnlwdCd9KTsKKyAgICBjb25zdCByZWNlaXZlclRyYW5zZm9ybSA9
IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZTonTW9ja1JUQ1J0cFRyYW5z
Zm9ybScsIHNpZGU6J3JlY2VpdmVyJywgcm9sZTonZGVjcnlwdCd9KTsKKworICAgIGNvbnN0IHN0
YXJ0ZWRQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0g
KGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKworICAgIGNvbnN0IHN0cmVhbSA9IGF3
YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29u
bmVjdGlvbnModGVzdCwgKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgcGMxID0g
Zmlyc3RDb25uZWN0aW9uOworICAgICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFk
ZFRyYWNrKGxvY2FsU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKKyAg
ICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07CisgICAgICAgIH0s
IChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBwYzIgPSBzZWNvbmRDb25uZWN0
aW9uOworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQp
ID0+IHsKKyAgICAgICAgICAgICAgICByZWNlaXZlciA9IHRyYWNrRXZlbnQucmVjZWl2ZXI7Cisg
ICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOworICAgICAgICAg
ICAgfTsKKyAgICAgICAgfSk7CisgICAgICAgIHRlc3Quc3RlcF90aW1lb3V0KCgpID0+IHJlamVj
dCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7CisgICAgfSk7CisKKyAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IHN0YXJ0ZWRQcm9taXNlLCAic3RhcnRlZCIpOworCisgICAgdmlkZW8xLnNyY09iamVj
dCA9IHN0cmVhbTsKKyAgICBhd2FpdCB2aWRlbzEucGxheSgpOworfSwgInZpZGVvIGV4Y2hhbmdl
IHdpdGggd3JpdGUgdHdpY2UgdHJhbnNmb3JtIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS1rZXlzLmh0dHBz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS1rZXlzLmh0dHBzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hNWIzMGFlZjhlMTRmNzFmNWFmZTg0ZDgwNDQ1Y2RhOTNjNTc2NzVkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLWtleXMuaHR0cHMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNSBAQAorCisKK1BBU1MgUGFzc2luZyB2YXJpb3VzIGtleSBJRHMKK1BB
U1MgQXVkaW8gZXhjaGFuZ2Ugd2l0aCBTRnJhbWUgc2V0dXAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFu
c2Zvcm0vc2ZyYW1lLWtleXMuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS1rZXlzLmh0
dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNWMwYWFiOGQ5MTJhYzY1YTE1OWNkMGE0NGM2MmY5NzI1NDVi
YmM5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS1rZXlzLmh0dHBzLmh0
bWwKQEAgLTAsMCArMSw2NSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHk+CisgICAgICAgIDx2aWRlbyBpZD0iYXVkaW8iIGF1dG9wbGF5IHBsYXlzSW5saW5l
PjwvdmlkZW8+CisgICAgICAgIDxzY3JpcHQgc3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorbGV0IHNlbmRlciwgcmVjZWl2ZXI7CitsZXQga2V5MSwga2V5Miwg
a2V5Mywga2V5NDsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3Qg
a2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIG5ldyBVaW50OEFycmF5
KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYsIDIxOSwgMjQsIDkzLCAyNiwg
MTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZlQml0cyIsICJkZXJpdmVLZXki
XSk7CisgICAgY29uc3QgdHJhbnNmb3JtID0gbmV3IFNGcmFtZVRyYW5zZm9ybTsKKworICAgIGF3
YWl0IHRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleSk7CisgICAgYXdhaXQgdHJhbnNmb3Jt
LnNldEVuY3J5cHRpb25LZXkoa2V5LCAxKTsKKworICAgIGF3YWl0IHRyYW5zZm9ybS5zZXRFbmNy
eXB0aW9uS2V5KGtleSwgQmlnSW50KCcxODQ0Njc0NDA3MzcwOTU1MTYxMycpKTsKKyAgICBhd2Fp
dCB0cmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXksIEJpZ0ludCgnMTg0NDY3NDQwNzM3MDk1
NTE2MTQnKSk7CisgICAgYXdhaXQgdHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5LCBCaWdJ
bnQoJzE4NDQ2NzQ0MDczNzA5NTUxNjE1JykpOworICAgIGF3YWl0IHRyYW5zZm9ybS5zZXRFbmNy
eXB0aW9uS2V5KGtleSwgQmlnSW50KCcxODQ0Njc0NDA3MzcwOTU1MTYxNicpKS50aGVuKGFzc2Vy
dF91bnJlYWNoZWQsIChlKSA9PiB7CisgICAgICAgIGFzc2VydF90cnVlKGUgaW5zdGFuY2VvZiBS
YW5nZUVycm9yKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhlLm1lc3NhZ2UsICJOb3QgYSA2NCBi
aXRzIGludGVnZXIiKTsKKyAgICB9KTsKK30sICJQYXNzaW5nIHZhcmlvdXMga2V5IElEcyIpOwor
Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBrZXkxID0gYXdhaXQgY3J5cHRv
LnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIG5ldyBVaW50OEFycmF5KFsxNDMsIDc3LCA0MywgMTAs
IDcyLCAxOSwgMzcsIDY3LCAyMzYsIDIxOSwgMjQsIDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJI
S0RGIiwgZmFsc2UsIFsiZGVyaXZlQml0cyIsICJkZXJpdmVLZXkiXSk7CisgICAga2V5MiA9IGF3
YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLCBuZXcgVWludDhBcnJheShbMTQ0LCA3
NywgNDMsIDEwLCA3MiwgMTksIDM3LCA2NywgMjM2LCAyMTksIDI0LCA5MywgMjYsIDE2NSwgOTEs
IDE3OF0pLCAiSEtERiIsIGZhbHNlLCBbImRlcml2ZUJpdHMiLCAiZGVyaXZlS2V5Il0pOworICAg
IGtleTMgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3IiwgbmV3IFVpbnQ4QXJy
YXkoWzE0NSwgNzcsIDQzLCAxMCwgNzIsIDE5LCAzNywgNjcsIDIzNiwgMjE5LCAyNCwgOTMsIDI2
LCAxNjUsIDkxLCAxNzhdKSwgIkhLREYiLCBmYWxzZSwgWyJkZXJpdmVCaXRzIiwgImRlcml2ZUtl
eSJdKTsKKyAgICBrZXk0ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIG5l
dyBVaW50OEFycmF5KFsxNDYsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYsIDIxOSwg
MjQsIDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZlQml0cyIs
ICJkZXJpdmVLZXkiXSk7CisKKyAgICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5hdmlnYXRv
ci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOworICAgIGNvbnN0IHN0
cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAg
Y29uc3QgY29ubmVjdGlvbnMgPSBjcmVhdGVDb25uZWN0aW9ucyh0ZXN0LCAoZmlyc3RDb25uZWN0
aW9uKSA9PiB7CisgICAgICAgICAgICBzZW5kZXIgPSBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2so
bG9jYWxTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOworICAgICAgICAg
ICAgbGV0IHRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm07CisgICAgICAgICAgICB0cmFu
c2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkxKTsKKyAgICAgICAgICAgIHNlbmRlci50cmFuc2Zv
cm0gPSB0cmFuc2Zvcm07CisgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAg
ICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4geworICAg
ICAgICAgICAgICAgIGxldCB0cmFuc2Zvcm0gPSBuZXcgU0ZyYW1lVHJhbnNmb3JtOworICAgICAg
ICAgICAgICAgIHRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleTEpOworICAgICAgICAgICAg
ICAgIHRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleTIpOworICAgICAgICAgICAgICAgIHRy
YW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleTMsIDEwMDApOworICAgICAgICAgICAgICAgIHRy
YW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleTQsIEJpZ0ludCgnMTg0NDY3NDQwNzM3MDk1NTE2
MTUnKSk7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOwor
ICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAgICAgICAg
ICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9Owor
ICAgICAgICB9KTsKKworICAgICAgICB0ZXN0LnN0ZXBfdGltZW91dCgoKSA9PiByZWplY3QoIlRl
c3QgdGltZWQgb3V0IiksIDUwMDApOworICAgIH0pOworCisgICAgYXVkaW8uc3JjT2JqZWN0ID0g
c3RyZWFtOworICAgIGF3YWl0IGF1ZGlvLnBsYXkoKTsKK30sICJBdWRpbyBleGNoYW5nZSB3aXRo
IFNGcmFtZSBzZXR1cCIpOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLWJ1ZmZlci1zb3VyY2Ut
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1idWZmZXItc291cmNl
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjFkMWZkNTUwZjQ2NzEyOTMzMzdmN2EwOTI2MDM1
MTRkZmJmYmFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9y
bS1idWZmZXItc291cmNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBVaW50
OEFycmF5IGFzIGlucHV0IHRvIFNGcmFtZVRyYW5zZm9ybQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5z
Zm9ybS9zZnJhbWUtdHJhbnNmb3JtLWJ1ZmZlci1zb3VyY2UuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3Nm
cmFtZS10cmFuc2Zvcm0tYnVmZmVyLXNvdXJjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5YjQ1ZjIyYzk3
ZTc3YTNmNWJlYzdiOGMzMjFmMzgzZDg2N2ExYTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5z
Zm9ybS9zZnJhbWUtdHJhbnNmb3JtLWJ1ZmZlci1zb3VyY2UuaHRtbApAQCAtMCwwICsxLDUwIEBA
Cis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+CisgICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAg
PHNjcmlwdD4KKworYXN5bmMgZnVuY3Rpb24gZ2V0RW5jcnlwdGVkRGF0YSh0cmFuc2Zvcm0pCit7
CisgICAgY29uc3QgY2h1bmsgPSBhd2FpdCB0cmFuc2Zvcm0ucmVhZGFibGUuZ2V0UmVhZGVyKCku
cmVhZCgpOworICAgIGNvbnN0IHZhbHVlID0gbmV3IFVpbnQ4QXJyYXkoY2h1bmsudmFsdWUpOwor
ICAgIHJldHVybiBbLi4udmFsdWVdOworfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+
IHsKKyAgICBjb25zdCBrZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3Iiwg
bmV3IFVpbnQ4QXJyYXkoWzE0MywgNzcsIDQzLCAxMCwgNzIsIDE5LCAzNywgNjcsIDIzNiwgMjE5
LCAyNCwgOTMsIDI2LCAxNjUsIDkxLCAxNzhdKSwgIkhLREYiLCBmYWxzZSwgWyJkZXJpdmVCaXRz
IiwgImRlcml2ZUtleSJdKTsKKyAgICBjb25zdCB0cmFuc2Zvcm0xID0gbmV3IFNGcmFtZVRyYW5z
Zm9ybTsKKyAgICBjb25zdCB0cmFuc2Zvcm0yID0gbmV3IFNGcmFtZVRyYW5zZm9ybTsKKyAgICBj
b25zdCB0cmFuc2Zvcm0zID0gbmV3IFNGcmFtZVRyYW5zZm9ybTsKKworICAgIGF3YWl0IHRyYW5z
Zm9ybTEuc2V0RW5jcnlwdGlvbktleShrZXkpOworICAgIGF3YWl0IHRyYW5zZm9ybTIuc2V0RW5j
cnlwdGlvbktleShrZXkpOworICAgIGF3YWl0IHRyYW5zZm9ybTMuc2V0RW5jcnlwdGlvbktleShr
ZXkpOworCisgICAgY29uc3QgYnVmZmVyMSA9IG5ldyBBcnJheUJ1ZmZlcigxMCk7CisgICAgY29u
c3QgYnVmZmVyMiA9IG5ldyBBcnJheUJ1ZmZlcigxMSk7CisgICAgY29uc3QgdmlldzEgPSBuZXcg
VWludDhBcnJheShidWZmZXIxKTsKKyAgICBjb25zdCB2aWV3MiA9IG5ldyBVaW50OEFycmF5KGJ1
ZmZlcjIsIDEpOworICAgIGZvciAobGV0IGkgPSAwIDsgaSA8IGJ1ZmZlcjEuYnl0ZUxlbmd0aDsg
KytpKSB7CisgICAgICAgIHZpZXcxW2ldID0gaTsKKyAgICAgICAgdmlldzJbaV0gPSBpOworICAg
IH0KKworICAgIHRyYW5zZm9ybTEud3JpdGFibGUuZ2V0V3JpdGVyKCkud3JpdGUoYnVmZmVyMSk7
CisgICAgdHJhbnNmb3JtMi53cml0YWJsZS5nZXRXcml0ZXIoKS53cml0ZSh2aWV3MSk7CisgICAg
dHJhbnNmb3JtMy53cml0YWJsZS5nZXRXcml0ZXIoKS53cml0ZSh2aWV3Mik7CisKKyAgICBjb25z
dCByZXN1bHQxID0gYXdhaXQgZ2V0RW5jcnlwdGVkRGF0YSh0cmFuc2Zvcm0xKTsKKyAgICBjb25z
dCByZXN1bHQyID0gYXdhaXQgZ2V0RW5jcnlwdGVkRGF0YSh0cmFuc2Zvcm0yKTsKKyAgICBjb25z
dCByZXN1bHQzID0gYXdhaXQgZ2V0RW5jcnlwdGVkRGF0YSh0cmFuc2Zvcm0zKTsKKworICAgIGFz
c2VydF9hcnJheV9lcXVhbHMocmVzdWx0MSwgcmVzdWx0MiwgInJlc3VsdDIiKTsKKyAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHJlc3VsdDEsIHJlc3VsdDMsICJyZXN1bHQzIik7Cit9LCAiVWludDhB
cnJheSBhcyBpbnB1dCB0byBTRnJhbWVUcmFuc2Zvcm0iKTsKKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5z
Zm9ybS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NWFkYjY5NjEwNDc4ZjE0NjA5NmFiNGJlNjJmYWE1NjY1YzllY2Ew
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw4IEBACisKK1BBU1MgQ2Fubm90IHJldXNlIGF0dGFjaGVkIHRyYW5z
Zm9ybXMKK1BBU1MgU0ZyYW1lVHJhbnNmb3JtIGV4cG9zZXMgcmVhZGFibGUgYW5kIHdyaXRhYmxl
CitQQVNTIHJlYWRhYmxlL3dyaXRhYmxlIGFyZSBsb2NrZWQgd2hlbiBhdHRhY2hlZCBhbmQgYWZ0
ZXIgYmVpbmcgYXR0YWNoZWQKK1BBU1MgU0ZyYW1lIHdpdGggYXJyYXkgYnVmZmVyIC0gYXV0aGVu
dGljYXRpb24gc2l6ZSAxMAorUEFTUyBTRnJhbWUgZGVjcnlwdGlvbiB3aXRoIGFycmF5IGJ1ZmZl
ciB0aGF0IGlzIHRvbyBzbWFsbAorUEFTUyBTRnJhbWUgdHJhbnNmb3JtIGdldHMgZXJyb3JlZCBp
ZiB0cnlpbmcgdG8gcHJvY2VzcyB1bmV4cGVjdGVkIHZhbHVlIHR5cGVzCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29k
ZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0taW4td29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVu
Y29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0taW4td29ya2VyLmh0dHBzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wYjU4NWM5ZDU3Y2VlZmVjYjc3YjE3NDBjZmIxM2RhZmRkMzkzMGJj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1pbi13b3Jr
ZXIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCisKK1BBU1MgdmlkZW8gZXhj
aGFuZ2Ugd2l0aCBTRnJhbWUgdHJhbnNmb3JtIGluIHdvcmtlcgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRy
YW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLWluLXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zv
cm0vc2ZyYW1lLXRyYW5zZm9ybS1pbi13b3JrZXIuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzFh
ZmYyMTlhNWM2MWI4MjFlMmIwNjMyNmY2M2U0MjU0NzI4NmE1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2Rl
ZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1pbi13b3JrZXIuaHR0cHMuaHRtbApAQCAtMCww
ICsxLDU3IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4K
KyAgICAgICAgPHZpZGVvIGlkPSJ2aWRlbzEiIGNvbnRyb2xzIGF1dG9wbGF5PjwvdmlkZW8+Cisg
ICAgICAgIDxzY3JpcHQgc3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0PgorYXN5bmMgZnVuY3Rpb24gd2FpdEZvck1lc3NhZ2Uod29ya2VyLCBkYXRhKQoreworICAg
IHdoaWxlICh0cnVlKSB7CisgICAgICAgIGNvbnN0IHJlY2VpdmVkID0gYXdhaXQgbmV3IFByb21p
c2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50
LmRhdGEpKTsKKyAgICAgICAgaWYgKGRhdGEgPT09IHJlY2VpdmVkKQorICAgICAgICAgICAgcmV0
dXJuOworICAgIH0KK30KKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgd29y
a2VyID0gbmV3IFdvcmtlcignc2ZyYW1lLXRyYW5zZm9ybS13b3JrZXIuanMnKTsKKyAgICBjb25z
dCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0g
KGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRhdGEs
ICJyZWdpc3RlcmVkIik7CisgICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3Iu
bWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IHZpZGVvOiB0cnVlIH0pOworCisgICAgbGV0IHNl
bmRlciwgcmVjZWl2ZXI7CisgICAgY29uc3Qgc2VuZGVyVHJhbnNmb3JtID0gbmV3IFNGcmFtZVRy
YW5zZm9ybSh7IGNvbXBhdGliaWxpdHlNb2RlOiAiSDI2NCIgfSk7CisgICAgY29uc3QgcmVjZWl2
ZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwgIlNGcmFtZVJU
Q1J0cFRyYW5zZm9ybSIpOworCisgICAgY29uc3Qga2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5p
bXBvcnRLZXkoInJhdyIsIG5ldyBVaW50OEFycmF5KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwg
MzcsIDY3LCAyMzYsIDIxOSwgMjQsIDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFs
c2UsIFsiZGVyaXZlQml0cyIsICJkZXJpdmVLZXkiXSk7CisgICAgc2VuZGVyVHJhbnNmb3JtLnNl
dEVuY3J5cHRpb25LZXkoa2V5KTsKKworICAgIGNvbnN0IHN0YXJ0ZWRQcm9taXNlID0gbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2
ZW50LmRhdGEpKTsKKworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNv
bHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnModGVzdCwgKGZpcnN0
Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgcGMxID0gZmlyc3RDb25uZWN0aW9uOworICAg
ICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdl
dFRyYWNrcygpWzBdLCBsb2NhbFN0cmVhbSk7CisgICAgICAgICAgICBzZW5kZXIudHJhbnNmb3Jt
ID0gc2VuZGVyVHJhbnNmb3JtOworICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4gewor
ICAgICAgICAgICAgcGMyID0gc2Vjb25kQ29ubmVjdGlvbjsKKyAgICAgICAgICAgIHNlY29uZENv
bm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcmVj
ZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOworICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRy
YW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOworICAgICAgICAgICAgICAgIHJlc29sdmUodHJh
Y2tFdmVudC5zdHJlYW1zWzBdKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0pOworICAgICAg
ICB0ZXN0LnN0ZXBfdGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDAp
OworICAgIH0pOworCisgICAgdmlkZW8xLnNyY09iamVjdCA9IHN0cmVhbTsKKyAgICBhd2FpdCB2
aWRlbzEucGxheSgpOworfSwgInZpZGVvIGV4Y2hhbmdlIHdpdGggU0ZyYW1lIHRyYW5zZm9ybSBp
biB3b3JrZXIiKTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJy
dGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJsZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1l
bmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLXJlYWRhYmxlLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mYzcyOTE2ZjliNWEwNGZkNTFiMWJkMjIwOWU5ZmU2ZTIyNjcxMmIyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJsZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1Mgc2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJs
ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLXJlYWRhYmxlLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1l
bmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLXJlYWRhYmxlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTY2MTgyNTBiZDE4NzM2MTRiNzIwZDNkMjAyNDRiNWE5YTIxZDY3ZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
LWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0tcmVhZGFibGUuaHRtbApAQCAtMCww
ICsxLDE4IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4K
KyAgICAgICAgPGlmcmFtZSBzcmM9Ii4iIGlkPSJmcmFtZSI+PC9pZnJhbWU+CisgICAgICAgIDxz
Y3JpcHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCB0cmFuc2Zv
cm0gPSBuZXcgZnJhbWUuY29udGVudFdpbmRvdy5TRnJhbWVUcmFuc2Zvcm07CisgICAgZnJhbWUu
cmVtb3ZlKCk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgKCkg
PT4gdHJhbnNmb3JtLnJlYWRhYmxlKTsKK30pOworICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0td29y
a2VyLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJy
dGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS13b3JrZXIuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjE3Y2YwYTM4YWEwODU5ZmE2ZWU4YWYwMWZkYWI1Zjk0YjViZWIxOAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
LWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0td29ya2VyLmpzCkBAIC0wLDAgKzEs
NyBAQAorb25ydGN0cmFuc2Zvcm0gPSAoZXZlbnQpID0+IHsKKyAgICBjb25zdCBzZnJhbWVUcmFu
c2Zvcm0gPSBuZXcgU0ZyYW1lVHJhbnNmb3JtKHsgcm9sZSA6ICJkZWNyeXB0IiwgYXV0aGVudGlj
YXRpb25TaXplOiAiMTAiLCBjb21wYXRpYmlsaXR5TW9kZTogIkgyNjQiIH0pOworICAgIGNyeXB0
by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLCBuZXcgVWludDhBcnJheShbMTQzLCA3NywgNDMsIDEw
LCA3MiwgMTksIDM3LCA2NywgMjM2LCAyMTksIDI0LCA5MywgMjYsIDE2NSwgOTEsIDE3OF0pLCAi
SEtERiIsIGZhbHNlLCBbImRlcml2ZUJpdHMiLCAiZGVyaXZlS2V5Il0pLnRoZW4oa2V5ID0+IHNm
cmFtZVRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleSkpOworICAgIGNvbnN0IHRyYW5zZm9y
bWVyID0gZXZlbnQudHJhbnNmb3JtZXI7CisgICAgdHJhbnNmb3JtZXIucmVhZGFibGUucGlwZVRo
cm91Z2goc2ZyYW1lVHJhbnNmb3JtKS5waXBlVG8odHJhbnNmb3JtZXIud3JpdGFibGUpOworfQor
c2VsZi5wb3N0TWVzc2FnZSgicmVnaXN0ZXJlZCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0v
c2ZyYW1lLXRyYW5zZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJlNDAxMzViMDRmNGY4NWJhNjc5YjAxODAyOGIzOTU0MjU3YzE3YTgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLmh0bWwKQEAgLTAs
MCArMSwxNDEgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5
PgorICAgICAgICA8c2NyaXB0PgorCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAg
ICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIGNvbnN0IHNlbmRlclRy
YW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oKTsKKyAgICBjb25zdCByZWNlaXZlclRyYW5z
Zm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oKTsKKyAgICBjb25zdCBzZW5kZXIxID0gcGMuYWRk
VHJhbnNjZWl2ZXIoJ2F1ZGlvJykuc2VuZGVyOworICAgIGNvbnN0IHNlbmRlcjIgPSBwYy5hZGRU
cmFuc2NlaXZlcigndmlkZW8nKS5zZW5kZXI7CisgICAgY29uc3QgcmVjZWl2ZXIxID0gcGMuZ2V0
UmVjZWl2ZXJzKClbMF07CisgICAgY29uc3QgcmVjZWl2ZXIyID0gcGMuZ2V0UmVjZWl2ZXJzKClb
MV07CisKKyAgICBzZW5kZXIxLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAgICByZWNl
aXZlcjEudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07CisgICAgYXNzZXJ0X3Rocm93c19k
b20oIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4gc2VuZGVyMi50cmFuc2Zvcm0gPSBzZW5kZXJU
cmFuc2Zvcm0pOworICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsICgp
ID0+IHJlY2VpdmVyMi50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybSk7CisKKyAgICBzZW5k
ZXIxLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAgICByZWNlaXZlcjEudHJhbnNmb3Jt
ID0gcmVjZWl2ZXJUcmFuc2Zvcm07CisKKyAgICBzZW5kZXIxLnRyYW5zZm9ybSA9IG51bGw7Cisg
ICAgcmVjZWl2ZXIxLnRyYW5zZm9ybSA9IG51bGw7Cit9LCAiQ2Fubm90IHJldXNlIGF0dGFjaGVk
IHRyYW5zZm9ybXMiKTsKKwordGVzdCgoKSA9PiB7CisgICAgY29uc3Qgc2VuZGVyVHJhbnNmb3Jt
ID0gbmV3IFNGcmFtZVRyYW5zZm9ybSgpOworCisgICAgYXNzZXJ0X3RydWUoc2VuZGVyVHJhbnNm
b3JtLnJlYWRhYmxlIGluc3RhbmNlb2YgUmVhZGFibGVTdHJlYW0pOworICAgIGFzc2VydF90cnVl
KHNlbmRlclRyYW5zZm9ybS53cml0YWJsZSBpbnN0YW5jZW9mIFdyaXRhYmxlU3RyZWFtKTsKK30s
ICJTRnJhbWVUcmFuc2Zvcm0gZXhwb3NlcyByZWFkYWJsZSBhbmQgd3JpdGFibGUiKTsKKworcHJv
bWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNv
bm5lY3Rpb24oKTsKKyAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgU0ZyYW1lVHJhbnNm
b3JtKCk7CisgICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgU0ZyYW1lVHJhbnNmb3Jt
KCk7CisgICAgY29uc3Qgc2VuZGVyMSA9IHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpLnNlbmRl
cjsKKyAgICBjb25zdCBzZW5kZXIyID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ3ZpZGVvJykuc2VuZGVy
OworICAgIGNvbnN0IHJlY2VpdmVyMSA9IHBjLmdldFJlY2VpdmVycygpWzBdOworICAgIGNvbnN0
IHJlY2VpdmVyMiA9IHBjLmdldFJlY2VpdmVycygpWzFdOworCisgICAgYXNzZXJ0X2ZhbHNlKHNl
bmRlclRyYW5zZm9ybS5yZWFkYWJsZS5sb2NrZWQsICJzZW5kZXIgcmVhZGFibGUgYmVmb3JlIik7
CisgICAgYXNzZXJ0X2ZhbHNlKHNlbmRlclRyYW5zZm9ybS53cml0YWJsZS5sb2NrZWQsICJzZW5k
ZXIgd3JpdGFibGUgYmVmb3JlIik7CisgICAgYXNzZXJ0X2ZhbHNlKHJlY2VpdmVyVHJhbnNmb3Jt
LnJlYWRhYmxlLmxvY2tlZCwgInJlY2VpdmVyIHJlYWRhYmxlIGJlZm9yZSIpOworICAgIGFzc2Vy
dF9mYWxzZShyZWNlaXZlclRyYW5zZm9ybS53cml0YWJsZS5sb2NrZWQsICJyZWNlaXZlciB3cml0
YWJsZSBiZWZvcmUiKTsKKworICAgIHNlbmRlcjEudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3Jt
OworICAgIHJlY2VpdmVyMS50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKKworICAgIGFz
c2VydF90cnVlKHNlbmRlclRyYW5zZm9ybS5yZWFkYWJsZS5sb2NrZWQsICJzZW5kZXIgcmVhZGFi
bGUgZHVyaW5nIik7CisgICAgYXNzZXJ0X3RydWUoc2VuZGVyVHJhbnNmb3JtLndyaXRhYmxlLmxv
Y2tlZCwgInNlbmRlciB3cml0YWJsZSBkdXJpbmciKTsKKyAgICBhc3NlcnRfdHJ1ZShyZWNlaXZl
clRyYW5zZm9ybS5yZWFkYWJsZS5sb2NrZWQsICJyZWNlaXZlciByZWFkYWJsZSBkdXJpbmciKTsK
KyAgICBhc3NlcnRfdHJ1ZShyZWNlaXZlclRyYW5zZm9ybS53cml0YWJsZS5sb2NrZWQsICJyZWNl
aXZlciB3cml0YWJsZSBkdXJpbmciKTsKKworICAgIHNlbmRlcjEudHJhbnNmb3JtID0gbnVsbDsK
KyAgICByZWNlaXZlcjEudHJhbnNmb3JtID0gbnVsbDsKKworICAgIGFzc2VydF90cnVlKHNlbmRl
clRyYW5zZm9ybS5yZWFkYWJsZS5sb2NrZWQsICJzZW5kZXIgcmVhZGFibGUgYWZ0ZXIiKTsKKyAg
ICBhc3NlcnRfdHJ1ZShzZW5kZXJUcmFuc2Zvcm0ud3JpdGFibGUubG9ja2VkLCAic2VuZGVyIHdy
aXRhYmxlIGFmdGVyIik7CisgICAgYXNzZXJ0X3RydWUocmVjZWl2ZXJUcmFuc2Zvcm0ucmVhZGFi
bGUubG9ja2VkLCAicmVjZWl2ZXIgcmVhZGFibGUgYWZ0ZXIiKTsKKyAgICBhc3NlcnRfdHJ1ZShy
ZWNlaXZlclRyYW5zZm9ybS53cml0YWJsZS5sb2NrZWQsICJyZWNlaXZlciB3cml0YWJsZSBhZnRl
ciIpOworfSwgInJlYWRhYmxlL3dyaXRhYmxlIGFyZSBsb2NrZWQgd2hlbiBhdHRhY2hlZCBhbmQg
YWZ0ZXIgYmVpbmcgYXR0YWNoZWQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7
CisgICAgY29uc3Qga2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIG5l
dyBVaW50OEFycmF5KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYsIDIxOSwg
MjQsIDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZlQml0cyIs
ICJkZXJpdmVLZXkiXSk7CisKKyAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgU0ZyYW1l
VHJhbnNmb3JtKHsgcm9sZSA6ICdlbmNyeXB0JywgYXV0aGVudGljYXRpb25TaXplOiAxMCB9KTsK
KyAgICBzZW5kZXJUcmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkpOworCisgICAgY29uc3Qg
cmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgU0ZyYW1lVHJhbnNmb3JtKHsgcm9sZSA6ICdkZWNyeXB0
JywgYXV0aGVudGljYXRpb25TaXplOiAxMCB9KTsKKyAgICByZWNlaXZlclRyYW5zZm9ybS5zZXRF
bmNyeXB0aW9uS2V5KGtleSk7CisKKyAgICBjb25zdCB3cml0ZXIgPSBzZW5kZXJUcmFuc2Zvcm0u
d3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgICAgY29uc3QgcmVhZGVyID0gcmVjZWl2ZXJUcmFuc2Zv
cm0ucmVhZGFibGUuZ2V0UmVhZGVyKCk7CisKKyAgICBzZW5kZXJUcmFuc2Zvcm0ucmVhZGFibGUu
cGlwZVRvKHJlY2VpdmVyVHJhbnNmb3JtLndyaXRhYmxlKTsKKworICAgIGNvbnN0IHNlbnQgPSBu
ZXcgQXJyYXlCdWZmZXIoOCk7CisgICAgY29uc3QgdmlldyA9IG5ldyBJbnQ4QXJyYXkoc2VudCk7
CisgICAgZm9yIChsZXQgY3B0ciA9IDA7IGNwdHIgPCBzZW50LmJ5dGVMZW5ndGg7ICsrY3B0cikK
KyAgICAgICAgdmlld1tjcHRyXSA9IGNwdHI7CisKKyAgICB3cml0ZXIud3JpdGUoc2VudCk7Cisg
ICAgY29uc3QgcmVjZWl2ZWQgPSBhd2FpdCByZWFkZXIucmVhZCgpOworCisgICAgYXNzZXJ0X2Vx
dWFscyhyZWNlaXZlZC52YWx1ZS5ieXRlTGVuZ3RoLCA4KTsKKyAgICBjb25zdCB2aWV3MiA9IG5l
dyBJbnQ4QXJyYXkocmVjZWl2ZWQudmFsdWUpOworICAgIGZvciAobGV0IGNwdHIgPSAwOyBjcHRy
IDwgc2VudC5ieXRlTGVuZ3RoOyArK2NwdHIpCisgICAgICAgIGFzc2VydF9lcXVhbHModmlldzJb
Y3B0cl0sIHZpZXdbY3B0cl0pOworfSwgIlNGcmFtZSB3aXRoIGFycmF5IGJ1ZmZlciAtIGF1dGhl
bnRpY2F0aW9uIHNpemUgMTAiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7Cisg
ICAgY29uc3Qga2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIG5ldyBV
aW50OEFycmF5KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYsIDIxOSwgMjQs
IDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZlQml0cyIsICJk
ZXJpdmVLZXkiXSk7CisKKyAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgU0ZyYW1lVHJh
bnNmb3JtKHsgcm9sZSA6ICdlbmNyeXB0JywgYXV0aGVudGljYXRpb25TaXplOiAxMCB9KTsKKyAg
ICBjb25zdCBzZW5kZXJXcml0ZXIgPSBzZW5kZXJUcmFuc2Zvcm0ud3JpdGFibGUuZ2V0V3JpdGVy
KCk7CisgICAgY29uc3Qgc2VuZGVyUmVhZGVyID0gc2VuZGVyVHJhbnNmb3JtLnJlYWRhYmxlLmdl
dFJlYWRlcigpOworCisgICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgU0ZyYW1lVHJh
bnNmb3JtKHsgcm9sZSA6ICdkZWNyeXB0JywgYXV0aGVudGljYXRpb25TaXplOiAxMCB9KTsKKyAg
ICBjb25zdCByZWNlaXZlcldyaXRlciA9IHJlY2VpdmVyVHJhbnNmb3JtLndyaXRhYmxlLmdldFdy
aXRlcigpOworICAgIGNvbnN0IHJlY2VpdmVyUmVhZGVyID0gcmVjZWl2ZXJUcmFuc2Zvcm0ucmVh
ZGFibGUuZ2V0UmVhZGVyKCk7CisKKyAgICBzZW5kZXJUcmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktl
eShrZXkpOworICAgIHJlY2VpdmVyVHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5KTsKKwor
ICAgIGNvbnN0IGNodW5rID0gbmV3IEFycmF5QnVmZmVyKDgpOworCisgICAgLy8gZGVjcnlwdGlv
biBzaG91bGQgZmFpbCwgbGVhZGluZyB0byBhbiBlbXB0eSBhcnJheSBidWZmZXIuCisgICAgYXdh
aXQgcmVjZWl2ZXJXcml0ZXIud3JpdGUoY2h1bmspOworICAgIGxldCByZWNlaXZlZCA9IGF3YWl0
IHJlY2VpdmVyUmVhZGVyLnJlYWQoKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlY2VpdmVkLnZhbHVl
LmJ5dGVMZW5ndGgsIDApOworCisgICAgLy8gV2Ugd3JpdGUgYWdhaW4gYnV0IHRoaXMgdGltZSB3
aXRoIGEgY2h1bmsgd2UgY2FuIGRlY3J5cHQuCisgICAgYXdhaXQgc2VuZGVyV3JpdGVyLndyaXRl
KGNodW5rKTsKKyAgICBjb25zdCBlbmNyeXB0ZWQgPSBhd2FpdCBzZW5kZXJSZWFkZXIucmVhZCgp
OworICAgIGF3YWl0IHJlY2VpdmVyV3JpdGVyLndyaXRlKGVuY3J5cHRlZC52YWx1ZSk7CisgICAg
cmVjZWl2ZWQgPSBhd2FpdCByZWNlaXZlclJlYWRlci5yZWFkKCk7CisgICAgYXNzZXJ0X2VxdWFs
cyhyZWNlaXZlZC52YWx1ZS5ieXRlTGVuZ3RoLCA4KTsKK30sICJTRnJhbWUgZGVjcnlwdGlvbiB3
aXRoIGFycmF5IGJ1ZmZlciB0aGF0IGlzIHRvbyBzbWFsbCIpOworCitwcm9taXNlX3Rlc3QoYXN5
bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCBrZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9y
dEtleSgicmF3IiwgbmV3IFVpbnQ4QXJyYXkoWzE0MywgNzcsIDQzLCAxMCwgNzIsIDE5LCAzNywg
NjcsIDIzNiwgMjE5LCAyNCwgOTMsIDI2LCAxNjUsIDkxLCAxNzhdKSwgIkhLREYiLCBmYWxzZSwg
WyJkZXJpdmVCaXRzIiwgImRlcml2ZUtleSJdKTsKKworICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNm
b3JtID0gbmV3IFNGcmFtZVRyYW5zZm9ybSh7IHJvbGUgOiAnZGVjcnlwdCcsIGF1dGhlbnRpY2F0
aW9uU2l6ZTogMTAgfSk7CisgICAgY29uc3QgcmVjZWl2ZXJXcml0ZXIgPSByZWNlaXZlclRyYW5z
Zm9ybS53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgICByZWNlaXZlclRyYW5zZm9ybS5zZXRFbmNy
eXB0aW9uS2V5KGtleSk7CisKKyAgICAvLyBkZWNyeXB0aW9uIHNob3VsZCBmYWlsLCBsZWFkaW5n
IHRvIGVycm9yaW5nIHRoZSB0cmFuc2Zvcm0uCisgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2pz
KHRlc3QsIFR5cGVFcnJvciwgcmVjZWl2ZXJXcml0ZXIud3JpdGUoeyB9KSk7CisgICAgYXdhaXQg
cHJvbWlzZV9yZWplY3RzX2pzKHRlc3QsIFR5cGVFcnJvciwgcmVjZWl2ZXJXcml0ZXIuY2xvc2Vk
KTsKK30sICJTRnJhbWUgdHJhbnNmb3JtIGdldHMgZXJyb3JlZCBpZiB0cnlpbmcgdG8gcHJvY2Vz
cyB1bmV4cGVjdGVkIHZhbHVlIHR5cGVzIik7CisKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDM1Njk0MTU5YTkwMTM2N2QyMDUyNTY1NDY1YmFmOWUxMjdiMzI1ODguLmNjYmNlMDcx
MjZiODMxMDYwZGY3M2Q1ODM0YjY3NTg5YzhiN2Y0ZjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE1NjUsOCArMTU2NSw4IEBAIHdlYmtpdC5vcmcv
Yi8xMzYyMjQgZmFzdC9zcGVlY2hzeW50aGVzaXMgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzYy
MjQgZmFzdC9zcGVlY2hyZWNvZ25pdGlvbiBbIFNraXAgXQogCiAjIE5vIHBsYW5zIHRvIHN1cHBv
cnQgU2ZyYW1lcyBmb3IgYSB3aGlsZQotaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0u
aHRtbCBbIFNraXAgXQotaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0taW4td29ya2Vy
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVu
Y29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0uaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRy
YW5zZm9ybS1pbi13b3JrZXIuaHR0cHMuaHRtbCBbIFNraXAgXQogd2VicnRjL2F1ZGlvLXNmcmFt
ZS5odG1sIFsgU2tpcCBdCiB3ZWJydGMvc2ZyYW1lLXRlc3QtdmVjdG9ycy5odG1sIFsgU2tpcCBd
CiB3ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1idWZmZXItc291cmNlLmh0bWwgWyBTa2lwIF0KQEAg
LTIwMzAsNyArMjAzMCw3IEBAIHdlYmtpdC5vcmcvYi8yMjM5NjUgaHR0cC90ZXN0cy9jb250ZW50
ZXh0ZW5zaW9ucy9ibG9jay1ldmVyeXRoaW5nLXVubGVzcy1kb21haW4tCiB3ZWJraXQub3JnL2Iv
MjIzOTY1IGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvaGlkZS1vbi1jc3AtcmVwb3J0LnB5
IFsgQ3Jhc2ggXQogd2Via2l0Lm9yZy9iLzIyMzk2NSBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNp
b25zL21haW4tcmVzb3VyY2UtcmVkaXJlY3QtYmxvY2tlZC5weSBbIENyYXNoIF0KIAotd2Via2l0
Lm9yZy9iLzIyNDA2OCBodHRwL3dwdC93ZWJydGMvd2VicnRjLWxhdGUtdHJhbnNmb3JtLmh0bWwg
WyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMjQwNjggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LWxhdGUtdHJhbnNmb3JtLmh0
dHBzLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIyNDA3MSB3ZWJnbC9wZW5kaW5n
L2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0ZW5j
aWwtYW50aWFsaWFzLmh0bWwgWyBUaW1lb3V0IF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDE1YzljMGFlZDAxOWJhZmZkNzhmZDdkYmI5
MDA1MjgxNjIwZDE1NmYuLjg0MTI4MzFkZjdmNGVlNmU2NGFjOTM4ZjFhMDU0OWQ0ZDEwYzgxZjUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azEvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTE2LDYgKzE2LDcgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9jcm9z
cy1vcmlnaW4tcmVzb3VyY2UtcG9saWN5IFsgU2tpcCBdCiAKICMgU2tpcCBXZWJSVEMgZm9yIG5v
dyBpbiBXSzEKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9y
bSBbIFNraXAgXQogd2VicnRjIFsgU2tpcCBdCiAKICMgTm90IHN1cHBvcnRlZCBvbiBXSzEKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA0OThh
M2ZlNjM4NmU2MjZjODY2ODdhOTRiNWY1MmUzNWYzMTFkYzkwLi42NTdlNTU5ODVjNWU5NGQ0NjYy
YTNjM2E3YWQ3OWM1OTFjNDI3YWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zCkBAIC0zOTQsNiArMzk0LDcgQEAgd2VicnRjL2RhdGFjaGFubmVs
IFsgUGFzcyBdCiB3ZWJydGMvZGF0YWNoYW5uZWwvbWRucy1pY2UtY2FuZGlkYXRlcy5odG1sIFsg
U2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29u
bmVjdGlvbi1zZXRMb2NhbERlc2NyaXB0aW9uLW9mZmVyLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtp
dC5vcmcvYi8yMDk4NzggIFsgRGVidWcgXSB3ZWJydGMvZGF0YWNoYW5uZWwvbXVsdGlwbGUtY29u
bmVjdGlvbnMuaHRtbCBbIFNsb3cgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0gWyBTa2lwIF0KIAogIyBUaGVzZSB0ZXN0cyB0ZXN0IHRo
ZSBTaGFkb3cgRE9NIGJhc2VkIEhUTUwgZm9ybSB2YWxpZGF0aW9uIFVJIGJ1dCBNYWMgV0sxIGlz
IHVzaW5nIG5hdGl2ZSBkaWFsb2dzIGluc3RlYWQuCiBmYXN0L2Zvcm1zL3ZhbGlkYXRpb24tbWVz
c2FnZS1vbi1saXN0Ym94Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9zY3Jp
cHQtdHJhbnNmb3JtLmpzIGIvTGF5b3V0VGVzdHMvd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlNjhjNjIyYmZjMTFhY2UxZWIxZjFmY2M4
ZDgyZDIyZmM0ODJkNTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanMKKysrIC9kZXYvbnVs
bApAQCAtMSw3ICswLDAgQEAKLWNsYXNzIE1vY2tSVENSdHBUcmFuc2Zvcm1lciBleHRlbmRzIFJU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyIHsKLSAgICBjb25zdHJ1Y3RvcigpIHsgfQotICAgIHN0YXJ0
KHJlYWRhYmxlU3RyZWFtLCB3cml0YWJsZVN0cmVhbSkgeyByZWFkYWJsZVN0cmVhbS5waXBlVG8o
d3JpdGFibGVTdHJlYW0pOyB9Ci19OwotCi1yZWdpc3RlclJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
KCJNb2NrUlRDUnRwVHJhbnNmb3JtIiwgTW9ja1JUQ1J0cFRyYW5zZm9ybWVyKTsKLXNlbGYucG9z
dE1lc3NhZ2UoInN0YXJ0ZWQiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426226</attachid>
            <date>2021-04-16 07:48:18 -0700</date>
            <delta_ts>2021-04-19 02:49:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224604-20210416164813.patch</filename>
            <type>text/plain</type>
            <size>102906</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MTIyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzNiYzg0YzlhNWQ5ZTY4YjY3YzJj
NzU0M2JmZjA5ZmY2NjNkNGFiMS4uNGIyYjcwZWYzMjU4MGEzNmMzMTliMzM2MjQyZTVjNjFkNWMz
ZTIyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA0LTE2ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNaWdyYXRlIHNvbWUgV2ViUlRDIGVuY29kZWQg
dHJhbnNmb3JtIHRlc3RzIHRvIFdQVAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI0NjA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJs
ZS1jcmFzaC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVj
dGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHdl
YnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzOiBSZW1vdmVkLgorCiAyMDIxLTA0LTE2ICBEaWVnbyBQ
aW5vIEdhcmNpYSAgPGRwaW5vQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJdIFVucmV2aWV3
ZWQgdGVzdCBnYXJkZW5pbmcuIFJlaW50cm9kdWNlIHRlc3QgZmFpbHVyZSBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9uZXh0LWhv
cC1wcm90b2NvbC5odHRwcy5odG1sLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXgg
OGQ2N2IzZmIxYWM1ODQ5OWZjZWY3MjM1YmQ0NWI1NzQyZjA1NzBmNS4uODRlNGVhMmI0YTkzOTdh
MDZhZjFmZjhlYmJiZjIxZmYxOWFlYzAzNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDYgQEAKKzIwMjEtMDQtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCisgICAgICAgIE1pZ3JhdGUgc29tZSBXZWJSVEMgZW5jb2RlZCB0cmFuc2Zvcm0g
dGVzdHMgdG8gV1BUCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjQ2MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vcm91dGlu
ZXMuanM6IEFkZGVkLgorICAgICAgICAoYXN5bmMgY3JlYXRlQ29ubmVjdGlvbnMpOgorICAgICAg
ICAod2FpdEZvcik6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVk
LXRyYW5zZm9ybS9zY3JpcHQtYXVkaW8tdHJhbnNmb3JtLXdvcmtlci5qczogQWRkZWQuCisgICAg
ICAgIChNb2NrUlRDUnRwVHJhbnNmb3JtZXIpOgorICAgICAgICAoTW9ja1JUQ1J0cFRyYW5zZm9y
bWVyLnByb3RvdHlwZS5zdGFydCk6CisgICAgICAgIChNb2NrUlRDUnRwVHJhbnNmb3JtZXIucHJv
dG90eXBlLnByb2Nlc3MpOgorICAgICAgICAob25ydGN0cmFuc2Zvcm0pOgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LWF1ZGlvLXRy
YW5zZm9ybS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LWF1ZGlvLXRyYW5zZm9ybS5o
dHRwcy5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL2F1ZGlv
LXNjcmlwdC10cmFuc2Zvcm0uaHRtbC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
cnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1jaGFuZ2UtdHJhbnNmb3JtLXdvcmtlci5qczog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9jaGFuZ2UtZW5jb2RlZC10
cmFuc2Zvcm0uanMuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVk
LXRyYW5zZm9ybS9zY3JpcHQtY2hhbmdlLXRyYW5zZm9ybS5odHRwcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zv
cm0vc2NyaXB0LWNoYW5nZS10cmFuc2Zvcm0uaHR0cHMuaHRtbDogUmVuYW1lZCBmcm9tIExheW91
dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9jaGFuZ2UtZW5jb2RlZC10cmFuc2Zvcm0uaHRtbC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3Njcmlw
dC1sYXRlLXRyYW5zZm9ybS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LWxhdGUtdHJh
bnNmb3JtLmh0dHBzLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJy
dGMvd2VicnRjLWxhdGUtdHJhbnNmb3JtLmh0bWwuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtbWV0YWRhdGEtdHJhbnNmb3JtLXdv
cmtlci5qczogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9tZXRhZGF0
YS10cmFuc2Zvcm0td29ya2VyLmpzLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJy
dGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LW1ldGFkYXRhLXRyYW5zZm9ybS5odHRwcy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5j
b2RlZC10cmFuc2Zvcm0vc2NyaXB0LW1ldGFkYXRhLXRyYW5zZm9ybS5odHRwcy5odG1sOiBSZW5h
bWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL21ldGFkYXRhLXRyYW5zZm9ybS5o
dG1sLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zv
cm0vc2NyaXB0LXRyYW5zZm9ybS13b3JrZXIuanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJydGMvc2NyaXB0LXRyYW5zZm9ybS5qcy4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC10cmFuc2Zvcm0uaHR0cHMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
LWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC10cmFuc2Zvcm0uaHR0cHMuaHRtbDogUmVuYW1lZCBm
cm9tIExheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLmh0bWwuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3Jp
cHQtd3JpdGUtdHdpY2UtdHJhbnNmb3JtLXdvcmtlci5qczogUmVuYW1lZCBmcm9tIExheW91dFRl
c3RzL2h0dHAvd3B0L3dlYnJ0Yy93cml0ZS10d2ljZS10cmFuc2Zvcm0uanMuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtd3JpdGUt
dHdpY2UtdHJhbnNmb3JtLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtd3JpdGUtdHdp
Y2UtdHJhbnNmb3JtLmh0dHBzLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJydGMvd3JpdGUtdHdpY2UtdHJhbnNmb3JtLmh0bWwuCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUta2V5cy5odHRwcy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5j
b2RlZC10cmFuc2Zvcm0vc2ZyYW1lLWtleXMuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNm
b3JtLWJ1ZmZlci1zb3VyY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0tYnVm
ZmVyLXNvdXJjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
cnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3Jt
L3NmcmFtZS10cmFuc2Zvcm0taW4td29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJh
bWUtdHJhbnNmb3JtLWluLXdvcmtlci5odHRwcy5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0taW4td29ya2VyLmh0bWwuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUt
dHJhbnNmb3JtLXJlYWRhYmxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLXJl
YWRhYmxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMt
ZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS13b3JrZXIuanM6IFJlbmFtZWQgZnJv
bSBMYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS5qcy4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10
cmFuc2Zvcm0uaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9z
ZnJhbWUtdHJhbnNmb3JtLmh0bWwuCisKIDIwMjEtMDQtMTUgIEFudG9pbmUgUXVpbnQgIDxncmFv
dXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgY2FsYygpIHNob3VsZCBub3QgY29udGFpbiAwIHZh
bHVlcyBvdGhlciB0aGFuIHBlcmNlbnRhZ2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJydGMvYXVkaW8tc2NyaXB0LXRyYW5zZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2VicnRjL2F1ZGlvLXNjcmlwdC10cmFuc2Zvcm0uaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNTg0NjY0MWRhMTk3NzUzZTQ0MWNmNjNkMGZjMzhkNjExNWY2NWYzMy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJydGMvYXVkaW8tc2NyaXB0LXRyYW5zZm9ybS5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsNzAgKzAsMCBAQAotPCFkb2N0eXBlIGh0bWw+Ci08aHRtbD4KLSAgICA8aGVhZD4K
LSAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgotICAgICAgICA8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLSAgICA8L2hlYWQ+Ci0g
ICAgPGJvZHk+Ci0gICAgICAgIDx2aWRlbyBpZD0idmlkZW8iIGF1dG9wbGF5IHBsYXlzSW5saW5l
PjwvdmlkZW8+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+Ci0g
ICAgICAgIDxzY3JpcHQ+Ci1mdW5jdGlvbiB3YWl0Rm9yTWVzc2FnZShwb3J0LCBkYXRhKQotewot
ICAgIGxldCBnb3RNZXNzYWdlOwotICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVz
b2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgIGdvdE1lc3NhZ2UgPSByZXNvbHZlOwotICAgICAg
ICBzZXRUaW1lb3V0KCgpID0+IHsgcmVqZWN0KCJkaWQgbm90IGdldCAiICsgZGF0YSkgfSwgNTAw
MCk7Ci0gICAgfSk7Ci0gICAgcG9ydC5vbm1lc3NhZ2UgPSBldmVudCA9PiB7Ci0gICAgICAgaWYg
KGV2ZW50LmRhdGEgPT09IGRhdGEpCi0gICAgICAgICAgIGdvdE1lc3NhZ2UoKTsKLSAgICB9Owot
ICAgIHJldHVybiBwcm9taXNlOwotfQotCi1sZXQgc2VuZGVyVHJhbnNmb3JtLCByZWNlaXZlclRy
YW5zZm9ybTsKLWxldCBzdHJlYW07Ci1wcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKLSAg
ICB3b3JrZXIgPSBuZXcgV29ya2VyKCJjb250ZXh0LXRyYW5zZm9ybS5qcyIpOwotICAgIGNvbnN0
IGRhdGEgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAo
ZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOwotICAgIGFzc2VydF9lcXVhbHMoZGF0YSwg
InJlZ2lzdGVyZWQiKTsKLQotICAgIGNvbnN0IGxvY2FsU3RyZWFtID0gYXdhaXQgbmF2aWdhdG9y
Lm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSk7Ci0KLSAgICBjb25zdCBz
ZW5kZXJDaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIGNvbnN0IHJlY2VpdmVyQ2hh
bm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICBsZXQgc2VuZGVyLCByZWNlaXZlcjsKLSAg
ICBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25h
bWU6J01vY2tSVENSdHBUcmFuc2Zvcm0nLCBtZWRpYVR5cGU6J2F1ZGlvJywgc2lkZTonc2VuZGVy
JywgcG9ydDpzZW5kZXJDaGFubmVsLnBvcnQyfSwgW3NlbmRlckNoYW5uZWwucG9ydDJdKTsKLSAg
ICByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7
bmFtZTonTW9ja1JUQ1J0cFRyYW5zZm9ybScsIG1lZGlhVHlwZTonYXVkaW8nLCBzaWRlOidyZWNl
aXZlcicsIHBvcnQ6cmVjZWl2ZXJDaGFubmVsLnBvcnQyfSwgW3JlY2VpdmVyQ2hhbm5lbC5wb3J0
Ml0pOwotICAgIHNlbmRlclRyYW5zZm9ybS5wb3J0ID0gc2VuZGVyQ2hhbm5lbC5wb3J0MTsKLSAg
ICByZWNlaXZlclRyYW5zZm9ybS5wb3J0ID0gcmVjZWl2ZXJDaGFubmVsLnBvcnQxOwotCi0gICAg
cHJvbWlzZTEgPSB3YWl0Rm9yTWVzc2FnZShzZW5kZXJUcmFuc2Zvcm0ucG9ydCwgInN0YXJ0ZWQg
YXVkaW8gc2VuZGVyIik7Ci0gICAgcHJvbWlzZTIgPSB3YWl0Rm9yTWVzc2FnZShyZWNlaXZlclRy
YW5zZm9ybS5wb3J0LCAic3RhcnRlZCBhdWRpbyByZWNlaXZlciIpOwotCi0gICAgc3RyZWFtID0g
YXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAgICAgICBjcmVhdGVD
b25uZWN0aW9ucygoZmlyc3RDb25uZWN0aW9uKSA9PiB7Ci0gICAgICAgICAgICBzZW5kZXIgPSBm
aXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSwg
bG9jYWxTdHJlYW0pOwotICAgICAgICAgICAgc2VuZGVyLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5z
Zm9ybTsKLSAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKLSAgICAgICAgICAgIHNl
Y29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7Ci0gICAgICAgICAgICAg
ICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOwotICAgICAgICAgICAgICAgIHJlY2Vp
dmVyLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOwotICAgICAgICAgICAgICAgIHJlc29s
dmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0pOwot
ICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7
Ci0gICAgfSk7Ci0KLSAgICBhd2FpdCBwcm9taXNlMTsKLSAgICBhd2FpdCBwcm9taXNlMjsKLX0s
ICJzZXR1cCBhbmQgY2hlY2sgY29udGV4dCIpOwotCi1wcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsK
LSAgICB2aWRlby5zcmNPYmplY3QgPSBzdHJlYW07Ci0gICAgcmV0dXJuIHZpZGVvLnBsYXkoKTsK
LX0sICJhdWRpbyBpcyBwbGF5aW5nIik7Ci0gICAgICAgIDwvc2NyaXB0PgotICAgIDwvYm9keT4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9jaGFuZ2Ut
ZW5jb2RlZC10cmFuc2Zvcm0uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9jaGFu
Z2UtZW5jb2RlZC10cmFuc2Zvcm0uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
N2ZhY2Y1NjRlNzg5OGNmODM1M2U1NDVhZTQ0MWM3MmYyZjM3ZGY4MC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJy
dGMvY2hhbmdlLWVuY29kZWQtdHJhbnNmb3JtLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1NyAr
MCwwIEBACi08IWRvY3R5cGUgaHRtbD4KLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotICAgIDwvaGVhZD4KLSAgICA8Ym9keT4KLSAg
ICAgICAgPHZpZGVvIGlkPSJ2aWRlbzEiIGF1dG9wbGF5IGNvbnRyb2xzIHBsYXlzaW5saW5lPjwv
dmlkZW8+Ci0gICAgICAgIDxzY3JpcHQgc3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0PgotICAg
ICAgICA8c2NyaXB0PgotYXN5bmMgZnVuY3Rpb24gd2FpdEZvck1lc3NhZ2Uod29ya2VyLCBkYXRh
KQotewotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGNvbnN0IHJlY2VpdmVkID0gYXdhaXQg
bmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNv
bHZlKGV2ZW50LmRhdGEpKTsKLSAgICAgICAgaWYgKGRhdGEgPT09IHJlY2VpdmVkKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7
Ci0gICAgd29ya2VyID0gbmV3IFdvcmtlcignY2hhbmdlLWVuY29kZWQtdHJhbnNmb3JtLmpzJyk7
Ci0gICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9u
bWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7Ci0gICAgYXNzZXJ0X2Vx
dWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOwotCi0gICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2Fp
dCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7dmlkZW86IHRydWV9KTsKLQot
ICAgIGxldCBzZW5kZXIsIHJlY2VpdmVyOwotICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybTEgPSBu
ZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25hbWU6J3NlbmRlcjEnfSk7Ci0gICAg
Y29uc3Qgc2VuZGVyVHJhbnNmb3JtMiA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2Vy
LCB7bmFtZTonc2VuZGVyMid9KTsKLSAgICBjb25zdCByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBS
VENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZToncmVjZWl2ZXInfSk7Ci0KLSAgICBj
b25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0g
ICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKLSAgICAgICAg
ICAgIHNlbmRlciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRWaWRl
b1RyYWNrcygpWzBdLCBsb2NhbFN0cmVhbSk7Ci0gICAgICAgICAgICBmaXJzdENvbm5lY3Rpb24u
Z2V0VHJhbnNjZWl2ZXJzKClbMF0uc2V0Q29kZWNQcmVmZXJlbmNlcyhbe21pbWVUeXBlOiAidmlk
ZW8vVlA4IiwgY2xvY2tSYXRlOiA5MDAwMH1dKTsKLSAgICAgICAgICAgIHNlbmRlci50cmFuc2Zv
cm0gPSBzZW5kZXJUcmFuc2Zvcm0xOwotICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4g
ewotICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+
IHsKLSAgICAgICAgICAgICAgICByZWNlaXZlciA9IHRyYWNrRXZlbnQucmVjZWl2ZXI7Ci0gICAg
ICAgICAgICAgICAgcmVjZWl2ZXIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07Ci0gICAg
ICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOwotICAgICAgICAgICAg
fTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRp
bWVkIG91dCIpLCA1MDAwKTsKLSAgICB9KTsKLQotICAgIHZpZGVvMS5zcmNPYmplY3QgPSBzdHJl
YW07Ci0gICAgYXdhaXQgdmlkZW8xLnBsYXkoKTsKLQotICAgIGNvbnN0IHVwZGF0ZVByb21pc2Ug
PSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJl
c29sdmUoZXZlbnQuZGF0YSkpOwotICAgIHNlbmRlci50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zv
cm0yOwotICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgdXBkYXRlUHJvbWlzZSwgImdvdCB2YWx1ZSAy
Iik7Ci19LCAiY2hhbmdlIHNlbmRlciB0cmFuc2Zvcm0iKTsKLSAgICAgICAgPC9zY3JpcHQ+Ci0g
ICAgPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
cnRjL2NoYW5nZS1lbmNvZGVkLXRyYW5zZm9ybS5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YnJ0Yy9jaGFuZ2UtZW5jb2RlZC10cmFuc2Zvcm0uanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDg0YTdhYWFjMTgxZGI0Y2UyYWJkYWMyOTVmYWExNTU1MTk2ZTliOWEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2VicnRjL2NoYW5nZS1lbmNvZGVkLXRyYW5zZm9ybS5qcworKysgL2Rldi9udWxsCkBAIC0x
LDM5ICswLDAgQEAKLWZ1bmN0aW9uIGFwcGVuZFRvQnVmZmVyKGJ1ZmZlciwgdmFsdWUpIHsKLSAg
ICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXlCdWZmZXIoYnVmZmVyLmJ5dGVMZW5ndGggKyAxKTsK
LSAgICBjb25zdCBieXRlUmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkocmVzdWx0KTsKLSAgICBieXRl
UmVzdWx0LnNldChuZXcgVWludDhBcnJheShidWZmZXIpLCAwKTsKLSAgICBieXRlUmVzdWx0W2J1
ZmZlci5ieXRlTGVuZ3RoXSA9IHZhbHVlOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLW9ucnRj
dHJhbnNmb3JtID0gKGV2ZW50KSA9PiB7Ci0gICAgY29uc3QgdHJhbnNmb3JtZXIgPSBldmVudC50
cmFuc2Zvcm1lcjsKLQotICAgIHRyYW5zZm9ybWVyLnJlYWRlciA9IHRyYW5zZm9ybWVyLnJlYWRh
YmxlLmdldFJlYWRlcigpOwotICAgIHRyYW5zZm9ybWVyLndyaXRlciA9IHRyYW5zZm9ybWVyLndy
aXRhYmxlLmdldFdyaXRlcigpOwotCi0gICAgZnVuY3Rpb24gcHJvY2Vzcyh0cmFuc2Zvcm1lcikK
LSAgICB7Ci0gICAgICAgIHRyYW5zZm9ybWVyLnJlYWRlci5yZWFkKCkudGhlbihjaHVuayA9PiB7
Ci0gICAgICAgICAgICBpZiAoY2h1bmsuZG9uZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICBpZiAodHJhbnNmb3JtZXIub3B0aW9ucy5uYW1lID09PSAnc2VuZGVyMScpCi0g
ICAgICAgICAgICAgICAgY2h1bmsudmFsdWUuZGF0YSA9IGFwcGVuZFRvQnVmZmVyKGNodW5rLnZh
bHVlLmRhdGEsIDEpOwotICAgICAgICAgICAgZWxzZSBpZiAodHJhbnNmb3JtZXIub3B0aW9ucy5u
YW1lID09PSAnc2VuZGVyMicpCi0gICAgICAgICAgICAgICAgY2h1bmsudmFsdWUuZGF0YSA9IGFw
cGVuZFRvQnVmZmVyKGNodW5rLnZhbHVlLmRhdGEsIDIpOwotICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBuZXcgVWludDhBcnJheShjaHVuay52YWx1ZS5k
YXRhKVtjaHVuay52YWx1ZS5kYXRhLmJ5dGVMZW5ndGggLSAxXTsKLSAgICAgICAgICAgICAgICBp
ZiAodmFsdWUgIT09IDEgJiYgdmFsdWUgIT09IDIpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYu
cG9zdE1lc3NhZ2UoInVuZXhwZWN0ZWQgdmFsdWU6ICIgKyB2YWx1ZSk7Ci0gICAgICAgICAgICAg
ICAgZWxzZSBpZiAodmFsdWUgPT09IDIpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYucG9zdE1l
c3NhZ2UoImdvdCB2YWx1ZSAyIik7Ci0gICAgICAgICAgICAgICAgY2h1bmsudmFsdWUuZGF0YSA9
IGNodW5rLnZhbHVlLmRhdGEuc2xpY2UoMCwgY2h1bmsudmFsdWUuZGF0YS5ieXRlTGVuZ3RoIC0g
MSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0cmFuc2Zvcm1lci53cml0ZXIud3JpdGUo
Y2h1bmsudmFsdWUpOwotICAgICAgICAgICAgcHJvY2Vzcyh0cmFuc2Zvcm1lcik7Ci0gICAgICAg
IH0pOwotICAgIH0KLQotICAgIHByb2Nlc3ModHJhbnNmb3JtZXIpOwotfTsKLXNlbGYucG9zdE1l
c3NhZ2UoInJlZ2lzdGVyZWQiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YnJ0Yy9tZXRhZGF0YS10cmFuc2Zvcm0td29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2VicnRjL21ldGFkYXRhLXRyYW5zZm9ybS13b3JrZXIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAzYmExZjRlZTZlMDk3NmE2OGQ2MDdkZTk4MjRkMmZkMjNkYWFjZDAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2VicnRjL21ldGFkYXRhLXRyYW5zZm9ybS13b3JrZXIuanMKKysrIC9kZXYvbnVsbApA
QCAtMSwyNCArMCwwIEBACi1vbnJ0Y3RyYW5zZm9ybSA9IChldmVudCkgPT4gewotICAgIGNvbnN0
IHRyYW5zZm9ybWVyID0gZXZlbnQudHJhbnNmb3JtZXI7Ci0KLSAgICB0cmFuc2Zvcm1lci5yZWFk
ZXIgPSB0cmFuc2Zvcm1lci5yZWFkYWJsZS5nZXRSZWFkZXIoKTsKLSAgICB0cmFuc2Zvcm1lci53
cml0ZXIgPSB0cmFuc2Zvcm1lci53cml0YWJsZS5nZXRXcml0ZXIoKTsKLQotICAgIGxldCBpc0Zp
cnN0RnJhbWUgPSB0cnVlOwotICAgIGZ1bmN0aW9uIHByb2Nlc3ModHJhbnNmb3JtZXIpCi0gICAg
ewotICAgICAgICB0cmFuc2Zvcm1lci5yZWFkZXIucmVhZCgpLnRoZW4oY2h1bmsgPT4gewotICAg
ICAgICAgICAgaWYgKGNodW5rLmRvbmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgICAgICBpZiAoaXNGaXJzdEZyYW1lKSB7Ci0gICAgICAgICAgICAgICAgaXNGaXJzdEZyYW1l
ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7IG5hbWU6IHRyYW5z
Zm9ybWVyLm9wdGlvbnMubmFtZSwgdGltZXN0YW1wOiBjaHVuay52YWx1ZS50aW1lc3RhbXAsIG1l
dGFkYXRhOiBjaHVuay52YWx1ZS5nZXRNZXRhZGF0YSgpIH0pOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgdHJhbnNmb3JtZXIud3JpdGVyLndyaXRlKGNodW5rLnZhbHVlKTsKLSAgICAgICAg
ICAgIHByb2Nlc3ModHJhbnNmb3JtZXIpOwotICAgICAgICB9KTsKLSAgICB9Ci0gICAgcHJvY2Vz
cyh0cmFuc2Zvcm1lcik7Ci19Owotc2VsZi5wb3N0TWVzc2FnZSgicmVnaXN0ZXJlZCIpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL21ldGFkYXRhLXRyYW5zZm9ybS5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL21ldGFkYXRhLXRyYW5zZm9ybS5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODU5NWZmNjk1NzZhYTA3ZGRiYTJlY2Y5
ZGM1MjE3NDFiMjQ3ZjgyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9tZXRhZGF0YS10cmFuc2Zvcm0uaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLTwhZG9jdHlwZSBodG1sPgotPGh0bWw+
Ci0gICAgPGhlYWQ+Ci0gICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICAgICAgPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotICAgICAgICA8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPC9oZWFkPgotICAgIDxib2R5PgotICAgICAgICA8dmlkZW8gaWQ9InZpZGVvMSIgYXV0b3Bs
YXk+PC92aWRlbz4KLSAgICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+
Ci0gICAgICAgIDxzY3JpcHQ+Ci1hc3luYyBmdW5jdGlvbiB3YWl0Rm9yTWVzc2FnZSh3b3JrZXIs
IGRhdGEpCi17Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBh
d2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+
IHJlc29sdmUoZXZlbnQuZGF0YSkpOwotICAgICAgICBpZiAoZGF0YSA9PT0gcmVjZWl2ZWQpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi1hc3luYyBmdW5jdGlvbiBnYXRoZXJNZXRh
ZGF0YShhdWRpbykKLXsKLSAgICB3b3JrZXIgPSBuZXcgV29ya2VyKCdtZXRhZGF0YS10cmFuc2Zv
cm0td29ya2VyLmpzJyk7Ci0gICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29s
dmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOwotCi0gICAgY29uc3QgbG9j
YWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVk
aW86IGF1ZGlvLCB2aWRlbzogIWF1ZGlvfSk7Ci0KLSAgICBsZXQgc2VuZGVyLCByZWNlaXZlcjsK
LSAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdv
cmtlciwge25hbWU6J3NlbmRlcid9KTsKLSAgICBjb25zdCByZWNlaXZlclRyYW5zZm9ybSA9IG5l
dyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZToncmVjZWl2ZXInfSk7Ci0KLSAg
ICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgIGNyZWF0
ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKLSAgICAgICAgICAgIHBjMSA9IGZp
cnN0Q29ubmVjdGlvbjsKLSAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRU
cmFjayhsb2NhbFN0cmVhbS5nZXRUcmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOwotICAgICAgICAg
ICAgc2VuZGVyLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKLSAgICAgICAgfSwgKHNlY29u
ZENvbm5lY3Rpb24pID0+IHsKLSAgICAgICAgICAgIHBjMiA9IHNlY29uZENvbm5lY3Rpb247Ci0g
ICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4gewot
ICAgICAgICAgICAgICAgIHJlY2VpdmVyID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKLSAgICAgICAg
ICAgICAgICByZWNlaXZlci50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKLSAgICAgICAg
ICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7Ci0gICAgICAgICAgICB9Owot
ICAgICAgICB9KTsKLSAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQg
b3V0IiksIDUwMDApOwotICAgIH0pOwotCi0gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZl
LCByZWplY3QpID0+IHsKLSAgICAgICAgbGV0IHNlbmRlck1ldGFkYXRhLCBzZW5kZXJUaW1lc3Rh
bXA7Ci0gICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHsKLSAgICAgICAgICAg
IGlmIChldmVudC5kYXRhLm5hbWUgPT09ICdzZW5kZXInKSB7Ci0gICAgICAgICAgICAgICAgc2Vu
ZGVyTWV0YWRhdGEgPSBldmVudC5kYXRhLm1ldGFkYXRhOwotICAgICAgICAgICAgICAgIHNlbmRl
clRpbWVzdGFtcCA9IGV2ZW50LmRhdGEudGltZXN0YW1wOwotICAgICAgICAgICAgfSBlbHNlIGlm
IChldmVudC5kYXRhLm5hbWUgPT09ICdyZWNlaXZlcicpCi0gICAgICAgICAgICAgICByZXNvbHZl
KFtzZW5kZXJNZXRhZGF0YSwgc2VuZGVyVGltZXN0YW1wLCBldmVudC5kYXRhLm1ldGFkYXRhLCBl
dmVudC5kYXRhLnRpbWVzdGFtcF0pOwotICAgICAgICB9OwotICAgICAgICBzZXRUaW1lb3V0KCgp
ID0+IHJlamVjdCgiTWV0YWRhdGEgdGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7IAotICAgIH0pOwot
fQotCi1wcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKLSAgICBjb25zdCBbc2VuZGVyTWV0
YWRhdGEsIHNlbmRlclRpbWVzdGFtcCwgcmVjZWl2ZXJNZXRhZGF0YSwgcmVjZWl2ZXJUaW1lc3Rh
bXBdID0gYXdhaXQgZ2F0aGVyTWV0YWRhdGEodHJ1ZSk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKHNl
bmRlclRpbWVzdGFtcCwgcmVjZWl2ZXJUaW1lc3RhbXAsICJ0aW1lc3RhbXAiKTsKLSAgICBhc3Nl
cnRfdHJ1ZSghIXNlbmRlck1ldGFkYXRhLnN5bmNocm9uaXphdGlvblNvdXJjZSwgInNzcmMiKTsK
LSAgICBhc3NlcnRfZXF1YWxzKHNlbmRlck1ldGFkYXRhLnN5bmNocm9uaXphdGlvblNvdXJjZSwg
cmVjZWl2ZXJNZXRhZGF0YS5zeW5jaHJvbml6YXRpb25Tb3VyY2UsICJzc3JjIik7Ci0gICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhzZW5kZXJNZXRhZGF0YS5jb250cmlidXRpbmdTb3VyY2VzLCByZWNl
aXZlck1ldGFkYXRhLmNvbnRyaWJ1dGluZ1NvdXJjZXMsICJjc3JjIik7Ci19LCAiYXVkaW8gZXhj
aGFuZ2Ugd2l0aCB0cmFuc2Zvcm0iKTsKLQotcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7
Ci0gICAgY29uc3QgW3NlbmRlck1ldGFkYXRhLCBzZW5kZXJUaW1lc3RhbXAsIHJlY2VpdmVyTWV0
YWRhdGEsIHJlY2VpdmVyVGltZXN0YW1wXSA9IGF3YWl0IGdhdGhlck1ldGFkYXRhKHRydWUpOwot
Ci0gICAgYXNzZXJ0X2VxdWFscyhzZW5kZXJUaW1lc3RhbXAsIHJlY2VpdmVyVGltZXN0YW1wLCAi
dGltZXN0YW1wIik7Ci0gICAgYXNzZXJ0X3RydWUoISFzZW5kZXJNZXRhZGF0YS5zeW5jaHJvbml6
YXRpb25Tb3VyY2UsICJzc3JjIik7Ci0gICAgYXNzZXJ0X2VxdWFscyhzZW5kZXJNZXRhZGF0YS5z
eW5jaHJvbml6YXRpb25Tb3VyY2UsIHJlY2VpdmVyTWV0YWRhdGEuc3luY2hyb25pemF0aW9uU291
cmNlLCAic3NyYyIpOwotICAgIGFzc2VydF9lcXVhbHMoc2VuZGVyTWV0YWRhdGEuaGVpZ2h0LCBy
ZWNlaXZlck1ldGFkYXRhLmhlaWdodCwgImhlaWdodCIpOwotICAgIGFzc2VydF9lcXVhbHMoc2Vu
ZGVyTWV0YWRhdGEud2lkdGgsIHJlY2VpdmVyTWV0YWRhdGEud2lkdGgsICJ3aWR0aCIpOwotICAg
IGFzc2VydF9lcXVhbHMoc2VuZGVyTWV0YWRhdGEuc3BhdGlhbEluZGV4LCByZWNlaXZlck1ldGFk
YXRhLnNwYXRpYWxJbmRleCwgInNwYXRpYWxJbmRleCIpOwotICAgIGFzc2VydF9lcXVhbHMoc2Vu
ZGVyTWV0YWRhdGEudGVtcG9yYWxJbmRleCwgcmVjZWl2ZXJNZXRhZGF0YS50ZW1wb3JhbEluZGV4
LCAidGVtcG9yYWxJbmRleCIpOwotfSwgInZpZGVvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtIik7
Ci0gICAgICAgIDwvc2NyaXB0PgotICAgIDwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDVlYTk5Y2QyYmY3MzJjZjA1ODJhMmFlZjExOTlhMTQ5NzM4MjY5ZWMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanMKKysrIC9kZXYvbnVsbApAQCAtMSwy
NSArMCwwIEBACi1vbnJ0Y3RyYW5zZm9ybSA9IChldmVudCkgPT4gewotICAgIGNvbnN0IHRyYW5z
Zm9ybWVyID0gZXZlbnQudHJhbnNmb3JtZXI7Ci0gICAgdHJhbnNmb3JtZXIub3B0aW9ucy5wb3J0
Lm9ubWVzc2FnZSA9IChldmVudCkgPT4gdHJhbnNmb3JtZXIub3B0aW9ucy5wb3J0LnBvc3RNZXNz
YWdlKGV2ZW50LmRhdGEpOwotCi0gICAgc2VsZi5wb3N0TWVzc2FnZSgic3RhcnRlZCIpOwotICAg
IHRyYW5zZm9ybWVyLnJlYWRlciA9IHRyYW5zZm9ybWVyLnJlYWRhYmxlLmdldFJlYWRlcigpOwot
ICAgIHRyYW5zZm9ybWVyLndyaXRlciA9IHRyYW5zZm9ybWVyLndyaXRhYmxlLmdldFdyaXRlcigp
OwotCi0gICAgZnVuY3Rpb24gcHJvY2Vzcyh0cmFuc2Zvcm1lcikKLSAgICB7Ci0gICAgICAgIHRy
YW5zZm9ybWVyLnJlYWRlci5yZWFkKCkudGhlbihjaHVuayA9PiB7Ci0gICAgICAgICAgICBpZiAo
Y2h1bmsuZG9uZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAoY2h1
bmsudmFsdWUgaW5zdGFuY2VvZiBSVENFbmNvZGVkVmlkZW9GcmFtZSkKLSAgICAgICAgICAgICAg
ICBzZWxmLnBvc3RNZXNzYWdlKCJ2aWRlbyBjaHVuayIpOwotICAgICAgICAgICAgZWxzZSBpZiAo
Y2h1bmsudmFsdWUgaW5zdGFuY2VvZiBSVENFbmNvZGVkQXVkaW9GcmFtZSkKLSAgICAgICAgICAg
ICAgICBzZWxmLnBvc3RNZXNzYWdlKCJhdWRpbyBjaHVuayIpOwotICAgICAgICAgICAgdHJhbnNm
b3JtZXIud3JpdGVyLndyaXRlKGNodW5rLnZhbHVlKTsKLSAgICAgICAgICAgIHByb2Nlc3ModHJh
bnNmb3JtZXIpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBwcm9jZXNzKHRyYW5zZm9ybWVy
KTsKLX07Ci1zZWxmLnBvc3RNZXNzYWdlKCJyZWdpc3RlcmVkIik7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1pbi13b3JrZXIuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLWluLXdvcmtlci5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjgwMjYwNTJiZmE5N2JkMWExYjhm
ZDlkNzcxNjgyMTg5Y2QxZmQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLWlu
LXdvcmtlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotPCFkb2N0eXBlIGh0
bWw+Ci08aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgot
ICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Ci0gICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KLSAgICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgICAgIDx2aWRlbyBpZD0idmlk
ZW8xIiBjb250cm9scyBhdXRvcGxheT48L3ZpZGVvPgotICAgICAgICA8c2NyaXB0IHNyYyA9InJv
dXRpbmVzLmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdD4KLWFzeW5jIGZ1bmN0aW9uIHdh
aXRGb3JNZXNzYWdlKHdvcmtlciwgZGF0YSkKLXsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAg
ICBjb25zdCByZWNlaXZlZCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9u
bWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7Ci0gICAgICAgIGlmIChk
YXRhID09PSByZWNlaXZlZCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLXByb21p
c2VfdGVzdChhc3luYyAodGVzdCkgPT4gewotICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3NmcmFt
ZS10cmFuc2Zvcm0uanMnKTsKLSAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVz
b2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEp
KTsKLSAgICBhc3NlcnRfZXF1YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7Ci0gICAgY29uc3QgbG9j
YWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IHZp
ZGVvOiB0cnVlIH0pOwotCi0gICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7Ci0gICAgY29uc3Qgc2Vu
ZGVyVHJhbnNmb3JtID0gbmV3IFNGcmFtZVRyYW5zZm9ybSh7IGNvbXBhdGliaWxpdHlNb2RlOiAi
SDI2NCIgfSk7Ci0gICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0
VHJhbnNmb3JtKHdvcmtlciwgIlNGcmFtZVJUQ1J0cFRyYW5zZm9ybSIpOwotCi0gICAgY29uc3Qg
a2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIG5ldyBVaW50OEFycmF5
KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYsIDIxOSwgMjQsIDkzLCAyNiwg
MTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZlQml0cyIsICJkZXJpdmVLZXki
XSk7Ci0gICAgc2VuZGVyVHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5KTsKLQotICAgIGNv
bnN0IHN0YXJ0ZWRQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNz
YWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKLQotICAgIGNvbnN0IHN0cmVh
bSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgY3Jl
YXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4gewotICAgICAgICAgICAgcGMxID0g
Zmlyc3RDb25uZWN0aW9uOwotICAgICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFk
ZFRyYWNrKGxvY2FsU3RyZWFtLmdldFRyYWNrcygpWzBdLCBsb2NhbFN0cmVhbSk7Ci0gICAgICAg
ICAgICBzZW5kZXIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtOwotICAgICAgICB9LCAoc2Vj
b25kQ29ubmVjdGlvbikgPT4gewotICAgICAgICAgICAgcGMyID0gc2Vjb25kQ29ubmVjdGlvbjsK
LSAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7
Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOwotICAgICAg
ICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOwotICAgICAg
ICAgICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsKLSAgICAgICAgICAgIH07
Ci0gICAgICAgIH0pOwotICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1l
ZCBvdXQiKSwgNTAwMCk7Ci0gICAgfSk7Ci0KLSAgICB2aWRlbzEuc3JjT2JqZWN0ID0gc3RyZWFt
OwotICAgIGF3YWl0IHZpZGVvMS5wbGF5KCk7Ci19LCAidmlkZW8gZXhjaGFuZ2Ugd2l0aCBTRnJh
bWUgdHJhbnNmb3JtIGluIHdvcmtlciIpOwotICAgICAgICA8L3NjcmlwdD4KLSAgICA8L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1l
LXRyYW5zZm9ybS1yZWFkYWJsZS1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
cnRjL3NmcmFtZS10cmFuc2Zvcm0tcmVhZGFibGUtY3Jhc2guaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZmRlZTVhNjJhMTRkZWMyOTEzNjJhNGNjZTY1N2JmNDdkZDNiZDAwOC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJsZS1jcmFzaC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotPGlmcmFtZSBzcmM9Ii4iIGlkPSJmcmFtZSI+
PC9pZnJhbWU+Ci08c2NyaXB0Pgotb25sb2FkID0gYXN5bmMgKCkgPT4gewotaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotY29uc3QgdHJhbnNmb3Jt
ID0gbmV3IGZyYW1lLmNvbnRlbnRXaW5kb3cuU0ZyYW1lVHJhbnNmb3JtOwotZnJhbWUucmVtb3Zl
KCk7Ci10cmFuc2Zvcm0ucmVhZGFibGU7Ci19Ci08L3NjcmlwdD4KLTxwPlRoaXMgdGVzdCBzaG91
bGQgbm90IGNyYXNoLjwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0
Yy9zZnJhbWUtdHJhbnNmb3JtLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2Zy
YW1lLXRyYW5zZm9ybS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTQwMTM1
YjA0ZjRmODViYTY3OWIwMTgwMjhiMzk1NDI1N2MxN2E4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJh
bWUtdHJhbnNmb3JtLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotPCFkb2N0
eXBlIGh0bWw+Ci08aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAgPG1ldGEgY2hhcnNldD0idXRm
LTgiPgotICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KLSAgICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgICAgIDxzY3JpcHQ+
Ci0KLXByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewotICAgIGNvbnN0IHBjID0gbmV3IFJU
Q1BlZXJDb25uZWN0aW9uKCk7Ci0gICAgY29uc3Qgc2VuZGVyVHJhbnNmb3JtID0gbmV3IFNGcmFt
ZVRyYW5zZm9ybSgpOwotICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNmb3JtID0gbmV3IFNGcmFtZVRy
YW5zZm9ybSgpOwotICAgIGNvbnN0IHNlbmRlcjEgPSBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8n
KS5zZW5kZXI7Ci0gICAgY29uc3Qgc2VuZGVyMiA9IHBjLmFkZFRyYW5zY2VpdmVyKCd2aWRlbycp
LnNlbmRlcjsKLSAgICBjb25zdCByZWNlaXZlcjEgPSBwYy5nZXRSZWNlaXZlcnMoKVswXTsKLSAg
ICBjb25zdCByZWNlaXZlcjIgPSBwYy5nZXRSZWNlaXZlcnMoKVsxXTsKLQotICAgIHNlbmRlcjEu
dHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtOwotICAgIHJlY2VpdmVyMS50cmFuc2Zvcm0gPSBy
ZWNlaXZlclRyYW5zZm9ybTsKLSAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJy
b3IiLCAoKSA9PiBzZW5kZXIyLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybSk7Ci0gICAgYXNz
ZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4gcmVjZWl2ZXIyLnRyYW5z
Zm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtKTsKLQotICAgIHNlbmRlcjEudHJhbnNmb3JtID0gc2Vu
ZGVyVHJhbnNmb3JtOwotICAgIHJlY2VpdmVyMS50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9y
bTsKLQotICAgIHNlbmRlcjEudHJhbnNmb3JtID0gbnVsbDsKLSAgICByZWNlaXZlcjEudHJhbnNm
b3JtID0gbnVsbDsKLX0sICJDYW5ub3QgcmV1c2UgYXR0YWNoZWQgdHJhbnNmb3JtcyIpOwotCi10
ZXN0KCgpID0+IHsKLSAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgU0ZyYW1lVHJhbnNm
b3JtKCk7Ci0KLSAgICBhc3NlcnRfdHJ1ZShzZW5kZXJUcmFuc2Zvcm0ucmVhZGFibGUgaW5zdGFu
Y2VvZiBSZWFkYWJsZVN0cmVhbSk7Ci0gICAgYXNzZXJ0X3RydWUoc2VuZGVyVHJhbnNmb3JtLndy
aXRhYmxlIGluc3RhbmNlb2YgV3JpdGFibGVTdHJlYW0pOwotfSwgIlNGcmFtZVRyYW5zZm9ybSBl
eHBvc2VzIHJlYWRhYmxlIGFuZCB3cml0YWJsZSIpOwotCi1wcm9taXNlX3Rlc3QoYXN5bmMgKHRl
c3QpID0+IHsKLSAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgIGNv
bnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oKTsKLSAgICBjb25zdCBy
ZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oKTsKLSAgICBjb25zdCBzZW5k
ZXIxID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJykuc2VuZGVyOwotICAgIGNvbnN0IHNlbmRl
cjIgPSBwYy5hZGRUcmFuc2NlaXZlcigndmlkZW8nKS5zZW5kZXI7Ci0gICAgY29uc3QgcmVjZWl2
ZXIxID0gcGMuZ2V0UmVjZWl2ZXJzKClbMF07Ci0gICAgY29uc3QgcmVjZWl2ZXIyID0gcGMuZ2V0
UmVjZWl2ZXJzKClbMV07Ci0KLSAgICBhc3NlcnRfZmFsc2Uoc2VuZGVyVHJhbnNmb3JtLnJlYWRh
YmxlLmxvY2tlZCwgInNlbmRlciByZWFkYWJsZSBiZWZvcmUiKTsKLSAgICBhc3NlcnRfZmFsc2Uo
c2VuZGVyVHJhbnNmb3JtLndyaXRhYmxlLmxvY2tlZCwgInNlbmRlciB3cml0YWJsZSBiZWZvcmUi
KTsKLSAgICBhc3NlcnRfZmFsc2UocmVjZWl2ZXJUcmFuc2Zvcm0ucmVhZGFibGUubG9ja2VkLCAi
cmVjZWl2ZXIgcmVhZGFibGUgYmVmb3JlIik7Ci0gICAgYXNzZXJ0X2ZhbHNlKHJlY2VpdmVyVHJh
bnNmb3JtLndyaXRhYmxlLmxvY2tlZCwgInJlY2VpdmVyIHdyaXRhYmxlIGJlZm9yZSIpOwotCi0g
ICAgc2VuZGVyMS50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07Ci0gICAgcmVjZWl2ZXIxLnRy
YW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOwotCi0gICAgYXNzZXJ0X3RydWUoc2VuZGVyVHJh
bnNmb3JtLnJlYWRhYmxlLmxvY2tlZCwgInNlbmRlciByZWFkYWJsZSBkdXJpbmciKTsKLSAgICBh
c3NlcnRfdHJ1ZShzZW5kZXJUcmFuc2Zvcm0ud3JpdGFibGUubG9ja2VkLCAic2VuZGVyIHdyaXRh
YmxlIGR1cmluZyIpOwotICAgIGFzc2VydF90cnVlKHJlY2VpdmVyVHJhbnNmb3JtLnJlYWRhYmxl
LmxvY2tlZCwgInJlY2VpdmVyIHJlYWRhYmxlIGR1cmluZyIpOwotICAgIGFzc2VydF90cnVlKHJl
Y2VpdmVyVHJhbnNmb3JtLndyaXRhYmxlLmxvY2tlZCwgInJlY2VpdmVyIHdyaXRhYmxlIGR1cmlu
ZyIpOwotCi0gICAgc2VuZGVyMS50cmFuc2Zvcm0gPSBudWxsOwotICAgIHJlY2VpdmVyMS50cmFu
c2Zvcm0gPSBudWxsOwotCi0gICAgYXNzZXJ0X3RydWUoc2VuZGVyVHJhbnNmb3JtLnJlYWRhYmxl
LmxvY2tlZCwgInNlbmRlciByZWFkYWJsZSBhZnRlciIpOwotICAgIGFzc2VydF90cnVlKHNlbmRl
clRyYW5zZm9ybS53cml0YWJsZS5sb2NrZWQsICJzZW5kZXIgd3JpdGFibGUgYWZ0ZXIiKTsKLSAg
ICBhc3NlcnRfdHJ1ZShyZWNlaXZlclRyYW5zZm9ybS5yZWFkYWJsZS5sb2NrZWQsICJyZWNlaXZl
ciByZWFkYWJsZSBhZnRlciIpOwotICAgIGFzc2VydF90cnVlKHJlY2VpdmVyVHJhbnNmb3JtLndy
aXRhYmxlLmxvY2tlZCwgInJlY2VpdmVyIHdyaXRhYmxlIGFmdGVyIik7Ci19LCAicmVhZGFibGUv
d3JpdGFibGUgYXJlIGxvY2tlZCB3aGVuIGF0dGFjaGVkIGFuZCBhZnRlciBiZWluZyBhdHRhY2hl
ZCIpOwotCi1wcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKLSAgICBjb25zdCBrZXkgPSBh
d2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3IiwgbmV3IFVpbnQ4QXJyYXkoWzE0Mywg
NzcsIDQzLCAxMCwgNzIsIDE5LCAzNywgNjcsIDIzNiwgMjE5LCAyNCwgOTMsIDI2LCAxNjUsIDkx
LCAxNzhdKSwgIkhLREYiLCBmYWxzZSwgWyJkZXJpdmVCaXRzIiwgImRlcml2ZUtleSJdKTsKLQot
ICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oeyByb2xlIDog
J2VuY3J5cHQnLCBhdXRoZW50aWNhdGlvblNpemU6IDEwIH0pOwotICAgIHNlbmRlclRyYW5zZm9y
bS5zZXRFbmNyeXB0aW9uS2V5KGtleSk7Ci0KLSAgICBjb25zdCByZWNlaXZlclRyYW5zZm9ybSA9
IG5ldyBTRnJhbWVUcmFuc2Zvcm0oeyByb2xlIDogJ2RlY3J5cHQnLCBhdXRoZW50aWNhdGlvblNp
emU6IDEwIH0pOwotICAgIHJlY2VpdmVyVHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5KTsK
LQotICAgIGNvbnN0IHdyaXRlciA9IHNlbmRlclRyYW5zZm9ybS53cml0YWJsZS5nZXRXcml0ZXIo
KTsKLSAgICBjb25zdCByZWFkZXIgPSByZWNlaXZlclRyYW5zZm9ybS5yZWFkYWJsZS5nZXRSZWFk
ZXIoKTsKLQotICAgIHNlbmRlclRyYW5zZm9ybS5yZWFkYWJsZS5waXBlVG8ocmVjZWl2ZXJUcmFu
c2Zvcm0ud3JpdGFibGUpOwotCi0gICAgY29uc3Qgc2VudCA9IG5ldyBBcnJheUJ1ZmZlcig4KTsK
LSAgICBjb25zdCB2aWV3ID0gbmV3IEludDhBcnJheShzZW50KTsKLSAgICBmb3IgKGxldCBjcHRy
ID0gMDsgY3B0ciA8IHNlbnQuYnl0ZUxlbmd0aDsgKytjcHRyKQotICAgICAgICB2aWV3W2NwdHJd
ID0gY3B0cjsKLQotICAgIHdyaXRlci53cml0ZShzZW50KTsKLSAgICBjb25zdCByZWNlaXZlZCA9
IGF3YWl0IHJlYWRlci5yZWFkKCk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKHJlY2VpdmVkLnZhbHVl
LmJ5dGVMZW5ndGgsIDgpOwotICAgIGNvbnN0IHZpZXcyID0gbmV3IEludDhBcnJheShyZWNlaXZl
ZC52YWx1ZSk7Ci0gICAgZm9yIChsZXQgY3B0ciA9IDA7IGNwdHIgPCBzZW50LmJ5dGVMZW5ndGg7
ICsrY3B0cikKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh2aWV3MltjcHRyXSwgdmlld1tjcHRyXSk7
Ci19LCAiU0ZyYW1lIHdpdGggYXJyYXkgYnVmZmVyIC0gYXV0aGVudGljYXRpb24gc2l6ZSAxMCIp
OwotCi1wcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKLSAgICBjb25zdCBrZXkgPSBhd2Fp
dCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3IiwgbmV3IFVpbnQ4QXJyYXkoWzE0MywgNzcs
IDQzLCAxMCwgNzIsIDE5LCAzNywgNjcsIDIzNiwgMjE5LCAyNCwgOTMsIDI2LCAxNjUsIDkxLCAx
NzhdKSwgIkhLREYiLCBmYWxzZSwgWyJkZXJpdmVCaXRzIiwgImRlcml2ZUtleSJdKTsKLQotICAg
IGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oeyByb2xlIDogJ2Vu
Y3J5cHQnLCBhdXRoZW50aWNhdGlvblNpemU6IDEwIH0pOwotICAgIGNvbnN0IHNlbmRlcldyaXRl
ciA9IHNlbmRlclRyYW5zZm9ybS53cml0YWJsZS5nZXRXcml0ZXIoKTsKLSAgICBjb25zdCBzZW5k
ZXJSZWFkZXIgPSBzZW5kZXJUcmFuc2Zvcm0ucmVhZGFibGUuZ2V0UmVhZGVyKCk7Ci0KLSAgICBj
b25zdCByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oeyByb2xlIDogJ2Rl
Y3J5cHQnLCBhdXRoZW50aWNhdGlvblNpemU6IDEwIH0pOwotICAgIGNvbnN0IHJlY2VpdmVyV3Jp
dGVyID0gcmVjZWl2ZXJUcmFuc2Zvcm0ud3JpdGFibGUuZ2V0V3JpdGVyKCk7Ci0gICAgY29uc3Qg
cmVjZWl2ZXJSZWFkZXIgPSByZWNlaXZlclRyYW5zZm9ybS5yZWFkYWJsZS5nZXRSZWFkZXIoKTsK
LQotICAgIHNlbmRlclRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleSk7Ci0gICAgcmVjZWl2
ZXJUcmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkpOwotCi0gICAgY29uc3QgY2h1bmsgPSBu
ZXcgQXJyYXlCdWZmZXIoOCk7Ci0KLSAgICAvLyBkZWNyeXB0aW9uIHNob3VsZCBmYWlsLCBsZWFk
aW5nIHRvIGFuIGVtcHR5IGFycmF5IGJ1ZmZlci4KLSAgICBhd2FpdCByZWNlaXZlcldyaXRlci53
cml0ZShjaHVuayk7Ci0gICAgbGV0IHJlY2VpdmVkID0gYXdhaXQgcmVjZWl2ZXJSZWFkZXIucmVh
ZCgpOwotICAgIGFzc2VydF9lcXVhbHMocmVjZWl2ZWQudmFsdWUuYnl0ZUxlbmd0aCwgMCk7Ci0K
LSAgICAvLyBXZSB3cml0ZSBhZ2FpbiBidXQgdGhpcyB0aW1lIHdpdGggYSBjaHVuayB3ZSBjYW4g
ZGVjcnlwdC4KLSAgICBhd2FpdCBzZW5kZXJXcml0ZXIud3JpdGUoY2h1bmspOwotICAgIGNvbnN0
IGVuY3J5cHRlZCA9IGF3YWl0IHNlbmRlclJlYWRlci5yZWFkKCk7Ci0gICAgYXdhaXQgcmVjZWl2
ZXJXcml0ZXIud3JpdGUoZW5jcnlwdGVkLnZhbHVlKTsKLSAgICByZWNlaXZlZCA9IGF3YWl0IHJl
Y2VpdmVyUmVhZGVyLnJlYWQoKTsKLSAgICBhc3NlcnRfZXF1YWxzKHJlY2VpdmVkLnZhbHVlLmJ5
dGVMZW5ndGgsIDgpOwotfSwgIlNGcmFtZSBkZWNyeXB0aW9uIHdpdGggYXJyYXkgYnVmZmVyIHRo
YXQgaXMgdG9vIHNtYWxsIik7Ci0KLXByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewotICAg
IGNvbnN0IGtleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLCBuZXcgVWlu
dDhBcnJheShbMTQzLCA3NywgNDMsIDEwLCA3MiwgMTksIDM3LCA2NywgMjM2LCAyMTksIDI0LCA5
MywgMjYsIDE2NSwgOTEsIDE3OF0pLCAiSEtERiIsIGZhbHNlLCBbImRlcml2ZUJpdHMiLCAiZGVy
aXZlS2V5Il0pOwotCi0gICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgU0ZyYW1lVHJh
bnNmb3JtKHsgcm9sZSA6ICdkZWNyeXB0JywgYXV0aGVudGljYXRpb25TaXplOiAxMCB9KTsKLSAg
ICBjb25zdCByZWNlaXZlcldyaXRlciA9IHJlY2VpdmVyVHJhbnNmb3JtLndyaXRhYmxlLmdldFdy
aXRlcigpOwotICAgIHJlY2VpdmVyVHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5KTsKLQot
ICAgIC8vIGRlY3J5cHRpb24gc2hvdWxkIGZhaWwsIGxlYWRpbmcgdG8gZXJyb3JpbmcgdGhlIHRy
YW5zZm9ybS4KLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfanModGVzdCwgVHlwZUVycm9yLCBy
ZWNlaXZlcldyaXRlci53cml0ZSh7IH0pKTsKLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfanMo
dGVzdCwgVHlwZUVycm9yLCByZWNlaXZlcldyaXRlci5jbG9zZWQpOwotfSwgIlNGcmFtZSB0cmFu
c2Zvcm0gZ2V0cyBlcnJvcmVkIGlmIHRyeWluZyB0byBwcm9jZXNzIHVuZXhwZWN0ZWQgdmFsdWUg
dHlwZXMiKTsKLQotICAgICAgICA8L3NjcmlwdD4KLSAgICA8L2JvZHk+Ci08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS5qcyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLmpzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTdjZjBhMzhhYTA4NTlmYTZlZThhZjAxZmRhYjVmOTRi
NWJlYjE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLmpzCisrKyAvZGV2L251
bGwKQEAgLTEsNyArMCwwIEBACi1vbnJ0Y3RyYW5zZm9ybSA9IChldmVudCkgPT4gewotICAgIGNv
bnN0IHNmcmFtZVRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oeyByb2xlIDogImRlY3J5
cHQiLCBhdXRoZW50aWNhdGlvblNpemU6ICIxMCIsIGNvbXBhdGliaWxpdHlNb2RlOiAiSDI2NCIg
fSk7Ci0gICAgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIG5ldyBVaW50OEFycmF5KFsx
NDMsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYsIDIxOSwgMjQsIDkzLCAyNiwgMTY1
LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZlQml0cyIsICJkZXJpdmVLZXkiXSku
dGhlbihrZXkgPT4gc2ZyYW1lVHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5KSk7Ci0gICAg
Y29uc3QgdHJhbnNmb3JtZXIgPSBldmVudC50cmFuc2Zvcm1lcjsKLSAgICB0cmFuc2Zvcm1lci5y
ZWFkYWJsZS5waXBlVGhyb3VnaChzZnJhbWVUcmFuc2Zvcm0pLnBpcGVUbyh0cmFuc2Zvcm1lci53
cml0YWJsZSk7Ci19Ci1zZWxmLnBvc3RNZXNzYWdlKCJyZWdpc3RlcmVkIik7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvd2VicnRjLWxhdGUtdHJhbnNmb3JtLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvd2VicnRjLWxhdGUtdHJhbnNmb3JtLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZmYxNzM3ODNiNDIzYTUzMzFmYTUyNTQ1
MDRkZGNjNDU1OTFiMmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy1sYXRlLXRyYW5zZm9ybS5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotPCFkb2N0eXBlIGh0bWw+Ci08aHRt
bD4KLSAgICA8aGVhZD4KLSAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgotICAgICAgICA8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci0gICAgICAg
IDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
LSAgICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgICAgIDx2aWRlbyBjb250cm9scyBpZD0idmlk
ZW8iIGF1dG9wbGF5PjwvdmlkZW8+Ci0gICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjY0MCIgaGVpZ2h0PSI0ODAiPjwvY2FudmFzPgotICAgICAgICA8c2NyaXB0IHNyYyA9InJvdXRp
bmVzLmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdD4KLWZ1bmN0aW9uIGdyYWJGcmFtZURh
dGEoeCwgeSwgdywgaCkKLXsKLSAgICBjYW52YXMud2lkdGggPSB2aWRlby52aWRlb1dpZHRoOwot
ICAgIGNhbnZhcy5oZWlnaHQgPSB2aWRlby52aWRlb0hlaWdodDsKLQotICAgIGNhbnZhcy5nZXRD
b250ZXh0KCcyZCcpLmRyYXdJbWFnZSh2aWRlbywgeCwgeSwgdywgaCwgeCwgeSwgdywgaCk7Ci0g
ICAgcmV0dXJuIGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLmdldEltYWdlRGF0YSh4LCB5LCB3LCBo
KS5kYXRhOwotfQotCi1mdW5jdGlvbiBnZXRDaXJjbGVJbWFnZURhdGEoKQotewotICAgIHJldHVy
biBncmFiRnJhbWVEYXRhKDQ1MCwgMTAwLCAxNTAsIDEwMCk7Ci19Ci0KLWFzeW5jIGZ1bmN0aW9u
IGNoZWNrVmlkZW9Jc1VwZGF0ZWQoc2hvdWxkQmVVcGRhdGVkLCBjb3VudCwgcmVmZXJlbmNlRGF0
YSkKLXsKLSAgICBpZiAoY291bnQgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgY291bnQgPSAwOwot
ICAgIGVsc2UgaWYgKGNvdW50ID49IDIwKQotICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qo
ImNoZWNrVmlkZW9Jc1VwZGF0ZWQgdGltZWQgb3V0IDoiICsgc2hvdWxkQmVVcGRhdGVkICsgIiAi
ICsgY291bnQpOwotCi0gICAgaWYgKHJlZmVyZW5jZURhdGEgPT09IHVuZGVmaW5lZCkKLSAgICAg
ICAgcmVmZXJlbmNlRGF0YSA9IGdldENpcmNsZUltYWdlRGF0YSgpOwotCi0gICAgYXdhaXQgd2Fp
dEZvcigyMDApOwotICAgIGNvbnN0IG5ld0RhdGEgPSBnZXRDaXJjbGVJbWFnZURhdGEoKTsKLQot
ICAgIGlmIChzaG91bGRCZVVwZGF0ZWQgPT09IChKU09OLnN0cmluZ2lmeShyZWZlcmVuY2VEYXRh
KSAhPT0gSlNPTi5zdHJpbmdpZnkobmV3RGF0YSkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBh
d2FpdCBjaGVja1ZpZGVvSXNVcGRhdGVkKHNob3VsZEJlVXBkYXRlZCwgKytjb3VudCwgbmV3RGF0
YSk7Ci19Ci0KLXByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewotICAgIGNvbnN0IGxvY2Fs
U3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe3ZpZGVv
OiB0cnVlfSk7Ci0gICAgY29uc3Qgc2VuZGVyVHJhbnNmb3JtID0gbmV3IFNGcmFtZVRyYW5zZm9y
bSh7IGNvbXBhdGliaWxpdHlNb2RlOiAiSDI2NCIgfSk7Ci0gICAgY29uc3QgcmVjZWl2ZXJUcmFu
c2Zvcm0gPSBuZXcgU0ZyYW1lVHJhbnNmb3JtKHsgY29tcGF0aWJpbGl0eU1vZGU6ICJIMjY0IiB9
KTsKLSAgICBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3IiwgbmV3IFVpbnQ4QXJy
YXkoWzE0MywgNzcsIDQzLCAxMCwgNzIsIDE5LCAzNywgNjcsIDIzNiwgMjE5LCAyNCwgOTMsIDI2
LCAxNjUsIDkxLCAxNzhdKSwgIkhLREYiLCBmYWxzZSwgWyJkZXJpdmVCaXRzIiwgImRlcml2ZUtl
eSJdKS50aGVuKGtleSA9PiB7Ci0gICAgICAgc2VuZGVyVHJhbnNmb3JtLnNldEVuY3J5cHRpb25L
ZXkoa2V5KTsKLSAgICAgICByZWNlaXZlclRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleSk7
Ci0gICAgfSk7Ci0KLSAgICBsZXQgc2VuZGVyLCByZWNlaXZlcjsKLSAgICBjb25zdCBzdHJlYW0g
PSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgIGNyZWF0
ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKLSAgICAgICAgICAgIHBjMSA9IGZp
cnN0Q29ubmVjdGlvbjsKLSAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRU
cmFjayhsb2NhbFN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLCBsb2NhbFN0cmVhbSk7Ci0gICAg
ICAgICAgICBzZW5kZXIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtOwotICAgICAgICB9LCAo
c2Vjb25kQ29ubmVjdGlvbikgPT4gewotICAgICAgICAgICAgcGMyID0gc2Vjb25kQ29ubmVjdGlv
bjsKLSAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9
PiB7Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOwotICAg
ICAgICAgICAgICAgIC8vIHdlIGRvIG5vdCBzZXQgdGhlIHJlY2VpdmVyIHRyYW5zZm9ybSBoZXJl
OwotICAgICAgICAgICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsKLSAgICAg
ICAgICAgIH07Ci0gICAgICAgIH0sIHsKLSAgICAgICAgICAgIG9ic2VydmVPZmZlciA6IChvZmZl
cikgPT4gewotICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVzID0gb2ZmZXIuc2RwLnNwbGl0KCdc
clxuJyk7Ci0gICAgICAgICAgICAgICAgY29uc3QgaDI2NExpbmVzID0gbGluZXMuZmlsdGVyKGxp
bmUgPT4gbGluZS5pbmRleE9mKCJhPWZtdHAiKSA9PT0gMCAmJiBsaW5lLmluZGV4T2YoIjQyZTAx
ZiIpICE9PSAtMSk7Ci0gICAgICAgICAgICAgICAgY29uc3QgYmFzZWxpbmVOdW1iZXIgPSBoMjY0
TGluZXNbMF0uc3Vic3RyaW5nKDYpLnNwbGl0KCcgJylbMF07Ci0gICAgICAgICAgICAgICAgb2Zm
ZXIuc2RwID0gbGluZXMuZmlsdGVyKGxpbmUgPT4gewotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gKGxpbmUuaW5kZXhPZignYT1mbXRwJykgPT09IC0xICYmIGxpbmUuaW5kZXhPZignYT1ydGNw
LWZiJykgPT09IC0xICYmIGxpbmUuaW5kZXhPZignYT1ydHBtYXAnKSA9PT0gLTEpIHx8IGxpbmUu
aW5kZXhPZihiYXNlbGluZU51bWJlcikgIT09IC0xOwotICAgICAgICAgICAgICAgIH0pLmpvaW4o
J1xyXG4nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgICAgIHNldFRpbWVvdXQo
KCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKLSAgICB9KTsKLQotICAgIHZp
ZGVvLnNyY09iamVjdCA9IHN0cmVhbTsKLSAgICB2aWRlby5wbGF5KCk7Ci0KLSAgICAvLyBXZSBz
ZXQgdGhlIHJlY2VpdmVyIHRyYW5zZm9ybSBoZXJlIHNvIHRoYXQgdGhlIGRlY29kZXIgcHJvYmFi
bHkgdHJpZWQgdG8gZGVjb2RlIHNmcmFtZSBjb250ZW50LgotICAgIHNldFRpbWVvdXQoKCkgPT4g
cmVjZWl2ZXIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm0sIDUwKTsKLSAgICBhd2FpdCBj
aGVja1ZpZGVvSXNVcGRhdGVkKHRydWUpOwotfSwgInZpZGVvIGV4Y2hhbmdlIHdpdGggbGF0ZSBy
ZWNlaXZlciB0cmFuc2Zvcm0iKTsKLSAgICAgICAgPC9zY3JpcHQ+Ci0gICAgPC9ib2R5PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFu
c2Zvcm0uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3Jt
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxMmQyOTRjYTVmZGY1MzFmZDEy
OTEyZWQ5MjhiNWFkYTMxZjJjZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0u
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCwwIEBACi08IWRvY3R5cGUgaHRtbD4KLTxo
dG1sPgotICAgIDxoZWFkPgotICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgICAg
IDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLSAgICAg
ICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgotICAgIDwvaGVhZD4KLSAgICA8Ym9keT4KLSAgICAgICAgPHZpZGVvIGlkPSJ2aWRlbzEiIGF1
dG9wbGF5PjwvdmlkZW8+Ci0gICAgICAgIDx2aWRlbyBpZD0idmlkZW8yIiBhdXRvcGxheT48L3Zp
ZGVvPgotICAgICAgICA8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpzIj48L3NjcmlwdD4KLSAgICAg
ICAgPHNjcmlwdD4KLWFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JNZXNzYWdlKHdvcmtlciwgZGF0YSkK
LXsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBjb25zdCByZWNlaXZlZCA9IGF3YWl0IG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2
ZShldmVudC5kYXRhKSk7Ci0gICAgICAgIGlmIChkYXRhID09PSByZWNlaXZlZCkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLXByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewot
ICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3NjcmlwdC10cmFuc2Zvcm0uanMnKTsKLSAgICBjb25z
dCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0g
KGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKLSAgICBhc3NlcnRfZXF1YWxzKGRhdGEs
ICJyZWdpc3RlcmVkIik7Ci0KLSAgICBjb25zdCBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVs
OwotICAgIGNvbnN0IHRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2Vy
LCB7bmFtZTonTW9ja1JUQ1J0cFRyYW5zZm9ybScsIHBvcnQ6IGNoYW5uZWwucG9ydDJ9LCBbY2hh
bm5lbC5wb3J0Ml0pOwotICAgIHRyYW5zZm9ybS5wb3J0ID0gY2hhbm5lbC5wb3J0MTsKLSAgICBj
b25zdCBwcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0cmFuc2Zvcm0ucG9ydC5vbm1l
c3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOwotICAgIHRyYW5zZm9ybS5w
b3J0LnBvc3RNZXNzYWdlKCJ0ZXN0Iik7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBwcm9taXNl
LCAidGVzdCIpOwotfSwgInRyYW5zZm9ybSBtZXNzYWdpbmciKTsKLQotcHJvbWlzZV90ZXN0KGFz
eW5jICh0ZXN0KSA9PiB7Ci0gICAgd29ya2VyID0gbmV3IFdvcmtlcignc2NyaXB0LXRyYW5zZm9y
bS5qcycpOwotICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdv
cmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOwotICAgIGFz
c2VydF9lcXVhbHMoZGF0YSwgInJlZ2lzdGVyZWQiKTsKLQotICAgIGNvbnN0IHBjID0gbmV3IFJU
Q1BlZXJDb25uZWN0aW9uKCk7Ci0KLSAgICBjb25zdCBzZW5kZXJDaGFubmVsID0gbmV3IE1lc3Nh
Z2VDaGFubmVsOwotICAgIGNvbnN0IHJlY2VpdmVyQ2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5l
bDsKLSAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
KHdvcmtlciwge25hbWU6J01vY2tSVENSdHBUcmFuc2Zvcm0nLCBwb3J0OiBzZW5kZXJDaGFubmVs
LnBvcnQyfSwgW3NlbmRlckNoYW5uZWwucG9ydDJdKTsKLSAgICBjb25zdCByZWNlaXZlclRyYW5z
Zm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZTonTW9ja1JUQ1J0
cFRyYW5zZm9ybScsIHBvcnQ6IHJlY2VpdmVyQ2hhbm5lbC5wb3J0Mn0sIFtyZWNlaXZlckNoYW5u
ZWwucG9ydDJdKTsKLSAgICBzZW5kZXJUcmFuc2Zvcm0ucG9ydCA9IHNlbmRlckNoYW5uZWwucG9y
dDE7Ci0gICAgcmVjZWl2ZXJUcmFuc2Zvcm0ucG9ydCA9IHJlY2VpdmVyQ2hhbm5lbC5wb3J0MTsK
LQotICAgIGNvbnN0IHNlbmRlcjEgPSBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8nKS5zZW5kZXI7
Ci0gICAgY29uc3Qgc2VuZGVyMiA9IHBjLmFkZFRyYW5zY2VpdmVyKCd2aWRlbycpLnNlbmRlcjsK
LSAgICBjb25zdCByZWNlaXZlcjEgPSBwYy5nZXRSZWNlaXZlcnMoKVswXTsKLSAgICBjb25zdCBy
ZWNlaXZlcjIgPSBwYy5nZXRSZWNlaXZlcnMoKVsxXTsKLQotICAgIHNlbmRlcjEudHJhbnNmb3Jt
ID0gc2VuZGVyVHJhbnNmb3JtOwotICAgIHJlY2VpdmVyMS50cmFuc2Zvcm0gPSByZWNlaXZlclRy
YW5zZm9ybTsKLSAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9
PiBzZW5kZXIyLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybSk7Ci0gICAgYXNzZXJ0X3Rocm93
c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4gcmVjZWl2ZXIyLnRyYW5zZm9ybSA9IHJl
Y2VpdmVyVHJhbnNmb3JtKTsKLQotICAgIHNlbmRlcjEudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNm
b3JtOwotICAgIHJlY2VpdmVyMS50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKLQotICAg
IHNlbmRlcjEudHJhbnNmb3JtID0gbnVsbDsKLSAgICByZWNlaXZlcjEudHJhbnNmb3JtID0gbnVs
bDsKLX0sICJDYW5ub3QgcmV1c2UgYXR0YWNoZWQgdHJhbnNmb3JtcyIpOwotCi1wcm9taXNlX3Rl
c3QoYXN5bmMgKHRlc3QpID0+IHsKLSAgICB3b3JrZXIgPSBuZXcgV29ya2VyKCdzY3JpcHQtdHJh
bnNmb3JtLmpzJyk7Ci0gICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUg
PT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOwotICAgIGNvbnN0IGxvY2FsU3Ry
ZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0
cnVlfSk7Ci0KLSAgICBjb25zdCBzZW5kZXJDaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwot
ICAgIGNvbnN0IHJlY2VpdmVyQ2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICBsZXQg
c2VuZGVyLCByZWNlaXZlcjsKLSAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRw
U2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25hbWU6J01vY2tSVENSdHBUcmFuc2Zvcm0nLCBwb3J0
OiBzZW5kZXJDaGFubmVsLnBvcnQyfSwgW3NlbmRlckNoYW5uZWwucG9ydDJdKTsKLSAgICBjb25z
dCByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7
bmFtZTonTW9ja1JUQ1J0cFRyYW5zZm9ybScsIHBvcnQ6IHJlY2VpdmVyQ2hhbm5lbC5wb3J0Mn0s
IFtyZWNlaXZlckNoYW5uZWwucG9ydDJdKTsKLSAgICBzZW5kZXJUcmFuc2Zvcm0ucG9ydCA9IHNl
bmRlckNoYW5uZWwucG9ydDE7Ci0gICAgcmVjZWl2ZXJUcmFuc2Zvcm0ucG9ydCA9IHJlY2VpdmVy
Q2hhbm5lbC5wb3J0MTsKLQotICAgIGNvbnN0IHN0YXJ0ZWRQcm9taXNlID0gbmV3IFByb21pc2Uo
cmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRh
dGEpKTsKLQotICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCBy
ZWplY3QpID0+IHsKLSAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikg
PT4gewotICAgICAgICAgICAgcGMxID0gZmlyc3RDb25uZWN0aW9uOwotICAgICAgICAgICAgc2Vu
ZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldEF1ZGlvVHJhY2tz
KClbMF0sIGxvY2FsU3RyZWFtKTsKLSAgICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0gPSBzZW5k
ZXJUcmFuc2Zvcm07Ci0gICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7Ci0gICAgICAg
ICAgICBwYzIgPSBzZWNvbmRDb25uZWN0aW9uOwotICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlv
bi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICByZWNlaXZlciA9
IHRyYWNrRXZlbnQucmVjZWl2ZXI7Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJhbnNmb3Jt
ID0gcmVjZWl2ZXJUcmFuc2Zvcm07Ci0gICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50
LnN0cmVhbXNbMF0pOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHNldFRp
bWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKLSAgICB9KTsKLQot
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgc3RhcnRlZFByb21pc2UsICJzdGFydGVkIik7Ci0KLSAg
ICBhd2FpdCB3YWl0Rm9yTWVzc2FnZSh3b3JrZXIsICJhdWRpbyBjaHVuayIpOwotCi0gICAgdmlk
ZW8xLnNyY09iamVjdCA9IHN0cmVhbTsKLSAgICBhd2FpdCB2aWRlbzEucGxheSgpOwotfSwgImF1
ZGlvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtIik7Ci0KLXByb21pc2VfdGVzdChhc3luYyAodGVz
dCkgPT4gewotICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3NjcmlwdC10cmFuc2Zvcm0uanMnKTsK
LSAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25t
ZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKLSAgICBhc3NlcnRfZXF1
YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7Ci0KLSAgICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0
IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzogdHJ1ZX0pOwotCi0g
ICAgY29uc3Qgc2VuZGVyQ2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICBjb25zdCBy
ZWNlaXZlckNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgbGV0IHNlbmRlciwgcmVj
ZWl2ZXI7Ci0gICAgY29uc3Qgc2VuZGVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybSh3b3JrZXIsIHtuYW1lOidNb2NrUlRDUnRwVHJhbnNmb3JtJywgcG9ydDogc2VuZGVyQ2hh
bm5lbC5wb3J0Mn0sIFtzZW5kZXJDaGFubmVsLnBvcnQyXSk7Ci0gICAgY29uc3QgcmVjZWl2ZXJU
cmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25hbWU6J01vY2tS
VENSdHBUcmFuc2Zvcm0nLCBwb3J0OiByZWNlaXZlckNoYW5uZWwucG9ydDJ9LCBbcmVjZWl2ZXJD
aGFubmVsLnBvcnQyXSk7Ci0gICAgc2VuZGVyVHJhbnNmb3JtLnBvcnQgPSBzZW5kZXJDaGFubmVs
LnBvcnQxOwotICAgIHJlY2VpdmVyVHJhbnNmb3JtLnBvcnQgPSByZWNlaXZlckNoYW5uZWwucG9y
dDE7Ci0KLSAgICBjb25zdCBzdGFydGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
d29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7Ci0KLSAg
ICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7
Ci0gICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKLSAgICAg
ICAgICAgIHBjMSA9IGZpcnN0Q29ubmVjdGlvbjsKLSAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0
Q29ubmVjdGlvbi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLCBsb2Nh
bFN0cmVhbSk7Ci0gICAgICAgICAgICBzZW5kZXIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3Jt
OwotICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4gewotICAgICAgICAgICAgcGMyID0g
c2Vjb25kQ29ubmVjdGlvbjsKLSAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9
ICh0cmFja0V2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50
LnJlY2VpdmVyOwotICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHJlY2VpdmVy
VHJhbnNmb3JtOwotICAgICAgICAgICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1zWzBd
KTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0pOwotICAgICAgICBzZXRUaW1lb3V0KCgpID0+
IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7Ci0gICAgfSk7Ci0KLSAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IHN0YXJ0ZWRQcm9taXNlLCAic3RhcnRlZCIpOwotCi0gICAgYXdhaXQgd2Fp
dEZvck1lc3NhZ2Uod29ya2VyLCAidmlkZW8gY2h1bmsiKTsKLQotICAgIHZpZGVvMS5zcmNPYmpl
Y3QgPSBzdHJlYW07Ci0gICAgYXdhaXQgdmlkZW8xLnBsYXkoKTsKLX0sICJ2aWRlbyBleGNoYW5n
ZSB3aXRoIHRyYW5zZm9ybSIpOwotICAgICAgICA8L3NjcmlwdD4KLSAgICA8L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvd3JpdGUtdHdpY2Ut
dHJhbnNmb3JtLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvd3JpdGUtdHdpY2Ut
dHJhbnNmb3JtLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5OGI1YTNjNTcx
YTQ5MjkyZmQzMTEzYTQ4ODFiMWNlYzcwNzFlNjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dyaXRlLXR3
aWNlLXRyYW5zZm9ybS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotPCFkb2N0
eXBlIGh0bWw+Ci08aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAgPG1ldGEgY2hhcnNldD0idXRm
LTgiPgotICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KLSAgICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgICAgIDx2aWRlbyBp
ZD0idmlkZW8xIiBhdXRvcGxheT48L3ZpZGVvPgotICAgICAgICA8dmlkZW8gaWQ9InZpZGVvMiIg
YXV0b3BsYXk+PC92aWRlbz4KLSAgICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9z
Y3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQ+Ci1hc3luYyBmdW5jdGlvbiB3YWl0Rm9yTWVzc2FnZSh3
b3JrZXIsIGRhdGEpCi17Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgY29uc3QgcmVjZWl2
ZWQgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZl
bnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOwotICAgICAgICBpZiAoZGF0YSA9PT0gcmVjZWl2
ZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi1wcm9taXNlX3Rlc3QoYXN5bmMg
KHRlc3QpID0+IHsKLSAgICB3b3JrZXIgPSBuZXcgV29ya2VyKCd3cml0ZS10d2ljZS10cmFuc2Zv
cm0uanMnKTsKLSAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3
b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKLSAgICBh
c3NlcnRfZXF1YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7Ci0KLSAgICBjb25zdCBsb2NhbFN0cmVh
bSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzogdHJ1
ZX0pOwotCi0gICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7Ci0gICAgY29uc3Qgc2VuZGVyVHJhbnNm
b3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsIHtuYW1lOidNb2NrUlRDUnRw
VHJhbnNmb3JtJywgc2lkZTonc2VuZGVyJywgcm9sZTonZW5jcnlwdCd9KTsKLSAgICBjb25zdCBy
ZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFt
ZTonTW9ja1JUQ1J0cFRyYW5zZm9ybScsIHNpZGU6J3JlY2VpdmVyJywgcm9sZTonZGVjcnlwdCd9
KTsKLQotICAgIGNvbnN0IHN0YXJ0ZWRQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3
b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKLQotICAg
IGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsK
LSAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4gewotICAgICAg
ICAgICAgcGMxID0gZmlyc3RDb25uZWN0aW9uOwotICAgICAgICAgICAgc2VuZGVyID0gZmlyc3RD
b25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0sIGxvY2Fs
U3RyZWFtKTsKLSAgICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07
Ci0gICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7Ci0gICAgICAgICAgICBwYzIgPSBz
ZWNvbmRDb25uZWN0aW9uOwotICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0g
KHRyYWNrRXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICByZWNlaXZlciA9IHRyYWNrRXZlbnQu
cmVjZWl2ZXI7Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJhbnNmb3JtID0gcmVjZWl2ZXJU
cmFuc2Zvcm07Ci0gICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0p
OwotICAgICAgICAgICAgfTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHNldFRpbWVvdXQoKCkgPT4g
cmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKLSAgICB9KTsKLQotICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgc3RhcnRlZFByb21pc2UsICJzdGFydGVkIik7Ci0KLSAgICB2aWRlbzEuc3Jj
T2JqZWN0ID0gc3RyZWFtOwotICAgIGF3YWl0IHZpZGVvMS5wbGF5KCk7Ci19LCAidmlkZW8gZXhj
aGFuZ2Ugd2l0aCB3cml0ZSB0d2ljZSB0cmFuc2Zvcm0iKTsKLSAgICAgICAgPC9zY3JpcHQ+Ci0g
ICAgPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
cnRjL3dyaXRlLXR3aWNlLXRyYW5zZm9ybS5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0
Yy93cml0ZS10d2ljZS10cmFuc2Zvcm0uanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDVkNDI4YzgxYjNhYTU0MzQzMTllMTBmYmVjNmEwMDc1YTdkNDBiOTguLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
cnRjL3dyaXRlLXR3aWNlLXRyYW5zZm9ybS5qcworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAg
QEAKLW9ucnRjdHJhbnNmb3JtID0gKGV2ZW50KSA9PiB7Ci0gICAgY29uc3QgdHJhbnNmb3JtZXIg
PSBldmVudC50cmFuc2Zvcm1lcjsKLQotICAgIHNlbGYucG9zdE1lc3NhZ2UoInN0YXJ0ZWQiKTsK
LQotICAgIHRyYW5zZm9ybWVyLnJlYWRlciA9IHRyYW5zZm9ybWVyLnJlYWRhYmxlLmdldFJlYWRl
cigpOwotICAgIHRyYW5zZm9ybWVyLndyaXRlciA9IHRyYW5zZm9ybWVyLndyaXRhYmxlLmdldFdy
aXRlcigpOwotICAgIGZ1bmN0aW9uIHByb2Nlc3ModHJhbnNmb3JtZXIpCi0gICAgewotICAgICAg
ICB0cmFuc2Zvcm1lci5yZWFkZXIucmVhZCgpLnRoZW4oY2h1bmsgPT4gewotICAgICAgICAgICAg
aWYgKGNodW5rLmRvbmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICB0
cmFuc2Zvcm1lci53cml0ZXIud3JpdGUoY2h1bmsudmFsdWUpOwotICAgICAgICAgICAgdHJhbnNm
b3JtZXIud3JpdGVyLndyaXRlKGNodW5rLnZhbHVlKTsKLSAgICAgICAgICAgIHByb2Nlc3ModHJh
bnNmb3JtZXIpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBwcm9jZXNzKHRyYW5zZm9ybWVy
KTsKLX07Ci1zZWxmLnBvc3RNZXNzYWdlKCJyZWdpc3RlcmVkIik7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRy
YW5zZm9ybS9yb3V0aW5lcy5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3JvdXRpbmVzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjRkYjdmMzk2MjFjYzg5MTI4OGZlN2ZiNWIxMDdlYjlkYmYyMWZjMmEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1l
bmNvZGVkLXRyYW5zZm9ybS9yb3V0aW5lcy5qcwpAQCAtMCwwICsxLDMyIEBACithc3luYyBmdW5j
dGlvbiBjcmVhdGVDb25uZWN0aW9ucyh0ZXN0LCBzZXR1cExvY2FsQ29ubmVjdGlvbiwgc2V0dXBS
ZW1vdGVDb25uZWN0aW9uLCBkb05vdENsb3NlQXV0bW9hdGljYWxseSkgeworICAgIGNvbnN0IGxv
Y2FsQ29ubmVjdGlvbiA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIGNvbnN0IHJlbW90
ZUNvbm5lY3Rpb24gPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKworICAgIHJlbW90ZUNvbm5l
Y3Rpb24ub25pY2VjYW5kaWRhdGUgPSAoZXZlbnQpID0+IHsgbG9jYWxDb25uZWN0aW9uLmFkZElj
ZUNhbmRpZGF0ZShldmVudC5jYW5kaWRhdGUpOyB9OworICAgIGxvY2FsQ29ubmVjdGlvbi5vbmlj
ZWNhbmRpZGF0ZSA9IChldmVudCkgPT4geyByZW1vdGVDb25uZWN0aW9uLmFkZEljZUNhbmRpZGF0
ZShldmVudC5jYW5kaWRhdGUpOyB9OworCisgICAgYXdhaXQgc2V0dXBMb2NhbENvbm5lY3Rpb24o
bG9jYWxDb25uZWN0aW9uKTsKKyAgICBhd2FpdCBzZXR1cFJlbW90ZUNvbm5lY3Rpb24ocmVtb3Rl
Q29ubmVjdGlvbik7CisKKyAgICBjb25zdCBvZmZlciA9IGF3YWl0IGxvY2FsQ29ubmVjdGlvbi5j
cmVhdGVPZmZlcigpOworICAgIGF3YWl0IGxvY2FsQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0
aW9uKG9mZmVyKTsKKyAgICBhd2FpdCByZW1vdGVDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0
aW9uKG9mZmVyKTsKKworICAgIGNvbnN0IGFuc3dlciA9IGF3YWl0IHJlbW90ZUNvbm5lY3Rpb24u
Y3JlYXRlQW5zd2VyKCk7CisgICAgYXdhaXQgcmVtb3RlQ29ubmVjdGlvbi5zZXRMb2NhbERlc2Ny
aXB0aW9uKGFuc3dlcik7CisgICAgYXdhaXQgbG9jYWxDb25uZWN0aW9uLnNldFJlbW90ZURlc2Ny
aXB0aW9uKGFuc3dlcik7CisKKyAgICBpZiAoIWRvTm90Q2xvc2VBdXRtb2F0aWNhbGx5KSB7Cisg
ICAgICAgIHRlc3QuYWRkX2NsZWFudXAoKCkgPT4geworICAgICAgICAgICAgbG9jYWxDb25uZWN0
aW9uLmNsb3NlKCk7CisgICAgICAgICAgICByZW1vdGVDb25uZWN0aW9uLmNsb3NlKCk7CisgICAg
ICAgIH0pOworICAgIH0KKworICAgIHJldHVybiBbbG9jYWxDb25uZWN0aW9uLCByZW1vdGVDb25u
ZWN0aW9uXTsKK30KKworZnVuY3Rpb24gd2FpdEZvcih0ZXN0LCBkdXJhdGlvbikKK3sKKyAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHRlc3Quc3RlcF90aW1lb3V0KHJlc29sdmUs
IGR1cmF0aW9uKSk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtYXVkaW8tdHJh
bnNmb3JtLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1hdWRpby10cmFuc2Zvcm0td29y
a2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdjYjQzNzEzZDNhYTRkZmE3OTEwNDYwNTAwMjY3ZjY2NGMyYjAz
ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtYXVkaW8tdHJhbnNmb3Jt
LXdvcmtlci5qcwpAQCAtMCwwICsxLDMwIEBACitjbGFzcyBNb2NrUlRDUnRwVHJhbnNmb3JtZXIg
eworICAgIGNvbnN0cnVjdG9yKHRyYW5zZm9ybWVyKSB7CisgICAgICAgIHRoaXMuY29udGV4dCA9
IHRyYW5zZm9ybWVyOworICAgICAgICB0aGlzLnN0YXJ0KCk7CisgICAgfQorICAgIHN0YXJ0KCkK
KyAgICB7CisgICAgICAgIHRoaXMucmVhZGVyID0gdGhpcy5jb250ZXh0LnJlYWRhYmxlLmdldFJl
YWRlcigpOworICAgICAgICB0aGlzLndyaXRlciA9IHRoaXMuY29udGV4dC53cml0YWJsZS5nZXRX
cml0ZXIoKTsKKyAgICAgICAgdGhpcy5wcm9jZXNzKCk7CisgICAgICAgIHRoaXMuY29udGV4dC5v
cHRpb25zLnBvcnQucG9zdE1lc3NhZ2UoInN0YXJ0ZWQgIiArIHRoaXMuY29udGV4dC5vcHRpb25z
Lm1lZGlhVHlwZSArICIgIiArIHRoaXMuY29udGV4dC5vcHRpb25zLnNpZGUpOworICAgIH0KKwor
ICAgIHByb2Nlc3MoKQorICAgIHsKKyAgICAgICAgdGhpcy5yZWFkZXIucmVhZCgpLnRoZW4oY2h1
bmsgPT4geworICAgICAgICAgICAgaWYgKGNodW5rLmRvbmUpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICB0aGlzLndyaXRlci53cml0ZShjaHVuay52YWx1ZSk7CisgICAg
ICAgICAgICB0aGlzLnByb2Nlc3MoKTsKKyAgICAgICAgfSk7CisgICAgfQorfTsKKworb25ydGN0
cmFuc2Zvcm0gPSAoZXZlbnQpID0+IHsKKyAgICBuZXcgTW9ja1JUQ1J0cFRyYW5zZm9ybWVyKGV2
ZW50LnRyYW5zZm9ybWVyKTsKK307CisKK3NlbGYucG9zdE1lc3NhZ2UoInJlZ2lzdGVyZWQiKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1hdWRpby10cmFuc2Zvcm0uaHR0cHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LWF1ZGlvLXRyYW5zZm9ybS5odHRwcy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmFhN2RjN2RiODQ4YzYwMjFkNTA4NzRjNjAxODFjN2RlODIw
MTJkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1hdWRpby10cmFuc2Zv
cm0uaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCisKK1BBU1Mgc2NyaXB0LWF1
ZGlvLXRyYW5zZm9ybQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtYXVkaW8tdHJh
bnNmb3JtLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtYXVkaW8tdHJhbnNmb3JtLmh0
dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRhMDVlNDllZjAwNWQ4Mjg3NjJlNzUxNzcwNmMyYmY3NWM4
YzMzNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1hdWRpby10cmFuc2Zv
cm0uaHR0cHMuaHRtbApAQCAtMCwwICsxLDY1IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHZpZGVvIGlkPSJ2aWRlbyIgYXV0b3BsYXkg
cGxheXNJbmxpbmU+PC92aWRlbz4KKyAgICAgICAgPHNjcmlwdCBzcmM9InJvdXRpbmVzLmpzIj48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KK2Z1bmN0aW9uIHdhaXRGb3JNZXNzYWdlKHRlc3Qs
IHBvcnQsIGRhdGEpCit7CisgICAgbGV0IGdvdE1lc3NhZ2U7CisgICAgY29uc3QgcHJvbWlzZSA9
IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgZ290TWVzc2FnZSA9
IHJlc29sdmU7CisgICAgICAgIHRlc3Quc3RlcF90aW1lb3V0KCgpID0+IHsgcmVqZWN0KCJkaWQg
bm90IGdldCAiICsgZGF0YSkgfSwgNTAwMCk7CisgICAgfSk7CisgICAgcG9ydC5vbm1lc3NhZ2Ug
PSBldmVudCA9PiB7CisgICAgICAgaWYgKGV2ZW50LmRhdGEgPT09IGRhdGEpCisgICAgICAgICAg
IGdvdE1lc3NhZ2UoKTsKKyAgICB9OworICAgIHJldHVybiBwcm9taXNlOworfQorCitwcm9taXNl
X3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICB3b3JrZXIgPSBuZXcgV29ya2VyKCJzY3JpcHQt
YXVkaW8tdHJhbnNmb3JtLXdvcmtlci5qcyIpOworICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBuZXcg
UHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUo
ZXZlbnQuZGF0YSkpOworICAgIGFzc2VydF9lcXVhbHMoZGF0YSwgInJlZ2lzdGVyZWQiKTsKKwor
ICAgIGNvbnN0IGxvY2FsU3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRV
c2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSk7CisKKyAgICBjb25zdCBzZW5kZXJDaGFubmVsID0gbmV3
IE1lc3NhZ2VDaGFubmVsOworICAgIGNvbnN0IHJlY2VpdmVyQ2hhbm5lbCA9IG5ldyBNZXNzYWdl
Q2hhbm5lbDsKKyAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJh
bnNmb3JtKHdvcmtlciwge25hbWU6J01vY2tSVENSdHBUcmFuc2Zvcm0nLCBtZWRpYVR5cGU6J2F1
ZGlvJywgc2lkZTonc2VuZGVyJywgcG9ydDpzZW5kZXJDaGFubmVsLnBvcnQyfSwgW3NlbmRlckNo
YW5uZWwucG9ydDJdKTsKKyAgICBjb25zdCByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBT
Y3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZTonTW9ja1JUQ1J0cFRyYW5zZm9ybScsIG1lZGlh
VHlwZTonYXVkaW8nLCBzaWRlOidyZWNlaXZlcicsIHBvcnQ6cmVjZWl2ZXJDaGFubmVsLnBvcnQy
fSwgW3JlY2VpdmVyQ2hhbm5lbC5wb3J0Ml0pOworICAgIHNlbmRlclRyYW5zZm9ybS5wb3J0ID0g
c2VuZGVyQ2hhbm5lbC5wb3J0MTsKKyAgICByZWNlaXZlclRyYW5zZm9ybS5wb3J0ID0gcmVjZWl2
ZXJDaGFubmVsLnBvcnQxOworCisgICAgcHJvbWlzZTEgPSB3YWl0Rm9yTWVzc2FnZSh0ZXN0LCBz
ZW5kZXJUcmFuc2Zvcm0ucG9ydCwgInN0YXJ0ZWQgYXVkaW8gc2VuZGVyIik7CisgICAgcHJvbWlz
ZTIgPSB3YWl0Rm9yTWVzc2FnZSh0ZXN0LCByZWNlaXZlclRyYW5zZm9ybS5wb3J0LCAic3RhcnRl
ZCBhdWRpbyByZWNlaXZlciIpOworCisgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmV3IFByb21p
c2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBjcmVhdGVDb25uZWN0aW9ucyh0ZXN0
LCAoZmlyc3RDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBzZW5kZXIgPSBmaXJzdENvbm5l
Y3Rpb24uYWRkVHJhY2sobG9jYWxTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSwgbG9jYWxTdHJl
YW0pOworICAgICAgICAgICAgc2VuZGVyLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAg
ICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIHNlY29uZENvbm5l
Y3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcmVjZWl2
ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOworICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5z
Zm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOworICAgICAgICAgICAgICAgIHJlc29sdmUodHJhY2tF
dmVudC5zdHJlYW1zWzBdKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0pOworICAgICAgICB0
ZXN0LnN0ZXBfdGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDApOwor
ICAgIH0pOworCisgICAgYXdhaXQgcHJvbWlzZTE7CisgICAgYXdhaXQgcHJvbWlzZTI7CisKKyAg
ICB2aWRlby5zcmNPYmplY3QgPSBzdHJlYW07CisgICAgcmV0dXJuIHZpZGVvLnBsYXkoKTsKK30p
OworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVk
LXRyYW5zZm9ybS9zY3JpcHQtY2hhbmdlLXRyYW5zZm9ybS13b3JrZXIuanMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9y
bS9zY3JpcHQtY2hhbmdlLXRyYW5zZm9ybS13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODRhN2FhYWMx
ODFkYjRjZTJhYmRhYzI5NWZhYTE1NTUxOTZlOWI5YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJh
bnNmb3JtL3NjcmlwdC1jaGFuZ2UtdHJhbnNmb3JtLXdvcmtlci5qcwpAQCAtMCwwICsxLDM5IEBA
CitmdW5jdGlvbiBhcHBlbmRUb0J1ZmZlcihidWZmZXIsIHZhbHVlKSB7CisgICAgY29uc3QgcmVz
dWx0ID0gbmV3IEFycmF5QnVmZmVyKGJ1ZmZlci5ieXRlTGVuZ3RoICsgMSk7CisgICAgY29uc3Qg
Ynl0ZVJlc3VsdCA9IG5ldyBVaW50OEFycmF5KHJlc3VsdCk7CisgICAgYnl0ZVJlc3VsdC5zZXQo
bmV3IFVpbnQ4QXJyYXkoYnVmZmVyKSwgMCk7CisgICAgYnl0ZVJlc3VsdFtidWZmZXIuYnl0ZUxl
bmd0aF0gPSB2YWx1ZTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitvbnJ0Y3RyYW5zZm9ybSA9
IChldmVudCkgPT4geworICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gZXZlbnQudHJhbnNmb3JtZXI7
CisKKyAgICB0cmFuc2Zvcm1lci5yZWFkZXIgPSB0cmFuc2Zvcm1lci5yZWFkYWJsZS5nZXRSZWFk
ZXIoKTsKKyAgICB0cmFuc2Zvcm1lci53cml0ZXIgPSB0cmFuc2Zvcm1lci53cml0YWJsZS5nZXRX
cml0ZXIoKTsKKworICAgIGZ1bmN0aW9uIHByb2Nlc3ModHJhbnNmb3JtZXIpCisgICAgeworICAg
ICAgICB0cmFuc2Zvcm1lci5yZWFkZXIucmVhZCgpLnRoZW4oY2h1bmsgPT4geworICAgICAgICAg
ICAgaWYgKGNodW5rLmRvbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
aWYgKHRyYW5zZm9ybWVyLm9wdGlvbnMubmFtZSA9PT0gJ3NlbmRlcjEnKQorICAgICAgICAgICAg
ICAgIGNodW5rLnZhbHVlLmRhdGEgPSBhcHBlbmRUb0J1ZmZlcihjaHVuay52YWx1ZS5kYXRhLCAx
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHRyYW5zZm9ybWVyLm9wdGlvbnMubmFtZSA9PT0gJ3Nl
bmRlcjInKQorICAgICAgICAgICAgICAgIGNodW5rLnZhbHVlLmRhdGEgPSBhcHBlbmRUb0J1ZmZl
cihjaHVuay52YWx1ZS5kYXRhLCAyKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIGNvbnN0IHZhbHVlID0gbmV3IFVpbnQ4QXJyYXkoY2h1bmsudmFsdWUuZGF0YSlbY2h1bmsu
dmFsdWUuZGF0YS5ieXRlTGVuZ3RoIC0gMV07CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9
PSAxICYmIHZhbHVlICE9PSAyKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdl
KCJ1bmV4cGVjdGVkIHZhbHVlOiAiICsgdmFsdWUpOworICAgICAgICAgICAgICAgIGVsc2UgaWYg
KHZhbHVlID09PSAyKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKCJnb3Qg
dmFsdWUgMiIpOworICAgICAgICAgICAgICAgIGNodW5rLnZhbHVlLmRhdGEgPSBjaHVuay52YWx1
ZS5kYXRhLnNsaWNlKDAsIGNodW5rLnZhbHVlLmRhdGEuYnl0ZUxlbmd0aCAtIDEpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgdHJhbnNmb3JtZXIud3JpdGVyLndyaXRlKGNodW5rLnZhbHVl
KTsKKyAgICAgICAgICAgIHByb2Nlc3ModHJhbnNmb3JtZXIpOworICAgICAgICB9KTsKKyAgICB9
CisKKyAgICBwcm9jZXNzKHRyYW5zZm9ybWVyKTsKK307CitzZWxmLnBvc3RNZXNzYWdlKCJyZWdp
c3RlcmVkIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtY2hhbmdlLXRyYW5zZm9y
bS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtY2hhbmdlLXRyYW5zZm9y
bS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNlZjQ4M2ZkOWVlY2E0ZTg5ZjNiOWI5
NTg3ZTcwNDZiNDhkMWE5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1j
aGFuZ2UtdHJhbnNmb3JtLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworCitQ
QVNTIGNoYW5nZSBzZW5kZXIgdHJhbnNmb3JtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3Nj
cmlwdC1jaGFuZ2UtdHJhbnNmb3JtLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtY2hh
bmdlLXRyYW5zZm9ybS5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiODc4YzVjMTk2OTExYjA2OTI0
MWY0MTFmNjQ0YTE3NDIzODE3MzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3Jp
cHQtY2hhbmdlLXRyYW5zZm9ybS5odHRwcy5odG1sCkBAIC0wLDAgKzEsNTcgQEAKKzwhZG9jdHlw
ZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8dmlkZW8gaWQ9
InZpZGVvMSIgYXV0b3BsYXkgY29udHJvbHMgcGxheXNpbmxpbmU+PC92aWRlbz4KKyAgICAgICAg
PHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cith
c3luYyBmdW5jdGlvbiB3YWl0Rm9yTWVzc2FnZSh3b3JrZXIsIGRhdGEpCit7CisgICAgd2hpbGUg
KHRydWUpIHsKKyAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkp
OworICAgICAgICBpZiAoZGF0YSA9PT0gcmVjZWl2ZWQpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgfQorfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICB3b3JrZXIgPSBu
ZXcgV29ya2VyKCdzY3JpcHQtY2hhbmdlLXRyYW5zZm9ybS13b3JrZXIuanMnKTsKKyAgICBjb25z
dCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0g
KGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRhdGEs
ICJyZWdpc3RlcmVkIik7CisKKyAgICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5hdmlnYXRv
ci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzogdHJ1ZX0pOworCisgICAgbGV0IHNl
bmRlciwgcmVjZWl2ZXI7CisgICAgY29uc3Qgc2VuZGVyVHJhbnNmb3JtMSA9IG5ldyBSVENSdHBT
Y3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZTonc2VuZGVyMSd9KTsKKyAgICBjb25zdCBzZW5k
ZXJUcmFuc2Zvcm0yID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsIHtuYW1lOidz
ZW5kZXIyJ30pOworICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlw
dFRyYW5zZm9ybSh3b3JrZXIsIHtuYW1lOidyZWNlaXZlcid9KTsKKworICAgIGNvbnN0IHN0cmVh
bSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgY3Jl
YXRlQ29ubmVjdGlvbnModGVzdCwgKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAg
c2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldFZpZGVvVHJh
Y2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKKyAgICAgICAgICAgIGZpcnN0Q29ubmVjdGlvbi5nZXRU
cmFuc2NlaXZlcnMoKVswXS5zZXRDb2RlY1ByZWZlcmVuY2VzKFt7bWltZVR5cGU6ICJ2aWRlby9W
UDgiLCBjbG9ja1JhdGU6IDkwMDAwfV0pOworICAgICAgICAgICAgc2VuZGVyLnRyYW5zZm9ybSA9
IHNlbmRlclRyYW5zZm9ybTE7CisgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7Cisg
ICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4gewor
ICAgICAgICAgICAgICAgIHJlY2VpdmVyID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKKyAgICAgICAg
ICAgICAgICByZWNlaXZlci50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKKyAgICAgICAg
ICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9Owor
ICAgICAgICB9KTsKKyAgICAgICAgdGVzdC5zdGVwX3RpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0
IHRpbWVkIG91dCIpLCA1MDAwKTsKKyAgICB9KTsKKworICAgIHZpZGVvMS5zcmNPYmplY3QgPSBz
dHJlYW07CisgICAgYXdhaXQgdmlkZW8xLnBsYXkoKTsKKworICAgIGNvbnN0IHVwZGF0ZVByb21p
c2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+
IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIHNlbmRlci50cmFuc2Zvcm0gPSBzZW5kZXJUcmFu
c2Zvcm0yOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgdXBkYXRlUHJvbWlzZSwgImdvdCB2YWx1
ZSAyIik7Cit9LCAiY2hhbmdlIHNlbmRlciB0cmFuc2Zvcm0iKTsKKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LWxh
dGUtdHJhbnNmb3JtLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1sYXRl
LXRyYW5zZm9ybS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc3MWJmMWM2YTZhMmZl
MDQyNGUyYTE3OWU3MTY2N2QzMDIyOWEzMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3Jt
L3NjcmlwdC1sYXRlLXRyYW5zZm9ybS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBA
CisKKworUEFTUyB2aWRlbyBleGNoYW5nZSB3aXRoIGxhdGUgcmVjZWl2ZXIgdHJhbnNmb3JtCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1sYXRlLXRyYW5zZm9ybS5odHRwcy5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5j
b2RlZC10cmFuc2Zvcm0vc2NyaXB0LWxhdGUtdHJhbnNmb3JtLmh0dHBzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjlhZDBlMTk5OTI1Mjc1ODkzZWQ2YzczM2Q2YzA1YmRlNzAzMjg4NgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
LWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC1sYXRlLXRyYW5zZm9ybS5odHRwcy5odG1sCkBAIC0w
LDAgKzEsOTAgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5
PgorICAgICAgICA8dmlkZW8gY29udHJvbHMgaWQ9InZpZGVvIiBhdXRvcGxheT48L3ZpZGVvPgor
ICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI2NDAiIGhlaWdodD0iNDgwIj48L2Nh
bnZhcz4KKyAgICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CitmdW5jdGlvbiBncmFiRnJhbWVEYXRhKHgsIHksIHcsIGgpCit7CisgICAg
Y2FudmFzLndpZHRoID0gdmlkZW8udmlkZW9XaWR0aDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gdmlk
ZW8udmlkZW9IZWlnaHQ7CisKKyAgICBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5kcmF3SW1hZ2Uo
dmlkZW8sIHgsIHksIHcsIGgsIHgsIHksIHcsIGgpOworICAgIHJldHVybiBjYW52YXMuZ2V0Q29u
dGV4dCgnMmQnKS5nZXRJbWFnZURhdGEoeCwgeSwgdywgaCkuZGF0YTsKK30KKworZnVuY3Rpb24g
Z2V0Q2lyY2xlSW1hZ2VEYXRhKCkKK3sKKyAgICByZXR1cm4gZ3JhYkZyYW1lRGF0YSg0NTAsIDEw
MCwgMTUwLCAxMDApOworfQorCithc3luYyBmdW5jdGlvbiBjaGVja1ZpZGVvSXNVcGRhdGVkKHRl
c3QsIHNob3VsZEJlVXBkYXRlZCwgY291bnQsIHJlZmVyZW5jZURhdGEpCit7CisgICAgaWYgKGNv
dW50ID09PSB1bmRlZmluZWQpCisgICAgICAgIGNvdW50ID0gMDsKKyAgICBlbHNlIGlmIChjb3Vu
dCA+PSAyMCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJjaGVja1ZpZGVvSXNVcGRh
dGVkIHRpbWVkIG91dCA6IiArIHNob3VsZEJlVXBkYXRlZCArICIgIiArIGNvdW50KTsKKworICAg
IGlmIChyZWZlcmVuY2VEYXRhID09PSB1bmRlZmluZWQpCisgICAgICAgIHJlZmVyZW5jZURhdGEg
PSBnZXRDaXJjbGVJbWFnZURhdGEoKTsKKworICAgIGF3YWl0IHdhaXRGb3IodGVzdCwgMjAwKTsK
KyAgICBjb25zdCBuZXdEYXRhID0gZ2V0Q2lyY2xlSW1hZ2VEYXRhKCk7CisKKyAgICBpZiAoc2hv
dWxkQmVVcGRhdGVkID09PSAoSlNPTi5zdHJpbmdpZnkocmVmZXJlbmNlRGF0YSkgIT09IEpTT04u
c3RyaW5naWZ5KG5ld0RhdGEpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXdhaXQgY2hlY2tW
aWRlb0lzVXBkYXRlZCh0ZXN0LCBzaG91bGRCZVVwZGF0ZWQsICsrY291bnQsIG5ld0RhdGEpOwor
fQorCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCBsb2NhbFN0cmVh
bSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzogdHJ1
ZX0pOworICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oeyBj
b21wYXRpYmlsaXR5TW9kZTogIkgyNjQiIH0pOworICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNmb3Jt
ID0gbmV3IFNGcmFtZVRyYW5zZm9ybSh7IGNvbXBhdGliaWxpdHlNb2RlOiAiSDI2NCIgfSk7Cisg
ICAgYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIG5ldyBVaW50OEFycmF5KFsx
NDMsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYsIDIxOSwgMjQsIDkzLCAyNiwgMTY1
LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZlQml0cyIsICJkZXJpdmVLZXkiXSku
dGhlbihrZXkgPT4geworICAgICAgIHNlbmRlclRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtl
eSk7CisgICAgICAgcmVjZWl2ZXJUcmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkpOworICAg
IH0pOworCisgICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7CisgICAgY29uc3Qgc3RyZWFtID0gYXdh
aXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBjcmVhdGVDb25u
ZWN0aW9ucyh0ZXN0LCAoZmlyc3RDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBwYzEgPSBm
aXJzdENvbm5lY3Rpb247CisgICAgICAgICAgICBzZW5kZXIgPSBmaXJzdENvbm5lY3Rpb24uYWRk
VHJhY2sobG9jYWxTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOworICAg
ICAgICAgICAgc2VuZGVyLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAgICAgICAgfSwg
KHNlY29uZENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIHBjMiA9IHNlY29uZENvbm5lY3Rp
b247CisgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkg
PT4geworICAgICAgICAgICAgICAgIHJlY2VpdmVyID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKKyAg
ICAgICAgICAgICAgICAvLyB3ZSBkbyBub3Qgc2V0IHRoZSByZWNlaXZlciB0cmFuc2Zvcm0gaGVy
ZTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAg
ICAgICAgICB9OworICAgICAgICB9LCB7CisgICAgICAgICAgICBvYnNlcnZlT2ZmZXIgOiAob2Zm
ZXIpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBsaW5lcyA9IG9mZmVyLnNkcC5zcGxpdCgn
XHJcbicpOworICAgICAgICAgICAgICAgIGNvbnN0IGgyNjRMaW5lcyA9IGxpbmVzLmZpbHRlcihs
aW5lID0+IGxpbmUuaW5kZXhPZigiYT1mbXRwIikgPT09IDAgJiYgbGluZS5pbmRleE9mKCI0MmUw
MWYiKSAhPT0gLTEpOworICAgICAgICAgICAgICAgIGNvbnN0IGJhc2VsaW5lTnVtYmVyID0gaDI2
NExpbmVzWzBdLnN1YnN0cmluZyg2KS5zcGxpdCgnICcpWzBdOworICAgICAgICAgICAgICAgIG9m
ZmVyLnNkcCA9IGxpbmVzLmZpbHRlcihsaW5lID0+IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIChsaW5lLmluZGV4T2YoJ2E9Zm10cCcpID09PSAtMSAmJiBsaW5lLmluZGV4T2YoJ2E9cnRj
cC1mYicpID09PSAtMSAmJiBsaW5lLmluZGV4T2YoJ2E9cnRwbWFwJykgPT09IC0xKSB8fCBsaW5l
LmluZGV4T2YoYmFzZWxpbmVOdW1iZXIpICE9PSAtMTsKKyAgICAgICAgICAgICAgICB9KS5qb2lu
KCdcclxuJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICB0ZXN0LnN0ZXBf
dGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDApOworICAgIH0pOwor
CisgICAgdmlkZW8uc3JjT2JqZWN0ID0gc3RyZWFtOworICAgIHZpZGVvLnBsYXkoKTsKKworICAg
IC8vIFdlIHNldCB0aGUgcmVjZWl2ZXIgdHJhbnNmb3JtIGhlcmUgc28gdGhhdCB0aGUgZGVjb2Rl
ciBwcm9iYWJseSB0cmllZCB0byBkZWNvZGUgc2ZyYW1lIGNvbnRlbnQuCisgICAgdGVzdC5zdGVw
X3RpbWVvdXQoKCkgPT4gcmVjZWl2ZXIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm0sIDUw
KTsKKyAgICBhd2FpdCBjaGVja1ZpZGVvSXNVcGRhdGVkKHRlc3QsIHRydWUpOworfSwgInZpZGVv
IGV4Y2hhbmdlIHdpdGggbGF0ZSByZWNlaXZlciB0cmFuc2Zvcm0iKTsKKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0
LW1ldGFkYXRhLXRyYW5zZm9ybS13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtbWV0YWRh
dGEtdHJhbnNmb3JtLXdvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wM2JhMWY0ZWU2ZTA5NzZhNjhkNjA3
ZGU5ODI0ZDJmZDIzZGFhY2QwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0
LW1ldGFkYXRhLXRyYW5zZm9ybS13b3JrZXIuanMKQEAgLTAsMCArMSwyNCBAQAorb25ydGN0cmFu
c2Zvcm0gPSAoZXZlbnQpID0+IHsKKyAgICBjb25zdCB0cmFuc2Zvcm1lciA9IGV2ZW50LnRyYW5z
Zm9ybWVyOworCisgICAgdHJhbnNmb3JtZXIucmVhZGVyID0gdHJhbnNmb3JtZXIucmVhZGFibGUu
Z2V0UmVhZGVyKCk7CisgICAgdHJhbnNmb3JtZXIud3JpdGVyID0gdHJhbnNmb3JtZXIud3JpdGFi
bGUuZ2V0V3JpdGVyKCk7CisKKyAgICBsZXQgaXNGaXJzdEZyYW1lID0gdHJ1ZTsKKyAgICBmdW5j
dGlvbiBwcm9jZXNzKHRyYW5zZm9ybWVyKQorICAgIHsKKyAgICAgICAgdHJhbnNmb3JtZXIucmVh
ZGVyLnJlYWQoKS50aGVuKGNodW5rID0+IHsKKyAgICAgICAgICAgIGlmIChjaHVuay5kb25lKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKGlzRmlyc3RGcmFtZSkg
eworICAgICAgICAgICAgICAgIGlzRmlyc3RGcmFtZSA9IGZhbHNlOworICAgICAgICAgICAgICAg
IHNlbGYucG9zdE1lc3NhZ2UoeyBuYW1lOiB0cmFuc2Zvcm1lci5vcHRpb25zLm5hbWUsIHRpbWVz
dGFtcDogY2h1bmsudmFsdWUudGltZXN0YW1wLCBtZXRhZGF0YTogY2h1bmsudmFsdWUuZ2V0TWV0
YWRhdGEoKSB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRyYW5zZm9ybWVyLndyaXRl
ci53cml0ZShjaHVuay52YWx1ZSk7CisgICAgICAgICAgICBwcm9jZXNzKHRyYW5zZm9ybWVyKTsK
KyAgICAgICAgfSk7CisgICAgfQorICAgIHByb2Nlc3ModHJhbnNmb3JtZXIpOworfTsKK3NlbGYu
cG9zdE1lc3NhZ2UoInJlZ2lzdGVyZWQiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3Njcmlw
dC1tZXRhZGF0YS10cmFuc2Zvcm0uaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2Ny
aXB0LW1ldGFkYXRhLXRyYW5zZm9ybS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmE4
ZjUxYjNjODAwYzVkN2FjNDkzZDcwMzMwMGFjZDY4Mjc4ZjlmOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29k
ZWQtdHJhbnNmb3JtL3NjcmlwdC1tZXRhZGF0YS10cmFuc2Zvcm0uaHR0cHMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNSBAQAorCisKK1BBU1MgYXVkaW8gZXhjaGFuZ2Ugd2l0aCB0cmFuc2Zvcm0K
K1BBU1MgdmlkZW8gZXhjaGFuZ2Ugd2l0aCB0cmFuc2Zvcm0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFu
c2Zvcm0vc2NyaXB0LW1ldGFkYXRhLXRyYW5zZm9ybS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0v
c2NyaXB0LW1ldGFkYXRhLXRyYW5zZm9ybS5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1NzlkY2Fk
YjE5ZDFkNWYzMTM0YWIxZjc3NmQ0ZTQ5NDViMTJlMmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRy
YW5zZm9ybS9zY3JpcHQtbWV0YWRhdGEtdHJhbnNmb3JtLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw4
NCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAg
ICAgIDx2aWRlbyBpZD0idmlkZW8xIiBhdXRvcGxheT48L3ZpZGVvPgorICAgICAgICA8c2NyaXB0
IHNyYyA9InJvdXRpbmVzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KK2FzeW5jIGZ1
bmN0aW9uIHdhaXRGb3JNZXNzYWdlKHdvcmtlciwgZGF0YSkKK3sKKyAgICB3aGlsZSAodHJ1ZSkg
eworICAgICAgICBjb25zdCByZWNlaXZlZCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
d29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisgICAg
ICAgIGlmIChkYXRhID09PSByZWNlaXZlZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9Cit9
CisKK2FzeW5jIGZ1bmN0aW9uIGdhdGhlck1ldGFkYXRhKHRlc3QsIGF1ZGlvKQoreworICAgIHdv
cmtlciA9IG5ldyBXb3JrZXIoJ3NjcmlwdC1tZXRhZGF0YS10cmFuc2Zvcm0td29ya2VyLmpzJyk7
CisgICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9u
bWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisgICAgYXNzZXJ0X2Vx
dWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOworCisgICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2Fp
dCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IGF1ZGlvLCB2aWRl
bzogIWF1ZGlvfSk7CisKKyAgICBsZXQgc2VuZGVyLCByZWNlaXZlcjsKKyAgICBjb25zdCBzZW5k
ZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25hbWU6J3Nl
bmRlcid9KTsKKyAgICBjb25zdCByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRU
cmFuc2Zvcm0od29ya2VyLCB7bmFtZToncmVjZWl2ZXInfSk7CisKKyAgICBhd2FpdCBuZXcgUHJv
bWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKHRl
c3QsIChmaXJzdENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIHBjMSA9IGZpcnN0Q29ubmVj
dGlvbjsKKyAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhsb2Nh
bFN0cmVhbS5nZXRUcmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOworICAgICAgICAgICAgc2VuZGVy
LnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rp
b24pID0+IHsKKyAgICAgICAgICAgIHBjMiA9IHNlY29uZENvbm5lY3Rpb247CisgICAgICAgICAg
ICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4geworICAgICAgICAg
ICAgICAgIHJlY2VpdmVyID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKKyAgICAgICAgICAgICAgICBy
ZWNlaXZlci50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKKyAgICAgICAgICAgICAgICBy
ZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9OworICAgICAgICB9
KTsKKyAgICAgICAgdGVzdC5zdGVwX3RpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91
dCIpLCA1MDAwKTsKKyAgICB9KTsKKworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwg
cmVqZWN0KSA9PiB7CisgICAgICAgIGxldCBzZW5kZXJNZXRhZGF0YSwgc2VuZGVyVGltZXN0YW1w
OworICAgICAgICB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICBp
ZiAoZXZlbnQuZGF0YS5uYW1lID09PSAnc2VuZGVyJykgeworICAgICAgICAgICAgICAgIHNlbmRl
ck1ldGFkYXRhID0gZXZlbnQuZGF0YS5tZXRhZGF0YTsKKyAgICAgICAgICAgICAgICBzZW5kZXJU
aW1lc3RhbXAgPSBldmVudC5kYXRhLnRpbWVzdGFtcDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
ZXZlbnQuZGF0YS5uYW1lID09PSAncmVjZWl2ZXInKQorICAgICAgICAgICAgICAgcmVzb2x2ZShb
c2VuZGVyTWV0YWRhdGEsIHNlbmRlclRpbWVzdGFtcCwgZXZlbnQuZGF0YS5tZXRhZGF0YSwgZXZl
bnQuZGF0YS50aW1lc3RhbXBdKTsKKyAgICAgICAgfTsKKyAgICAgICAgdGVzdC5zdGVwX3RpbWVv
dXQoKCkgPT4gcmVqZWN0KCJNZXRhZGF0YSB0ZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKKyAgICB9
KTsKK30KKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgW3NlbmRl
ck1ldGFkYXRhLCBzZW5kZXJUaW1lc3RhbXAsIHJlY2VpdmVyTWV0YWRhdGEsIHJlY2VpdmVyVGlt
ZXN0YW1wXSA9IGF3YWl0IGdhdGhlck1ldGFkYXRhKHRlc3QsIHRydWUpOworCisgICAgYXNzZXJ0
X2VxdWFscyhzZW5kZXJUaW1lc3RhbXAsIHJlY2VpdmVyVGltZXN0YW1wLCAidGltZXN0YW1wIik7
CisgICAgYXNzZXJ0X3RydWUoISFzZW5kZXJNZXRhZGF0YS5zeW5jaHJvbml6YXRpb25Tb3VyY2Us
ICJzc3JjIik7CisgICAgYXNzZXJ0X2VxdWFscyhzZW5kZXJNZXRhZGF0YS5zeW5jaHJvbml6YXRp
b25Tb3VyY2UsIHJlY2VpdmVyTWV0YWRhdGEuc3luY2hyb25pemF0aW9uU291cmNlLCAic3NyYyIp
OworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoc2VuZGVyTWV0YWRhdGEuY29udHJpYnV0aW5nU291
cmNlcywgcmVjZWl2ZXJNZXRhZGF0YS5jb250cmlidXRpbmdTb3VyY2VzLCAiY3NyYyIpOworfSwg
ImF1ZGlvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAo
dGVzdCkgPT4geworICAgIGNvbnN0IFtzZW5kZXJNZXRhZGF0YSwgc2VuZGVyVGltZXN0YW1wLCBy
ZWNlaXZlck1ldGFkYXRhLCByZWNlaXZlclRpbWVzdGFtcF0gPSBhd2FpdCBnYXRoZXJNZXRhZGF0
YSh0ZXN0LCB0cnVlKTsKKworICAgIGFzc2VydF9lcXVhbHMoc2VuZGVyVGltZXN0YW1wLCByZWNl
aXZlclRpbWVzdGFtcCwgInRpbWVzdGFtcCIpOworICAgIGFzc2VydF90cnVlKCEhc2VuZGVyTWV0
YWRhdGEuc3luY2hyb25pemF0aW9uU291cmNlLCAic3NyYyIpOworICAgIGFzc2VydF9lcXVhbHMo
c2VuZGVyTWV0YWRhdGEuc3luY2hyb25pemF0aW9uU291cmNlLCByZWNlaXZlck1ldGFkYXRhLnN5
bmNocm9uaXphdGlvblNvdXJjZSwgInNzcmMiKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNlbmRlck1l
dGFkYXRhLmhlaWdodCwgcmVjZWl2ZXJNZXRhZGF0YS5oZWlnaHQsICJoZWlnaHQiKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHNlbmRlck1ldGFkYXRhLndpZHRoLCByZWNlaXZlck1ldGFkYXRhLndpZHRo
LCAid2lkdGgiKTsKKyAgICBhc3NlcnRfZXF1YWxzKHNlbmRlck1ldGFkYXRhLnNwYXRpYWxJbmRl
eCwgcmVjZWl2ZXJNZXRhZGF0YS5zcGF0aWFsSW5kZXgsICJzcGF0aWFsSW5kZXgiKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHNlbmRlck1ldGFkYXRhLnRlbXBvcmFsSW5kZXgsIHJlY2VpdmVyTWV0YWRh
dGEudGVtcG9yYWxJbmRleCwgInRlbXBvcmFsSW5kZXgiKTsKK30sICJ2aWRlbyBleGNoYW5nZSB3
aXRoIHRyYW5zZm9ybSIpOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtdHJhbnNmb3JtLXdvcmtlci5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQt
dHJhbnNmb3JtL3NjcmlwdC10cmFuc2Zvcm0td29ya2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlYTk5Y2Qy
YmY3MzJjZjA1ODJhMmFlZjExOTlhMTQ5NzM4MjY5ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRy
YW5zZm9ybS9zY3JpcHQtdHJhbnNmb3JtLXdvcmtlci5qcwpAQCAtMCwwICsxLDI1IEBACitvbnJ0
Y3RyYW5zZm9ybSA9IChldmVudCkgPT4geworICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gZXZlbnQu
dHJhbnNmb3JtZXI7CisgICAgdHJhbnNmb3JtZXIub3B0aW9ucy5wb3J0Lm9ubWVzc2FnZSA9IChl
dmVudCkgPT4gdHJhbnNmb3JtZXIub3B0aW9ucy5wb3J0LnBvc3RNZXNzYWdlKGV2ZW50LmRhdGEp
OworCisgICAgc2VsZi5wb3N0TWVzc2FnZSgic3RhcnRlZCIpOworICAgIHRyYW5zZm9ybWVyLnJl
YWRlciA9IHRyYW5zZm9ybWVyLnJlYWRhYmxlLmdldFJlYWRlcigpOworICAgIHRyYW5zZm9ybWVy
LndyaXRlciA9IHRyYW5zZm9ybWVyLndyaXRhYmxlLmdldFdyaXRlcigpOworCisgICAgZnVuY3Rp
b24gcHJvY2Vzcyh0cmFuc2Zvcm1lcikKKyAgICB7CisgICAgICAgIHRyYW5zZm9ybWVyLnJlYWRl
ci5yZWFkKCkudGhlbihjaHVuayA9PiB7CisgICAgICAgICAgICBpZiAoY2h1bmsuZG9uZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAoY2h1bmsudmFsdWUgaW5zdGFu
Y2VvZiBSVENFbmNvZGVkVmlkZW9GcmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLnBvc3RNZXNz
YWdlKCJ2aWRlbyBjaHVuayIpOworICAgICAgICAgICAgZWxzZSBpZiAoY2h1bmsudmFsdWUgaW5z
dGFuY2VvZiBSVENFbmNvZGVkQXVkaW9GcmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLnBvc3RN
ZXNzYWdlKCJhdWRpbyBjaHVuayIpOworICAgICAgICAgICAgdHJhbnNmb3JtZXIud3JpdGVyLndy
aXRlKGNodW5rLnZhbHVlKTsKKyAgICAgICAgICAgIHByb2Nlc3ModHJhbnNmb3JtZXIpOworICAg
ICAgICB9KTsKKyAgICB9CisKKyAgICBwcm9jZXNzKHRyYW5zZm9ybWVyKTsKK307CitzZWxmLnBv
c3RNZXNzYWdlKCJyZWdpc3RlcmVkIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQt
dHJhbnNmb3JtLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC10cmFuc2Zv
cm0uaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmOWQ1NmVlODVlNjBlNDcxOGRmNmQw
MWMzMTMxYzExNDU0NGU1ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQt
dHJhbnNmb3JtLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKKworCitQQVNTIHRy
YW5zZm9ybSBtZXNzYWdpbmcKK1BBU1MgQ2Fubm90IHJldXNlIGF0dGFjaGVkIHRyYW5zZm9ybXMK
K1BBU1MgYXVkaW8gZXhjaGFuZ2Ugd2l0aCB0cmFuc2Zvcm0KK1BBU1MgdmlkZW8gZXhjaGFuZ2Ug
d2l0aCB0cmFuc2Zvcm0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LXRyYW5zZm9y
bS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LXRyYW5zZm9ybS5odHRwcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI5ZWRkOGFmOTQwMDkxZWVkZmRlMDc0MTExZGY0ZWFjMzM0M2MyYWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtdHJhbnNmb3JtLmh0dHBzLmh0bWwKQEAg
LTAsMCArMSwxNDggQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5PgorICAgICAgICA8dmlkZW8gaWQ9InZpZGVvMSIgYXV0b3BsYXk+PC92aWRlbz4KKyAgICAg
ICAgPHZpZGVvIGlkPSJ2aWRlbzIiIGF1dG9wbGF5PjwvdmlkZW8+CisgICAgICAgIDxzY3JpcHQg
c3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorYXN5bmMgZnVu
Y3Rpb24gd2FpdEZvck1lc3NhZ2Uod29ya2VyLCBkYXRhKQoreworICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgIGNvbnN0IHJlY2VpdmVkID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3
b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICAg
ICAgaWYgKGRhdGEgPT09IHJlY2VpdmVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KK30K
KworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgd29ya2VyID0gbmV3IFdvcmtl
cignc2NyaXB0LXRyYW5zZm9ybS13b3JrZXIuanMnKTsKKyAgICBjb25zdCBkYXRhID0gYXdhaXQg
bmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNv
bHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7
CisKKyAgICBjb25zdCBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOworICAgIGNvbnN0IHRy
YW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZTonTW9ja1JU
Q1J0cFRyYW5zZm9ybScsIHBvcnQ6IGNoYW5uZWwucG9ydDJ9LCBbY2hhbm5lbC5wb3J0Ml0pOwor
ICAgIHRyYW5zZm9ybS5wb3J0ID0gY2hhbm5lbC5wb3J0MTsKKyAgICBjb25zdCBwcm9taXNlID0g
bmV3IFByb21pc2UocmVzb2x2ZSA9PiB0cmFuc2Zvcm0ucG9ydC5vbm1lc3NhZ2UgPSAoZXZlbnQp
ID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIHRyYW5zZm9ybS5wb3J0LnBvc3RNZXNzYWdl
KCJ0ZXN0Iik7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBwcm9taXNlLCAidGVzdCIpOworfSwg
InRyYW5zZm9ybSBtZXNzYWdpbmciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7
CisgICAgd29ya2VyID0gbmV3IFdvcmtlcignc2NyaXB0LXRyYW5zZm9ybS13b3JrZXIuanMnKTsK
KyAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25t
ZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7CisKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29u
bmVjdGlvbigpOworCisgICAgY29uc3Qgc2VuZGVyQ2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5l
bDsKKyAgICBjb25zdCByZWNlaXZlckNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CisgICAg
Y29uc3Qgc2VuZGVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIs
IHtuYW1lOidNb2NrUlRDUnRwVHJhbnNmb3JtJywgcG9ydDogc2VuZGVyQ2hhbm5lbC5wb3J0Mn0s
IFtzZW5kZXJDaGFubmVsLnBvcnQyXSk7CisgICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBu
ZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge25hbWU6J01vY2tSVENSdHBUcmFuc2Zv
cm0nLCBwb3J0OiByZWNlaXZlckNoYW5uZWwucG9ydDJ9LCBbcmVjZWl2ZXJDaGFubmVsLnBvcnQy
XSk7CisgICAgc2VuZGVyVHJhbnNmb3JtLnBvcnQgPSBzZW5kZXJDaGFubmVsLnBvcnQxOworICAg
IHJlY2VpdmVyVHJhbnNmb3JtLnBvcnQgPSByZWNlaXZlckNoYW5uZWwucG9ydDE7CisKKyAgICBj
b25zdCBzZW5kZXIxID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJykuc2VuZGVyOworICAgIGNv
bnN0IHNlbmRlcjIgPSBwYy5hZGRUcmFuc2NlaXZlcigndmlkZW8nKS5zZW5kZXI7CisgICAgY29u
c3QgcmVjZWl2ZXIxID0gcGMuZ2V0UmVjZWl2ZXJzKClbMF07CisgICAgY29uc3QgcmVjZWl2ZXIy
ID0gcGMuZ2V0UmVjZWl2ZXJzKClbMV07CisKKyAgICBzZW5kZXIxLnRyYW5zZm9ybSA9IHNlbmRl
clRyYW5zZm9ybTsKKyAgICByZWNlaXZlcjEudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07
CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4gc2VuZGVy
Mi50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm0pOworICAgIGFzc2VydF90aHJvd3NfZG9tKCJJ
bnZhbGlkU3RhdGVFcnJvciIsICgpID0+IHJlY2VpdmVyMi50cmFuc2Zvcm0gPSByZWNlaXZlclRy
YW5zZm9ybSk7CisKKyAgICBzZW5kZXIxLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAg
ICByZWNlaXZlcjEudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07CisKKyAgICBzZW5kZXIx
LnRyYW5zZm9ybSA9IG51bGw7CisgICAgcmVjZWl2ZXIxLnRyYW5zZm9ybSA9IG51bGw7Cit9LCAi
Q2Fubm90IHJldXNlIGF0dGFjaGVkIHRyYW5zZm9ybXMiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5j
ICh0ZXN0KSA9PiB7CisgICAgd29ya2VyID0gbmV3IFdvcmtlcignc2NyaXB0LXRyYW5zZm9ybS13
b3JrZXIuanMnKTsKKyAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9
PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7CisgICAgY29uc3QgbG9jYWxTdHJl
YW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IHRy
dWV9KTsKKworICAgIGNvbnN0IHNlbmRlckNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Cisg
ICAgY29uc3QgcmVjZWl2ZXJDaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOworICAgIGxldCBz
ZW5kZXIsIHJlY2VpdmVyOworICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBT
Y3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZTonTW9ja1JUQ1J0cFRyYW5zZm9ybScsIHBvcnQ6
IHNlbmRlckNoYW5uZWwucG9ydDJ9LCBbc2VuZGVyQ2hhbm5lbC5wb3J0Ml0pOworICAgIGNvbnN0
IHJlY2VpdmVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsIHtu
YW1lOidNb2NrUlRDUnRwVHJhbnNmb3JtJywgcG9ydDogcmVjZWl2ZXJDaGFubmVsLnBvcnQyfSwg
W3JlY2VpdmVyQ2hhbm5lbC5wb3J0Ml0pOworICAgIHNlbmRlclRyYW5zZm9ybS5wb3J0ID0gc2Vu
ZGVyQ2hhbm5lbC5wb3J0MTsKKyAgICByZWNlaXZlclRyYW5zZm9ybS5wb3J0ID0gcmVjZWl2ZXJD
aGFubmVsLnBvcnQxOworCisgICAgY29uc3Qgc3RhcnRlZFByb21pc2UgPSBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0
YSkpOworCisgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJl
amVjdCkgPT4geworICAgICAgICBjcmVhdGVDb25uZWN0aW9ucyh0ZXN0LCAoZmlyc3RDb25uZWN0
aW9uKSA9PiB7CisgICAgICAgICAgICBwYzEgPSBmaXJzdENvbm5lY3Rpb247CisgICAgICAgICAg
ICBzZW5kZXIgPSBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxTdHJlYW0uZ2V0QXVkaW9U
cmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOworICAgICAgICAgICAgc2VuZGVyLnRyYW5zZm9ybSA9
IHNlbmRlclRyYW5zZm9ybTsKKyAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKKyAg
ICAgICAgICAgIHBjMiA9IHNlY29uZENvbm5lY3Rpb247CisgICAgICAgICAgICBzZWNvbmRDb25u
ZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4geworICAgICAgICAgICAgICAgIHJlY2Vp
dmVyID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKKyAgICAgICAgICAgICAgICByZWNlaXZlci50cmFu
c2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNr
RXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9OworICAgICAgICB9KTsKKyAgICAgICAg
dGVzdC5zdGVwX3RpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsK
KyAgICB9KTsKKworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgc3RhcnRlZFByb21pc2UsICJzdGFy
dGVkIik7CisKKyAgICBhd2FpdCB3YWl0Rm9yTWVzc2FnZSh3b3JrZXIsICJhdWRpbyBjaHVuayIp
OworCisgICAgdmlkZW8xLnNyY09iamVjdCA9IHN0cmVhbTsKKyAgICBhd2FpdCB2aWRlbzEucGxh
eSgpOworfSwgImF1ZGlvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtIik7CisKK3Byb21pc2VfdGVz
dChhc3luYyAodGVzdCkgPT4geworICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3NjcmlwdC10cmFu
c2Zvcm0td29ya2VyLmpzJyk7CisgICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJl
c29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRh
KSk7CisgICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOworCisgICAgY29uc3Qg
bG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7
dmlkZW86IHRydWV9KTsKKworICAgIGNvbnN0IHNlbmRlckNoYW5uZWwgPSBuZXcgTWVzc2FnZUNo
YW5uZWw7CisgICAgY29uc3QgcmVjZWl2ZXJDaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwor
ICAgIGxldCBzZW5kZXIsIHJlY2VpdmVyOworICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5l
dyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZTonTW9ja1JUQ1J0cFRyYW5zZm9y
bScsIHBvcnQ6IHNlbmRlckNoYW5uZWwucG9ydDJ9LCBbc2VuZGVyQ2hhbm5lbC5wb3J0Ml0pOwor
ICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3
b3JrZXIsIHtuYW1lOidNb2NrUlRDUnRwVHJhbnNmb3JtJywgcG9ydDogcmVjZWl2ZXJDaGFubmVs
LnBvcnQyfSwgW3JlY2VpdmVyQ2hhbm5lbC5wb3J0Ml0pOworICAgIHNlbmRlclRyYW5zZm9ybS5w
b3J0ID0gc2VuZGVyQ2hhbm5lbC5wb3J0MTsKKyAgICByZWNlaXZlclRyYW5zZm9ybS5wb3J0ID0g
cmVjZWl2ZXJDaGFubmVsLnBvcnQxOworCisgICAgY29uc3Qgc3RhcnRlZFByb21pc2UgPSBuZXcg
UHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUo
ZXZlbnQuZGF0YSkpOworCisgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmV3IFByb21pc2UoKHJl
c29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBjcmVhdGVDb25uZWN0aW9ucyh0ZXN0LCAoZmly
c3RDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBwYzEgPSBmaXJzdENvbm5lY3Rpb247Cisg
ICAgICAgICAgICBzZW5kZXIgPSBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxTdHJlYW0u
Z2V0VmlkZW9UcmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOworICAgICAgICAgICAgc2VuZGVyLnRy
YW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24p
ID0+IHsKKyAgICAgICAgICAgIHBjMiA9IHNlY29uZENvbm5lY3Rpb247CisgICAgICAgICAgICBz
ZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4geworICAgICAgICAgICAg
ICAgIHJlY2VpdmVyID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKKyAgICAgICAgICAgICAgICByZWNl
aXZlci50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKKyAgICAgICAgICAgICAgICByZXNv
bHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9OworICAgICAgICB9KTsK
KyAgICAgICAgdGVzdC5zdGVwX3RpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIp
LCA1MDAwKTsKKyAgICB9KTsKKworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgc3RhcnRlZFByb21p
c2UsICJzdGFydGVkIik7CisKKyAgICBhd2FpdCB3YWl0Rm9yTWVzc2FnZSh3b3JrZXIsICJ2aWRl
byBjaHVuayIpOworCisgICAgdmlkZW8xLnNyY09iamVjdCA9IHN0cmVhbTsKKyAgICBhd2FpdCB2
aWRlbzEucGxheSgpOworfSwgInZpZGVvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtIik7CisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNm
b3JtL3NjcmlwdC13cml0ZS10d2ljZS10cmFuc2Zvcm0td29ya2VyLmpzIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0v
c2NyaXB0LXdyaXRlLXR3aWNlLXRyYW5zZm9ybS13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQ0Mjhj
ODFiM2FhNTQzNDMxOWUxMGZiZWM2YTAwNzVhN2Q0MGI5OAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQt
dHJhbnNmb3JtL3NjcmlwdC13cml0ZS10d2ljZS10cmFuc2Zvcm0td29ya2VyLmpzCkBAIC0wLDAg
KzEsMjIgQEAKK29ucnRjdHJhbnNmb3JtID0gKGV2ZW50KSA9PiB7CisgICAgY29uc3QgdHJhbnNm
b3JtZXIgPSBldmVudC50cmFuc2Zvcm1lcjsKKworICAgIHNlbGYucG9zdE1lc3NhZ2UoInN0YXJ0
ZWQiKTsKKworICAgIHRyYW5zZm9ybWVyLnJlYWRlciA9IHRyYW5zZm9ybWVyLnJlYWRhYmxlLmdl
dFJlYWRlcigpOworICAgIHRyYW5zZm9ybWVyLndyaXRlciA9IHRyYW5zZm9ybWVyLndyaXRhYmxl
LmdldFdyaXRlcigpOworICAgIGZ1bmN0aW9uIHByb2Nlc3ModHJhbnNmb3JtZXIpCisgICAgewor
ICAgICAgICB0cmFuc2Zvcm1lci5yZWFkZXIucmVhZCgpLnRoZW4oY2h1bmsgPT4geworICAgICAg
ICAgICAgaWYgKGNodW5rLmRvbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICB0cmFuc2Zvcm1lci53cml0ZXIud3JpdGUoY2h1bmsudmFsdWUpOworICAgICAgICAgICAg
dHJhbnNmb3JtZXIud3JpdGVyLndyaXRlKGNodW5rLnZhbHVlKTsKKyAgICAgICAgICAgIHByb2Nl
c3ModHJhbnNmb3JtZXIpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBwcm9jZXNzKHRyYW5z
Zm9ybWVyKTsKK307CitzZWxmLnBvc3RNZXNzYWdlKCJyZWdpc3RlcmVkIik7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNv
ZGVkLXRyYW5zZm9ybS9zY3JpcHQtd3JpdGUtdHdpY2UtdHJhbnNmb3JtLmh0dHBzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
LWVuY29kZWQtdHJhbnNmb3JtL3NjcmlwdC13cml0ZS10d2ljZS10cmFuc2Zvcm0uaHR0cHMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3NjVmZjA4NGE3MmRlY2Q3ODljMTU2N2Q3NDdkOTliZjk4
Njc4N2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zY3JpcHQtd3JpdGUtdHdpY2Ut
dHJhbnNmb3JtLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworCitQQVNTIHZp
ZGVvIGV4Y2hhbmdlIHdpdGggd3JpdGUgdHdpY2UgdHJhbnNmb3JtCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQt
dHJhbnNmb3JtL3NjcmlwdC13cml0ZS10d2ljZS10cmFuc2Zvcm0uaHR0cHMuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJh
bnNmb3JtL3NjcmlwdC13cml0ZS10d2ljZS10cmFuc2Zvcm0uaHR0cHMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zMDYwYWFjOTk2MjgxOGRmZWE1YWJmYzRhODgwYmZiMGE0ZmRmMTQ5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMt
ZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LXdyaXRlLXR3aWNlLXRyYW5zZm9ybS5odHRwcy5odG1s
CkBAIC0wLDAgKzEsNTggQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5PgorICAgICAgICA8dmlkZW8gaWQ9InZpZGVvMSIgYXV0b3BsYXk+PC92aWRlbz4KKyAg
ICAgICAgPHZpZGVvIGlkPSJ2aWRlbzIiIGF1dG9wbGF5PjwvdmlkZW8+CisgICAgICAgIDxzY3Jp
cHQgc3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorYXN5bmMg
ZnVuY3Rpb24gd2FpdEZvck1lc3NhZ2Uod29ya2VyLCBkYXRhKQoreworICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgIGNvbnN0IHJlY2VpdmVkID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9
PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAg
ICAgICAgaWYgKGRhdGEgPT09IHJlY2VpdmVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0K
K30KKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgd29ya2VyID0gbmV3IFdv
cmtlcignc2NyaXB0LXdyaXRlLXR3aWNlLXRyYW5zZm9ybS13b3JrZXIuanMnKTsKKyAgICBjb25z
dCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0g
KGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRhdGEs
ICJyZWdpc3RlcmVkIik7CisKKyAgICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5hdmlnYXRv
ci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzogdHJ1ZX0pOworCisgICAgbGV0IHNl
bmRlciwgcmVjZWl2ZXI7CisgICAgY29uc3Qgc2VuZGVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNj
cmlwdFRyYW5zZm9ybSh3b3JrZXIsIHtuYW1lOidNb2NrUlRDUnRwVHJhbnNmb3JtJywgc2lkZTon
c2VuZGVyJywgcm9sZTonZW5jcnlwdCd9KTsKKyAgICBjb25zdCByZWNlaXZlclRyYW5zZm9ybSA9
IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7bmFtZTonTW9ja1JUQ1J0cFRyYW5z
Zm9ybScsIHNpZGU6J3JlY2VpdmVyJywgcm9sZTonZGVjcnlwdCd9KTsKKworICAgIGNvbnN0IHN0
YXJ0ZWRQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0g
KGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKworICAgIGNvbnN0IHN0cmVhbSA9IGF3
YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29u
bmVjdGlvbnModGVzdCwgKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgcGMxID0g
Zmlyc3RDb25uZWN0aW9uOworICAgICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFk
ZFRyYWNrKGxvY2FsU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKKyAg
ICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07CisgICAgICAgIH0s
IChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBwYzIgPSBzZWNvbmRDb25uZWN0
aW9uOworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQp
ID0+IHsKKyAgICAgICAgICAgICAgICByZWNlaXZlciA9IHRyYWNrRXZlbnQucmVjZWl2ZXI7Cisg
ICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOworICAgICAgICAg
ICAgfTsKKyAgICAgICAgfSk7CisgICAgICAgIHRlc3Quc3RlcF90aW1lb3V0KCgpID0+IHJlamVj
dCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7CisgICAgfSk7CisKKyAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IHN0YXJ0ZWRQcm9taXNlLCAic3RhcnRlZCIpOworCisgICAgdmlkZW8xLnNyY09iamVj
dCA9IHN0cmVhbTsKKyAgICBhd2FpdCB2aWRlbzEucGxheSgpOworfSwgInZpZGVvIGV4Y2hhbmdl
IHdpdGggd3JpdGUgdHdpY2UgdHJhbnNmb3JtIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS1rZXlzLmh0dHBz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS1rZXlzLmh0dHBzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hNWIzMGFlZjhlMTRmNzFmNWFmZTg0ZDgwNDQ1Y2RhOTNjNTc2NzVkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLWtleXMuaHR0cHMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNSBAQAorCisKK1BBU1MgUGFzc2luZyB2YXJpb3VzIGtleSBJRHMKK1BB
U1MgQXVkaW8gZXhjaGFuZ2Ugd2l0aCBTRnJhbWUgc2V0dXAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFu
c2Zvcm0vc2ZyYW1lLWtleXMuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS1rZXlzLmh0
dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNWMwYWFiOGQ5MTJhYzY1YTE1OWNkMGE0NGM2MmY5NzI1NDVi
YmM5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS1rZXlzLmh0dHBzLmh0
bWwKQEAgLTAsMCArMSw2NSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHk+CisgICAgICAgIDx2aWRlbyBpZD0iYXVkaW8iIGF1dG9wbGF5IHBsYXlzSW5saW5l
PjwvdmlkZW8+CisgICAgICAgIDxzY3JpcHQgc3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorbGV0IHNlbmRlciwgcmVjZWl2ZXI7CitsZXQga2V5MSwga2V5Miwg
a2V5Mywga2V5NDsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3Qg
a2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIG5ldyBVaW50OEFycmF5
KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYsIDIxOSwgMjQsIDkzLCAyNiwg
MTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZlQml0cyIsICJkZXJpdmVLZXki
XSk7CisgICAgY29uc3QgdHJhbnNmb3JtID0gbmV3IFNGcmFtZVRyYW5zZm9ybTsKKworICAgIGF3
YWl0IHRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleSk7CisgICAgYXdhaXQgdHJhbnNmb3Jt
LnNldEVuY3J5cHRpb25LZXkoa2V5LCAxKTsKKworICAgIGF3YWl0IHRyYW5zZm9ybS5zZXRFbmNy
eXB0aW9uS2V5KGtleSwgQmlnSW50KCcxODQ0Njc0NDA3MzcwOTU1MTYxMycpKTsKKyAgICBhd2Fp
dCB0cmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXksIEJpZ0ludCgnMTg0NDY3NDQwNzM3MDk1
NTE2MTQnKSk7CisgICAgYXdhaXQgdHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5LCBCaWdJ
bnQoJzE4NDQ2NzQ0MDczNzA5NTUxNjE1JykpOworICAgIGF3YWl0IHRyYW5zZm9ybS5zZXRFbmNy
eXB0aW9uS2V5KGtleSwgQmlnSW50KCcxODQ0Njc0NDA3MzcwOTU1MTYxNicpKS50aGVuKGFzc2Vy
dF91bnJlYWNoZWQsIChlKSA9PiB7CisgICAgICAgIGFzc2VydF90cnVlKGUgaW5zdGFuY2VvZiBS
YW5nZUVycm9yKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhlLm1lc3NhZ2UsICJOb3QgYSA2NCBi
aXRzIGludGVnZXIiKTsKKyAgICB9KTsKK30sICJQYXNzaW5nIHZhcmlvdXMga2V5IElEcyIpOwor
Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBrZXkxID0gYXdhaXQgY3J5cHRv
LnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIG5ldyBVaW50OEFycmF5KFsxNDMsIDc3LCA0MywgMTAs
IDcyLCAxOSwgMzcsIDY3LCAyMzYsIDIxOSwgMjQsIDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJI
S0RGIiwgZmFsc2UsIFsiZGVyaXZlQml0cyIsICJkZXJpdmVLZXkiXSk7CisgICAga2V5MiA9IGF3
YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLCBuZXcgVWludDhBcnJheShbMTQ0LCA3
NywgNDMsIDEwLCA3MiwgMTksIDM3LCA2NywgMjM2LCAyMTksIDI0LCA5MywgMjYsIDE2NSwgOTEs
IDE3OF0pLCAiSEtERiIsIGZhbHNlLCBbImRlcml2ZUJpdHMiLCAiZGVyaXZlS2V5Il0pOworICAg
IGtleTMgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3IiwgbmV3IFVpbnQ4QXJy
YXkoWzE0NSwgNzcsIDQzLCAxMCwgNzIsIDE5LCAzNywgNjcsIDIzNiwgMjE5LCAyNCwgOTMsIDI2
LCAxNjUsIDkxLCAxNzhdKSwgIkhLREYiLCBmYWxzZSwgWyJkZXJpdmVCaXRzIiwgImRlcml2ZUtl
eSJdKTsKKyAgICBrZXk0ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIG5l
dyBVaW50OEFycmF5KFsxNDYsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYsIDIxOSwg
MjQsIDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZlQml0cyIs
ICJkZXJpdmVLZXkiXSk7CisKKyAgICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5hdmlnYXRv
ci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOworICAgIGNvbnN0IHN0
cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAg
Y29uc3QgY29ubmVjdGlvbnMgPSBjcmVhdGVDb25uZWN0aW9ucyh0ZXN0LCAoZmlyc3RDb25uZWN0
aW9uKSA9PiB7CisgICAgICAgICAgICBzZW5kZXIgPSBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2so
bG9jYWxTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOworICAgICAgICAg
ICAgbGV0IHRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm07CisgICAgICAgICAgICB0cmFu
c2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkxKTsKKyAgICAgICAgICAgIHNlbmRlci50cmFuc2Zv
cm0gPSB0cmFuc2Zvcm07CisgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAg
ICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4geworICAg
ICAgICAgICAgICAgIGxldCB0cmFuc2Zvcm0gPSBuZXcgU0ZyYW1lVHJhbnNmb3JtOworICAgICAg
ICAgICAgICAgIHRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleTEpOworICAgICAgICAgICAg
ICAgIHRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleTIpOworICAgICAgICAgICAgICAgIHRy
YW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleTMsIDEwMDApOworICAgICAgICAgICAgICAgIHRy
YW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleTQsIEJpZ0ludCgnMTg0NDY3NDQwNzM3MDk1NTE2
MTUnKSk7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOwor
ICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAgICAgICAg
ICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9Owor
ICAgICAgICB9KTsKKworICAgICAgICB0ZXN0LnN0ZXBfdGltZW91dCgoKSA9PiByZWplY3QoIlRl
c3QgdGltZWQgb3V0IiksIDUwMDApOworICAgIH0pOworCisgICAgYXVkaW8uc3JjT2JqZWN0ID0g
c3RyZWFtOworICAgIGF3YWl0IGF1ZGlvLnBsYXkoKTsKK30sICJBdWRpbyBleGNoYW5nZSB3aXRo
IFNGcmFtZSBzZXR1cCIpOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLWJ1ZmZlci1zb3VyY2Ut
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1idWZmZXItc291cmNl
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjFkMWZkNTUwZjQ2NzEyOTMzMzdmN2EwOTI2MDM1
MTRkZmJmYmFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9y
bS1idWZmZXItc291cmNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBVaW50
OEFycmF5IGFzIGlucHV0IHRvIFNGcmFtZVRyYW5zZm9ybQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5z
Zm9ybS9zZnJhbWUtdHJhbnNmb3JtLWJ1ZmZlci1zb3VyY2UuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3Nm
cmFtZS10cmFuc2Zvcm0tYnVmZmVyLXNvdXJjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5YjQ1ZjIyYzk3
ZTc3YTNmNWJlYzdiOGMzMjFmMzgzZDg2N2ExYTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5z
Zm9ybS9zZnJhbWUtdHJhbnNmb3JtLWJ1ZmZlci1zb3VyY2UuaHRtbApAQCAtMCwwICsxLDUwIEBA
Cis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+CisgICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAg
PHNjcmlwdD4KKworYXN5bmMgZnVuY3Rpb24gZ2V0RW5jcnlwdGVkRGF0YSh0cmFuc2Zvcm0pCit7
CisgICAgY29uc3QgY2h1bmsgPSBhd2FpdCB0cmFuc2Zvcm0ucmVhZGFibGUuZ2V0UmVhZGVyKCku
cmVhZCgpOworICAgIGNvbnN0IHZhbHVlID0gbmV3IFVpbnQ4QXJyYXkoY2h1bmsudmFsdWUpOwor
ICAgIHJldHVybiBbLi4udmFsdWVdOworfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+
IHsKKyAgICBjb25zdCBrZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3Iiwg
bmV3IFVpbnQ4QXJyYXkoWzE0MywgNzcsIDQzLCAxMCwgNzIsIDE5LCAzNywgNjcsIDIzNiwgMjE5
LCAyNCwgOTMsIDI2LCAxNjUsIDkxLCAxNzhdKSwgIkhLREYiLCBmYWxzZSwgWyJkZXJpdmVCaXRz
IiwgImRlcml2ZUtleSJdKTsKKyAgICBjb25zdCB0cmFuc2Zvcm0xID0gbmV3IFNGcmFtZVRyYW5z
Zm9ybTsKKyAgICBjb25zdCB0cmFuc2Zvcm0yID0gbmV3IFNGcmFtZVRyYW5zZm9ybTsKKyAgICBj
b25zdCB0cmFuc2Zvcm0zID0gbmV3IFNGcmFtZVRyYW5zZm9ybTsKKworICAgIGF3YWl0IHRyYW5z
Zm9ybTEuc2V0RW5jcnlwdGlvbktleShrZXkpOworICAgIGF3YWl0IHRyYW5zZm9ybTIuc2V0RW5j
cnlwdGlvbktleShrZXkpOworICAgIGF3YWl0IHRyYW5zZm9ybTMuc2V0RW5jcnlwdGlvbktleShr
ZXkpOworCisgICAgY29uc3QgYnVmZmVyMSA9IG5ldyBBcnJheUJ1ZmZlcigxMCk7CisgICAgY29u
c3QgYnVmZmVyMiA9IG5ldyBBcnJheUJ1ZmZlcigxMSk7CisgICAgY29uc3QgdmlldzEgPSBuZXcg
VWludDhBcnJheShidWZmZXIxKTsKKyAgICBjb25zdCB2aWV3MiA9IG5ldyBVaW50OEFycmF5KGJ1
ZmZlcjIsIDEpOworICAgIGZvciAobGV0IGkgPSAwIDsgaSA8IGJ1ZmZlcjEuYnl0ZUxlbmd0aDsg
KytpKSB7CisgICAgICAgIHZpZXcxW2ldID0gaTsKKyAgICAgICAgdmlldzJbaV0gPSBpOworICAg
IH0KKworICAgIHRyYW5zZm9ybTEud3JpdGFibGUuZ2V0V3JpdGVyKCkud3JpdGUoYnVmZmVyMSk7
CisgICAgdHJhbnNmb3JtMi53cml0YWJsZS5nZXRXcml0ZXIoKS53cml0ZSh2aWV3MSk7CisgICAg
dHJhbnNmb3JtMy53cml0YWJsZS5nZXRXcml0ZXIoKS53cml0ZSh2aWV3Mik7CisKKyAgICBjb25z
dCByZXN1bHQxID0gYXdhaXQgZ2V0RW5jcnlwdGVkRGF0YSh0cmFuc2Zvcm0xKTsKKyAgICBjb25z
dCByZXN1bHQyID0gYXdhaXQgZ2V0RW5jcnlwdGVkRGF0YSh0cmFuc2Zvcm0yKTsKKyAgICBjb25z
dCByZXN1bHQzID0gYXdhaXQgZ2V0RW5jcnlwdGVkRGF0YSh0cmFuc2Zvcm0zKTsKKworICAgIGFz
c2VydF9hcnJheV9lcXVhbHMocmVzdWx0MSwgcmVzdWx0MiwgInJlc3VsdDIiKTsKKyAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKHJlc3VsdDEsIHJlc3VsdDMsICJyZXN1bHQzIik7Cit9LCAiVWludDhB
cnJheSBhcyBpbnB1dCB0byBTRnJhbWVUcmFuc2Zvcm0iKTsKKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5z
Zm9ybS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NWFkYjY5NjEwNDc4ZjE0NjA5NmFiNGJlNjJmYWE1NjY1YzllY2Ew
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw4IEBACisKK1BBU1MgQ2Fubm90IHJldXNlIGF0dGFjaGVkIHRyYW5z
Zm9ybXMKK1BBU1MgU0ZyYW1lVHJhbnNmb3JtIGV4cG9zZXMgcmVhZGFibGUgYW5kIHdyaXRhYmxl
CitQQVNTIHJlYWRhYmxlL3dyaXRhYmxlIGFyZSBsb2NrZWQgd2hlbiBhdHRhY2hlZCBhbmQgYWZ0
ZXIgYmVpbmcgYXR0YWNoZWQKK1BBU1MgU0ZyYW1lIHdpdGggYXJyYXkgYnVmZmVyIC0gYXV0aGVu
dGljYXRpb24gc2l6ZSAxMAorUEFTUyBTRnJhbWUgZGVjcnlwdGlvbiB3aXRoIGFycmF5IGJ1ZmZl
ciB0aGF0IGlzIHRvbyBzbWFsbAorUEFTUyBTRnJhbWUgdHJhbnNmb3JtIGdldHMgZXJyb3JlZCBp
ZiB0cnlpbmcgdG8gcHJvY2VzcyB1bmV4cGVjdGVkIHZhbHVlIHR5cGVzCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29k
ZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0taW4td29ya2VyLmh0dHBzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVu
Y29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0taW4td29ya2VyLmh0dHBzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wYjU4NWM5ZDU3Y2VlZmVjYjc3YjE3NDBjZmIxM2RhZmRkMzkzMGJj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1pbi13b3Jr
ZXIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCisKK1BBU1MgdmlkZW8gZXhj
aGFuZ2Ugd2l0aCBTRnJhbWUgdHJhbnNmb3JtIGluIHdvcmtlcgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRy
YW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLWluLXdvcmtlci5odHRwcy5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zv
cm0vc2ZyYW1lLXRyYW5zZm9ybS1pbi13b3JrZXIuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzFh
ZmYyMTlhNWM2MWI4MjFlMmIwNjMyNmY2M2U0MjU0NzI4NmE1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2Rl
ZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1pbi13b3JrZXIuaHR0cHMuaHRtbApAQCAtMCww
ICsxLDU3IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4K
KyAgICAgICAgPHZpZGVvIGlkPSJ2aWRlbzEiIGNvbnRyb2xzIGF1dG9wbGF5PjwvdmlkZW8+Cisg
ICAgICAgIDxzY3JpcHQgc3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0PgorYXN5bmMgZnVuY3Rpb24gd2FpdEZvck1lc3NhZ2Uod29ya2VyLCBkYXRhKQoreworICAg
IHdoaWxlICh0cnVlKSB7CisgICAgICAgIGNvbnN0IHJlY2VpdmVkID0gYXdhaXQgbmV3IFByb21p
c2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50
LmRhdGEpKTsKKyAgICAgICAgaWYgKGRhdGEgPT09IHJlY2VpdmVkKQorICAgICAgICAgICAgcmV0
dXJuOworICAgIH0KK30KKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgd29y
a2VyID0gbmV3IFdvcmtlcignc2ZyYW1lLXRyYW5zZm9ybS13b3JrZXIuanMnKTsKKyAgICBjb25z
dCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0g
KGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRhdGEs
ICJyZWdpc3RlcmVkIik7CisgICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3Iu
bWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IHZpZGVvOiB0cnVlIH0pOworCisgICAgbGV0IHNl
bmRlciwgcmVjZWl2ZXI7CisgICAgY29uc3Qgc2VuZGVyVHJhbnNmb3JtID0gbmV3IFNGcmFtZVRy
YW5zZm9ybSh7IGNvbXBhdGliaWxpdHlNb2RlOiAiSDI2NCIgfSk7CisgICAgY29uc3QgcmVjZWl2
ZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwgIlNGcmFtZVJU
Q1J0cFRyYW5zZm9ybSIpOworCisgICAgY29uc3Qga2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5p
bXBvcnRLZXkoInJhdyIsIG5ldyBVaW50OEFycmF5KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwg
MzcsIDY3LCAyMzYsIDIxOSwgMjQsIDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFs
c2UsIFsiZGVyaXZlQml0cyIsICJkZXJpdmVLZXkiXSk7CisgICAgc2VuZGVyVHJhbnNmb3JtLnNl
dEVuY3J5cHRpb25LZXkoa2V5KTsKKworICAgIGNvbnN0IHN0YXJ0ZWRQcm9taXNlID0gbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2
ZW50LmRhdGEpKTsKKworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNv
bHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnModGVzdCwgKGZpcnN0
Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgcGMxID0gZmlyc3RDb25uZWN0aW9uOworICAg
ICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdl
dFRyYWNrcygpWzBdLCBsb2NhbFN0cmVhbSk7CisgICAgICAgICAgICBzZW5kZXIudHJhbnNmb3Jt
ID0gc2VuZGVyVHJhbnNmb3JtOworICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4gewor
ICAgICAgICAgICAgcGMyID0gc2Vjb25kQ29ubmVjdGlvbjsKKyAgICAgICAgICAgIHNlY29uZENv
bm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcmVj
ZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOworICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRy
YW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOworICAgICAgICAgICAgICAgIHJlc29sdmUodHJh
Y2tFdmVudC5zdHJlYW1zWzBdKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0pOworICAgICAg
ICB0ZXN0LnN0ZXBfdGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDAp
OworICAgIH0pOworCisgICAgdmlkZW8xLnNyY09iamVjdCA9IHN0cmVhbTsKKyAgICBhd2FpdCB2
aWRlbzEucGxheSgpOworfSwgInZpZGVvIGV4Y2hhbmdlIHdpdGggU0ZyYW1lIHRyYW5zZm9ybSBp
biB3b3JrZXIiKTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJy
dGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJsZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1l
bmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLXJlYWRhYmxlLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mYzcyOTE2ZjliNWEwNGZkNTFiMWJkMjIwOWU5ZmU2ZTIyNjcxMmIyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJsZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1Mgc2ZyYW1lLXRyYW5zZm9ybS1yZWFkYWJs
ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLXJlYWRhYmxlLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1l
bmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLXJlYWRhYmxlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTY2MTgyNTBiZDE4NzM2MTRiNzIwZDNkMjAyNDRiNWE5YTIxZDY3ZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
LWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0tcmVhZGFibGUuaHRtbApAQCAtMCww
ICsxLDE4IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4K
KyAgICAgICAgPGlmcmFtZSBzcmM9Ii4iIGlkPSJmcmFtZSI+PC9pZnJhbWU+CisgICAgICAgIDxz
Y3JpcHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCB0cmFuc2Zv
cm0gPSBuZXcgZnJhbWUuY29udGVudFdpbmRvdy5TRnJhbWVUcmFuc2Zvcm07CisgICAgZnJhbWUu
cmVtb3ZlKCk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgKCkg
PT4gdHJhbnNmb3JtLnJlYWRhYmxlKTsKK30pOworICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0td29y
a2VyLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJy
dGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS13b3JrZXIuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjE3Y2YwYTM4YWEwODU5ZmE2ZWU4YWYwMWZkYWI1Zjk0YjViZWIxOAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRj
LWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0td29ya2VyLmpzCkBAIC0wLDAgKzEs
NyBAQAorb25ydGN0cmFuc2Zvcm0gPSAoZXZlbnQpID0+IHsKKyAgICBjb25zdCBzZnJhbWVUcmFu
c2Zvcm0gPSBuZXcgU0ZyYW1lVHJhbnNmb3JtKHsgcm9sZSA6ICJkZWNyeXB0IiwgYXV0aGVudGlj
YXRpb25TaXplOiAiMTAiLCBjb21wYXRpYmlsaXR5TW9kZTogIkgyNjQiIH0pOworICAgIGNyeXB0
by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLCBuZXcgVWludDhBcnJheShbMTQzLCA3NywgNDMsIDEw
LCA3MiwgMTksIDM3LCA2NywgMjM2LCAyMTksIDI0LCA5MywgMjYsIDE2NSwgOTEsIDE3OF0pLCAi
SEtERiIsIGZhbHNlLCBbImRlcml2ZUJpdHMiLCAiZGVyaXZlS2V5Il0pLnRoZW4oa2V5ID0+IHNm
cmFtZVRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleSkpOworICAgIGNvbnN0IHRyYW5zZm9y
bWVyID0gZXZlbnQudHJhbnNmb3JtZXI7CisgICAgdHJhbnNmb3JtZXIucmVhZGFibGUucGlwZVRo
cm91Z2goc2ZyYW1lVHJhbnNmb3JtKS5waXBlVG8odHJhbnNmb3JtZXIud3JpdGFibGUpOworfQor
c2VsZi5wb3N0TWVzc2FnZSgicmVnaXN0ZXJlZCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0v
c2ZyYW1lLXRyYW5zZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRyYW5zZm9ybS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJlNDAxMzViMDRmNGY4NWJhNjc5YjAxODAyOGIzOTU0MjU3YzE3YTgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS9zZnJhbWUtdHJhbnNmb3JtLmh0bWwKQEAgLTAs
MCArMSwxNDEgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5
PgorICAgICAgICA8c2NyaXB0PgorCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAg
ICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIGNvbnN0IHNlbmRlclRy
YW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oKTsKKyAgICBjb25zdCByZWNlaXZlclRyYW5z
Zm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oKTsKKyAgICBjb25zdCBzZW5kZXIxID0gcGMuYWRk
VHJhbnNjZWl2ZXIoJ2F1ZGlvJykuc2VuZGVyOworICAgIGNvbnN0IHNlbmRlcjIgPSBwYy5hZGRU
cmFuc2NlaXZlcigndmlkZW8nKS5zZW5kZXI7CisgICAgY29uc3QgcmVjZWl2ZXIxID0gcGMuZ2V0
UmVjZWl2ZXJzKClbMF07CisgICAgY29uc3QgcmVjZWl2ZXIyID0gcGMuZ2V0UmVjZWl2ZXJzKClb
MV07CisKKyAgICBzZW5kZXIxLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAgICByZWNl
aXZlcjEudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07CisgICAgYXNzZXJ0X3Rocm93c19k
b20oIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4gc2VuZGVyMi50cmFuc2Zvcm0gPSBzZW5kZXJU
cmFuc2Zvcm0pOworICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsICgp
ID0+IHJlY2VpdmVyMi50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybSk7CisKKyAgICBzZW5k
ZXIxLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAgICByZWNlaXZlcjEudHJhbnNmb3Jt
ID0gcmVjZWl2ZXJUcmFuc2Zvcm07CisKKyAgICBzZW5kZXIxLnRyYW5zZm9ybSA9IG51bGw7Cisg
ICAgcmVjZWl2ZXIxLnRyYW5zZm9ybSA9IG51bGw7Cit9LCAiQ2Fubm90IHJldXNlIGF0dGFjaGVk
IHRyYW5zZm9ybXMiKTsKKwordGVzdCgoKSA9PiB7CisgICAgY29uc3Qgc2VuZGVyVHJhbnNmb3Jt
ID0gbmV3IFNGcmFtZVRyYW5zZm9ybSgpOworCisgICAgYXNzZXJ0X3RydWUoc2VuZGVyVHJhbnNm
b3JtLnJlYWRhYmxlIGluc3RhbmNlb2YgUmVhZGFibGVTdHJlYW0pOworICAgIGFzc2VydF90cnVl
KHNlbmRlclRyYW5zZm9ybS53cml0YWJsZSBpbnN0YW5jZW9mIFdyaXRhYmxlU3RyZWFtKTsKK30s
ICJTRnJhbWVUcmFuc2Zvcm0gZXhwb3NlcyByZWFkYWJsZSBhbmQgd3JpdGFibGUiKTsKKworcHJv
bWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNv
bm5lY3Rpb24oKTsKKyAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgU0ZyYW1lVHJhbnNm
b3JtKCk7CisgICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgU0ZyYW1lVHJhbnNmb3Jt
KCk7CisgICAgY29uc3Qgc2VuZGVyMSA9IHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpLnNlbmRl
cjsKKyAgICBjb25zdCBzZW5kZXIyID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ3ZpZGVvJykuc2VuZGVy
OworICAgIGNvbnN0IHJlY2VpdmVyMSA9IHBjLmdldFJlY2VpdmVycygpWzBdOworICAgIGNvbnN0
IHJlY2VpdmVyMiA9IHBjLmdldFJlY2VpdmVycygpWzFdOworCisgICAgYXNzZXJ0X2ZhbHNlKHNl
bmRlclRyYW5zZm9ybS5yZWFkYWJsZS5sb2NrZWQsICJzZW5kZXIgcmVhZGFibGUgYmVmb3JlIik7
CisgICAgYXNzZXJ0X2ZhbHNlKHNlbmRlclRyYW5zZm9ybS53cml0YWJsZS5sb2NrZWQsICJzZW5k
ZXIgd3JpdGFibGUgYmVmb3JlIik7CisgICAgYXNzZXJ0X2ZhbHNlKHJlY2VpdmVyVHJhbnNmb3Jt
LnJlYWRhYmxlLmxvY2tlZCwgInJlY2VpdmVyIHJlYWRhYmxlIGJlZm9yZSIpOworICAgIGFzc2Vy
dF9mYWxzZShyZWNlaXZlclRyYW5zZm9ybS53cml0YWJsZS5sb2NrZWQsICJyZWNlaXZlciB3cml0
YWJsZSBiZWZvcmUiKTsKKworICAgIHNlbmRlcjEudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3Jt
OworICAgIHJlY2VpdmVyMS50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKKworICAgIGFz
c2VydF90cnVlKHNlbmRlclRyYW5zZm9ybS5yZWFkYWJsZS5sb2NrZWQsICJzZW5kZXIgcmVhZGFi
bGUgZHVyaW5nIik7CisgICAgYXNzZXJ0X3RydWUoc2VuZGVyVHJhbnNmb3JtLndyaXRhYmxlLmxv
Y2tlZCwgInNlbmRlciB3cml0YWJsZSBkdXJpbmciKTsKKyAgICBhc3NlcnRfdHJ1ZShyZWNlaXZl
clRyYW5zZm9ybS5yZWFkYWJsZS5sb2NrZWQsICJyZWNlaXZlciByZWFkYWJsZSBkdXJpbmciKTsK
KyAgICBhc3NlcnRfdHJ1ZShyZWNlaXZlclRyYW5zZm9ybS53cml0YWJsZS5sb2NrZWQsICJyZWNl
aXZlciB3cml0YWJsZSBkdXJpbmciKTsKKworICAgIHNlbmRlcjEudHJhbnNmb3JtID0gbnVsbDsK
KyAgICByZWNlaXZlcjEudHJhbnNmb3JtID0gbnVsbDsKKworICAgIGFzc2VydF90cnVlKHNlbmRl
clRyYW5zZm9ybS5yZWFkYWJsZS5sb2NrZWQsICJzZW5kZXIgcmVhZGFibGUgYWZ0ZXIiKTsKKyAg
ICBhc3NlcnRfdHJ1ZShzZW5kZXJUcmFuc2Zvcm0ud3JpdGFibGUubG9ja2VkLCAic2VuZGVyIHdy
aXRhYmxlIGFmdGVyIik7CisgICAgYXNzZXJ0X3RydWUocmVjZWl2ZXJUcmFuc2Zvcm0ucmVhZGFi
bGUubG9ja2VkLCAicmVjZWl2ZXIgcmVhZGFibGUgYWZ0ZXIiKTsKKyAgICBhc3NlcnRfdHJ1ZShy
ZWNlaXZlclRyYW5zZm9ybS53cml0YWJsZS5sb2NrZWQsICJyZWNlaXZlciB3cml0YWJsZSBhZnRl
ciIpOworfSwgInJlYWRhYmxlL3dyaXRhYmxlIGFyZSBsb2NrZWQgd2hlbiBhdHRhY2hlZCBhbmQg
YWZ0ZXIgYmVpbmcgYXR0YWNoZWQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7
CisgICAgY29uc3Qga2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIG5l
dyBVaW50OEFycmF5KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYsIDIxOSwg
MjQsIDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZlQml0cyIs
ICJkZXJpdmVLZXkiXSk7CisKKyAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgU0ZyYW1l
VHJhbnNmb3JtKHsgcm9sZSA6ICdlbmNyeXB0JywgYXV0aGVudGljYXRpb25TaXplOiAxMCB9KTsK
KyAgICBzZW5kZXJUcmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkpOworCisgICAgY29uc3Qg
cmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgU0ZyYW1lVHJhbnNmb3JtKHsgcm9sZSA6ICdkZWNyeXB0
JywgYXV0aGVudGljYXRpb25TaXplOiAxMCB9KTsKKyAgICByZWNlaXZlclRyYW5zZm9ybS5zZXRF
bmNyeXB0aW9uS2V5KGtleSk7CisKKyAgICBjb25zdCB3cml0ZXIgPSBzZW5kZXJUcmFuc2Zvcm0u
d3JpdGFibGUuZ2V0V3JpdGVyKCk7CisgICAgY29uc3QgcmVhZGVyID0gcmVjZWl2ZXJUcmFuc2Zv
cm0ucmVhZGFibGUuZ2V0UmVhZGVyKCk7CisKKyAgICBzZW5kZXJUcmFuc2Zvcm0ucmVhZGFibGUu
cGlwZVRvKHJlY2VpdmVyVHJhbnNmb3JtLndyaXRhYmxlKTsKKworICAgIGNvbnN0IHNlbnQgPSBu
ZXcgQXJyYXlCdWZmZXIoOCk7CisgICAgY29uc3QgdmlldyA9IG5ldyBJbnQ4QXJyYXkoc2VudCk7
CisgICAgZm9yIChsZXQgY3B0ciA9IDA7IGNwdHIgPCBzZW50LmJ5dGVMZW5ndGg7ICsrY3B0cikK
KyAgICAgICAgdmlld1tjcHRyXSA9IGNwdHI7CisKKyAgICB3cml0ZXIud3JpdGUoc2VudCk7Cisg
ICAgY29uc3QgcmVjZWl2ZWQgPSBhd2FpdCByZWFkZXIucmVhZCgpOworCisgICAgYXNzZXJ0X2Vx
dWFscyhyZWNlaXZlZC52YWx1ZS5ieXRlTGVuZ3RoLCA4KTsKKyAgICBjb25zdCB2aWV3MiA9IG5l
dyBJbnQ4QXJyYXkocmVjZWl2ZWQudmFsdWUpOworICAgIGZvciAobGV0IGNwdHIgPSAwOyBjcHRy
IDwgc2VudC5ieXRlTGVuZ3RoOyArK2NwdHIpCisgICAgICAgIGFzc2VydF9lcXVhbHModmlldzJb
Y3B0cl0sIHZpZXdbY3B0cl0pOworfSwgIlNGcmFtZSB3aXRoIGFycmF5IGJ1ZmZlciAtIGF1dGhl
bnRpY2F0aW9uIHNpemUgMTAiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7Cisg
ICAgY29uc3Qga2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIG5ldyBV
aW50OEFycmF5KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYsIDIxOSwgMjQs
IDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZlQml0cyIsICJk
ZXJpdmVLZXkiXSk7CisKKyAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgU0ZyYW1lVHJh
bnNmb3JtKHsgcm9sZSA6ICdlbmNyeXB0JywgYXV0aGVudGljYXRpb25TaXplOiAxMCB9KTsKKyAg
ICBjb25zdCBzZW5kZXJXcml0ZXIgPSBzZW5kZXJUcmFuc2Zvcm0ud3JpdGFibGUuZ2V0V3JpdGVy
KCk7CisgICAgY29uc3Qgc2VuZGVyUmVhZGVyID0gc2VuZGVyVHJhbnNmb3JtLnJlYWRhYmxlLmdl
dFJlYWRlcigpOworCisgICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgU0ZyYW1lVHJh
bnNmb3JtKHsgcm9sZSA6ICdkZWNyeXB0JywgYXV0aGVudGljYXRpb25TaXplOiAxMCB9KTsKKyAg
ICBjb25zdCByZWNlaXZlcldyaXRlciA9IHJlY2VpdmVyVHJhbnNmb3JtLndyaXRhYmxlLmdldFdy
aXRlcigpOworICAgIGNvbnN0IHJlY2VpdmVyUmVhZGVyID0gcmVjZWl2ZXJUcmFuc2Zvcm0ucmVh
ZGFibGUuZ2V0UmVhZGVyKCk7CisKKyAgICBzZW5kZXJUcmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktl
eShrZXkpOworICAgIHJlY2VpdmVyVHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5KTsKKwor
ICAgIGNvbnN0IGNodW5rID0gbmV3IEFycmF5QnVmZmVyKDgpOworCisgICAgLy8gZGVjcnlwdGlv
biBzaG91bGQgZmFpbCwgbGVhZGluZyB0byBhbiBlbXB0eSBhcnJheSBidWZmZXIuCisgICAgYXdh
aXQgcmVjZWl2ZXJXcml0ZXIud3JpdGUoY2h1bmspOworICAgIGxldCByZWNlaXZlZCA9IGF3YWl0
IHJlY2VpdmVyUmVhZGVyLnJlYWQoKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlY2VpdmVkLnZhbHVl
LmJ5dGVMZW5ndGgsIDApOworCisgICAgLy8gV2Ugd3JpdGUgYWdhaW4gYnV0IHRoaXMgdGltZSB3
aXRoIGEgY2h1bmsgd2UgY2FuIGRlY3J5cHQuCisgICAgYXdhaXQgc2VuZGVyV3JpdGVyLndyaXRl
KGNodW5rKTsKKyAgICBjb25zdCBlbmNyeXB0ZWQgPSBhd2FpdCBzZW5kZXJSZWFkZXIucmVhZCgp
OworICAgIGF3YWl0IHJlY2VpdmVyV3JpdGVyLndyaXRlKGVuY3J5cHRlZC52YWx1ZSk7CisgICAg
cmVjZWl2ZWQgPSBhd2FpdCByZWNlaXZlclJlYWRlci5yZWFkKCk7CisgICAgYXNzZXJ0X2VxdWFs
cyhyZWNlaXZlZC52YWx1ZS5ieXRlTGVuZ3RoLCA4KTsKK30sICJTRnJhbWUgZGVjcnlwdGlvbiB3
aXRoIGFycmF5IGJ1ZmZlciB0aGF0IGlzIHRvbyBzbWFsbCIpOworCitwcm9taXNlX3Rlc3QoYXN5
bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCBrZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9y
dEtleSgicmF3IiwgbmV3IFVpbnQ4QXJyYXkoWzE0MywgNzcsIDQzLCAxMCwgNzIsIDE5LCAzNywg
NjcsIDIzNiwgMjE5LCAyNCwgOTMsIDI2LCAxNjUsIDkxLCAxNzhdKSwgIkhLREYiLCBmYWxzZSwg
WyJkZXJpdmVCaXRzIiwgImRlcml2ZUtleSJdKTsKKworICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNm
b3JtID0gbmV3IFNGcmFtZVRyYW5zZm9ybSh7IHJvbGUgOiAnZGVjcnlwdCcsIGF1dGhlbnRpY2F0
aW9uU2l6ZTogMTAgfSk7CisgICAgY29uc3QgcmVjZWl2ZXJXcml0ZXIgPSByZWNlaXZlclRyYW5z
Zm9ybS53cml0YWJsZS5nZXRXcml0ZXIoKTsKKyAgICByZWNlaXZlclRyYW5zZm9ybS5zZXRFbmNy
eXB0aW9uS2V5KGtleSk7CisKKyAgICAvLyBkZWNyeXB0aW9uIHNob3VsZCBmYWlsLCBsZWFkaW5n
IHRvIGVycm9yaW5nIHRoZSB0cmFuc2Zvcm0uCisgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2pz
KHRlc3QsIFR5cGVFcnJvciwgcmVjZWl2ZXJXcml0ZXIud3JpdGUoeyB9KSk7CisgICAgYXdhaXQg
cHJvbWlzZV9yZWplY3RzX2pzKHRlc3QsIFR5cGVFcnJvciwgcmVjZWl2ZXJXcml0ZXIuY2xvc2Vk
KTsKK30sICJTRnJhbWUgdHJhbnNmb3JtIGdldHMgZXJyb3JlZCBpZiB0cnlpbmcgdG8gcHJvY2Vz
cyB1bmV4cGVjdGVkIHZhbHVlIHR5cGVzIik7CisKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDlmYmMzN2Y3YTY0MGZmZDYxNGViODEyNDRmODg4Y2E5ZjAwYzAwODMuLjBhNWM2YTIw
N2E3MmVjZDc0N2I2MDE1OTNlYzM2ZTc1YjY3NDM4MmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE1NzMsOCArMTU3Myw4IEBAIHdlYmtpdC5vcmcv
Yi8xMzYyMjQgZmFzdC9zcGVlY2hzeW50aGVzaXMgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzYy
MjQgZmFzdC9zcGVlY2hyZWNvZ25pdGlvbiBbIFNraXAgXQogCiAjIE5vIHBsYW5zIHRvIHN1cHBv
cnQgU2ZyYW1lcyBmb3IgYSB3aGlsZQotaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0u
aHRtbCBbIFNraXAgXQotaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0taW4td29ya2Vy
Lmh0bWwgWyBTa2lwIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVu
Y29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFuc2Zvcm0uaHRtbCBbIFNraXAgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2ZyYW1lLXRy
YW5zZm9ybS1pbi13b3JrZXIuaHR0cHMuaHRtbCBbIFNraXAgXQogd2VicnRjL2F1ZGlvLXNmcmFt
ZS5odG1sIFsgU2tpcCBdCiB3ZWJydGMvc2ZyYW1lLXRlc3QtdmVjdG9ycy5odG1sIFsgU2tpcCBd
CiB3ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1idWZmZXItc291cmNlLmh0bWwgWyBTa2lwIF0KQEAg
LTIwMzcsNyArMjAzNyw3IEBAIHdlYmtpdC5vcmcvYi8yMjM5NjUgaHR0cC90ZXN0cy9jb250ZW50
ZXh0ZW5zaW9ucy9ibG9jay1ldmVyeXRoaW5nLXVubGVzcy1kb21haW4tCiB3ZWJraXQub3JnL2Iv
MjIzOTY1IGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvaGlkZS1vbi1jc3AtcmVwb3J0LnB5
IFsgQ3Jhc2ggXQogd2Via2l0Lm9yZy9iLzIyMzk2NSBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNp
b25zL21haW4tcmVzb3VyY2UtcmVkaXJlY3QtYmxvY2tlZC5weSBbIENyYXNoIF0KIAotd2Via2l0
Lm9yZy9iLzIyNDA2OCBodHRwL3dwdC93ZWJydGMvd2VicnRjLWxhdGUtdHJhbnNmb3JtLmh0bWwg
WyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMjQwNjggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0vc2NyaXB0LWxhdGUtdHJhbnNmb3JtLmh0
dHBzLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzIyNDA3MSB3ZWJnbC9wZW5kaW5n
L2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0ZW5j
aWwtYW50aWFsaWFzLmh0bWwgWyBUaW1lb3V0IF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDE1YzljMGFlZDAxOWJhZmZkNzhmZDdkYmI5
MDA1MjgxNjIwZDE1NmYuLjg0MTI4MzFkZjdmNGVlNmU2NGFjOTM4ZjFhMDU0OWQ0ZDEwYzgxZjUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azEvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTE2LDYgKzE2LDcgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9jcm9z
cy1vcmlnaW4tcmVzb3VyY2UtcG9saWN5IFsgU2tpcCBdCiAKICMgU2tpcCBXZWJSVEMgZm9yIG5v
dyBpbiBXSzEKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjIFsgU2tpcCBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9y
bSBbIFNraXAgXQogd2VicnRjIFsgU2tpcCBdCiAKICMgTm90IHN1cHBvcnRlZCBvbiBXSzEKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA0OThh
M2ZlNjM4NmU2MjZjODY2ODdhOTRiNWY1MmUzNWYzMTFkYzkwLi42NTdlNTU5ODVjNWU5NGQ0NjYy
YTNjM2E3YWQ3OWM1OTFjNDI3YWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zCkBAIC0zOTQsNiArMzk0LDcgQEAgd2VicnRjL2RhdGFjaGFubmVs
IFsgUGFzcyBdCiB3ZWJydGMvZGF0YWNoYW5uZWwvbWRucy1pY2UtY2FuZGlkYXRlcy5odG1sIFsg
U2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENQZWVyQ29u
bmVjdGlvbi1zZXRMb2NhbERlc2NyaXB0aW9uLW9mZmVyLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtp
dC5vcmcvYi8yMDk4NzggIFsgRGVidWcgXSB3ZWJydGMvZGF0YWNoYW5uZWwvbXVsdGlwbGUtY29u
bmVjdGlvbnMuaHRtbCBbIFNsb3cgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJydGMtZW5jb2RlZC10cmFuc2Zvcm0gWyBTa2lwIF0KIAogIyBUaGVzZSB0ZXN0cyB0ZXN0IHRo
ZSBTaGFkb3cgRE9NIGJhc2VkIEhUTUwgZm9ybSB2YWxpZGF0aW9uIFVJIGJ1dCBNYWMgV0sxIGlz
IHVzaW5nIG5hdGl2ZSBkaWFsb2dzIGluc3RlYWQuCiBmYXN0L2Zvcm1zL3ZhbGlkYXRpb24tbWVz
c2FnZS1vbi1saXN0Ym94Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9zY3Jp
cHQtdHJhbnNmb3JtLmpzIGIvTGF5b3V0VGVzdHMvd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlNjhjNjIyYmZjMTFhY2UxZWIxZjFmY2M4
ZDgyZDIyZmM0ODJkNTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanMKKysrIC9kZXYvbnVs
bApAQCAtMSw3ICswLDAgQEAKLWNsYXNzIE1vY2tSVENSdHBUcmFuc2Zvcm1lciBleHRlbmRzIFJU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyIHsKLSAgICBjb25zdHJ1Y3RvcigpIHsgfQotICAgIHN0YXJ0
KHJlYWRhYmxlU3RyZWFtLCB3cml0YWJsZVN0cmVhbSkgeyByZWFkYWJsZVN0cmVhbS5waXBlVG8o
d3JpdGFibGVTdHJlYW0pOyB9Ci19OwotCi1yZWdpc3RlclJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
KCJNb2NrUlRDUnRwVHJhbnNmb3JtIiwgTW9ja1JUQ1J0cFRyYW5zZm9ybWVyKTsKLXNlbGYucG9z
dE1lc3NhZ2UoInN0YXJ0ZWQiKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>