<?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>183851</bug_id>
          
          <creation_ts>2018-03-21 08:50:38 -0700</creation_ts>
          <short_desc>[Web Animations] Import CSS Animations and CSS Transitions as Web Animations tests from Mozilla</short_desc>
          <delta_ts>2018-03-21 10:37:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1408037</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-03-21 08:50:38 -0700</bug_when>
    <thetext>[Web Animations] Import CSS Animations and CSS Transitions as Web Animations tests from Mozilla</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408038</commentid>
    <comment_count>1</comment_count>
      <attachid>336195</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-03-21 08:52:14 -0700</bug_when>
    <thetext>Created attachment 336195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408078</commentid>
    <comment_count>2</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-03-21 10:33:15 -0700</bug_when>
    <thetext>Committed r229809: &lt;https://trac.webkit.org/changeset/229809&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408082</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-21 10:37:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/38713514&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336195</attachid>
            <date>2018-03-21 08:52:14 -0700</date>
            <delta_ts>2018-03-21 10:22:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183851-20180321165212.patch</filename>
            <type>text/plain</type>
            <size>328916</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5ODAzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzljMGQ2M2RlZmNiZmZlNGI2NmU0
M2Y4MDM5OTQ2Mzk2NGU0NjcyNy4uOThlYmFlZmY0NzkzMDE3MTUyZDI0ZWNlMjAxMjc2NTA5ZTgw
ZmRhYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTAzLTIxICBBbnRvaW5lIFF1aW50ICA8
Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25zXSBJbXBvcnQgQ1NT
IEFuaW1hdGlvbnMgYW5kIENTUyBUcmFuc2l0aW9ucyBhcyBXZWIgQW5pbWF0aW9ucyB0ZXN0cyBm
cm9tIE1vemlsbGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4Mzg1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1hcmsgYWxsIGltcG9ydGVkIHRlc3RzIGFzIGZsYWt5IGZhaWx1cmVzIG9yIHRpbWVvdXRz
IHdoaWxlIHdlIHdvcmsgb24gbWFraW5nIHRoZW0gcGFzcyByZWxpYWJseS4KKyAgICAgICAgRWFj
aCB0ZXN0IGhhcyBhIGRlZGljYXRlZCBidWcgdHJhY2tpbmcgcHJvZ3Jlc3MuCisKKyAgICAgICAg
KiBUZXN0RXhwZWN0YXRpb25zOgorCiAyMDE4LTAzLTIxICBNczJnZXIgIDxNczJnZXJAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1RLXSBNYXJrIGZhc3QvZm9ybXMvZmlsZS9lbnRyaWVzLWFwaS93
ZWJraXRkaXJlY3Rvcnktb3Blbi1wYW5lbC5odG1sIGFzIHBhc3NpbmcuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvQ2hhbmdlTG9nCmluZGV4IGM3ZDg4NWM2Mzk0MzY1ZjhlYWNjMzMwOGQwMTEx
ZTc4ZWFhNGZjYWQuLmRlNDdiODhjMzI4NGUwY2VmYjlhNTdkOWUxMjA3YmQwNDBlMDg0NGMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIw
MTgtMDMtMjEgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KKworICAgICAgICBb
V2ViIEFuaW1hdGlvbnNdIEltcG9ydCBDU1MgQW5pbWF0aW9ucyBhbmQgQ1NTIFRyYW5zaXRpb25z
IGFzIFdlYiBBbmltYXRpb25zIHRlc3RzIGZyb20gTW96aWxsYQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzODUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wb3J0IGEgc2VyaWVzIG9mIHRlc3RzIGNy
ZWF0ZWQgYnkgTW96aWxsYSBjb250cmlidXRvcnMgZm9yIENTUyBBbmltYXRpb25zIGFuZCBDU1Mg
VHJhbnNpdGlvbnMgYXMgV2ViIEFuaW1hdGlvbnMuCisKKyAgICAgICAgKiBjc3MtYW5pbWF0aW9u
cy90ZXN0X2FuaW1hdGlvbi1jYW5jZWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBj
c3MtYW5pbWF0aW9ucy90ZXN0X2FuaW1hdGlvbi1jYW5jZWwuaHRtbDogQWRkZWQuCisgICAgICAg
ICogY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tY29tcHV0ZWQtdGltaW5nLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tY29t
cHV0ZWQtdGltaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzcy1hbmltYXRpb25zL3Rlc3Rf
YW5pbWF0aW9uLWN1cnJlbnR0aW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3Nz
LWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tY3VycmVudHRpbWUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tZmluaXNoLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tZmluaXNoLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGNzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLWZpbmlz
aGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3NzLWFuaW1hdGlvbnMvdGVzdF9h
bmltYXRpb24tZmluaXNoZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzLWFuaW1hdGlvbnMv
dGVzdF9hbmltYXRpb24taWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MtYW5p
bWF0aW9ucy90ZXN0X2FuaW1hdGlvbi1pZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MtYW5p
bWF0aW9ucy90ZXN0X2FuaW1hdGlvbi1wYXVzaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tcGF1c2luZy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBjc3MtYW5pbWF0aW9ucy90ZXN0X2FuaW1hdGlvbi1wbGF5c3RhdGUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MtYW5pbWF0aW9ucy90ZXN0X2FuaW1hdGlvbi1w
bGF5c3RhdGUuaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmlt
YXRpb24tcmVhZHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MtYW5pbWF0aW9u
cy90ZXN0X2FuaW1hdGlvbi1yZWFkeS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MtYW5pbWF0
aW9ucy90ZXN0X2FuaW1hdGlvbi1yZXZlcnNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tcmV2ZXJzZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBjc3MtYW5pbWF0aW9ucy90ZXN0X2FuaW1hdGlvbi1zdGFydHRpbWUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MtYW5pbWF0aW9ucy90ZXN0X2FuaW1hdGlvbi1zdGFy
dHRpbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRp
b25zLWR5bmFtaWMtY2hhbmdlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNzcy1h
bmltYXRpb25zL3Rlc3RfYW5pbWF0aW9ucy1keW5hbWljLWNoYW5nZXMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogY3NzLWFuaW1hdGlvbnMvdGVzdF9jc3NhbmltYXRpb24tYW5pbWF0aW9ubmFtZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNzcy1hbmltYXRpb25zL3Rlc3RfY3NzYW5p
bWF0aW9uLWFuaW1hdGlvbm5hbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzLWFuaW1hdGlv
bnMvdGVzdF9kb2N1bWVudC1nZXQtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGNzcy1hbmltYXRpb25zL3Rlc3RfZG9jdW1lbnQtZ2V0LWFuaW1hdGlvbnMuaHRtbDog
QWRkZWQuCisgICAgICAgICogY3NzLWFuaW1hdGlvbnMvdGVzdF9lZmZlY3QtdGFyZ2V0LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3NzLWFuaW1hdGlvbnMvdGVzdF9lZmZlY3QtdGFy
Z2V0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzcy1hbmltYXRpb25zL3Rlc3RfZWxlbWVudC1n
ZXQtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNzcy1hbmltYXRp
b25zL3Rlc3RfZWxlbWVudC1nZXQtYW5pbWF0aW9ucy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBj
c3MtYW5pbWF0aW9ucy90ZXN0X2V2ZW50LWRpc3BhdGNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogY3NzLWFuaW1hdGlvbnMvdGVzdF9ldmVudC1kaXNwYXRjaC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBjc3MtYW5pbWF0aW9ucy90ZXN0X2V2ZW50LW9yZGVyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogY3NzLWFuaW1hdGlvbnMvdGVzdF9ldmVudC1vcmRlci5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBjc3MtYW5pbWF0aW9ucy90ZXN0X2tleWZyYW1lZWZmZWN0LWdldGtl
eWZyYW1lcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MtYW5pbWF0aW9ucy90ZXN0X3BzZXVk
b0VsZW1lbnQtZ2V0LWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBj
c3MtYW5pbWF0aW9ucy90ZXN0X3BzZXVkb0VsZW1lbnQtZ2V0LWFuaW1hdGlvbnMuaHRtbDogQWRk
ZWQuCisgICAgICAgICogY3NzLWFuaW1hdGlvbnMvdGVzdF9zZXR0aW5nLWVmZmVjdC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBjc3MtdHJhbnNpdGlvbnMvdGVzdF9hbmltYXRpb24tY2FuY2VsLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3NzLXRyYW5zaXRpb25zL3Rlc3RfYW5pbWF0
aW9uLWNhbmNlbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MtdHJhbnNpdGlvbnMvdGVzdF9h
bmltYXRpb24tY29tcHV0ZWQtdGltaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
Y3NzLXRyYW5zaXRpb25zL3Rlc3RfYW5pbWF0aW9uLWNvbXB1dGVkLXRpbWluZy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBjc3MtdHJhbnNpdGlvbnMvdGVzdF9hbmltYXRpb24tY3VycmVudHRpbWUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MtdHJhbnNpdGlvbnMvdGVzdF9hbmlt
YXRpb24tY3VycmVudHRpbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzLXRyYW5zaXRpb25z
L3Rlc3RfYW5pbWF0aW9uLWZpbmlzaGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
Y3NzLXRyYW5zaXRpb25zL3Rlc3RfYW5pbWF0aW9uLWZpbmlzaGVkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGNzcy10cmFuc2l0aW9ucy90ZXN0X2FuaW1hdGlvbi1wYXVzaW5nLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogY3NzLXRyYW5zaXRpb25zL3Rlc3RfYW5pbWF0aW9uLXBhdXNp
bmcuaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzLXRyYW5zaXRpb25zL3Rlc3RfYW5pbWF0aW9u
LXJlYWR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3NzLXRyYW5zaXRpb25zL3Rl
c3RfYW5pbWF0aW9uLXJlYWR5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzcy10cmFuc2l0aW9u
cy90ZXN0X2FuaW1hdGlvbi1zdGFydHRpbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBjc3MtdHJhbnNpdGlvbnMvdGVzdF9hbmltYXRpb24tc3RhcnR0aW1lLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGNzcy10cmFuc2l0aW9ucy90ZXN0X2Nzc3RyYW5zaXRpb24tdHJhbnNpdGlvbnBy
b3BlcnR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3NzLXRyYW5zaXRpb25zL3Rl
c3RfY3NzdHJhbnNpdGlvbi10cmFuc2l0aW9ucHJvcGVydHkuaHRtbDogQWRkZWQuCisgICAgICAg
ICogY3NzLXRyYW5zaXRpb25zL3Rlc3RfZG9jdW1lbnQtZ2V0LWFuaW1hdGlvbnMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MtdHJhbnNpdGlvbnMvdGVzdF9kb2N1bWVudC1nZXQt
YW5pbWF0aW9ucy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MtdHJhbnNpdGlvbnMvdGVzdF9l
ZmZlY3QtdGFyZ2V0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3NzLXRyYW5zaXRp
b25zL3Rlc3RfZWZmZWN0LXRhcmdldC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MtdHJhbnNp
dGlvbnMvdGVzdF9lbGVtZW50LWdldC1hbmltYXRpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogY3NzLXRyYW5zaXRpb25zL3Rlc3RfZWxlbWVudC1nZXQtYW5pbWF0aW9ucy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBjc3MtdHJhbnNpdGlvbnMvdGVzdF9ldmVudC1kaXNwYXRjaC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNzcy10cmFuc2l0aW9ucy90ZXN0X2V2ZW50
LWRpc3BhdGNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzcy10cmFuc2l0aW9ucy90ZXN0X2tl
eWZyYW1lZWZmZWN0LWdldGtleWZyYW1lcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGNzcy10cmFuc2l0aW9ucy90ZXN0X2tleWZyYW1lZWZmZWN0LWdldGtleWZyYW1lcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBjc3MtdHJhbnNpdGlvbnMvdGVzdF9wc2V1ZG9FbGVtZW50LWdldC1h
bmltYXRpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3NzLXRyYW5zaXRpb25z
L3Rlc3RfcHNldWRvRWxlbWVudC1nZXQtYW5pbWF0aW9ucy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBjc3MtdHJhbnNpdGlvbnMvdGVzdF9zZXR0aW5nLWVmZmVjdC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiByZXNvdXJjZXMvdGVzdGNvbW1vbi5qczogQWRkZWQuCisKIDIwMTUtMDUtMjYgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBBbiBTVkcg
d2l0aCBubyBpbnRyaW5zaWMgc2l6ZSBkb2VzIG5vdCBkcmF3IGNvcnJlY3Qgc2xpY2VzIHdoZW4g
dXNlZCBhcyBhIGJvcmRlci1pbWFnZSBmb3IgYW4gSFRNTCBlbGVtZW50LgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggOThmZDEzZTMzYmI1MmRiMDYzYzc5NDI1ZTdkNjBkMDAzZjE1ZDIzOC4uMDJmYzc0
NjQxZjcxYjE5MWE2NDgyNTkxZDI1OGVkNjQ1ZWFkOGI0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBA
IC0xNzA1LDYgKzE3MDUsNDQgQEAgd2Via2l0Lm9yZy9iLzE4MTEyMiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25zL2ludGVyZmFjZXMvQW4KIHdlYmtpdC5vcmcv
Yi8xODExMjMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWItYW5pbWF0aW9ucy9p
bnRlcmZhY2VzL0FuaW1hdGlvbi9maW5pc2guaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQu
b3JnL2IvMTgxODg4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWFuaW1hdGlv
bnMvdGltaW5nLW1vZGVsL2FuaW1hdGlvbi1lZmZlY3RzL2N1cnJlbnQtaXRlcmF0aW9uLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQogCit3ZWJraXQub3JnL2IvMTgzODE1IGltcG9ydGVkL21vemlsbGEv
Y3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tY2FuY2VsLmh0bWwgWyBQYXNzIEZhaWx1cmUg
VGltZW91dCBdCit3ZWJraXQub3JnL2IvMTgzODE2IGltcG9ydGVkL21vemlsbGEvY3NzLXRyYW5z
aXRpb25zL3Rlc3Rfa2V5ZnJhbWVlZmZlY3QtZ2V0a2V5ZnJhbWVzLmh0bWwgWyBQYXNzIEZhaWx1
cmUgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTgzODE3IGltcG9ydGVkL21vemlsbGEvY3NzLWFu
aW1hdGlvbnMvdGVzdF9hbmltYXRpb24tY29tcHV0ZWQtdGltaW5nLmh0bWwgWyBQYXNzIEZhaWx1
cmUgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTgzODE4IGltcG9ydGVkL21vemlsbGEvY3NzLWFu
aW1hdGlvbnMvdGVzdF9wc2V1ZG9FbGVtZW50LWdldC1hbmltYXRpb25zLmh0bWwgWyBQYXNzIEZh
aWx1cmUgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTgzODE5IGltcG9ydGVkL21vemlsbGEvY3Nz
LWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tY3VycmVudHRpbWUuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8xODM4MjAgaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5p
bWF0aW9ucy90ZXN0X2FuaW1hdGlvbi1maW5pc2guaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0
IF0KK3dlYmtpdC5vcmcvYi8xODM4MjEgaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMv
dGVzdF9hbmltYXRpb24tY2FuY2VsLmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCit3ZWJr
aXQub3JnL2IvMTgzODIyIGltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmlt
YXRpb24tZmluaXNoZWQuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KK3dlYmtpdC5vcmcv
Yi8xODM4MjMgaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9hbmltYXRpb24t
Y29tcHV0ZWQtdGltaW5nLmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCit3ZWJraXQub3Jn
L2IvMTgzODI0IGltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24t
aWQuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8xODM4MjUgaW1w
b3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9hbmltYXRpb24tY3VycmVudHRpbWUu
aHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8xODM4MjYgaW1wb3J0
ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2FuaW1hdGlvbi1wYXVzaW5nLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTgzODI3IGltcG9ydGVkL21vemls
bGEvY3NzLXRyYW5zaXRpb25zL3Rlc3RfYW5pbWF0aW9uLWZpbmlzaGVkLmh0bWwgWyBQYXNzIEZh
aWx1cmUgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTgzODI4IGltcG9ydGVkL21vemlsbGEvY3Nz
LWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tcGxheXN0YXRlLmh0bWwgWyBQYXNzIEZhaWx1cmUg
VGltZW91dCBdCit3ZWJraXQub3JnL2IvMTgzODI5IGltcG9ydGVkL21vemlsbGEvY3NzLXRyYW5z
aXRpb25zL3Rlc3RfYW5pbWF0aW9uLXBhdXNpbmcuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0
IF0KK3dlYmtpdC5vcmcvYi8xODM4MzAgaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90
ZXN0X2FuaW1hdGlvbi1yZWFkeS5odG1sIFsgUGFzcyBGYWlsdXJlIFRpbWVvdXQgXQord2Via2l0
Lm9yZy9iLzE4MzgzMSBpbXBvcnRlZC9tb3ppbGxhL2Nzcy10cmFuc2l0aW9ucy90ZXN0X2FuaW1h
dGlvbi1yZWFkeS5odG1sIFsgUGFzcyBGYWlsdXJlIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzE4
MzgzMiBpbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLXJldmVy
c2UuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8xODM4MzMgaW1w
b3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9hbmltYXRpb24tc3RhcnR0aW1lLmh0
bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTgzODM0IGltcG9ydGVk
L21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tc3RhcnR0aW1lLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTgzODM1IGltcG9ydGVkL21vemls
bGEvY3NzLXRyYW5zaXRpb25zL3Rlc3RfY3NzdHJhbnNpdGlvbi10cmFuc2l0aW9ucHJvcGVydHku
aHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8xODM4MzYgaW1wb3J0
ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2FuaW1hdGlvbnMtZHluYW1pYy1jaGFuZ2Vz
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTgzODM3IGltcG9y
dGVkL21vemlsbGEvY3NzLXRyYW5zaXRpb25zL3Rlc3RfZG9jdW1lbnQtZ2V0LWFuaW1hdGlvbnMu
aHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8xODM4MzggaW1wb3J0
ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2Nzc2FuaW1hdGlvbi1hbmltYXRpb25uYW1l
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTgzODM5IGltcG9y
dGVkL21vemlsbGEvY3NzLXRyYW5zaXRpb25zL3Rlc3RfZWZmZWN0LXRhcmdldC5odG1sIFsgUGFz
cyBGYWlsdXJlIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzE4Mzg0MCBpbXBvcnRlZC9tb3ppbGxh
L2Nzcy1hbmltYXRpb25zL3Rlc3RfZG9jdW1lbnQtZ2V0LWFuaW1hdGlvbnMuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8xODM4NDEgaW1wb3J0ZWQvbW96aWxsYS9j
c3MtdHJhbnNpdGlvbnMvdGVzdF9lbGVtZW50LWdldC1hbmltYXRpb25zLmh0bWwgWyBQYXNzIEZh
aWx1cmUgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTgzODQyIGltcG9ydGVkL21vemlsbGEvY3Nz
LWFuaW1hdGlvbnMvdGVzdF9lZmZlY3QtdGFyZ2V0Lmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91
dCBdCit3ZWJraXQub3JnL2IvMTgzODQzIGltcG9ydGVkL21vemlsbGEvY3NzLXRyYW5zaXRpb25z
L3Rlc3RfZXZlbnQtZGlzcGF0Y2guaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KK3dlYmtp
dC5vcmcvYi8xODM4NDQgaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2VsZW1l
bnQtZ2V0LWFuaW1hdGlvbnMuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KK3dlYmtpdC5v
cmcvYi8xODM4NDUgaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2V2ZW50LWRp
c3BhdGNoLmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTgzODQ2
IGltcG9ydGVkL21vemlsbGEvY3NzLXRyYW5zaXRpb25zL3Rlc3RfcHNldWRvRWxlbWVudC1nZXQt
YW5pbWF0aW9ucy5odG1sIFsgUGFzcyBGYWlsdXJlIFRpbWVvdXQgXQord2Via2l0Lm9yZy9iLzE4
Mzg0NyBpbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfZXZlbnQtb3JkZXIuaHRt
bCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KKword2Via2l0Lm9yZy9iLzE4Mzg0OCBpbXBvcnRl
ZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3Rfa2V5ZnJhbWVlZmZlY3QtZ2V0a2V5ZnJhbWVz
Lmh0bWwgWyBDcmFzaCBdCit3ZWJraXQub3JnL2IvMTgzODQ5IGltcG9ydGVkL21vemlsbGEvY3Nz
LWFuaW1hdGlvbnMvdGVzdF9zZXR0aW5nLWVmZmVjdC5odG1sIFsgQ3Jhc2ggXQord2Via2l0Lm9y
Zy9iLzE4Mzg1MCBpbXBvcnRlZC9tb3ppbGxhL2Nzcy10cmFuc2l0aW9ucy90ZXN0X3NldHRpbmct
ZWZmZWN0Lmh0bWwgWyBDcmFzaCBdCisKIHdlYmtpdC5vcmcvYi8xNzc0NDAgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9yZWxheGluZy10aGUtc2Ft
ZS1vcmlnaW4tcmVzdHJpY3Rpb24vZG9jdW1lbnRfZG9tYWluX3NldHRlcl9udWxsLnRlbnRhdGl2
ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE1NzA2OCBbIERlYnVnIF0g
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9ub3NuaWZmL2ltcG9ydHNjcmlw
dHMuaHRtbCBbIFBhc3MgQ3Jhc2ggXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2FuaW1hdGlvbi1jYW5jZWwtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2FuaW1h
dGlvbi1jYW5jZWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhNTY0ODhlMDY3ZTZjZmM0ZGIy
OTlmZWMxZWQxN2U0OTQxYjE0ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLWNhbmNlbC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMSBAQAorCitGQUlMIEFuaW1hdGVkIHN0eWxlIGlzIGNsZWFyZWQg
YWZ0ZXIgY2FuY2VsbGluZyBhIHJ1bm5pbmcgQ1NTIGFuaW1hdGlvbiBhc3NlcnRfbm90X2VxdWFs
czogdHJhbnNmb3JtIHN0eWxlIGlzIGFuaW1hdGVkIGJlZm9yZSBjYW5jZWxsaW5nIGdvdCBkaXNh
bGxvd2VkIHZhbHVlICJub25lIgorUEFTUyBBbmltYXRlZCBzdHlsZSBpcyBjbGVhcmVkIGFmdGVy
IGNhbmNlbGxpbmcgYSBmaWxsaW5nIENTUyBhbmltYXRpb24gCitQQVNTIEFmdGVyIGNhbmNlbGlu
ZyBhbiBhbmltYXRpb24sIGl0IGNhbiBzdGlsbCBiZSBzZWVrZWQgCitQQVNTIEFmdGVyIGNhbmNl
bGxpbmcgYW4gYW5pbWF0aW9uLCBpdCBjYW4gc3RpbGwgYmUgcmUtdXNlZCAKK1BBU1MgQWZ0ZXIg
Y2FuY2VsbGluZyBhbiBhbmltYXRpb24sIHVwZGF0aW5nIGFuaW1hdGlvbiBwcm9wZXJ0aWVzIGRv
ZXNuJ3QgbWFrZSBpdCBsaXZlIGFnYWluIAorUEFTUyBBZnRlciBjYW5jZWxsaW5nIGFuIGFuaW1h
dGlvbiwgdXBkYXRpbmcgYW5pbWF0aW9uLXBsYXktc3RhdGUgZG9lc24ndCBtYWtlIGl0IGxpdmUg
YWdhaW4gCitGQUlMIFNldHRpbmcgYW5pbWF0aW9uLW5hbWUgdG8gJ25vbmUnIGNhbmNlbHMgdGhl
IGFuaW1hdGlvbiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaWRsZSIgYnV0IGdvdCAiZmluaXNo
ZWQiCitGQUlMIFNldHRpbmcgZGlzcGxheTpub25lIG9uIGFuIGVsZW1lbnQgY2FuY2VsIGl0cyBh
bmltYXRpb25zIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJpZGxlIiBidXQgZ290ICJydW5uaW5n
IgorRkFJTCBTZXR0aW5nIGRpc3BsYXk6bm9uZSBvbiBhbiBhbmNlc3RvciBlbGVtZW50IGNhbmNl
bHMgYW5pbWF0aW9ucyBvbiBkZXNjZW5kYW50cyBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaWRs
ZSIgYnV0IGdvdCAicnVubmluZyIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2FuaW1hdGlvbi1jYW5jZWwuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tY2Fu
Y2VsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzZkMDE0MTY2MjQyM2UxZDkyMWE4ZjRlMTk0YWMyMzhhMWNl
MTk2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3Nz
LWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tY2FuY2VsLmh0bWwKQEAgLTAsMCArMSwxOTMgQEAK
KzwhZG9jdHlwZSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlQ1NTQW5pbWF0
aW9uc0FuZENTU1RyYW5zaXRpb25zQmFja2VkQnlXZWJBbmltYXRpb25zPXRydWUgXSAtLT4KKzxt
ZXRhIGNoYXJzZXQ9dXRmLTg+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90
ZXN0Y29tbW9uLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK0BrZXlmcmFtZXMgdHJhbnNsYXRlQW5p
bSB7CisgIHRvIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTAwcHgpIH0KK30KK0BrZXlmcmFtZXMg
bWFyZ2luTGVmdEFuaW0geworICB0byB7IG1hcmdpbi1sZWZ0OiAxMDBweCB9Cit9CitAa2V5ZnJh
bWVzIG1hcmdpbkxlZnRBbmltMTAwVG8yMDAgeworICBmcm9tIHsgbWFyZ2luLWxlZnQ6IDEwMHB4
IH0KKyAgdG8geyBtYXJnaW4tbGVmdDogMjAwcHggfQorfQorPC9zdHlsZT4KKzxib2R5PgorPGRp
diBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7CisKK3Byb21pc2VfdGVz
dChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeyBzdHlsZTogJ2FuaW1hdGlv
bjogdHJhbnNsYXRlQW5pbSAxMDBzJyB9KTsKKyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRBbmlt
YXRpb25zKClbMF07CisKKyAgcmV0dXJuIGFuaW1hdGlvbi5yZWFkeS50aGVuKGZ1bmN0aW9uKCkg
eworICAgIGFzc2VydF9ub3RfZXF1YWxzKGdldENvbXB1dGVkU3R5bGUoZGl2KS50cmFuc2Zvcm0s
ICdub25lJywKKyAgICAgICAgICAgICAgICAgICAgICAndHJhbnNmb3JtIHN0eWxlIGlzIGFuaW1h
dGVkIGJlZm9yZSBjYW5jZWxsaW5nJyk7CisgICAgYW5pbWF0aW9uLmNhbmNlbCgpOworICAgIGFz
c2VydF9lcXVhbHMoZ2V0Q29tcHV0ZWRTdHlsZShkaXYpLnRyYW5zZm9ybSwgJ25vbmUnLAorICAg
ICAgICAgICAgICAgICAgJ3RyYW5zZm9ybSBzdHlsZSBpcyBubyBsb25nZXIgYW5pbWF0ZWQgYWZ0
ZXIgY2FuY2VsbGluZycpOworICB9KTsKK30sICdBbmltYXRlZCBzdHlsZSBpcyBjbGVhcmVkIGFm
dGVyIGNhbmNlbGxpbmcgYSBydW5uaW5nIENTUyBhbmltYXRpb24nKTsKKworcHJvbWlzZV90ZXN0
KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7IHN0eWxlOiAnYW5pbWF0aW9u
OiB0cmFuc2xhdGVBbmltIDEwMHMgZm9yd2FyZHMnIH0pOworICB2YXIgYW5pbWF0aW9uID0gZGl2
LmdldEFuaW1hdGlvbnMoKVswXTsKKyAgYW5pbWF0aW9uLmZpbmlzaCgpOworCisgIHJldHVybiBh
bmltYXRpb24ucmVhZHkudGhlbihmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhn
ZXRDb21wdXRlZFN0eWxlKGRpdikudHJhbnNmb3JtLCAnbm9uZScsCisgICAgICAgICAgICAgICAg
ICAgICAgJ3RyYW5zZm9ybSBzdHlsZSBpcyBmaWxsaW5nIGJlZm9yZSBjYW5jZWxsaW5nJyk7Cisg
ICAgYW5pbWF0aW9uLmNhbmNlbCgpOworICAgIGFzc2VydF9lcXVhbHMoZ2V0Q29tcHV0ZWRTdHls
ZShkaXYpLnRyYW5zZm9ybSwgJ25vbmUnLAorICAgICAgICAgICAgICAgICAgJ2ZpbGwgc3R5bGUg
aXMgY2xlYXJlZCBhZnRlciBjYW5jZWxsaW5nJyk7CisgIH0pOworfSwgJ0FuaW1hdGVkIHN0eWxl
IGlzIGNsZWFyZWQgYWZ0ZXIgY2FuY2VsbGluZyBhIGZpbGxpbmcgQ1NTIGFuaW1hdGlvbicpOwor
Cit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7IHN0eWxlOiAnYW5p
bWF0aW9uOiBtYXJnaW5MZWZ0QW5pbSAxMDBzIGxpbmVhcicgfSk7CisgIHZhciBhbmltYXRpb24g
PSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworICBhbmltYXRpb24uY2FuY2VsKCk7CisKKyAgYXNz
ZXJ0X2VxdWFscyhnZXRDb21wdXRlZFN0eWxlKGRpdikubWFyZ2luTGVmdCwgJzBweCcsCisgICAg
ICAgICAgICAgICAgJ21hcmdpbi1sZWZ0IHN0eWxlIGlzIG5vdCBhbmltYXRlZCBhZnRlciBjYW5j
ZWxsaW5nJyk7CisKKyAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gNTAgKiAxMDAwOworICBhc3Nl
cnRfZXF1YWxzKGdldENvbXB1dGVkU3R5bGUoZGl2KS5tYXJnaW5MZWZ0LCAnNTBweCcsCisgICAg
ICAgICAgICAgICAgJ21hcmdpbi1sZWZ0IHN0eWxlIGlzIHVwZGF0ZWQgd2hlbiBjYW5jZWxsZWQg
YW5pbWF0aW9uIGlzJworICAgICAgICAgICAgICAgICsgJyBzZWVrZWQnKTsKK30sICdBZnRlciBj
YW5jZWxpbmcgYW4gYW5pbWF0aW9uLCBpdCBjYW4gc3RpbGwgYmUgc2Vla2VkJyk7CisKK3Byb21p
c2VfdGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPQorICAgIGFkZERpdih0LCB7IHN0eWxl
OiAnYW5pbWF0aW9uOiBtYXJnaW5MZWZ0QW5pbTEwMFRvMjAwIDEwMHMgbGluZWFyJyB9KTsKKyAg
dmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisKKyAgcmV0dXJuIGFuaW1h
dGlvbi5yZWFkeS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGFuaW1hdGlvbi5jYW5jZWwoKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGdldENvbXB1dGVkU3R5bGUoZGl2KS5tYXJnaW5MZWZ0LCAnMHB4JywK
KyAgICAgICAgICAgICAgICAgICdtYXJnaW4tbGVmdCBzdHlsZSBpcyBub3QgYW5pbWF0ZWQgYWZ0
ZXIgY2FuY2VsbGluZycpOworICAgIGFuaW1hdGlvbi5wbGF5KCk7CisgICAgYXNzZXJ0X2VxdWFs
cyhnZXRDb21wdXRlZFN0eWxlKGRpdikubWFyZ2luTGVmdCwgJzEwMHB4JywKKyAgICAgICAgICAg
ICAgICAgICdtYXJnaW4tbGVmdCBzdHlsZSBpcyBhbmltYXRlZCBhZnRlciByZS1zdGFydGluZyBh
bmltYXRpb24nKTsKKyAgICByZXR1cm4gYW5pbWF0aW9uLnJlYWR5OworICB9KS50aGVuKGZ1bmN0
aW9uKCkgeworICAgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uLnBsYXlTdGF0ZSwgJ3J1bm5pbmcn
LAorICAgICAgICAgICAgICAgICAgJ0FuaW1hdGlvbiBzdWNjZWVkcyBpbiBydW5uaW5nIGFmdGVy
IGJlaW5nIHJlLXN0YXJ0ZWQnKTsKKyAgfSk7Cit9LCAnQWZ0ZXIgY2FuY2VsbGluZyBhbiBhbmlt
YXRpb24sIGl0IGNhbiBzdGlsbCBiZSByZS11c2VkJyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgewor
ICB2YXIgZGl2ID0KKyAgICBhZGREaXYodCwgeyBzdHlsZTogJ2FuaW1hdGlvbjogbWFyZ2luTGVm
dEFuaW0xMDBUbzIwMCAxMDBzIGxpbmVhcicgfSk7CisgIHZhciBhbmltYXRpb24gPSBkaXYuZ2V0
QW5pbWF0aW9ucygpWzBdOworICBhbmltYXRpb24uY2FuY2VsKCk7CisgIGFzc2VydF9lcXVhbHMo
Z2V0Q29tcHV0ZWRTdHlsZShkaXYpLm1hcmdpbkxlZnQsICcwcHgnLAorICAgICAgICAgICAgICAg
ICdtYXJnaW4tbGVmdCBzdHlsZSBpcyBub3QgYW5pbWF0ZWQgYWZ0ZXIgY2FuY2VsbGluZycpOwor
CisgIC8vIFRyaWdnZXIgYSBjaGFuZ2UgdG8gc29tZSBhbmltYXRpb24gcHJvcGVydGllcyBhbmQg
Y2hlY2sgdGhhdCB0aGlzCisgIC8vIGRvZXNuJ3QgY2F1c2UgdGhlIGFuaW1hdGlvbiB0byBiZWNv
bWUgbGl2ZSBhZ2FpbgorICBkaXYuc3R5bGUuYW5pbWF0aW9uRHVyYXRpb24gPSAnMjAwcyc7Cisg
IGFzc2VydF9lcXVhbHMoZ2V0Q29tcHV0ZWRTdHlsZShkaXYpLm1hcmdpbkxlZnQsICcwcHgnLAor
ICAgICAgICAgICAgICAgICdtYXJnaW4tbGVmdCBzdHlsZSBpcyBzdGlsbCBub3QgYW5pbWF0ZWQg
YWZ0ZXIgdXBkYXRpbmcnCisgICAgICAgICAgICAgICAgKyAnIGFuaW1hdGlvbi1kdXJhdGlvbicp
OworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbi5wbGF5U3RhdGUsICdpZGxlJywKKyAgICAgICAg
ICAgICAgICAnQW5pbWF0aW9uIGlzIHN0aWxsIGlkbGUgYWZ0ZXIgdXBkYXRpbmcgYW5pbWF0aW9u
LWR1cmF0aW9uJyk7Cit9LCAnQWZ0ZXIgY2FuY2VsbGluZyBhbiBhbmltYXRpb24sIHVwZGF0aW5n
IGFuaW1hdGlvbiBwcm9wZXJ0aWVzIGRvZXNuXCd0IG1ha2UnCisgICArICcgaXQgbGl2ZSBhZ2Fp
bicpOworCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9CisgICAgYWRkRGl2KHQsIHsg
c3R5bGU6ICdhbmltYXRpb246IG1hcmdpbkxlZnRBbmltMTAwVG8yMDAgMTAwcyBsaW5lYXInIH0p
OworICB2YXIgYW5pbWF0aW9uID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKyAgYW5pbWF0aW9u
LmNhbmNlbCgpOworICBhc3NlcnRfZXF1YWxzKGdldENvbXB1dGVkU3R5bGUoZGl2KS5tYXJnaW5M
ZWZ0LCAnMHB4JywKKyAgICAgICAgICAgICAgICAnbWFyZ2luLWxlZnQgc3R5bGUgaXMgbm90IGFu
aW1hdGVkIGFmdGVyIGNhbmNlbGxpbmcnKTsKKworICAvLyBNYWtlIHNvbWUgY2hhbmdlcyB0byBh
bmltYXRpb24tcGxheS1zdGF0ZSBhbmQgY2hlY2sgdGhhdCB0aGUKKyAgLy8gYW5pbWF0aW9uIGRv
ZXNuJ3QgYmVjb21lIGxpdmUgYWdhaW4uIFRoaXMgaXMgYmVjYXVzZSBpdCBzaG91bGQgYmUKKyAg
Ly8gcG9zc2libGUgdG8gY2FuY2VsIGFuIGFuaW1hdGlvbiBmcm9tIHNjcmlwdCBzdWNoIHRoYXQg
YWxsIGZ1dHVyZQorICAvLyBjaGFuZ2VzIHRvIHN0eWxlIGFyZSBpZ25vcmVkLgorCisgIC8vIFJl
ZHVuZGFudCBjaGFuZ2UKKyAgZGl2LnN0eWxlLmFuaW1hdGlvblBsYXlTdGF0ZSA9ICdydW5uaW5n
JzsKKyAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb24ucGxheVN0YXRlLCAnaWRsZScsCisgICAgICAg
ICAgICAgICAgJ0FuaW1hdGlvbiBpcyBzdGlsbCBpZGxlIGFmdGVyIGEgcmVkdW5kYW50IGNoYW5n
ZSB0bycKKyAgICAgICAgICAgICAgICArICcgYW5pbWF0aW9uLXBsYXktc3RhdGUnKTsKKworICAv
LyBQYXVzZQorICBkaXYuc3R5bGUuYW5pbWF0aW9uUGxheVN0YXRlID0gJ3BhdXNlZCc7CisgIGFz
c2VydF9lcXVhbHMoYW5pbWF0aW9uLnBsYXlTdGF0ZSwgJ2lkbGUnLAorICAgICAgICAgICAgICAg
ICdBbmltYXRpb24gaXMgc3RpbGwgaWRsZSBhZnRlciBzZXR0aW5nJworICAgICAgICAgICAgICAg
ICsgJyBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkJyk7CisKKyAgLy8gUGxheQorICBkaXYu
c3R5bGUuYW5pbWF0aW9uUGxheVN0YXRlID0gJ3J1bm5pbmcnOworICBhc3NlcnRfZXF1YWxzKGFu
aW1hdGlvbi5wbGF5U3RhdGUsICdpZGxlJywKKyAgICAgICAgICAgICAgICAnQW5pbWF0aW9uIGlz
IHN0aWxsIGlkbGUgYWZ0ZXIgcmUtc2V0dGluZycKKyAgICAgICAgICAgICAgICArICcgYW5pbWF0
aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmcnKTsKKworfSwgJ0FmdGVyIGNhbmNlbGxpbmcgYW4gYW5p
bWF0aW9uLCB1cGRhdGluZyBhbmltYXRpb24tcGxheS1zdGF0ZSBkb2VzblwndCcKKyAgICsgJyBt
YWtlIGl0IGxpdmUgYWdhaW4nKTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFy
IGRpdiA9IGFkZERpdih0LCB7IHN0eWxlOiAnYW5pbWF0aW9uOiB0cmFuc2xhdGVBbmltIDEwcyBi
b3RoJyB9KTsKKyAgZGl2LnN0eWxlLm1hcmdpbkxlZnQgPSAnMHB4JzsKKworICB2YXIgYW5pbWF0
aW9uID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKworICByZXR1cm4gYW5pbWF0aW9uLnJlYWR5
LnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb24ucGxheVN0YXRl
LCAncnVubmluZycpOworCisgICAgZGl2LnN0eWxlLmFuaW1hdGlvbk5hbWUgPSAnbm9uZSc7Cisg
ICAgZmx1c2hDb21wdXRlZFN0eWxlKGRpdik7CisgICAgcmV0dXJuIHdhaXRGb3JGcmFtZSgpOwor
ICB9KS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uLnBsYXlT
dGF0ZSwgJ2lkbGUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGdldENvbXB1dGVkU3R5bGUoZGl2KS5t
YXJnaW5MZWZ0LCAnMHB4Jyk7CisgIH0pOworfSwgJ1NldHRpbmcgYW5pbWF0aW9uLW5hbWUgdG8g
XCdub25lXCcgY2FuY2VscyB0aGUgYW5pbWF0aW9uJyk7CisKK3Byb21pc2VfdGVzdChmdW5jdGlv
bih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeyBzdHlsZTogJ2FuaW1hdGlvbjogdHJhbnNs
YXRlQW5pbSAxMHMgYm90aCcgfSk7CisgIHZhciBhbmltYXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9u
cygpWzBdOworCisgIHJldHVybiBhbmltYXRpb24ucmVhZHkudGhlbihmdW5jdGlvbigpIHsKKyAg
ICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbi5wbGF5U3RhdGUsICdydW5uaW5nJyk7CisKKyAgICBk
aXYuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKyAgICByZXR1cm4gd2FpdEZvckZyYW1lKCk7Cisg
IH0pLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb24ucGxheVN0
YXRlLCAnaWRsZScpOworICAgIGFzc2VydF9lcXVhbHMoZ2V0Q29tcHV0ZWRTdHlsZShkaXYpLm1h
cmdpbkxlZnQsICcwcHgnKTsKKyAgfSk7Cit9LCAnU2V0dGluZyBkaXNwbGF5Om5vbmUgb24gYW4g
ZWxlbWVudCBjYW5jZWwgaXRzIGFuaW1hdGlvbnMnKTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9u
KHQpIHsKKyAgdmFyIHBhcmVudERpdiA9IGFkZERpdih0KTsKKyAgdmFyIGNoaWxkRGl2ICA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICBwYXJlbnREaXYuYXBwZW5kQ2hpbGQoY2hp
bGREaXYpOworCisgIGNoaWxkRGl2LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnYW5pbWF0aW9uOiB0
cmFuc2xhdGVBbmltIDEwcyBib3RoJyk7CisgIGZsdXNoQ29tcHV0ZWRTdHlsZShjaGlsZERpdik7
CisKKyAgdmFyIGFuaW1hdGlvbiA9IGNoaWxkRGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKworICBy
ZXR1cm4gYW5pbWF0aW9uLnJlYWR5LnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X2VxdWFs
cyhhbmltYXRpb24ucGxheVN0YXRlLCAncnVubmluZycpOworCisgICAgcGFyZW50RGl2LnN0eWxl
LmRpc3BsYXkgPSAnbm9uZSc7CisgICAgcmV0dXJuIHdhaXRGb3JGcmFtZSgpOworICB9KS50aGVu
KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uLnBsYXlTdGF0ZSwgJ2lk
bGUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGdldENvbXB1dGVkU3R5bGUoY2hpbGREaXYpLm1hcmdp
bkxlZnQsICcwcHgnKTsKKyAgfSk7Cit9LCAnU2V0dGluZyBkaXNwbGF5Om5vbmUgb24gYW4gYW5j
ZXN0b3IgZWxlbWVudCBjYW5jZWxzIGFuaW1hdGlvbnMgb24gJyArCisgICAnZGVzY2VuZGFudHMn
KTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLWNvbXB1dGVk
LXRpbWluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1h
bmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLWNvbXB1dGVkLXRpbWluZy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDFjN2YyZjAzZjBjOGYxMWJjYzA4YjUyNjE4YzZkNjQ3OWI0ZDQyYgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMv
dGVzdF9hbmltYXRpb24tY29tcHV0ZWQtdGltaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQ1
IEBACisKK1BBU1MgZGVsYXkgb2YgYSBuZXcgYW5pbWF0aW9uIAorUEFTUyBOZWdhdGl2ZSBkZWxh
eSBvZiBhIG5ldyBhbmltYXRpb24gCitQQVNTIFBvc2l0aXZlIGRlbGF5IG9mIGEgbmV3IGFuaW1h
dGlvbiAKK1BBU1MgZW5kRGVsYXkgb2YgYSBuZXcgYW5pbWF0aW9uIAorUEFTUyBmaWxsIG9mIGEg
bmV3IGFuaW1hdGlvbiAKK1BBU1MgaXRlcmF0aW9uU3RhcnQgb2YgYSBuZXcgYW5pbWF0aW9uIAor
UEFTUyBpdGVyYXRpb25zIG9mIGEgbmV3IGFuaW1hdGlvbiAKK1BBU1MgaXRlcmF0aW9ucyBvZiBh
IGZpbml0ZWx5IHJlcGVhdGluZyBhbmltYXRpb24gCitGQUlMIGl0ZXJhdGlvbnMgb2YgYW4gaW5m
aW5pdGVseSByZXBlYXRpbmcgYW5pbWF0aW9uIGFzc2VydF9lcXVhbHM6IEluaXRpYWwgdmFsdWUg
b2YgaXRlcmF0aW9ucyBleHBlY3RlZCBJbmZpbml0eSBidXQgZ290IDEKK1BBU1MgZHVyYXRpb24g
b2YgYSBuZXcgYW5pbWF0aW9uIAorUEFTUyBkaXJlY3Rpb24gb2YgYSBuZXcgYW5pbWF0aW9uIAor
RkFJTCBlYXNpbmcgb2YgYSBuZXcgYW5pbWF0aW9uIGFzc2VydF9lcXVhbHM6IEluaXRpYWwgdmFs
dWUgb2YgZWFzaW5nIGV4cGVjdGVkICJsaW5lYXIiIGJ1dCBnb3QgImVhc2UiCitQQVNTIGVuZFRp
bWUgb2YgYW4gbmV3IGFuaW1hdGlvbiAKK1BBU1MgZW5kVGltZSBvZiBhbiBhbmltYXRpb24gd2l0
aCBhIG5lZ2F0aXZlIGRlbGF5IAorRkFJTCBlbmRUaW1lIG9mIGFuIGluZmluaXRlbHkgcmVwZWF0
aW5nIGFuaW1hdGlvbiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnZGl2
LmdldEFuaW1hdGlvbnMoKVswXS5lZmZlY3QnKQorUEFTUyBlbmRUaW1lIG9mIGFuIGluZmluaXRl
bHkgcmVwZWF0aW5nIHplcm8tZHVyYXRpb24gYW5pbWF0aW9uIAorUEFTUyBlbmRUaW1lIG9mIGFu
IGFuaW1hdGlvbiB0aGF0IGZpbmlzaGVzIGJlZm9yZSBpdHMgc3RhcnRUaW1lIAorUEFTUyBhY3Rp
dmVEdXJhdGlvbiBvZiBhIG5ldyBhbmltYXRpb24gCitGQUlMIGFjdGl2ZUR1cmF0aW9uIG9mIGFu
IGluZmluaXRlbHkgcmVwZWF0aW5nIGFuaW1hdGlvbiBhc3NlcnRfZXF1YWxzOiBJbml0aWFsIHZh
bHVlIG9mIGFjdGl2ZUR1cmF0aW9uIGV4cGVjdGVkIEluZmluaXR5IGJ1dCBnb3QgMTAwMDAwCitQ
QVNTIGFjdGl2ZUR1cmF0aW9uIG9mIGFuIGluZmluaXRlbHkgcmVwZWF0aW5nIHplcm8tZHVyYXRp
b24gYW5pbWF0aW9uIAorUEFTUyBhY3RpdmVEdXJhdGlvbiBvZiBhbiBhbmltYXRpb24gd2l0aCB6
ZXJvIGl0ZXJhdGlvbnMgCitQQVNTIGxvY2FsVGltZSBvZiBhIG5ldyBhbmltYXRpb24gCitQQVNT
IGxvY2FsVGltZSBvZiBhbiBhbmltYXRpb24gaXMgYWx3YXlzIGVxdWFsIHRvIGN1cnJlbnRUaW1l
IAorUEFTUyBsb2NhbFRpbWUgcmVmbGVjdHMgcGxheWJhY2tSYXRlIGltbWVkaWF0ZWx5IAorUEFT
UyBsb2NhbFRpbWUgb2YgYW4gQW5pbWF0aW9uRWZmZWN0IHdpdGhvdXQgYW4gQW5pbWF0aW9uIAor
UEFTUyBwcm9ncmVzcyBvZiBhbiBhbmltYXRpb24gd2l0aCBkaWZmZXJlbnQgZmlsbCBtb2RlcyAK
K0ZBSUwgcHJvZ3Jlc3Mgb2YgYW4gaW50ZWdyYWwgcmVwZWF0aW5nIGFuaW1hdGlvbiB3aXRoIG5v
cm1hbCBkaXJlY3Rpb24gYXNzZXJ0X2VxdWFsczogVmFsdWUgb2YgcHJvZ3Jlc3MgZXhwZWN0ZWQg
MC4yNSBidXQgZ290IDAuNDA4NTY2NTA0OTAxMjY5NAorUEFTUyBwcm9ncmVzcyBvZiBhbiBpbmZp
bml0ZWx5IHJlcGVhdGluZyB6ZXJvLWR1cmF0aW9uIGFuaW1hdGlvbiAKK1BBU1MgcHJvZ3Jlc3Mg
b2YgYSBmaW5pdGVseSByZXBlYXRpbmcgemVyby1kdXJhdGlvbiBhbmltYXRpb24gCitQQVNTIHBy
b2dyZXNzIG9mIGEgbm9uLWludGVncmFsIHJlcGVhdGluZyB6ZXJvLWR1cmF0aW9uIGFuaW1hdGlv
biAKK1BBU1MgUHJvZ3Jlc3Mgb2YgYSBub24taW50ZWdyYWwgcmVwZWF0aW5nIHplcm8tZHVyYXRp
b24gYW5pbWF0aW9uIHdpdGggcmV2ZXJzaW5nIGRpcmVjdGlvbiAKK0ZBSUwgcHJvZ3Jlc3Mgb2Yg
YSBub24taW50ZWdyYWwgcmVwZWF0aW5nIGFuaW1hdGlvbiB3aXRoIGFsdGVybmF0ZSBkaXJlY3Rp
b24gYXNzZXJ0X2VxdWFsczogVmFsdWUgb2YgcHJvZ3Jlc3MgZXhwZWN0ZWQgMC4yNSBidXQgZ290
IDAuNDA4NTY2NTA0OTAxMjY5NAorRkFJTCBwcm9ncmVzcyBvZiBhIG5vbi1pbnRlZ3JhbCByZXBl
YXRpbmcgYW5pbWF0aW9uIHdpdGggYWx0ZXJuYXRlLXJldmVyc2luZyBkaXJlY3Rpb24gYXNzZXJ0
X2VxdWFsczogVmFsdWUgb2YgcHJvZ3Jlc3MgZXhwZWN0ZWQgMC43NSBidXQgZ290IDAuOTYwNDU5
MDcyOTUyNTg4OQorUEFTUyBwcm9ncmVzcyBvZiBhIG5vbi1pbnRlZ3JhbCByZXBlYXRpbmcgemVy
by1kdXJhdGlvbiBhbmltYXRpb24gd2l0aCBhbHRlcm5hdGUgZGlyZWN0aW9uIAorUEFTUyBwcm9n
cmVzcyBvZiBhIG5vbi1pbnRlZ3JhbCByZXBlYXRpbmcgemVyby1kdXJhdGlvbiBhbmltYXRpb24g
d2l0aCBhbHRlcm5hdGUtcmV2ZXJzZSBkaXJlY3Rpb24gCitQQVNTIGN1cnJlbnRJdGVyYXRpb24g
b2YgYSBuZXcgYW5pbWF0aW9uIHdpdGggbm8gYmFja3dhcmRzIGZpbGwgaXMgdW5yZXNvbHZlZCBp
biBiZWZvcmUgcGhhc2UgCitQQVNTIGN1cnJlbnRJdGVyYXRpb24gb2YgYSBuZXcgYW5pbWF0aW9u
IGlzIHplcm8gCitGQUlMIGN1cnJlbnRJdGVyYXRpb24gb2YgYW4gaW5maW5pdGVseSByZXBlYXRp
bmcgemVyby1kdXJhdGlvbiBhbmltYXRpb24gYXNzZXJ0X2VxdWFsczogSW5pdGlhbCB2YWx1ZSBv
ZiBjdXJyZW50SXRlcmF0aW9uIGluIGFmdGVyIHBoYXNlIGV4cGVjdGVkIEluZmluaXR5IGJ1dCBn
b3QgMAorUEFTUyBjdXJyZW50SXRlcmF0aW9uIG9mIGEgZmluaXRlbHkgcmVwZWF0aW5nIHplcm8t
ZHVyYXRpb24gYW5pbWF0aW9uIAorUEFTUyBjdXJyZW50SXRlcmF0aW9uIG9mIGFuIGFuaW1hdGlv
biB3aXRoIGEgbm9uLWludGVncmFsIGl0ZXJhdGlvbiBjb3VudCAKK1BBU1MgY3VycmVudEl0ZXJh
dGlvbiBvZiBhbiBhbmltYXRpb24gd2l0aCBhbiBpbnRlZ3JhbCBpdGVyYXRpb24gY291bnQgCitQ
QVNTIGN1cnJlbnRJdGVyYXRpb24gb2YgYW4gYW5pbWF0aW9uIHdpdGggYSBkZWZhdWx0IGl0ZXJh
dGlvbiBjb3VudCAKK1BBU1MgY3VycmVudEl0ZXJhdGlvbiBvZiBhbiBBbmltYXRpb25FZmZlY3Qg
d2l0aG91dCBhbiBBbmltYXRpb24gCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tY29tcHV0ZWQtdGltaW5nLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5p
bWF0aW9uLWNvbXB1dGVkLXRpbWluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3ZTgzNjdjN2I1OTYxZDFl
ODUzMmJkNDFlOTg3OGEwMzU3MjYxNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLWNvbXB1dGVkLXRp
bWluZy5odG1sCkBAIC0wLDAgKzEsNTY4IEBACis8IWRvY3R5cGUgaHRtbD48IS0tIHdlYmtpdC10
ZXN0LXJ1bm5lciBbIGVuYWJsZUNTU0FuaW1hdGlvbnNBbmRDU1NUcmFuc2l0aW9uc0JhY2tlZEJ5
V2ViQW5pbWF0aW9ucz10cnVlIF0gLS0+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8c3R5
bGU+CitAa2V5ZnJhbWVzIG1vdmVBbmltYXRpb24geworICBmcm9tIHsgbWFyZ2luLWxlZnQ6IDEw
MHB4IH0KKyAgdG8geyBtYXJnaW4tbGVmdDogMjAwcHggfQorfQorPC9zdHlsZT4KKzxib2R5Pgor
PGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKKyd1c2Ugc3RyaWN0JzsKKworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vIGRlbGF5CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLQordGVz
dChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwge3N0eWxlOiAnYW5pbWF0aW9u
OiBtb3ZlQW5pbWF0aW9uIDEwMHMnfSk7CisgIHZhciBlZmZlY3QgPSBkaXYuZ2V0QW5pbWF0aW9u
cygpWzBdLmVmZmVjdDsKKyAgYXNzZXJ0X2VxdWFscyhlZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmco
KS5kZWxheSwgMCwKKyAgICAgICAgICAgICAgICAnSW5pdGlhbCB2YWx1ZSBvZiBkZWxheScpOwor
fSwgJ2RlbGF5IG9mIGEgbmV3IGFuaW1hdGlvbicpOworCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAg
dmFyIGRpdiA9IGFkZERpdih0LCB7c3R5bGU6ICdhbmltYXRpb246IG1vdmVBbmltYXRpb24gMTAw
cyAtMTBzJ30pOworICB2YXIgZWZmZWN0ID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXS5lZmZlY3Q7
CisgIGFzc2VydF9lcXVhbHMoZWZmZWN0LmdldENvbXB1dGVkVGltaW5nKCkuZGVsYXksIC0xMCAq
IE1TX1BFUl9TRUMsCisgICAgICAgICAgICAgICAgJ0luaXRpYWwgdmFsdWUgb2YgZGVsYXknKTsK
K30sICdOZWdhdGl2ZSBkZWxheSBvZiBhIG5ldyBhbmltYXRpb24nKTsKKwordGVzdChmdW5jdGlv
bih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwge3N0eWxlOiAnYW5pbWF0aW9uOiBtb3ZlQW5p
bWF0aW9uIDEwMHMgMTBzJ30pOworICB2YXIgZWZmZWN0ID0gZGl2LmdldEFuaW1hdGlvbnMoKVsw
XS5lZmZlY3Q7CisgIGFzc2VydF9lcXVhbHMoZWZmZWN0LmdldENvbXB1dGVkVGltaW5nKCkuZGVs
YXksIDEwICogTVNfUEVSX1NFQywKKyAgICAgICAgICAgICAgICAnSW5pdGlhbCB2YWx1ZSBvZiBk
ZWxheScpOworfSwgJ1Bvc2l0aXZlIGRlbGF5IG9mIGEgbmV3IGFuaW1hdGlvbicpOworCisKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBlbmREZWxheQorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0KK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHtzdHlsZTogJ2Fu
aW1hdGlvbjogbW92ZUFuaW1hdGlvbiAxMDBzJ30pOworICB2YXIgZWZmZWN0ID0gZGl2LmdldEFu
aW1hdGlvbnMoKVswXS5lZmZlY3Q7CisgIGFzc2VydF9lcXVhbHMoZWZmZWN0LmdldENvbXB1dGVk
VGltaW5nKCkuZW5kRGVsYXksIDAsCisgICAgICAgICAgICAgICAgJ0luaXRpYWwgdmFsdWUgb2Yg
ZW5kRGVsYXknKTsKK30sICdlbmREZWxheSBvZiBhIG5ldyBhbmltYXRpb24nKTsKKworCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gZmlsbAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3Rl
c3QoZnVuY3Rpb24odCkgeworICB2YXIgZ2V0RWZmZWN0V2l0aEZpbGwgPSBmdW5jdGlvbihmaWxs
KSB7CisgICAgdmFyIGRpdiA9IGFkZERpdih0LCB7c3R5bGU6ICdhbmltYXRpb246IG1vdmVBbmlt
YXRpb24gMTAwcyAnICsgZmlsbH0pOworICAgIHJldHVybiBkaXYuZ2V0QW5pbWF0aW9ucygpWzBd
LmVmZmVjdDsKKyAgfTsKKworICB2YXIgZWZmZWN0ID0gZ2V0RWZmZWN0V2l0aEZpbGwoJycpOwor
ICBhc3NlcnRfZXF1YWxzKGVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLmZpbGwsICdub25lJywK
KyAgICAgICAgICAgICAgICAnSW5pdGlhbCB2YWx1ZSBvZiBmaWxsJyk7CisgIGVmZmVjdCA9IGdl
dEVmZmVjdFdpdGhGaWxsKCdmb3J3YXJkcycpOworICBhc3NlcnRfZXF1YWxzKGVmZmVjdC5nZXRD
b21wdXRlZFRpbWluZygpLmZpbGwsICdmb3J3YXJkcycsCisgICAgICAgICAgICAgICAgJ0ZpbGwg
Zm9yd2FyZHMnKTsKKyAgZWZmZWN0ID0gZ2V0RWZmZWN0V2l0aEZpbGwoJ2JhY2t3YXJkcycpOwor
ICBhc3NlcnRfZXF1YWxzKGVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLmZpbGwsICdiYWNrd2Fy
ZHMnLAorICAgICAgICAgICAgICAgICdGaWxsIGJhY2t3YXJkcycpOworICBlZmZlY3QgPSBnZXRF
ZmZlY3RXaXRoRmlsbCgnYm90aCcpOworICBhc3NlcnRfZXF1YWxzKGVmZmVjdC5nZXRDb21wdXRl
ZFRpbWluZygpLmZpbGwsICdib3RoJywKKyAgICAgICAgICAgICAgICAnRmlsbCBmb3J3YXJkcyBh
bmQgYmFja3dhcmRzJyk7Cit9LCAnZmlsbCBvZiBhIG5ldyBhbmltYXRpb24nKTsKKworCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gaXRlcmF0aW9uU3RhcnQKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7c3R5bGU6
ICdhbmltYXRpb246IG1vdmVBbmltYXRpb24gMTAwcyd9KTsKKyAgdmFyIGVmZmVjdCA9IGRpdi5n
ZXRBbmltYXRpb25zKClbMF0uZWZmZWN0OworICBhc3NlcnRfZXF1YWxzKGVmZmVjdC5nZXRDb21w
dXRlZFRpbWluZygpLml0ZXJhdGlvblN0YXJ0LCAwLAorICAgICAgICAgICAgICAgICdJbml0aWFs
IHZhbHVlIG9mIGl0ZXJhdGlvblN0YXJ0Jyk7Cit9LCAnaXRlcmF0aW9uU3RhcnQgb2YgYSBuZXcg
YW5pbWF0aW9uJyk7CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGl0ZXJhdGlvbnMK
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9
IGFkZERpdih0LCB7c3R5bGU6ICdhbmltYXRpb246IG1vdmVBbmltYXRpb24gMTAwcyd9KTsKKyAg
dmFyIGVmZmVjdCA9IGRpdi5nZXRBbmltYXRpb25zKClbMF0uZWZmZWN0OworICBhc3NlcnRfZXF1
YWxzKGVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLml0ZXJhdGlvbnMsIDEsCisgICAgICAgICAg
ICAgICAgJ0luaXRpYWwgdmFsdWUgb2YgaXRlcmF0aW9ucycpOworfSwgJ2l0ZXJhdGlvbnMgb2Yg
YSBuZXcgYW5pbWF0aW9uJyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRk
RGl2KHQsIHtzdHlsZTogJ2FuaW1hdGlvbjogbW92ZUFuaW1hdGlvbiAxMDBzIDIwMTYuNSd9KTsK
KyAgdmFyIGVmZmVjdCA9IGRpdi5nZXRBbmltYXRpb25zKClbMF0uZWZmZWN0OworICBhc3NlcnRf
ZXF1YWxzKGVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLml0ZXJhdGlvbnMsIDIwMTYuNSwKKyAg
ICAgICAgICAgICAgICAnSW5pdGlhbCB2YWx1ZSBvZiBpdGVyYXRpb25zJyk7Cit9LCAnaXRlcmF0
aW9ucyBvZiBhIGZpbml0ZWx5IHJlcGVhdGluZyBhbmltYXRpb24nKTsKKwordGVzdChmdW5jdGlv
bih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwge3N0eWxlOiAnYW5pbWF0aW9uOiBtb3ZlQW5p
bWF0aW9uIDEwMHMgaW5maW5pdGUnfSk7CisgIHZhciBlZmZlY3QgPSBkaXYuZ2V0QW5pbWF0aW9u
cygpWzBdLmVmZmVjdDsKKyAgYXNzZXJ0X2VxdWFscyhlZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmco
KS5pdGVyYXRpb25zLCBJbmZpbml0eSwKKyAgICAgICAgICAgICAgICAnSW5pdGlhbCB2YWx1ZSBv
ZiBpdGVyYXRpb25zJyk7Cit9LCAnaXRlcmF0aW9ucyBvZiBhbiBpbmZpbml0ZWx5IHJlcGVhdGlu
ZyBhbmltYXRpb24nKTsKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gZHVyYXRpb24K
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9
IGFkZERpdih0LCB7c3R5bGU6ICdhbmltYXRpb246IG1vdmVBbmltYXRpb24gMTAwcyAtMTBzIGlu
ZmluaXRlJ30pOworICB2YXIgZWZmZWN0ID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXS5lZmZlY3Q7
CisgIGFzc2VydF9lcXVhbHMoZWZmZWN0LmdldENvbXB1dGVkVGltaW5nKCkuZHVyYXRpb24sIDEw
MCAqIE1TX1BFUl9TRUMsCisgICAgICAgICAgICAgICAgJ0luaXRpYWwgdmFsdWUgb2YgZHVyYXRp
b24nKTsKK30sICdkdXJhdGlvbiBvZiBhIG5ldyBhbmltYXRpb24nKTsKKworCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8gZGlyZWN0aW9uCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLQordGVz
dChmdW5jdGlvbih0KSB7CisgIHZhciBnZXRFZmZlY3RXaXRoRGlyID0gZnVuY3Rpb24oZGlyKSB7
CisgICAgdmFyIGRpdiA9IGFkZERpdih0LCB7c3R5bGU6ICdhbmltYXRpb246IG1vdmVBbmltYXRp
b24gMTAwcyAnICsgZGlyfSk7CisgICAgcmV0dXJuIGRpdi5nZXRBbmltYXRpb25zKClbMF0uZWZm
ZWN0OworICB9OworCisgIHZhciBlZmZlY3QgPSBnZXRFZmZlY3RXaXRoRGlyKCcnKTsKKyAgYXNz
ZXJ0X2VxdWFscyhlZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5kaXJlY3Rpb24sICdub3JtYWwn
LAorICAgICAgICAgICAgICAgICdJbml0aWFsIHZhbHVlIG9mIG5vcm1hbCBkaXJlY3Rpb24nKTsK
KyAgZWZmZWN0ID0gZ2V0RWZmZWN0V2l0aERpcigncmV2ZXJzZScpOworICBhc3NlcnRfZXF1YWxz
KGVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLmRpcmVjdGlvbiwgJ3JldmVyc2UnLAorICAgICAg
ICAgICAgICAgICdJbml0aWFsIHZhbHVlIG9mIHJldmVyc2UgZGlyZWN0aW9uJyk7CisgIGVmZmVj
dCA9IGdldEVmZmVjdFdpdGhEaXIoJ2FsdGVybmF0ZScpOworICBhc3NlcnRfZXF1YWxzKGVmZmVj
dC5nZXRDb21wdXRlZFRpbWluZygpLmRpcmVjdGlvbiwgJ2FsdGVybmF0ZScsCisgICAgICAgICAg
ICAgICAgJ0luaXRpYWwgdmFsdWUgb2YgYWx0ZXJuYXRlIGRpcmVjdGlvbicpOworICBlZmZlY3Qg
PSBnZXRFZmZlY3RXaXRoRGlyKCdhbHRlcm5hdGUtcmV2ZXJzZScpOworICBhc3NlcnRfZXF1YWxz
KGVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLmRpcmVjdGlvbiwgJ2FsdGVybmF0ZS1yZXZlcnNl
JywKKyAgICAgICAgICAgICAgICAnSW5pdGlhbCB2YWx1ZSBvZiBhbHRlcm5hdGUtcmV2ZXJzZSBk
aXJlY3Rpb24nKTsKK30sICdkaXJlY3Rpb24gb2YgYSBuZXcgYW5pbWF0aW9uJyk7CisKKworLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGVhc2luZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0K
K3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHtzdHlsZTogJ2FuaW1h
dGlvbjogbW92ZUFuaW1hdGlvbiAxMDBzJ30pOworICB2YXIgZWZmZWN0ID0gZGl2LmdldEFuaW1h
dGlvbnMoKVswXS5lZmZlY3Q7CisgIGFzc2VydF9lcXVhbHMoZWZmZWN0LmdldENvbXB1dGVkVGlt
aW5nKCkuZWFzaW5nLCAnbGluZWFyJywKKyAgICAgICAgICAgICAgICAnSW5pdGlhbCB2YWx1ZSBv
ZiBlYXNpbmcnKTsKK30sICdlYXNpbmcgb2YgYSBuZXcgYW5pbWF0aW9uJyk7CisKKworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBlbmRUaW1lCisvLyA9IG1heChzdGFydCBk
ZWxheSArIGFjdGl2ZSBkdXJhdGlvbiArIGVuZCBkZWxheSwgMCkKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7c3R5bGU6
ICdhbmltYXRpb246IG1vdmVBbmltYXRpb24gMTAwcyd9KTsKKyAgdmFyIGVmZmVjdCA9IGRpdi5n
ZXRBbmltYXRpb25zKClbMF0uZWZmZWN0OworICBhc3NlcnRfZXF1YWxzKGVmZmVjdC5nZXRDb21w
dXRlZFRpbWluZygpLmVuZFRpbWUsIDEwMCAqIE1TX1BFUl9TRUMsCisgICAgICAgICAgICAgICAg
J0luaXRpYWwgdmFsdWUgb2YgZW5kVGltZScpOworfSwgJ2VuZFRpbWUgb2YgYW4gbmV3IGFuaW1h
dGlvbicpOworCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7c3R5
bGU6ICdhbmltYXRpb246IG1vdmVBbmltYXRpb24gMTAwcyAtNXMnfSk7CisgIHZhciBlZmZlY3Qg
PSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdLmVmZmVjdDsKKyAgdmFyIGFuc3dlciA9ICgxMDAgLSA1
KSAqIE1TX1BFUl9TRUM7CisgIGFzc2VydF9lcXVhbHMoZWZmZWN0LmdldENvbXB1dGVkVGltaW5n
KCkuZW5kVGltZSwgYW5zd2VyLAorICAgICAgICAgICAgICAgICdJbml0aWFsIHZhbHVlIG9mIGVu
ZFRpbWUnKTsKK30sICdlbmRUaW1lIG9mIGFuIGFuaW1hdGlvbiB3aXRoIGEgbmVnYXRpdmUgZGVs
YXknKTsKKwordGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwge3N0eWxl
OiAnYW5pbWF0aW9uOiBtb3ZlQW5pbWF0aW9uIDEwcyAtMTAwcyBpbmZpbml0ZSd9KTsKKyAgdmFy
IGVmZmVjdCA9IGRpdi5nZXRBbmltYXRpb25zKClbMF0uZWZmZWN0OworICBhc3NlcnRfZXF1YWxz
KGVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLmVuZFRpbWUsIEluZmluaXR5LAorICAgICAgICAg
ICAgICAgICdJbml0aWFsIHZhbHVlIG9mIGVuZFRpbWUnKTsKK30sICdlbmRUaW1lIG9mIGFuIGlu
ZmluaXRlbHkgcmVwZWF0aW5nIGFuaW1hdGlvbicpOworCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAg
dmFyIGRpdiA9IGFkZERpdih0LCB7c3R5bGU6ICdhbmltYXRpb246IG1vdmVBbmltYXRpb24gMHMg
MTAwcyBpbmZpbml0ZSd9KTsKKyAgdmFyIGVmZmVjdCA9IGRpdi5nZXRBbmltYXRpb25zKClbMF0u
ZWZmZWN0OworICBhc3NlcnRfZXF1YWxzKGVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLmVuZFRp
bWUsIDEwMCAqIE1TX1BFUl9TRUMsCisgICAgICAgICAgICAgICAgJ0luaXRpYWwgdmFsdWUgb2Yg
ZW5kVGltZScpOworfSwgJ2VuZFRpbWUgb2YgYW4gaW5maW5pdGVseSByZXBlYXRpbmcgemVyby1k
dXJhdGlvbiBhbmltYXRpb24nKTsKKwordGVzdChmdW5jdGlvbih0KSB7CisgIC8vIEZpbGwgZm9y
d2FyZHMgc28gZGl2LmdldEFuaW1hdGlvbnMoKVswXSB3b24ndCByZXR1cm4gYW4KKyAgLy8gdW5k
ZWZpbmVkIHZhbHVlLgorICB2YXIgZGl2ID0gYWRkRGl2KHQsIHtzdHlsZTogJ2FuaW1hdGlvbjog
bW92ZUFuaW1hdGlvbiAxMHMgLTEwMHMgZm9yd2FyZHMnfSk7CisgIHZhciBlZmZlY3QgPSBkaXYu
Z2V0QW5pbWF0aW9ucygpWzBdLmVmZmVjdDsKKyAgYXNzZXJ0X2VxdWFscyhlZmZlY3QuZ2V0Q29t
cHV0ZWRUaW1pbmcoKS5lbmRUaW1lLCAwLAorICAgICAgICAgICAgICAgICdJbml0aWFsIHZhbHVl
IG9mIGVuZFRpbWUnKTsKK30sICdlbmRUaW1lIG9mIGFuIGFuaW1hdGlvbiB0aGF0IGZpbmlzaGVz
IGJlZm9yZSBpdHMgc3RhcnRUaW1lJyk7CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
IGFjdGl2ZUR1cmF0aW9uCisvLyA9IGl0ZXJhdGlvbiBkdXJhdGlvbiAqIGl0ZXJhdGlvbiBjb3Vu
dAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2
ID0gYWRkRGl2KHQsIHtzdHlsZTogJ2FuaW1hdGlvbjogbW92ZUFuaW1hdGlvbiAxMDBzIDUnfSk7
CisgIHZhciBlZmZlY3QgPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdLmVmZmVjdDsKKyAgdmFyIGFu
c3dlciA9IDEwMCAqIE1TX1BFUl9TRUMgKiA1OworICBhc3NlcnRfZXF1YWxzKGVmZmVjdC5nZXRD
b21wdXRlZFRpbWluZygpLmFjdGl2ZUR1cmF0aW9uLCBhbnN3ZXIsCisgICAgICAgICAgICAgICAg
J0luaXRpYWwgdmFsdWUgb2YgYWN0aXZlRHVyYXRpb24nKTsKK30sICdhY3RpdmVEdXJhdGlvbiBv
ZiBhIG5ldyBhbmltYXRpb24nKTsKKwordGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBh
ZGREaXYodCwge3N0eWxlOiAnYW5pbWF0aW9uOiBtb3ZlQW5pbWF0aW9uIDEwMHMgaW5maW5pdGUn
fSk7CisgIHZhciBlZmZlY3QgPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdLmVmZmVjdDsKKyAgYXNz
ZXJ0X2VxdWFscyhlZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5hY3RpdmVEdXJhdGlvbiwgSW5m
aW5pdHksCisgICAgICAgICAgICAgICAgJ0luaXRpYWwgdmFsdWUgb2YgYWN0aXZlRHVyYXRpb24n
KTsKK30sICdhY3RpdmVEdXJhdGlvbiBvZiBhbiBpbmZpbml0ZWx5IHJlcGVhdGluZyBhbmltYXRp
b24nKTsKKwordGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwge3N0eWxl
OiAnYW5pbWF0aW9uOiBtb3ZlQW5pbWF0aW9uIDBzIDFzIGluZmluaXRlJ30pOworICB2YXIgZWZm
ZWN0ID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXS5lZmZlY3Q7CisgIC8vIElmIGVpdGhlciB0aGUg
aXRlcmF0aW9uIGR1cmF0aW9uIG9yIGl0ZXJhdGlvbiBjb3VudCBhcmUgemVybywKKyAgLy8gdGhl
IGFjdGl2ZSBkdXJhdGlvbiBpcyB6ZXJvLgorICBhc3NlcnRfZXF1YWxzKGVmZmVjdC5nZXRDb21w
dXRlZFRpbWluZygpLmFjdGl2ZUR1cmF0aW9uLCAwLAorICAgICAgICAgICAgICAgICdJbml0aWFs
IHZhbHVlIG9mIGFjdGl2ZUR1cmF0aW9uJyk7Cit9LCAnYWN0aXZlRHVyYXRpb24gb2YgYW4gaW5m
aW5pdGVseSByZXBlYXRpbmcgemVyby1kdXJhdGlvbiBhbmltYXRpb24nKTsKKwordGVzdChmdW5j
dGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwge3N0eWxlOiAnYW5pbWF0aW9uOiBtb3Zl
QW5pbWF0aW9uIDEwMHMgMXMgMCd9KTsKKyAgdmFyIGVmZmVjdCA9IGRpdi5nZXRBbmltYXRpb25z
KClbMF0uZWZmZWN0OworICAvLyBJZiBlaXRoZXIgdGhlIGl0ZXJhdGlvbiBkdXJhdGlvbiBvciBp
dGVyYXRpb24gY291bnQgYXJlIHplcm8sCisgIC8vIHRoZSBhY3RpdmUgZHVyYXRpb24gaXMgemVy
by4KKyAgYXNzZXJ0X2VxdWFscyhlZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5hY3RpdmVEdXJh
dGlvbiwgMCwKKyAgICAgICAgICAgICAgICAnSW5pdGlhbCB2YWx1ZSBvZiBhY3RpdmVEdXJhdGlv
bicpOworfSwgJ2FjdGl2ZUR1cmF0aW9uIG9mIGFuIGFuaW1hdGlvbiB3aXRoIHplcm8gaXRlcmF0
aW9ucycpOworCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBsb2NhbFRpbWUKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERp
dih0LCB7c3R5bGU6ICdhbmltYXRpb246IG1vdmVBbmltYXRpb24gMTAwcyd9KTsKKyAgdmFyIGVm
ZmVjdCA9IGRpdi5nZXRBbmltYXRpb25zKClbMF0uZWZmZWN0OworICBhc3NlcnRfZXF1YWxzKGVm
ZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLmxvY2FsVGltZSwgMCwKKyAgICAgICAgICAgICAgICAn
SW5pdGlhbCB2YWx1ZSBvZiBsb2NhbFRpbWUnKTsKK30sICdsb2NhbFRpbWUgb2YgYSBuZXcgYW5p
bWF0aW9uJyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHtz
dHlsZTogJ2FuaW1hdGlvbjogbW92ZUFuaW1hdGlvbiAxMDBzJ30pOworICB2YXIgYW5pbSA9IGRp
di5nZXRBbmltYXRpb25zKClbMF07CisgIGFuaW0uY3VycmVudFRpbWUgPSA1ICogTVNfUEVSX1NF
QzsKKyAgYXNzZXJ0X2VxdWFscyhhbmltLmVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLmxvY2Fs
VGltZSwgYW5pbS5jdXJyZW50VGltZSwKKyAgICAgICAgICAgICAgICAnY3VycmVudCBsb2NhbFRp
bWUgYWZ0ZXIgc2V0dGluZyBjdXJyZW50VGltZScpOworfSwgJ2xvY2FsVGltZSBvZiBhbiBhbmlt
YXRpb24gaXMgYWx3YXlzIGVxdWFsIHRvIGN1cnJlbnRUaW1lJyk7CisKK3Byb21pc2VfdGVzdChm
dW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwge3N0eWxlOiAnYW5pbWF0aW9uOiBt
b3ZlQW5pbWF0aW9uIDEwMHMnfSk7CisKKyAgdmFyIGFuaW0gPSBkaXYuZ2V0QW5pbWF0aW9ucygp
WzBdOworICBhbmltLnBsYXliYWNrUmF0ZSA9IDI7IC8vIDIgdGltZXMgZmFzdGVyCisKKyAgcmV0
dXJuIGFuaW0ucmVhZHkudGhlbihmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfZXF1YWxzKGFuaW0u
ZWZmZWN0LmdldENvbXB1dGVkVGltaW5nKCkubG9jYWxUaW1lLCBhbmltLmN1cnJlbnRUaW1lLAor
ICAgICAgICAgICAgICAgICAgJ2xvY2FsVGltZSBpcyBlcXVhbCB0byBjdXJyZW50VGltZScpOwor
ICAgIHJldHVybiB3YWl0Rm9yRnJhbWUoKTsKKyAgfSkudGhlbihmdW5jdGlvbigpIHsKKyAgICBh
c3NlcnRfZXF1YWxzKGFuaW0uZWZmZWN0LmdldENvbXB1dGVkVGltaW5nKCkubG9jYWxUaW1lLCBh
bmltLmN1cnJlbnRUaW1lLAorICAgICAgICAgICAgICAgICAgJ2xvY2FsVGltZSBpcyBlcXVhbCB0
byBjdXJyZW50VGltZScpOworICB9KTsKK30sICdsb2NhbFRpbWUgcmVmbGVjdHMgcGxheWJhY2tS
YXRlIGltbWVkaWF0ZWx5Jyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRk
RGl2KHQpOworICB2YXIgZWZmZWN0ID0gbmV3IEtleWZyYW1lRWZmZWN0UmVhZE9ubHkoZGl2LCB7
bGVmdDogWyIwcHgiLCAiMTAwcHgiXX0pOworCisgIGFzc2VydF9lcXVhbHMoZWZmZWN0LmdldENv
bXB1dGVkVGltaW5nKCkubG9jYWxUaW1lLCBudWxsLAorICAgICAgICAgICAgICAgICdsb2NhbFRp
bWUgZm9yIG9ycGhhbmVkIGVmZmVjdCcpOworfSwgJ2xvY2FsVGltZSBvZiBhbiBBbmltYXRpb25F
ZmZlY3Qgd2l0aG91dCBhbiBBbmltYXRpb24nKTsKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8gcHJvZ3Jlc3MKKy8vIE5vdGU6IERlZmF1bHQgdGltaW5nIGZ1bmN0aW9uIGlzIGxpbmVh
ci4KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgW3tmaWxs
OiAnJywgICAgICAgICAgcHJvZ3Jlc3M6IFsgbnVsbCwgbnVsbCBdfSwKKyAgIHtmaWxsOiAnbm9u
ZScsICAgICAgcHJvZ3Jlc3M6IFsgbnVsbCwgbnVsbCBdfSwKKyAgIHtmaWxsOiAnZm9yd2FyZHMn
LCAgcHJvZ3Jlc3M6IFsgbnVsbCwgMS4wIF19LAorICAge2ZpbGw6ICdiYWNrd2FyZHMnLCBwcm9n
cmVzczogWyAwLjAsIG51bGwgXX0sCisgICB7ZmlsbDogJ2JvdGgnLCAgICAgIHByb2dyZXNzOiBb
IDAuMCwgMS4wIF19XQorICAuZm9yRWFjaChmdW5jdGlvbih0ZXN0KSB7CisgICAgdmFyIGRpdiA9
CisgICAgICBhZGREaXYodCwge3N0eWxlOiAnYW5pbWF0aW9uOiBtb3ZlQW5pbWF0aW9uIDEwMHMg
MTBzICcgKyB0ZXN0LmZpbGx9KTsKKyAgICB2YXIgYW5pbSA9IGRpdi5nZXRBbmltYXRpb25zKClb
MF07CisgICAgYXNzZXJ0X3RydWUoYW5pbS5lZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5wcm9n
cmVzcyA9PT0gdGVzdC5wcm9ncmVzc1swXSwKKyAgICAgICAgICAgICAgICAnaW5pdGlhbCBwcm9n
cmVzcyB3aXRoICInICsgdGVzdC5maWxsICsgJyIgZmlsbCcpOworICAgIGFuaW0uZmluaXNoKCk7
CisgICAgYXNzZXJ0X3RydWUoYW5pbS5lZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5wcm9ncmVz
cyA9PT0gdGVzdC5wcm9ncmVzc1sxXSwKKyAgICAgICAgICAgICAgICAnZmluaXNoZWQgcHJvZ3Jl
c3Mgd2l0aCAiJyArIHRlc3QuZmlsbCArICciIGZpbGwnKTsKKyAgfSk7Cit9LCAncHJvZ3Jlc3Mg
b2YgYW4gYW5pbWF0aW9uIHdpdGggZGlmZmVyZW50IGZpbGwgbW9kZXMnKTsKKwordGVzdChmdW5j
dGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwge3N0eWxlOiAnYW5pbWF0aW9uOiBtb3Zl
QW5pbWF0aW9uIDEwcyAxMCBib3RoJ30pOworICB2YXIgYW5pbSA9IGRpdi5nZXRBbmltYXRpb25z
KClbMF07CisKKyAgYXNzZXJ0X2VxdWFscyhhbmltLmVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygp
LnByb2dyZXNzLCAwLjAsCisgICAgICAgICAgICAgICAgJ0luaXRpYWwgdmFsdWUgb2YgcHJvZ3Jl
c3MnKTsKKyAgYW5pbS5jdXJyZW50VGltZSArPSAyLjUgKiBNU19QRVJfU0VDOworICBhc3NlcnRf
ZXF1YWxzKGFuaW0uZWZmZWN0LmdldENvbXB1dGVkVGltaW5nKCkucHJvZ3Jlc3MsIDAuMjUsCisg
ICAgICAgICAgICAgICAgJ1ZhbHVlIG9mIHByb2dyZXNzJyk7CisgIGFuaW0uY3VycmVudFRpbWUg
Kz0gNSAqIE1TX1BFUl9TRUM7CisgIGFzc2VydF9lcXVhbHMoYW5pbS5lZmZlY3QuZ2V0Q29tcHV0
ZWRUaW1pbmcoKS5wcm9ncmVzcywgMC43NSwKKyAgICAgICAgICAgICAgICAnVmFsdWUgb2YgcHJv
Z3Jlc3MnKTsKKyAgYW5pbS5jdXJyZW50VGltZSArPSA1ICogTVNfUEVSX1NFQzsKKyAgYXNzZXJ0
X2VxdWFscyhhbmltLmVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLnByb2dyZXNzLCAwLjI1LAor
ICAgICAgICAgICAgICAgICdWYWx1ZSBvZiBwcm9ncmVzcycpOworICBhbmltLmZpbmlzaCgpCisg
IGFzc2VydF9lcXVhbHMoYW5pbS5lZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5wcm9ncmVzcywg
MS4wLAorICAgICAgICAgICAgICAgICdWYWx1ZSBvZiBwcm9ncmVzcycpOworfSwgJ3Byb2dyZXNz
IG9mIGFuIGludGVncmFsIHJlcGVhdGluZyBhbmltYXRpb24gd2l0aCBub3JtYWwgZGlyZWN0aW9u
Jyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQpOworICAvLyBO
b3RlOiBGaWxsTW9kZSBoZXJlIGlzICJib3RoIiBiZWNhdXNlCisgIC8vIDEuIFNpbmNlIHRoaXMg
YSB6ZXJvLWR1cmF0aW9uIGFuaW1hdGlvbiwgaXQgd2lsbCBhbHJlYWR5IGhhdmUgZmluaXNoZWQK
KyAgLy8gICAgc28gaXQgd29uJ3QgYmUgcmV0dXJuZWQgYnkgZ2V0QW5pbWF0aW9ucygpIHVubGVz
cyBpdCBmaWxscyBmb3J3YXJkcy4KKyAgLy8gMi4gRmlsbCBiYWNrd2FyZHMsIHNvIHRoZSBwcm9n
cmVzcyBiZWZvcmUgcGhhc2Ugd291bGRuJ3QgYmUKKyAgLy8gICAgdW5yZXNvbHZlZCAobnVsbCB2
YWx1ZSkuCisgIHZhciBkaXYgPSBhZGREaXYodCwge3N0eWxlOiAnYW5pbWF0aW9uOiBtb3ZlQW5p
bWF0aW9uIDBzIGluZmluaXRlIGJvdGgnfSk7CisgIHZhciBhbmltID0gZGl2LmdldEFuaW1hdGlv
bnMoKVswXTsKKworICBhc3NlcnRfZXF1YWxzKGFuaW0uZWZmZWN0LmdldENvbXB1dGVkVGltaW5n
KCkucHJvZ3Jlc3MsIDEuMCwKKyAgICAgICAgICAgICAgICAnSW5pdGlhbCB2YWx1ZSBvZiBwcm9n
cmVzcyBpbiBhZnRlciBwaGFzZScpOworCisgIC8vIFNlZWsgYmFja3dhcmRzCisgIGFuaW0uY3Vy
cmVudFRpbWUgLT0gMSAqIE1TX1BFUl9TRUM7CisgIGFzc2VydF9lcXVhbHMoYW5pbS5lZmZlY3Qu
Z2V0Q29tcHV0ZWRUaW1pbmcoKS5wcm9ncmVzcywgMC4wLAorICAgICAgICAgICAgICAgICdWYWx1
ZSBvZiBwcm9ncmVzcyBiZWZvcmUgcGhhc2UnKTsKK30sICdwcm9ncmVzcyBvZiBhbiBpbmZpbml0
ZWx5IHJlcGVhdGluZyB6ZXJvLWR1cmF0aW9uIGFuaW1hdGlvbicpOworCit0ZXN0KGZ1bmN0aW9u
KHQpIHsKKyAgLy8gRGVmYXVsdCBpdGVyYXRpb25zID0gMQorICB2YXIgZGl2ID0gYWRkRGl2KHQs
IHtzdHlsZTogJ2FuaW1hdGlvbjogbW92ZUFuaW1hdGlvbiAwcyBib3RoJ30pOworICB2YXIgYW5p
bSA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisKKyAgYXNzZXJ0X2VxdWFscyhhbmltLmVmZmVj
dC5nZXRDb21wdXRlZFRpbWluZygpLnByb2dyZXNzLCAxLjAsCisgICAgICAgICAgICAgICAgJ0lu
aXRpYWwgdmFsdWUgb2YgcHJvZ3Jlc3MgaW4gYWZ0ZXIgcGhhc2UnKTsKKworICAvLyBTZWVrIGJh
Y2t3YXJkcworICBhbmltLmN1cnJlbnRUaW1lIC09IDEgKiBNU19QRVJfU0VDOworICBhc3NlcnRf
ZXF1YWxzKGFuaW0uZWZmZWN0LmdldENvbXB1dGVkVGltaW5nKCkucHJvZ3Jlc3MsIDAuMCwKKyAg
ICAgICAgICAgICAgICAnVmFsdWUgb2YgcHJvZ3Jlc3MgYmVmb3JlIHBoYXNlJyk7Cit9LCAncHJv
Z3Jlc3Mgb2YgYSBmaW5pdGVseSByZXBlYXRpbmcgemVyby1kdXJhdGlvbiBhbmltYXRpb24nKTsK
KwordGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwge3N0eWxlOiAnYW5p
bWF0aW9uOiBtb3ZlQW5pbWF0aW9uIDBzIDVzIDEwLjI1IGJvdGgnfSk7CisgIHZhciBhbmltID0g
ZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKworICBhc3NlcnRfZXF1YWxzKGFuaW0uZWZmZWN0Lmdl
dENvbXB1dGVkVGltaW5nKCkucHJvZ3Jlc3MsIDAuMCwKKyAgICAgICAgICAgICAgICAnSW5pdGlh
bCB2YWx1ZSBvZiBwcm9ncmVzcyAoYmVmb3JlIHBoYXNlKScpOworCisgIC8vIFVzaW5nIGl0ZXJh
dGlvbiBkdXJhdGlvbiBvZiAxIG5vdy4KKyAgLy8gY3VycmVudEl0ZXJhdGlvbiBub3cgaXMgZmxv
b3IoMTAuMjUpID0gMTAsIHNvIHByb2dyZXNzIHNob3VsZCBiZSAyNSUuCisgIGFuaW0uZmluaXNo
KCk7CisgIGFzc2VydF9lcXVhbHMoYW5pbS5lZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5wcm9n
cmVzcywgMC4yNSwKKyAgICAgICAgICAgICAgICAnVmFsdWUgb2YgcHJvZ3Jlc3MgaW4gYWZ0ZXIg
cGhhc2UnKTsKK30sICdwcm9ncmVzcyBvZiBhIG5vbi1pbnRlZ3JhbCByZXBlYXRpbmcgemVyby1k
dXJhdGlvbiBhbmltYXRpb24nKTsKKwordGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBh
ZGREaXYodCwge3N0eWxlOiAnYW5pbWF0aW9uOiBtb3ZlQW5pbWF0aW9uIDBzIDVzIDEwLjI1IGJv
dGggcmV2ZXJzZSd9KTsKKyAgdmFyIGFuaW0gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworCisg
IGFzc2VydF9lcXVhbHMoYW5pbS5lZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5wcm9ncmVzcywg
MS4wLAorICAgICAgICAgICAgICAgICdJbml0aWFsIHZhbHVlIG9mIHByb2dyZXNzIChiZWZvcmUg
cGhhc2UpJyk7CisKKyAgLy8gU2VlayBmb3J3YXJkcworICBhbmltLmZpbmlzaCgpOworICBhc3Nl
cnRfZXF1YWxzKGFuaW0uZWZmZWN0LmdldENvbXB1dGVkVGltaW5nKCkucHJvZ3Jlc3MsIDAuNzUs
CisgICAgICAgICAgICAgICAgJ1ZhbHVlIG9mIHByb2dyZXNzIGluIGFmdGVyIHBoYXNlJyk7Cit9
LCAnUHJvZ3Jlc3Mgb2YgYSBub24taW50ZWdyYWwgcmVwZWF0aW5nIHplcm8tZHVyYXRpb24gYW5p
bWF0aW9uICcgKworICAgJ3dpdGggcmV2ZXJzaW5nIGRpcmVjdGlvbicpOworCit0ZXN0KGZ1bmN0
aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7c3R5bGU6ICdhbmltYXRpb246IG1vdmVB
bmltYXRpb24gMTBzIDEwLjI1IGJvdGggYWx0ZXJuYXRlJ30pOworICB2YXIgYW5pbSA9IGRpdi5n
ZXRBbmltYXRpb25zKClbMF07CisKKyAgYXNzZXJ0X2VxdWFscyhhbmltLmVmZmVjdC5nZXRDb21w
dXRlZFRpbWluZygpLnByb2dyZXNzLCAwLjAsCisgICAgICAgICAgICAgICAgJ0luaXRpYWwgdmFs
dWUgb2YgcHJvZ3Jlc3MnKTsKKyAgYW5pbS5jdXJyZW50VGltZSArPSAyLjUgKiBNU19QRVJfU0VD
OworICBhc3NlcnRfZXF1YWxzKGFuaW0uZWZmZWN0LmdldENvbXB1dGVkVGltaW5nKCkucHJvZ3Jl
c3MsIDAuMjUsCisgICAgICAgICAgICAgICAgJ1ZhbHVlIG9mIHByb2dyZXNzJyk7CisgIGFuaW0u
Y3VycmVudFRpbWUgKz0gNSAqIE1TX1BFUl9TRUM7CisgIGFzc2VydF9lcXVhbHMoYW5pbS5lZmZl
Y3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5wcm9ncmVzcywgMC43NSwKKyAgICAgICAgICAgICAgICAn
VmFsdWUgb2YgcHJvZ3Jlc3MnKTsKKyAgYW5pbS5jdXJyZW50VGltZSArPSA1ICogTVNfUEVSX1NF
QzsKKyAgYXNzZXJ0X2VxdWFscyhhbmltLmVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLnByb2dy
ZXNzLCAwLjc1LAorICAgICAgICAgICAgICAgICdWYWx1ZSBvZiBwcm9ncmVzcycpOworICBhbmlt
LmZpbmlzaCgpCisgIGFzc2VydF9lcXVhbHMoYW5pbS5lZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmco
KS5wcm9ncmVzcywgMC4yNSwKKyAgICAgICAgICAgICAgICAnVmFsdWUgb2YgcHJvZ3Jlc3MnKTsK
K30sICdwcm9ncmVzcyBvZiBhIG5vbi1pbnRlZ3JhbCByZXBlYXRpbmcgYW5pbWF0aW9uICcgKwor
ICAgJ3dpdGggYWx0ZXJuYXRlIGRpcmVjdGlvbicpOworCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAg
dmFyIGRpdiA9IGFkZERpdih0LCB7c3R5bGU6ICdhbmltYXRpb246IG1vdmVBbmltYXRpb24gMTBz
IDEwLjI1IGJvdGggYWx0ZXJuYXRlLXJldmVyc2UnfSk7CisgIHZhciBhbmltID0gZGl2LmdldEFu
aW1hdGlvbnMoKVswXTsKKworICBhc3NlcnRfZXF1YWxzKGFuaW0uZWZmZWN0LmdldENvbXB1dGVk
VGltaW5nKCkucHJvZ3Jlc3MsIDEuMCwKKyAgICAgICAgICAgICAgICAnSW5pdGlhbCB2YWx1ZSBv
ZiBwcm9ncmVzcycpOworICBhbmltLmN1cnJlbnRUaW1lICs9IDIuNSAqIE1TX1BFUl9TRUM7Cisg
IGFzc2VydF9lcXVhbHMoYW5pbS5lZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5wcm9ncmVzcywg
MC43NSwKKyAgICAgICAgICAgICAgICAnVmFsdWUgb2YgcHJvZ3Jlc3MnKTsKKyAgYW5pbS5jdXJy
ZW50VGltZSArPSA1ICogTVNfUEVSX1NFQzsKKyAgYXNzZXJ0X2VxdWFscyhhbmltLmVmZmVjdC5n
ZXRDb21wdXRlZFRpbWluZygpLnByb2dyZXNzLCAwLjI1LAorICAgICAgICAgICAgICAgICdWYWx1
ZSBvZiBwcm9ncmVzcycpOworICBhbmltLmN1cnJlbnRUaW1lICs9IDUgKiBNU19QRVJfU0VDOwor
ICBhc3NlcnRfZXF1YWxzKGFuaW0uZWZmZWN0LmdldENvbXB1dGVkVGltaW5nKCkucHJvZ3Jlc3Ms
IDAuMjUsCisgICAgICAgICAgICAgICAgJ1ZhbHVlIG9mIHByb2dyZXNzJyk7CisgIGFuaW0uZmlu
aXNoKCkKKyAgYXNzZXJ0X2VxdWFscyhhbmltLmVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLnBy
b2dyZXNzLCAwLjc1LAorICAgICAgICAgICAgICAgICdWYWx1ZSBvZiBwcm9ncmVzcycpOworfSwg
J3Byb2dyZXNzIG9mIGEgbm9uLWludGVncmFsIHJlcGVhdGluZyBhbmltYXRpb24gJyArCisgICAn
d2l0aCBhbHRlcm5hdGUtcmV2ZXJzaW5nIGRpcmVjdGlvbicpOworCit0ZXN0KGZ1bmN0aW9uKHQp
IHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7c3R5bGU6ICdhbmltYXRpb246IG1vdmVBbmltYXRp
b24gMHMgMTAuMjUgYm90aCBhbHRlcm5hdGUnfSk7CisgIHZhciBhbmltID0gZGl2LmdldEFuaW1h
dGlvbnMoKVswXTsKKworICBhc3NlcnRfZXF1YWxzKGFuaW0uZWZmZWN0LmdldENvbXB1dGVkVGlt
aW5nKCkucHJvZ3Jlc3MsIDAuMjUsCisgICAgICAgICAgICAgICAgJ0luaXRpYWwgdmFsdWUgb2Yg
cHJvZ3Jlc3MnKTsKKyAgYW5pbS5jdXJyZW50VGltZSArPSAyLjUgKiBNU19QRVJfU0VDOworICBh
c3NlcnRfZXF1YWxzKGFuaW0uZWZmZWN0LmdldENvbXB1dGVkVGltaW5nKCkucHJvZ3Jlc3MsIDAu
MjUsCisgICAgICAgICAgICAgICAgJ1ZhbHVlIG9mIHByb2dyZXNzJyk7CisgIGFuaW0uY3VycmVu
dFRpbWUgLT0gNSAqIE1TX1BFUl9TRUM7CisgIGFzc2VydF9lcXVhbHMoYW5pbS5lZmZlY3QuZ2V0
Q29tcHV0ZWRUaW1pbmcoKS5wcm9ncmVzcywgMC4wLAorICAgICAgICAgICAgICAgICdWYWx1ZSBv
ZiBwcm9ncmVzcycpOworICBhbmltLmZpbmlzaCgpCisgIGFzc2VydF9lcXVhbHMoYW5pbS5lZmZl
Y3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5wcm9ncmVzcywgMC4yNSwKKyAgICAgICAgICAgICAgICAn
VmFsdWUgb2YgcHJvZ3Jlc3MnKTsKK30sICdwcm9ncmVzcyBvZiBhIG5vbi1pbnRlZ3JhbCByZXBl
YXRpbmcgemVyby1kdXJhdGlvbiBhbmltYXRpb24gJyArCisgICAnd2l0aCBhbHRlcm5hdGUgZGly
ZWN0aW9uJyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHtz
dHlsZTogJ2FuaW1hdGlvbjogbW92ZUFuaW1hdGlvbiAwcyAxMC4yNSBib3RoIGFsdGVybmF0ZS1y
ZXZlcnNlJ30pOworICB2YXIgYW5pbSA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisKKyAgYXNz
ZXJ0X2VxdWFscyhhbmltLmVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLnByb2dyZXNzLCAwLjc1
LAorICAgICAgICAgICAgICAgICdJbml0aWFsIHZhbHVlIG9mIHByb2dyZXNzJyk7CisgIGFuaW0u
Y3VycmVudFRpbWUgKz0gMi41ICogTVNfUEVSX1NFQzsKKyAgYXNzZXJ0X2VxdWFscyhhbmltLmVm
ZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLnByb2dyZXNzLCAwLjc1LAorICAgICAgICAgICAgICAg
ICdWYWx1ZSBvZiBwcm9ncmVzcycpOworICBhbmltLmN1cnJlbnRUaW1lIC09IDUgKiBNU19QRVJf
U0VDOworICBhc3NlcnRfZXF1YWxzKGFuaW0uZWZmZWN0LmdldENvbXB1dGVkVGltaW5nKCkucHJv
Z3Jlc3MsIDEuMCwKKyAgICAgICAgICAgICAgICAnVmFsdWUgb2YgcHJvZ3Jlc3MnKTsKKyAgYW5p
bS5maW5pc2goKQorICBhc3NlcnRfZXF1YWxzKGFuaW0uZWZmZWN0LmdldENvbXB1dGVkVGltaW5n
KCkucHJvZ3Jlc3MsIDAuNzUsCisgICAgICAgICAgICAgICAgJ1ZhbHVlIG9mIHByb2dyZXNzJyk7
Cit9LCAncHJvZ3Jlc3Mgb2YgYSBub24taW50ZWdyYWwgcmVwZWF0aW5nIHplcm8tZHVyYXRpb24g
YW5pbWF0aW9uICcgKworICAgJ3dpdGggYWx0ZXJuYXRlLXJldmVyc2UgZGlyZWN0aW9uJyk7CisK
KworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGN1cnJlbnRJdGVyYXRpb24KKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0
LCB7c3R5bGU6ICdhbmltYXRpb246IG1vdmVBbmltYXRpb24gMTAwcyAycyd9KTsKKyAgdmFyIGVm
ZmVjdCA9IGRpdi5nZXRBbmltYXRpb25zKClbMF0uZWZmZWN0OworICBhc3NlcnRfZXF1YWxzKGVm
ZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLmN1cnJlbnRJdGVyYXRpb24sIG51bGwsCisgICAgICAg
ICAgICAgICAgJ0luaXRpYWwgdmFsdWUgb2YgY3VycmVudEl0ZXJhdGlvbiBiZWZvcmUgcGhhc2Un
KTsKK30sICdjdXJyZW50SXRlcmF0aW9uIG9mIGEgbmV3IGFuaW1hdGlvbiB3aXRoIG5vIGJhY2t3
YXJkcyBmaWxsIGlzIHVucmVzb2x2ZWQgJyArCisgICAnaW4gYmVmb3JlIHBoYXNlJyk7CisKK3Rl
c3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHtzdHlsZTogJ2FuaW1hdGlv
bjogbW92ZUFuaW1hdGlvbiAxMDBzJ30pOworICB2YXIgYW5pbSA9IGRpdi5nZXRBbmltYXRpb25z
KClbMF07CisgIGFzc2VydF9lcXVhbHMoYW5pbS5lZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5j
dXJyZW50SXRlcmF0aW9uLCAwLAorICAgICAgICAgICAgICAgICdJbml0aWFsIHZhbHVlIG9mIGN1
cnJlbnRJdGVyYXRpb24nKTsKK30sICdjdXJyZW50SXRlcmF0aW9uIG9mIGEgbmV3IGFuaW1hdGlv
biBpcyB6ZXJvJyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICAvLyBOb3RlOiBGaWxsTW9kZSBo
ZXJlIGlzICJib3RoIiBiZWNhdXNlCisgIC8vIDEuIFNpbmNlIHRoaXMgYSB6ZXJvLWR1cmF0aW9u
IGFuaW1hdGlvbiwgaXQgd2lsbCBhbHJlYWR5IGhhdmUgZmluaXNoZWQKKyAgLy8gICAgc28gaXQg
d29uJ3QgYmUgcmV0dXJuZWQgYnkgZ2V0QW5pbWF0aW9ucygpIHVubGVzcyBpdCBmaWxscyBmb3J3
YXJkcy4KKyAgLy8gMi4gRmlsbCBiYWNrd2FyZHMsIHNvIHRoZSBjdXJyZW50SXRlcmF0aW9uIChi
ZWZvcmUgcGhhc2UpIHdvdWxkbid0IGJlCisgIC8vICAgIHVucmVzb2x2ZWQgKG51bGwgdmFsdWUp
LgorICB2YXIgZGl2ID0gYWRkRGl2KHQsIHtzdHlsZTogJ2FuaW1hdGlvbjogbW92ZUFuaW1hdGlv
biAwcyBpbmZpbml0ZSBib3RoJ30pOworICB2YXIgYW5pbSA9IGRpdi5nZXRBbmltYXRpb25zKClb
MF07CisKKyAgYXNzZXJ0X2VxdWFscyhhbmltLmVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLmN1
cnJlbnRJdGVyYXRpb24sIEluZmluaXR5LAorICAgICAgICAgICAgICAgICdJbml0aWFsIHZhbHVl
IG9mIGN1cnJlbnRJdGVyYXRpb24gaW4gYWZ0ZXIgcGhhc2UnKTsKKworICAvLyBTZWVrIGJhY2t3
YXJkcworICBhbmltLmN1cnJlbnRUaW1lIC09IDIgKiBNU19QRVJfU0VDOworICBhc3NlcnRfZXF1
YWxzKGFuaW0uZWZmZWN0LmdldENvbXB1dGVkVGltaW5nKCkuY3VycmVudEl0ZXJhdGlvbiwgMCwK
KyAgICAgICAgICAgICAgICAnVmFsdWUgb2YgY3VycmVudEl0ZXJhdGlvbiBjb3VudCBkdXJpbmcg
YmVmb3JlIHBoYXNlJyk7Cit9LCAnY3VycmVudEl0ZXJhdGlvbiBvZiBhbiBpbmZpbml0ZWx5IHJl
cGVhdGluZyB6ZXJvLWR1cmF0aW9uIGFuaW1hdGlvbicpOworCit0ZXN0KGZ1bmN0aW9uKHQpIHsK
KyAgdmFyIGRpdiA9IGFkZERpdih0LCB7c3R5bGU6ICdhbmltYXRpb246IG1vdmVBbmltYXRpb24g
MHMgMTAuNSBib3RoJ30pOworICB2YXIgYW5pbSA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisK
KyAgLy8gTm90ZTogY3VycmVudEl0ZXJhdGlvbiA9IGNlaWwoaXRlcmF0aW9uIHN0YXJ0ICsgaXRl
cmF0aW9uIGNvdW50KSAtIDEKKyAgYXNzZXJ0X2VxdWFscyhhbmltLmVmZmVjdC5nZXRDb21wdXRl
ZFRpbWluZygpLmN1cnJlbnRJdGVyYXRpb24sIDEwLAorICAgICAgICAgICAgICAgICdJbml0aWFs
IHZhbHVlIG9mIGN1cnJlbnRJdGVyYXRpb24nKTsKKworICAvLyBTZWVrIGJhY2t3YXJkcworICBh
bmltLmN1cnJlbnRUaW1lIC09IDIgKiBNU19QRVJfU0VDOworICBhc3NlcnRfZXF1YWxzKGFuaW0u
ZWZmZWN0LmdldENvbXB1dGVkVGltaW5nKCkuY3VycmVudEl0ZXJhdGlvbiwgMCwKKyAgICAgICAg
ICAgICAgICAnVmFsdWUgb2YgY3VycmVudEl0ZXJhdGlvbiBjb3VudCBkdXJpbmcgYmVmb3JlIHBo
YXNlJyk7Cit9LCAnY3VycmVudEl0ZXJhdGlvbiBvZiBhIGZpbml0ZWx5IHJlcGVhdGluZyB6ZXJv
LWR1cmF0aW9uIGFuaW1hdGlvbicpOworCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9
IGFkZERpdih0LCB7c3R5bGU6ICdhbmltYXRpb246IG1vdmVBbmltYXRpb24gMTAwcyA1LjUgZm9y
d2FyZHMnfSk7CisgIHZhciBhbmltID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKworICBhc3Nl
cnRfZXF1YWxzKGFuaW0uZWZmZWN0LmdldENvbXB1dGVkVGltaW5nKCkuY3VycmVudEl0ZXJhdGlv
biwgMCwKKyAgICAgICAgICAgICAgICAnSW5pdGlhbCB2YWx1ZSBvZiBjdXJyZW50SXRlcmF0aW9u
Jyk7CisgIC8vIFRoZSAzcmQgaXRlcmF0aW9uCisgIC8vIE5vdGU6IGN1cnJlbnRJdGVyYXRpb24g
PSBmbG9vcihzY2FsZWQgYWN0aXZlIHRpbWUgLyBpdGVyYXRpb24gZHVyYXRpb24pCisgIGFuaW0u
Y3VycmVudFRpbWUgPSAyNTAgKiBNU19QRVJfU0VDOworICBhc3NlcnRfZXF1YWxzKGFuaW0uZWZm
ZWN0LmdldENvbXB1dGVkVGltaW5nKCkuY3VycmVudEl0ZXJhdGlvbiwgMiwKKyAgICAgICAgICAg
ICAgICAnVmFsdWUgb2YgY3VycmVudEl0ZXJhdGlvbiBkdXJpbmcgdGhlIDNyZCBpdGVyYXRpb24n
KTsKKyAgLy8gRmluaXNoCisgIGFuaW0uZmluaXNoKCk7CisgIGFzc2VydF9lcXVhbHMoYW5pbS5l
ZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5jdXJyZW50SXRlcmF0aW9uLCA1LAorICAgICAgICAg
ICAgICAgICdWYWx1ZSBvZiBjdXJyZW50SXRlcmF0aW9uIGluIGFmdGVyIHBoYXNlJyk7Cit9LCAn
Y3VycmVudEl0ZXJhdGlvbiBvZiBhbiBhbmltYXRpb24gd2l0aCBhIG5vbi1pbnRlZ3JhbCBpdGVy
YXRpb24gY291bnQnKTsKKwordGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYo
dCwge3N0eWxlOiAnYW5pbWF0aW9uOiBtb3ZlQW5pbWF0aW9uIDEwMHMgMiBmb3J3YXJkcyd9KTsK
KyAgdmFyIGFuaW0gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworCisgIGFzc2VydF9lcXVhbHMo
YW5pbS5lZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5jdXJyZW50SXRlcmF0aW9uLCAwLAorICAg
ICAgICAgICAgICAgICdJbml0aWFsIHZhbHVlIG9mIGN1cnJlbnRJdGVyYXRpb24nKTsKKyAgLy8g
RmluaXNoCisgIGFuaW0uZmluaXNoKCk7CisgIGFzc2VydF9lcXVhbHMoYW5pbS5lZmZlY3QuZ2V0
Q29tcHV0ZWRUaW1pbmcoKS5jdXJyZW50SXRlcmF0aW9uLCAxLAorICAgICAgICAgICAgICAgICdW
YWx1ZSBvZiBjdXJyZW50SXRlcmF0aW9uIGluIGFmdGVyIHBoYXNlJyk7Cit9LCAnY3VycmVudEl0
ZXJhdGlvbiBvZiBhbiBhbmltYXRpb24gd2l0aCBhbiBpbnRlZ3JhbCBpdGVyYXRpb24gY291bnQn
KTsKKwordGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwge3N0eWxlOiAn
YW5pbWF0aW9uOiBtb3ZlQW5pbWF0aW9uIDEwMHMgZm9yd2FyZHMnfSk7CisgIHZhciBhbmltID0g
ZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltLmVmZmVjdC5nZXRD
b21wdXRlZFRpbWluZygpLmN1cnJlbnRJdGVyYXRpb24sIDAsCisgICAgICAgICAgICAgICAgJ0lu
aXRpYWwgdmFsdWUgb2YgY3VycmVudEl0ZXJhdGlvbicpOworICAvLyBGaW5pc2gKKyAgYW5pbS5m
aW5pc2goKTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltLmVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygp
LmN1cnJlbnRJdGVyYXRpb24sIDAsCisgICAgICAgICAgICAgICAgJ1ZhbHVlIG9mIGN1cnJlbnRJ
dGVyYXRpb24gaW4gYWZ0ZXIgcGhhc2UnKTsKK30sICdjdXJyZW50SXRlcmF0aW9uIG9mIGFuIGFu
aW1hdGlvbiB3aXRoIGEgZGVmYXVsdCBpdGVyYXRpb24gY291bnQnKTsKKwordGVzdChmdW5jdGlv
bih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCk7CisgIHZhciBlZmZlY3QgPSBuZXcgS2V5ZnJh
bWVFZmZlY3RSZWFkT25seShkaXYsIHtsZWZ0OiBbIjBweCIsICIxMDBweCJdfSk7CisKKyAgYXNz
ZXJ0X2VxdWFscyhlZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5jdXJyZW50SXRlcmF0aW9uLCBu
dWxsLAorICAgICAgICAgICAgICAgICdjdXJyZW50SXRlcmF0aW9uIGZvciBvcnBoYW5lZCBlZmZl
Y3QnKTsKK30sICdjdXJyZW50SXRlcmF0aW9uIG9mIGFuIEFuaW1hdGlvbkVmZmVjdCB3aXRob3V0
IGFuIEFuaW1hdGlvbicpOworCisvLyBUT0RPOiBJZiBpdGVyYXRpb24gZHVyYXRpb24gaXMgSW5m
aW5pdHksIGN1cnJlbnRJdGVyYXRpb24gaXMgMC4KKy8vIEhvd2V2ZXIsIHdlIGNhbm5vdCBzZXQg
aXRlcmF0aW9uIGR1cmF0aW9uIHRvIEluZmluaXR5IGluIENTUyBBbmltYXRpb24gbm93LgorCis8
L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tY3VycmVudHRpbWUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2FuaW1h
dGlvbi1jdXJyZW50dGltZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU4OGQyYTgxOTA0NzE3
YjMwNTVkOWM0YmUwZmNiOTU1YTc2MzdkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tY3VycmVudHRp
bWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorI1BJRCBVTlJFU1BPTlNJVkUgLSBjb20u
YXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuRGV2ZWxvcG1lbnQgKHBpZCAxMzUxOCkKK0ZBSUw6IFRp
bWVkIG91dCB3YWl0aW5nIGZvciBub3RpZnlEb25lIHRvIGJlIGNhbGxlZAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0
aW9uLWN1cnJlbnR0aW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1h
bmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLWN1cnJlbnR0aW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDYz
NTYzZjYzMjFhMDMyZTcxMzE5Y2MwNjc0MDQ4MmU3ZDIzOTgxYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRp
b24tY3VycmVudHRpbWUuaHRtbApAQCAtMCwwICsxLDM0NyBAQAorPCFkb2N0eXBlIGh0bWw+PCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVDU1NBbmltYXRpb25zQW5kQ1NTVHJhbnNpdGlv
bnNCYWNrZWRCeVdlYkFuaW1hdGlvbnM9dHJ1ZSBdIC0tPgorPGh0bWw+CisgIDxoZWFkPgorICAg
IDxtZXRhIGNoYXJzZXQ9dXRmLTg+CisgICAgPHRpdGxlPlRlc3RzIGZvciB0aGUgZWZmZWN0IG9m
IHNldHRpbmcgYSBDU1MgYW5pbWF0aW9uJ3MKKyAgICAgICAgICAgQW5pbWF0aW9uLmN1cnJlbnRU
aW1lPC90aXRsZT4KKyAgICA8c3R5bGU+CisKKy5hbmltYXRlZC1kaXYgeworICBtYXJnaW4tbGVm
dDogMTBweDsKKyAgLyogTWFrZSBpdCBlYXNpZXIgdG8gY2FsY3VsYXRlIGV4cGVjdGVkIHZhbHVl
czogKi8KKyAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyICEgaW1wb3J0YW50Owor
fQorCitAa2V5ZnJhbWVzIGFuaW0geworICBmcm9tIHsgbWFyZ2luLWxlZnQ6IDEwMHB4OyB9Cisg
IHRvIHsgbWFyZ2luLWxlZnQ6IDIwMHB4OyB9Cit9CisKKyAgICA8L3N0eWxlPgorICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGNvbW1vbi5qcyI+PC9z
Y3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPGRpdiBpZD0ibG9nIj48L2Rpdj4KKyAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKKyd1c2Ugc3RyaWN0JzsKKworLy8g
VE9ETzogV2Ugc2hvdWxkIHNlcGFyYXRlIHRoaXMgdGVzdChUZXN0aW5nIGZvciBDU1MgQW5pbWF0
aW9uIGV2ZW50cyAvCisvLyBUZXN0aW5nIGZvciBjdXJyZW50VGltZSBvZiBXZWIgQW5pbWF0aW9u
KS4KKy8vIGUuZzoKKy8vICBDU1MgQW5pbWF0aW9uIGV2ZW50cyB0ZXN0IDoKKy8vICAgIC0gY2hl
Y2sgdGhlIGZpcmluZyBhbiBldmVudCB1c2luZyBBbmltYXRpb24uY3VycmVudFRpbWUKKy8vICBU
aGUgY3VycmVudCBUaW1lIG9mIFdlYiBBbmltYXRpb24gdGVzdCA6CisvLyAgICAtIGNoZWNrIGFu
IGN1cnJlbnQgdGltZSB2YWx1ZSBvbiBzZXZlcmFsIHNpdHVhdGlvbihpbml0IC8gcHJvY2Vzc2lu
Zy4uKQorLy8gICAgLSBCYXNlZCBvbiBXM0MgU3BlYywgY2hlY2sgdGhlIGJlaGF2aW9yIG9mIHNl
dHRpbmcgY3VycmVudCB0aW1lLgorCisvLyBUT0RPOiBPbmNlIHRoZSBjb21wdXRlZFRpbWluZyBw
cm9wZXJ0eSBpcyBpbXBsZW1lbnRlZCwgYWRkIGNoZWNrcyB0byB0aGUKKy8vIGNoZWNrZXIgaGVs
cGVycyB0byBlbnN1cmUgdGhhdCBjb21wdXRlZFRpbWluZydzIHByb3BlcnRpZXMgYXJlIHVwZGF0
ZWQgYXMKKy8vIGV4cGVjdGVkLgorLy8gU2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcv
c2hvd19idWcuY2dpP2lkPTExMDgwNTUKKworY29uc3QgQ1NTX0FOSU1fRVZFTlRTID0KKyAgWydh
bmltYXRpb25zdGFydCcsICdhbmltYXRpb25pdGVyYXRpb24nLCAnYW5pbWF0aW9uZW5kJ107CisK
K3Rlc3QoZnVuY3Rpb24odCkKK3sKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7J2NsYXNzJzogJ2Fu
aW1hdGVkLWRpdid9KTsKKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICJhbmltIDEwMHMiOworICB2
YXIgYW5pbWF0aW9uID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKworICAvLyBBbmltYXRpb25z
IHNob3VsZG4ndCBzdGFydCB1bnRpbCB0aGUgbmV4dCBwYWludCB0aWNrLCBzbzoKKyAgYXNzZXJ0
X2VxdWFscyhhbmltYXRpb24uY3VycmVudFRpbWUsIDAsCisgICAgJ0FuaW1hdGlvbi5jdXJyZW50
VGltZSBzaG91bGQgYmUgemVybyB3aGVuIGFuIGFuaW1hdGlvbiAnICsKKyAgICAnaXMgaW5pdGlh
bGx5IGNyZWF0ZWQnKTsKKworICAvLyBNYWtlIHN1cmUgdGhlIGFuaW1hdGlvbiBpcyBydW5uaW5n
IGJlZm9yZSB3ZSBzZXQgdGhlIGN1cnJlbnQgdGltZS4KKyAgYW5pbWF0aW9uLnN0YXJ0VGltZSA9
IGFuaW1hdGlvbi50aW1lbGluZS5jdXJyZW50VGltZTsKKworICBhbmltYXRpb24uY3VycmVudFRp
bWUgPSA1MCAqIE1TX1BFUl9TRUM7CisgIGFzc2VydF90aW1lX2VxdWFsc19saXRlcmFsKGFuaW1h
dGlvbi5jdXJyZW50VGltZSwgNTAgKiBNU19QRVJfU0VDLAorICAgICdDaGVjayBzZXR0aW5nIG9m
IGN1cnJlbnRUaW1lIGFjdHVhbGx5IHdvcmtzJyk7Cit9LCAnU2FuaXR5IHRlc3QgdG8gY2hlY2sg
cm91bmQtdHJpcHBpbmcgYXNzaWduaW5nIHRvIG5ldyBhbmltYXRpb25cJ3MgJyArCisgICAnY3Vy
cmVudFRpbWUnKTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFk
ZERpdih0LCB7J2NsYXNzJzogJ2FuaW1hdGVkLWRpdid9KTsKKyAgdmFyIGV2ZW50V2F0Y2hlciA9
IG5ldyBFdmVudFdhdGNoZXIodCwgZGl2LCBDU1NfQU5JTV9FVkVOVFMpOworICBkaXYuc3R5bGUu
YW5pbWF0aW9uID0gImFuaW0gMTAwcyAxMDBzIjsKKyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRB
bmltYXRpb25zKClbMF07CisKKyAgcmV0dXJuIGFuaW1hdGlvbi5yZWFkeS50aGVuKGZ1bmN0aW9u
KCkgeworICAgIC8vIHRoZSAwLjAwMDEgaGVyZSBpcyBmb3Igcm91bmRpbmcgZXJyb3IKKyAgICBh
c3NlcnRfbGVzc190aGFuX2VxdWFsKGFuaW1hdGlvbi5jdXJyZW50VGltZSwKKyAgICAgIGFuaW1h
dGlvbi50aW1lbGluZS5jdXJyZW50VGltZSAtIGFuaW1hdGlvbi5zdGFydFRpbWUgKyAwLjAwMDEs
CisgICAgICAnQW5pbWF0aW9uLmN1cnJlbnRUaW1lIHNob3VsZCBiZSBsZXNzIHRoYW4gdGhlIGxv
Y2FsIHRpbWUgJyArCisgICAgICAnZXF1aXZhbGVudCBvZiB0aGUgdGltZWxpbmVcJ3MgY3VycmVu
dFRpbWUgb24gdGhlIGZpcnN0IHBhaW50IHRpY2sgJyArCisgICAgICAnYWZ0ZXIgYW5pbWF0aW9u
IGNyZWF0aW9uJyk7CisKKyAgICBhbmltYXRpb24uY3VycmVudFRpbWUgPSAxMDAgKiBNU19QRVJf
U0VDOworICAgIHJldHVybiBldmVudFdhdGNoZXIud2FpdF9mb3IoJ2FuaW1hdGlvbnN0YXJ0Jyk7
CisgIH0pLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gMjAw
ICogTVNfUEVSX1NFQzsKKyAgICByZXR1cm4gZXZlbnRXYXRjaGVyLndhaXRfZm9yKCdhbmltYXRp
b25lbmQnKTsKKyAgfSk7Cit9LCAnU2tpcHBpbmcgZm9yd2FyZCB0aHJvdWdoIGFuaW1hdGlvbicp
OworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsn
Y2xhc3MnOiAnYW5pbWF0ZWQtZGl2J30pOworICB2YXIgZXZlbnRXYXRjaGVyID0gbmV3IEV2ZW50
V2F0Y2hlcih0LCBkaXYsIENTU19BTklNX0VWRU5UUyk7CisgIGRpdi5zdHlsZS5hbmltYXRpb24g
PSAiYW5pbSAxMDBzIDEwMHMiOworICB2YXIgYW5pbWF0aW9uID0gZGl2LmdldEFuaW1hdGlvbnMo
KVswXTsKKyAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gMjAwICogTVNfUEVSX1NFQzsKKyAgdmFy
IHByZXZpb3VzVGltZWxpbmVUaW1lID0gYW5pbWF0aW9uLnRpbWVsaW5lLmN1cnJlbnRUaW1lOwor
CisgIHJldHVybiBldmVudFdhdGNoZXIud2FpdF9mb3IoWydhbmltYXRpb25zdGFydCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmltYXRpb25lbmQnXSkudGhlbihmdW5jdGlv
bigpIHsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC50aW1lbGluZS5jdXJyZW50VGltZSAtIHBy
ZXZpb3VzVGltZWxpbmVUaW1lIDwKKyAgICAgICAgICAgICAgICAxMDAgKiBNU19QRVJfU0VDLAor
ICAgICAgICAgICAgICAgICdTYW5pdHkgY2hlY2sgdGhhdCBzZWVraW5nIHdvcmtlZCByYXRoZXIg
dGhhbiB0aGUgZXZlbnRzICcgKworICAgICAgICAgICAgICAgICdmaXJpbmcgYWZ0ZXIgbm9ybWFs
IHBsYXliYWNrIHRocm91Z2ggdGhlIHZlcnkgbG9uZyAnICsKKyAgICAgICAgICAgICAgICAnYW5p
bWF0aW9uIGR1cmF0aW9uJyk7CisKKyAgICBhbmltYXRpb24uY3VycmVudFRpbWUgPSAxNTAgKiBN
U19QRVJfU0VDOworICAgIHJldHVybiBldmVudFdhdGNoZXIud2FpdF9mb3IoJ2FuaW1hdGlvbnN0
YXJ0Jyk7CisgIH0pLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYW5pbWF0aW9uLmN1cnJlbnRUaW1l
ID0gMDsKKyAgICByZXR1cm4gZXZlbnRXYXRjaGVyLndhaXRfZm9yKCdhbmltYXRpb25lbmQnKTsK
KyAgfSk7Cit9LCAnU2tpcHBpbmcgYmFja3dhcmRzIHRocm91Z2ggYW5pbWF0aW9uJyk7CisKKy8v
IE5leHQgd2UgaGF2ZSBtdWx0aXBsZSB0ZXN0cyB0byBjaGVjayB0aGF0IHJlZHVuZGFudCBjdXJy
ZW50VGltZSBjaGFuZ2VzIGRvCisvLyBOT1QgZGlzcGF0Y2ggZXZlbnRzLiBJdCdzIGltcG9zc2li
bGUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBldmVudHMgbm90IGJlaW5nCisvLyBkaXNwYXRjaGVk
IGFuZCBldmVudHMganVzdCB0YWtpbmcgYW4gaW5jcmVkaWJseSBsb25nIHRpbWUgdG8gZGlzcGF0
Y2gKKy8vIHdpdGhvdXQgd2FpdGluZyBhbiBpbmZpbml0ZWx5IGxvbmcgdGltZS4gT2J2aW91c2x5
IHdlIGRvbid0IHdhbnQgdG8gZG8gdGhhdAorLy8gKGJsb2NrIHRoaXMgdGVzdCBmcm9tIGZpbmlz
aGluZyBmb3JldmVyKSwgc28gaW5zdGVhZCB3ZSBqdXN0IGxpc3RlbiBmb3IKKy8vIGV2ZW50cyB1
bnRpbCB0d28gYW5pbWF0aW9uIGZyYW1lcyAoaS5lLiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgY2Fs
bGJhY2tzKQorLy8gaGF2ZSBoYXBwZW5lZCwgdGhlbiBhc3N1bWUgdGhhdCBubyBldmVudHMgd2ls
bCBldmVyIGJlIGRpc3BhdGNoZWQgZm9yIHRoZQorLy8gcmVkdW5kYW50IGNoYW5nZXMgaWYgbm8g
ZXZlbnRzIHdlcmUgZGV0ZWN0ZWQgaW4gdGhhdCB0aW1lLgorCitwcm9taXNlX3Rlc3QoZnVuY3Rp
b24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsnY2xhc3MnOiAnYW5pbWF0ZWQtZGl2J30p
OworICB2YXIgZXZlbnRXYXRjaGVyID0gbmV3IEV2ZW50V2F0Y2hlcih0LCBkaXYsIENTU19BTklN
X0VWRU5UUyk7CisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAiYW5pbSAxMDBzIDEwMHMiOworICB2
YXIgYW5pbWF0aW9uID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKworICBhbmltYXRpb24uY3Vy
cmVudFRpbWUgPSAxNTAgKiBNU19QRVJfU0VDOworICBhbmltYXRpb24uY3VycmVudFRpbWUgPSA1
MCAqIE1TX1BFUl9TRUM7CisKKyAgcmV0dXJuIHdhaXRGb3JBbmltYXRpb25GcmFtZXMoMik7Cit9
LCAnUmVkdW5kYW50IGNoYW5nZSwgYmVmb3JlIC0+IGFjdGl2ZSwgdGhlbiBiYWNrJyk7CisKK3By
b21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeydjbGFzcyc6
ICdhbmltYXRlZC1kaXYnfSk7CisgIHZhciBldmVudFdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVy
KHQsIGRpdiwgQ1NTX0FOSU1fRVZFTlRTKTsKKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICJhbmlt
IDEwMHMgMTAwcyI7CisgIHZhciBhbmltYXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOwor
CisgIGFuaW1hdGlvbi5jdXJyZW50VGltZSA9IDI1MCAqIE1TX1BFUl9TRUM7CisgIGFuaW1hdGlv
bi5jdXJyZW50VGltZSA9IDUwICogTVNfUEVSX1NFQzsKKworICByZXR1cm4gd2FpdEZvckFuaW1h
dGlvbkZyYW1lcygyKTsKK30sICdSZWR1bmRhbnQgY2hhbmdlLCBiZWZvcmUgLT4gYWZ0ZXIsIHRo
ZW4gYmFjaycpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRk
RGl2KHQsIHsnY2xhc3MnOiAnYW5pbWF0ZWQtZGl2J30pOworICB2YXIgZXZlbnRXYXRjaGVyID0g
bmV3IEV2ZW50V2F0Y2hlcih0LCBkaXYsIENTU19BTklNX0VWRU5UUyk7CisgIGRpdi5zdHlsZS5h
bmltYXRpb24gPSAiYW5pbSAxMDBzIDEwMHMiOworICB2YXIgYW5pbWF0aW9uID0gZGl2LmdldEFu
aW1hdGlvbnMoKVswXTsKKworICB2YXIgcmV0UHJvbWlzZSA9IGV2ZW50V2F0Y2hlci53YWl0X2Zv
cignYW5pbWF0aW9uc3RhcnQnKS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGFuaW1hdGlvbi5jdXJy
ZW50VGltZSA9IDUwICogTVNfUEVSX1NFQzsKKyAgICBhbmltYXRpb24uY3VycmVudFRpbWUgPSAx
NTAgKiBNU19QRVJfU0VDOworCisgICAgcmV0dXJuIHdhaXRGb3JBbmltYXRpb25GcmFtZXMoMik7
CisgIH0pOworICAvLyBnZXQgdXMgaW50byB0aGUgaW5pdGlhbCBzdGF0ZToKKyAgYW5pbWF0aW9u
LmN1cnJlbnRUaW1lID0gMTUwICogTVNfUEVSX1NFQzsKKworICByZXR1cm4gcmV0UHJvbWlzZTsK
K30sICdSZWR1bmRhbnQgY2hhbmdlLCBhY3RpdmUgLT4gYmVmb3JlLCB0aGVuIGJhY2snKTsKKwor
cHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7J2NsYXNz
JzogJ2FuaW1hdGVkLWRpdid9KTsKKyAgdmFyIGV2ZW50V2F0Y2hlciA9IG5ldyBFdmVudFdhdGNo
ZXIodCwgZGl2LCBDU1NfQU5JTV9FVkVOVFMpOworICBkaXYuc3R5bGUuYW5pbWF0aW9uID0gImFu
aW0gMTAwcyAxMDBzIjsKKyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07
CisKKyAgdmFyIHJldFByb21pc2UgPSBldmVudFdhdGNoZXIud2FpdF9mb3IoJ2FuaW1hdGlvbnN0
YXJ0JykudGhlbihmdW5jdGlvbigpIHsKKyAgICBhbmltYXRpb24uY3VycmVudFRpbWUgPSAyNTAg
KiBNU19QRVJfU0VDOworICAgIGFuaW1hdGlvbi5jdXJyZW50VGltZSA9IDE1MCAqIE1TX1BFUl9T
RUM7CisKKyAgICByZXR1cm4gd2FpdEZvckFuaW1hdGlvbkZyYW1lcygyKTsKKyAgfSk7CisgIC8v
IGdldCB1cyBpbnRvIHRoZSBpbml0aWFsIHN0YXRlOgorICBhbmltYXRpb24uY3VycmVudFRpbWUg
PSAxNTAgKiBNU19QRVJfU0VDOworCisgIHJldHVybiByZXRQcm9taXNlOworfSwgJ1JlZHVuZGFu
dCBjaGFuZ2UsIGFjdGl2ZSAtPiBhZnRlciwgdGhlbiBiYWNrJyk7CisKK3Byb21pc2VfdGVzdChm
dW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeydjbGFzcyc6ICdhbmltYXRlZC1k
aXYnfSk7CisgIHZhciBldmVudFdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVyKHQsIGRpdiwgQ1NT
X0FOSU1fRVZFTlRTKTsKKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICJhbmltIDEwMHMgMTAwcyI7
CisgIHZhciBhbmltYXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworCisgIHZhciByZXRQ
cm9taXNlID0gIGV2ZW50V2F0Y2hlci53YWl0X2ZvcihbJ2FuaW1hdGlvbnN0YXJ0JywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5pbWF0aW9uZW5kJ10pLnRo
ZW4oZnVuY3Rpb24oKSB7CisgICAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gNTAgKiBNU19QRVJf
U0VDOworICAgIGFuaW1hdGlvbi5jdXJyZW50VGltZSA9IDI1MCAqIE1TX1BFUl9TRUM7CisKKyAg
ICByZXR1cm4gd2FpdEZvckFuaW1hdGlvbkZyYW1lcygyKTsKKyAgfSk7CisgIC8vIGdldCB1cyBp
bnRvIHRoZSBpbml0aWFsIHN0YXRlOgorICBhbmltYXRpb24uY3VycmVudFRpbWUgPSAyNTAgKiBN
U19QRVJfU0VDOworCisgIHJldHVybiByZXRQcm9taXNlOworfSwgJ1JlZHVuZGFudCBjaGFuZ2Us
IGFmdGVyIC0+IGJlZm9yZSwgdGhlbiBiYWNrJyk7CisKK3Byb21pc2VfdGVzdChmdW5jdGlvbih0
KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeydjbGFzcyc6ICdhbmltYXRlZC1kaXYnfSk7Cisg
IHZhciBldmVudFdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVyKHQsIGRpdiwgQ1NTX0FOSU1fRVZF
TlRTKTsKKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICJhbmltIDEwMHMgMTAwcyI7CisgIHZhciBh
bmltYXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworCisgIHZhciByZXRQcm9taXNlID0g
IGV2ZW50V2F0Y2hlci53YWl0X2ZvcihbJ2FuaW1hdGlvbnN0YXJ0JywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5pbWF0aW9uZW5kJ10pLnRoZW4oZnVuY3Rp
b24oKSB7CisgICAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gMTUwICogTVNfUEVSX1NFQzsKKyAg
ICBhbmltYXRpb24uY3VycmVudFRpbWUgPSAyNTAgKiBNU19QRVJfU0VDOworCisgICAgcmV0dXJu
IHdhaXRGb3JBbmltYXRpb25GcmFtZXMoMik7CisgIH0pOworICAvLyBnZXQgdXMgaW50byB0aGUg
aW5pdGlhbCBzdGF0ZToKKyAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gMjUwICogTVNfUEVSX1NF
QzsKKworICByZXR1cm4gcmV0UHJvbWlzZTsKK30sICdSZWR1bmRhbnQgY2hhbmdlLCBhZnRlciAt
PiBhY3RpdmUsIHRoZW4gYmFjaycpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICB2
YXIgZGl2ID0gYWRkRGl2KHQsIHsnY2xhc3MnOiAnYW5pbWF0ZWQtZGl2J30pOworICB2YXIgZXZl
bnRXYXRjaGVyID0gbmV3IEV2ZW50V2F0Y2hlcih0LCBkaXYsIENTU19BTklNX0VWRU5UUyk7Cisg
IGRpdi5zdHlsZS5hbmltYXRpb24gPSAiYW5pbSAxMDBzIgorICB2YXIgYW5pbWF0aW9uID0gZGl2
LmdldEFuaW1hdGlvbnMoKVswXTsKKworICBhbmltYXRpb24ucGF1c2UoKTsKKyAgYW5pbWF0aW9u
LmN1cnJlbnRUaW1lID0gMTUwICogTVNfUEVSX1NFQzsKKworICByZXR1cm4gZXZlbnRXYXRjaGVy
LndhaXRfZm9yKFsnYW5pbWF0aW9uc3RhcnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnYW5pbWF0aW9uZW5kJ10pLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYW5pbWF0aW9uLmN1
cnJlbnRUaW1lID0gNTAgKiBNU19QRVJfU0VDOworICAgIHJldHVybiBldmVudFdhdGNoZXIud2Fp
dF9mb3IoJ2FuaW1hdGlvbnN0YXJ0Jyk7CisgIH0pOworfSwgJ1NlZWtpbmcgZmluaXNoZWQgLT4g
cGF1c2VkIGRpc3BhdGNoZXMgYW5pbWF0aW9uc3RhcnQnKTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0
aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7J2NsYXNzJzogJ2FuaW1hdGVkLWRpdid9
KTsKKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICJhbmltIDEwMHMiOworCisgIHZhciBhbmltYXRp
b24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworCisgIHJldHVybiBhbmltYXRpb24ucmVhZHku
dGhlbihmdW5jdGlvbigpIHsKKyAgICB2YXIgZXhjZXB0aW9uOworICAgIHRyeSB7CisgICAgICBh
bmltYXRpb24uY3VycmVudFRpbWUgPSBudWxsOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGV4
Y2VwdGlvbiA9IGU7CisgICAgfQorICAgIGFzc2VydF9lcXVhbHMoZXhjZXB0aW9uLm5hbWUsICdU
eXBlRXJyb3InLAorICAgICAgJ0V4cGVjdCBUeXBlRXJyb3IgZXhjZXB0aW9uIG9uIHRyeWluZyB0
byBzZXQgJyArCisgICAgICAnQW5pbWF0aW9uLmN1cnJlbnRUaW1lIHRvIG51bGwnKTsKKyAgfSk7
Cit9LCAnU2V0dGluZyBjdXJyZW50VGltZSB0byBudWxsJyk7CisKK3Byb21pc2VfdGVzdChmdW5j
dGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeydjbGFzcyc6ICdhbmltYXRlZC1kaXYn
fSk7CisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAnYW5pbSAxMDBzJzsKKworICB2YXIgYW5pbWF0
aW9uID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKyAgdmFyIHBhdXNlVGltZTsKKworICByZXR1
cm4gYW5pbWF0aW9uLnJlYWR5LnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X25vdF9lcXVh
bHMoYW5pbWF0aW9uLmN1cnJlbnRUaW1lLCBudWxsLAorICAgICAgJ0FuaW1hdGlvbi5jdXJyZW50
VGltZSBub3QgbnVsbCBvbiByZWFkeSBQcm9taXNlIHJlc29sdmUnKTsKKyAgICBhbmltYXRpb24u
cGF1c2UoKTsKKyAgICByZXR1cm4gYW5pbWF0aW9uLnJlYWR5OworICB9KS50aGVuKGZ1bmN0aW9u
KCkgeworICAgIHBhdXNlVGltZSA9IGFuaW1hdGlvbi5jdXJyZW50VGltZTsKKyAgICByZXR1cm4g
d2FpdEZvckZyYW1lKCk7CisgIH0pLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X2VxdWFs
cyhhbmltYXRpb24uY3VycmVudFRpbWUsIHBhdXNlVGltZSwKKyAgICAgICdBbmltYXRpb24uY3Vy
cmVudFRpbWUgaXMgdW5jaGFuZ2VkIGFmdGVyIHBhdXNpbmcnKTsKKyAgfSk7Cit9LCAnQW5pbWF0
aW9uLmN1cnJlbnRUaW1lIGFmdGVyIHBhdXNpbmcnKTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9u
KHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7J2NsYXNzJzogJ2FuaW1hdGVkLWRpdid9KTsK
KyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICJhbmltIDEwMHMiOworICB2YXIgYW5pbWF0aW9uID0g
ZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKworICByZXR1cm4gYW5pbWF0aW9uLnJlYWR5LnRoZW4o
ZnVuY3Rpb24oKSB7CisgICAgLy8ganVzdCBiZWZvcmUgYW5pbWF0aW9uIGVuZHM6CisgICAgYW5p
bWF0aW9uLmN1cnJlbnRUaW1lID0gMTAwICogTVNfUEVSX1NFQyAtIDE7CisgICAgcmV0dXJuIHdh
aXRGb3JBbmltYXRpb25GcmFtZXMoMik7CisgIH0pLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYXNz
ZXJ0X2VxdWFscyhhbmltYXRpb24uY3VycmVudFRpbWUsIDEwMCAqIE1TX1BFUl9TRUMsCisgICAg
ICAnQW5pbWF0aW9uLmN1cnJlbnRUaW1lIHNob3VsZCBub3QgY29udGludWUgdG8gaW5jcmVhc2Ug
YWZ0ZXIgdGhlICcgKworICAgICAgJ2FuaW1hdGlvbiBoYXMgZmluaXNoZWQnKTsKKyAgfSk7Cit9
LCAnQW5pbWF0aW9uLmN1cnJlbnRUaW1lIGNsYW1waW5nJyk7CisKK3Byb21pc2VfdGVzdChmdW5j
dGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeydjbGFzcyc6ICdhbmltYXRlZC1kaXYn
fSk7CisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAiYW5pbSAxMDBzIjsKKyAgdmFyIGFuaW1hdGlv
biA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisKKyAgcmV0dXJuIGFuaW1hdGlvbi5yZWFkeS50
aGVuKGZ1bmN0aW9uKCkgeworICAgIC8vIHBsYXkgYmFja3dhcmRzOgorICAgIGFuaW1hdGlvbi5w
bGF5YmFja1JhdGUgPSAtMTsKKworICAgIC8vIGp1c3QgYmVmb3JlIGFuaW1hdGlvbiBlbmRzIChh
dCB0aGUgInN0YXJ0Iik6CisgICAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gMTsKKworICAgIHJl
dHVybiB3YWl0Rm9yQW5pbWF0aW9uRnJhbWVzKDIpOworICB9KS50aGVuKGZ1bmN0aW9uKCkgewor
ICAgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uLmN1cnJlbnRUaW1lLCAwLAorICAgICAgJ0FuaW1h
dGlvbi5jdXJyZW50VGltZSBzaG91bGQgbm90IGNvbnRpbnVlIHRvIGRlY3JlYXNlIGFmdGVyIGFu
ICcgKworICAgICAgJ2FuaW1hdGlvbiBydW5uaW5nIGluIHJldmVyc2UgaGFzIGZpbmlzaGVkIGFu
ZCBjdXJyZW50VGltZSBpcyB6ZXJvJyk7CisgIH0pOworfSwgJ0FuaW1hdGlvbi5jdXJyZW50VGlt
ZSBjbGFtcGluZyBmb3IgcmV2ZXJzZWQgYW5pbWF0aW9uJyk7CisKK3Rlc3QoZnVuY3Rpb24odCkg
eworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsnY2xhc3MnOiAnYW5pbWF0ZWQtZGl2J30pOworICBk
aXYuc3R5bGUuYW5pbWF0aW9uID0gJ2FuaW0gMTAwcyc7CisgIHZhciBhbmltYXRpb24gPSBkaXYu
Z2V0QW5pbWF0aW9ucygpWzBdOworICBhbmltYXRpb24uY2FuY2VsKCk7CisKKyAgYXNzZXJ0X2Vx
dWFscyhhbmltYXRpb24uY3VycmVudFRpbWUsIG51bGwsCisgICAgICAgICAgICAgICAgJ1RoZSBj
dXJyZW50VGltZSBvZiBhIGNhbmNlbGxlZCBhbmltYXRpb24gc2hvdWxkIGJlIG51bGwnKTsKK30s
ICdBbmltYXRpb24uY3VycmVudFRpbWUgYWZ0ZXIgY2FuY2VsbGluZycpOworCitwcm9taXNlX3Rl
c3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsnY2xhc3MnOiAnYW5pbWF0
ZWQtZGl2J30pOworICBkaXYuc3R5bGUuYW5pbWF0aW9uID0gJ2FuaW0gMTAwcyc7CisgIHZhciBh
bmltYXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworCisgIHJldHVybiBhbmltYXRpb24u
cmVhZHkudGhlbihmdW5jdGlvbigpIHsKKyAgICBhbmltYXRpb24uZmluaXNoKCk7CisKKyAgICAv
LyBJbml0aWF0ZSBhIHBhdXNlIHRoZW4gYWJvcnQgaXQKKyAgICBhbmltYXRpb24ucGF1c2UoKTsK
KyAgICBhbmltYXRpb24ucGxheSgpOworCisgICAgLy8gV2FpdCB0byByZXR1cm4gdG8gcnVubmlu
ZyBzdGF0ZQorICAgIHJldHVybiBhbmltYXRpb24ucmVhZHk7CisgIH0pLnRoZW4oZnVuY3Rpb24o
KSB7CisgICAgYXNzZXJ0X3RydWUoYW5pbWF0aW9uLmN1cnJlbnRUaW1lIDwgMTAwICogMTAwMCwK
KyAgICAgICAgICAgICAgICAnQWZ0ZXIgYWJvcnRpbmcgYSBwYXVzZSB3aGVuIGZpbmlzaGVkLCB0
aGUgY3VycmVudFRpbWUgc2hvdWxkJworICAgICAgICAgICAgICAgICsgJyBqdW1wIGJhY2sgdG93
YXJkcyB0aGUgc3RhcnQgb2YgdGhlIGFuaW1hdGlvbicpOworICB9KTsKK30sICdBZnRlciBhYm9y
dGluZyBhIHBhdXNlIHdoZW4gZmluaXNoZWQsIHRoZSBjYWxsIHRvIHBsYXkoKSBzaG91bGQgcmV3
aW5kJworICAgKyAnIHRoZSBjdXJyZW50IHRpbWUnKTsKKworICAgIDwvc2NyaXB0PgorICA8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nz
cy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLWZpbmlzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLWZpbmlz
aC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY3ODAxMDU1ODFkMmY2N2UxNjVhZDY2MmJhZDk1
MjY4YmEwZTUwNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tZmluaXNoLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDYgQEAKKworRkFJTCBUZXN0IGV4Y2VwdGlvbnMgd2hlbiBmaW5pc2hpbmcgaW5maW5p
dGUgYW5pbWF0aW9uIGFzc2VydF90cnVlOiBFeHBlY3QgSW52YWxpZFN0YXRlRXJyb3IgZXhjZXB0
aW9uIHRyeWluZyB0byBmaW5pc2ggYW4gaW5maW5pdGUgYW5pbWF0aW9uIGV4cGVjdGVkIHRydWUg
Z290IGZhbHNlCitGQUlMIFRlc3QgZmluaXNoKCkgd2hpbGUgcGF1c2VkIHVuZGVmaW5lZCBpcyBu
b3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdhbmltYXRpb24ucmVhZHknKQorRkFJTCBUZXN0IGZp
bmlzaCgpIHdoaWxlIHBhdXNlLXBlbmRpbmcgd2l0aCBwb3NpdGl2ZSBwbGF5YmFja1JhdGUgdW5k
ZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2FuaW1hdGlvbi5wbGF5YmFja1Jh
dGUgPSAyJykKK0ZBSUwgVGVzdCBmaW5pc2goKSB3aGlsZSBwYXVzZS1wZW5kaW5nIHdpdGggbmVn
YXRpdmUgcGxheWJhY2tSYXRlIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5n
ICdhbmltYXRpb24ucGxheWJhY2tSYXRlID0gLTInKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLWZpbmlzaC5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2Fu
aW1hdGlvbi1maW5pc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTBlZWY0ODg2ZjJhMGVmNjk3YjNhZjkz
YjQ0Zjg1MzgyNzkwMTNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2FuaW1hdGlvbi1maW5pc2guaHRtbApAQCAtMCww
ICsxLDk3IEBACis8IWRvY3R5cGUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJs
ZUNTU0FuaW1hdGlvbnNBbmRDU1NUcmFuc2l0aW9uc0JhY2tlZEJ5V2ViQW5pbWF0aW9ucz10cnVl
IF0gLS0+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvdGVzdGNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CitAa2V5ZnJhbWVzIGFu
aW0geworICBmcm9tIHsgbWFyZ2luLWxlZnQ6IDEwMHB4OyB9CisgIHRvIHsgbWFyZ2luLWxlZnQ6
IDIwMHB4OyB9Cit9Cis8L3N0eWxlPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNj
cmlwdD4KKworJ3VzZSBzdHJpY3QnOworCitjb25zdCBBTklNX1BST1BfVkFMID0gJ2FuaW0gMTAw
cyc7Citjb25zdCBBTklNX0RVUkFUSU9OID0gMTAwMDAwOyAvLyBtcworCit0ZXN0KGZ1bmN0aW9u
KHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0KTsKKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9IEFO
SU1fUFJPUF9WQUw7CisgIGRpdi5zdHlsZS5hbmltYXRpb25JdGVyYXRpb25Db3VudCA9ICdpbmZp
bml0ZSc7CisgIHZhciBhbmltYXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworCisgIHZh
ciB0aHJldyA9IGZhbHNlOworICB0cnkgeworICAgIGFuaW1hdGlvbi5maW5pc2goKTsKKyAgfSBj
YXRjaCAoZSkgeworICAgIHRocmV3ID0gdHJ1ZTsKKyAgICBhc3NlcnRfZXF1YWxzKGUubmFtZSwg
J0ludmFsaWRTdGF0ZUVycm9yJywKKyAgICAgICAgICAgICAgICAgICdFeGNlcHRpb24gc2hvdWxk
IGJlIGFuIEludmFsaWRTdGF0ZUVycm9yIGV4Y2VwdGlvbiB3aGVuICcgKworICAgICAgICAgICAg
ICAgICAgJ3RyeWluZyB0byBmaW5pc2ggYW4gaW5maW5pdGUgYW5pbWF0aW9uJyk7CisgIH0KKyAg
YXNzZXJ0X3RydWUodGhyZXcsCisgICAgICAgICAgICAgICdFeHBlY3QgSW52YWxpZFN0YXRlRXJy
b3IgZXhjZXB0aW9uIHRyeWluZyB0byBmaW5pc2ggYW4gJyArCisgICAgICAgICAgICAgICdpbmZp
bml0ZSBhbmltYXRpb24nKTsKK30sICdUZXN0IGV4Y2VwdGlvbnMgd2hlbiBmaW5pc2hpbmcgaW5m
aW5pdGUgYW5pbWF0aW9uJyk7CisKK2FzeW5jX3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2
ID0gYWRkRGl2KHQpOworICBkaXYuc3R5bGUuYW5pbWF0aW9uID0gQU5JTV9QUk9QX1ZBTCArICcg
cGF1c2VkJzsKKyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisKKyAg
YW5pbWF0aW9uLnJlYWR5LnRoZW4odC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgYW5pbWF0
aW9uLmZpbmlzaCgpOworICAgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uLnBsYXlTdGF0ZSwgJ2Zp
bmlzaGVkJywKKyAgICAgICAgICAgICAgICAgICdUaGUgcGxheSBzdGF0ZSBvZiBhIHBhdXNlZCBh
bmltYXRpb24gc2hvdWxkIGJlY29tZSAnICsKKyAgICAgICAgICAgICAgICAgICciZmluaXNoZWQi
IGFmdGVyIGZpbmlzaCgpIGlzIGNhbGxlZCcpOworICAgIGFzc2VydF90aW1lc19lcXVhbChhbmlt
YXRpb24uc3RhcnRUaW1lLAorICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24udGltZWxp
bmUuY3VycmVudFRpbWUgLSBBTklNX0RVUkFUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAn
VGhlIHN0YXJ0IHRpbWUgb2YgYSBwYXVzZWQgYW5pbWF0aW9uIHNob3VsZCBiZSBzZXQgJyArCisg
ICAgICAgICAgICAgICAgICAgICAgICdhZnRlciBjYWxsaW5nIGZpbmlzaCgpJyk7CisgICAgdC5k
b25lKCk7CisgIH0pKTsKK30sICdUZXN0IGZpbmlzaCgpIHdoaWxlIHBhdXNlZCcpOworCit0ZXN0
KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0KTsKKyAgZGl2LnN0eWxlLmFuaW1h
dGlvbiA9IEFOSU1fUFJPUF9WQUwgKyAnIHBhdXNlZCc7CisgIHZhciBhbmltYXRpb24gPSBkaXYu
Z2V0QW5pbWF0aW9ucygpWzBdOworCisgIC8vIFVwZGF0ZSBwbGF5YmFja1JhdGUgc28gd2UgY2Fu
IHRlc3QgdGhhdCB0aGUgY2FsY3VsYXRlZCBzdGFydFRpbWUKKyAgLy8gcmVzcGVjdHMgaXQKKyAg
YW5pbWF0aW9uLnBsYXliYWNrUmF0ZSA9IDI7CisKKyAgLy8gV2hpbGUgYW5pbWF0aW9uIGlzIHN0
aWxsIHBhdXNlLXBlbmRpbmcgY2FsbCBmaW5pc2goKQorICBhbmltYXRpb24uZmluaXNoKCk7CisK
KyAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb24ucGxheVN0YXRlLCAnZmluaXNoZWQnLAorICAgICAg
ICAgICAgICAgICdUaGUgcGxheSBzdGF0ZSBvZiBhIHBhdXNlLXBlbmRpbmcgYW5pbWF0aW9uIHNo
b3VsZCBiZWNvbWUgJyArCisgICAgICAgICAgICAgICAgJyJmaW5pc2hlZCIgYWZ0ZXIgZmluaXNo
KCkgaXMgY2FsbGVkJyk7CisgIGFzc2VydF90aW1lc19lcXVhbChhbmltYXRpb24uc3RhcnRUaW1l
LAorICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLnRpbWVsaW5lLmN1cnJlbnRUaW1lIC0g
QU5JTV9EVVJBVElPTiAvIDIsCisgICAgICAgICAgICAgICAgICAgICAnVGhlIHN0YXJ0IHRpbWUg
b2YgYSBwYXVzZS1wZW5kaW5nIGFuaW1hdGlvbiBzaG91bGQgJyArCisgICAgICAgICAgICAgICAg
ICAgICAnYmUgc2V0IGFmdGVyIGNhbGxpbmcgZmluaXNoKCknKTsKK30sICdUZXN0IGZpbmlzaCgp
IHdoaWxlIHBhdXNlLXBlbmRpbmcgd2l0aCBwb3NpdGl2ZSBwbGF5YmFja1JhdGUnKTsKKwordGVz
dChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCk7CisgIGRpdi5zdHlsZS5hbmlt
YXRpb24gPSBBTklNX1BST1BfVkFMICsgJyBwYXVzZWQnOworICB2YXIgYW5pbWF0aW9uID0gZGl2
LmdldEFuaW1hdGlvbnMoKVswXTsKKworICBhbmltYXRpb24ucGxheWJhY2tSYXRlID0gLTI7Cisg
IGFuaW1hdGlvbi5maW5pc2goKTsKKworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbi5wbGF5U3Rh
dGUsICdmaW5pc2hlZCcsCisgICAgICAgICAgICAgICAgJ1RoZSBwbGF5IHN0YXRlIG9mIGEgcGF1
c2UtcGVuZGluZyBhbmltYXRpb24gc2hvdWxkIGJlY29tZSAnICsKKyAgICAgICAgICAgICAgICAn
ImZpbmlzaGVkIiBhZnRlciBmaW5pc2goKSBpcyBjYWxsZWQnKTsKKyAgYXNzZXJ0X2VxdWFscyhh
bmltYXRpb24uc3RhcnRUaW1lLCBhbmltYXRpb24udGltZWxpbmUuY3VycmVudFRpbWUsCisgICAg
ICAgICAgICAgICAgJ1RoZSBzdGFydCB0aW1lIG9mIGEgcGF1c2UtcGVuZGluZyBhbmltYXRpb24g
c2hvdWxkIGJlICcgKworICAgICAgICAgICAgICAgICdzZXQgYWZ0ZXIgY2FsbGluZyBmaW5pc2go
KScpOworfSwgJ1Rlc3QgZmluaXNoKCkgd2hpbGUgcGF1c2UtcGVuZGluZyB3aXRoIG5lZ2F0aXZl
IHBsYXliYWNrUmF0ZScpOworCis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tZmlu
aXNoZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5p
bWF0aW9ucy90ZXN0X2FuaW1hdGlvbi1maW5pc2hlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmZjMTMzZGFiYTI1MmM5MmM1M2I1ZjY0MmM3MTM0NmFmMWU2ZmVlMwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmlt
YXRpb24tZmluaXNoZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorI1BJRCBVTlJFU1BP
TlNJVkUgLSBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuRGV2ZWxvcG1lbnQgKHBpZCAxMzUy
NykKK0ZBSUw6IFRpbWVkIG91dCB3YWl0aW5nIGZvciBub3RpZnlEb25lIHRvIGJlIGNhbGxlZAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25z
L3Rlc3RfYW5pbWF0aW9uLWZpbmlzaGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLWZpbmlzaGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2JhYjFhMDJjMDBmOWUwZDk0ZGFiMmI1YjE5MWE0MTBhMWQ3NGMyMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9h
bmltYXRpb24tZmluaXNoZWQuaHRtbApAQCAtMCwwICsxLDk1IEBACis8IWRvY3R5cGUgaHRtbD48
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUNTU0FuaW1hdGlvbnNBbmRDU1NUcmFuc2l0
aW9uc0JhY2tlZEJ5V2ViQW5pbWF0aW9ucz10cnVlIF0gLS0+Cis8bWV0YSBjaGFyc2V0PXV0Zi04
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGNvbW1vbi5qcyI+PC9z
Y3JpcHQ+Cis8c3R5bGU+CitAa2V5ZnJhbWVzIGFiYyB7CisgIHRvIHsgdHJhbnNmb3JtOiB0cmFu
c2xhdGUoMTBweCkgfQorfQorQGtleWZyYW1lcyBkZWYge30KKzwvc3R5bGU+Cis8Ym9keT4KKzxk
aXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOworCitjb25zdCBBTklN
X1BST1BfVkFMID0gJ2FiYyAxMDBzJzsKK2NvbnN0IEFOSU1fRFVSQVRJT04gPSAxMDAgKiBNU19Q
RVJfU0VDOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2
KHQpOworICAvLyBTZXQgdXAgcGVuZGluZyBhbmltYXRpb24KKyAgZGl2LnN0eWxlLmFuaW1hdGlv
biA9IEFOSU1fUFJPUF9WQUw7CisgIHZhciBhbmltYXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygp
WzBdOworICB2YXIgcHJldmlvdXNGaW5pc2hlZFByb21pc2UgPSBhbmltYXRpb24uZmluaXNoZWQ7
CisgIC8vIFNldCB1cCBsaXN0ZW5lcnMgb24gZmluaXNoZWQgcHJvbWlzZQorICB2YXIgcmV0UHJv
bWlzZSA9IGFuaW1hdGlvbi5maW5pc2hlZC50aGVuKGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF91
bnJlYWNoZWQoJ2ZpbmlzaGVkIHByb21pc2UgaXMgZnVsZmlsbGVkJyk7CisgIH0pLmNhdGNoKGZ1
bmN0aW9uKGVycikgeworICAgIGFzc2VydF9lcXVhbHMoZXJyLm5hbWUsICdBYm9ydEVycm9yJywK
KyAgICAgICAgICAgICAgICAgICdmaW5pc2hlZCBwcm9taXNlIGlzIHJlamVjdGVkIHdpdGggQWJv
cnRFcnJvcicpOworICAgIGFzc2VydF9ub3RfZXF1YWxzKGFuaW1hdGlvbi5maW5pc2hlZCwgcHJl
dmlvdXNGaW5pc2hlZFByb21pc2UsCisgICAgICAgICAgICAgICAgICAgICAgJ0ZpbmlzaGVkIHBy
b21pc2Ugc2hvdWxkIGNoYW5nZSBhZnRlciB0aGUgb3JpZ2luYWwgaXMgJyArCisgICAgICAgICAg
ICAgICAgICAgICAgJ3JlamVjdGVkJyk7CisgIH0pOworCisgIC8vIE5vdyBjYW5jZWwgdGhlIGFu
aW1hdGlvbiBhbmQgZmx1c2ggc3R5bGVzCisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAnJzsKKyAg
Z2V0Q29tcHV0ZWRTdHlsZShkaXYpLmFuaW1hdGlvbjsKKworICByZXR1cm4gcmV0UHJvbWlzZTsK
K30sICdmaW5pc2hlZCBwcm9taXNlIGlzIHJlamVjdGVkIHdoZW4gYW4gYW5pbWF0aW9uIGlzIGNh
bmNlbGxlZCBieSByZXNldHRpbmcgJyArCisgICAndGhlIGFuaW1hdGlvbiBwcm9wZXJ0eScpOwor
Citwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQpOworICAv
LyBBcyBiZWZvcmUsIGJ1dCB0aGlzIHRpbWUgaW5zdGVhZCBvZiByZW1vdmluZyBhbGwgYW5pbWF0
aW9ucywgc2ltcGx5IHVwZGF0ZQorICAvLyB0aGUgbGlzdCBvZiBhbmltYXRpb25zLiBBdCBsZWFz
dCBmb3IgRmlyZWZveCwgdXBkYXRpbmcgaXMgYSBkaWZmZXJlbnQKKyAgLy8gY29kZSBwYXRoLgor
CisgIC8vIFNldCB1cCBwZW5kaW5nIGFuaW1hdGlvbgorICBkaXYuc3R5bGUuYW5pbWF0aW9uID0g
QU5JTV9QUk9QX1ZBTDsKKyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07
CisgIHZhciBwcmV2aW91c0ZpbmlzaGVkUHJvbWlzZSA9IGFuaW1hdGlvbi5maW5pc2hlZDsKKwor
ICAvLyBTZXQgdXAgbGlzdGVuZXJzIG9uIGZpbmlzaGVkIHByb21pc2UKKyAgdmFyIHJldFByb21p
c2UgPSBhbmltYXRpb24uZmluaXNoZWQudGhlbihmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfdW5y
ZWFjaGVkKCdmaW5pc2hlZCBwcm9taXNlIHdhcyBmdWxmaWxsZWQnKTsKKyAgfSkuY2F0Y2goZnVu
Y3Rpb24oZXJyKSB7CisgICAgYXNzZXJ0X2VxdWFscyhlcnIubmFtZSwgJ0Fib3J0RXJyb3InLAor
ICAgICAgICAgICAgICAgICAgJ2ZpbmlzaGVkIHByb21pc2UgaXMgcmVqZWN0ZWQgd2l0aCBBYm9y
dEVycm9yJyk7CisgICAgYXNzZXJ0X25vdF9lcXVhbHMoYW5pbWF0aW9uLmZpbmlzaGVkLCBwcmV2
aW91c0ZpbmlzaGVkUHJvbWlzZSwKKyAgICAgICAgICAgICAgICAgICAgICAnRmluaXNoZWQgcHJv
bWlzZSBzaG91bGQgY2hhbmdlIGFmdGVyIHRoZSBvcmlnaW5hbCBpcyAnICsKKyAgICAgICAgICAg
ICAgICAgICAgICAncmVqZWN0ZWQnKTsKKyAgfSk7CisKKyAgLy8gTm93IHVwZGF0ZSB0aGUgYW5p
bWF0aW9uIGFuZCBmbHVzaCBzdHlsZXMKKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICdkZWYgMTAw
cyc7CisgIGdldENvbXB1dGVkU3R5bGUoZGl2KS5hbmltYXRpb247CisKKyAgcmV0dXJuIHJldFBy
b21pc2U7Cit9LCAnZmluaXNoZWQgcHJvbWlzZSBpcyByZWplY3RlZCB3aGVuIGFuIGFuaW1hdGlv
biBpcyBjYW5jZWxsZWQgYnkgY2hhbmdpbmcgJyArCisgICAndGhlIGFuaW1hdGlvbiBwcm9wZXJ0
eScpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQp
OworICBkaXYuc3R5bGUuYW5pbWF0aW9uID0gQU5JTV9QUk9QX1ZBTDsKKyAgdmFyIGFuaW1hdGlv
biA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisgIHZhciBwcmV2aW91c0ZpbmlzaGVkUHJvbWlz
ZSA9IGFuaW1hdGlvbi5maW5pc2hlZDsKKyAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gQU5JTV9E
VVJBVElPTjsKKyAgcmV0dXJuIGFuaW1hdGlvbi5maW5pc2hlZC50aGVuKGZ1bmN0aW9uKCkgewor
ICAgIGRpdi5zdHlsZS5hbmltYXRpb25QbGF5U3RhdGUgPSAncnVubmluZyc7CisgICAgcmV0dXJu
IHdhaXRGb3JBbmltYXRpb25GcmFtZXMoMik7CisgIH0pLnRoZW4oZnVuY3Rpb24oKSB7CisgICAg
YXNzZXJ0X2VxdWFscyhhbmltYXRpb24uZmluaXNoZWQsIHByZXZpb3VzRmluaXNoZWRQcm9taXNl
LAorICAgICAgICAgICAgICAgICAgJ1Nob3VsZCBub3QgcmVwbGF5IHdoZW4gYW5pbWF0aW9uLXBs
YXktc3RhdGUgY2hhbmdlcyB0byAnICsKKyAgICAgICAgICAgICAgICAgICcicnVubmluZyIgb24g
ZmluaXNoZWQgYW5pbWF0aW9uJyk7CisgICAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb24uY3VycmVu
dFRpbWUsIEFOSU1fRFVSQVRJT04sCisgICAgICAgICAgICAgICAgICAnY3VycmVudFRpbWUgc2hv
dWxkIG5vdCBjaGFuZ2Ugd2hlbiBhbmltYXRpb24tcGxheS1zdGF0ZSAnICsKKyAgICAgICAgICAg
ICAgICAgICdjaGFuZ2VzIHRvICJydW5uaW5nIiBvbiBmaW5pc2hlZCBhbmltYXRpb24nKTsKKyAg
fSk7Cit9LCAnVGVzdCBmaW5pc2hlZCBwcm9taXNlIGNoYW5nZXMgd2hlbiBhbmltYXRpb25QbGF5
U3RhdGUgc2V0IHRvIHJ1bm5pbmcnKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0
aW9uLWlkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFu
aW1hdGlvbnMvdGVzdF9hbmltYXRpb24taWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzZDM4
MDUwMTEzOTQzNDhmNjM1MWExMGM4MmM5MTYxNWYyYTNjYWEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0aW9u
LWlkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBBbmltYXRpb24uaWQgZm9y
IENTUyBBbmltYXRpb25zIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLWlkLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLWlkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTA2OTk2ZjM2MDZkOThjM2ZmNjk2YjRmNDU3NDI5MzhlYjZjNjJlNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMv
dGVzdF9hbmltYXRpb24taWQuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IWRvY3R5cGUgaHRtbD48
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUNTU0FuaW1hdGlvbnNBbmRDU1NUcmFuc2l0
aW9uc0JhY2tlZEJ5V2ViQW5pbWF0aW9ucz10cnVlIF0gLS0+Cis8bWV0YSBjaGFyc2V0PXV0Zi04
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGNvbW1vbi5qcyI+PC9z
Y3JpcHQ+Cis8c3R5bGU+CitAa2V5ZnJhbWVzIGFiYyB7IH0KKzwvc3R5bGU+Cis8Ym9keT4KKzxk
aXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOworCit0ZXN0KGZ1bmN0
aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0KTsKKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9
ICdhYmMgMTAwcyc7CisgIHZhciBhbmltYXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOwor
ICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbi5pZCwgJycsICdpZCBmb3IgQ1NTIEFuaW1hdGlvbiBp
cyBpbml0aWFsbHkgZW1wdHknKTsKKyAgYW5pbWF0aW9uLmlkID0gJ2FuaW0nCisKKyAgYXNzZXJ0
X2VxdWFscyhhbmltYXRpb24uaWQsICdhbmltJywgJ2FuaW1hdGlvbi5pZCByZWZsZWN0cyB0aGUg
dmFsdWUgc2V0Jyk7Cit9LCAnQW5pbWF0aW9uLmlkIGZvciBDU1MgQW5pbWF0aW9ucycpOworCis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tcGF1c2luZy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3Rf
YW5pbWF0aW9uLXBhdXNpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmNmZhNWIwNGRkZDg0
NzY2ZWQ5NDE0Mjg3ODZjODg4ZmIyOTVmZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLXBhdXNpbmct
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorCitGQUlMIHBsYXkoKSBvdmVycmlkZXMgYW5p
bWF0aW9uLXBsYXktc3RhdGUgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcg
J2FuaW1hdGlvbi5wbGF5JykKK0ZBSUwgcGF1c2UoKSBvdmVycmlkZXMgYW5pbWF0aW9uLXBsYXkt
c3RhdGUgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2FuaW1hdGlvbi5w
YXVzZScpCitGQUlMIHBsYXkoKSBpcyBvdmVycmlkZGVuIGJ5IGxhdGVyIHNldHRpbmcgImFuaW1h
dGlvbi1wbGF5LXN0YXRlOiBwYXVzZWQiIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFs
dWF0aW5nICdhbmltYXRpb24ucGxheScpCitGQUlMIHBsYXkoKSBmbHVzaGVzIHBlbmRpbmcgY2hh
bmdlcyB0byBhbmltYXRpb24tcGxheS1zdGF0ZSBmaXJzdCBhc3NlcnRfZ3JlYXRlcl90aGFuOiBQ
bGF5aW5nIHZhbHVlIG9mIG1hcmdpbi1sZWZ0IGlzIGluY3JlYXNpbmcgZXhwZWN0ZWQgYSBudW1i
ZXIgZ3JlYXRlciB0aGFuIDAgYnV0IGdvdCAwCitGQUlMIHBhdXNlKCkgYXBwbGllcyBwZW5kaW5n
IGNoYW5nZXMgdG8gYW5pbWF0aW9uLXBsYXktc3RhdGUgZmlyc3QgdW5kZWZpbmVkIGlzIG5vdCBh
biBvYmplY3QgKGV2YWx1YXRpbmcgJ2FuaW1hdGlvbi5wYXVzZScpCitGQUlMIFNldHRpbmcgdGhl
IGN1cnJlbnQgdGltZSBjb21wbGV0ZXMgYSBwZW5kaW5nIHBhdXNlIGFzc2VydF90cnVlOiBBbmlt
YXRpb24gaXMgcGF1c2UtcGVuZGluZyBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5p
bWF0aW9uLXBhdXNpbmcuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFu
aW1hdGlvbnMvdGVzdF9hbmltYXRpb24tcGF1c2luZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2MzM5ODA3
OTlkZTZjNjNlZDE5OWYxMjg0MjY4OTgyZTY1MTg3NzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLXBh
dXNpbmcuaHRtbApAQCAtMCwwICsxLDE2OCBAQAorPCFkb2N0eXBlIGh0bWw+PCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyBlbmFibGVDU1NBbmltYXRpb25zQW5kQ1NTVHJhbnNpdGlvbnNCYWNrZWRC
eVdlYkFuaW1hdGlvbnM9dHJ1ZSBdIC0tPgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3Rjb21tb24uanMiPjwvc2NyaXB0PgorPHN0
eWxlPgorQGtleWZyYW1lcyBhbmltIHsKKyAgMCUgeyBtYXJnaW4tbGVmdDogMHB4IH0KKyAgMTAw
JSB7IG1hcmdpbi1sZWZ0OiAxMDAwMHB4IH0KK30KKzwvc3R5bGU+Cis8Ym9keT4KKzxkaXYgaWQ9
ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOworCitmdW5jdGlvbiBnZXRNYXJn
aW5MZWZ0KGNzKSB7CisgIHJldHVybiBwYXJzZUZsb2F0KGNzLm1hcmdpbkxlZnQpOworfQorCitw
cm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQpOworICB2YXIg
Y3MgPSBnZXRDb21wdXRlZFN0eWxlKGRpdik7CisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAnYW5p
bSAxMDAwcyBwYXVzZWQnOworICB2YXIgYW5pbWF0aW9uID0gZGl2LmdldEFuaW1hdGlvbnMoKVsw
XTsKKyAgYXNzZXJ0X2VxdWFscyhnZXRNYXJnaW5MZWZ0KGNzKSwgMCwKKyAgICAgICAgICAgICAg
ICAnSW5pdGlhbCB2YWx1ZSBvZiBtYXJnaW4tbGVmdCBpcyB6ZXJvJyk7CisgIGFuaW1hdGlvbi5w
bGF5KCk7CisKKyAgcmV0dXJuIGFuaW1hdGlvbi5yZWFkeS50aGVuKHdhaXRGb3JOZXh0RnJhbWUp
LnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbihnZXRNYXJnaW5MZWZ0
KGNzKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdQbGF5aW5nIHZhbHVlIG9mIG1hcmdp
bi1sZWZ0IGlzIGdyZWF0ZXIgdGhhbiB6ZXJvJyk7CisgIH0pOworfSwgJ3BsYXkoKSBvdmVycmlk
ZXMgYW5pbWF0aW9uLXBsYXktc3RhdGUnKTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsK
KyAgdmFyIGRpdiA9IGFkZERpdih0KTsKKyAgdmFyIGNzID0gZ2V0Q29tcHV0ZWRTdHlsZShkaXYp
OworICBkaXYuc3R5bGUuYW5pbWF0aW9uID0gJ2FuaW0gMTAwMHMgcGF1c2VkJzsKKyAgdmFyIGFu
aW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisgIGFzc2VydF9lcXVhbHMoZ2V0TWFy
Z2luTGVmdChjcyksIDAsCisgICAgICAgICAgICAgICAgJ0luaXRpYWwgdmFsdWUgb2YgbWFyZ2lu
LWxlZnQgaXMgemVybycpOworCisgIGFuaW1hdGlvbi5wYXVzZSgpOworICBkaXYuc3R5bGUuYW5p
bWF0aW9uUGxheVN0YXRlID0gJ3J1bm5pbmcnOworCisgIHJldHVybiBhbmltYXRpb24ucmVhZHku
dGhlbih3YWl0Rm9yTmV4dEZyYW1lKS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9lcXVh
bHMoY3MuYW5pbWF0aW9uUGxheVN0YXRlLCAncnVubmluZycsCisgICAgICAgICAgICAgICAgICAn
YW5pbWF0aW9uLXBsYXktc3RhdGUgaXMgcnVubmluZycpOworICAgIGFzc2VydF9lcXVhbHMoZ2V0
TWFyZ2luTGVmdChjcyksIDAsCisgICAgICAgICAgICAgICAgICAnUGF1c2VkIHZhbHVlIG9mIG1h
cmdpbi1sZWZ0IGlzIHplcm8nKTsKKyAgfSk7Cit9LCAncGF1c2UoKSBvdmVycmlkZXMgYW5pbWF0
aW9uLXBsYXktc3RhdGUnKTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRp
diA9IGFkZERpdih0KTsKKyAgdmFyIGNzID0gZ2V0Q29tcHV0ZWRTdHlsZShkaXYpOworICBkaXYu
c3R5bGUuYW5pbWF0aW9uID0gJ2FuaW0gMTAwMHMgcGF1c2VkJzsKKyAgdmFyIGFuaW1hdGlvbiA9
IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisgIGFzc2VydF9lcXVhbHMoZ2V0TWFyZ2luTGVmdChj
cyksIDAsCisgICAgICAgICAgICAgICAgJ0luaXRpYWwgdmFsdWUgb2YgbWFyZ2luLWxlZnQgaXMg
emVybycpOworICBhbmltYXRpb24ucGxheSgpOworICB2YXIgcHJldmlvdXNBbmltVmFsOworCisg
IHJldHVybiBhbmltYXRpb24ucmVhZHkudGhlbihmdW5jdGlvbigpIHsKKyAgICBkaXYuc3R5bGUu
YW5pbWF0aW9uUGxheVN0YXRlID0gJ3J1bm5pbmcnOworICAgIGNzLmFuaW1hdGlvblBsYXlTdGF0
ZTsgLy8gVHJpZ2dlciBzdHlsZSByZXNvbHV0aW9uCisgICAgcmV0dXJuIHdhaXRGb3JOZXh0RnJh
bWUoKTsKKyAgfSkudGhlbihmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfZXF1YWxzKGNzLmFuaW1h
dGlvblBsYXlTdGF0ZSwgJ3J1bm5pbmcnLAorICAgICAgICAgICAgICAgICAgJ2FuaW1hdGlvbi1w
bGF5LXN0YXRlIGlzIHJ1bm5pbmcnKTsKKyAgICBkaXYuc3R5bGUuYW5pbWF0aW9uUGxheVN0YXRl
ID0gJ3BhdXNlZCc7CisgICAgcmV0dXJuIGFuaW1hdGlvbi5yZWFkeTsKKyAgfSkudGhlbihmdW5j
dGlvbigpIHsKKyAgICBhc3NlcnRfZXF1YWxzKGNzLmFuaW1hdGlvblBsYXlTdGF0ZSwgJ3BhdXNl
ZCcsCisgICAgICAgICAgICAgICAgICAnYW5pbWF0aW9uLXBsYXktc3RhdGUgaXMgcGF1c2VkJyk7
CisgICAgcHJldmlvdXNBbmltVmFsID0gZ2V0TWFyZ2luTGVmdChjcyk7CisgICAgcmV0dXJuIHdh
aXRGb3JOZXh0RnJhbWUoKTsKKyAgfSkudGhlbihmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfZXF1
YWxzKGdldE1hcmdpbkxlZnQoY3MpLCBwcmV2aW91c0FuaW1WYWwsCisgICAgICAgICAgICAgICAg
ICAnQW5pbWF0ZWQgdmFsdWUgb2YgbWFyZ2luLWxlZnQgZG9lcyBub3QgY2hhbmdlIHdoZW4nCisg
ICAgICAgICAgICAgICAgICArICcgcGF1c2VkIGJ5IHN0eWxlJyk7CisgIH0pOworfSwgJ3BsYXko
KSBpcyBvdmVycmlkZGVuIGJ5IGxhdGVyIHNldHRpbmcgImFuaW1hdGlvbi1wbGF5LXN0YXRlOiBw
YXVzZWQiJyk7CisKK3Byb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGRE
aXYodCk7CisgIHZhciBjcyA9IGdldENvbXB1dGVkU3R5bGUoZGl2KTsKKyAgZGl2LnN0eWxlLmFu
aW1hdGlvbiA9ICdhbmltIDEwMDBzJzsKKyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRp
b25zKClbMF07CisgIGFzc2VydF9lcXVhbHMoZ2V0TWFyZ2luTGVmdChjcyksIDAsCisgICAgICAg
ICAgICAgICAgJ0luaXRpYWwgdmFsdWUgb2YgbWFyZ2luLWxlZnQgaXMgemVybycpOworCisgIC8v
IFNldCB0aGUgc3BlY2lmaWVkIHN0eWxlIGZpcnN0LiBJZiBpbXBsZW1lbnRhdGlvbnMgZmFpbCB0
bworICAvLyBhcHBseSB0aGUgc3R5bGUgY2hhbmdlcyBmaXJzdCwgdGhleSB3aWxsIGlnbm9yZSB0
aGUgcmVkdW5kYW50CisgIC8vIGNhbGwgdG8gcGxheSgpIGFuZCBmYWlsIHRvIGNvcnJlY3RseSBv
dmVycmlkZSB0aGUgcGF1c2Ugc3R5bGUuCisgIGRpdi5zdHlsZS5hbmltYXRpb25QbGF5U3RhdGUg
PSAncGF1c2VkJzsKKyAgYW5pbWF0aW9uLnBsYXkoKTsKKyAgdmFyIHByZXZpb3VzQW5pbVZhbCA9
IGdldE1hcmdpbkxlZnQoY3MpOworCisgIHJldHVybiBhbmltYXRpb24ucmVhZHkudGhlbih3YWl0
Rm9yTmV4dEZyYW1lKS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9lcXVhbHMoY3MuYW5p
bWF0aW9uUGxheVN0YXRlLCAncGF1c2VkJywKKyAgICAgICAgICAgICAgICAgICdhbmltYXRpb24t
cGxheS1zdGF0ZSBpcyBwYXVzZWQnKTsKKyAgICBhc3NlcnRfZ3JlYXRlcl90aGFuKGdldE1hcmdp
bkxlZnQoY3MpLCBwcmV2aW91c0FuaW1WYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAnUGxh
eWluZyB2YWx1ZSBvZiBtYXJnaW4tbGVmdCBpcyBpbmNyZWFzaW5nJyk7CisgIH0pOworfSwgJ3Bs
YXkoKSBmbHVzaGVzIHBlbmRpbmcgY2hhbmdlcyB0byBhbmltYXRpb24tcGxheS1zdGF0ZSBmaXJz
dCcpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQp
OworICB2YXIgY3MgPSBnZXRDb21wdXRlZFN0eWxlKGRpdik7CisgIGRpdi5zdHlsZS5hbmltYXRp
b24gPSAnYW5pbSAxMDAwcyBwYXVzZWQnOworICB2YXIgYW5pbWF0aW9uID0gZGl2LmdldEFuaW1h
dGlvbnMoKVswXTsKKyAgYXNzZXJ0X2VxdWFscyhnZXRNYXJnaW5MZWZ0KGNzKSwgMCwKKyAgICAg
ICAgICAgICAgICAnSW5pdGlhbCB2YWx1ZSBvZiBtYXJnaW4tbGVmdCBpcyB6ZXJvJyk7CisKKyAg
Ly8gVW5saWtlIHRoZSBwcmV2aW91cyB0ZXN0IGZvciBwbGF5KCksIHNpbmNlIGNhbGxpbmcgcGF1
c2UoKSBpcyBzdGlja3ksCisgIC8vIHdlJ2xsIGFwcGx5IGl0IGV2ZW4gaWYgdGhlIHVuZGVybHlp
bmcgc3R5bGUgYWxzbyBzYXlzIHdlJ3JlIHBhdXNlZC4KKyAgLy8KKyAgLy8gV2Ugd291bGQgbGlr
ZSB0byB0ZXN0IHRoYXQgaW1wbGVtZW50YXRpb25zIGZsdXNoIHN0eWxlcyBiZWZvcmUgcnVubmlu
ZworICAvLyBwYXVzZSgpIGJ1dCBhY3R1YWxseSB0aGVyZSdzIG5vIHN0eWxlIHdlIGNhbiBjdXJy
ZW50bHkgc2V0IHRoYXQgd2lsbAorICAvLyBjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIHBhdXNlKCku
IFRoYXQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlCisgIC8vIChlLmcuIGlmIHdlIGludHJvZHVj
ZSBhbmltYXRpb24tdGltZWxpbmUgb3IgYW5pbWF0aW9uLXBsYXliYWNrLXJhdGUgZXRjLikuCisg
IC8vCisgIC8vIEZvciBub3cgdGhpcyBqdXN0IHNlcnZlcyBhcyBhIHNhbml0eSBjaGVjayB0aGF0
IHdlIGRvIHRoZSBzYW1lIHRoaW5nCisgIC8vIGV2ZW4gaWYgd2Ugc2V0IHN0eWxlIGJlZm9yZSBj
YWxsaW5nIHRoZSBBUEkuCisgIGRpdi5zdHlsZS5hbmltYXRpb25QbGF5U3RhdGUgPSAncnVubmlu
Zyc7CisgIGFuaW1hdGlvbi5wYXVzZSgpOworICB2YXIgcHJldmlvdXNBbmltVmFsID0gZ2V0TWFy
Z2luTGVmdChjcyk7CisKKyAgcmV0dXJuIGFuaW1hdGlvbi5yZWFkeS50aGVuKHdhaXRGb3JOZXh0
RnJhbWUpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X2VxdWFscyhjcy5hbmltYXRpb25Q
bGF5U3RhdGUsICdydW5uaW5nJywKKyAgICAgICAgICAgICAgICAgICdhbmltYXRpb24tcGxheS1z
dGF0ZSBpcyBydW5uaW5nJyk7CisgICAgYXNzZXJ0X2VxdWFscyhnZXRNYXJnaW5MZWZ0KGNzKSwg
cHJldmlvdXNBbmltVmFsLAorICAgICAgICAgICAgICAgICAgJ1BhdXNlZCB2YWx1ZSBvZiBtYXJn
aW4tbGVmdCBkb2VzIG5vdCBjaGFuZ2UnKTsKKyAgfSk7Cit9LCAncGF1c2UoKSBhcHBsaWVzIHBl
bmRpbmcgY2hhbmdlcyB0byBhbmltYXRpb24tcGxheS1zdGF0ZSBmaXJzdCcpOworLy8gKE5vdGUg
dGhhdCB3ZSBjYW4ndCBhY3R1YWxseSB0ZXN0IGZvciB0aGlzOyBzZWUgY29tbWVudCBhYm92ZSwg
aW4gdGVzdC1ib2R5LikKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9
IGFkZERpdih0LCB7IHN0eWxlOiAnYW5pbWF0aW9uOiBhbmltIDEwMDBzJyB9KTsKKyAgdmFyIGFu
aW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisgIHZhciByZWFkeVByb21pc2VSdW4g
PSBmYWxzZTsKKworICByZXR1cm4gYW5pbWF0aW9uLnJlYWR5LnRoZW4oZnVuY3Rpb24oKSB7Cisg
ICAgZGl2LnN0eWxlLmFuaW1hdGlvblBsYXlTdGF0ZSA9ICdwYXVzZWQnOworICAgIGFzc2VydF90
cnVlKGFuaW1hdGlvbi5wZW5kaW5nICYmIGFuaW1hdGlvbi5wbGF5U3RhdGUgPT09ICdwYXVzZWQn
LAorICAgICAgICAgICAgICAgICdBbmltYXRpb24gaXMgcGF1c2UtcGVuZGluZycpOworCisgICAg
Ly8gU2V0IGN1cnJlbnQgdGltZQorICAgIGFuaW1hdGlvbi5jdXJyZW50VGltZSA9IDUgKiBNU19Q
RVJfU0VDOworICAgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uLnBsYXlTdGF0ZSwgJ3BhdXNlZCcs
CisgICAgICAgICAgICAgICAgICAnQW5pbWF0aW9uIGlzIHBhdXNlZCBpbW1lZGlhdGVseSBhZnRl
ciBzZXR0aW5nIGN1cnJlbnRUaW1lJyk7CisgICAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb24uc3Rh
cnRUaW1lLCBudWxsLAorICAgICAgICAgICAgICAgICAgJ0FuaW1hdGlvbiBzdGFydFRpbWUgaXMg
dW5yZXNvbHZlZCBpbW1lZGlhdGVseSBhZnRlciAnICsKKyAgICAgICAgICAgICAgICAgICdzZXR0
aW5nIGN1cnJlbnRUaW1lJyk7CisgICAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb24uY3VycmVudFRp
bWUsIDUgKiBNU19QRVJfU0VDLAorICAgICAgICAgICAgICAgICAgJ0FuaW1hdGlvbiBjdXJyZW50
VGltZSBkb2VzIG5vdCBjaGFuZ2Ugd2hlbiBmb3JjaW5nIGEgJyArCisgICAgICAgICAgICAgICAg
ICAncGF1c2Ugb3BlcmF0aW9uIHRvIGNvbXBsZXRlJyk7CisKKyAgICAvLyBUaGUgcmVhZHkgcHJv
bWlzZSBzaG91bGQgbm93IGJlIHJlc29sdmVkLiBJZiBpdCdzIG5vdCB0aGVuIHRlc3Qgd2lsbAor
ICAgIC8vIHByb2JhYmx5IHRpbWUgb3V0IGJlZm9yZSBhbnl0aGluZyBlbHNlIGhhcHBlbnMgdGhh
dCBjYXVzZXMgaXQgdG8gcmVzb2x2ZS4KKyAgICByZXR1cm4gYW5pbWF0aW9uLnJlYWR5OworICB9
KTsKK30sICdTZXR0aW5nIHRoZSBjdXJyZW50IHRpbWUgY29tcGxldGVzIGEgcGVuZGluZyBwYXVz
ZScpOworCis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tcGxheXN0YXRlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVz
dF9hbmltYXRpb24tcGxheXN0YXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjkwM2MwNmJj
Yjk5Njk1NDk0N2FmZTMxZDgxYmEyMGNhZGNjNTY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2FuaW1hdGlvbi1wbGF5
c3RhdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorCitQQVNTIEFuaW1hdGlvbiByZXR1
cm5zIGNvcnJlY3QgcGxheVN0YXRlIHdoZW4gcnVubmluZyAKK0ZBSUwgQW5pbWF0aW9uIHJldHVy
bnMgY29ycmVjdCBwbGF5U3RhdGUgd2hlbiBwYXVzZWQgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmpl
Y3QgKGV2YWx1YXRpbmcgJ2FuaW1hdGlvbi5wbGF5U3RhdGUnKQorUEFTUyBBbmltYXRpb24ucGxh
eVN0YXRlIHVwZGF0ZXMgd2hlbiBwYXVzZWQgYnkgc2NyaXB0IAorRkFJTCBBbmltYXRpb24ucGxh
eVN0YXRlIHVwZGF0ZXMgd2hlbiByZXN1bWVkIGJ5IHNldHRpbmcgc3R5bGUgdW5kZWZpbmVkIGlz
IG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2FuaW1hdGlvbi5wbGF5U3RhdGUnKQorUEFTUyBB
bmltYXRpb24gcmV0dXJucyBjb3JyZWN0IHBsYXlTdGF0ZSB3aGVuIGNhbmNlbGxlZCAKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0
X2FuaW1hdGlvbi1wbGF5c3RhdGUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
Y3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tcGxheXN0YXRlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWFkNDI4OTc2ODg4YzAyYTZhMTFlNDg2MjM0ODUyZGJiZTY5MmJiOAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmlt
YXRpb24tcGxheXN0YXRlLmh0bWwKQEAgLTAsMCArMSw2MSBAQAorPCFkb2N0eXBlIGh0bWw+PCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVDU1NBbmltYXRpb25zQW5kQ1NTVHJhbnNpdGlv
bnNCYWNrZWRCeVdlYkFuaW1hdGlvbnM9dHJ1ZSBdIC0tPgorPG1ldGEgY2hhcnNldD11dGYtOD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3Rjb21tb24uanMiPjwvc2Ny
aXB0PgorPHN0eWxlPgorQGtleWZyYW1lcyBhbmltIHsgfQorPC9zdHlsZT4KKzxib2R5PgorPGRp
diBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7CisKK3Rlc3QoZnVuY3Rp
b24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQpOworICB2YXIgY3MgPSBnZXRDb21wdXRlZFN0
eWxlKGRpdik7CisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAnYW5pbSAxMDAwcyc7CisgIHZhciBh
bmltYXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworICBhc3NlcnRfZXF1YWxzKGFuaW1h
dGlvbi5wbGF5U3RhdGUsICdydW5uaW5nJyk7Cit9LCAnQW5pbWF0aW9uIHJldHVybnMgY29ycmVj
dCBwbGF5U3RhdGUgd2hlbiBydW5uaW5nJyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIg
ZGl2ID0gYWRkRGl2KHQpOworICB2YXIgY3MgPSBnZXRDb21wdXRlZFN0eWxlKGRpdik7CisgIGRp
di5zdHlsZS5hbmltYXRpb24gPSAnYW5pbSAxMDAwcyBwYXVzZWQnOworICB2YXIgYW5pbWF0aW9u
ID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb24ucGxh
eVN0YXRlLCAncGF1c2VkJyk7Cit9LCAnQW5pbWF0aW9uIHJldHVybnMgY29ycmVjdCBwbGF5U3Rh
dGUgd2hlbiBwYXVzZWQnKTsKKwordGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGRE
aXYodCk7CisgIHZhciBjcyA9IGdldENvbXB1dGVkU3R5bGUoZGl2KTsKKyAgZGl2LnN0eWxlLmFu
aW1hdGlvbiA9ICdhbmltIDEwMDBzJzsKKyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRp
b25zKClbMF07CisgIGFuaW1hdGlvbi5wYXVzZSgpOworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlv
bi5wbGF5U3RhdGUsICdwYXVzZWQnKTsKK30sICdBbmltYXRpb24ucGxheVN0YXRlIHVwZGF0ZXMg
d2hlbiBwYXVzZWQgYnkgc2NyaXB0Jyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2
ID0gYWRkRGl2KHQpOworICB2YXIgY3MgPSBnZXRDb21wdXRlZFN0eWxlKGRpdik7CisgIGRpdi5z
dHlsZS5hbmltYXRpb24gPSAnYW5pbSAxMDAwcyBwYXVzZWQnOworICB2YXIgYW5pbWF0aW9uID0g
ZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKyAgZGl2LnN0eWxlLmFuaW1hdGlvblBsYXlTdGF0ZSA9
ICdydW5uaW5nJzsKKworICAvLyBUaGlzIHRlc3QgYWxzbyBjaGVja3MgdGhhdCBjYWxsaW5nIHBs
YXlTdGF0ZSBmbHVzaGVzIHN0eWxlCisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uLnBsYXlTdGF0
ZSwgJ3J1bm5pbmcnLAorICAgICAgICAgICAgICAgICdBbmltYXRpb24ucGxheVN0YXRlIHJlcG9y
dHMgcnVubmluZyBhZnRlciB1cGRhdGluZycKKyAgICAgICAgICAgICAgICArICcgYW5pbWF0aW9u
LXBsYXktc3RhdGUgKGdvdDogJyArIGFuaW1hdGlvbi5wbGF5U3RhdGUgKyAnKScpOworfSwgJ0Fu
aW1hdGlvbi5wbGF5U3RhdGUgdXBkYXRlcyB3aGVuIHJlc3VtZWQgYnkgc2V0dGluZyBzdHlsZScp
OworCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0KTsKKyAgZGl2LnN0
eWxlLmFuaW1hdGlvbiA9ICdhbmltIDEwMDBzJzsKKyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRB
bmltYXRpb25zKClbMF07CisgIGFuaW1hdGlvbi5jYW5jZWwoKTsKKyAgYXNzZXJ0X2VxdWFscyhh
bmltYXRpb24ucGxheVN0YXRlLCAnaWRsZScpOworfSwgJ0FuaW1hdGlvbiByZXR1cm5zIGNvcnJl
Y3QgcGxheVN0YXRlIHdoZW4gY2FuY2VsbGVkJyk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0
X2FuaW1hdGlvbi1yZWFkeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLXJlYWR5LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wMmEyNzdmZjY1ODE5MzViOTNkYThkNmUxY2I5ZTlmMGNjOWEwZjA1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90
ZXN0X2FuaW1hdGlvbi1yZWFkeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACisKK0ZBSUwg
QSBuZXcgcmVhZHkgcHJvbWlzZSBpcyBjcmVhdGVkIHdoZW4gc2V0dGluZyBhbmltYXRpb24tcGxh
eS1zdGF0ZTogcnVubmluZyB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAn
YW5pbWF0aW9uLnJlYWR5JykKK1BBU1MgcmVhZHkgcHJvbWlzZSBpcyByZWplY3RlZCB3aGVuIGFu
IGFuaW1hdGlvbiBpcyBjYW5jZWxlZCBieSByZXNldHRpbmcgdGhlIGFuaW1hdGlvbiBwcm9wZXJ0
eSAKK1BBU1MgcmVhZHkgcHJvbWlzZSBpcyByZWplY3RlZCB3aGVuIGFuIGFuaW1hdGlvbiBpcyBj
YW5jZWxsZWQgYnkgdXBkYXRpbmcgdGhlIGFuaW1hdGlvbiBwcm9wZXJ0eSAKK0ZBSUwgQSBuZXcg
cmVhZHkgcHJvbWlzZSBpcyBjcmVhdGVkIHdoZW4gc2V0dGluZyBhbmltYXRpb24tcGxheS1zdGF0
ZTogcGF1c2VkIGFzc2VydF9ub3RfZXF1YWxzOiBBIG5ldyBQcm9taXNlIG9iamVjdCBpcyBnZW5l
cmF0ZWQgd2hlbiBzZXR0aW5nIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBwYXVzZWQgZ290IGRpc2Fs
bG93ZWQgdmFsdWUgb2JqZWN0ICJbb2JqZWN0IFByb21pc2VdIgorRkFJTCBQYXVzaW5nIHR3aWNl
IHJlLXVzZXMgdGhlIHNhbWUgUHJvbWlzZSBhc3NlcnRfZXF1YWxzOiBSZWFkeSBwcm9taXNlIG9i
amVjdHMgYXJlIGlkZW50aWNhbCBhZnRlciByZWR1bmRhbnQgcGF1c2UgZXhwZWN0ZWQgb2JqZWN0
ICJbb2JqZWN0IFByb21pc2VdIiBidXQgZ290IG9iamVjdCAiW29iamVjdCBQcm9taXNlXSIKK0ZB
SUwgSWYgYSBwYXVzZSBvcGVyYXRpb24gaXMgaW50ZXJydXB0ZWQsIHRoZSByZWFkeSBwcm9taXNl
IGlzIHJldXNlZCBhc3NlcnRfdHJ1ZTogQW5pbWF0aW9uIGlzIHBlbmRpbmcgZXhwZWN0ZWQgdHJ1
ZSBnb3QgZmFsc2UKK1BBU1MgV2hlbiBhIHBhdXNlIGlzIGNvbXBsZXRlIHRoZSBQcm9taXNlIGNh
bGxiYWNrIGdldHMgdGhlIGNvcnJlY3QgYW5pbWF0aW9uIAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLXJlYWR5
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3Rf
YW5pbWF0aW9uLXJlYWR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA1MDAxMjI2ODBhODJiZWFkZGFkMzQ3
NzhmZDgyN2M0MDFjZjU0YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tcmVhZHkuaHRtbApAQCAtMCww
ICsxLDE0OSBAQAorPCFkb2N0eXBlIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFi
bGVDU1NBbmltYXRpb25zQW5kQ1NTVHJhbnNpdGlvbnNCYWNrZWRCeVdlYkFuaW1hdGlvbnM9dHJ1
ZSBdIC0tPgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3Rlc3Rjb21tb24uanMiPjwvc2NyaXB0PgorPHN0eWxlPgorQGtleWZyYW1lcyBh
YmMgeworICB0byB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKDEwcHgpIH0KK30KKzwvc3R5bGU+Cis8
Ym9keT4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOworCitw
cm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQpOworICBkaXYu
c3R5bGUuYW5pbWF0aW9uID0gJ2FiYyAxMDBzIHBhdXNlZCc7CisgIHZhciBhbmltYXRpb24gPSBk
aXYuZ2V0QW5pbWF0aW9ucygpWzBdOworICB2YXIgb3JpZ2luYWxSZWFkeVByb21pc2UgPSBhbmlt
YXRpb24ucmVhZHk7CisKKyAgcmV0dXJuIGFuaW1hdGlvbi5yZWFkeS50aGVuKGZ1bmN0aW9uKCkg
eworICAgIGRpdi5zdHlsZS5hbmltYXRpb25QbGF5U3RhdGUgPSAncnVubmluZyc7CisgICAgYXNz
ZXJ0X25vdF9lcXVhbHMoYW5pbWF0aW9uLnJlYWR5LCBvcmlnaW5hbFJlYWR5UHJvbWlzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAnQWZ0ZXIgdXBkYXRpbmcgYW5pbWF0aW9uLXBsYXktc3RhdGUg
YSBuZXcgcmVhZHkgcHJvbWlzZScKKyAgICAgICAgICAgICAgICAgICAgICArICcgb2JqZWN0IGlz
IGNyZWF0ZWQnKTsKKyAgfSk7Cit9LCAnQSBuZXcgcmVhZHkgcHJvbWlzZSBpcyBjcmVhdGVkIHdo
ZW4gc2V0dGluZyBhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZycpOworCitwcm9taXNlX3Rl
c3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQpOworCisgIC8vIFNldCB1cCBw
ZW5kaW5nIGFuaW1hdGlvbgorICBkaXYuc3R5bGUuYW5pbWF0aW9uID0gJ2FiYyAxMDBzJzsKKyAg
dmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisgIGFzc2VydF90cnVlKGFu
aW1hdGlvbi5wZW5kaW5nLCAnQW5pbWF0aW9uIGlzIGluaXRpYWxseSBwZW5kaW5nJyk7CisKKyAg
Ly8gU2V0IHVwIGxpc3RlbmVycyBvbiByZWFkeSBwcm9taXNlCisgIHZhciByZXRQcm9taXNlID0g
YW5pbWF0aW9uLnJlYWR5LnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3VucmVhY2hlZCgn
cmVhZHkgcHJvbWlzZSBpcyBmdWxmaWxsZWQnKTsKKyAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyKSB7
CisgICAgYXNzZXJ0X2VxdWFscyhlcnIubmFtZSwgJ0Fib3J0RXJyb3InLAorICAgICAgICAgICAg
ICAgICAgJ3JlYWR5IHByb21pc2UgaXMgcmVqZWN0ZWQgd2l0aCBBYm9ydEVycm9yJyk7CisgIH0p
OworCisgIC8vIE5vdyBjYW5jZWwgdGhlIGFuaW1hdGlvbiBhbmQgZmx1c2ggc3R5bGVzCisgIGRp
di5zdHlsZS5hbmltYXRpb24gPSAnJzsKKyAgZ2V0Q29tcHV0ZWRTdHlsZShkaXYpLmFuaW1hdGlv
bjsKKworICByZXR1cm4gcmV0UHJvbWlzZTsKK30sICdyZWFkeSBwcm9taXNlIGlzIHJlamVjdGVk
IHdoZW4gYW4gYW5pbWF0aW9uIGlzIGNhbmNlbGVkIGJ5IHJlc2V0dGluZycKKyAgICsgJyB0aGUg
YW5pbWF0aW9uIHByb3BlcnR5Jyk7CisKK3Byb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgIHZh
ciBkaXYgPSBhZGREaXYodCk7CisKKyAgLy8gQXMgYmVmb3JlLCBidXQgdGhpcyB0aW1lIGluc3Rl
YWQgb2YgcmVtb3ZpbmcgYWxsIGFuaW1hdGlvbnMsIHNpbXBseSB1cGRhdGUKKyAgLy8gdGhlIGxp
c3Qgb2YgYW5pbWF0aW9ucy4gQXQgbGVhc3QgZm9yIEZpcmVmb3gsIHVwZGF0aW5nIGlzIGEgZGlm
ZmVyZW50CisgIC8vIGNvZGUgcGF0aC4KKworICAvLyBTZXQgdXAgcGVuZGluZyBhbmltYXRpb24K
KyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICdhYmMgMTAwcyc7CisgIHZhciBhbmltYXRpb24gPSBk
aXYuZ2V0QW5pbWF0aW9ucygpWzBdOworICBhc3NlcnRfdHJ1ZShhbmltYXRpb24ucGVuZGluZywg
J0FuaW1hdGlvbiBpcyBpbml0aWFsbHkgcGVuZGluZycpOworCisgIC8vIFNldCB1cCBsaXN0ZW5l
cnMgb24gcmVhZHkgcHJvbWlzZQorICB2YXIgcmV0UHJvbWlzZSA9IGFuaW1hdGlvbi5yZWFkeS50
aGVuKGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF91bnJlYWNoZWQoJ3JlYWR5IHByb21pc2Ugd2Fz
IGZ1bGZpbGxlZCcpOworICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHsKKyAgICBhc3NlcnRfZXF1
YWxzKGVyci5uYW1lLCAnQWJvcnRFcnJvcicsCisgICAgICAgICAgICAgICAgICAncmVhZHkgcHJv
bWlzZSBpcyByZWplY3RlZCB3aXRoIEFib3J0RXJyb3InKTsKKyAgfSk7CisKKyAgLy8gTm93IHVw
ZGF0ZSB0aGUgYW5pbWF0aW9uIGFuZCBmbHVzaCBzdHlsZXMKKyAgZGl2LnN0eWxlLmFuaW1hdGlv
biA9ICdkZWYgMTAwcyc7CisgIGdldENvbXB1dGVkU3R5bGUoZGl2KS5hbmltYXRpb247CisKKyAg
cmV0dXJuIHJldFByb21pc2U7Cit9LCAncmVhZHkgcHJvbWlzZSBpcyByZWplY3RlZCB3aGVuIGFu
IGFuaW1hdGlvbiBpcyBjYW5jZWxsZWQgYnkgdXBkYXRpbmcnCisgICArICcgdGhlIGFuaW1hdGlv
biBwcm9wZXJ0eScpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0g
YWRkRGl2KHQsIHsgc3R5bGU6ICdhbmltYXRpb246IGFiYyAxMDBzJyB9KTsKKyAgdmFyIGFuaW1h
dGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisgIHZhciBvcmlnaW5hbFJlYWR5UHJvbWlz
ZSA9IGFuaW1hdGlvbi5yZWFkeTsKKworICByZXR1cm4gYW5pbWF0aW9uLnJlYWR5LnRoZW4oZnVu
Y3Rpb24oKSB7CisgICAgZGl2LnN0eWxlLmFuaW1hdGlvblBsYXlTdGF0ZSA9ICdwYXVzZWQnOwor
ICAgIGFzc2VydF9ub3RfZXF1YWxzKGFuaW1hdGlvbi5yZWFkeSwgb3JpZ2luYWxSZWFkeVByb21p
c2UsCisgICAgICAgICAgICAgICAgICAgICAgJ0EgbmV3IFByb21pc2Ugb2JqZWN0IGlzIGdlbmVy
YXRlZCB3aGVuIHNldHRpbmcnCisgICAgICAgICAgICAgICAgICAgICAgKyAnIGFuaW1hdGlvbi1w
bGF5LXN0YXRlOiBwYXVzZWQnKTsKKyAgfSk7Cit9LCAnQSBuZXcgcmVhZHkgcHJvbWlzZSBpcyBj
cmVhdGVkIHdoZW4gc2V0dGluZyBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkJyk7CisKK3By
b21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeyBzdHlsZTog
J2FuaW1hdGlvbjogYWJjIDEwMHMnIH0pOworICB2YXIgYW5pbWF0aW9uID0gZGl2LmdldEFuaW1h
dGlvbnMoKVswXTsKKworICByZXR1cm4gYW5pbWF0aW9uLnJlYWR5LnRoZW4oZnVuY3Rpb24oKSB7
CisgICAgZGl2LnN0eWxlLmFuaW1hdGlvblBsYXlTdGF0ZSA9ICdwYXVzZWQnOworICAgIHZhciBm
aXJzdFJlYWR5UHJvbWlzZSA9IGFuaW1hdGlvbi5yZWFkeTsKKyAgICBhbmltYXRpb24ucGF1c2Uo
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbi5yZWFkeSwgZmlyc3RSZWFkeVByb21pc2Us
CisgICAgICAgICAgICAgICAgICAnUmVhZHkgcHJvbWlzZSBvYmplY3RzIGFyZSBpZGVudGljYWwg
YWZ0ZXIgcmVkdW5kYW50IHBhdXNlJyk7CisgIH0pOworfSwgJ1BhdXNpbmcgdHdpY2UgcmUtdXNl
cyB0aGUgc2FtZSBQcm9taXNlJyk7CisKK3Byb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgIHZh
ciBkaXYgPSBhZGREaXYodCwgeyBzdHlsZTogJ2FuaW1hdGlvbjogYWJjIDEwMHMnIH0pOworICB2
YXIgYW5pbWF0aW9uID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKworICByZXR1cm4gYW5pbWF0
aW9uLnJlYWR5LnRoZW4oZnVuY3Rpb24oKSB7CisgICAgZGl2LnN0eWxlLmFuaW1hdGlvblBsYXlT
dGF0ZSA9ICdwYXVzZWQnOworCisgICAgLy8gRmx1c2ggc3R5bGUgYW5kIHZlcmlmeSB3ZSdyZSBw
ZW5kaW5nIGF0IHRoZSBzYW1lIHRpbWUKKyAgICBhc3NlcnRfdHJ1ZShhbmltYXRpb24ucGVuZGlu
ZywgJ0FuaW1hdGlvbiBpcyBwZW5kaW5nJyk7CisgICAgdmFyIHBhdXNlUmVhZHlQcm9taXNlID0g
YW5pbWF0aW9uLnJlYWR5OworCisgICAgLy8gTm93IHBsYXkgYWdhaW4gaW1tZWRpYXRlbHkKKyAg
ICBkaXYuc3R5bGUuYW5pbWF0aW9uUGxheVN0YXRlID0gJ3J1bm5pbmcnOworICAgIGFzc2VydF90
cnVlKGFuaW1hdGlvbi5wZW5kaW5nLCAnQW5pbWF0aW9uIGlzIHN0aWxsIHBlbmRpbmcnKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbi5yZWFkeSwgcGF1c2VSZWFkeVByb21pc2UsCisgICAg
ICAgICAgICAgICAgICAnVGhlIHBhdXNlIFByb21pc2UgaXMgcmUtdXNlZCB3aGVuIHBsYXlpbmcg
d2hpbGUgd2FpdGluZycKKyAgICAgICAgICAgICAgICAgICsgJyB0byBwYXVzZScpOworCisgICAg
cmV0dXJuIGFuaW1hdGlvbi5yZWFkeTsKKyAgfSkudGhlbihmdW5jdGlvbigpIHsKKyAgICBhc3Nl
cnRfdHJ1ZSghYW5pbWF0aW9uLnBlbmRpbmcgJiYgYW5pbWF0aW9uLnBsYXlTdGF0ZSA9PT0gJ3J1
bm5pbmcnLAorICAgICAgICAgICAgICAgICdBbmltYXRpb24gaXMgcnVubmluZyBhZnRlciBhYm9y
dGluZyBhIHBhdXNlJyk7CisgIH0pOworfSwgJ0lmIGEgcGF1c2Ugb3BlcmF0aW9uIGlzIGludGVy
cnVwdGVkLCB0aGUgcmVhZHkgcHJvbWlzZSBpcyByZXVzZWQnKTsKKworcHJvbWlzZV90ZXN0KGZ1
bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7IHN0eWxlOiAnYW5pbWF0aW9uOiBh
YmMgMTAwcycgfSk7CisgIHZhciBhbmltYXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOwor
CisgIHJldHVybiBhbmltYXRpb24ucmVhZHkudGhlbihmdW5jdGlvbigpIHsKKyAgICBkaXYuc3R5
bGUuYW5pbWF0aW9uUGxheVN0YXRlID0gJ3BhdXNlZCc7CisgICAgcmV0dXJuIGFuaW1hdGlvbi5y
ZWFkeTsKKyAgfSkudGhlbihmdW5jdGlvbihyZXNvbHZlZEFuaW1hdGlvbikgeworICAgIGFzc2Vy
dF9lcXVhbHMocmVzb2x2ZWRBbmltYXRpb24sIGFuaW1hdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICdQcm9taXNlIHJlY2VpdmVkIHdoZW4gcmVhZHkgUHJvbWlzZSBmb3IgYSBwYXVzZSBvcGVyYXRp
b24nCisgICAgICAgICAgICAgICAgICArICcgaXMgY29tcGxldGVkIGlzIHRoZSBhbmltYXRpb24g
b24gd2hpY2ggdGhlIHBhdXNlIHdhcycKKyAgICAgICAgICAgICAgICAgICsgJyBwZXJmb3JtZWQn
KTsKKyAgfSk7Cit9LCAnV2hlbiBhIHBhdXNlIGlzIGNvbXBsZXRlIHRoZSBQcm9taXNlIGNhbGxi
YWNrIGdldHMgdGhlIGNvcnJlY3QgYW5pbWF0aW9uJyk7CisKKzwvc2NyaXB0PgorPC9ib2R5Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90
ZXN0X2FuaW1hdGlvbi1yZXZlcnNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tcmV2ZXJzZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWE5MmJlNTI5NWI3N2VmOTRmNDI2ZTlhNjNmNDY0ZTdkODMxNzUyZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1h
dGlvbnMvdGVzdF9hbmltYXRpb24tcmV2ZXJzZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBA
CisKK0ZBSUwgcmV2ZXJzZSgpIGZyb20gaWRsZSBzdGF0ZSBzdGFydHMgcGxheWluZyB0aGUgYW5p
bWF0aW9uIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIChvYmplY3QpIG51bGwgYnV0IGdvdCAobnVt
YmVyKSAwCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFu
aW1hdGlvbnMvdGVzdF9hbmltYXRpb24tcmV2ZXJzZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2FuaW1hdGlvbi1yZXZlcnNlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzFiNWJhYjhhN2I0NThlZjAxOTllZmFmNWIyNDMzOWM3NzcwMDVjMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMv
dGVzdF9hbmltYXRpb24tcmV2ZXJzZS5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhZG9jdHlwZSBo
dG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlQ1NTQW5pbWF0aW9uc0FuZENTU1Ry
YW5zaXRpb25zQmFja2VkQnlXZWJBbmltYXRpb25zPXRydWUgXSAtLT4KKzxtZXRhIGNoYXJzZXQ9
dXRmLTg+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0Y29tbW9uLmpz
Ij48L3NjcmlwdD4KKzxzdHlsZT4KK0BrZXlmcmFtZXMgYW5pbSB7CisgIHRvIHsgdHJhbnNmb3Jt
OiB0cmFuc2xhdGUoMTAwcHgpIH0KK30KKzwvc3R5bGU+Cis8Ym9keT4KKzxkaXYgaWQ9ImxvZyI+
PC9kaXY+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOworCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAg
dmFyIGRpdiA9IGFkZERpdih0LCB7IHN0eWxlOiAnYW5pbWF0aW9uOiBhbmltIDEwMHMnIH0pOwor
ICB2YXIgYW5pbWF0aW9uID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKyAgZGl2LnN0eWxlLmFu
aW1hdGlvbiA9ICIiOworICBmbHVzaENvbXB1dGVkU3R5bGUoZGl2KTsKKworICBhc3NlcnRfZXF1
YWxzKGFuaW1hdGlvbi5jdXJyZW50VGltZSwgbnVsbCk7CisgIGFuaW1hdGlvbi5yZXZlcnNlKCk7
CisKKyAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb24uY3VycmVudFRpbWUsIDEwMCAqIE1TX1BFUl9T
RUMsCisgICAgJ2FuaW1hdGlvbi5jdXJyZW50VGltZSBzaG91bGQgYmUgaXRzIGVmZmVjdCBlbmQn
KTsKK30sICdyZXZlcnNlKCkgZnJvbSBpZGxlIHN0YXRlIHN0YXJ0cyBwbGF5aW5nIHRoZSBhbmlt
YXRpb24nKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLXN0YXJ0dGltZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25z
L3Rlc3RfYW5pbWF0aW9uLXN0YXJ0dGltZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWJmYzRl
ZjA2YTlhY2NiNDM3Mjc5ZDkwY2FjNjY4ZjljYmI3MWMxOAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24t
c3RhcnR0aW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKyNQSUQgVU5SRVNQT05TSVZF
IC0gY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50IChwaWQgMTM1NDIpCitG
QUlMOiBUaW1lZCBvdXQgd2FpdGluZyBmb3Igbm90aWZ5RG9uZSB0byBiZSBjYWxsZWQKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0
X2FuaW1hdGlvbi1zdGFydHRpbWUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
Y3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tc3RhcnR0aW1lLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODgzZjc0ZGQ2NmYzYjhhMTgwNTYxMTA5NjM4ZDUzZmU4NTZkOWYwMwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmlt
YXRpb24tc3RhcnR0aW1lLmh0bWwKQEAgLTAsMCArMSwzODUgQEAKKzwhZG9jdHlwZSBodG1sPjwh
LS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlQ1NTQW5pbWF0aW9uc0FuZENTU1RyYW5zaXRp
b25zQmFja2VkQnlXZWJBbmltYXRpb25zPXRydWUgXSAtLT4KKzxodG1sPgorICA8aGVhZD4KKyAg
ICA8bWV0YSBjaGFyc2V0PXV0Zi04PgorICAgIDx0aXRsZT5UZXN0cyBmb3IgdGhlIGVmZmVjdCBv
ZiBzZXR0aW5nIGEgQ1NTIGFuaW1hdGlvbidzCisgICAgICAgICAgIEFuaW1hdGlvbi5zdGFydFRp
bWU8L3RpdGxlPgorICAgIDxzdHlsZT4KKworLmFuaW1hdGVkLWRpdiB7CisgIG1hcmdpbi1sZWZ0
OiAxMHB4OworICAvKiBNYWtlIGl0IGVhc2llciB0byBjYWxjdWxhdGUgZXhwZWN0ZWQgdmFsdWVz
OiAqLworICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXIgISBpbXBvcnRhbnQ7Cit9
CisKK0BrZXlmcmFtZXMgYW5pbSB7CisgIGZyb20geyBtYXJnaW4tbGVmdDogMTAwcHg7IH0KKyAg
dG8geyBtYXJnaW4tbGVmdDogMjAwcHg7IH0KK30KKworICAgIDwvc3R5bGU+CisgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0Y29tbW9uLmpzIj48L3Nj
cmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICA8ZGl2IGlkPSJsb2ciPjwvZGl2PgorICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworJ3VzZSBzdHJpY3QnOworCisvLyBU
T0RPOiBXZSBzaG91bGQgc2VwYXJhdGUgdGhpcyB0ZXN0KFRlc3RpbmcgZm9yIENTUyBBbmltYXRp
b24gZXZlbnRzIC8KKy8vIFRlc3RpbmcgZm9yIHN0YXJ0IHRpbWUgb2YgV2ViIEFuaW1hdGlvbiku
CisvLyBlLmc6CisvLyAgQ1NTIEFuaW1hdGlvbiBldmVudHMgdGVzdDoKKy8vICAgIC0gY2hlY2sg
dGhlIGZpcmluZyBhbiBldmVudCBhZnRlciBzZXR0aW5nIGFuIEFuaW1hdGlvbi5zdGFydFRpbWUK
Ky8vICBUaGUgc3RhcnQgdGltZSBvZiBXZWIgQW5pbWF0aW9uIHRlc3Q6CisvLyAgICAtIGNoZWNr
IGFuIHN0YXJ0IHRpbWUgdmFsdWUgb24gc2V2ZXJhbCBzaXR1YXRpb24oaW5pdCAvIHByb2Nlc3Np
bmcuLikKKy8vICAgIC0gQmFzZWQgb24gVzNDIFNwZWMsIGNoZWNrIHRoZSBiZWhhdmlvciBvZiBz
ZXR0aW5nIGN1cnJlbnQgdGltZS4KKworLy8gVE9ETzogT25jZSB0aGUgY29tcHV0ZWRUaW1pbmcg
cHJvcGVydHkgaXMgaW1wbGVtZW50ZWQsIGFkZCBjaGVja3MgdG8gdGhlCisvLyBjaGVja2VyIGhl
bHBlcnMgdG8gZW5zdXJlIHRoYXQgY29tcHV0ZWRUaW1pbmcncyBwcm9wZXJ0aWVzIGFyZSB1cGRh
dGVkIGFzCisvLyBleHBlY3RlZC4KKy8vIFNlZSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTA4MDU1CisKK2NvbnN0IENTU19BTklNX0VWRU5UUyA9CisgIFsn
YW5pbWF0aW9uc3RhcnQnLCAnYW5pbWF0aW9uaXRlcmF0aW9uJywgJ2FuaW1hdGlvbmVuZCddOwor
Cit0ZXN0KGZ1bmN0aW9uKHQpCit7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeyAnc3R5bGUnOiAn
YW5pbWF0aW9uOiBhbmltIDEwMHMnIH0pOworICB2YXIgYW5pbWF0aW9uID0gZGl2LmdldEFuaW1h
dGlvbnMoKVswXTsKKworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbi5zdGFydFRpbWUsIG51bGws
ICdzdGFydFRpbWUgaXMgdW5yZXNvbHZlZCcpOworfSwgJ3N0YXJ0VGltZSBvZiBhIG5ld2x5IGNy
ZWF0ZWQgKHBsYXktcGVuZGluZykgYW5pbWF0aW9uIGlzIHVucmVzb2x2ZWQnKTsKKwordGVzdChm
dW5jdGlvbih0KQoreworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsgJ3N0eWxlJzogJ2FuaW1hdGlv
bjogYW5pbSAxMDBzIHBhdXNlZCcgfSk7CisgIHZhciBhbmltYXRpb24gPSBkaXYuZ2V0QW5pbWF0
aW9ucygpWzBdOworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbi5zdGFydFRpbWUsIG51bGwsICdz
dGFydFRpbWUgaXMgdW5yZXNvbHZlZCcpOworfSwgJ3N0YXJ0VGltZSBvZiBhIG5ld2x5IGNyZWF0
ZWQgKHBhdXNlLXBlbmRpbmcpIGFuaW1hdGlvbiBpcyB1bnJlc29sdmVkJyk7CisKK3Byb21pc2Vf
dGVzdChmdW5jdGlvbih0KQoreworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsgJ3N0eWxlJzogJ2Fu
aW1hdGlvbjogYW5pbSAxMDBzJyB9KTsKKyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRp
b25zKClbMF07CisKKyAgcmV0dXJuIGFuaW1hdGlvbi5yZWFkeS50aGVuKGZ1bmN0aW9uKCkgewor
ICAgIGFzc2VydF90cnVlKGFuaW1hdGlvbi5zdGFydFRpbWUgPiAwLAorICAgICAgICAgICAgICAg
ICdzdGFydFRpbWUgaXMgcmVzb2x2ZWQgd2hlbiBydW5uaW5nJyk7CisgIH0pOworfSwgJ3N0YXJ0
VGltZSBpcyByZXNvbHZlZCB3aGVuIHJ1bm5pbmcnKTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9u
KHQpCit7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeyAnc3R5bGUnOiAnYW5pbWF0aW9uOiBhbmlt
IDEwMHMgcGF1c2VkJyB9KTsKKyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClb
MF07CisKKyAgcmV0dXJuIGFuaW1hdGlvbi5yZWFkeS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGFz
c2VydF9lcXVhbHMoYW5pbWF0aW9uLnN0YXJ0VGltZSwgbnVsbCwKKyAgICAgICAgICAgICAgICAg
ICdzdGFydFRpbWUgaXMgdW5yZXNvbHZlZCB3aGVuIHBhdXNlZCcpOworICB9KTsKK30sICdzdGFy
dFRpbWUgaXMgdW5yZXNvbHZlZCB3aGVuIHBhdXNlZCcpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rp
b24odCkKK3sKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7ICdzdHlsZSc6ICdhbmltYXRpb246IGFu
aW0gMTAwcycgfSk7CisgIHZhciBhbmltYXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOwor
CisgIHJldHVybiBhbmltYXRpb24ucmVhZHkudGhlbihmdW5jdGlvbigpIHsKKyAgICBkaXYuc3R5
bGUuYW5pbWF0aW9uUGxheVN0YXRlID0gJ3BhdXNlZCc7CisgICAgZ2V0Q29tcHV0ZWRTdHlsZShk
aXYpLmFuaW1hdGlvblBsYXlTdGF0ZTsKKworICAgIGFzc2VydF9ub3RfZXF1YWxzKGFuaW1hdGlv
bi5zdGFydFRpbWUsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgJ3N0YXJ0VGltZSBpcyBy
ZXNvbHZlZCB3aGVuIHBhdXNlLXBlbmRpbmcnKTsKKworICAgIGRpdi5zdHlsZS5hbmltYXRpb25Q
bGF5U3RhdGUgPSAncnVubmluZyc7CisgICAgZ2V0Q29tcHV0ZWRTdHlsZShkaXYpLmFuaW1hdGlv
blBsYXlTdGF0ZTsKKworICAgIGFzc2VydF9ub3RfZXF1YWxzKGFuaW1hdGlvbi5zdGFydFRpbWUs
IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgJ3N0YXJ0VGltZSBpcyBwcmVzZXJ2ZWQgd2hl
biBhIHBhdXNlIGlzIGFib3J0ZWQnKTsKKyAgfSk7Cit9LCAnc3RhcnRUaW1lIHdoaWxlIHBhdXNl
LXBlbmRpbmcgYW5kIHBsYXktcGVuZGluZycpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkg
eworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsgJ3N0eWxlJzogJ2FuaW1hdGlvbjogYW5pbSAxMDBz
JyB9KTsKKyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisgIC8vIFNl
ZWsgdG8gZW5kIHRvIHB1dCB1cyBpbiB0aGUgZmluaXNoZWQgc3RhdGUKKyAgYW5pbWF0aW9uLmN1
cnJlbnRUaW1lID0gMTAwICogTVNfUEVSX1NFQzsKKworICByZXR1cm4gYW5pbWF0aW9uLnJlYWR5
LnRoZW4oZnVuY3Rpb24oKSB7CisgICAgLy8gQ2FsbCBwbGF5KCkgd2hpY2ggcHV0cyB1cyBiYWNr
IGluIHRoZSBydW5uaW5nIHN0YXRlCisgICAgYW5pbWF0aW9uLnBsYXkoKTsKKworICAgIGFzc2Vy
dF9lcXVhbHMoYW5pbWF0aW9uLnN0YXJ0VGltZSwgbnVsbCwgJ3N0YXJ0VGltZSBpcyB1bnJlc29s
dmVkJyk7CisgIH0pOworfSwgJ3N0YXJ0VGltZSB3aGlsZSBwbGF5LXBlbmRpbmcgZnJvbSBmaW5p
c2hlZCBzdGF0ZScpOworCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0
LCB7ICdzdHlsZSc6ICdhbmltYXRpb246IGFuaW0gMTAwcycgfSk7CisgIHZhciBhbmltYXRpb24g
PSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworICBhbmltYXRpb24uZmluaXNoKCk7CisgIC8vIENh
bGwgcGxheSgpIHdoaWNoIHB1dHMgdXMgYmFjayBpbiB0aGUgcnVubmluZyBzdGF0ZQorICBhbmlt
YXRpb24ucGxheSgpOworCisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uLnN0YXJ0VGltZSwgbnVs
bCwgJ3N0YXJ0VGltZSBpcyB1bnJlc29sdmVkJyk7Cit9LCAnc3RhcnRUaW1lIHdoaWxlIHBsYXkt
cGVuZGluZyBmcm9tIGZpbmlzaGVkIHN0YXRlIHVzaW5nIGZpbmlzaCgpJyk7CisKK3Byb21pc2Vf
dGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeyBzdHlsZTogJ2FuaW1h
dGlvbjogYW5pbSAxMDBzJyB9KTsKKyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25z
KClbMF07CisKKyAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb24uc3RhcnRUaW1lLCBudWxsLCAnVGhl
IGluaXRpYWwgc3RhcnRUaW1lIGlzIG51bGwnKTsKKyAgdmFyIGluaXRpYWxUaW1lbGluZVRpbWUg
PSBkb2N1bWVudC50aW1lbGluZS5jdXJyZW50VGltZTsKKworICByZXR1cm4gYW5pbWF0aW9uLnJl
YWR5LnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3RydWUoYW5pbWF0aW9uLnN0YXJ0VGlt
ZSA+IGluaXRpYWxUaW1lbGluZVRpbWUsCisgICAgICAgICAgICAgICAgJ0FmdGVyIHRoZSBhbmlt
YXRpb24gaGFzIHN0YXJ0ZWQsIHN0YXJ0VGltZSBpcyBncmVhdGVyIHRoYW4gJyArCisgICAgICAg
ICAgICAgICAgJ3RoZSB0aW1lIHdoZW4gaXQgd2FzIHN0YXJ0ZWQnKTsKKyAgICB2YXIgc3RhcnRU
aW1lQmVmb3JlUGF1c2luZyA9IGFuaW1hdGlvbi5zdGFydFRpbWU7CisKKyAgICBkaXYuc3R5bGUu
YW5pbWF0aW9uUGxheVN0YXRlID0gJ3BhdXNlZCc7CisgICAgLy8gRmx1c2ggc3R5bGVzIGp1c3Qg
aW4gY2FzZSBxdWVyeWluZyBhbmltYXRpb24uc3RhcnRUaW1lIGRvZXNuJ3QgZmx1c2gKKyAgICAv
LyBzdHlsZXMgKHdoaWNoIHdvdWxkIGJlIGEgYnVnIGluIG9mIGl0c2VsZiBhbmQgY291bGQgbWFz
ayBhIGZ1cnRoZXIgYnVnCisgICAgLy8gYnkgY2F1c2luZyBzdGFydFRpbWUgdG8gYXBwZWFyIHRv
IG5vdCBjaGFuZ2UpLgorICAgIGdldENvbXB1dGVkU3R5bGUoZGl2KS5hbmltYXRpb25QbGF5U3Rh
dGU7CisKKyAgICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbi5zdGFydFRpbWUsIHN0YXJ0VGltZUJl
Zm9yZVBhdXNpbmcsCisgICAgICAgICAgICAgICAgICAnVGhlIHN0YXJ0VGltZSBkb2VzIG5vdCBj
aGFuZ2Ugd2hlbiBwYXVzaW5nLXBlbmRpbmcnKTsKKyAgICByZXR1cm4gYW5pbWF0aW9uLnJlYWR5
OworICB9KS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uLnN0
YXJ0VGltZSwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICdBZnRlciBhY3R1YWxseSBwYXVzaW5n
LCB0aGUgc3RhcnRUaW1lIG9mIGFuIGFuaW1hdGlvbiAnICsKKyAgICAgICAgICAgICAgICAgICdp
cyBudWxsJyk7CisgIH0pOworfSwgJ1BhdXNpbmcgc2hvdWxkIG1ha2UgdGhlIHN0YXJ0VGltZSBi
ZWNvbWUgbnVsbCcpOworCit0ZXN0KGZ1bmN0aW9uKHQpCit7CisgIHZhciBkaXYgPSBhZGREaXYo
dCwgeydjbGFzcyc6ICdhbmltYXRlZC1kaXYnfSk7CisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAn
YW5pbSAxMDBzIDEwMHMnOworICB2YXIgYW5pbWF0aW9uID0gZGl2LmdldEFuaW1hdGlvbnMoKVsw
XTsKKyAgdmFyIGN1cnJlbnRUaW1lID0gYW5pbWF0aW9uLnRpbWVsaW5lLmN1cnJlbnRUaW1lOwor
ICBhbmltYXRpb24uc3RhcnRUaW1lID0gY3VycmVudFRpbWU7CisKKyAgYXNzZXJ0X3RpbWVzX2Vx
dWFsKGFuaW1hdGlvbi5zdGFydFRpbWUsIGN1cnJlbnRUaW1lLAorICAgICdDaGVjayBzZXR0aW5n
IG9mIHN0YXJ0VGltZSBhY3R1YWxseSB3b3JrcycpOworfSwgJ1Nhbml0eSB0ZXN0IHRvIGNoZWNr
IHJvdW5kLXRyaXBwaW5nIGFzc2lnbmluZyB0byBhIG5ldyBhbmltYXRpb25cJ3MgJyArCisgICAn
c3RhcnRUaW1lJyk7CisKK3Byb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBh
ZGREaXYodCwgeydjbGFzcyc6ICdhbmltYXRlZC1kaXYnfSk7CisgIHZhciBldmVudFdhdGNoZXIg
PSBuZXcgRXZlbnRXYXRjaGVyKHQsIGRpdiwgQ1NTX0FOSU1fRVZFTlRTKTsKKyAgZGl2LnN0eWxl
LmFuaW1hdGlvbiA9ICdhbmltIDEwMHMgMTAwcyc7CisgIHZhciBhbmltYXRpb24gPSBkaXYuZ2V0
QW5pbWF0aW9ucygpWzBdOworCisgIHJldHVybiBhbmltYXRpb24ucmVhZHkudGhlbihmdW5jdGlv
bigpIHsKKyAgICBhc3NlcnRfbGVzc190aGFuX2VxdWFsKGFuaW1hdGlvbi5zdGFydFRpbWUsIGFu
aW1hdGlvbi50aW1lbGluZS5jdXJyZW50VGltZSwKKyAgICAgICdBbmltYXRpb24uc3RhcnRUaW1l
IHNob3VsZCBiZSBsZXNzIHRoYW4gdGhlIHRpbWVsaW5lXCdzICcgKworICAgICAgJ2N1cnJlbnRU
aW1lIG9uIHRoZSBmaXJzdCBwYWludCB0aWNrIGFmdGVyIGFuaW1hdGlvbiBjcmVhdGlvbicpOwor
CisgICAgYW5pbWF0aW9uLnN0YXJ0VGltZSA9IGFuaW1hdGlvbi50aW1lbGluZS5jdXJyZW50VGlt
ZSAtIDEwMCAqIE1TX1BFUl9TRUM7CisgICAgcmV0dXJuIGV2ZW50V2F0Y2hlci53YWl0X2Zvcign
YW5pbWF0aW9uc3RhcnQnKTsKKyAgfSkudGhlbihmdW5jdGlvbigpIHsKKyAgICBhbmltYXRpb24u
c3RhcnRUaW1lID0gYW5pbWF0aW9uLnRpbWVsaW5lLmN1cnJlbnRUaW1lIC0gMjAwICogTVNfUEVS
X1NFQzsKKyAgICByZXR1cm4gZXZlbnRXYXRjaGVyLndhaXRfZm9yKCdhbmltYXRpb25lbmQnKTsK
KyAgfSk7Cit9LCAnU2tpcHBpbmcgZm9yd2FyZCB0aHJvdWdoIGFuaW1hdGlvbicpOworCitwcm9t
aXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsnY2xhc3MnOiAn
YW5pbWF0ZWQtZGl2J30pOworICB2YXIgZXZlbnRXYXRjaGVyID0gbmV3IEV2ZW50V2F0Y2hlcih0
LCBkaXYsIENTU19BTklNX0VWRU5UUyk7CisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAnYW5pbSAx
MDBzIDEwMHMnOworICB2YXIgYW5pbWF0aW9uID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKyAg
YW5pbWF0aW9uLnN0YXJ0VGltZSA9IGFuaW1hdGlvbi50aW1lbGluZS5jdXJyZW50VGltZSAtIDIw
MCAqIE1TX1BFUl9TRUM7CisgIHZhciBwcmV2aW91c1RpbWVsaW5lVGltZSA9IGFuaW1hdGlvbi50
aW1lbGluZS5jdXJyZW50VGltZTsKKworICByZXR1cm4gZXZlbnRXYXRjaGVyLndhaXRfZm9yKFsn
YW5pbWF0aW9uc3RhcnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5pbWF0
aW9uZW5kJ10pLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudGlt
ZWxpbmUuY3VycmVudFRpbWUgLSBwcmV2aW91c1RpbWVsaW5lVGltZSA8CisgICAgICAgICAgICAg
ICAgICAxMDAgKiBNU19QRVJfU0VDLAorICAgICAgICAgICAgICAgICdTYW5pdHkgY2hlY2sgdGhh
dCBzZWVraW5nIHdvcmtlZCByYXRoZXIgdGhhbiB0aGUgZXZlbnRzICcgKworICAgICAgICAgICAg
ICAgICdmaXJpbmcgYWZ0ZXIgbm9ybWFsIHBsYXliYWNrIHRocm91Z2ggdGhlIHZlcnkgbG9uZyAn
ICsKKyAgICAgICAgICAgICAgICAnYW5pbWF0aW9uIGR1cmF0aW9uJyk7CisKKyAgICBhbmltYXRp
b24uc3RhcnRUaW1lID0gYW5pbWF0aW9uLnRpbWVsaW5lLmN1cnJlbnRUaW1lIC0gMTUwICogTVNf
UEVSX1NFQzsKKworICAgIC8vIERlc3BpdGUgZ29pbmcgYmFja3dhcmRzIGZyb20gYWZ0ZXIgdGhl
IGVuZCBvZiB0aGUgYW5pbWF0aW9uICh0byBiZWluZworICAgIC8vIGluIHRoZSBhY3RpdmUgaW50
ZXJ2YWwpLCB3ZSBub3cgZXhwZWN0IGFuICdhbmltYXRpb25zdGFydCcgZXZlbnQKKyAgICAvLyBi
ZWNhdXNlIHRoZSBhbmltYXRpb24gc2hvdWxkIGdvIGZyb20gYmVpbmcgaW5hY3RpdmUgdG8gYWN0
aXZlLgorICAgIHJldHVybiBldmVudFdhdGNoZXIud2FpdF9mb3IoJ2FuaW1hdGlvbnN0YXJ0Jyk7
CisgIH0pLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYW5pbWF0aW9uLnN0YXJ0VGltZSA9IGFuaW1h
dGlvbi50aW1lbGluZS5jdXJyZW50VGltZTsKKworICAgIC8vIERlc3BpdGUgZ29pbmcgYmFja3dh
cmRzIGZyb20ganVzdCBhZnRlciB0aGUgYWN0aXZlIGludGVydmFsIHN0YXJ0cyB0bworICAgIC8v
IHRoZSBhbmltYXRpb24gc3RhcnQgdGltZSwgd2Ugbm93IGV4cGVjdCBhbiBhbmltYXRpb25lbmQg
ZXZlbnQKKyAgICAvLyBiZWNhdXNlIHdlIHdlbnQgZnJvbSBpbnNpZGUgdG8gb3V0c2lkZSB0aGUg
YWN0aXZlIGludGVydmFsLgorICAgIHJldHVybiBldmVudFdhdGNoZXIud2FpdF9mb3IoJ2FuaW1h
dGlvbmVuZCcpOworICB9KS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9sZXNzX3RoYW5f
ZXF1YWwoYW5pbWF0aW9uLnN0YXJ0VGltZSwgYW5pbWF0aW9uLnRpbWVsaW5lLmN1cnJlbnRUaW1l
LAorICAgICAgJ0FuaW1hdGlvbi5zdGFydFRpbWUgc2hvdWxkIGJlIGxlc3MgdGhhbiB0aGUgdGlt
ZWxpbmVcJ3MgJyArCisgICAgICAnY3VycmVudFRpbWUgb24gdGhlIGZpcnN0IHBhaW50IHRpY2sg
YWZ0ZXIgYW5pbWF0aW9uIGNyZWF0aW9uJyk7CisgIH0pOworfSwgJ1NraXBwaW5nIGJhY2t3YXJk
cyB0aHJvdWdoIGFuaW1hdGlvbicpOworCisvLyBOZXh0IHdlIGhhdmUgbXVsdGlwbGUgdGVzdHMg
dG8gY2hlY2sgdGhhdCByZWR1bmRhbnQgc3RhcnRUaW1lIGNoYW5nZXMgZG8gTk9UCisvLyBkaXNw
YXRjaCBldmVudHMuIEl0J3MgaW1wb3NzaWJsZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGV2ZW50
cyBub3QgYmVpbmcKKy8vIGRpc3BhdGNoZWQgYW5kIGV2ZW50cyBqdXN0IHRha2luZyBhbiBpbmNy
ZWRpYmx5IGxvbmcgdGltZSB0byBkaXNwYXRjaAorLy8gd2l0aG91dCB3YWl0aW5nIGFuIGluZmlu
aXRlbHkgbG9uZyB0aW1lLiBPYnZpb3VzbHkgd2UgZG9uJ3Qgd2FudCB0byBkbyB0aGF0CisvLyAo
YmxvY2sgdGhpcyB0ZXN0IGZyb20gZmluaXNoaW5nIGZvcmV2ZXIpLCBzbyBpbnN0ZWFkIHdlIGp1
c3QgbGlzdGVuIGZvcgorLy8gZXZlbnRzIHVudGlsIHR3byBhbmltYXRpb24gZnJhbWVzIChpLmUu
IHJlcXVlc3RBbmltYXRpb25GcmFtZSBjYWxsYmFja3MpCisvLyBoYXZlIGhhcHBlbmVkLCB0aGVu
IGFzc3VtZSB0aGF0IG5vIGV2ZW50cyB3aWxsIGV2ZXIgYmUgZGlzcGF0Y2hlZCBmb3IgdGhlCisv
LyByZWR1bmRhbnQgY2hhbmdlcyBpZiBubyBldmVudHMgd2VyZSBkZXRlY3RlZCBpbiB0aGF0IHRp
bWUuCisKK3Byb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwg
eydjbGFzcyc6ICdhbmltYXRlZC1kaXYnfSk7CisgIHZhciBldmVudFdhdGNoZXIgPSBuZXcgRXZl
bnRXYXRjaGVyKHQsIGRpdiwgQ1NTX0FOSU1fRVZFTlRTKTsKKyAgZGl2LnN0eWxlLmFuaW1hdGlv
biA9ICJhbmltIDEwMHMgMTAwcyI7CisgIHZhciBhbmltYXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9u
cygpWzBdOworCisgIGFuaW1hdGlvbi5zdGFydFRpbWUgPSBhbmltYXRpb24udGltZWxpbmUuY3Vy
cmVudFRpbWUgLSAxNTAgKiBNU19QRVJfU0VDOworICBhbmltYXRpb24uc3RhcnRUaW1lID0gYW5p
bWF0aW9uLnRpbWVsaW5lLmN1cnJlbnRUaW1lIC0gNTAgKiBNU19QRVJfU0VDOworCisgIHJldHVy
biB3YWl0Rm9yQW5pbWF0aW9uRnJhbWVzKDIpOworfSwgJ1JlZHVuZGFudCBjaGFuZ2UsIGJlZm9y
ZSAtPiBhY3RpdmUsIHRoZW4gYmFjaycpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewor
ICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsnY2xhc3MnOiAnYW5pbWF0ZWQtZGl2J30pOworICB2YXIg
ZXZlbnRXYXRjaGVyID0gbmV3IEV2ZW50V2F0Y2hlcih0LCBkaXYsIENTU19BTklNX0VWRU5UUyk7
CisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAiYW5pbSAxMDBzIDEwMHMiOworICB2YXIgYW5pbWF0
aW9uID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKworICBhbmltYXRpb24uc3RhcnRUaW1lID0g
YW5pbWF0aW9uLnRpbWVsaW5lLmN1cnJlbnRUaW1lIC0gMjUwICogTVNfUEVSX1NFQzsKKyAgYW5p
bWF0aW9uLnN0YXJ0VGltZSA9IGFuaW1hdGlvbi50aW1lbGluZS5jdXJyZW50VGltZSAtIDUwICog
TVNfUEVSX1NFQzsKKworICByZXR1cm4gd2FpdEZvckFuaW1hdGlvbkZyYW1lcygyKTsKK30sICdS
ZWR1bmRhbnQgY2hhbmdlLCBiZWZvcmUgLT4gYWZ0ZXIsIHRoZW4gYmFjaycpOworCitwcm9taXNl
X3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsnY2xhc3MnOiAnYW5p
bWF0ZWQtZGl2J30pOworICB2YXIgZXZlbnRXYXRjaGVyID0gbmV3IEV2ZW50V2F0Y2hlcih0LCBk
aXYsIENTU19BTklNX0VWRU5UUyk7CisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAiYW5pbSAxMDBz
IDEwMHMiOworICB2YXIgYW5pbWF0aW9uID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKworICB2
YXIgcmV0UHJvbWlzZSA9ICBldmVudFdhdGNoZXIud2FpdF9mb3IoJ2FuaW1hdGlvbnN0YXJ0Jyku
dGhlbihmdW5jdGlvbigpIHsKKyAgICBhbmltYXRpb24uc3RhcnRUaW1lID0gYW5pbWF0aW9uLnRp
bWVsaW5lLmN1cnJlbnRUaW1lIC0gNTAgKiBNU19QRVJfU0VDOworICAgIGFuaW1hdGlvbi5zdGFy
dFRpbWUgPSBhbmltYXRpb24udGltZWxpbmUuY3VycmVudFRpbWUgLSAxNTAgKiBNU19QRVJfU0VD
OworCisgICAgcmV0dXJuIHdhaXRGb3JBbmltYXRpb25GcmFtZXMoMik7CisgIH0pOworICAvLyBn
ZXQgdXMgaW50byB0aGUgaW5pdGlhbCBzdGF0ZToKKyAgYW5pbWF0aW9uLnN0YXJ0VGltZSA9IGFu
aW1hdGlvbi50aW1lbGluZS5jdXJyZW50VGltZSAtIDE1MCAqIE1TX1BFUl9TRUM7CisKKyAgcmV0
dXJuIHJldFByb21pc2U7Cit9LCAnUmVkdW5kYW50IGNoYW5nZSwgYWN0aXZlIC0+IGJlZm9yZSwg
dGhlbiBiYWNrJyk7CisKK3Byb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBh
ZGREaXYodCwgeydjbGFzcyc6ICdhbmltYXRlZC1kaXYnfSk7CisgIHZhciBldmVudFdhdGNoZXIg
PSBuZXcgRXZlbnRXYXRjaGVyKHQsIGRpdiwgQ1NTX0FOSU1fRVZFTlRTKTsKKyAgZGl2LnN0eWxl
LmFuaW1hdGlvbiA9ICJhbmltIDEwMHMgMTAwcyI7CisgIHZhciBhbmltYXRpb24gPSBkaXYuZ2V0
QW5pbWF0aW9ucygpWzBdOworCisgIHZhciByZXRQcm9taXNlID0gZXZlbnRXYXRjaGVyLndhaXRf
Zm9yKCdhbmltYXRpb25zdGFydCcpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYW5pbWF0aW9uLnN0
YXJ0VGltZSA9IGFuaW1hdGlvbi50aW1lbGluZS5jdXJyZW50VGltZSAtIDI1MCAqIE1TX1BFUl9T
RUM7CisgICAgYW5pbWF0aW9uLnN0YXJ0VGltZSA9IGFuaW1hdGlvbi50aW1lbGluZS5jdXJyZW50
VGltZSAtIDE1MCAqIE1TX1BFUl9TRUM7CisKKyAgICByZXR1cm4gd2FpdEZvckFuaW1hdGlvbkZy
YW1lcygyKTsKKyAgfSk7CisgIC8vIGdldCB1cyBpbnRvIHRoZSBpbml0aWFsIHN0YXRlOgorICBh
bmltYXRpb24uc3RhcnRUaW1lID0gYW5pbWF0aW9uLnRpbWVsaW5lLmN1cnJlbnRUaW1lIC0gMTUw
ICogTVNfUEVSX1NFQzsKKworICByZXR1cm4gcmV0UHJvbWlzZTsKK30sICdSZWR1bmRhbnQgY2hh
bmdlLCBhY3RpdmUgLT4gYWZ0ZXIsIHRoZW4gYmFjaycpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rp
b24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsnY2xhc3MnOiAnYW5pbWF0ZWQtZGl2J30p
OworICB2YXIgZXZlbnRXYXRjaGVyID0gbmV3IEV2ZW50V2F0Y2hlcih0LCBkaXYsIENTU19BTklN
X0VWRU5UUyk7CisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAiYW5pbSAxMDBzIDEwMHMiOworICB2
YXIgYW5pbWF0aW9uID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKworICB2YXIgcmV0UHJvbWlz
ZSA9IGV2ZW50V2F0Y2hlci53YWl0X2ZvcihbJ2FuaW1hdGlvbnN0YXJ0JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmltYXRpb25lbmQnXSkudGhlbihmdW5j
dGlvbigpIHsKKyAgICBhbmltYXRpb24uc3RhcnRUaW1lID0gYW5pbWF0aW9uLnRpbWVsaW5lLmN1
cnJlbnRUaW1lIC0gNTAgKiBNU19QRVJfU0VDOworICAgIGFuaW1hdGlvbi5zdGFydFRpbWUgPSBh
bmltYXRpb24udGltZWxpbmUuY3VycmVudFRpbWUgLSAyNTAgKiBNU19QRVJfU0VDOworCisgICAg
cmV0dXJuIHdhaXRGb3JBbmltYXRpb25GcmFtZXMoMik7CisgIH0pOworICAvLyBnZXQgdXMgaW50
byB0aGUgaW5pdGlhbCBzdGF0ZToKKyAgYW5pbWF0aW9uLnN0YXJ0VGltZSA9IGFuaW1hdGlvbi50
aW1lbGluZS5jdXJyZW50VGltZSAtIDI1MCAqIE1TX1BFUl9TRUM7CisKKyAgcmV0dXJuIHJldFBy
b21pc2U7Cit9LCAnUmVkdW5kYW50IGNoYW5nZSwgYWZ0ZXIgLT4gYmVmb3JlLCB0aGVuIGJhY2sn
KTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7
J2NsYXNzJzogJ2FuaW1hdGVkLWRpdid9KTsKKyAgdmFyIGV2ZW50V2F0Y2hlciA9IG5ldyBFdmVu
dFdhdGNoZXIodCwgZGl2LCBDU1NfQU5JTV9FVkVOVFMpOworICBkaXYuc3R5bGUuYW5pbWF0aW9u
ID0gImFuaW0gMTAwcyAxMDBzIjsKKyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25z
KClbMF07CisKKyAgdmFyIHJldFByb21pc2UgPSBldmVudFdhdGNoZXIud2FpdF9mb3IoWydhbmlt
YXRpb25zdGFydCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
YW5pbWF0aW9uZW5kJ10pLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYW5pbWF0aW9uLnN0YXJ0VGlt
ZSA9IGFuaW1hdGlvbi50aW1lbGluZS5jdXJyZW50VGltZSAtIDE1MCAqIE1TX1BFUl9TRUM7Cisg
ICAgYW5pbWF0aW9uLnN0YXJ0VGltZSA9IGFuaW1hdGlvbi50aW1lbGluZS5jdXJyZW50VGltZSAt
IDI1MCAqIE1TX1BFUl9TRUM7CisKKyAgICByZXR1cm4gd2FpdEZvckFuaW1hdGlvbkZyYW1lcygy
KTsKKworICB9KTsKKyAgLy8gZ2V0IHVzIGludG8gdGhlIGluaXRpYWwgc3RhdGU6CisgIGFuaW1h
dGlvbi5zdGFydFRpbWUgPSBhbmltYXRpb24udGltZWxpbmUuY3VycmVudFRpbWUgLSAyNTAgKiBN
U19QRVJfU0VDOworCisgIHJldHVybiByZXRQcm9taXNlOworfSwgJ1JlZHVuZGFudCBjaGFuZ2Us
IGFmdGVyIC0+IGFjdGl2ZSwgdGhlbiBiYWNrJyk7CisKK3Byb21pc2VfdGVzdChmdW5jdGlvbih0
KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeydjbGFzcyc6ICdhbmltYXRlZC1kaXYnfSk7Cisg
IGRpdi5zdHlsZS5hbmltYXRpb24gPSAnYW5pbSAxMDBzIDEwMHMnOworICB2YXIgYW5pbWF0aW9u
ID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKyAgdmFyIHN0b3JlZEN1cnJlbnRUaW1lOworCisg
IHJldHVybiBhbmltYXRpb24ucmVhZHkudGhlbihmdW5jdGlvbigpIHsKKyAgICBzdG9yZWRDdXJy
ZW50VGltZSA9IGFuaW1hdGlvbi5jdXJyZW50VGltZTsKKyAgICBhbmltYXRpb24uc3RhcnRUaW1l
ID0gbnVsbDsKKyAgICByZXR1cm4gYW5pbWF0aW9uLnJlYWR5OworICB9KS50aGVuKGZ1bmN0aW9u
KCkgeworICAgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uLmN1cnJlbnRUaW1lLCBzdG9yZWRDdXJy
ZW50VGltZSwKKyAgICAgICdUZXN0IHRoYXQgaG9sZCB0aW1lIGlzIGNvcnJlY3QnKTsKKyAgfSk7
Cit9LCAnU2V0dGluZyBzdGFydFRpbWUgdG8gbnVsbCcpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rp
b24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsnY2xhc3MnOiAnYW5pbWF0ZWQtZGl2J30p
OworICBkaXYuc3R5bGUuYW5pbWF0aW9uID0gJ2FuaW0gMTAwcyc7CisgIHZhciBhbmltYXRpb24g
PSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworCisgIHJldHVybiBhbmltYXRpb24ucmVhZHkudGhl
bihmdW5jdGlvbigpIHsKKyAgICB2YXIgc2F2ZWRTdGFydFRpbWUgPSBhbmltYXRpb24uc3RhcnRU
aW1lOworCisgICAgYXNzZXJ0X25vdF9lcXVhbHMoYW5pbWF0aW9uLnN0YXJ0VGltZSwgbnVsbCwK
KyAgICAgICdBbmltYXRpb24uc3RhcnRUaW1lIG5vdCBudWxsIG9uIHJlYWR5IFByb21pc2UgcmVz
b2x2ZScpOworCisgICAgYW5pbWF0aW9uLnBhdXNlKCk7CisgICAgcmV0dXJuIGFuaW1hdGlvbi5y
ZWFkeTsKKyAgfSkudGhlbihmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlv
bi5zdGFydFRpbWUsIG51bGwsCisgICAgICAnQW5pbWF0aW9uLnN0YXJ0VGltZSBpcyBudWxsIGFm
dGVyIHBhdXNlZCcpOworICAgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uLnBsYXlTdGF0ZSwgJ3Bh
dXNlZCcsCisgICAgICAnQW5pbWF0aW9uLnBsYXlTdGF0ZSBpcyAicGF1c2VkIiBhZnRlciBwYXVz
ZSgpIGNhbGwnKTsKKyAgfSk7Cit9LCAnQW5pbWF0aW9uLnN0YXJ0VGltZSBhZnRlciBwYXVzaW5n
Jyk7CisKK3Byb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwg
eydjbGFzcyc6ICdhbmltYXRlZC1kaXYnfSk7CisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAnYW5p
bSAxMDBzJzsKKyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisKKyAg
cmV0dXJuIGFuaW1hdGlvbi5yZWFkeS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGFuaW1hdGlvbi5j
YW5jZWwoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbi5zdGFydFRpbWUsIG51bGwsCisg
ICAgICAgICAgICAgICAgICAnVGhlIHN0YXJ0VGltZSBvZiBhIGNhbmNlbGxlZCBhbmltYXRpb24g
c2hvdWxkIGJlIG51bGwnKTsKKyAgfSk7Cit9LCAnQW5pbWF0aW9uLnN0YXJ0VGltZSBhZnRlciBj
YW5jZWxsaW5nJyk7CisKKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2Fu
aW1hdGlvbnMtZHluYW1pYy1jaGFuZ2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb25zLWR5bmFtaWMtY2hhbmdl
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzA3YTUyNzBjYThlYjQ1YTg4ODk4NzZiOTRmMDJk
NWYzZTdmZGIzZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb25zLWR5bmFtaWMtY2hhbmdlcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw3IEBACisKK1BBU1MgQW5pbWF0aW9ucyBwcmVzZXJ2ZSB0aGVpciBz
dGFydFRpbWUgd2hlbiBjaGFuZ2VkIAorUEFTUyBVcGRhdGVkIEFuaW1hdGlvbnMgbWFpbnRhaW4g
dGhlaXIgb3JkZXIgaW4gdGhlIGxpc3QgCitGQUlMIE9ubHkgdGhlIHN0YXJ0VGltZXMgb2YgZXhp
c3RpbmcgYW5pbWF0aW9ucyBhcmUgcHJlc2VydmVkIGFzc2VydF90cnVlOiBOZXcgQW5pbWF0aW9u
IGlzIHByZXBlbmRlZCB0byBzdGFydCBvZiBsaXN0IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitG
QUlMIEFuaW1hdGlvbnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGxpc3Qgd2hp
bGUgcHJlc2VydmluZyB0aGUgc3RhdGUgb2YgZXhpc3RpbmcgQW5pbWF0aW9ucyBhc3NlcnRfZXF1
YWxzOiBMaXN0IG9mIEFuaW1hdGlvbnMgd2FzIHRyaW1tZWQgZXhwZWN0ZWQgMSBidXQgZ290IDI2
CitGQUlMIEFuaW1hdGlvbiBzdGF0ZSBpcyBwcmVzZXJ2ZWQgd2hlbiBpbnRlcmxlYXZpbmcgYW5p
bWF0aW9ucyBpbiBsaXN0IGFzc2VydF9ub3RfZXF1YWxzOiBOZXcgQW5pbWF0aW9ucyBhcmUgYWRk
ZWQgdG8gc3RhcnQgb2YgdGhlIGxpc3QgZ290IGRpc2FsbG93ZWQgdmFsdWUgb2JqZWN0ICJbb2Jq
ZWN0IENTU0FuaW1hdGlvbl0iCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb25zLWR5bmFtaWMtY2hhbmdlcy5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2FuaW1h
dGlvbnMtZHluYW1pYy1jaGFuZ2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTNmOWZhOTdlMDU5MzdiNzdh
MmRiYTZlZjllMTlmNDdlZDg0MzYzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb25zLWR5bmFtaWMtY2hh
bmdlcy5odG1sCkBAIC0wLDAgKzEsMTU4IEBACis8IWRvY3R5cGUgaHRtbD48IS0tIHdlYmtpdC10
ZXN0LXJ1bm5lciBbIGVuYWJsZUNTU0FuaW1hdGlvbnNBbmRDU1NUcmFuc2l0aW9uc0JhY2tlZEJ5
V2ViQW5pbWF0aW9ucz10cnVlIF0gLS0+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8c3R5
bGU+CitAa2V5ZnJhbWVzIGFuaW0xIHsKKyAgdG8geyBsZWZ0OiAxMDBweCB9Cit9CitAa2V5ZnJh
bWVzIGFuaW0yIHsgfQorPC9zdHlsZT4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxz
Y3JpcHQ+CisndXNlIHN0cmljdCc7CisKK3Byb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgIHZh
ciBkaXYgPSBhZGREaXYodCk7CisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAnYW5pbTEgMTAwcyc7
CisgIHZhciBvcmlnaW5hbEFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisgIHZh
ciBvcmlnaW5hbFN0YXJ0VGltZTsKKyAgdmFyIG9yaWdpbmFsQ3VycmVudFRpbWU7CisKKyAgLy8g
V2FpdCBhIG1vbWVudCBzbyB3ZSBjYW4gY29uZmlybSB0aGUgc3RhcnRUaW1lIGRvZXNuJ3QgY2hh
bmdlIChhbmQgZG9lc24ndAorICAvLyBzaW1wbHkgcmVmbGVjdCB0aGUgY3VycmVudCB0aW1lKS4K
KyAgcmV0dXJuIG9yaWdpbmFsQW5pbWF0aW9uLnJlYWR5LnRoZW4oZnVuY3Rpb24oKSB7CisgICAg
b3JpZ2luYWxTdGFydFRpbWUgPSBvcmlnaW5hbEFuaW1hdGlvbi5zdGFydFRpbWU7CisgICAgb3Jp
Z2luYWxDdXJyZW50VGltZSA9IG9yaWdpbmFsQW5pbWF0aW9uLmN1cnJlbnRUaW1lOworCisgICAg
Ly8gV2FpdCBhIG1vbWVudCBzbyB3ZSBjYW4gY29uZmlybSB0aGUgc3RhcnRUaW1lIGRvZXNuJ3Qg
Y2hhbmdlIChhbmQKKyAgICAvLyBkb2Vzbid0IHNpbXBseSByZWZsZWN0IHRoZSBjdXJyZW50IHRp
bWUpLgorICAgIHJldHVybiB3YWl0Rm9yTmV4dEZyYW1lKCk7CisgIH0pLnRoZW4oZnVuY3Rpb24o
KSB7CisgICAgZGl2LnN0eWxlLmFuaW1hdGlvbkR1cmF0aW9uID0gJzIwMHMnOworICAgIHZhciBh
bmltYXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworICAgIGFzc2VydF9lcXVhbHMoYW5p
bWF0aW9uLCBvcmlnaW5hbEFuaW1hdGlvbiwKKyAgICAgICAgICAgICAgICAgICdUaGUgc2FtZSBB
bmltYXRpb24gaXMgcmV0dXJuZWQgYWZ0ZXIgdXBkYXRpbmcnCisgICAgICAgICAgICAgICAgICAr
ICcgYW5pbWF0aW9uIGR1cmF0aW9uJyk7CisgICAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb24uc3Rh
cnRUaW1lLCBvcmlnaW5hbFN0YXJ0VGltZSwKKyAgICAgICAgICAgICAgICAgICdBbmltYXRpb25z
IHJldHVybmVkIGJ5IGdldEFuaW1hdGlvbnMgcHJlc2VydmUnCisgICAgICAgICAgICAgICAgICAr
ICcgdGhlaXIgc3RhcnRUaW1lIGV2ZW4gd2hlbiB0aGV5IGFyZSB1cGRhdGVkJyk7CisgICAgLy8g
U2FuaXR5IGNoZWNrCisgICAgYXNzZXJ0X25vdF9lcXVhbHMoYW5pbWF0aW9uLmN1cnJlbnRUaW1l
LCBvcmlnaW5hbEN1cnJlbnRUaW1lLAorICAgICAgICAgICAgICAgICAgICAgICdBbmltYXRpb24u
Y3VycmVudFRpbWUgaGFzIHVwZGF0ZWQgaW4gbmV4dCcKKyAgICAgICAgICAgICAgICAgICAgICAr
ICcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGNhbGxiYWNrJyk7CisgIH0pOworfSwgJ0FuaW1hdGlv
bnMgcHJlc2VydmUgdGhlaXIgc3RhcnRUaW1lIHdoZW4gY2hhbmdlZCcpOworCit0ZXN0KGZ1bmN0
aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0KTsKKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9
ICdhbmltMSAxMDBzLCBhbmltMSAxMDBzJzsKKworICAvLyBTdG9yZSBvcmlnaW5hbCBzdGF0ZQor
ICB2YXIgYW5pbWF0aW9ucyA9IGRpdi5nZXRBbmltYXRpb25zKCk7CisgIHZhciBhbmltYXRpb24x
ID0gYW5pbWF0aW9uc1swXTsKKyAgdmFyIGFuaW1hdGlvbjIgPSBhbmltYXRpb25zWzFdOworCisg
IC8vIFVwZGF0ZSBmaXJzdCBpbiBsaXN0CisgIGRpdi5zdHlsZS5hbmltYXRpb25EdXJhdGlvbiA9
ICcyMDBzLCAxMDBzJzsKKyAgYW5pbWF0aW9ucyA9IGRpdi5nZXRBbmltYXRpb25zKCk7CisgIGFz
c2VydF9lcXVhbHMoYW5pbWF0aW9uc1swXSwgYW5pbWF0aW9uMSwKKyAgICAgICAgICAgICAgICAn
Rmlyc3QgQW5pbWF0aW9uIGlzIGluIHNhbWUgcG9zaXRpb24gYWZ0ZXIgdXBkYXRlJyk7CisgIGFz
c2VydF9lcXVhbHMoYW5pbWF0aW9uc1sxXSwgYW5pbWF0aW9uMiwKKyAgICAgICAgICAgICAgICAn
U2Vjb25kIEFuaW1hdGlvbiBpcyBpbiBzYW1lIHBvc2l0aW9uIGFmdGVyIHVwZGF0ZScpOworfSwg
J1VwZGF0ZWQgQW5pbWF0aW9ucyBtYWludGFpbiB0aGVpciBvcmRlciBpbiB0aGUgbGlzdCcpOwor
Citwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQpOworICBk
aXYuc3R5bGUuYW5pbWF0aW9uID0gJ2FuaW0xIDIwMHMsIGFuaW0xIDEwMHMnOworCisgIC8vIFN0
b3JlIG9yaWdpbmFsIHN0YXRlCisgIHZhciBhbmltYXRpb25zID0gZGl2LmdldEFuaW1hdGlvbnMo
KTsKKyAgdmFyIGFuaW1hdGlvbjEgPSBhbmltYXRpb25zWzBdOworICB2YXIgYW5pbWF0aW9uMiA9
IGFuaW1hdGlvbnNbMV07CisKKyAgLy8gV2FpdCBiZWZvcmUgY29udGludWluZyBzbyB3ZSBjYW4g
Y29tcGFyZSBzdGFydCB0aW1lcyAob3RoZXJ3aXNlIHRoZQorICAvLyBuZXcgQW5pbWF0aW9uIG9i
amVjdHMgYW5kIGV4aXN0aW5nIEFuaW1hdGlvbiBvYmplY3RzIHdpbGwgYWxsIGhhdmUgdGhlIHNh
bWUKKyAgLy8gc3RhcnQgdGltZSkuCisgIHJldHVybiB3YWl0Rm9yQWxsQW5pbWF0aW9ucyhhbmlt
YXRpb25zKS50aGVuKHdhaXRGb3JGcmFtZSkudGhlbihmdW5jdGlvbigpIHsKKyAgICAvLyBTd2Fw
IGR1cmF0aW9uIG9mIGZpcnN0IGFuZCBzZWNvbmQgaW4gbGlzdCBhbmQgcHJlcGVuZCBhbmltYXRp
b24gYXQgdGhlCisgICAgLy8gc2FtZSB0aW1lCisgICAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICdh
bmltMSAxMDBzLCBhbmltMSAxMDBzLCBhbmltMSAyMDBzJzsKKyAgICBhbmltYXRpb25zID0gZGl2
LmdldEFuaW1hdGlvbnMoKTsKKyAgICBhc3NlcnRfdHJ1ZShhbmltYXRpb25zWzBdICE9PSBhbmlt
YXRpb24xICYmIGFuaW1hdGlvbnNbMF0gIT09IGFuaW1hdGlvbjIsCisgICAgICAgICAgICAgICAg
J05ldyBBbmltYXRpb24gaXMgcHJlcGVuZGVkIHRvIHN0YXJ0IG9mIGxpc3QnKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGFuaW1hdGlvbnNbMV0sIGFuaW1hdGlvbjEsCisgICAgICAgICAgICAgICAgICAn
Rmlyc3QgQW5pbWF0aW9uIGlzIGluIHNlY29uZCBwb3NpdGlvbiBhZnRlciB1cGRhdGUnKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbnNbMl0sIGFuaW1hdGlvbjIsCisgICAgICAgICAgICAg
ICAgICAnU2Vjb25kIEFuaW1hdGlvbiBpcyBpbiB0aGlyZCBwb3NpdGlvbiBhZnRlciB1cGRhdGUn
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbnNbMV0uc3RhcnRUaW1lLCBhbmltYXRpb25z
WzJdLnN0YXJ0VGltZSwKKyAgICAgICAgICAgICAgICAgICdPbGQgQW5pbWF0aW9ucyBoYXZlIHRo
ZSBzYW1lIHN0YXJ0IHRpbWUnKTsKKyAgICAvLyBUT0RPOiBDaGVjayB0aGF0IGFuaW1hdGlvbnNb
MF0uc3RhcnRUaW1lID09PSBudWxsCisgICAgcmV0dXJuIGFuaW1hdGlvbnNbMF0ucmVhZHk7Cisg
IH0pLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbihhbmltYXRpb25z
WzBdLnN0YXJ0VGltZSwgYW5pbWF0aW9uc1sxXS5zdGFydFRpbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAnTmV3IEFuaW1hdGlvbiBoYXMgbGF0ZXIgc3RhcnQgdGltZScpOworICB9KTsKK30s
ICdPbmx5IHRoZSBzdGFydFRpbWVzIG9mIGV4aXN0aW5nIGFuaW1hdGlvbnMgYXJlIHByZXNlcnZl
ZCcpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQp
OworICBkaXYuc3R5bGUuYW5pbWF0aW9uID0gJ2FuaW0xIDEwMHMsIGFuaW0xIDEwMHMnOworICB2
YXIgc2Vjb25kQW5pbWF0aW9uID0gZGl2LmdldEFuaW1hdGlvbnMoKVsxXTsKKworICAvLyBXYWl0
IGJlZm9yZSBjb250aW51aW5nIHNvIHdlIGNhbiBjb21wYXJlIHN0YXJ0IHRpbWVzCisgIHJldHVy
biBzZWNvbmRBbmltYXRpb24ucmVhZHkudGhlbih3YWl0Rm9yTmV4dEZyYW1lKS50aGVuKGZ1bmN0
aW9uKCkgeworICAgIC8vIFRyaW0gbGlzdCBvZiBhbmltYXRpb25zCisgICAgZGl2LnN0eWxlLmFu
aW1hdGlvbk5hbWUgPSAnYW5pbTEnOworICAgIHZhciBhbmltYXRpb25zID0gZGl2LmdldEFuaW1h
dGlvbnMoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbnMubGVuZ3RoLCAxLCAnTGlzdCBv
ZiBBbmltYXRpb25zIHdhcyB0cmltbWVkJyk7CisgICAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb25z
WzBdLCBzZWNvbmRBbmltYXRpb24sCisgICAgICAgICAgICAgICAgICAnUmVtYWluaW5nIEFuaW1h
dGlvbiBpcyB0aGUgc2Vjb25kIG9uZSBpbiB0aGUgbGlzdCcpOworICAgIGFzc2VydF9lcXVhbHMo
dHlwZW9mKGFuaW1hdGlvbnNbMF0uc3RhcnRUaW1lKSwgJ251bWJlcicsCisgICAgICAgICAgICAg
ICAgICAnUmVtYWluaW5nIEFuaW1hdGlvbiBoYXMgcmVzb2x2ZWQgc3RhcnRUaW1lJyk7CisgICAg
YXNzZXJ0X2xlc3NfdGhhbihhbmltYXRpb25zWzBdLnN0YXJ0VGltZSwKKyAgICAgICAgICAgICAg
ICAgICAgIGFuaW1hdGlvbnNbMF0udGltZWxpbmUuY3VycmVudFRpbWUsCisgICAgICAgICAgICAg
ICAgICAgICAnUmVtYWluaW5nIEFuaW1hdGlvbiBwcmVzZXJ2ZXMgc3RhcnRUaW1lJyk7CisgIH0p
OworfSwgJ0FuaW1hdGlvbnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGxpc3Qg
d2hpbGUgcHJlc2VydmluZycKKyAgICsgJyB0aGUgc3RhdGUgb2YgZXhpc3RpbmcgQW5pbWF0aW9u
cycpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQp
OworICBkaXYuc3R5bGUuYW5pbWF0aW9uID0gJ2FuaW0xIDEwMHMnOworICB2YXIgZmlyc3RBZGRl
ZEFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClbMF0sCisgICAgICBzZWNvbmRBZGRlZEFu
aW1hdGlvbiwKKyAgICAgIGFuaW1hdGlvbnM7CisKKyAgLy8gV2FpdCBhbmQgYWRkIHNlY29uZCBB
bmltYXRpb24KKyAgcmV0dXJuIGZpcnN0QWRkZWRBbmltYXRpb24ucmVhZHkudGhlbih3YWl0Rm9y
RnJhbWUpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICdhbmlt
MSAxMDBzLCBhbmltMSAxMDBzJzsKKyAgICBzZWNvbmRBZGRlZEFuaW1hdGlvbiA9IGRpdi5nZXRB
bmltYXRpb25zKClbMF07CisKKyAgICAvLyBXYWl0IGFnYWluIGFuZCBhZGQgYW5vdGhlciBBbmlt
YXRpb24KKyAgICByZXR1cm4gc2Vjb25kQWRkZWRBbmltYXRpb24ucmVhZHkudGhlbih3YWl0Rm9y
RnJhbWUpOworICB9KS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGRpdi5zdHlsZS5hbmltYXRpb24g
PSAnYW5pbTEgMTAwcywgYW5pbTIgMTAwcywgYW5pbTEgMTAwcyc7CisgICAgYW5pbWF0aW9ucyA9
IGRpdi5nZXRBbmltYXRpb25zKCk7CisgICAgYXNzZXJ0X25vdF9lcXVhbHMoZmlyc3RBZGRlZEFu
aW1hdGlvbiwgc2Vjb25kQWRkZWRBbmltYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgJ05l
dyBBbmltYXRpb25zIGFyZSBhZGRlZCB0byBzdGFydCBvZiB0aGUgbGlzdCcpOworICAgIGFzc2Vy
dF9lcXVhbHMoYW5pbWF0aW9uc1swXSwgc2Vjb25kQWRkZWRBbmltYXRpb24sCisgICAgICAgICAg
ICAgICAgICAnU2Vjb25kIEFuaW1hdGlvbiByZW1haW5zIGluIHNhbWUgcG9zaXRpb24gYWZ0ZXIn
CisgICAgICAgICAgICAgICAgICArICcgaW50ZXJsZWF2aW5nJyk7CisgICAgYXNzZXJ0X2VxdWFs
cyhhbmltYXRpb25zWzJdLCBmaXJzdEFkZGVkQW5pbWF0aW9uLAorICAgICAgICAgICAgICAgICAg
J0ZpcnN0IEFuaW1hdGlvbiByZW1haW5zIGluIHNhbWUgcG9zaXRpb24gYWZ0ZXInCisgICAgICAg
ICAgICAgICAgICArICcgaW50ZXJsZWF2aW5nJyk7CisgICAgcmV0dXJuIGFuaW1hdGlvbnNbMV0u
cmVhZHk7CisgIH0pLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbihh
bmltYXRpb25zWzFdLnN0YXJ0VGltZSwgYW5pbWF0aW9uc1swXS5zdGFydFRpbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAnSW50ZXJsZWF2ZWQgYW5pbWF0aW9uIHN0YXJ0cyBsYXRlciB0aGFu
IGV4aXN0aW5nICcgKworICAgICAgICAgICAgICAgICAgICAgICAgJ2FuaW1hdGlvbnMnKTsKKyAg
ICBhc3NlcnRfZ3JlYXRlcl90aGFuKGFuaW1hdGlvbnNbMF0uc3RhcnRUaW1lLCBhbmltYXRpb25z
WzJdLnN0YXJ0VGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdPcmlnaW5hbCBhbmltYXRp
b25zIHJldGFpbiB0aGVpciBzdGFydCB0aW1lJyk7CisgIH0pOworfSwgJ0FuaW1hdGlvbiBzdGF0
ZSBpcyBwcmVzZXJ2ZWQgd2hlbiBpbnRlcmxlYXZpbmcgYW5pbWF0aW9ucyBpbiBsaXN0Jyk7CisK
Kzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2Nzc2FuaW1hdGlvbi1hbmltYXRpb25uYW1lLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVz
dF9jc3NhbmltYXRpb24tYW5pbWF0aW9ubmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk1
ZDVkNDdmYTBjYTVhZDRmNDhkMTQ1NGRkNmYyZDU1ODFmZTBjMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9jc3Nhbmlt
YXRpb24tYW5pbWF0aW9ubmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKK1BBU1Mg
QW5pbWF0aW9uIG5hbWUgbWFrZXMga2V5ZnJhbWUgcnVsZSAKK1BBU1MgRXNjYXBlZCBhbmltYXRp
b24gbmFtZSAKK1BBU1MgQW5pbWF0aW9uIG5hbWUgd2l0aCBoZXgtZXNjYXBlIAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfY3Nz
YW5pbWF0aW9uLWFuaW1hdGlvbm5hbWUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9jc3NhbmltYXRpb24tYW5pbWF0aW9ubmFtZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjllYjIyODcyMjAyYTU5YjU3ZDQ0OTVmOTRkMTY0ZTFjNDkxNTlmYWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25z
L3Rlc3RfY3NzYW5pbWF0aW9uLWFuaW1hdGlvbm5hbWUuaHRtbApAQCAtMCwwICsxLDM5IEBACis8
IWRvY3R5cGUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUNTU0FuaW1hdGlv
bnNBbmRDU1NUcmFuc2l0aW9uc0JhY2tlZEJ5V2ViQW5pbWF0aW9ucz10cnVlIF0gLS0+Cis8bWV0
YSBjaGFyc2V0PXV0Zi04PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVz
dGNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CitAa2V5ZnJhbWVzIHh5eiB7CisgIHRvIHsg
bGVmdDogMTAwcHggfQorfQorPC9zdHlsZT4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4K
KzxzY3JpcHQ+CisndXNlIHN0cmljdCc7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2
ID0gYWRkRGl2KHQpOworICBkaXYuc3R5bGUuYW5pbWF0aW9uID0gJ3h5eiAxMDBzJzsKKyAgYXNz
ZXJ0X2VxdWFscyhkaXYuZ2V0QW5pbWF0aW9ucygpWzBdLmFuaW1hdGlvbk5hbWUsICd4eXonLAor
ICAgICAgICAgICAgICAgICdBbmltYXRpb24gbmFtZSBtYXRjaGVzIGtleWZyYW1lcyBydWxlIG5h
bWUnKTsKK30sICdBbmltYXRpb24gbmFtZSBtYWtlcyBrZXlmcmFtZSBydWxlJyk7CisKK3Rlc3Qo
ZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQpOworICBkaXYuc3R5bGUuYW5pbWF0
aW9uID0gJ3hcXHl6IDEwMHMnOworICBhc3NlcnRfZXF1YWxzKGRpdi5nZXRBbmltYXRpb25zKClb
MF0uYW5pbWF0aW9uTmFtZSwgJ3h5eicsCisgICAgICAgICAgICAgICAgJ0VzY2FwZWQgYW5pbWF0
aW9uIG5hbWUgbWF0Y2hlcyBrZXlmcmFtZXMgcnVsZSBuYW1lJyk7Cit9LCAnRXNjYXBlZCBhbmlt
YXRpb24gbmFtZScpOworCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0
KTsKKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICd4XFw3OSB6IDEwMHMnOworICBhc3NlcnRfZXF1
YWxzKGRpdi5nZXRBbmltYXRpb25zKClbMF0uYW5pbWF0aW9uTmFtZSwgJ3h5eicsCisgICAgICAg
ICAgICAgICAgJ0hleC1lc2NhcGVkIGFuaW1hdGlvbiBuYW1lIG1hdGNoZXMga2V5ZnJhbWVzIHJ1
bGUnCisgICAgICAgICAgICAgICAgKyAnIG5hbWUnKTsKK30sICdBbmltYXRpb24gbmFtZSB3aXRo
IGhleC1lc2NhcGUnKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfZG9jdW1lbnQtZ2V0LWFu
aW1hdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3Mt
YW5pbWF0aW9ucy90ZXN0X2RvY3VtZW50LWdldC1hbmltYXRpb25zLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xZTUyNjljMTM2YWRjMmE4ODY1ZjZlZjY0YmJlMzdmZTQ3NjA0YmM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90
ZXN0X2RvY3VtZW50LWdldC1hbmltYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBA
CisKK1BBU1MgZ2V0QW5pbWF0aW9ucyBmb3Igbm9uLWFuaW1hdGVkIGNvbnRlbnQgCitQQVNTIGdl
dEFuaW1hdGlvbnMgZm9yIENTUyBBbmltYXRpb25zIAorUEFTUyBPcmRlciBvZiBDU1MgQW5pbWF0
aW9ucyAtIHdpdGhpbiBhbiBlbGVtZW50IAorRkFJTCBPcmRlciBvZiBDU1MgQW5pbWF0aW9ucyAt
IGFjcm9zcyBlbGVtZW50cyBhc3NlcnRfZXF1YWxzOiBPcmRlciBvZiBmaXJzdCBhbmltYXRpb24g
cmV0dXJuZWQgYWZ0ZXIgdHJlZSBzdXJnZXJ5IGV4cGVjdGVkIEVsZW1lbnQgbm9kZSA8ZGl2IHN0
eWxlPSJhbmltYXRpb246IGFuaW1MZWZ0IDEwMHMiPjxkaXYgc3R5bGU9ImFuaW1hdGkuLi4gYnV0
IGdvdCBFbGVtZW50IG5vZGUgPGRpdiBzdHlsZT0iYW5pbWF0aW9uOiBhbmltTGVmdCAxMDBzIj48
L2Rpdj4KK0ZBSUwgT3JkZXIgb2YgQ1NTIEFuaW1hdGlvbnMgLSBhY3Jvc3MgYW5kIHdpdGhpbiBl
bGVtZW50cyBhc3NlcnRfZXF1YWxzOiBnZXRBbmltYXRpb25zIHJldHVybnMgYWxsIHJ1bm5pbmcg
Q1NTIEFuaW1hdGlvbnMgYWZ0ZXIgbWFraW5nIGNoYW5nZXMgZXhwZWN0ZWQgNCBidXQgZ290IDYK
K0ZBSUwgT3JkZXIgb2YgQ1NTIEFuaW1hdGlvbnMgLSBtYXJrdXAtYm91bmQgdnMgZnJlZSBhbmlt
YXRpb25zIGFzc2VydF9lcXVhbHM6IGdldEFuaW1hdGlvbnMgcmV0dXJucyBtYXJrdXAtYm91bmQg
YW5kIGZyZWUgYW5pbWF0aW9ucyBleHBlY3RlZCAyIGJ1dCBnb3QgMQorRkFJTCBPcmRlciBvZiBD
U1MgQW5pbWF0aW9ucyAtIGZyZWUgYW5pbWF0aW9ucyBhc3NlcnRfZXF1YWxzOiBnZXRBbmltYXRp
b25zIHJldHVybnMgZnJlZSBhbmltYXRpb25zIGV4cGVjdGVkIDIgYnV0IGdvdCAwCitGQUlMIE9y
ZGVyIG9mIENTUyBBbmltYXRpb25zIGFuZCBDU1MgVHJhbnNpdGlvbnMgYXNzZXJ0X2VxdWFsczog
Qm90aCBDU1MgYW5pbWF0aW9ucyBhbmQgdHJhbnNpdGlvbnMgYXJlIHJldHVybmVkIGV4cGVjdGVk
IDIgYnV0IGdvdCAxCitQQVNTIEZpbmlzaGVkIGJ1dCBmaWxsaW5nIENTUyBBbmltYXRpb25zIGFy
ZSByZXR1cm5lZCAKK1BBU1MgRmluaXNoZWQgYnV0IG5vdCBmaWxsaW5nIENTUyBBbmltYXRpb25z
IGFyZSBub3QgcmV0dXJuZWQgCitQQVNTIFlldC10by1zdGFydCBDU1MgQW5pbWF0aW9ucyBhcmUg
cmV0dXJuZWQgCitQQVNTIENTUyBBbmltYXRpb25zIGNhbmNlbGxlZCB2aWEgdGhlIEFQSSBhcmUg
bm90IHJldHVybmVkIAorUEFTUyBDU1MgQW5pbWF0aW9ucyBjYW5jZWxsZWQgYW5kIHJlc3RhcnRl
ZCB2aWEgdGhlIEFQSSBhcmUgcmV0dXJuZWQgCitGQUlMIENTUyBBbmltYXRpb25zIHRhcmdldHRp
bmcgKHBzZXVkby0pZWxlbWVudHMgc2hvdWxkIGhhdmUgY29ycmVjdCBvcmRlciBhZnRlciBzb3J0
aW5nIGFzc2VydF9lcXVhbHM6IFRoZSBhbmltYXRpb24gdGFyZ2V0aW5nIHRoZSA6OmJlZm9yZSBl
bGVtZW50IGNvbWVzIHNlY29uZCBleHBlY3RlZCAoc3RyaW5nKSAiOjpiZWZvcmUiIGJ1dCBnb3Qg
KHVuZGVmaW5lZCkgdW5kZWZpbmVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9kb2N1bWVudC1nZXQtYW5pbWF0aW9ucy5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2RvY3Vt
ZW50LWdldC1hbmltYXRpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBiNzIzODMzYjM4OTY1ODZkNjEx
ODA1ZGRhYjkxYzc2YmU0NTUzZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9kb2N1bWVudC1nZXQtYW5pbWF0aW9ucy5o
dG1sCkBAIC0wLDAgKzEsMjg0IEBACis8IWRvY3R5cGUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1
bm5lciBbIGVuYWJsZUNTU0FuaW1hdGlvbnNBbmRDU1NUcmFuc2l0aW9uc0JhY2tlZEJ5V2ViQW5p
bWF0aW9ucz10cnVlIF0gLS0+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CitA
a2V5ZnJhbWVzIGFuaW1MZWZ0IHsKKyAgdG8geyBsZWZ0OiAxMDBweCB9Cit9CitAa2V5ZnJhbWVz
IGFuaW1Ub3AgeworICB0byB7IHRvcDogMTAwcHggfQorfQorQGtleWZyYW1lcyBhbmltQm90dG9t
IHsKKyAgdG8geyBib3R0b206IDEwMHB4IH0KK30KK0BrZXlmcmFtZXMgYW5pbVJpZ2h0IHsKKyAg
dG8geyByaWdodDogMTAwcHggfQorfQorOjpiZWZvcmUgeworICBjb250ZW50OiAnJworfQorOjph
ZnRlciB7CisgIGNvbnRlbnQ6ICcnCit9Cis8L3N0eWxlPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ci
PjwvZGl2PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKKwordGVzdChmdW5jdGlvbih0KSB7Cisg
IGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygpLmxlbmd0aCwgMCwKKyAgICAn
Z2V0QW5pbWF0aW9ucyByZXR1cm5zIGFuIGVtcHR5IHNlcXVlbmNlIGZvciBhIGRvY3VtZW50Jwor
ICAgICsgJyB3aXRoIG5vIGFuaW1hdGlvbnMnKTsKK30sICdnZXRBbmltYXRpb25zIGZvciBub24t
YW5pbWF0ZWQgY29udGVudCcpOworCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFk
ZERpdih0KTsKKworICAvLyBBZGQgYW4gYW5pbWF0aW9uCisgIGRpdi5zdHlsZS5hbmltYXRpb24g
PSAnYW5pbUxlZnQgMTAwcyc7CisgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuZ2V0QW5pbWF0aW9u
cygpLmxlbmd0aCwgMSwKKyAgICAgICAgICAgICAgICAnZ2V0QW5pbWF0aW9ucyByZXR1cm5zIGEg
cnVubmluZyBDU1MgQW5pbWF0aW9uJyk7CisKKyAgLy8gQWRkIGFub3RoZXIgYW5pbWF0aW9uCisg
IGRpdi5zdHlsZS5hbmltYXRpb24gPSAnYW5pbUxlZnQgMTAwcywgYW5pbVRvcCAxMDBzJzsKKyAg
YXNzZXJ0X2VxdWFscyhkb2N1bWVudC5nZXRBbmltYXRpb25zKCkubGVuZ3RoLCAyLAorICAgICAg
ICAgICAgICAgICdnZXRBbmltYXRpb25zIHJldHVybnMgdHdvIHJ1bm5pbmcgQ1NTIEFuaW1hdGlv
bnMnKTsKKworICAvLyBSZW1vdmUgYm90aAorICBkaXYuc3R5bGUuYW5pbWF0aW9uID0gJyc7Cisg
IGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygpLmxlbmd0aCwgMCwKKyAgICAg
ICAgICAgICAgICAnZ2V0QW5pbWF0aW9ucyByZXR1cm5zIG5vIHJ1bm5pbmcgQ1NTIEFuaW1hdGlv
bnMnKTsKK30sICdnZXRBbmltYXRpb25zIGZvciBDU1MgQW5pbWF0aW9ucycpOworCit0ZXN0KGZ1
bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0KTsKKyAgZGl2LnN0eWxlLmFuaW1hdGlv
biA9ICdhbmltTGVmdCAxMDBzLCBhbmltVG9wIDEwMHMsIGFuaW1SaWdodCAxMDBzLCAnICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICdhbmltQm90dG9tIDEwMHMnOworCisgIHZhciBhbmltYXRp
b25zID0gZG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygpOworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlv
bnMubGVuZ3RoLCA0LAorICAgICAgICAgICAgICAgICdnZXRBbmltYXRpb25zIHJldHVybnMgYWxs
IHJ1bm5pbmcgQ1NTIEFuaW1hdGlvbnMnKTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb25zWzBd
LmFuaW1hdGlvbk5hbWUsICdhbmltTGVmdCcsCisgICAgICAgICAgICAgICAgJ09yZGVyIG9mIGZp
cnN0IGFuaW1hdGlvbiByZXR1cm5lZCcpOworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbnNbMV0u
YW5pbWF0aW9uTmFtZSwgJ2FuaW1Ub3AnLAorICAgICAgICAgICAgICAgICdPcmRlciBvZiBzZWNv
bmQgYW5pbWF0aW9uIHJldHVybmVkJyk7CisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uc1syXS5h
bmltYXRpb25OYW1lLCAnYW5pbVJpZ2h0JywKKyAgICAgICAgICAgICAgICAnT3JkZXIgb2YgdGhp
cmQgYW5pbWF0aW9uIHJldHVybmVkJyk7CisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uc1szXS5h
bmltYXRpb25OYW1lLCAnYW5pbUJvdHRvbScsCisgICAgICAgICAgICAgICAgJ09yZGVyIG9mIGZv
dXJ0aCBhbmltYXRpb24gcmV0dXJuZWQnKTsKK30sICdPcmRlciBvZiBDU1MgQW5pbWF0aW9ucyAt
IHdpdGhpbiBhbiBlbGVtZW50Jyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2MSA9
IGFkZERpdih0LCB7IHN0eWxlOiAnYW5pbWF0aW9uOiBhbmltTGVmdCAxMDBzJyB9KTsKKyAgdmFy
IGRpdjIgPSBhZGREaXYodCwgeyBzdHlsZTogJ2FuaW1hdGlvbjogYW5pbUxlZnQgMTAwcycgfSk7
CisgIHZhciBkaXYzID0gYWRkRGl2KHQsIHsgc3R5bGU6ICdhbmltYXRpb246IGFuaW1MZWZ0IDEw
MHMnIH0pOworICB2YXIgZGl2NCA9IGFkZERpdih0LCB7IHN0eWxlOiAnYW5pbWF0aW9uOiBhbmlt
TGVmdCAxMDBzJyB9KTsKKworICB2YXIgYW5pbWF0aW9ucyA9IGRvY3VtZW50LmdldEFuaW1hdGlv
bnMoKTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb25zLmxlbmd0aCwgNCwKKyAgICAgICAgICAg
ICAgICAnZ2V0QW5pbWF0aW9ucyByZXR1cm5zIGFsbCBydW5uaW5nIENTUyBBbmltYXRpb25zJyk7
CisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uc1swXS5lZmZlY3QudGFyZ2V0LCBkaXYxLAorICAg
ICAgICAgICAgICAgICdPcmRlciBvZiBmaXJzdCBhbmltYXRpb24gcmV0dXJuZWQnKTsKKyAgYXNz
ZXJ0X2VxdWFscyhhbmltYXRpb25zWzFdLmVmZmVjdC50YXJnZXQsIGRpdjIsCisgICAgICAgICAg
ICAgICAgJ09yZGVyIG9mIHNlY29uZCBhbmltYXRpb24gcmV0dXJuZWQnKTsKKyAgYXNzZXJ0X2Vx
dWFscyhhbmltYXRpb25zWzJdLmVmZmVjdC50YXJnZXQsIGRpdjMsCisgICAgICAgICAgICAgICAg
J09yZGVyIG9mIHRoaXJkIGFuaW1hdGlvbiByZXR1cm5lZCcpOworICBhc3NlcnRfZXF1YWxzKGFu
aW1hdGlvbnNbM10uZWZmZWN0LnRhcmdldCwgZGl2NCwKKyAgICAgICAgICAgICAgICAnT3JkZXIg
b2YgZm91cnRoIGFuaW1hdGlvbiByZXR1cm5lZCcpOworCisgIC8vIE9yZGVyIHNob3VsZCBiZSBk
ZXB0aC1maXJzdCBwcmUtb3JkZXIgc28gYWRkIHNvbWUgZGVwdGggYXMgZm9sbG93czoKKyAgLy8K
KyAgLy8gICAgICA8cGFyZW50PgorICAvLyAgICAgICAvICB8CisgIC8vICAgICAgMiAgIDMKKyAg
Ly8gICAgLyAgXAorICAvLyAgIDEgICA0CisgIC8vCisgIC8vIFdoaWNoIHNob3VsZCBnaXZlOiAy
LCAxLCA0LCAzCisgIGRpdjIuYXBwZW5kQ2hpbGQoZGl2MSk7CisgIGRpdjIuYXBwZW5kQ2hpbGQo
ZGl2NCk7CisgIGFuaW1hdGlvbnMgPSBkb2N1bWVudC5nZXRBbmltYXRpb25zKCk7CisgIGFzc2Vy
dF9lcXVhbHMoYW5pbWF0aW9uc1swXS5lZmZlY3QudGFyZ2V0LCBkaXYyLAorICAgICAgICAgICAg
ICAgICdPcmRlciBvZiBmaXJzdCBhbmltYXRpb24gcmV0dXJuZWQgYWZ0ZXIgdHJlZSBzdXJnZXJ5
Jyk7CisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uc1sxXS5lZmZlY3QudGFyZ2V0LCBkaXYxLAor
ICAgICAgICAgICAgICAgICdPcmRlciBvZiBzZWNvbmQgYW5pbWF0aW9uIHJldHVybmVkIGFmdGVy
IHRyZWUgc3VyZ2VyeScpOworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbnNbMl0uZWZmZWN0LnRh
cmdldCwgZGl2NCwKKyAgICAgICAgICAgICAgICAnT3JkZXIgb2YgdGhpcmQgYW5pbWF0aW9uIHJl
dHVybmVkIGFmdGVyIHRyZWUgc3VyZ2VyeScpOworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbnNb
M10uZWZmZWN0LnRhcmdldCwgZGl2MywKKyAgICAgICAgICAgICAgICAnT3JkZXIgb2YgZm91cnRo
IGFuaW1hdGlvbiByZXR1cm5lZCBhZnRlciB0cmVlIHN1cmdlcnknKTsKKworfSwgJ09yZGVyIG9m
IENTUyBBbmltYXRpb25zIC0gYWNyb3NzIGVsZW1lbnRzJyk7CisKK3Rlc3QoZnVuY3Rpb24odCkg
eworICB2YXIgZGl2MSA9IGFkZERpdih0LCB7IHN0eWxlOiAnYW5pbWF0aW9uOiBhbmltTGVmdCAx
MDBzLCBhbmltVG9wIDEwMHMnIH0pOworICB2YXIgZGl2MiA9IGFkZERpdih0LCB7IHN0eWxlOiAn
YW5pbWF0aW9uOiBhbmltQm90dG9tIDEwMHMnIH0pOworCisgIHZhciBleHBlY3RlZFJlc3VsdHMg
PSBbIFsgZGl2MSwgJ2FuaW1MZWZ0JyBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbIGRp
djEsICdhbmltVG9wJyBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbIGRpdjIsICdhbmlt
Qm90dG9tJyBdIF07CisgIHZhciBhbmltYXRpb25zID0gZG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygp
OworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbnMubGVuZ3RoLCBleHBlY3RlZFJlc3VsdHMubGVu
Z3RoLAorICAgICAgICAgICAgICAgICdnZXRBbmltYXRpb25zIHJldHVybnMgYWxsIHJ1bm5pbmcg
Q1NTIEFuaW1hdGlvbnMnKTsKKyAgYW5pbWF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGFuaW0sIGkp
IHsKKyAgICBhc3NlcnRfZXF1YWxzKGFuaW0uZWZmZWN0LnRhcmdldCwgZXhwZWN0ZWRSZXN1bHRz
W2ldWzBdLAorICAgICAgICAgICAgICAgICAgJ1RhcmdldCBvZiBhbmltYXRpb24gaW4gcG9zaXRp
b24gJyArIGkpOworICAgIGFzc2VydF9lcXVhbHMoYW5pbS5hbmltYXRpb25OYW1lLCBleHBlY3Rl
ZFJlc3VsdHNbaV1bMV0sCisgICAgICAgICAgICAgICAgICAnTmFtZSBvZiBhbmltYXRpb24gaW4g
cG9zaXRpb24gJyArIGkpOworICB9KTsKKworICAvLyBNb2RpZnkgdHJlZSBzdHJ1Y3R1cmUgYW5k
IGFuaW1hdGlvbiBsaXN0CisgIGRpdjIuYXBwZW5kQ2hpbGQoZGl2MSk7CisgIGRpdjEuc3R5bGUu
YW5pbWF0aW9uID0gJ2FuaW1MZWZ0IDEwMHMsIGFuaW1SaWdodCAxMDBzLCBhbmltVG9wIDEwMHMn
OworCisgIGV4cGVjdGVkUmVzdWx0cyA9IFsgWyBkaXYyLCAnYW5pbUJvdHRvbScgXSwKKyAgICAg
ICAgICAgICAgICAgICAgICBbIGRpdjEsICdhbmltTGVmdCcgXSwKKyAgICAgICAgICAgICAgICAg
ICAgICBbIGRpdjEsICdhbmltUmlnaHQnIF0sCisgICAgICAgICAgICAgICAgICAgICAgWyBkaXYx
LCAnYW5pbVRvcCcgXSBdOworICBhbmltYXRpb25zID0gZG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygp
OworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbnMubGVuZ3RoLCBleHBlY3RlZFJlc3VsdHMubGVu
Z3RoLAorICAgICAgICAgICAgICAgICdnZXRBbmltYXRpb25zIHJldHVybnMgYWxsIHJ1bm5pbmcg
Q1NTIEFuaW1hdGlvbnMgYWZ0ZXIgJyArCisgICAgICAgICAgICAgICAgJ21ha2luZyBjaGFuZ2Vz
Jyk7CisgIGFuaW1hdGlvbnMuZm9yRWFjaChmdW5jdGlvbihhbmltLCBpKSB7CisgICAgYXNzZXJ0
X2VxdWFscyhhbmltLmVmZmVjdC50YXJnZXQsIGV4cGVjdGVkUmVzdWx0c1tpXVswXSwKKyAgICAg
ICAgICAgICAgICAgICdUYXJnZXQgb2YgYW5pbWF0aW9uIGluIHBvc2l0aW9uICcgKyBpICsgJyBh
ZnRlciBjaGFuZ2VzJyk7CisgICAgYXNzZXJ0X2VxdWFscyhhbmltLmFuaW1hdGlvbk5hbWUsIGV4
cGVjdGVkUmVzdWx0c1tpXVsxXSwKKyAgICAgICAgICAgICAgICAgICdOYW1lIG9mIGFuaW1hdGlv
biBpbiBwb3NpdGlvbiAnICsgaSArICcgYWZ0ZXIgY2hhbmdlcycpOworICB9KTsKK30sICdPcmRl
ciBvZiBDU1MgQW5pbWF0aW9ucyAtIGFjcm9zcyBhbmQgd2l0aGluIGVsZW1lbnRzJyk7CisKK3Rl
c3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsgc3R5bGU6ICdhbmltYXRp
b246IGFuaW1MZWZ0IDEwMHMsIGFuaW1Ub3AgMTAwcycgfSk7CisgIHZhciBhbmltTGVmdCA9IGRv
Y3VtZW50LmdldEFuaW1hdGlvbnMoKVswXTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltTGVmdC5hbmlt
YXRpb25OYW1lLCAnYW5pbUxlZnQnLAorICAgICAgICAgICAgICAgICdPcmlnaW5hbGx5LCBhbmlt
TGVmdCBhbmltYXRpb24gY29tZXMgZmlyc3QnKTsKKworICAvLyBEaXNhc3NvY2lhdGUgYW5pbUxl
ZnQgZnJvbSBtYXJrdXAgYW5kIHJlc3RhcnQKKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICdhbmlt
VG9wIDEwMHMnOworICBhbmltTGVmdC5wbGF5KCk7CisKKyAgdmFyIGFuaW1hdGlvbnMgPSBkb2N1
bWVudC5nZXRBbmltYXRpb25zKCk7CisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9ucy5sZW5ndGgs
IDIsCisgICAgICAgICAgICAgICAgJ2dldEFuaW1hdGlvbnMgcmV0dXJucyBtYXJrdXAtYm91bmQg
YW5kIGZyZWUgYW5pbWF0aW9ucycpOworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbnNbMF0uYW5p
bWF0aW9uTmFtZSwgJ2FuaW1Ub3AnLAorICAgICAgICAgICAgICAgICdNYXJrdXAtYm91bmQgYW5p
bWF0aW9ucyBjb21lIGZpcnN0Jyk7CisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uc1sxXSwgYW5p
bUxlZnQsICdGcmVlIGFuaW1hdGlvbnMgY29tZSBsYXN0Jyk7Cit9LCAnT3JkZXIgb2YgQ1NTIEFu
aW1hdGlvbnMgLSBtYXJrdXAtYm91bmQgdnMgZnJlZSBhbmltYXRpb25zJyk7CisKK3Rlc3QoZnVu
Y3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsgc3R5bGU6ICdhbmltYXRpb246IGFu
aW1MZWZ0IDEwMHMsIGFuaW1Ub3AgMTAwcycgfSk7CisgIHZhciBhbmltTGVmdCA9IGRvY3VtZW50
LmdldEFuaW1hdGlvbnMoKVswXTsKKyAgdmFyIGFuaW1Ub3AgID0gZG9jdW1lbnQuZ2V0QW5pbWF0
aW9ucygpWzFdOworCisgIC8vIERpc2Fzc29jaWF0ZSBib3RoIGFuaW1hdGlvbnMgZnJvbSBtYXJr
dXAgYW5kIHJlc3RhcnQgaW4gb3Bwb3NpdGUgb3JkZXIKKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9
ICcnOworICBhbmltVG9wLnBsYXkoKTsKKyAgYW5pbUxlZnQucGxheSgpOworCisgIHZhciBhbmlt
YXRpb25zID0gZG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygpOworICBhc3NlcnRfZXF1YWxzKGFuaW1h
dGlvbnMubGVuZ3RoLCAyLAorICAgICAgICAgICAgICAgICdnZXRBbmltYXRpb25zIHJldHVybnMg
ZnJlZSBhbmltYXRpb25zJyk7CisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uc1swXSwgYW5pbVRv
cCwKKyAgICAgICAgICAgICAgICAnRnJlZSBhbmltYXRpb25zIGFyZSByZXR1cm5lZCBpbiB0aGUg
b3JkZXIgdGhleSBhcmUgc3RhcnRlZCcpOworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbnNbMV0s
IGFuaW1MZWZ0LAorICAgICAgICAgICAgICAgICdBbmltYXRpb25zIHN0YXJ0ZWQgbGF0ZXIgYXJl
IHJldHVybmVkIGxhdGVyJyk7CisKKyAgLy8gUmVzdGFydGluZyBhbiBhbmltYXRpb24gc2hvdWxk
IGhhdmUgbm8gZWZmZWN0CisgIGFuaW1Ub3AuY2FuY2VsKCk7CisgIGFuaW1Ub3AucGxheSgpOwor
ICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmdldEFuaW1hdGlvbnMoKVswXSwgYW5pbVRvcCwKKyAg
ICAgICAgICAgICAgICAnQWZ0ZXIgcmVzdGFydGluZywgdGhlIG9yZGVyaW5nIG9mIGZyZWUgYW5p
bWF0aW9ucycgKworICAgICAgICAgICAgICAgICcgZG9lcyBub3QgY2hhbmdlJyk7Cit9LCAnT3Jk
ZXIgb2YgQ1NTIEFuaW1hdGlvbnMgLSBmcmVlIGFuaW1hdGlvbnMnKTsKKwordGVzdChmdW5jdGlv
bih0KSB7CisgIC8vIEFkZCBhbiBhbmltYXRpb24gZmlyc3QKKyAgdmFyIGRpdiA9IGFkZERpdih0
LCB7IHN0eWxlOiAnYW5pbWF0aW9uOiBhbmltTGVmdCAxMDBzJyB9KTsKKyAgZGl2LnN0eWxlLnRv
cCA9ICcwcHgnOworICBkaXYuc3R5bGUudHJhbnNpdGlvbiA9ICdhbGwgMTAwcyc7CisgIGZsdXNo
Q29tcHV0ZWRTdHlsZShkaXYpOworCisgIC8vICpUaGVuKiBhZGQgYSB0cmFuc2l0aW9uCisgIGRp
di5zdHlsZS50b3AgPSAnMTAwcHgnOworICBmbHVzaENvbXB1dGVkU3R5bGUoZGl2KTsKKworICAv
LyBBbHRob3VnaCB0aGUgdHJhbnNpdGlvbiB3YXMgYWRkZWQgbGF0ZXIsIGl0IHNob3VsZCBjb21l
IGZpcnN0IGluIHRoZSBsaXN0CisgIHZhciBhbmltYXRpb25zID0gZG9jdW1lbnQuZ2V0QW5pbWF0
aW9ucygpOworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbnMubGVuZ3RoLCAyLAorICAgICAgICAg
ICAgICAgICdCb3RoIENTUyBhbmltYXRpb25zIGFuZCB0cmFuc2l0aW9ucyBhcmUgcmV0dXJuZWQn
KTsKKyAgYXNzZXJ0X2NsYXNzX3N0cmluZyhhbmltYXRpb25zWzBdLCAnQ1NTVHJhbnNpdGlvbics
ICdUcmFuc2l0aW9uIGNvbWVzIGZpcnN0Jyk7CisgIGFzc2VydF9jbGFzc19zdHJpbmcoYW5pbWF0
aW9uc1sxXSwgJ0NTU0FuaW1hdGlvbicsICdBbmltYXRpb24gY29tZXMgc2Vjb25kJyk7Cit9LCAn
T3JkZXIgb2YgQ1NTIEFuaW1hdGlvbnMgYW5kIENTUyBUcmFuc2l0aW9ucycpOworCit0ZXN0KGZ1
bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7IHN0eWxlOiAnYW5pbWF0aW9uOiBh
bmltTGVmdCAxMDBzIGZvcndhcmRzJyB9KTsKKyAgZGl2LmdldEFuaW1hdGlvbnMoKVswXS5maW5p
c2goKTsKKyAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5nZXRBbmltYXRpb25zKCkubGVuZ3RoLCAx
LAorICAgICAgICAgICAgICAgICdGb3J3YXJkcy1maWxsaW5nIENTUyBhbmltYXRpb25zIGFyZSBy
ZXR1cm5lZCcpOworfSwgJ0ZpbmlzaGVkIGJ1dCBmaWxsaW5nIENTUyBBbmltYXRpb25zIGFyZSBy
ZXR1cm5lZCcpOworCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7
IHN0eWxlOiAnYW5pbWF0aW9uOiBhbmltTGVmdCAxMDBzJyB9KTsKKyAgZGl2LmdldEFuaW1hdGlv
bnMoKVswXS5maW5pc2goKTsKKyAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5nZXRBbmltYXRpb25z
KCkubGVuZ3RoLCAwLAorICAgICAgICAgICAgICAgICdOb24tZmlsbGluZyBmaW5pc2hlZCBDU1Mg
YW5pbWF0aW9ucyBhcmUgbm90IHJldHVybmVkJyk7Cit9LCAnRmluaXNoZWQgYnV0IG5vdCBmaWxs
aW5nIENTUyBBbmltYXRpb25zIGFyZSBub3QgcmV0dXJuZWQnKTsKKwordGVzdChmdW5jdGlvbih0
KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeyBzdHlsZTogJ2FuaW1hdGlvbjogYW5pbUxlZnQg
MTAwcyAxMDBzJyB9KTsKKyAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5nZXRBbmltYXRpb25zKCku
bGVuZ3RoLCAxLAorICAgICAgICAgICAgICAgICdZZXQtdG8tc3RhcnQgQ1NTIGFuaW1hdGlvbnMg
YXJlIHJldHVybmVkJyk7Cit9LCAnWWV0LXRvLXN0YXJ0IENTUyBBbmltYXRpb25zIGFyZSByZXR1
cm5lZCcpOworCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7IHN0
eWxlOiAnYW5pbWF0aW9uOiBhbmltTGVmdCAxMDBzJyB9KTsKKyAgZGl2LmdldEFuaW1hdGlvbnMo
KVswXS5jYW5jZWwoKTsKKyAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5nZXRBbmltYXRpb25zKCku
bGVuZ3RoLCAwLAorICAgICAgICAgICAgICAgICdDU1MgYW5pbWF0aW9ucyBjYW5jZWxsZWQgYnkg
dGhlIEFQSSBhcmUgbm90IHJldHVybmVkJyk7Cit9LCAnQ1NTIEFuaW1hdGlvbnMgY2FuY2VsbGVk
IHZpYSB0aGUgQVBJIGFyZSBub3QgcmV0dXJuZWQnKTsKKwordGVzdChmdW5jdGlvbih0KSB7Cisg
IHZhciBkaXYgPSBhZGREaXYodCwgeyBzdHlsZTogJ2FuaW1hdGlvbjogYW5pbUxlZnQgMTAwcycg
fSk7CisgIHZhciBhbmltID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKyAgYW5pbS5jYW5jZWwo
KTsKKyAgYW5pbS5wbGF5KCk7CisgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuZ2V0QW5pbWF0aW9u
cygpLmxlbmd0aCwgMSwKKyAgICAgICAgICAgICAgICAnQ1NTIGFuaW1hdGlvbnMgY2FuY2VsbGVk
IGFuZCByZXN0YXJ0ZWQgYnkgdGhlIEFQSSBhcmUgJyArCisgICAgICAgICAgICAgICAgJ3JldHVy
bmVkJyk7Cit9LCAnQ1NTIEFuaW1hdGlvbnMgY2FuY2VsbGVkIGFuZCByZXN0YXJ0ZWQgdmlhIHRo
ZSBBUEkgYXJlIHJldHVybmVkJyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICBhZGRTdHlsZSh0
LCB7ICcjcGFyZW50OjphZnRlcic6ICdhbmltYXRpb246IGFuaW1MZWZ0IDEwczsnLAorICAgICAg
ICAgICAgICAgICcjcGFyZW50OjpiZWZvcmUnOiAnYW5pbWF0aW9uOiBhbmltUmlnaHQgMTBzOycg
fSk7CisgIC8vIGNyZWF0ZSB0d28gZGl2cyB3aXRoIHRoZXNlIGFycmFuZ2VtZW50OgorICAvLyAg
ICAgICBwYXJlbnQKKyAgLy8gICAgIDo6YmVmb3JlLAorICAvLyAgICAgOjphZnRlcgorICAvLyAg
ICAgICAgfAorICAvLyAgICAgICBjaGlsZAorICB2YXIgcGFyZW50ID0gYWRkRGl2KHQsIHsgJ2lk
JzogJ3BhcmVudCcgfSk7CisgIHZhciBjaGlsZCA9IGFkZERpdih0KTsKKyAgcGFyZW50LmFwcGVu
ZENoaWxkKGNoaWxkKTsKKyAgW3BhcmVudCwgY2hpbGRdLmZvckVhY2goKGRpdikgPT4geworICAg
IGRpdi5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2FuaW1hdGlvbjogYW5pbUJvdHRvbSAxMHMnKTsK
KyAgfSk7CisKKyAgdmFyIGFuaW1zID0gZG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygpOworICBhc3Nl
cnRfZXF1YWxzKGFuaW1zLmxlbmd0aCwgNCwKKyAgICAgICAgICAgICAgICAnQ1NTIGFuaW1hdGlv
bnMgb24gYm90aCBwc2V1ZG8tZWxlbWVudHMgYW5kIGVsZW1lbnRzICcgKworICAgICAgICAgICAg
ICAgICdhcmUgcmV0dXJuZWQnKTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltc1swXS5lZmZlY3QudGFy
Z2V0LCBwYXJlbnQsCisgICAgICAgICAgICAgICAgJ1RoZSBhbmltYXRpb24gdGFyZ2V0aW5nIHRo
ZSBwYXJlbnQgZWxlbWVudCBjb21lcyBmaXJzdCcpOworICBhc3NlcnRfZXF1YWxzKGFuaW1zWzFd
LmVmZmVjdC50YXJnZXQudHlwZSwgJzo6YmVmb3JlJywKKyAgICAgICAgICAgICAgICAnVGhlIGFu
aW1hdGlvbiB0YXJnZXRpbmcgdGhlIDo6YmVmb3JlIGVsZW1lbnQgY29tZXMgc2Vjb25kJyk7Cisg
IGFzc2VydF9lcXVhbHMoYW5pbXNbMl0uZWZmZWN0LnRhcmdldC50eXBlLCAnOjphZnRlcicsCisg
ICAgICAgICAgICAgICAgJ1RoZSBhbmltYXRpb24gdGFyZ2V0aW5nIHRoZSA6OmFmdGVyIGVsZW1l
bnQgY29tZXMgdGhpcmQnKTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltc1szXS5lZmZlY3QudGFyZ2V0
LCBjaGlsZCwKKyAgICAgICAgICAgICAgICAnVGhlIGFuaW1hdGlvbiB0YXJnZXRpbmcgdGhlIGNo
aWxkIGVsZW1lbnQgY29tZXMgbGFzdCcpOworfSwgJ0NTUyBBbmltYXRpb25zIHRhcmdldHRpbmcg
KHBzZXVkby0pZWxlbWVudHMgc2hvdWxkIGhhdmUgY29ycmVjdCBvcmRlciAnICsKKyAgICdhZnRl
ciBzb3J0aW5nJyk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2VmZmVjdC10YXJnZXQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90
ZXN0X2VmZmVjdC10YXJnZXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjNGYzOWRiOWZkZGM1
YjkwYTZmN2RkNmFiODFjZWE3YjFlODJjN2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfZWZmZWN0LXRhcmdldC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKK1BBU1MgUmV0dXJuZWQgQ1NTIGFuaW1hdGlvbnMg
aGF2ZSB0aGUgY29ycmVjdCBlZmZlY3QgdGFyZ2V0IAorUEFTUyBlZmZlY3QudGFyZ2V0IHNob3Vs
ZCByZXR1cm4gdGhlIHNhbWUgQ1NTUHNldWRvRWxlbWVudCBvYmplY3QgZWFjaCB0aW1lIAorRkFJ
TCBlZmZlY3QudGFyZ2V0IGZyb20gdGhlIHNjcmlwdC1nZW5lcmF0ZWQgYW5pbWF0aW9uIHNob3Vs
ZCByZXR1cm4gdGhlIHNhbWUgQ1NTUHNldWRvRWxlbWVudCBvYmplY3QgYXMgdGhhdCBmcm9tIHRo
ZSBDU1MgZ2VuZXJhdGVkIGFuaW1hdGlvbiBhc3NlcnRfZXF1YWxzOiBHb3QgYW5pbWF0aW9ucyBy
dW5uaW5nIG9uIDo6YWZ0ZXIgcHNldWRvIGVsZW1lbnQgZXhwZWN0ZWQgMiBidXQgZ290IDQKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90
ZXN0X2VmZmVjdC10YXJnZXQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3Nz
LWFuaW1hdGlvbnMvdGVzdF9lZmZlY3QtdGFyZ2V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI1YmFjMDQy
NjlhNmE3NDY3OGM4NGE1NTVmOGMxMjNjYThkMzU2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9lZmZlY3QtdGFyZ2V0
Lmh0bWwKQEAgLTAsMCArMSw2MiBAQAorPCFkb2N0eXBlIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1y
dW5uZXIgWyBlbmFibGVDU1NBbmltYXRpb25zQW5kQ1NTVHJhbnNpdGlvbnNCYWNrZWRCeVdlYkFu
aW1hdGlvbnM9dHJ1ZSBdIC0tPgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3Rjb21tb24uanMiPjwvc2NyaXB0PgorPHN0eWxlPgor
QGtleWZyYW1lcyBhbmltIHsgfQorOjpiZWZvcmUgeworICBjb250ZW50OiAnJworfQorOjphZnRl
ciB7CisgIGNvbnRlbnQ6ICcnCit9Cis8L3N0eWxlPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwv
ZGl2PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKKwordGVzdChmdW5jdGlvbih0KSB7CisgIHZh
ciBkaXYgPSBhZGREaXYodCk7CisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAnYW5pbSAxMDBzJzsK
KyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisgIGFzc2VydF9lcXVh
bHMoYW5pbWF0aW9uLmVmZmVjdC50YXJnZXQsIGRpdiwKKyAgICAnQW5pbWF0aW9uLnRhcmdldCBp
cyB0aGUgYW5pbWF0YWJsZSBkaXYnKTsKK30sICdSZXR1cm5lZCBDU1MgYW5pbWF0aW9ucyBoYXZl
IHRoZSBjb3JyZWN0IGVmZmVjdCB0YXJnZXQnKTsKKwordGVzdChmdW5jdGlvbih0KSB7CisgIGFk
ZFN0eWxlKHQsIHsgJy5hZnRlcjo6YWZ0ZXInOiAnYW5pbWF0aW9uOiBhbmltIDEwcywgYW5pbSAx
MDBzOycgfSk7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeyBjbGFzczogJ2FmdGVyJyB9KTsKKyAg
dmFyIGFuaW1zID0gZG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygpOworICBhc3NlcnRfZXF1YWxzKGFu
aW1zLmxlbmd0aCwgMiwKKyAgICAgICAgICAgICAgICAnR290IGFuaW1hdGlvbnMgcnVubmluZyBv
biA6OmFmdGVyIHBzZXVkbyBlbGVtZW50Jyk7CisgIGFzc2VydF9lcXVhbHMoYW5pbXNbMF0uZWZm
ZWN0LnRhcmdldCwgYW5pbXNbMV0uZWZmZWN0LnRhcmdldCwKKyAgICAgICAgICAgICAgICAnQm90
aCBhbmltYXRpb25zIHJldHVybiB0aGUgc2FtZSB0YXJnZXQgb2JqZWN0Jyk7Cit9LCAnZWZmZWN0
LnRhcmdldCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIENTU1BzZXVkb0VsZW1lbnQgb2JqZWN0IGVh
Y2ggdGltZScpOworCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgYWRkU3R5bGUodCwgeyAnLmFmdGVy
OjphZnRlcic6ICdhbmltYXRpb246IGFuaW0gMTBzOycgfSk7CisgIHZhciBkaXYgPSBhZGREaXYo
dCwgeyBjbGFzczogJ2FmdGVyJyB9KTsKKyAgdmFyIHBzZXVkb1RhcmdldCA9IGRvY3VtZW50Lmdl
dEFuaW1hdGlvbnMoKVswXS5lZmZlY3QudGFyZ2V0OworICB2YXIgZWZmZWN0ID0gbmV3IEtleWZy
YW1lRWZmZWN0UmVhZE9ubHkocHNldWRvVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeyBiYWNrZ3JvdW5kOiBbImJsdWUiLCAicmVkIl0gfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMgKiBNU19QRVJfU0VDKTsKKyAg
dmFyIG5ld0FuaW0gPSBuZXcgQW5pbWF0aW9uKGVmZmVjdCwgZG9jdW1lbnQudGltZWxpbmUpOwor
ICBuZXdBbmltLnBsYXkoKTsKKyAgdmFyIGFuaW1zID0gZG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygp
OworICBhc3NlcnRfZXF1YWxzKGFuaW1zLmxlbmd0aCwgMiwKKyAgICAgICAgICAgICAgICAnR290
IGFuaW1hdGlvbnMgcnVubmluZyBvbiA6OmFmdGVyIHBzZXVkbyBlbGVtZW50Jyk7CisgIGFzc2Vy
dF9ub3RfZXF1YWxzKGFuaW1zWzBdLCBuZXdBbmltLAorICAgICAgICAgICAgICAgICAgICAnVGhl
IHNjcmlwZWQtZ2VuZXJhdGVkIGFuaW1hdGlvbiBhcHBlYXJzIGxhc3QnKTsKKyAgYXNzZXJ0X2Vx
dWFscyhuZXdBbmltLmVmZmVjdC50YXJnZXQsIHBzZXVkb1RhcmdldCwKKyAgICAgICAgICAgICAg
ICAnVGhlIGVmZmVjdC50YXJnZXQgb2YgdGhlIHNjcmlwdGVkLWdlbmVyYXRlZCBhbmltYXRpb24g
aXMgJyArCisgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIGFzIHRoZSBvbmUgZnJvbSB0aGUgYXJn
dW1lbnQgb2YgJyArCisgICAgICAgICAgICAgICAgJ0tleWZyYW1lRWZmZWN0UmVhZE9ubHkgY29u
c3RydWN0b3InKTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltc1swXS5lZmZlY3QudGFyZ2V0LCBuZXdB
bmltLmVmZmVjdC50YXJnZXQsCisgICAgICAgICAgICAgICAgJ0JvdGggYW5pbWF0aW9ucyByZXR1
cm4gdGhlIHNhbWUgdGFyZ2V0IG9iamVjdCcpOworfSwgJ2VmZmVjdC50YXJnZXQgZnJvbSB0aGUg
c2NyaXB0LWdlbmVyYXRlZCBhbmltYXRpb24gc2hvdWxkIHJldHVybiB0aGUgc2FtZSAnICsKKyAg
ICdDU1NQc2V1ZG9FbGVtZW50IG9iamVjdCBhcyB0aGF0IGZyb20gdGhlIENTUyBnZW5lcmF0ZWQg
YW5pbWF0aW9uJyk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2VsZW1lbnQtZ2V0LWFuaW1h
dGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5p
bWF0aW9ucy90ZXN0X2VsZW1lbnQtZ2V0LWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk5NmM2OTI5ZDY5ZDM0MThlODM1YTYwNGUyMWNiNzUwZDE3YzNiZjUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3Rf
ZWxlbWVudC1nZXQtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisjUElE
IFVOUkVTUE9OU0lWRSAtIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudCAo
cGlkIDEzNTUxKQorRkFJTDogVGltZWQgb3V0IHdhaXRpbmcgZm9yIG5vdGlmeURvbmUgdG8gYmUg
Y2FsbGVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFu
aW1hdGlvbnMvdGVzdF9lbGVtZW50LWdldC1hbmltYXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfZWxlbWVudC1nZXQtYW5pbWF0aW9u
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc4ZTViZTNlM2JiNjM2ZjlhMDM0ZWQxMzZkMmU5ZTM4OTE3YzZl
Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1h
bmltYXRpb25zL3Rlc3RfZWxlbWVudC1nZXQtYW5pbWF0aW9ucy5odG1sCkBAIC0wLDAgKzEsNDUz
IEBACis8IWRvY3R5cGUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUNTU0Fu
aW1hdGlvbnNBbmRDU1NUcmFuc2l0aW9uc0JhY2tlZEJ5V2ViQW5pbWF0aW9ucz10cnVlIF0gLS0+
Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdGNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CitAa2V5ZnJhbWVzIGFuaW0xIHsK
KyAgdG8geyBsZWZ0OiAxMDBweCB9Cit9CitAa2V5ZnJhbWVzIGFuaW0yIHsKKyAgdG8geyB0b3A6
IDEwMHB4IH0KK30KK0BrZXlmcmFtZXMgbXVsdGlQcm9wQW5pbSB7CisgIHRvIHsgYmFja2dyb3Vu
ZDogZ3JlZW4sIG9wYWNpdHk6IDAuNSwgbGVmdDogMTAwcHgsIHRvcDogMTAwcHggfQorfQorOjpi
ZWZvcmUgeworICBjb250ZW50OiAnJworfQorOjphZnRlciB7CisgIGNvbnRlbnQ6ICcnCit9CitA
a2V5ZnJhbWVzIGVtcHR5IHsgfQorPC9zdHlsZT4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rp
dj4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIg
ZGl2ID0gYWRkRGl2KHQpOworICBhc3NlcnRfZXF1YWxzKGRpdi5nZXRBbmltYXRpb25zKCkubGVu
Z3RoLCAwLAorICAgICdnZXRBbmltYXRpb25zIHJldHVybnMgYW4gZW1wdHkgc2VxdWVuY2UgZm9y
IGFuIGVsZW1lbnQnCisgICAgKyAnIHdpdGggbm8gYW5pbWF0aW9ucycpOworfSwgJ2dldEFuaW1h
dGlvbnMgZm9yIG5vbi1hbmltYXRlZCBjb250ZW50Jyk7CisKK3Byb21pc2VfdGVzdChmdW5jdGlv
bih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCk7CisKKyAgLy8gRklYTUU6IFRoaXMgdGVzdCBk
b2VzIHRvbyBtYW55IHRoaW5ncy4gSXQgc2hvdWxkIGJlIHNwbGl0IHVwLgorCisgIC8vIEFkZCBh
biBhbmltYXRpb24KKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICdhbmltMSAxMDBzJzsKKyAgdmFy
IGFuaW1hdGlvbnMgPSBkaXYuZ2V0QW5pbWF0aW9ucygpOworICBhc3NlcnRfZXF1YWxzKGFuaW1h
dGlvbnMubGVuZ3RoLCAxLAorICAgICdnZXRBbmltYXRpb25zIHJldHVybnMgYW4gQW5pbWF0aW9u
IHJ1bm5pbmcgQ1NTIEFuaW1hdGlvbnMnKTsKKyAgcmV0dXJuIGFuaW1hdGlvbnNbMF0ucmVhZHku
dGhlbihmdW5jdGlvbigpIHsKKyAgICB2YXIgc3RhcnRUaW1lID0gYW5pbWF0aW9uc1swXS5zdGFy
dFRpbWU7CisgICAgYXNzZXJ0X3RydWUoc3RhcnRUaW1lID4gMCAmJiBzdGFydFRpbWUgPD0gZG9j
dW1lbnQudGltZWxpbmUuY3VycmVudFRpbWUsCisgICAgICAnQ1NTIGFuaW1hdGlvbiBoYXMgYSBz
ZW5zaWJsZSBzdGFydCB0aW1lJyk7CisKKyAgICAvLyBXYWl0IGEgbW9tZW50IHRoZW4gYWRkIGEg
c2Vjb25kIGFuaW1hdGlvbi4KKyAgICAvLworICAgIC8vIFdlIHdhaXQgZm9yIHRoZSBuZXh0IGZy
YW1lIHNvIHRoYXQgd2UgY2FuIHRlc3QgdGhhdCB0aGUgc3RhcnQgdGltZXMgb2YKKyAgICAvLyB0
aGUgYW5pbWF0aW9ucyBkaWZmZXIuCisgICAgcmV0dXJuIHdhaXRGb3JGcmFtZSgpOworICB9KS50
aGVuKGZ1bmN0aW9uKCkgeworICAgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAnYW5pbTEgMTAwcywg
YW5pbTIgMTAwcyc7CisgICAgYW5pbWF0aW9ucyA9IGRpdi5nZXRBbmltYXRpb25zKCk7CisgICAg
YXNzZXJ0X2VxdWFscyhhbmltYXRpb25zLmxlbmd0aCwgMiwKKyAgICAgICdnZXRBbmltYXRpb25z
IHJldHVybnMgb25lIEFuaW1hdGlvbiBmb3IgZWFjaCB2YWx1ZSBvZicKKyAgICAgICsgJyBhbmlt
YXRpb24tbmFtZScpOworICAgIC8vIFdhaXQgdW50aWwgYm90aCBBbmltYXRpb25zIGFyZSByZWFk
eQorICAgIC8vIChXZSBkb24ndCBtYWtlIGFueSBhc3N1bXB0aW9ucyBhYm91dCB0aGUgb3JkZXIg
b2YgdGhlIEFuaW1hdGlvbnMgc2luY2UKKyAgICAvLyAgdGhhdCBpcyB0aGUgcHVycG9zZSBvZiB0
aGUgZm9sbG93aW5nIHRlc3QuKQorICAgIHJldHVybiB3YWl0Rm9yQWxsQW5pbWF0aW9ucyhhbmlt
YXRpb25zKTsKKyAgfSkudGhlbihmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfdHJ1ZShhbmltYXRp
b25zWzBdLnN0YXJ0VGltZSA8IGFuaW1hdGlvbnNbMV0uc3RhcnRUaW1lLAorICAgICAgJ0FkZGl0
aW9uYWwgQW5pbWF0aW9ucyBmb3IgQ1NTIGFuaW1hdGlvbnMgc3RhcnQgYWZ0ZXIgdGhlIG9yaWdp
bmFsJworICAgICAgKyAnIGFuaW1hdGlvbiBhbmQgYXBwZWFyIGxhdGVyIGluIHRoZSBsaXN0Jyk7
CisgIH0pOworfSwgJ2dldEFuaW1hdGlvbnMgZm9yIENTUyBBbmltYXRpb25zJyk7CisKK3Rlc3Qo
ZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsgc3R5bGU6ICdhbmltYXRpb246
IGFuaW0xIDEwMHMnIH0pOworICBhc3NlcnRfY2xhc3Nfc3RyaW5nKGRpdi5nZXRBbmltYXRpb25z
KClbMF0sICdDU1NBbmltYXRpb24nLAorICAgICAgICAgICAgICAgICAgICAgICdJbnRlcmZhY2Ug
b2YgcmV0dXJuZWQgYW5pbWF0aW9uIGlzIENTU0FuaW1hdGlvbicpOworfSwgJ2dldEFuaW1hdGlv
bnMgcmV0dXJucyBDU1NBbmltYXRpb24gb2JqZWN0cyBmb3IgQ1NTIEFuaW1hdGlvbnMnKTsKKwor
dGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCk7CisKKyAgLy8gQWRkIGFu
IGFuaW1hdGlvbiB0aGF0IHRhcmdldHMgbXVsdGlwbGUgcHJvcGVydGllcworICBkaXYuc3R5bGUu
YW5pbWF0aW9uID0gJ211bHRpUHJvcEFuaW0gMTAwcyc7CisgIGFzc2VydF9lcXVhbHMoZGl2Lmdl
dEFuaW1hdGlvbnMoKS5sZW5ndGgsIDEsCisgICAgJ2dldEFuaW1hdGlvbnMgcmV0dXJucyBvbmx5
IG9uZSBBbmltYXRpb24gZm9yIGEgQ1NTIEFuaW1hdGlvbicKKyAgICArICcgdGhhdCB0YXJnZXRz
IG11bHRpcGxlIHByb3BlcnRpZXMnKTsKK30sICdnZXRBbmltYXRpb25zIGZvciBtdWx0aS1wcm9w
ZXJ0eSBhbmltYXRpb25zJyk7CisKK3Byb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBk
aXYgPSBhZGREaXYodCk7CisKKyAgLy8gQWRkIGFuIGFuaW1hdGlvbgorICBkaXYuc3R5bGUuYmFj
a2dyb3VuZENvbG9yID0gJ3JlZCc7CisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAnYW5pbTEgMTAw
cyc7CisgIGdldENvbXB1dGVkU3R5bGUoZGl2KS5iYWNrZ3JvdW5kQ29sb3I7CisKKyAgLy8gV2Fp
dCB1bnRpbCBhIGZyYW1lIGFmdGVyIHRoZSBhbmltYXRpb24gc3RhcnRzLCB0aGVuIGFkZCBhIHRy
YW5zaXRpb24KKyAgdmFyIGFuaW1hdGlvbnMgPSBkaXYuZ2V0QW5pbWF0aW9ucygpOworICByZXR1
cm4gYW5pbWF0aW9uc1swXS5yZWFkeS50aGVuKHdhaXRGb3JGcmFtZSkudGhlbihmdW5jdGlvbigp
IHsKKyAgICBkaXYuc3R5bGUudHJhbnNpdGlvbiA9ICdhbGwgMTAwcyc7CisgICAgZGl2LnN0eWxl
LmJhY2tncm91bmRDb2xvciA9ICdncmVlbic7CisKKyAgICBhbmltYXRpb25zID0gZGl2LmdldEFu
aW1hdGlvbnMoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbnMubGVuZ3RoLCAyLAorICAg
ICAgJ2dldEFuaW1hdGlvbnMgcmV0dXJucyBBbmltYXRpb25zIGZvciBib3RoIGFuaW1hdGlvbnMg
YW5kJworICAgICAgKyAnIHRyYW5zaXRpb25zIHRoYXQgcnVuIHNpbXVsdGFuZW91c2x5Jyk7Cisg
ICAgYXNzZXJ0X2NsYXNzX3N0cmluZyhhbmltYXRpb25zWzBdLCAnQ1NTVHJhbnNpdGlvbicsCisg
ICAgICAgICAgICAgICAgICAgICAgICAnRmlyc3QtcmV0dXJuZWQgYW5pbWF0aW9uIGlzIHRoZSBD
U1MgVHJhbnNpdGlvbicpOworICAgIGFzc2VydF9jbGFzc19zdHJpbmcoYW5pbWF0aW9uc1sxXSwg
J0NTU0FuaW1hdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAgICAnU2Vjb25kLXJldHVybmVk
IGFuaW1hdGlvbiBpcyB0aGUgQ1NTIEFuaW1hdGlvbicpOworICB9KTsKK30sICdnZXRBbmltYXRp
b25zIGZvciBib3RoIENTUyBBbmltYXRpb25zIGFuZCBDU1MgVHJhbnNpdGlvbnMgYXQgb25jZScp
OworCithc3luY190ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0KTsKKwor
ICAvLyBTZXQgdXAgZXZlbnQgbGlzdGVuZXIKKyAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoJ2FuaW1h
dGlvbmVuZCcsIHQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9lcXVhbHMoZGl2
LmdldEFuaW1hdGlvbnMoKS5sZW5ndGgsIDAsCisgICAgICAnZ2V0QW5pbWF0aW9ucyBkb2VzIG5v
dCByZXR1cm4gQW5pbWF0aW9ucyBmb3IgZmluaXNoZWQgJworICAgICAgKyAnIChhbmQgbm9uLWZv
cndhcmRzLWZpbGxpbmcpIENTUyBBbmltYXRpb25zJyk7CisgICAgdC5kb25lKCk7CisgIH0pKTsK
KworICAvLyBBZGQgYSB2ZXJ5IHNob3J0IGFuaW1hdGlvbgorICBkaXYuc3R5bGUuYW5pbWF0aW9u
ID0gJ2FuaW0xIDAuMDFzJzsKK30sICdnZXRBbmltYXRpb25zIGZvciBDU1MgQW5pbWF0aW9ucyB0
aGF0IGhhdmUgZmluaXNoZWQnKTsKKworYXN5bmNfdGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBk
aXYgPSBhZGREaXYodCk7CisKKyAgLy8gU2V0IHVwIGV2ZW50IGxpc3RlbmVyCisgIGRpdi5hZGRF
dmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAg
ICBhc3NlcnRfZXF1YWxzKGRpdi5nZXRBbmltYXRpb25zKCkubGVuZ3RoLCAxLAorICAgICAgJ2dl
dEFuaW1hdGlvbnMgcmV0dXJucyBBbmltYXRpb25zIGZvciBDU1MgQW5pbWF0aW9ucyB0aGF0IGhh
dmUnCisgICAgICArICcgZmluaXNoZWQgYnV0IGFyZSBmaWxsaW5nIGZvcndhcmRzJyk7CisgICAg
dC5kb25lKCk7CisgIH0pKTsKKworICAvLyBBZGQgYSB2ZXJ5IHNob3J0IGFuaW1hdGlvbgorICBk
aXYuc3R5bGUuYW5pbWF0aW9uID0gJ2FuaW0xIDAuMDFzIGZvcndhcmRzJzsKK30sICdnZXRBbmlt
YXRpb25zIGZvciBDU1MgQW5pbWF0aW9ucyB0aGF0IGhhdmUgZmluaXNoZWQgYnV0IGFyZScKKyAg
ICsgJyBmb3J3YXJkcyBmaWxsaW5nJyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2
ID0gYWRkRGl2KHQpOworICBkaXYuc3R5bGUuYW5pbWF0aW9uID0gJ25vbmUgMTAwcyc7CisKKyAg
dmFyIGFuaW1hdGlvbnMgPSBkaXYuZ2V0QW5pbWF0aW9ucygpOworICBhc3NlcnRfZXF1YWxzKGFu
aW1hdGlvbnMubGVuZ3RoLCAwLAorICAgICdnZXRBbmltYXRpb25zIHJldHVybnMgYW4gZW1wdHkg
c2VxdWVuY2UgZm9yIGFuIGVsZW1lbnQnCisgICAgKyAnIHdpdGggYW5pbWF0aW9uLW5hbWU6IG5v
bmUnKTsKKworICBkaXYuc3R5bGUuYW5pbWF0aW9uID0gJ25vbmUgMTAwcywgYW5pbTEgMTAwcyc7
CisgIGFuaW1hdGlvbnMgPSBkaXYuZ2V0QW5pbWF0aW9ucygpOworICBhc3NlcnRfZXF1YWxzKGFu
aW1hdGlvbnMubGVuZ3RoLCAxLAorICAgICdnZXRBbmltYXRpb25zIHJldHVybnMgQW5pbWF0aW9u
cyBvbmx5IGZvciB0aG9zZSBDU1MgQW5pbWF0aW9ucyB3aG9zZScKKyAgICArICcgYW5pbWF0aW9u
LW5hbWUgaXMgbm90IG5vbmUnKTsKK30sICdnZXRBbmltYXRpb25zIGZvciBDU1MgQW5pbWF0aW9u
cyB3aXRoIGFuaW1hdGlvbi1uYW1lOiBub25lJyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2
YXIgZGl2ID0gYWRkRGl2KHQpOworICBkaXYuc3R5bGUuYW5pbWF0aW9uID0gJ21pc3NpbmcgMTAw
cyc7CisgIHZhciBhbmltYXRpb25zID0gZGl2LmdldEFuaW1hdGlvbnMoKTsKKyAgYXNzZXJ0X2Vx
dWFscyhhbmltYXRpb25zLmxlbmd0aCwgMCwKKyAgICAnZ2V0QW5pbWF0aW9ucyByZXR1cm5zIGFu
IGVtcHR5IHNlcXVlbmNlIGZvciBhbiBlbGVtZW50JworICAgICsgJyB3aXRoIGFuaW1hdGlvbi1u
YW1lOiBtaXNzaW5nJyk7CisKKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICdhbmltMSAxMDBzLCBt
aXNzaW5nIDEwMHMnOworICBhbmltYXRpb25zID0gZGl2LmdldEFuaW1hdGlvbnMoKTsKKyAgYXNz
ZXJ0X2VxdWFscyhhbmltYXRpb25zLmxlbmd0aCwgMSwKKyAgICAnZ2V0QW5pbWF0aW9ucyByZXR1
cm5zIEFuaW1hdGlvbnMgb25seSBmb3IgdGhvc2UgQ1NTIEFuaW1hdGlvbnMgd2hvc2UnCisgICAg
KyAnIGFuaW1hdGlvbi1uYW1lIGlzIGZvdW5kJyk7Cit9LCAnZ2V0QW5pbWF0aW9ucyBmb3IgQ1NT
IEFuaW1hdGlvbnMgd2l0aCBhbmltYXRpb24tbmFtZTogbWlzc2luZycpOworCitwcm9taXNlX3Rl
c3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQpOworICBkaXYuc3R5bGUuYW5p
bWF0aW9uID0gJ2FuaW0xIDEwMHMsIG5vdHlldCAxMDBzJzsKKyAgdmFyIGFuaW1hdGlvbnMgPSBk
aXYuZ2V0QW5pbWF0aW9ucygpOworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbnMubGVuZ3RoLCAx
LAorICAgICdnZXRBbmltYXRpb25zIGluaXRhbGx5IG9ubHkgcmV0dXJucyBBbmltYXRpb25zIGZv
ciBDU1MgQW5pbWF0aW9ucyB3aG9zZScKKyAgICArICcgYW5pbWF0aW9uLW5hbWUgaXMgZm91bmQn
KTsKKworICByZXR1cm4gYW5pbWF0aW9uc1swXS5yZWFkeS50aGVuKHdhaXRGb3JGcmFtZSkudGhl
bihmdW5jdGlvbigpIHsKKyAgICB2YXIga2V5ZnJhbWVzID0gJ0BrZXlmcmFtZXMgbm90eWV0IHsg
dG8geyBsZWZ0OiAxMDBweDsgfSB9JzsKKyAgICBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5pbnNl
cnRSdWxlKGtleWZyYW1lcywgMCk7CisgICAgYW5pbWF0aW9ucyA9IGRpdi5nZXRBbmltYXRpb25z
KCk7CisgICAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb25zLmxlbmd0aCwgMiwKKyAgICAgICdnZXRB
bmltYXRpb25zIGluY2x1ZGVzIEFuaW1hdGlvbiB3aGVuIEBrZXlmcmFtZXMgcnVsZSBpcyBhZGRl
ZCcKKyAgICAgICsgJyBsYXRlcicpOworICAgIHJldHVybiB3YWl0Rm9yQWxsQW5pbWF0aW9ucyhh
bmltYXRpb25zKTsKKyAgfSkudGhlbihmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfdHJ1ZShhbmlt
YXRpb25zWzBdLnN0YXJ0VGltZSA8IGFuaW1hdGlvbnNbMV0uc3RhcnRUaW1lLAorICAgICAgJ05l
d2x5IGFkZGVkIGFuaW1hdGlvbiBoYXMgYSBsYXRlciBzdGFydCB0aW1lJyk7CisgICAgZG9jdW1l
bnQuc3R5bGVTaGVldHNbMF0uZGVsZXRlUnVsZSgwKTsKKyAgfSk7Cit9LCAnZ2V0QW5pbWF0aW9u
cyBmb3IgQ1NTIEFuaW1hdGlvbnMgd2hlcmUgdGhlIEBrZXlmcmFtZXMgcnVsZSBpcyBhZGRlZCcK
KyAgICsgJyBsYXRlcicpOworCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERp
dih0KTsKKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICdhbmltMSAxMDBzLCBhbmltMSAxMDBzJzsK
KyAgYXNzZXJ0X2VxdWFscyhkaXYuZ2V0QW5pbWF0aW9ucygpLmxlbmd0aCwgMiwKKyAgICAnZ2V0
QW5pbWF0aW9ucyByZXR1cm5zIG9uZSBBbmltYXRpb24gZm9yIGVhY2ggQ1NTIGFuaW1hdGlvbi1u
YW1lJworICAgICsgJyBldmVuIGlmIHRoZSBuYW1lcyBhcmUgZHVwbGljYXRlZCcpOworfSwgJ2dl
dEFuaW1hdGlvbnMgZm9yIENTUyBBbmltYXRpb25zIHdpdGggZHVwbGljYXRlZCBhbmltYXRpb24t
bmFtZScpOworCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0KTsKKyAg
ZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICdlbXB0eSAxMDBzJzsKKyAgYXNzZXJ0X2VxdWFscyhkaXYu
Z2V0QW5pbWF0aW9ucygpLmxlbmd0aCwgMSwKKyAgICAnZ2V0QW5pbWF0aW9ucyByZXR1cm5zIEFu
aW1hdGlvbnMgZm9yIENTUyBhbmltYXRpb25zIHdpdGggYW4nCisgICAgKyAnIGVtcHR5IGtleWZy
YW1lcyBydWxlJyk7Cit9LCAnZ2V0QW5pbWF0aW9ucyBmb3IgQ1NTIEFuaW1hdGlvbnMgd2l0aCBl
bXB0eSBrZXlmcmFtZXMgcnVsZScpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICB2
YXIgZGl2ID0gYWRkRGl2KHQpOworICBkaXYuc3R5bGUuYW5pbWF0aW9uID0gJ2FuaW0xIDEwMHMg
MTAwcyc7CisgIHZhciBhbmltYXRpb25zID0gZGl2LmdldEFuaW1hdGlvbnMoKTsKKyAgYXNzZXJ0
X2VxdWFscyhhbmltYXRpb25zLmxlbmd0aCwgMSwKKyAgICAnZ2V0QW5pbWF0aW9ucyByZXR1cm5z
IGFuaW1hdGlvbnMgZm9yIENTUyBhbmltYXRpb25zIHdob3NlJworICAgICsgJyBkZWxheSBtYWtl
cyB0aGVtIHN0YXJ0IGxhdGVyJyk7CisgIHJldHVybiBhbmltYXRpb25zWzBdLnJlYWR5LnRoZW4o
d2FpdEZvckZyYW1lKS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90cnVlKGFuaW1hdGlv
bnNbMF0uc3RhcnRUaW1lIDw9IGRvY3VtZW50LnRpbWVsaW5lLmN1cnJlbnRUaW1lLAorICAgICAg
J0ZvciBDU1MgQW5pbWF0aW9ucyBpbiBkZWxheSBwaGFzZSwgdGhlIHN0YXJ0IHRpbWUgb2YgdGhl
IEFuaW1hdGlvbiBpcycKKyAgICAgICsgJyBub3QgaW4gdGhlIGZ1dHVyZScpOworICB9KTsKK30s
ICdnZXRBbmltYXRpb25zIGZvciBDU1MgYW5pbWF0aW9ucyBpbiBkZWxheSBwaGFzZScpOworCit0
ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0KTsKKyAgZGl2LnN0eWxlLmFu
aW1hdGlvbiA9ICdhbmltMSAwcyAxMDBzJzsKKyAgYXNzZXJ0X2VxdWFscyhkaXYuZ2V0QW5pbWF0
aW9ucygpLmxlbmd0aCwgMSwKKyAgICAnZ2V0QW5pbWF0aW9ucyByZXR1cm5zIGFuaW1hdGlvbnMg
Zm9yIENTUyBhbmltYXRpb25zIHdob3NlJworICAgICsgJyBkdXJhdGlvbiBpcyB6ZXJvJyk7Cisg
IGRpdi5yZW1vdmUoKTsKK30sICdnZXRBbmltYXRpb25zIGZvciB6ZXJvLWR1cmF0aW9uIENTUyBB
bmltYXRpb25zJyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQp
OworICBkaXYuc3R5bGUuYW5pbWF0aW9uID0gJ2FuaW0xIDEwMHMnOworICB2YXIgb3JpZ2luYWxB
bmltYXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworCisgIC8vIFVwZGF0ZSBwYXVzZSBz
dGF0ZSAoYW4gQW5pbWF0aW9uIGNoYW5nZSkKKyAgZGl2LnN0eWxlLmFuaW1hdGlvblBsYXlTdGF0
ZSA9ICdwYXVzZWQnOworICB2YXIgcGVuZGluZ0FuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25z
KClbMF07CisgIGFzc2VydF9lcXVhbHMocGVuZGluZ0FuaW1hdGlvbi5wbGF5U3RhdGUsICdwYXVz
ZWQnLAorICAgICAgICAgICAgICAgICdhbmltYXRpb25cJ3MgcGxheSBzdGF0ZSBpcyB1cGRhdGVk
Jyk7CisgIGFzc2VydF9lcXVhbHMob3JpZ2luYWxBbmltYXRpb24sIHBlbmRpbmdBbmltYXRpb24s
CisgICAgICAgICAgICAgICAgJ2dldEFuaW1hdGlvbnMgcmV0dXJucyB0aGUgc2FtZSBvYmplY3Rz
IGV2ZW4gd2hlbiB0aGVpcicKKyAgICAgICAgICAgICAgICArICcgcGxheSBzdGF0ZSBjaGFuZ2Vz
Jyk7CisKKyAgLy8gVXBkYXRlIGR1cmF0aW9uIChhbiBBbmltYXRpb24gY2hhbmdlKQorICBkaXYu
c3R5bGUuYW5pbWF0aW9uRHVyYXRpb24gPSAnMjAwcyc7CisgIHZhciBleHRlbmRlZEFuaW1hdGlv
biA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisgIC8vIEZJWE1FOiBDaGVjayBleHRlbmRlZEFu
aW1hdGlvbi5lZmZlY3QudGltaW5nLmR1cmF0aW9uIGhhcyBjaGFuZ2VkIG9uY2UgdGhlCisgIC8v
IEFQSSBpcyBhdmFpbGFibGUKKyAgYXNzZXJ0X2VxdWFscyhvcmlnaW5hbEFuaW1hdGlvbiwgZXh0
ZW5kZWRBbmltYXRpb24sCisgICAgICAgICAgICAgICAgJ2dldEFuaW1hdGlvbnMgcmV0dXJucyB0
aGUgc2FtZSBvYmplY3RzIGV2ZW4gd2hlbiB0aGVpcicKKyAgICAgICAgICAgICAgICArICcgZHVy
YXRpb24gY2hhbmdlcycpOworfSwgJ2dldEFuaW1hdGlvbnMgcmV0dXJucyBvYmplY3RzIHdpdGgg
dGhlIHNhbWUgaWRlbnRpdHknKTsKKwordGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBh
ZGREaXYodCk7CisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAnYW5pbTEgMTAwcyc7CisKKyAgYXNz
ZXJ0X2VxdWFscyhkaXYuZ2V0QW5pbWF0aW9ucygpLmxlbmd0aCwgMSwKKyAgICAnZ2V0QW5pbWF0
aW9ucyByZXR1cm5zIGFuIGFuaW1hdGlvbiBiZWZvcmUgY2FuY2VsbGluZycpOworCisgIHZhciBh
bmltYXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworCisgIGFuaW1hdGlvbi5jYW5jZWwo
KTsKKyAgYXNzZXJ0X2VxdWFscyhkaXYuZ2V0QW5pbWF0aW9ucygpLmxlbmd0aCwgMCwKKyAgICAn
Z2V0QW5pbWF0aW9ucyBkb2VzIG5vdCByZXR1cm4gY2FuY2VsbGVkIGFuaW1hdGlvbnMnKTsKKwor
ICBhbmltYXRpb24ucGxheSgpOworICBhc3NlcnRfZXF1YWxzKGRpdi5nZXRBbmltYXRpb25zKCku
bGVuZ3RoLCAxLAorICAgICdnZXRBbmltYXRpb25zIHJldHVybnMgY2FuY2VsbGVkIGFuaW1hdGlv
bnMgdGhhdCBoYXZlIGJlZW4gcmUtc3RhcnRlZCcpOworCit9LCAnZ2V0QW5pbWF0aW9ucyBmb3Ig
Q1NTIEFuaW1hdGlvbnMgdGhhdCBhcmUgY2FuY2VsbGVkJyk7CisKK3Byb21pc2VfdGVzdChmdW5j
dGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCk7CisgIGRpdi5zdHlsZS5hbmltYXRpb24g
PSAnYW5pbTIgMTAwcyc7CisKKyAgcmV0dXJuIGRpdi5nZXRBbmltYXRpb25zKClbMF0ucmVhZHku
dGhlbihmdW5jdGlvbigpIHsKKyAgICAvLyBQcmVwZW5kIHRvIHRoZSBsaXN0IGFuZCB0ZXN0IHRo
YXQgZXZlbiB0aG91Z2ggYW5pbTEgd2FzIHRyaWdnZXJlZAorICAgIC8vICphZnRlciogYW5pbTIs
IGl0IHNob3VsZCBjb21lIGZpcnN0IGJlY2F1c2UgaXQgYXBwZWFycyBmaXJzdAorICAgIC8vIGlu
IHRoZSBhbmltYXRpb24tbmFtZSBwcm9wZXJ0eS4KKyAgICBkaXYuc3R5bGUuYW5pbWF0aW9uID0g
J2FuaW0xIDEwMHMsIGFuaW0yIDEwMHMnOworICAgIHZhciBhbmltcyA9IGRpdi5nZXRBbmltYXRp
b25zKCk7CisgICAgYXNzZXJ0X2VxdWFscyhhbmltc1swXS5hbmltYXRpb25OYW1lLCAnYW5pbTEn
LAorICAgICAgICAgICAgICAgICAgJ2FuaW1hdGlvbiBvcmRlciBhZnRlciBwcmVwZW5kaW5nIHRv
IGxpc3QnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFuaW1zWzFdLmFuaW1hdGlvbk5hbWUsICdhbmlt
MicsCisgICAgICAgICAgICAgICAgICAnYW5pbWF0aW9uIG9yZGVyIGFmdGVyIHByZXBlbmRpbmcg
dG8gbGlzdCcpOworCisgICAgLy8gTm9ybWFsbHkgY2FsbGluZyBjYW5jZWwgYW5kIHBsYXkgd291
bGQgdGhpcyBwdXNoIGFuaW0xIHRvIHRoZSB0b3Agb2YKKyAgICAvLyB0aGUgc3RhY2sgYnV0IGl0
IHNob3VsZG4ndCBmb3IgQ1NTIGFuaW1hdGlvbnMgdGhhdCBtYXAgYW4gdGhlCisgICAgLy8gYW5p
bWF0aW9uLW5hbWUgcHJvcGVydHkuCisgICAgdmFyIGFuaW0xID0gYW5pbXNbMF07CisgICAgYW5p
bTEuY2FuY2VsKCk7CisgICAgYW5pbTEucGxheSgpOworICAgIGFuaW1zID0gZGl2LmdldEFuaW1h
dGlvbnMoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFuaW1zWzBdLmFuaW1hdGlvbk5hbWUsICdhbmlt
MScsCisgICAgICAgICAgICAgICAgICAnYW5pbWF0aW9uIG9yZGVyIGFmdGVyIGNhbmNlbGxpbmcg
YW5kIHJlc3RhcnRpbmcnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFuaW1zWzFdLmFuaW1hdGlvbk5h
bWUsICdhbmltMicsCisgICAgICAgICAgICAgICAgICAnYW5pbWF0aW9uIG9yZGVyIGFmdGVyIGNh
bmNlbGxpbmcgYW5kIHJlc3RhcnRpbmcnKTsKKyAgfSk7Cit9LCAnZ2V0QW5pbWF0aW9ucyBmb3Ig
Q1NTIEFuaW1hdGlvbnMgZm9sbG93cyBhbmltYXRpb24tbmFtZSBvcmRlcicpOworCit0ZXN0KGZ1
bmN0aW9uKHQpIHsKKyAgYWRkU3R5bGUodCwgeyAnI3RhcmdldDo6YWZ0ZXInOiAnYW5pbWF0aW9u
OiBhbmltMSAxMHM7JywKKyAgICAgICAgICAgICAgICAnI3RhcmdldDo6YmVmb3JlJzogJ2FuaW1h
dGlvbjogYW5pbTEgMTBzOycgfSk7CisgIHZhciB0YXJnZXQgPSBhZGREaXYodCwgeyAnaWQnOiAn
dGFyZ2V0JyB9KTsKKyAgdGFyZ2V0LnN0eWxlLmFuaW1hdGlvbiA9ICdhbmltMSAxMDBzJzsKKwor
ICB2YXIgYW5pbWF0aW9ucyA9IHRhcmdldC5nZXRBbmltYXRpb25zKHsgc3VidHJlZTogZmFsc2Ug
fSk7CisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9ucy5sZW5ndGgsIDEsCisgICAgICAgICAgICAg
ICAgJ1Nob3VsZCBmaW5kIG9ubHkgdGhlIGVsZW1lbnQnKTsKKyAgYXNzZXJ0X2VxdWFscyhhbmlt
YXRpb25zWzBdLmVmZmVjdC50YXJnZXQsIHRhcmdldCwKKyAgICAgICAgICAgICAgICAnRWZmZWN0
IHRhcmdldCBzaG91bGQgYmUgdGhlIGVsZW1lbnQnKTsKK30sICdUZXN0IEFuaW1hdGlvbkZpbHRl
cnsgc3VidHJlZTogZmFsc2UgfSB3aXRoIHNpbmdsZSBlbGVtZW50Jyk7CisKK3Rlc3QoZnVuY3Rp
b24odCkgeworICBhZGRTdHlsZSh0LCB7ICcjdGFyZ2V0OjphZnRlcic6ICdhbmltYXRpb246IGFu
aW0xIDEwczsnLAorICAgICAgICAgICAgICAgICcjdGFyZ2V0OjpiZWZvcmUnOiAnYW5pbWF0aW9u
OiBhbmltMSAxMHM7JyB9KTsKKyAgdmFyIHRhcmdldCA9IGFkZERpdih0LCB7ICdpZCc6ICd0YXJn
ZXQnIH0pOworICB0YXJnZXQuc3R5bGUuYW5pbWF0aW9uID0gJ2FuaW0xIDEwMHMnOworCisgIHZh
ciBhbmltYXRpb25zID0gdGFyZ2V0LmdldEFuaW1hdGlvbnMoeyBzdWJ0cmVlOiB0cnVlIH0pOwor
ICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbnMubGVuZ3RoLCAzLAorICAgICAgICAgICAgICAgICdn
ZXRBbmltYXRpb25zKHsgc3VidHJlZTogdHJ1ZSB9KSAnICsKKyAgICAgICAgICAgICAgICAnc2hv
dWxkIHJldHVybiBhbmltYXRpb25zIG9uIHBzZXVkby1lbGVtZW50cycpOworICBhc3NlcnRfZXF1
YWxzKGFuaW1hdGlvbnNbMF0uZWZmZWN0LnRhcmdldCwgdGFyZ2V0LAorICAgICAgICAgICAgICAg
ICdUaGUgYW5pbWF0aW9uIHRhcmdldGluZyB0aGUgcGFyZW50IGVsZW1lbnQgJyArCisgICAgICAg
ICAgICAgICAgJ3Nob3VsZCBiZSByZXR1cm5lZCBmaXJzdCcpOworICBhc3NlcnRfZXF1YWxzKGFu
aW1hdGlvbnNbMV0uZWZmZWN0LnRhcmdldC50eXBlLCAnOjpiZWZvcmUnLAorICAgICAgICAgICAg
ICAgICdUaGUgYW5pbWF0aW9uIHRhcmdldGluZyB0aGUgOjpiZWZvcmUgcHNldWRvLWVsZW1lbnQg
JyArCisgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSByZXR1cm5lZCBzZWNvbmQnKTsKKyAgYXNz
ZXJ0X2VxdWFscyhhbmltYXRpb25zWzJdLmVmZmVjdC50YXJnZXQudHlwZSwgJzo6YWZ0ZXInLAor
ICAgICAgICAgICAgICAgICdUaGUgYW5pbWF0aW9uIHRhcmdldGluZyB0aGUgOjphZnRlciBwZXN1
ZG8tZWxlbWVudCAnICsKKyAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHJldHVybmVkIGxhc3Qn
KTsKK30sICdUZXN0IEFuaW1hdGlvbkZpbHRlcnsgc3VidHJlZTogdHJ1ZSB9IHdpdGggc2luZ2xl
IGVsZW1lbnQnKTsKKwordGVzdChmdW5jdGlvbih0KSB7CisgIGFkZFN0eWxlKHQsIHsgJyNwYXJl
bnQ6OmFmdGVyJzogJ2FuaW1hdGlvbjogYW5pbTEgMTBzOycsCisgICAgICAgICAgICAgICAgJyNw
YXJlbnQ6OmJlZm9yZSc6ICdhbmltYXRpb246IGFuaW0xIDEwczsnLAorICAgICAgICAgICAgICAg
ICcjY2hpbGQ6OmFmdGVyJzogJ2FuaW1hdGlvbjogYW5pbTEgMTBzOycsCisgICAgICAgICAgICAg
ICAgJyNjaGlsZDo6YmVmb3JlJzogJ2FuaW1hdGlvbjogYW5pbTEgMTBzOycgfSk7CisgIHZhciBw
YXJlbnQgPSBhZGREaXYodCwgeyAnaWQnOiAncGFyZW50JyB9KTsKKyAgcGFyZW50LnN0eWxlLmFu
aW1hdGlvbiA9ICdhbmltMSAxMDBzJzsKKyAgdmFyIGNoaWxkID0gYWRkRGl2KHQsIHsgJ2lkJzog
J2NoaWxkJyB9KTsKKyAgY2hpbGQuc3R5bGUuYW5pbWF0aW9uID0gJ2FuaW0xIDEwMHMnOworICBw
YXJlbnQuYXBwZW5kQ2hpbGQoY2hpbGQpOworCisgIHZhciBhbmltYXRpb25zID0gcGFyZW50Lmdl
dEFuaW1hdGlvbnMoeyBzdWJ0cmVlOiBmYWxzZSB9KTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltYXRp
b25zLmxlbmd0aCwgMSwKKyAgICAgICAgICAgICAgICAnU2hvdWxkIGZpbmQgb25seSB0aGUgZWxl
bWVudCBldmVuIGlmIGl0IGhhcyBhIGNoaWxkJyk7CisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9u
c1swXS5lZmZlY3QudGFyZ2V0LCBwYXJlbnQsCisgICAgICAgICAgICAgICAgJ0VmZmVjdCB0YXJn
ZXQgc2h1bGQgYmUgdGhlIGVsZW1lbnQnKTsKK30sICdUZXN0IEFuaW1hdGlvbkZpbHRlcnsgc3Vi
dHJlZTogZmFsc2UgfSB3aXRoIGVsZW1lbnQgdGhhdCBoYXMgYSBjaGlsZCcpOworCit0ZXN0KGZ1
bmN0aW9uKHQpIHsKKyAgYWRkU3R5bGUodCwgeyAnI3BhcmVudDo6YWZ0ZXInOiAnYW5pbWF0aW9u
OiBhbmltMSAxMHM7JywKKyAgICAgICAgICAgICAgICAnI3BhcmVudDo6YmVmb3JlJzogJ2FuaW1h
dGlvbjogYW5pbTEgMTBzOycsCisgICAgICAgICAgICAgICAgJyNjaGlsZDo6YWZ0ZXInOiAnYW5p
bWF0aW9uOiBhbmltMSAxMHM7JywKKyAgICAgICAgICAgICAgICAnI2NoaWxkOjpiZWZvcmUnOiAn
YW5pbWF0aW9uOiBhbmltMSAxMHM7JyB9KTsKKyAgdmFyIHBhcmVudCA9IGFkZERpdih0LCB7ICdp
ZCc6ICdwYXJlbnQnIH0pOworICB2YXIgY2hpbGQgPSBhZGREaXYodCwgeyAnaWQnOiAnY2hpbGQn
IH0pOworICBwYXJlbnQuc3R5bGUuYW5pbWF0aW9uID0gJ2FuaW0xIDEwMHMnOworICBjaGlsZC5z
dHlsZS5hbmltYXRpb24gPSAnYW5pbTEgMTAwcyc7CisgIHBhcmVudC5hcHBlbmRDaGlsZChjaGls
ZCk7CisKKyAgdmFyIGFuaW1hdGlvbnMgPSBwYXJlbnQuZ2V0QW5pbWF0aW9ucyh7IHN1YnRyZWU6
IHRydWUgfSk7CisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9ucy5sZW5ndGgsIDYsCisgICAgICAg
ICAgICAgICAgJ1Nob3VsZCBmaW5kIGFsbCBlbGVtZW50cywgcGVzdWRvLWVsZW1lbnRzIHRoYXQg
cGFyZW50IGhhcycpOworCisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uc1swXS5lZmZlY3QudGFy
Z2V0LCBwYXJlbnQsCisgICAgICAgICAgICAgICAgJ1RoZSBhbmltYXRpb24gdGFyZ2V0aW5nIHRo
ZSBwYXJlbnQgZWxlbWVudCAnICsKKyAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHJldHVybmVk
IGZpcnN0Jyk7CisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uc1sxXS5lZmZlY3QudGFyZ2V0LnR5
cGUsICc6OmJlZm9yZScsCisgICAgICAgICAgICAgICAgJ1RoZSBhbmltYXRpb24gdGFyZ2V0aW5n
IHRoZSA6OmJlZm9yZSBwc2V1ZG8tZWxlbWVudCAnICsKKyAgICAgICAgICAgICAgICAnc2hvdWxk
IGJlIHJldHVybmVkIHNlY29uZCcpOworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbnNbMV0uZWZm
ZWN0LnRhcmdldC5wYXJlbnRFbGVtZW50LCBwYXJlbnQsCisgICAgICAgICAgICAgICAgJ1RoaXMg
OjpiZWZvcmUgZWxlbWVudCBzaG91bGQgYmUgY2hpbGQgb2YgcGFyZW50IGVsZW1lbnQnKTsKKyAg
YXNzZXJ0X2VxdWFscyhhbmltYXRpb25zWzJdLmVmZmVjdC50YXJnZXQudHlwZSwgJzo6YWZ0ZXIn
LAorICAgICAgICAgICAgICAgICdUaGUgYW5pbWF0aW9uIHRhcmdldGluZyB0aGUgOjphZnRlciBw
ZXN1ZG8tZWxlbWVudCAnICsKKyAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHJldHVybmVkIHRo
aXJkJyk7CisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uc1syXS5lZmZlY3QudGFyZ2V0LnBhcmVu
dEVsZW1lbnQsIHBhcmVudCwKKyAgICAgICAgICAgICAgICAnVGhpcyA6OmFmdGVyIGVsZW1lbnQg
c2hvdWxkIGJlIGNoaWxkIG9mIHBhcmVudCBlbGVtZW50Jyk7CisKKyAgYXNzZXJ0X2VxdWFscyhh
bmltYXRpb25zWzNdLmVmZmVjdC50YXJnZXQsIGNoaWxkLAorICAgICAgICAgICAgICAgICdUaGUg
YW5pbWF0aW9uIHRhcmdldGluZyB0aGUgY2hpbGQgZWxlbWVudCAnICsKKyAgICAgICAgICAgICAg
ICAnc2hvdWxkIGJlIHJldHVybmVkIGZvdXJ0aCcpOworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlv
bnNbNF0uZWZmZWN0LnRhcmdldC50eXBlLCAnOjpiZWZvcmUnLAorICAgICAgICAgICAgICAgICdU
aGUgYW5pbWF0aW9uIHRhcmdldGluZyB0aGUgOjpiZWZvcmUgcHNldWRvLWVsZW1lbnQgJyArCisg
ICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSByZXR1cm5lZCBmaWZ0aCcpOworICBhc3NlcnRfZXF1
YWxzKGFuaW1hdGlvbnNbNF0uZWZmZWN0LnRhcmdldC5wYXJlbnRFbGVtZW50LCBjaGlsZCwKKyAg
ICAgICAgICAgICAgICAnVGhpcyA6OmJlZm9yZSBlbGVtZW50IHNob3VsZCBiZSBjaGlsZCBvZiBj
aGlsZCBlbGVtZW50Jyk7CisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uc1s1XS5lZmZlY3QudGFy
Z2V0LnR5cGUsICc6OmFmdGVyJywKKyAgICAgICAgICAgICAgICAnVGhlIGFuaW1hdGlvbiB0YXJn
ZXRpbmcgdGhlIDo6YWZ0ZXIgcGVzdWRvLWVsZW1lbnQgJyArCisgICAgICAgICAgICAgICAgJ3No
b3VsZCBiZSByZXR1cm5lZCBsYXN0Jyk7CisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uc1s1XS5l
ZmZlY3QudGFyZ2V0LnBhcmVudEVsZW1lbnQsIGNoaWxkLAorICAgICAgICAgICAgICAgICdUaGlz
IDo6YWZ0ZXIgZWxlbWVudCBzaG91bGQgYmUgY2hpbGQgb2YgY2hpbGQgZWxlbWVudCcpOworfSwg
J1Rlc3QgQW5pbWF0aW9uRmlsdGVyeyBzdWJ0cmVlOiB0cnVlIH0gd2l0aCBlbGVtZW50IHRoYXQg
aGFzIGEgY2hpbGQnKTsKKwordGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBwYXJlbnQgPSBhZGRE
aXYodCwgeyAnaWQnOiAncGFyZW50JyB9KTsKKyAgdmFyIGNoaWxkMSA9IGFkZERpdih0LCB7ICdp
ZCc6ICdjaGlsZDEnIH0pOworICB2YXIgZ3JhbmRjaGlsZDEgPSBhZGREaXYodCwgeyAnaWQnOiAn
Z3JhbmRjaGlsZDEnIH0pOworICB2YXIgZ3JhbmRjaGlsZDIgPSBhZGREaXYodCwgeyAnaWQnOiAn
Z3JhbmRjaGlsZDInIH0pOworICB2YXIgY2hpbGQyID0gYWRkRGl2KHQsIHsgJ2lkJzogJ2NoaWxk
MicgfSk7CisKKyAgcGFyZW50LnN0eWxlLmFuaW1hdGlvbiA9ICdhbmltMSAxMDBzJzsKKyAgY2hp
bGQxLnN0eWxlLmFuaW1hdGlvbiA9ICdhbmltMSAxMDBzJzsKKyAgZ3JhbmRjaGlsZDEuc3R5bGUu
YW5pbWF0aW9uID0gJ2FuaW0xIDEwMHMnOworICBncmFuZGNoaWxkMi5zdHlsZS5hbmltYXRpb24g
PSAnYW5pbTEgMTAwcyc7CisgIGNoaWxkMi5zdHlsZS5hbmltYXRpb24gPSAnYW5pbTEgMTAwcyc7
CisKKyAgcGFyZW50LmFwcGVuZENoaWxkKGNoaWxkMSk7CisgIGNoaWxkMS5hcHBlbmRDaGlsZChn
cmFuZGNoaWxkMSk7CisgIGNoaWxkMS5hcHBlbmRDaGlsZChncmFuZGNoaWxkMik7CisgIHBhcmVu
dC5hcHBlbmRDaGlsZChjaGlsZDIpOworCisgIHZhciBhbmltYXRpb25zID0gcGFyZW50LmdldEFu
aW1hdGlvbnMoeyBzdWJ0cmVlOiB0cnVlIH0pOworICBhc3NlcnRfZXF1YWxzKAorICAgIHBhcmVu
dC5nZXRBbmltYXRpb25zKHsgc3VidHJlZTogdHJ1ZSB9KS5sZW5ndGgsIDUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgJ1Nob3VsZCBmaW5kIGFsbCBkZXNjZW5kYW50cyBvZiB0aGUgZWxlbWVu
dCcpOworCisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uc1swXS5lZmZlY3QudGFyZ2V0LCBwYXJl
bnQsCisgICAgICAgICAgICAgICAgJ1RoZSBhbmltYXRpb24gdGFyZ2V0aW5nIHRoZSBwYXJlbnQg
ZWxlbWVudCAnICsKKyAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHJldHVybmVkIGZpcnN0Jyk7
CisKKyAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb25zWzFdLmVmZmVjdC50YXJnZXQsIGNoaWxkMSwK
KyAgICAgICAgICAgICAgICAnVGhlIGFuaW1hdGlvbiB0YXJnZXRpbmcgdGhlIGNoaWxkMSBlbGVt
ZW50ICcgKworICAgICAgICAgICAgICAgICdzaG91bGQgYmUgcmV0dXJuZWQgc2Vjb25kJyk7CisK
KyAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb25zWzJdLmVmZmVjdC50YXJnZXQsIGdyYW5kY2hpbGQx
LAorICAgICAgICAgICAgICAgICdUaGUgYW5pbWF0aW9uIHRhcmdldGluZyB0aGUgZ3JhbmRjaGls
ZDEgZWxlbWVudCAnICsKKyAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHJldHVybmVkIHRoaXJk
Jyk7CisKKyAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb25zWzNdLmVmZmVjdC50YXJnZXQsIGdyYW5k
Y2hpbGQyLAorICAgICAgICAgICAgICAgICdUaGUgYW5pbWF0aW9uIHRhcmdldGluZyB0aGUgZ3Jh
bmRjaGlsZDIgZWxlbWVudCAnICsKKyAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHJldHVybmVk
IGZvdXJ0aCcpOworCisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uc1s0XS5lZmZlY3QudGFyZ2V0
LCBjaGlsZDIsCisgICAgICAgICAgICAgICAgJ1RoZSBhbmltYXRpb24gdGFyZ2V0aW5nIHRoZSBj
aGlsZDIgZWxlbWVudCAnICsKKyAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHJldHVybmVkIGxh
c3QnKTsKKworfSwgJ1Rlc3QgQW5pbWF0aW9uRmlsdGVyeyBzdWJ0cmVlOiB0cnVlIH0gd2l0aCBl
bGVtZW50IHRoYXQgaGFzIG1hbnkgZGVzY2VuZGFudCcpOworCis8L3NjcmlwdD4KKzwvYm9keT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMv
dGVzdF9ldmVudC1kaXNwYXRjaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfZXZlbnQtZGlzcGF0Y2gtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMwNmY4MGRkN2VjMTQ2NDUwMTZhOTQ0YzY4OTdlNTUxYjRkMjQ5MDIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25z
L3Rlc3RfZXZlbnQtZGlzcGF0Y2gtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorI1BJRCBV
TlJFU1BPTlNJVkUgLSBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuRGV2ZWxvcG1lbnQgKHBp
ZCAxMzU1OSkKK0ZBSUw6IFRpbWVkIG91dCB3YWl0aW5nIGZvciBub3RpZnlEb25lIHRvIGJlIGNh
bGxlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmlt
YXRpb25zL3Rlc3RfZXZlbnQtZGlzcGF0Y2guaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21v
emlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9ldmVudC1kaXNwYXRjaC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI4YTNlZjY4OGMxZGE4OGIwODMwNTk0YjUwMGRjN2Y4NGZiN2ZmNjIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfZXZl
bnQtZGlzcGF0Y2guaHRtbApAQCAtMCwwICsxLDM4MiBAQAorPCFkb2N0eXBlIGh0bWw+PCEtLSB3
ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVDU1NBbmltYXRpb25zQW5kQ1NTVHJhbnNpdGlvbnNC
YWNrZWRCeVdlYkFuaW1hdGlvbnM9dHJ1ZSBdIC0tPgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzx0
aXRsZT5UZXN0cyBmb3IgQ1NTIGFuaW1hdGlvbiBldmVudCBkaXNwYXRjaDwvdGl0bGU+Cis8bGlu
ayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtYW5pbWF0aW9u
cy0yLyNldmVudC1kaXNwYXRjaCIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdGNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgIEBrZXlmcmFtZXMgYW5pbSB7
CisgICAgZnJvbSB7IG1hcmdpbi1sZWZ0OiAwcHg7IH0KKyAgICB0byB7IG1hcmdpbi1sZWZ0OiAx
MDBweDsgfQorICB9Cis8L3N0eWxlPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNj
cmlwdD4KKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBIZWxwZXIgY2xhc3MgdG8gcmVjb3JkIHRo
ZSBlbGFwc2VkVGltZSBtZW1iZXIgb2YgZWFjaCBldmVudC4KKyAqIFRoZSBFdmVudFdhdGNoZXIg
Y2xhc3MgaW4gdGVzdGhhcm5lc3MuanMgYWxsb3dzIHVzIHRvIHdhaXQgb24KKyAqIG11bHRpcGxl
IGV2ZW50cyBpbiBhIGNlcnRhaW4gb3JkZXIgYnV0IG9ubHkgcmVjb3JkcyB0aGUgZXZlbnQKKyAq
IHBhcmFtZXRlcnMgb2YgdGhlIG1vc3QgcmVjZW50IGV2ZW50LgorICovCitmdW5jdGlvbiBBbmlt
YXRpb25FdmVudEhhbmRsZXIodGFyZ2V0KSB7CisgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0OworICB0
aGlzLnRhcmdldC5vbmFuaW1hdGlvbnN0YXJ0ID0gZXZ0ID0+IHsKKyAgIHRoaXMuYW5pbWF0aW9u
c3RhcnQgPSBldnQuZWxhcHNlZFRpbWU7CisgIH07CisgIHRoaXMudGFyZ2V0Lm9uYW5pbWF0aW9u
aXRlcmF0aW9uID0gZXZ0ID0+IHsKKyAgICB0aGlzLmFuaW1hdGlvbml0ZXJhdGlvbiA9IGV2dC5l
bGFwc2VkVGltZTsKKyAgfTsKKyAgdGhpcy50YXJnZXQub25hbmltYXRpb25lbmQgPSBldnQgPT4g
eworICAgIHRoaXMuYW5pbWF0aW9uZW5kID0gZXZ0LmVsYXBzZWRUaW1lOworICB9OworICB0aGlz
LnRhcmdldC5vbmFuaW1hdGlvbmNhbmNlbCA9IGV2dCA9PiB7CisgICAgdGhpcy5hbmltYXRpb25j
YW5jZWwgPSBldnQuZWxhcHNlZFRpbWU7CisgIH07Cit9CitBbmltYXRpb25FdmVudEhhbmRsZXIu
cHJvdG90eXBlLmNsZWFyID0gKCkgPT4geworICB0aGlzLmFuaW1hdGlvbnN0YXJ0ICAgICA9IHVu
ZGVmaW5lZDsKKyAgdGhpcy5hbmltYXRpb25pdGVyYXRpb24gPSB1bmRlZmluZWQ7CisgIHRoaXMu
YW5pbWF0aW9uZW5kICAgICAgID0gdW5kZWZpbmVkOworICB0aGlzLmFuaW1hdGlvbmNhbmNlbCAg
ICA9IHVuZGVmaW5lZDsKK30KKworZnVuY3Rpb24gc2V0dXBBbmltYXRpb24odCwgYW5pbWF0aW9u
U3R5bGUpIHsKKyAgY29uc3QgZGl2ID0gYWRkRGl2KHQsIHsgc3R5bGU6ICdhbmltYXRpb246ICcg
KyBhbmltYXRpb25TdHlsZSB9KTsKKyAgLy8gTm90ZSB0aGF0IHRoaXMgQW5pbWF0aW9uRXZlbnRI
YW5kbGVyIHNob3VsZCBiZSBjcmVhdGVkIGJlZm9yZSBFdmVudFdhdGNoZXIKKyAgLy8gdG8gY2Fw
dHVyZSBhbGwgZXZlbnRzIGluIHRoZSBoYW5kbGVyIHByaW9yIHRvIHRoZSBFdmVudFdhdGNoZXIg
c2luY2UKKyAgLy8gdGVzdGhhcm5lc3MuanMgcHJvY2VlZHMgd2hlbiB0aGUgRXZlbnRXYXRjaGVy
IHJlY2VpdmVkIHdhdGNoaW5nIGV2ZW50cy4KKyAgY29uc3QgaGFuZGxlciA9IG5ldyBBbmltYXRp
b25FdmVudEhhbmRsZXIoZGl2KTsKKyAgY29uc3Qgd2F0Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIo
dCwgZGl2LCBbICdhbmltYXRpb25zdGFydCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ2FuaW1hdGlvbml0ZXJhdGlvbicsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2FuaW1hdGlvbmVuZCcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuaW1hdGlvbmNhbmNlbCcgXSk7CisgIGNvbnN0
IGFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisKKyAgcmV0dXJuIHsgYW5pbWF0
aW9uLCB3YXRjaGVyLCBkaXYsIGhhbmRsZXIgfTsKK30KKworcHJvbWlzZV90ZXN0KHQgPT4gewor
ICAvLyBBZGQgMW1zIGRlbGF5IHRvIGVuc3VyZSB0aGF0IHRoZSBkZWxheSBpcyBub3QgaW5jbHVk
ZWQgaW4gdGhlIGVsYXBzZWRUaW1lLgorICBjb25zdCB7IGFuaW1hdGlvbiwgd2F0Y2hlciB9ID0g
c2V0dXBBbmltYXRpb24odCwgJ2FuaW0gMTAwcyAxbXMnKTsKKworICByZXR1cm4gd2F0Y2hlci53
YWl0X2ZvcignYW5pbWF0aW9uc3RhcnQnKS50aGVuKGV2dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFs
cyhldnQuZWxhcHNlZFRpbWUsIDAuMCk7CisgIH0pOworfSwgJ0lkbGUgLT4gQWN0aXZlJyk7CisK
K3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyBhbmltYXRpb24sIHdhdGNoZXIsIGRpdiwg
aGFuZGxlciB9ID0gc2V0dXBBbmltYXRpb24odCwgJ2FuaW0gMTAwcycpOworCisgIC8vIFNlZWsg
dG8gQWZ0ZXIgcGhhc2UuCisgIGFuaW1hdGlvbi5maW5pc2goKTsKKyAgcmV0dXJuIHdhdGNoZXIu
d2FpdF9mb3IoWyAnYW5pbWF0aW9uc3RhcnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdhbmltYXRpb25lbmQnIF0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMoaGFuZGxl
ci5hbmltYXRpb25zdGFydCwgMC4wKTsKKyAgICBhc3NlcnRfZXF1YWxzKGhhbmRsZXIuYW5pbWF0
aW9uZW5kLCAxMDApOworICB9KTsKK30sICdJZGxlIC0+IEFmdGVyJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKyAgY29uc3QgeyBhbmltYXRpb24sIHdhdGNoZXIgfSA9CisgICAgc2V0dXBBbmlt
YXRpb24odCwgJ2FuaW0gMTAwcyAxMDBzIHBhdXNlZCcpOworCisgIHJldHVybiBhbmltYXRpb24u
cmVhZHkudGhlbigoKSA9PiB7CisgICAgLy8gU2VlayB0byBBY3RpdmUgcGhhc2UuCisgICAgYW5p
bWF0aW9uLmN1cnJlbnRUaW1lID0gMTAwICogTVNfUEVSX1NFQzsKKyAgICByZXR1cm4gd2F0Y2hl
ci53YWl0X2ZvcignYW5pbWF0aW9uc3RhcnQnKTsKKyAgfSkudGhlbihldnQgPT4geworICAgIGFz
c2VydF9lcXVhbHMoZXZ0LmVsYXBzZWRUaW1lLCAwLjApOworICB9KTsKK30sICdCZWZvcmUgLT4g
QWN0aXZlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyBhbmltYXRpb24sIHdh
dGNoZXIsIGRpdiwgaGFuZGxlciB9ID0KKyAgICBzZXR1cEFuaW1hdGlvbih0LCAnYW5pbSAxMDBz
IDEwMHMgcGF1c2VkJyk7CisKKyAgcmV0dXJuIGFuaW1hdGlvbi5yZWFkeS50aGVuKCgpID0+IHsK
KyAgICAvLyBTZWVrIHRvIEFmdGVyIHBoYXNlLgorICAgIGFuaW1hdGlvbi5maW5pc2goKTsKKyAg
ICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcihbICdhbmltYXRpb25zdGFydCcsICdhbmltYXRpb25l
bmQnIF0pOworICB9KS50aGVuKGV2dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhoYW5kbGVyLmFu
aW1hdGlvbnN0YXJ0LCAwLjApOworICAgIGFzc2VydF9lcXVhbHMoaGFuZGxlci5hbmltYXRpb25l
bmQsIDEwMC4wKTsKKyAgfSk7Cit9LCAnQmVmb3JlIC0+IEFmdGVyJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKyAgY29uc3QgeyBhbmltYXRpb24sIHdhdGNoZXIsIGRpdiB9ID0gc2V0dXBBbmlt
YXRpb24odCwgJ2FuaW0gMTAwcyBwYXVzZWQnKTsKKworICByZXR1cm4gd2F0Y2hlci53YWl0X2Zv
cignYW5pbWF0aW9uc3RhcnQnKS50aGVuKGV2dCA9PiB7CisgICAgLy8gTWFrZSBpZGxlCisgICAg
ZGl2LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3Io
J2FuaW1hdGlvbmNhbmNlbCcpOworICB9KS50aGVuKGV2dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFs
cyhldnQuZWxhcHNlZFRpbWUsIDAuMCk7CisgIH0pOworfSwgJ0FjdGl2ZSAtPiBJZGxlLCBkaXNw
bGF5OiBub25lJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyBhbmltYXRpb24s
IHdhdGNoZXIsIGRpdiB9ID0gc2V0dXBBbmltYXRpb24odCwgJ2FuaW0gMTAwcycpOworCisgIHJl
dHVybiB3YXRjaGVyLndhaXRfZm9yKCdhbmltYXRpb25zdGFydCcpLnRoZW4oZXZ0ID0+IHsKKyAg
ICBhbmltYXRpb24uY3VycmVudFRpbWUgPSAxMDAuMDsKKyAgICAvLyBNYWtlIGlkbGUKKyAgICBh
bmltYXRpb24udGltZWxpbmUgPSBudWxsOworICAgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKCdh
bmltYXRpb25jYW5jZWwnKTsKKyAgfSkudGhlbihldnQgPT4geworICAgIGFzc2VydF90aW1lX2Vx
dWFsc19saXRlcmFsKGV2dC5lbGFwc2VkVGltZSwgMC4xKTsKKyAgfSk7Cit9LCAnQWN0aXZlIC0+
IElkbGUsIHNldHRpbmcgQW5pbWF0aW9uLnRpbWVsaW5lID0gbnVsbCcpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisgIC8vIHdlIHNob3VsZCBOT1QgcGF1c2UgYW5pbWF0aW9uIHNpbmNlIGNhbGxp
bmcgY2FuY2VsIHN5bmNocm9ub3VzbHkuCisgIGNvbnN0IHsgYW5pbWF0aW9uLCB3YXRjaGVyLCBk
aXYgfSA9IHNldHVwQW5pbWF0aW9uKHQsICdhbmltIDEwMHMnKTsKKworICByZXR1cm4gd2F0Y2hl
ci53YWl0X2ZvcignYW5pbWF0aW9uc3RhcnQnKS50aGVuKGV2dCA9PiB7CisgICAgYW5pbWF0aW9u
LmN1cnJlbnRUaW1lID0gNTAuMDsKKyAgICBhbmltYXRpb24uY2FuY2VsKCk7CisgICAgcmV0dXJu
IHdhdGNoZXIud2FpdF9mb3IoJ2FuaW1hdGlvbmNhbmNlbCcpOworICB9KS50aGVuKGV2dCA9PiB7
CisgICAgYXNzZXJ0X3RpbWVfZXF1YWxzX2xpdGVyYWwoZXZ0LmVsYXBzZWRUaW1lLCAwLjA1KTsK
KyAgfSk7Cit9LCAnQWN0aXZlIC0+IElkbGUsIGNhbGxpbmcgQW5pbWF0aW9uLmNhbmNlbCgpJyk7
CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyBhbmltYXRpb24sIHdhdGNoZXIgfSA9
CisgICAgc2V0dXBBbmltYXRpb24odCwgJ2FuaW0gMTAwcyAxMDBzIHBhdXNlZCcpOworCisgIC8v
IFNlZWsgdG8gQWN0aXZlIHBoYXNlLgorICBhbmltYXRpb24uY3VycmVudFRpbWUgPSAxMDAgKiBN
U19QRVJfU0VDOworICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcignYW5pbWF0aW9uc3RhcnQnKS50
aGVuKCgpID0+IHsKKyAgICAvLyBTZWVrIHRvIEJlZm9yZSBwaGFzZS4KKyAgICBhbmltYXRpb24u
Y3VycmVudFRpbWUgPSAwOworICAgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKCdhbmltYXRpb25l
bmQnKTsKKyAgfSkudGhlbihldnQgPT4geworICAgIGFzc2VydF9lcXVhbHMoZXZ0LmVsYXBzZWRU
aW1lLCAwLjApOworICB9KTsKK30sICdBY3RpdmUgLT4gQmVmb3JlJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKyAgY29uc3QgeyBhbmltYXRpb24sIHdhdGNoZXIgfSA9IHNldHVwQW5pbWF0aW9u
KHQsICdhbmltIDEwMHMgcGF1c2VkJyk7CisKKyAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ2Fu
aW1hdGlvbnN0YXJ0JykudGhlbihldnQgPT4geworICAgIC8vIFNlZWsgdG8gQWZ0ZXIgcGhhc2Uu
CisgICAgYW5pbWF0aW9uLmZpbmlzaCgpOworICAgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKCdh
bmltYXRpb25lbmQnKTsKKyAgfSkudGhlbihldnQgPT4geworICAgIGFzc2VydF9lcXVhbHMoZXZ0
LmVsYXBzZWRUaW1lLCAxMDAuMCk7CisgIH0pOworfSwgJ0FjdGl2ZSAtPiBBZnRlcicpOworCitw
cm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHsgYW5pbWF0aW9uLCB3YXRjaGVyLCBkaXYsIGhh
bmRsZXIgfSA9CisgICAgc2V0dXBBbmltYXRpb24odCwgJ2FuaW0gMTAwcyAxMDBzIHBhdXNlZCcp
OworCisgIC8vIFNlZWsgdG8gQWZ0ZXIgcGhhc2UuCisgIGFuaW1hdGlvbi5maW5pc2goKTsKKyAg
cmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoWyAnYW5pbWF0aW9uc3RhcnQnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdhbmltYXRpb25lbmQnIF0pLnRoZW4oKCkgPT4geworICAgIC8vIFNl
ZWsgdG8gQmVmb3JlIHBoYXNlLgorICAgIGFuaW1hdGlvbi5jdXJyZW50VGltZSA9IDA7CisgICAg
aGFuZGxlci5jbGVhcigpOworICAgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKFsgJ2FuaW1hdGlv
bnN0YXJ0JywgJ2FuaW1hdGlvbmVuZCcgXSk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2Vy
dF9lcXVhbHMoaGFuZGxlci5hbmltYXRpb25zdGFydCwgMTAwLjApOworICAgIGFzc2VydF9lcXVh
bHMoaGFuZGxlci5hbmltYXRpb25lbmQsIDAuMCk7CisgIH0pOworfSwgJ0FmdGVyIC0+IEJlZm9y
ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHsgYW5pbWF0aW9uLCB3YXRjaGVy
LCBkaXYgfSA9CisgICAgc2V0dXBBbmltYXRpb24odCwgJ2FuaW0gMTAwcyAxMDBzIHBhdXNlZCcp
OworCisgIC8vIFNlZWsgdG8gQWZ0ZXIgcGhhc2UuCisgIGFuaW1hdGlvbi5maW5pc2goKTsKKyAg
cmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoWyAnYW5pbWF0aW9uc3RhcnQnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdhbmltYXRpb25lbmQnIF0pLnRoZW4oKCkgPT4geworICAgIC8vIFNl
ZWsgdG8gQWN0aXZlIHBoYXNlLgorICAgIGFuaW1hdGlvbi5jdXJyZW50VGltZSA9IDEwMCAqIE1T
X1BFUl9TRUM7CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ2FuaW1hdGlvbnN0YXJ0Jyk7
CisgIH0pLnRoZW4oZXZ0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGV2dC5lbGFwc2VkVGltZSwg
MTAwLjApOworICB9KTsKK30sICdBZnRlciAtPiBBY3RpdmUnKTsKKworcHJvbWlzZV90ZXN0KHQg
PT4geworICBjb25zdCB7IGFuaW1hdGlvbiwgd2F0Y2hlciwgZGl2IH0KKyAgICA9IHNldHVwQW5p
bWF0aW9uKHQsICdhbmltIDEwMHMgMTAwcyAzIHBhdXNlZCcpOworCisgIHJldHVybiBhbmltYXRp
b24ucmVhZHkudGhlbigoKSA9PiB7CisgICAgLy8gU2VlayB0byBpdGVyYXRpb24gMCAobm8gYW5p
bWF0aW9uaXRlcmF0aW9uIGV2ZW50IHNob3VsZCBiZSBkaXNwYXRjaGVkKQorICAgIGFuaW1hdGlv
bi5jdXJyZW50VGltZSA9IDEwMCAqIE1TX1BFUl9TRUM7CisgICAgcmV0dXJuIHdhdGNoZXIud2Fp
dF9mb3IoJ2FuaW1hdGlvbnN0YXJ0Jyk7CisgIH0pLnRoZW4oZXZ0ID0+IHsKKyAgICAvLyBTZWVr
IHRvIGl0ZXJhdGlvbiAyCisgICAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gMzAwICogTVNfUEVS
X1NFQzsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcignYW5pbWF0aW9uaXRlcmF0aW9uJyk7
CisgIH0pLnRoZW4oZXZ0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGV2dC5lbGFwc2VkVGltZSwg
MjAwKTsKKyAgICAvLyBTZWVrIHRvIEFmdGVyIHBoYXNlIChubyBhbmltYXRpb25pdGVyYXRpb24g
ZXZlbnQgc2hvdWxkIGJlIGRpc3BhdGNoZWQpCisgICAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0g
NDAwICogTVNfUEVSX1NFQzsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcignYW5pbWF0aW9u
ZW5kJyk7CisgIH0pLnRoZW4oZXZ0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGV2dC5lbGFwc2Vk
VGltZSwgMzAwKTsKKyAgfSk7Cit9LCAnQWN0aXZlIC0+IEFjdGl2ZSAoZm9yd2FyZHMpJyk7CisK
K3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyBhbmltYXRpb24sIHdhdGNoZXIgfSA9IHNl
dHVwQW5pbWF0aW9uKHQsICdhbmltIDEwMHMgMTAwcyAzJyk7CisKKyAgLy8gU2VlayB0byBBZnRl
ciBwaGFzZS4KKyAgYW5pbWF0aW9uLmZpbmlzaCgpOworICByZXR1cm4gd2F0Y2hlci53YWl0X2Zv
cihbICdhbmltYXRpb25zdGFydCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuaW1h
dGlvbmVuZCcgXSkudGhlbigoKSA9PiB7CisgICAgLy8gU2VlayB0byBpdGVyYXRpb24gMiAobm8g
YW5pbWF0aW9uaXRlcmF0aW9uIGV2ZW50IHNob3VsZCBiZSBkaXNwYXRjaGVkKQorICAgIGFuaW1h
dGlvbi5wYXVzZSgpOworICAgIGFuaW1hdGlvbi5jdXJyZW50VGltZSA9IDMwMCAqIE1TX1BFUl9T
RUM7CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ2FuaW1hdGlvbnN0YXJ0Jyk7CisgIH0p
LnRoZW4oKCkgPT4geworICAgIC8vIFNlZWsgdG8gbWlkIG9mIGl0ZXJhdGlvbiAwIHBoYXNlLgor
ICAgIGFuaW1hdGlvbi5jdXJyZW50VGltZSA9IDIwMCAqIE1TX1BFUl9TRUM7CisgICAgcmV0dXJu
IHdhdGNoZXIud2FpdF9mb3IoJ2FuaW1hdGlvbml0ZXJhdGlvbicpOworICB9KS50aGVuKGV2dCA9
PiB7CisgICAgYXNzZXJ0X2VxdWFscyhldnQuZWxhcHNlZFRpbWUsIDIwMC4wKTsKKyAgICAvLyBT
ZWVrIHRvIGJlZm9yZSBwaGFzZSAobm8gYW5pbWF0aW9uaXRlcmF0aW9uIGV2ZW50IHNob3VsZCBi
ZSBkaXNwYXRjaGVkKQorICAgIGFuaW1hdGlvbi5jdXJyZW50VGltZSA9IDA7CisgICAgcmV0dXJu
IHdhdGNoZXIud2FpdF9mb3IoJ2FuaW1hdGlvbmVuZCcpOworICB9KTsKK30sICdBY3RpdmUgLT4g
QWN0aXZlIChiYWNrd2FyZHMpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyBh
bmltYXRpb24sIHdhdGNoZXIsIGRpdiB9ID0KKyAgICBzZXR1cEFuaW1hdGlvbih0LCAnYW5pbSAx
MDBzIHBhdXNlZCcpOworICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcignYW5pbWF0aW9uc3RhcnQn
KS50aGVuKGV2dCA9PiB7CisgICAgLy8gU2VlayB0byBJZGxlIHBoYXNlLgorICAgIGRpdi5zdHls
ZS5kaXNwbGF5ID0gJ25vbmUnOworICAgIGZsdXNoQ29tcHV0ZWRTdHlsZShkaXYpOworCisgICAg
cmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ2FuaW1hdGlvbmNhbmNlbCcpOworICB9KS50aGVuKCgp
ID0+IHsKKyAgICAvLyBSZXN0YXJ0IHRoaXMgYW5pbWF0aW9uLgorICAgIGRpdi5zdHlsZS5kaXNw
bGF5ID0gJyc7CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ2FuaW1hdGlvbnN0YXJ0Jyk7
CisgIH0pOworfSwgJ0FjdGl2ZSAtPiBJZGxlIC0+IEFjdGl2ZTogYW5pbWF0aW9uc3RhcnQgaXMg
ZmlyZWQgYnkgcmVzdGFydGluZyBhbmltYXRpb24nKTsKKworcHJvbWlzZV90ZXN0KHQgPT4gewor
ICBjb25zdCB7IGFuaW1hdGlvbiwgd2F0Y2hlciB9ID0KKyAgICBzZXR1cEFuaW1hdGlvbih0LCAn
YW5pbSAxMDBzIDEwMHMgMiBwYXVzZWQnKTsKKworICAvLyBNYWtlIEFmdGVyLgorICBhbmltYXRp
b24uZmluaXNoKCk7CisgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKFsgJ2FuaW1hdGlvbnN0YXJ0
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5pbWF0aW9uZW5kJyBdKS50aGVuKGV2
dCA9PiB7CisgICAgYW5pbWF0aW9uLnBsYXliYWNrUmF0ZSA9IC0xOworICAgIHJldHVybiB3YXRj
aGVyLndhaXRfZm9yKCdhbmltYXRpb25zdGFydCcpOworICB9KS50aGVuKGV2dCA9PiB7CisgICAg
YXNzZXJ0X2VxdWFscyhldnQuZWxhcHNlZFRpbWUsIDIwMCk7CisgICAgLy8gU2VlayB0byAxc3Qg
aXRlcmF0aW9uCisgICAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gMjAwICogTVNfUEVSX1NFQyAt
IDE7CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ2FuaW1hdGlvbml0ZXJhdGlvbicpOwor
ICB9KS50aGVuKGV2dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhldnQuZWxhcHNlZFRpbWUsIDEw
MCk7CisgICAgLy8gU2VlayB0byBiZWZvcmUKKyAgICBhbmltYXRpb24uY3VycmVudFRpbWUgPSAx
MDAgKiBNU19QRVJfU0VDIC0gMTsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcignYW5pbWF0
aW9uZW5kJyk7CisgIH0pLnRoZW4oZXZ0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGV2dC5lbGFw
c2VkVGltZSwgMCk7CisgICAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb24ucGxheVN0YXRlLCAncnVu
bmluZycpOyAvLyBkZWxheQorICB9KTsKK30sICdOZWdhdGl2ZSBwbGF5YmFja1JhdGUgc2FuaXR5
IHRlc3QoQmVmb3JlIC0+IEFjdGl2ZSAtPiBCZWZvcmUpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+
IHsKKyAgY29uc3QgeyBhbmltYXRpb24sIHdhdGNoZXIgfSA9IHNldHVwQW5pbWF0aW9uKHQsICdh
bmltIDEwMHMnKTsKKworICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcignYW5pbWF0aW9uc3RhcnQn
KS50aGVuKGV2dCA9PiB7CisgICAgLy8gTWFrZSBpZGxlCisgICAgYW5pbWF0aW9uLmNhbmNlbCgp
OworICAgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKCdhbmltYXRpb25jYW5jZWwnKTsKKyAgfSku
dGhlbihldnQgPT4geworICAgIGFuaW1hdGlvbi5jYW5jZWwoKTsKKyAgICAvLyBUaGVuIHdhaXQg
YSBjb3VwbGUgb2YgZnJhbWVzIGFuZCBjaGVjayB0aGF0IG5vIGV2ZW50IHdhcyBkaXNwYXRjaGVk
LgorICAgIHJldHVybiB3YWl0Rm9yQW5pbWF0aW9uRnJhbWVzKDIpOworICB9KTsKK30sICdDYWxs
IEFuaW1hdGlvbi5jYW5jZWwgYWZ0ZXIgY2FuY2VsbGluZyBhbmltYXRpb24uJyk7CisKKy8vIEZJ
WE1FOiB0aW1lb3V0Citwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHsgYW5pbWF0aW9uLCB3
YXRjaGVyLCBkaXYgfSA9IHNldHVwQW5pbWF0aW9uKHQsICdhbmltIDFzJyk7CisKKyAgcmV0dXJu
IHdhdGNoZXIud2FpdF9mb3IoJ2FuaW1hdGlvbnN0YXJ0JykudGhlbihldnQgPT4geworICAgIC8v
IE1ha2UgaWRsZQorCisgICAgYW5pbWF0aW9uLmNhbmNlbCgpOworICAgIGFuaW1hdGlvbi5wbGF5
KCk7CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoWyAnYW5pbWF0aW9uY2FuY2VsJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmltYXRpb25zdGFydCcgXSk7CisgIH0pOwor
fSwgJ1Jlc3RhcnQgYW5pbWF0aW9uIGFmdGVyIGNhbmNlbGxpbmcgYW5pbWF0aW9uIGltbWVkaWF0
ZWx5LicpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHsgYW5pbWF0aW9uLCB3YXRj
aGVyIH0gPSBzZXR1cEFuaW1hdGlvbih0LCAnYW5pbSAxMDBzJyk7CisKKyAgcmV0dXJuIHdhdGNo
ZXIud2FpdF9mb3IoJ2FuaW1hdGlvbnN0YXJ0JykudGhlbihldnQgPT4geworICAgIC8vIE1ha2Ug
aWRsZQorICAgIGFuaW1hdGlvbi5jYW5jZWwoKTsKKyAgICBhbmltYXRpb24ucGxheSgpOworICAg
IGFuaW1hdGlvbi5jYW5jZWwoKTsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcignYW5pbWF0
aW9uY2FuY2VsJyk7CisgIH0pLnRoZW4oZXZ0ID0+IHsKKyAgICAvLyBUaGVuIHdhaXQgYSBjb3Vw
bGUgb2YgZnJhbWVzIGFuZCBjaGVjayB0aGF0IG5vIGV2ZW50IHdhcyBkaXNwYXRjaGVkLgorICAg
IHJldHVybiB3YWl0Rm9yQW5pbWF0aW9uRnJhbWVzKDIpOworICB9KTsKK30sICdDYWxsIEFuaW1h
dGlvbi5jYW5jZWwgYWZ0ZXIgcmVzdGFydGluZyBhbmltYXRpb24gaW1tZWRpYXRlbHkuJyk7CisK
K3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyBhbmltYXRpb24sIHdhdGNoZXIgfSA9IHNl
dHVwQW5pbWF0aW9uKHQsICdhbmltIDEwMHMnKTsKKworICByZXR1cm4gd2F0Y2hlci53YWl0X2Zv
cignYW5pbWF0aW9uc3RhcnQnKS50aGVuKGV2dCA9PiB7CisgICAgLy8gTWFrZSBpZGxlCisgICAg
YW5pbWF0aW9uLnRpbWVsaW5lID0gbnVsbDsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2Zvcign
YW5pbWF0aW9uY2FuY2VsJyk7CisgIH0pLnRoZW4oZXZ0ID0+IHsKKyAgICBhbmltYXRpb24udGlt
ZWxpbmUgPSBkb2N1bWVudC50aW1lbGluZTsKKyAgICBhbmltYXRpb24ucGxheSgpOworICAgIHJl
dHVybiB3YXRjaGVyLndhaXRfZm9yKCdhbmltYXRpb25zdGFydCcpOworICB9KTsKK30sICdTZXQg
dGltZWxpbmUgYW5kIHBsYXkgdHJhbnNpdGlvbiBhZnRlciBjbGVhcmluZyB0aGUgdGltZWxpbmUu
Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyBhbmltYXRpb24sIHdhdGNoZXIg
fSA9IHNldHVwQW5pbWF0aW9uKHQsICdhbmltIDEwMHMnKTsKKworICByZXR1cm4gd2F0Y2hlci53
YWl0X2ZvcignYW5pbWF0aW9uc3RhcnQnKS50aGVuKGV2dCA9PiB7CisgICAgLy8gTWFrZSBpZGxl
CisgICAgYW5pbWF0aW9uLmNhbmNlbCgpOworICAgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKCdh
bmltYXRpb25jYW5jZWwnKTsKKyAgfSkudGhlbihldnQgPT4geworICAgIGFuaW1hdGlvbi5lZmZl
Y3QgPSBudWxsOworICAgIC8vIFRoZW4gd2FpdCBhIGNvdXBsZSBvZiBmcmFtZXMgYW5kIGNoZWNr
IHRoYXQgbm8gZXZlbnQgd2FzIGRpc3BhdGNoZWQuCisgICAgcmV0dXJuIHdhaXRGb3JBbmltYXRp
b25GcmFtZXMoMik7CisgIH0pOworfSwgJ1NldCBudWxsIHRhcmdldCBlZmZlY3QgYWZ0ZXIgY2Fu
Y2VsbGluZyB0aGUgYW5pbWF0aW9uLicpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0
IHsgYW5pbWF0aW9uLCB3YXRjaGVyIH0gPSBzZXR1cEFuaW1hdGlvbih0LCAnYW5pbSAxMDBzJyk7
CisKKyAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ2FuaW1hdGlvbnN0YXJ0JykudGhlbihldnQg
PT4geworICAgIGFuaW1hdGlvbi5lZmZlY3QgPSBudWxsOworICAgIHJldHVybiB3YXRjaGVyLndh
aXRfZm9yKCdhbmltYXRpb25lbmQnKTsKKyAgfSkudGhlbihldnQgPT4geworICAgIGFuaW1hdGlv
bi5jYW5jZWwoKTsKKyAgICAvLyBUaGVuIHdhaXQgYSBjb3VwbGUgb2YgZnJhbWVzIGFuZCBjaGVj
ayB0aGF0IG5vIGV2ZW50IHdhcyBkaXNwYXRjaGVkLgorICAgIHJldHVybiB3YWl0Rm9yQW5pbWF0
aW9uRnJhbWVzKDIpOworICB9KTsKK30sICdDYW5jZWwgdGhlIGFuaW1hdGlvbiBhZnRlciBjbGVh
cmluZyB0aGUgdGFyZ2V0IGVmZmVjdC4nKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25z
L3Rlc3RfZXZlbnQtb3JkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2V2ZW50LW9yZGVyLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNmQ3MzExNDMwNjM0NGQ2MTQ3OTc4MDVlYWM2ZDA0ODQ3MWIyNzBhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0
X2V2ZW50LW9yZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKyNQSUQgVU5SRVNQT05T
SVZFIC0gY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50IChwaWQgMTM1NjMp
CitGQUlMOiBUaW1lZCBvdXQgd2FpdGluZyBmb3Igbm90aWZ5RG9uZSB0byBiZSBjYWxsZWQKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90
ZXN0X2V2ZW50LW9yZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1h
bmltYXRpb25zL3Rlc3RfZXZlbnQtb3JkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OGU5ZjdjMTc3MzAx
OTViZDg2M2E0OGUwNTdlNjY5MzM0YjNhMTJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2V2ZW50LW9yZGVyLmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhZG9jdHlwZSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVy
IFsgZW5hYmxlQ1NTQW5pbWF0aW9uc0FuZENTU1RyYW5zaXRpb25zQmFja2VkQnlXZWJBbmltYXRp
b25zPXRydWUgXSAtLT4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+VGVzdHMgZm9yIENT
UyBhbmltYXRpb24gZXZlbnQgb3JkZXI8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWFuaW1hdGlvbnMtMi8jZXZlbnQtZGlzcGF0Y2gi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3Rjb21tb24uanMiPjwv
c2NyaXB0PgorPHN0eWxlPgorICBAa2V5ZnJhbWVzIGFuaW0geworICAgIGZyb20geyBtYXJnaW4t
bGVmdDogMHB4OyB9CisgICAgdG8geyBtYXJnaW4tbGVmdDogMTAwcHg7IH0KKyAgfQorPC9zdHls
ZT4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0ndGV4dC9qYXZh
c2NyaXB0Jz4KKyd1c2Ugc3RyaWN0JzsKKworLyoqCisgKiBBc3NlcnRzIHRoYXQgdGhlIHNldCBv
ZiBhY3R1YWwgYW5kIHJlY2VpdmVkIGV2ZW50cyBtYXRjaC4KKyAqIEBwYXJhbSBhY3R1YWxFdmVu
dHMgICBBbiBhcnJheSBvZiB0aGUgcmVjZWl2ZWQgQW5pbWF0aW9uRXZlbnQgb2JqZWN0cy4KKyAq
IEBwYXJhbSBleHBlY3RlZEV2ZW50cyBBIHNlcmllcyBvZiBhcnJheSBvYmplY3RzIHJlcHJlc2Vu
dGluZyB0aGUgZXhwZWN0ZWQKKyAqICAgICAgICBldmVudHMsIGVhY2ggaGF2aW5nIHRoZSBmb3Jt
OgorICogICAgICAgICAgWyBldmVudCB0eXBlLCB0YXJnZXQgZWxlbWVudCwgZWxhcHNlZCB0aW1l
IF0KKyAqLworZnVuY3Rpb24gY2hlY2tFdmVudHMoYWN0dWFsRXZlbnRzLCAuLi5leHBlY3RlZEV2
ZW50cykgeworICBhc3NlcnRfZXF1YWxzKGFjdHVhbEV2ZW50cy5sZW5ndGgsIGV4cGVjdGVkRXZl
bnRzLmxlbmd0aCwKKyAgICAgICAgICAgICAgICBgTnVtYmVyIG9mIGFjdHVhbCBldmVudHMgKCR7
YWN0dWFsRXZlbnRzLmxlbmd0aH06IFwKKyR7YWN0dWFsRXZlbnRzLm1hcChldmVudCA9PiBldmVu
dC50eXBlKS5qb2luKCcsICcpfSkgc2hvdWxkIG1hdGNoIGV4cGVjdGVkIFwKK2V2ZW50cyAoJHtl
eHBlY3RlZEV2ZW50cy5tYXAoZXZlbnQgPT4gZXZlbnQudHlwZSkuam9pbignLCAnKX0pYCk7CisK
KyAgYWN0dWFsRXZlbnRzLmZvckVhY2goKGFjdHVhbEV2ZW50LCBpKSA9PiB7CisgICAgYXNzZXJ0
X2VxdWFscyhleHBlY3RlZEV2ZW50c1tpXVswXSwgYWN0dWFsRXZlbnQudHlwZSwKKyAgICAgICAg
ICAgICAgICAgICdFdmVudCB0eXBlIHNob3VsZCBtYXRjaCcpOworICAgIGFzc2VydF9lcXVhbHMo
ZXhwZWN0ZWRFdmVudHNbaV1bMV0sIGFjdHVhbEV2ZW50LnRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICdFdmVudCB0YXJnZXQgc2hvdWxkIG1hdGNoJyk7CisgICAgYXNzZXJ0X2VxdWFscyhleHBl
Y3RlZEV2ZW50c1tpXVsyXSwgYWN0dWFsRXZlbnQuZWxhcHNlZFRpbWUsCisgICAgICAgICAgICAg
ICAgICAnRXZlbnRcJ3MgZWxhcHNlZCB0aW1lIHNob3VsZCBtYXRjaCcpOworICB9KTsKK30KKwor
ZnVuY3Rpb24gc2V0dXBBbmltYXRpb24odCwgYW5pbWF0aW9uU3R5bGUsIHJlY2VpdmVFdmVudHMp
IHsKKyAgY29uc3QgZGl2ID0gYWRkRGl2KHQsIHsgc3R5bGU6ICJhbmltYXRpb246ICIgKyBhbmlt
YXRpb25TdHlsZSB9KTsKKworICBbJ3N0YXJ0JywgJ2l0ZXJhdGlvbicsICdlbmQnXS5mb3JFYWNo
KG5hbWUgPT4geworICAgIGRpdlsnb25hbmltYXRpb24nICsgbmFtZV0gPSBldnQgPT4geworICAg
IHJlY2VpdmVFdmVudHMucHVzaCh7IHR5cGU6ICAgICAgICBldnQudHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICB0YXJnZXQ6ICAgICAgZXZ0LnRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBlbGFwc2VkVGltZTogZXZ0LmVsYXBzZWRUaW1lIH0pOworICAgIH07CisgIH0pOwor
CisgIGNvbnN0IHdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVyKHQsIGRpdiwgWyAnYW5pbWF0aW9u
c3RhcnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fu
aW1hdGlvbml0ZXJhdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnYW5pbWF0aW9uZW5kJyBdKTsKKworICBjb25zdCBhbmltYXRpb24gPSBkaXYuZ2V0
QW5pbWF0aW9ucygpWzBdOworCisgIHJldHVybiBbYW5pbWF0aW9uLCB3YXRjaGVyLCBkaXZdOwor
fQorCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGxldCBldmVudHMgPSBbXTsKKyAgY29uc3QgW2Fu
aW1hdGlvbjEsIHdhdGNoZXIxLCBkaXYxXSA9CisgICAgc2V0dXBBbmltYXRpb24odCwgJ2FuaW0g
MTAwcyAyIHBhdXNlZCcsIGV2ZW50cyk7CisgIGNvbnN0IFthbmltYXRpb24yLCB3YXRjaGVyMiwg
ZGl2Ml0gPQorICAgIHNldHVwQW5pbWF0aW9uKHQsICdhbmltIDEwMHMgMiBwYXVzZWQnLCBldmVu
dHMpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbIHdhdGNoZXIxLndhaXRfZm9yKCdhbmltYXRp
b25zdGFydCcpLAorICAgICAgICAgICAgICAgICAgICAgICB3YXRjaGVyMi53YWl0X2ZvcignYW5p
bWF0aW9uc3RhcnQnKSBdKS50aGVuKCgpID0+IHsKKyAgICBjaGVja0V2ZW50cyhldmVudHMsIFsn
YW5pbWF0aW9uc3RhcnQnLCBkaXYxLCAwXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsnYW5p
bWF0aW9uc3RhcnQnLCBkaXYyLCAwXSk7CisKKyAgICBldmVudHMubGVuZ3RoID0gMDsgIC8vIENs
ZWFyIHJlY2VpdmVkIGV2ZW50IGFycmF5CisKKyAgICBhbmltYXRpb24xLmN1cnJlbnRUaW1lID0g
MTAwICogTVNfUEVSX1NFQzsKKyAgICBhbmltYXRpb24yLmN1cnJlbnRUaW1lID0gMTAwICogTVNf
UEVSX1NFQzsKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWyB3YXRjaGVyMS53YWl0X2ZvcignYW5p
bWF0aW9uaXRlcmF0aW9uJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgd2F0Y2hlcjIud2Fp
dF9mb3IoJ2FuaW1hdGlvbml0ZXJhdGlvbicpIF0pOworICB9KS50aGVuKCgpID0+IHsKKyAgICBj
aGVja0V2ZW50cyhldmVudHMsIFsnYW5pbWF0aW9uaXRlcmF0aW9uJywgZGl2MSwgMTAwXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFsnYW5pbWF0aW9uaXRlcmF0aW9uJywgZGl2MiwgMTAwXSk7
CisKKyAgICBldmVudHMubGVuZ3RoID0gMDsgIC8vIENsZWFyIHJlY2VpdmVkIGV2ZW50IGFycmF5
CisKKyAgICBhbmltYXRpb24xLmZpbmlzaCgpOworICAgIGFuaW1hdGlvbjIuZmluaXNoKCk7CisK
KyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWyB3YXRjaGVyMS53YWl0X2ZvcignYW5pbWF0aW9uZW5k
JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgd2F0Y2hlcjIud2FpdF9mb3IoJ2FuaW1hdGlv
bmVuZCcpIF0pOworICB9KS50aGVuKCgpID0+IHsKKyAgICBjaGVja0V2ZW50cyhldmVudHMsIFsn
YW5pbWF0aW9uZW5kJywgZGl2MSwgMjAwXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsnYW5p
bWF0aW9uZW5kJywgZGl2MiwgMjAwXSk7CisgIH0pOworfSwgJ1Rlc3Qgc2FtZSBldmVudHMgYXJl
IG9yZGVyZWQgYnkgZWxlbWVudHMuJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgbGV0IGV2
ZW50cyA9IFtdOworICBjb25zdCBbYW5pbWF0aW9uMSwgd2F0Y2hlcjEsIGRpdjFdID0KKyAgICBz
ZXR1cEFuaW1hdGlvbih0LCAnYW5pbSAyMDBzIDQwMHMnLCBldmVudHMpOworICBjb25zdCBbYW5p
bWF0aW9uMiwgd2F0Y2hlcjIsIGRpdjJdID0KKyAgICBzZXR1cEFuaW1hdGlvbih0LCAnYW5pbSAz
MDBzIDInLCBldmVudHMpOworCisgIHJldHVybiB3YXRjaGVyMi53YWl0X2ZvcignYW5pbWF0aW9u
c3RhcnQnKS50aGVuKGV2dCA9PiB7CisgICAgYW5pbWF0aW9uMS5jdXJyZW50VGltZSA9IDQwMCAq
IE1TX1BFUl9TRUM7CisgICAgYW5pbWF0aW9uMi5jdXJyZW50VGltZSA9IDQwMCAqIE1TX1BFUl9T
RUM7CisKKyAgICBldmVudHMubGVuZ3RoID0gMDsgIC8vIENsZWFyIHJlY2VpdmVkIGV2ZW50IGFy
cmF5CisKKyAgICByZXR1cm4gUHJvbWlzZS5hbGwoWyB3YXRjaGVyMS53YWl0X2ZvcignYW5pbWF0
aW9uc3RhcnQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB3YXRjaGVyMi53YWl0X2Zvcign
YW5pbWF0aW9uaXRlcmF0aW9uJykgXSk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGNoZWNrRXZl
bnRzKGV2ZW50cywgWydhbmltYXRpb25pdGVyYXRpb24nLCBkaXYyLCAzMDBdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgWydhbmltYXRpb25zdGFydCcsICAgICBkaXYxLCAwXSk7CisgIH0pOwor
fSwgJ1Rlc3Qgc3RhcnQgYW5kIGl0ZXJhdGlvbiBldmVudHMgYXJlIG9yZGVyZWQgYnkgdGltZS4n
KTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBsZXQgZXZlbnRzID0gW107CisgIGNvbnN0IFth
bmltYXRpb24xLCB3YXRjaGVyMSwgZGl2MV0gPQorICAgIHNldHVwQW5pbWF0aW9uKHQsICdhbmlt
IDE1MHMnLCBldmVudHMpOworICBjb25zdCBbYW5pbWF0aW9uMiwgd2F0Y2hlcjIsIGRpdjJdID0K
KyAgICBzZXR1cEFuaW1hdGlvbih0LCAnYW5pbSAxMDBzIDInLCBldmVudHMpOworCisgIHJldHVy
biBQcm9taXNlLmFsbChbIHdhdGNoZXIxLndhaXRfZm9yKCdhbmltYXRpb25zdGFydCcpLAorICAg
ICAgICAgICAgICAgICAgICAgICB3YXRjaGVyMi53YWl0X2ZvcignYW5pbWF0aW9uc3RhcnQnKSBd
KS50aGVuKCgpID0+IHsKKyAgICBhbmltYXRpb24xLmN1cnJlbnRUaW1lID0gMTUwICogTVNfUEVS
X1NFQzsKKyAgICBhbmltYXRpb24yLmN1cnJlbnRUaW1lID0gMTUwICogTVNfUEVSX1NFQzsKKwor
ICAgIGV2ZW50cy5sZW5ndGggPSAwOyAgLy8gQ2xlYXIgcmVjZWl2ZWQgZXZlbnQgYXJyYXkKKwor
ICAgIHJldHVybiBQcm9taXNlLmFsbChbIHdhdGNoZXIxLndhaXRfZm9yKCdhbmltYXRpb25lbmQn
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB3YXRjaGVyMi53YWl0X2ZvcignYW5pbWF0aW9u
aXRlcmF0aW9uJykgXSk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGNoZWNrRXZlbnRzKGV2ZW50
cywgWydhbmltYXRpb25pdGVyYXRpb24nLCBkaXYyLCAxMDBdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgWydhbmltYXRpb25lbmQnLCAgICAgICBkaXYxLCAxNTBdKTsKKyAgfSk7Cit9LCAnVGVz
dCBpdGVyYXRpb24gYW5kIGVuZCBldmVudHMgYXJlIG9yZGVyZWQgYnkgdGltZS4nKTsKKworcHJv
bWlzZV90ZXN0KHQgPT4geworICBsZXQgZXZlbnRzID0gW107CisgIGNvbnN0IFthbmltYXRpb24x
LCB3YXRjaGVyMSwgZGl2MV0gPQorICAgIHNldHVwQW5pbWF0aW9uKHQsICdhbmltIDEwMHMgMTAw
cycsIGV2ZW50cyk7CisgIGNvbnN0IFthbmltYXRpb24yLCB3YXRjaGVyMiwgZGl2Ml0gPQorICAg
IHNldHVwQW5pbWF0aW9uKHQsICdhbmltIDEwMHMgMicsIGV2ZW50cyk7CisKKyAgYW5pbWF0aW9u
MS5maW5pc2goKTsKKyAgYW5pbWF0aW9uMi5maW5pc2goKTsKKworICByZXR1cm4gUHJvbWlzZS5h
bGwoWyB3YXRjaGVyMS53YWl0X2ZvcihbICdhbmltYXRpb25zdGFydCcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuaW1hdGlvbmVuZCcgXSksCisgICAgICAg
ICAgICAgICAgICAgICAgIHdhdGNoZXIyLndhaXRfZm9yKFsgJ2FuaW1hdGlvbnN0YXJ0JywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5pbWF0aW9uZW5kJyBd
KSBdKS50aGVuKCgpID0+IHsKKyAgICBjaGVja0V2ZW50cyhldmVudHMsIFsnYW5pbWF0aW9uc3Rh
cnQnLCBkaXYyLCAwXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsnYW5pbWF0aW9uc3RhcnQn
LCBkaXYxLCAwXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsnYW5pbWF0aW9uZW5kJywgICBk
aXYxLCAxMDBdLAorICAgICAgICAgICAgICAgICAgICAgICAgWydhbmltYXRpb25lbmQnLCAgIGRp
djIsIDIwMF0pOworICB9KTsKK30sICdUZXN0IHN0YXJ0IGFuZCBlbmQgZXZlbnRzIGFyZSBzb3J0
ZWQgY29ycmVjdGx5IHdoZW4gZmlyZWQgc2ltdWx0YW5lb3VzbHknKTsKKworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L2Nzcy1hbmltYXRpb25zL3Rlc3Rfa2V5ZnJhbWVlZmZlY3QtZ2V0a2V5ZnJhbWVzLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3Rfa2V5ZnJhbWVl
ZmZlY3QtZ2V0a2V5ZnJhbWVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZiNTc0ODIxNGY2N2UwYzZkNTRl
MmU0ZGI2MDdkMzNjZmQ2ZWE2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9rZXlmcmFtZWVmZmVjdC1nZXRrZXlmcmFt
ZXMuaHRtbApAQCAtMCwwICsxLDc1NiBAQAorPCFkb2N0eXBlIGh0bWw+PCEtLSB3ZWJraXQtdGVz
dC1ydW5uZXIgWyBlbmFibGVDU1NBbmltYXRpb25zQW5kQ1NTVHJhbnNpdGlvbnNCYWNrZWRCeVdl
YkFuaW1hdGlvbnM9dHJ1ZSBdIC0tPgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3Rjb21tb24uanMiPjwvc2NyaXB0PgorPHN0eWxl
PgorQGtleWZyYW1lcyBhbmltLWVtcHR5IHsgfQorCitAa2V5ZnJhbWVzIGFuaW0tZW1wdHktZnJh
bWVzIHsKKyAgZnJvbSB7IH0KKyAgdG8gICB7IH0KK30KKworQGtleWZyYW1lcyBhbmltLW9ubHkt
dGltaW5nIHsKKyAgZnJvbSB7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsgfQor
ICB0byAgIHsgfQorfQorCitAa2V5ZnJhbWVzIGFuaW0tb25seS1ub24tYW5pbWF0YWJsZSB7Cisg
IGZyb20geyBhbmltYXRpb24tZHVyYXRpb246IDNzOyB9CisgIHRvICAgeyBhbmltYXRpb24tZHVy
YXRpb246IDVzOyB9Cit9CisKK0BrZXlmcmFtZXMgYW5pbS1zaW1wbGUgeworICBmcm9tIHsgY29s
b3I6IHJnYigwLCAwLCAwKTsgfQorICB0byAgIHsgY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsg
fQorfQorCitAa2V5ZnJhbWVzIGFuaW0tc2ltcGxlLXRocmVlIHsKKyAgZnJvbSB7IGNvbG9yOiBy
Z2IoMCwgMCwgMCk7IH0KKyAgNTAlICB7IGNvbG9yOiByZ2IoMCwgMCwgMjU1KTsgfQorICB0byAg
IHsgY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgfQorfQorCitAa2V5ZnJhbWVzIGFuaW0tc2lt
cGxlLXRpbWluZyB7CisgIGZyb20geyBjb2xvcjogcmdiKDAsIDAsIDApOyBhbmltYXRpb24tdGlt
aW5nLWZ1bmN0aW9uOiBsaW5lYXI7IH0KKyAgNTAlICB7IGNvbG9yOiByZ2IoMCwgMCwgMjU1KTsg
IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0OyB9CisgIHRvICAgeyBjb2xv
cjogcmdiKDI1NSwgMjU1LCAyNTUpOyBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBzdGVwLWVu
ZDsgfQorfQorCitAa2V5ZnJhbWVzIGFuaW0tc2ltcGxlLXRpbWluZy1zb21lIHsKKyAgZnJvbSB7
IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsg
fQorICA1MCUgIHsgY29sb3I6IHJnYigwLCAwLCAyNTUpOyB9CisgIHRvICAgeyBjb2xvcjogcmdi
KDI1NSwgMjU1LCAyNTUpOyB9Cit9CisKK0BrZXlmcmFtZXMgYW5pbS1zaW1wbGUtc2hvcnRoYW5k
IHsKKyAgZnJvbSB7IG1hcmdpbjogOHB4OyB9CisgIHRvICAgeyBtYXJnaW46IDE2cHg7IH0KK30K
KworQGtleWZyYW1lcyBhbmltLW9taXQtdG8geworICBmcm9tIHsgY29sb3I6IHJnYigwLCAwLCAy
NTUpOyB9Cit9CisKK0BrZXlmcmFtZXMgYW5pbS1vbWl0LWZyb20geworICB0byAgIHsgY29sb3I6
IHJnYigwLCAwLCAyNTUpOyB9Cit9CisKK0BrZXlmcmFtZXMgYW5pbS1vbWl0LWZyb20tdG8gewor
ICA1MCUgIHsgY29sb3I6IHJnYigwLCAwLCAyNTUpOyB9Cit9CisKK0BrZXlmcmFtZXMgYW5pbS1w
YXJ0aWFsbHktb21pdC10byB7CisgIGZyb20geyBtYXJnaW4tdG9wOiA1MHB4OworICAgICAgICAg
bWFyZ2luLWJvdHRvbTogMTAwcHg7IH0KKyAgdG8gICB7IG1hcmdpbi10b3A6IDE1MHB4ICFpbXBv
cnRhbnQ7IC8qIGlnbm9yZWQgKi8KKyAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwMHB4OyB9Cit9
CisKK0BrZXlmcmFtZXMgYW5pbS1kaWZmZXJlbnQtcHJvcHMgeworICBmcm9tIHsgY29sb3I6IHJn
YigwLCAwLCAwKTsgbWFyZ2luLXRvcDogOHB4OyB9CisgIDI1JSAgeyBjb2xvcjogcmdiKDAsIDAs
IDI1NSk7IH0KKyAgNzUlICB7IG1hcmdpbi10b3A6IDEycHg7IH0KKyAgdG8gICB7IGNvbG9yOiBy
Z2IoMjU1LCAyNTUsIDI1NSk7IG1hcmdpbi10b3A6IDE2cHggfQorfQorCitAa2V5ZnJhbWVzIGFu
aW0tZGlmZmVyZW50LXByb3BzLWFuZC1lYXNpbmcgeworICBmcm9tIHsgY29sb3I6IHJnYigwLCAw
LCAwKTsgbWFyZ2luLXRvcDogOHB4OyBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7
IH0KKyAgMjUlICB7IGNvbG9yOiByZ2IoMCwgMCwgMjU1KTsgYW5pbWF0aW9uLXRpbWluZy1mdW5j
dGlvbjogc3RlcC1lbmQ7IH0KKyAgNzUlICB7IG1hcmdpbi10b3A6IDEycHg7IGFuaW1hdGlvbi10
aW1pbmctZnVuY3Rpb246IGVhc2UtaW47IH0KKyAgdG8gICB7IGNvbG9yOiByZ2IoMjU1LCAyNTUs
IDI1NSk7IG1hcmdpbi10b3A6IDE2cHggfQorfQorCitAa2V5ZnJhbWVzIGFuaW0tbWVyZ2Utb2Zm
c2V0IHsKKyAgZnJvbSB7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IH0KKyAgdG8gICB7IGNvbG9yOiBy
Z2IoMjU1LCAyNTUsIDI1NSk7IH0KKyAgZnJvbSB7IG1hcmdpbi10b3A6IDhweDsgfQorICB0byAg
IHsgbWFyZ2luLXRvcDogMTZweDsgfQorfQorCitAa2V5ZnJhbWVzIGFuaW0tbWVyZ2Utb2Zmc2V0
LWFuZC1lYXNpbmcgeworICBmcm9tIHsgY29sb3I6IHJnYigwLCAwLCAwKTsgYW5pbWF0aW9uLXRp
bWluZy1mdW5jdGlvbjogc3RlcC1lbmQ7IH0KKyAgdG8gICB7IGNvbG9yOiByZ2IoMjU1LCAyNTUs
IDI1NSk7IH0KKyAgZnJvbSB7IG1hcmdpbi10b3A6IDhweDsgYW5pbWF0aW9uLXRpbWluZy1mdW5j
dGlvbjogbGluZWFyOyB9CisgIHRvICAgeyBtYXJnaW4tdG9wOiAxNnB4OyB9CisgIGZyb20geyBm
b250LXNpemU6IDE2cHg7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHN0ZXAtZW5kOyB9Cisg
IHRvICAgeyBmb250LXNpemU6IDMycHg7IH0KKyAgZnJvbSB7IHBhZGRpbmctbGVmdDogMnB4OyBh
bmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7IH0KKyAgdG8gICB7IHBhZGRpbmctbGVm
dDogNHB4OyB9Cit9CisKK0BrZXlmcmFtZXMgYW5pbS1uby1tZXJnZS1lcXVpdi1lYXNpbmcgewor
ICBmcm9tIHsgbWFyZ2luLXRvcDogMHB4OyBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBzdGVw
cygxLCBlbmQpOyB9CisgIGZyb20geyBtYXJnaW4tcmlnaHQ6IDBweDsgYW5pbWF0aW9uLXRpbWlu
Zy1mdW5jdGlvbjogc3RlcC1lbmQ7IH0KKyAgZnJvbSB7IG1hcmdpbi1ib3R0b206IDBweDsgYW5p
bWF0aW9uLXRpbWluZy1mdW5jdGlvbjogc3RlcHMoMSk7IH0KKyAgNTAlICB7IG1hcmdpbi10b3A6
IDEwcHg7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHN0ZXAtZW5kOyB9CisgIDUwJSAgeyBt
YXJnaW4tcmlnaHQ6IDEwcHg7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHN0ZXAtZW5kOyB9
CisgIDUwJSAgeyBtYXJnaW4tYm90dG9tOiAxMHB4OyBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9u
OiBzdGVwLWVuZDsgfQorICB0byAgIHsgbWFyZ2luLXRvcDogMjBweDsgbWFyZ2luLXJpZ2h0OiAy
MHB4OyBtYXJnaW4tYm90dG9tOiAyMHB4OyB9Cit9CisKK0BrZXlmcmFtZXMgYW5pbS1vdmVycmlk
aW5nIHsKKyAgZnJvbSAgICAgICAgICB7IHBhZGRpbmctdG9wOiA1MHB4IH0KKyAgNTAlLCBmcm9t
ICAgICB7IHBhZGRpbmctdG9wOiAzMHB4IH0gLyogd2luczogMCUgKi8KKyAgNzUlLCA4NSUsIDUw
JSB7IHBhZGRpbmctdG9wOiAyMHB4IH0gLyogd2luczogNzUlLCA1MCUgKi8KKyAgMTAwJSwgODUl
ICAgICB7IHBhZGRpbmctdG9wOiA3MHB4IH0gLyogd2luczogMTAwJSAqLworICA4NS4xJSAgICAg
ICAgIHsgcGFkZGluZy10b3A6IDYwcHggfSAvKiB3aW5zOiA4NS4xJSAqLworICA4NSUgICAgICAg
ICAgIHsgcGFkZGluZy10b3A6IDMwcHggfSAvKiB3aW5zOiA4NSUgKi8KK30KKworQGtleWZyYW1l
cyBhbmltLWZpbHRlciB7CisgIHRvIHsgZmlsdGVyOiBibHVyKDVweCkgc2VwaWEoNjAlKSBzYXR1
cmF0ZSgzMCUpOyB9Cit9CisKK0BrZXlmcmFtZXMgYW5pbS1maWx0ZXItZHJvcC1zaGFkb3cgewor
ICBmcm9tIHsgZmlsdGVyOiBkcm9wLXNoYWRvdygxMHB4IDEwcHggMTBweCByZ2IoMCwgMjU1LCAw
KSk7IH0KKyAgdG8geyBmaWx0ZXI6IGRyb3Atc2hhZG93KDUwcHggMzBweCAxMHB4IHJnYigyNTUs
IDAsIDApKTsgfQorfQorCitAa2V5ZnJhbWVzIGFuaW0tdGV4dC1zaGFkb3cgeworICB0byB7IHRl
eHQtc2hhZG93OiBub25lOyB9Cit9CisKK0BrZXlmcmFtZXMgYW5pbS1iYWNrZ3JvdW5kLXNpemUg
eworICB0byB7IGJhY2tncm91bmQtc2l6ZTogNTAlLCA2cHgsIGNvbnRhaW4gfQorfQorCis6cm9v
dCB7CisgIC0tdmFyLTEwMHB4OiAxMDBweDsKKyAgLS1lbmQtY29sb3I6IHJnYigyNTUsIDAsIDAp
OworfQorQGtleWZyYW1lcyBhbmltLXZhcmlhYmxlcyB7CisgIHRvIHsgdHJhbnNmb3JtOiB0cmFu
c2xhdGUodmFyKC0tdmFyLTEwMHB4KSwgMCkgfQorfQorQGtleWZyYW1lcyBhbmltLXZhcmlhYmxl
cy1zaG9ydGhhbmQgeworICB0byB7IG1hcmdpbjogdmFyKC0tdmFyLTEwMHB4KSB9Cit9CitAa2V5
ZnJhbWVzIGFuaW0tY3VzdG9tLXByb3BlcnR5LWluLWtleWZyYW1lIHsKKyAgdG8geyAtLWVuZC1j
b2xvcjogcmdiKDAsIDI1NSwgMCk7IGNvbG9yOiB2YXIoLS1lbmQtY29sb3IpIH0KK30KK0BrZXlm
cmFtZXMgYW5pbS1vbmx5LWN1c3RvbS1wcm9wZXJ0eS1pbi1rZXlmcmFtZSB7CisgIGZyb20geyB0
cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDBweCwgMCkgfQorICB0byB7IC0tbm90LXVzZWQ6IDIwMHB4
IH0KK30KKzwvc3R5bGU+Cis8Ym9keT4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworCitmdW5jdGlvbiBnZXRLZXlmcmFtZXMoZSkgeworICByZXR1cm4gZS5n
ZXRBbmltYXRpb25zKClbMF0uZWZmZWN0LmdldEtleWZyYW1lcygpOworfQorCitmdW5jdGlvbiBh
c3NlcnRfZnJhbWVzX2VxdWFsKGEsIGIsIG5hbWUpIHsKKyAgYXNzZXJ0X2VxdWFscyhPYmplY3Qu
a2V5cyhhKS5zb3J0KCkudG9TdHJpbmcoKSwKKyAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhi
KS5zb3J0KCkudG9TdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyBvbiAiICsg
bmFtZSk7CisgIGZvciAodmFyIHAgaW4gYSkgeworICAgIGlmIChwID09PSAnb2Zmc2V0JyB8fCBw
ID09PSAnY29tcHV0ZWRPZmZzZXQnKSB7CisgICAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhW3Bd
LCBiW3BdLCAwLjAwMDAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIGZvciAn
IiArIHAgKyAiJyBvbiAiICsgbmFtZSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGFzc2VydF9lcXVh
bHMoYVtwXSwgYltwXSwgInZhbHVlIGZvciAnIiArIHAgKyAiJyBvbiAiICsgbmFtZSk7CisgICAg
fQorICB9Cit9CisKKy8vIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24gdmFsdWVzIHRvIHRlc3Qg
d2l0aCwgd2hlcmUgdGhlIHZhbHVlCisvLyBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIGl0cyBzZXJp
YWxpemF0aW9uLCBzb3J0ZWQgYnkgdGhlIG9yZGVyCisvLyBnZXRLZXlmcmFtZXMoKSB3aWxsIGdy
b3VwIGZyYW1lcyB3aXRoIHRoZSBzYW1lIGVhc2luZyBmdW5jdGlvbgorLy8gdG9nZXRoZXIgKGJ5
IG5zVGltaW5nRnVuY3Rpb246OkNvbXBhcmUpLgorY29uc3Qga1RpbWluZ0Z1bmN0aW9uVmFsdWVz
ID0gWworICAiZWFzZSIsCisgICJsaW5lYXIiLAorICAiZWFzZS1pbiIsCisgICJlYXNlLW91dCIs
CisgICJlYXNlLWluLW91dCIsCisgICJzdGVwcygxLCBzdGFydCkiLAorICAic3RlcHMoMiwgc3Rh
cnQpIiwKKyAgInN0ZXBzKDEpIiwKKyAgInN0ZXBzKDIpIiwKKyAgImN1YmljLWJlemllcigwLCAw
LCAxLCAxKSIsCisgICJjdWJpYy1iZXppZXIoMCwgMC4yNSwgMC43NSwgMSkiCitdOworCit0ZXN0
KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0KTsKKworICBkaXYuc3R5bGUuYW5p
bWF0aW9uID0gJ2FuaW0tZW1wdHkgMTAwcyc7CisgIGFzc2VydF9lcXVhbHMoZ2V0S2V5ZnJhbWVz
KGRpdikubGVuZ3RoLCAwLAorICAgICAgICAgICAgICAgICJudW1iZXIgb2YgZnJhbWVzIHdpdGgg
ZW1wdHkgQGtleWZyYW1lcyIpOworCisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAnYW5pbS1lbXB0
eS1mcmFtZXMgMTAwcyc7CisgIGFzc2VydF9lcXVhbHMoZ2V0S2V5ZnJhbWVzKGRpdikubGVuZ3Ro
LCAwLAorICAgICAgICAgICAgICAgICJudW1iZXIgb2YgZnJhbWVzIHdoZW4gQGtleWZyYW1lcyBo
YXMgZW1wdHkga2V5ZnJhbWVzIik7CisKKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICdhbmltLW9u
bHktdGltaW5nIDEwMHMnOworICBhc3NlcnRfZXF1YWxzKGdldEtleWZyYW1lcyhkaXYpLmxlbmd0
aCwgMCwKKyAgICAgICAgICAgICAgICAibnVtYmVyIG9mIGZyYW1lcyB3aGVuIEBrZXlmcmFtZXMg
b25seSBoYXMga2V5ZnJhbWVzIHdpdGggIiArCisgICAgICAgICAgICAgICAgImFuaW1hdGlvbi10
aW1pbmctZnVuY3Rpb24iKTsKKworICBkaXYuc3R5bGUuYW5pbWF0aW9uID0gJ2FuaW0tb25seS1u
b24tYW5pbWF0YWJsZSAxMDBzJzsKKyAgYXNzZXJ0X2VxdWFscyhnZXRLZXlmcmFtZXMoZGl2KS5s
ZW5ndGgsIDAsCisgICAgICAgICAgICAgICAgIm51bWJlciBvZiBmcmFtZXMgd2hlbiBAa2V5ZnJh
bWVzIG9ubHkgaGFzIGZyYW1lcyB3aXRoICIgKworICAgICAgICAgICAgICAgICJub24tYW5pbWF0
YWJsZSBwcm9wZXJ0aWVzIik7Cit9LCAnS2V5ZnJhbWVFZmZlY3RSZWFkT25seS5nZXRLZXlmcmFt
ZXMoKSByZXR1cm5zIG5vIGZyYW1lcyBmb3IgdmFyaW91cyBraW5kcycKKyAgICsgJyBvZiBlbXB0
eSBlbmltYXRpb25zJyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2
KHQpOworCisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAnYW5pbS1zaW1wbGUgMTAwcyc7CisgIHZh
ciBmcmFtZXMgPSBnZXRLZXlmcmFtZXMoZGl2KTsKKworICBhc3NlcnRfZXF1YWxzKGZyYW1lcy5s
ZW5ndGgsIDIsICJudW1iZXIgb2YgZnJhbWVzIik7CisKKyAgdmFyIGV4cGVjdGVkID0gWworICAg
IHsgb2Zmc2V0OiAwLCBjb21wdXRlZE9mZnNldDogMCwgZWFzaW5nOiAiZWFzZSIsCisgICAgICBj
b2xvcjogInJnYigwLCAwLCAwKSIsIGNvbXBvc2l0ZTogbnVsbCB9LAorICAgIHsgb2Zmc2V0OiAx
LCBjb21wdXRlZE9mZnNldDogMSwgZWFzaW5nOiAiZWFzZSIsCisgICAgICBjb2xvcjogInJnYigy
NTUsIDI1NSwgMjU1KSIsIGNvbXBvc2l0ZTogbnVsbCB9LAorICBdOworCisgIGZvciAodmFyIGkg
PSAwOyBpIDwgZnJhbWVzLmxlbmd0aDsgaSsrKSB7CisgICAgYXNzZXJ0X2ZyYW1lc19lcXVhbChm
cmFtZXNbaV0sIGV4cGVjdGVkW2ldLCAiQ29tcHV0ZWRLZXlmcmFtZSAjIiArIGkpOworICB9Cit9
LCAnS2V5ZnJhbWVFZmZlY3RSZWFkT25seS5nZXRLZXlmcmFtZXMoKSByZXR1cm5zIGV4cGVjdGVk
IGZyYW1lcyBmb3IgYSBzaW1wbGUnCisgICArICcgYW5pbWF0aW9uJyk7CisKK3Rlc3QoZnVuY3Rp
b24odCkgeworICBrVGltaW5nRnVuY3Rpb25WYWx1ZXMuZm9yRWFjaChmdW5jdGlvbihlYXNpbmcp
IHsKKyAgICB2YXIgZGl2ID0gYWRkRGl2KHQpOworCisgICAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9
ICdhbmltLXNpbXBsZS10aHJlZSAxMDBzICcgKyBlYXNpbmc7CisgICAgdmFyIGZyYW1lcyA9IGdl
dEtleWZyYW1lcyhkaXYpOworCisgICAgYXNzZXJ0X2VxdWFscyhmcmFtZXMubGVuZ3RoLCAzLCAi
bnVtYmVyIG9mIGZyYW1lcyIpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZXMubGVu
Z3RoOyBpKyspIHsKKyAgICAgIGFzc2VydF9lcXVhbHMoZnJhbWVzW2ldLmVhc2luZywgZWFzaW5n
LAorICAgICAgICAgICAgICAgICAgICAidmFsdWUgZm9yICdlYXNpbmcnIG9uIENvbXB1dGVkS2V5
ZnJhbWUgIyIgKyBpKTsKKyAgICB9CisgIH0pOworfSwgJ0tleWZyYW1lRWZmZWN0UmVhZE9ubHku
Z2V0S2V5ZnJhbWVzKCkgcmV0dXJucyBmcmFtZXMgd2l0aCBleHBlY3RlZCBlYXNpbmcnCisgICAr
ICcgdmFsdWVzLCB3aGVuIHRoZSBlYXNpbmcgY29tZXMgZnJvbSBhbmltYXRpb24tdGltaW5nLWZ1
bmN0aW9uIG9uIHRoZScKKyAgICsgJyBlbGVtZW50Jyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgewor
ICB2YXIgZGl2ID0gYWRkRGl2KHQpOworCisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAnYW5pbS1z
aW1wbGUtdGltaW5nIDEwMHMnOworICB2YXIgZnJhbWVzID0gZ2V0S2V5ZnJhbWVzKGRpdik7CisK
KyAgYXNzZXJ0X2VxdWFscyhmcmFtZXMubGVuZ3RoLCAzLCAibnVtYmVyIG9mIGZyYW1lcyIpOwor
ICBhc3NlcnRfZXF1YWxzKGZyYW1lc1swXS5lYXNpbmcsICJsaW5lYXIiLAorICAgICAgICAgICAg
ICAgICJ2YWx1ZSBvZiAnZWFzaW5nJyBvbiBDb21wdXRlZEtleWZyYW1lICMwIik7CisgIGFzc2Vy
dF9lcXVhbHMoZnJhbWVzWzFdLmVhc2luZywgImVhc2UtaW4tb3V0IiwKKyAgICAgICAgICAgICAg
ICAidmFsdWUgb2YgJ2Vhc2luZycgb24gQ29tcHV0ZWRLZXlmcmFtZSAjMSIpOworICBhc3NlcnRf
ZXF1YWxzKGZyYW1lc1syXS5lYXNpbmcsICJzdGVwcygxKSIsCisgICAgICAgICAgICAgICAgInZh
bHVlIG9mICdlYXNpbmcnIG9uIENvbXB1dGVkS2V5ZnJhbWUgIzIiKTsKK30sICdLZXlmcmFtZUVm
ZmVjdFJlYWRPbmx5LmdldEtleWZyYW1lcygpIHJldHVybnMgZnJhbWVzIHdpdGggZXhwZWN0ZWQg
ZWFzaW5nJworICAgKyAnIHZhbHVlcywgd2hlbiB0aGUgZWFzaW5nIGlzIHNwZWNpZmllZCBvbiBl
YWNoIGtleWZyYW1lJyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2
KHQpOworCisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAnYW5pbS1zaW1wbGUtdGltaW5nLXNvbWUg
MTAwcyBzdGVwLXN0YXJ0JzsKKyAgdmFyIGZyYW1lcyA9IGdldEtleWZyYW1lcyhkaXYpOworCisg
IGFzc2VydF9lcXVhbHMoZnJhbWVzLmxlbmd0aCwgMywgIm51bWJlciBvZiBmcmFtZXMiKTsKKyAg
YXNzZXJ0X2VxdWFscyhmcmFtZXNbMF0uZWFzaW5nLCAibGluZWFyIiwKKyAgICAgICAgICAgICAg
ICAidmFsdWUgb2YgJ2Vhc2luZycgb24gQ29tcHV0ZWRLZXlmcmFtZSAjMCIpOworICBhc3NlcnRf
ZXF1YWxzKGZyYW1lc1sxXS5lYXNpbmcsICJzdGVwcygxLCBzdGFydCkiLAorICAgICAgICAgICAg
ICAgICJ2YWx1ZSBvZiAnZWFzaW5nJyBvbiBDb21wdXRlZEtleWZyYW1lICMxIik7CisgIGFzc2Vy
dF9lcXVhbHMoZnJhbWVzWzJdLmVhc2luZywgInN0ZXBzKDEsIHN0YXJ0KSIsCisgICAgICAgICAg
ICAgICAgInZhbHVlIG9mICdlYXNpbmcnIG9uIENvbXB1dGVkS2V5ZnJhbWUgIzIiKTsKK30sICdL
ZXlmcmFtZUVmZmVjdFJlYWRPbmx5LmdldEtleWZyYW1lcygpIHJldHVybnMgZnJhbWVzIHdpdGgg
ZXhwZWN0ZWQgZWFzaW5nJworICAgKyAnIHZhbHVlcywgd2hlbiB0aGUgZWFzaW5nIGlzIHNwZWNp
ZmllZCBvbiBzb21lIGtleWZyYW1lcycpOworCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRp
diA9IGFkZERpdih0KTsKKworICBkaXYuc3R5bGUuYW5pbWF0aW9uID0gJ2FuaW0tc2ltcGxlLXNo
b3J0aGFuZCAxMDBzJzsKKyAgdmFyIGZyYW1lcyA9IGdldEtleWZyYW1lcyhkaXYpOworCisgIGFz
c2VydF9lcXVhbHMoZnJhbWVzLmxlbmd0aCwgMiwgIm51bWJlciBvZiBmcmFtZXMiKTsKKworICB2
YXIgZXhwZWN0ZWQgPSBbCisgICAgeyBvZmZzZXQ6IDAsIGNvbXB1dGVkT2Zmc2V0OiAwLCBlYXNp
bmc6ICJlYXNlIiwgY29tcG9zaXRlOiBudWxsLAorICAgICAgbWFyZ2luQm90dG9tOiAiOHB4Iiwg
bWFyZ2luTGVmdDogIjhweCIsCisgICAgICBtYXJnaW5SaWdodDogIjhweCIsIG1hcmdpblRvcDog
IjhweCIgfSwKKyAgICB7IG9mZnNldDogMSwgY29tcHV0ZWRPZmZzZXQ6IDEsIGVhc2luZzogImVh
c2UiLCBjb21wb3NpdGU6IG51bGwsCisgICAgICBtYXJnaW5Cb3R0b206ICIxNnB4IiwgbWFyZ2lu
TGVmdDogIjE2cHgiLAorICAgICAgbWFyZ2luUmlnaHQ6ICIxNnB4IiwgbWFyZ2luVG9wOiAiMTZw
eCIgfSwKKyAgXTsKKworICBmb3IgKHZhciBpID0gMDsgaSA8IGZyYW1lcy5sZW5ndGg7IGkrKykg
eworICAgIGFzc2VydF9mcmFtZXNfZXF1YWwoZnJhbWVzW2ldLCBleHBlY3RlZFtpXSwgIkNvbXB1
dGVkS2V5ZnJhbWUgIyIgKyBpKTsKKyAgfQorfSwgJ0tleWZyYW1lRWZmZWN0UmVhZE9ubHkuZ2V0
S2V5ZnJhbWVzKCkgcmV0dXJucyBleHBlY3RlZCBmcmFtZXMgZm9yIGEgc2ltcGxlJworICAgKyAn
IGFuaW1hdGlvbiB0aGF0IHNwZWNpZmllcyBhIHNpbmdsZSBzaG9ydGhhbmQgcHJvcGVydHknKTsK
KwordGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCk7CisKKyAgZGl2LnN0
eWxlLmFuaW1hdGlvbiA9ICdhbmltLW9taXQtdG8gMTAwcyc7CisgIGRpdi5zdHlsZS5jb2xvciA9
ICdyZ2IoMjU1LCAyNTUsIDI1NSknOworICB2YXIgZnJhbWVzID0gZ2V0S2V5ZnJhbWVzKGRpdik7
CisKKyAgYXNzZXJ0X2VxdWFscyhmcmFtZXMubGVuZ3RoLCAyLCAibnVtYmVyIG9mIGZyYW1lcyIp
OworCisgIHZhciBleHBlY3RlZCA9IFsKKyAgICB7IG9mZnNldDogMCwgY29tcHV0ZWRPZmZzZXQ6
IDAsIGVhc2luZzogImVhc2UiLCBjb21wb3NpdGU6IG51bGwsCisgICAgICBjb2xvcjogInJnYigw
LCAwLCAyNTUpIiB9LAorICAgIHsgb2Zmc2V0OiAxLCBjb21wdXRlZE9mZnNldDogMSwgZWFzaW5n
OiAiZWFzZSIsIGNvbXBvc2l0ZTogbnVsbCwKKyAgICAgIGNvbG9yOiAicmdiKDI1NSwgMjU1LCAy
NTUpIiB9LAorICBdOworCisgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhbWVzLmxlbmd0aDsgaSsr
KSB7CisgICAgYXNzZXJ0X2ZyYW1lc19lcXVhbChmcmFtZXNbaV0sIGV4cGVjdGVkW2ldLCAiQ29t
cHV0ZWRLZXlmcmFtZSAjIiArIGkpOworICB9Cit9LCAnS2V5ZnJhbWVFZmZlY3RSZWFkT25seS5n
ZXRLZXlmcmFtZXMoKSByZXR1cm5zIGV4cGVjdGVkIGZyYW1lcyBmb3IgYW4gJyArCisgICAnYW5p
bWF0aW9uIHdpdGggYSAwJSBrZXlmcmFtZSBhbmQgbm8gMTAwJSBrZXlmcmFtZScpOworCit0ZXN0
KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0KTsKKworICBkaXYuc3R5bGUuYW5p
bWF0aW9uID0gJ2FuaW0tb21pdC1mcm9tIDEwMHMnOworICBkaXYuc3R5bGUuY29sb3IgPSAncmdi
KDI1NSwgMjU1LCAyNTUpJzsKKyAgdmFyIGZyYW1lcyA9IGdldEtleWZyYW1lcyhkaXYpOworCisg
IGFzc2VydF9lcXVhbHMoZnJhbWVzLmxlbmd0aCwgMiwgIm51bWJlciBvZiBmcmFtZXMiKTsKKwor
ICB2YXIgZXhwZWN0ZWQgPSBbCisgICAgeyBvZmZzZXQ6IDAsIGNvbXB1dGVkT2Zmc2V0OiAwLCBl
YXNpbmc6ICJlYXNlIiwgY29tcG9zaXRlOiBudWxsLAorICAgICAgY29sb3I6ICJyZ2IoMjU1LCAy
NTUsIDI1NSkiIH0sCisgICAgeyBvZmZzZXQ6IDEsIGNvbXB1dGVkT2Zmc2V0OiAxLCBlYXNpbmc6
ICJlYXNlIiwgY29tcG9zaXRlOiBudWxsLAorICAgICAgY29sb3I6ICJyZ2IoMCwgMCwgMjU1KSIg
fSwKKyAgXTsKKworICBmb3IgKHZhciBpID0gMDsgaSA8IGZyYW1lcy5sZW5ndGg7IGkrKykgewor
ICAgIGFzc2VydF9mcmFtZXNfZXF1YWwoZnJhbWVzW2ldLCBleHBlY3RlZFtpXSwgIkNvbXB1dGVk
S2V5ZnJhbWUgIyIgKyBpKTsKKyAgfQorfSwgJ0tleWZyYW1lRWZmZWN0UmVhZE9ubHkuZ2V0S2V5
ZnJhbWVzKCkgcmV0dXJucyBleHBlY3RlZCBmcmFtZXMgZm9yIGFuICcgKworICAgJ2FuaW1hdGlv
biB3aXRoIGEgMTAwJSBrZXlmcmFtZSBhbmQgbm8gMCUga2V5ZnJhbWUnKTsKKwordGVzdChmdW5j
dGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCk7CisKKyAgZGl2LnN0eWxlLmFuaW1hdGlv
biA9ICdhbmltLW9taXQtZnJvbS10byAxMDBzJzsKKyAgZGl2LnN0eWxlLmNvbG9yID0gJ3JnYigy
NTUsIDI1NSwgMjU1KSc7CisgIHZhciBmcmFtZXMgPSBnZXRLZXlmcmFtZXMoZGl2KTsKKworICBh
c3NlcnRfZXF1YWxzKGZyYW1lcy5sZW5ndGgsIDMsICJudW1iZXIgb2YgZnJhbWVzIik7CisKKyAg
dmFyIGV4cGVjdGVkID0gWworICAgIHsgb2Zmc2V0OiAwLCAgIGNvbXB1dGVkT2Zmc2V0OiAwLCAg
IGVhc2luZzogImVhc2UiLCBjb21wb3NpdGU6IG51bGwsCisgICAgICBjb2xvcjogInJnYigyNTUs
IDI1NSwgMjU1KSIgfSwKKyAgICB7IG9mZnNldDogMC41LCBjb21wdXRlZE9mZnNldDogMC41LCBl
YXNpbmc6ICJlYXNlIiwgY29tcG9zaXRlOiBudWxsLAorICAgICAgY29sb3I6ICJyZ2IoMCwgMCwg
MjU1KSIgfSwKKyAgICB7IG9mZnNldDogMSwgICBjb21wdXRlZE9mZnNldDogMSwgICBlYXNpbmc6
ICJlYXNlIiwgY29tcG9zaXRlOiBudWxsLAorICAgICAgY29sb3I6ICJyZ2IoMjU1LCAyNTUsIDI1
NSkiIH0sCisgIF07CisKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZXMubGVuZ3RoOyBpKysp
IHsKKyAgICBhc3NlcnRfZnJhbWVzX2VxdWFsKGZyYW1lc1tpXSwgZXhwZWN0ZWRbaV0sICJDb21w
dXRlZEtleWZyYW1lICMiICsgaSk7CisgIH0KK30sICdLZXlmcmFtZUVmZmVjdFJlYWRPbmx5Lmdl
dEtleWZyYW1lcygpIHJldHVybnMgZXhwZWN0ZWQgZnJhbWVzIGZvciBhbiAnICsKKyAgICdhbmlt
YXRpb24gd2l0aCBubyAwJSBvciAxMDAlIGtleWZyYW1lIGJ1dCB3aXRoIGEgNTAlIGtleWZyYW1l
Jyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQpOworCisgIGRp
di5zdHlsZS5hbmltYXRpb24gPSAnYW5pbS1wYXJ0aWFsbHktb21pdC10byAxMDBzJzsKKyAgZGl2
LnN0eWxlLm1hcmdpblRvcCA9ICcyNTBweCc7CisgIHZhciBmcmFtZXMgPSBnZXRLZXlmcmFtZXMo
ZGl2KTsKKworICBhc3NlcnRfZXF1YWxzKGZyYW1lcy5sZW5ndGgsIDIsICJudW1iZXIgb2YgZnJh
bWVzIik7CisKKyAgdmFyIGV4cGVjdGVkID0gWworICAgIHsgb2Zmc2V0OiAwLCBjb21wdXRlZE9m
ZnNldDogMCwgZWFzaW5nOiAiZWFzZSIsIGNvbXBvc2l0ZTogbnVsbCwKKyAgICAgIG1hcmdpblRv
cDogJzUwcHgnLCBtYXJnaW5Cb3R0b206ICcxMDBweCcgfSwKKyAgICB7IG9mZnNldDogMSwgY29t
cHV0ZWRPZmZzZXQ6IDEsIGVhc2luZzogImVhc2UiLCBjb21wb3NpdGU6IG51bGwsCisgICAgICBt
YXJnaW5Ub3A6ICcyNTBweCcsIG1hcmdpbkJvdHRvbTogJzIwMHB4JyB9LAorICBdOworCisgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZnJhbWVzLmxlbmd0aDsgaSsrKSB7CisgICAgYXNzZXJ0X2ZyYW1l
c19lcXVhbChmcmFtZXNbaV0sIGV4cGVjdGVkW2ldLCAiQ29tcHV0ZWRLZXlmcmFtZSAjIiArIGkp
OworICB9Cit9LCAnS2V5ZnJhbWVFZmZlY3RSZWFkT25seS5nZXRLZXlmcmFtZXMoKSByZXR1cm5z
IGV4cGVjdGVkIGZyYW1lcyBmb3IgYW4gJyArCisgICAnYW5pbWF0aW9uIHdpdGggYSBwYXJ0aWFs
bHkgY29tcGxldGUgMTAwJSBrZXlmcmFtZSAoYmVjYXVzZSB0aGUgJyArCisgICAnIWltcG9ydGFu
dCBydWxlIGlzIGlnbm9yZWQpJyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0g
YWRkRGl2KHQpOworCisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAnYW5pbS1kaWZmZXJlbnQtcHJv
cHMgMTAwcyc7CisgIHZhciBmcmFtZXMgPSBnZXRLZXlmcmFtZXMoZGl2KTsKKworICBhc3NlcnRf
ZXF1YWxzKGZyYW1lcy5sZW5ndGgsIDQsICJudW1iZXIgb2YgZnJhbWVzIik7CisKKyAgdmFyIGV4
cGVjdGVkID0gWworICAgIHsgb2Zmc2V0OiAwLCBjb21wdXRlZE9mZnNldDogMCwgZWFzaW5nOiAi
ZWFzZSIsIGNvbXBvc2l0ZTogbnVsbCwKKyAgICAgIGNvbG9yOiAicmdiKDAsIDAsIDApIiwgbWFy
Z2luVG9wOiAiOHB4IiB9LAorICAgIHsgb2Zmc2V0OiAwLjI1LCBjb21wdXRlZE9mZnNldDogMC4y
NSwgZWFzaW5nOiAiZWFzZSIsIGNvbXBvc2l0ZTogbnVsbCwKKyAgICAgIGNvbG9yOiAicmdiKDAs
IDAsIDI1NSkiIH0sCisgICAgeyBvZmZzZXQ6IDAuNzUsIGNvbXB1dGVkT2Zmc2V0OiAwLjc1LCBl
YXNpbmc6ICJlYXNlIiwgY29tcG9zaXRlOiBudWxsLAorICAgICAgbWFyZ2luVG9wOiAiMTJweCIg
fSwKKyAgICB7IG9mZnNldDogMSwgY29tcHV0ZWRPZmZzZXQ6IDEsIGVhc2luZzogImVhc2UiLCBj
b21wb3NpdGU6IG51bGwsCisgICAgICBjb2xvcjogInJnYigyNTUsIDI1NSwgMjU1KSIsIG1hcmdp
blRvcDogIjE2cHgiIH0sCisgIF07CisKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZXMubGVu
Z3RoOyBpKyspIHsKKyAgICBhc3NlcnRfZnJhbWVzX2VxdWFsKGZyYW1lc1tpXSwgZXhwZWN0ZWRb
aV0sICJDb21wdXRlZEtleWZyYW1lICMiICsgaSk7CisgIH0KK30sICdLZXlmcmFtZUVmZmVjdFJl
YWRPbmx5LmdldEtleWZyYW1lcygpIHJldHVybnMgZXhwZWN0ZWQgZnJhbWVzIGZvciBhbiAnICsK
KyAgICdhbmltYXRpb24gd2l0aCBkaWZmZXJlbnQgcHJvcGVydGllcyBvbiBkaWZmZXJlbnQga2V5
ZnJhbWVzLCBhbGwgJyArCisgICAnd2l0aCB0aGUgc2FtZSBlYXNpbmcgZnVuY3Rpb24nKTsKKwor
dGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCk7CisKKyAgZGl2LnN0eWxl
LmFuaW1hdGlvbiA9ICdhbmltLWRpZmZlcmVudC1wcm9wcy1hbmQtZWFzaW5nIDEwMHMnOworICB2
YXIgZnJhbWVzID0gZ2V0S2V5ZnJhbWVzKGRpdik7CisKKyAgYXNzZXJ0X2VxdWFscyhmcmFtZXMu
bGVuZ3RoLCA0LCAibnVtYmVyIG9mIGZyYW1lcyIpOworCisgIHZhciBleHBlY3RlZCA9IFsKKyAg
ICB7IG9mZnNldDogMCwgY29tcHV0ZWRPZmZzZXQ6IDAsIGVhc2luZzogImxpbmVhciIsIGNvbXBv
c2l0ZTogbnVsbCwKKyAgICAgIGNvbG9yOiAicmdiKDAsIDAsIDApIiwgbWFyZ2luVG9wOiAiOHB4
IiB9LAorICAgIHsgb2Zmc2V0OiAwLjI1LCBjb21wdXRlZE9mZnNldDogMC4yNSwgZWFzaW5nOiAi
c3RlcHMoMSkiLCBjb21wb3NpdGU6IG51bGwsCisgICAgICBjb2xvcjogInJnYigwLCAwLCAyNTUp
IiB9LAorICAgIHsgb2Zmc2V0OiAwLjc1LCBjb21wdXRlZE9mZnNldDogMC43NSwgZWFzaW5nOiAi
ZWFzZS1pbiIsIGNvbXBvc2l0ZTogbnVsbCwKKyAgICAgIG1hcmdpblRvcDogIjEycHgiIH0sCisg
ICAgeyBvZmZzZXQ6IDEsIGNvbXB1dGVkT2Zmc2V0OiAxLCBlYXNpbmc6ICJlYXNlIiwgY29tcG9z
aXRlOiBudWxsLAorICAgICAgY29sb3I6ICJyZ2IoMjU1LCAyNTUsIDI1NSkiLCBtYXJnaW5Ub3A6
ICIxNnB4IiB9LAorICBdOworCisgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhbWVzLmxlbmd0aDsg
aSsrKSB7CisgICAgYXNzZXJ0X2ZyYW1lc19lcXVhbChmcmFtZXNbaV0sIGV4cGVjdGVkW2ldLCAi
Q29tcHV0ZWRLZXlmcmFtZSAjIiArIGkpOworICB9Cit9LCAnS2V5ZnJhbWVFZmZlY3RSZWFkT25s
eS5nZXRLZXlmcmFtZXMoKSByZXR1cm5zIGV4cGVjdGVkIGZyYW1lcyBmb3IgYW4gJyArCisgICAn
YW5pbWF0aW9uIHdpdGggZGlmZmVyZW50IHByb3BlcnRpZXMgb24gZGlmZmVyZW50IGtleWZyYW1l
cywgd2l0aCAnICsKKyAgICdhIGRpZmZlcmVudCBlYXNpbmcgZnVuY3Rpb24gb24gZWFjaCcpOwor
Cit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0KTsKKworICBkaXYuc3R5
bGUuYW5pbWF0aW9uID0gJ2FuaW0tbWVyZ2Utb2Zmc2V0IDEwMHMnOworICB2YXIgZnJhbWVzID0g
Z2V0S2V5ZnJhbWVzKGRpdik7CisKKyAgYXNzZXJ0X2VxdWFscyhmcmFtZXMubGVuZ3RoLCAyLCAi
bnVtYmVyIG9mIGZyYW1lcyIpOworCisgIHZhciBleHBlY3RlZCA9IFsKKyAgICB7IG9mZnNldDog
MCwgY29tcHV0ZWRPZmZzZXQ6IDAsIGVhc2luZzogImVhc2UiLCBjb21wb3NpdGU6IG51bGwsCisg
ICAgICBjb2xvcjogInJnYigwLCAwLCAwKSIsIG1hcmdpblRvcDogIjhweCIgfSwKKyAgICB7IG9m
ZnNldDogMSwgY29tcHV0ZWRPZmZzZXQ6IDEsIGVhc2luZzogImVhc2UiLCBjb21wb3NpdGU6IG51
bGwsCisgICAgICBjb2xvcjogInJnYigyNTUsIDI1NSwgMjU1KSIsIG1hcmdpblRvcDogIjE2cHgi
IH0sCisgIF07CisKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZXMubGVuZ3RoOyBpKyspIHsK
KyAgICBhc3NlcnRfZnJhbWVzX2VxdWFsKGZyYW1lc1tpXSwgZXhwZWN0ZWRbaV0sICJDb21wdXRl
ZEtleWZyYW1lICMiICsgaSk7CisgIH0KK30sICdLZXlmcmFtZUVmZmVjdFJlYWRPbmx5LmdldEtl
eWZyYW1lcygpIHJldHVybnMgZXhwZWN0ZWQgZnJhbWVzIGZvciBhbiAnICsKKyAgICdhbmltYXRp
b24gd2l0aCBtdWx0aXBsZSBrZXlmcmFtZXMgZm9yIHRoZSBzYW1lIHRpbWUsIGFuZCBhbGwgd2l0
aCAnICsKKyAgICd0aGUgc2FtZSBlYXNpbmcgZnVuY3Rpb24nKTsKKwordGVzdChmdW5jdGlvbih0
KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCk7CisKKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICdh
bmltLW1lcmdlLW9mZnNldC1hbmQtZWFzaW5nIDEwMHMnOworICB2YXIgZnJhbWVzID0gZ2V0S2V5
ZnJhbWVzKGRpdik7CisKKyAgYXNzZXJ0X2VxdWFscyhmcmFtZXMubGVuZ3RoLCAzLCAibnVtYmVy
IG9mIGZyYW1lcyIpOworCisgIHZhciBleHBlY3RlZCA9IFsKKyAgICB7IG9mZnNldDogMCwgY29t
cHV0ZWRPZmZzZXQ6IDAsIGVhc2luZzogInN0ZXBzKDEpIiwgY29tcG9zaXRlOiBudWxsLAorICAg
ICAgY29sb3I6ICJyZ2IoMCwgMCwgMCkiLCBmb250U2l6ZTogIjE2cHgiIH0sCisgICAgeyBvZmZz
ZXQ6IDAsIGNvbXB1dGVkT2Zmc2V0OiAwLCBlYXNpbmc6ICJsaW5lYXIiLCBjb21wb3NpdGU6IG51
bGwsCisgICAgICBtYXJnaW5Ub3A6ICI4cHgiLCBwYWRkaW5nTGVmdDogIjJweCIgfSwKKyAgICB7
IG9mZnNldDogMSwgY29tcHV0ZWRPZmZzZXQ6IDEsIGVhc2luZzogImVhc2UiLCBjb21wb3NpdGU6
IG51bGwsCisgICAgICBjb2xvcjogInJnYigyNTUsIDI1NSwgMjU1KSIsIGZvbnRTaXplOiAiMzJw
eCIsIG1hcmdpblRvcDogIjE2cHgiLAorICAgICAgcGFkZGluZ0xlZnQ6ICI0cHgiIH0sCisgIF07
CisKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZXMubGVuZ3RoOyBpKyspIHsKKyAgICBhc3Nl
cnRfZnJhbWVzX2VxdWFsKGZyYW1lc1tpXSwgZXhwZWN0ZWRbaV0sICJDb21wdXRlZEtleWZyYW1l
ICMiICsgaSk7CisgIH0KK30sICdLZXlmcmFtZUVmZmVjdFJlYWRPbmx5LmdldEtleWZyYW1lcygp
IHJldHVybnMgZXhwZWN0ZWQgZnJhbWVzIGZvciBhbiAnICsKKyAgICdhbmltYXRpb24gd2l0aCBt
dWx0aXBsZSBrZXlmcmFtZXMgZm9yIHRoZSBzYW1lIHRpbWUgYW5kIHdpdGggJyArCisgICAnZGlm
ZmVyZW50IGVhc2luZyBmdW5jdGlvbnMnKTsKKwordGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBk
aXYgPSBhZGREaXYodCk7CisKKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICdhbmltLW5vLW1lcmdl
LWVxdWl2LWVhc2luZyAxMDBzJzsKKyAgdmFyIGZyYW1lcyA9IGdldEtleWZyYW1lcyhkaXYpOwor
CisgIGFzc2VydF9lcXVhbHMoZnJhbWVzLmxlbmd0aCwgMywgIm51bWJlciBvZiBmcmFtZXMiKTsK
KworICB2YXIgZXhwZWN0ZWQgPSBbCisgICAgeyBvZmZzZXQ6IDAsIGNvbXB1dGVkT2Zmc2V0OiAw
LCBlYXNpbmc6ICJzdGVwcygxKSIsIGNvbXBvc2l0ZTogbnVsbCwKKyAgICAgIG1hcmdpblRvcDog
IjBweCIsIG1hcmdpblJpZ2h0OiAiMHB4IiwgbWFyZ2luQm90dG9tOiAiMHB4IiB9LAorICAgIHsg
b2Zmc2V0OiAwLjUsIGNvbXB1dGVkT2Zmc2V0OiAwLjUsIGVhc2luZzogInN0ZXBzKDEpIiwgY29t
cG9zaXRlOiBudWxsLAorICAgICAgbWFyZ2luVG9wOiAiMTBweCIsIG1hcmdpblJpZ2h0OiAiMTBw
eCIsIG1hcmdpbkJvdHRvbTogIjEwcHgiIH0sCisgICAgeyBvZmZzZXQ6IDEsIGNvbXB1dGVkT2Zm
c2V0OiAxLCBlYXNpbmc6ICJlYXNlIiwgY29tcG9zaXRlOiBudWxsLAorICAgICAgbWFyZ2luVG9w
OiAiMjBweCIsIG1hcmdpblJpZ2h0OiAiMjBweCIsIG1hcmdpbkJvdHRvbTogIjIwcHgiIH0sCisg
IF07CisKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZXMubGVuZ3RoOyBpKyspIHsKKyAgICBh
c3NlcnRfZnJhbWVzX2VxdWFsKGZyYW1lc1tpXSwgZXhwZWN0ZWRbaV0sICJDb21wdXRlZEtleWZy
YW1lICMiICsgaSk7CisgIH0KK30sICdLZXlmcmFtZUVmZmVjdFJlYWRPbmx5LmdldEtleWZyYW1l
cygpIHJldHVybnMgZXhwZWN0ZWQgZnJhbWVzIGZvciBhbiAnICsKKyAgICdhbmltYXRpb24gd2l0
aCBtdWx0aXBsZSBrZXlmcmFtZXMgZm9yIHRoZSBzYW1lIHRpbWUgYW5kIHdpdGggJyArCisgICAn
ZGlmZmVyZW50IGJ1dCBlcXVpdmFsZW50IGVhc2luZyBmdW5jdGlvbnMnKTsKKwordGVzdChmdW5j
dGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCk7CisKKyAgZGl2LnN0eWxlLmFuaW1hdGlv
biA9ICdhbmltLW92ZXJyaWRpbmcgMTAwcyc7CisgIHZhciBmcmFtZXMgPSBnZXRLZXlmcmFtZXMo
ZGl2KTsKKworICBhc3NlcnRfZXF1YWxzKGZyYW1lcy5sZW5ndGgsIDYsICJudW1iZXIgb2YgZnJh
bWVzIik7CisKKyAgdmFyIGV4cGVjdGVkID0gWworICAgIHsgb2Zmc2V0OiAwLCBjb21wdXRlZE9m
ZnNldDogMCwgZWFzaW5nOiAiZWFzZSIsIGNvbXBvc2l0ZTogbnVsbCwKKyAgICAgIHBhZGRpbmdU
b3A6ICIzMHB4IiB9LAorICAgIHsgb2Zmc2V0OiAwLjUsIGNvbXB1dGVkT2Zmc2V0OiAwLjUsIGVh
c2luZzogImVhc2UiLCBjb21wb3NpdGU6IG51bGwsCisgICAgICBwYWRkaW5nVG9wOiAiMjBweCIg
fSwKKyAgICB7IG9mZnNldDogMC43NSwgY29tcHV0ZWRPZmZzZXQ6IDAuNzUsIGVhc2luZzogImVh
c2UiLCBjb21wb3NpdGU6IG51bGwsCisgICAgICBwYWRkaW5nVG9wOiAiMjBweCIgfSwKKyAgICB7
IG9mZnNldDogMC44NSwgY29tcHV0ZWRPZmZzZXQ6IDAuODUsIGVhc2luZzogImVhc2UiLCBjb21w
b3NpdGU6IG51bGwsCisgICAgICBwYWRkaW5nVG9wOiAiMzBweCIgfSwKKyAgICB7IG9mZnNldDog
MC44NTEsIGNvbXB1dGVkT2Zmc2V0OiAwLjg1MSwgZWFzaW5nOiAiZWFzZSIsIGNvbXBvc2l0ZTog
bnVsbCwKKyAgICAgIHBhZGRpbmdUb3A6ICI2MHB4IiB9LAorICAgIHsgb2Zmc2V0OiAxLCBjb21w
dXRlZE9mZnNldDogMSwgZWFzaW5nOiAiZWFzZSIsIGNvbXBvc2l0ZTogbnVsbCwKKyAgICAgIHBh
ZGRpbmdUb3A6ICI3MHB4IiB9LAorICBdOworCisgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhbWVz
Lmxlbmd0aDsgaSsrKSB7CisgICAgYXNzZXJ0X2ZyYW1lc19lcXVhbChmcmFtZXNbaV0sIGV4cGVj
dGVkW2ldLCAiQ29tcHV0ZWRLZXlmcmFtZSAjIiArIGkpOworICB9Cit9LCAnS2V5ZnJhbWVFZmZl
Y3RSZWFkT25seS5nZXRLZXlmcmFtZXMoKSByZXR1cm5zIGV4cGVjdGVkIGZyYW1lcyBmb3IgJyAr
CisgICAnb3ZlcmxhcHBpbmcga2V5ZnJhbWVzJyk7CisKKy8vIEdlY2tvLXNwZWNpZmljIHRlc3Qg
Y2FzZTogV2UgYXJlIHNwZWNpZmljYWxseSBjb25jZXJuZWQgaGVyZSB0aGF0IHRoZQorLy8gY29t
cHV0ZWQgdmFsdWUgZm9yIGZpbHRlciwgIm5vbmUiLCBpcyBjb3JyZWN0bHkgcmVwcmVzZW50ZWQu
CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQpOworCisgIGRpdi5z
dHlsZS5hbmltYXRpb24gPSAnYW5pbS1maWx0ZXIgMTAwcyc7CisgIHZhciBmcmFtZXMgPSBnZXRL
ZXlmcmFtZXMoZGl2KTsKKworICBhc3NlcnRfZXF1YWxzKGZyYW1lcy5sZW5ndGgsIDIsICJudW1i
ZXIgb2YgZnJhbWVzIik7CisKKyAgdmFyIGV4cGVjdGVkID0gWworICAgIHsgb2Zmc2V0OiAwLCBj
b21wdXRlZE9mZnNldDogMCwgZWFzaW5nOiAiZWFzZSIsIGNvbXBvc2l0ZTogbnVsbCwKKyAgICAg
IGZpbHRlcjogIm5vbmUiIH0sCisgICAgeyBvZmZzZXQ6IDEsIGNvbXB1dGVkT2Zmc2V0OiAxLCBl
YXNpbmc6ICJlYXNlIiwgY29tcG9zaXRlOiBudWxsLAorICAgICAgZmlsdGVyOiAiYmx1cig1cHgp
IHNlcGlhKDYwJSkgc2F0dXJhdGUoMzAlKSIgfSwKKyAgXTsKKworICBmb3IgKHZhciBpID0gMDsg
aSA8IGZyYW1lcy5sZW5ndGg7IGkrKykgeworICAgIGFzc2VydF9mcmFtZXNfZXF1YWwoZnJhbWVz
W2ldLCBleHBlY3RlZFtpXSwgIkNvbXB1dGVkS2V5ZnJhbWUgIyIgKyBpKTsKKyAgfQorfSwgJ0tl
eWZyYW1lRWZmZWN0UmVhZE9ubHkuZ2V0S2V5ZnJhbWVzKCkgcmV0dXJucyBleHBlY3RlZCB2YWx1
ZXMgZm9yICcgKworICAgJ2FuaW1hdGlvbnMgd2l0aCBmaWx0ZXIgcHJvcGVydGllcyBhbmQgbWlz
c2luZyBrZXlmcmFtZXMnKTsKKwordGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGRE
aXYodCk7CisKKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICdhbmltLWZpbHRlci1kcm9wLXNoYWRv
dyAxMDBzJzsKKyAgdmFyIGZyYW1lcyA9IGdldEtleWZyYW1lcyhkaXYpOworCisgIGFzc2VydF9l
cXVhbHMoZnJhbWVzLmxlbmd0aCwgMiwgIm51bWJlciBvZiBmcmFtZXMiKTsKKworICB2YXIgZXhw
ZWN0ZWQgPSBbCisgICAgeyBvZmZzZXQ6IDAsIGNvbXB1dGVkT2Zmc2V0OiAwLCBlYXNpbmc6ICJl
YXNlIiwgY29tcG9zaXRlOiBudWxsLAorICAgICAgZmlsdGVyOiAiZHJvcC1zaGFkb3cocmdiKDAs
IDI1NSwgMCkgMTBweCAxMHB4IDEwcHgpIiB9LAorICAgIHsgb2Zmc2V0OiAxLCBjb21wdXRlZE9m
ZnNldDogMSwgZWFzaW5nOiAiZWFzZSIsIGNvbXBvc2l0ZTogbnVsbCwKKyAgICAgIGZpbHRlcjog
ImRyb3Atc2hhZG93KHJnYigyNTUsIDAsIDApIDUwcHggMzBweCAxMHB4KSIgfSwKKyAgXTsKKwor
ICBmb3IgKHZhciBpID0gMDsgaSA8IGZyYW1lcy5sZW5ndGg7IGkrKykgeworICAgIGFzc2VydF9m
cmFtZXNfZXF1YWwoZnJhbWVzW2ldLCBleHBlY3RlZFtpXSwgIkNvbXB1dGVkS2V5ZnJhbWUgIyIg
KyBpKTsKKyAgfQorfSwgJ0tleWZyYW1lRWZmZWN0UmVhZE9ubHkuZ2V0S2V5ZnJhbWVzKCkgcmV0
dXJucyBleHBlY3RlZCB2YWx1ZXMgZm9yICcgKworICAgJ2FuaW1hdGlvbiB3aXRoIGRyb3Atc2hh
ZG93IG9mIGZpbHRlciBwcm9wZXJ0eScpOworCisvLyBHZWNrby1zcGVjaWZpYyB0ZXN0IGNhc2U6
IFdlIGFyZSBzcGVjaWZpY2FsbHkgY29uY2VybmVkIGhlcmUgdGhhdCB0aGUKKy8vIGNvbXB1dGVk
IHZhbHVlIGZvciB0ZXh0LXNoYWRvdyBhbmQgYSAibm9uZSIgc3BlY2lmaWVkIG9uIGEga2V5ZnJh
bWUKKy8vIGFyZSBjb3JyZWN0bHkgcmVwcmVzZW50ZWQuCisKK3Rlc3QoZnVuY3Rpb24odCkgewor
ICB2YXIgZGl2ID0gYWRkRGl2KHQpOworCisgIGRpdi5zdHlsZS50ZXh0U2hhZG93ID0gJzFweCAx
cHggMnB4IHJnYigwLCAwLCAwKSwgJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgJzAgMCAx
NnB4IHJnYigwLCAwLCAyNTUpLCAnICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMCAwIDMu
MnB4IHJnYigwLCAwLCAyNTUpJzsKKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICdhbmltLXRleHQt
c2hhZG93IDEwMHMnOworICB2YXIgZnJhbWVzID0gZ2V0S2V5ZnJhbWVzKGRpdik7CisKKyAgYXNz
ZXJ0X2VxdWFscyhmcmFtZXMubGVuZ3RoLCAyLCAibnVtYmVyIG9mIGZyYW1lcyIpOworCisgIHZh
ciBleHBlY3RlZCA9IFsKKyAgICB7IG9mZnNldDogMCwgY29tcHV0ZWRPZmZzZXQ6IDAsIGVhc2lu
ZzogImVhc2UiLCBjb21wb3NpdGU6IG51bGwsCisgICAgICB0ZXh0U2hhZG93OiAicmdiKDAsIDAs
IDApIDFweCAxcHggMnB4LCIKKyAgICAgICAgICAgICAgICAgICsgIiByZ2IoMCwgMCwgMjU1KSAw
cHggMHB4IDE2cHgsIgorICAgICAgICAgICAgICAgICAgKyAiIHJnYigwLCAwLCAyNTUpIDBweCAw
cHggMy4ycHgiIH0sCisgICAgeyBvZmZzZXQ6IDEsIGNvbXB1dGVkT2Zmc2V0OiAxLCBlYXNpbmc6
ICJlYXNlIiwgY29tcG9zaXRlOiBudWxsLAorICAgICAgdGV4dFNoYWRvdzogIm5vbmUiIH0sCisg
IF07CisKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZXMubGVuZ3RoOyBpKyspIHsKKyAgICBh
c3NlcnRfZnJhbWVzX2VxdWFsKGZyYW1lc1tpXSwgZXhwZWN0ZWRbaV0sICJDb21wdXRlZEtleWZy
YW1lICMiICsgaSk7CisgIH0KK30sICdLZXlmcmFtZUVmZmVjdFJlYWRPbmx5LmdldEtleWZyYW1l
cygpIHJldHVybnMgZXhwZWN0ZWQgdmFsdWVzIGZvciAnICsKKyAgICdhbmltYXRpb25zIHdpdGgg
dGV4dC1zaGFkb3cgcHJvcGVydGllcyBhbmQgbWlzc2luZyBrZXlmcmFtZXMnKTsKKworLy8gR2Vj
a28tc3BlY2lmaWMgdGVzdCBjYXNlOiBXZSBhcmUgc3BlY2lmaWNhbGx5IGNvbmNlcm5lZCBoZXJl
IHRoYXQgdGhlCisvLyBpbml0aWFsIHZhbHVlIGZvciBiYWNrZ3JvdW5kLXNpemUgYW5kIHRoZSBz
cGVjaWZpZWQgbGlzdCBhcmUgY29ycmVjdGx5CisvLyByZXByZXNlbnRlZC4KKwordGVzdChmdW5j
dGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCk7CisKKyAgZGl2LnN0eWxlLmFuaW1hdGlv
biA9ICdhbmltLWJhY2tncm91bmQtc2l6ZSAxMDBzJzsKKyAgdmFyIGZyYW1lcyA9IGdldEtleWZy
YW1lcyhkaXYpOworCisgIGFzc2VydF9lcXVhbHMoZnJhbWVzLmxlbmd0aCwgMiwgIm51bWJlciBv
ZiBmcmFtZXMiKTsKKworICB2YXIgZXhwZWN0ZWQgPSBbCisgICAgeyBvZmZzZXQ6IDAsIGNvbXB1
dGVkT2Zmc2V0OiAwLCBlYXNpbmc6ICJlYXNlIiwgY29tcG9zaXRlOiBudWxsLAorICAgICAgYmFj
a2dyb3VuZFNpemU6ICJhdXRvIGF1dG8iIH0sCisgICAgeyBvZmZzZXQ6IDEsIGNvbXB1dGVkT2Zm
c2V0OiAxLCBlYXNpbmc6ICJlYXNlIiwgY29tcG9zaXRlOiBudWxsLAorICAgICAgYmFja2dyb3Vu
ZFNpemU6ICI1MCUgYXV0bywgNnB4IGF1dG8sIGNvbnRhaW4iIH0sCisgIF07CisKKyAgZm9yICh2
YXIgaSA9IDA7IGkgPCBmcmFtZXMubGVuZ3RoOyBpKyspIHsKKyAgICBhc3NlcnRfZnJhbWVzX2Vx
dWFsKGZyYW1lc1tpXSwgZXhwZWN0ZWRbaV0sICJDb21wdXRlZEtleWZyYW1lICMiICsgaSk7Cisg
IH0KKworICAvLyBUZXN0IGluaGVyaXRpbmcgYSBiYWNrZ3JvdW5kLXNpemUgdmFsdWUKKworICBl
eHBlY3RlZFswXS5iYWNrZ3JvdW5kU2l6ZSA9IGRpdi5zdHlsZS5iYWNrZ3JvdW5kU2l6ZSA9Cisg
ICAgIjMwcHggYXV0bywgNDAlIGF1dG8sIGF1dG8gYXV0byI7CisgIGZyYW1lcyA9IGdldEtleWZy
YW1lcyhkaXYpOworCisgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhbWVzLmxlbmd0aDsgaSsrKSB7
CisgICAgYXNzZXJ0X2ZyYW1lc19lcXVhbChmcmFtZXNbaV0sIGV4cGVjdGVkW2ldLCAiQ29tcHV0
ZWRLZXlmcmFtZSAjIiArIGkKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBhZnRlciB1cGRh
dGluZyBjdXJyZW50IHN0eWxlIik7CisgIH0KK30sICdLZXlmcmFtZUVmZmVjdFJlYWRPbmx5Lmdl
dEtleWZyYW1lcygpIHJldHVybnMgZXhwZWN0ZWQgdmFsdWVzIGZvciAnICsKKyAgICdhbmltYXRp
b25zIHdpdGggYmFja2dyb3VuZC1zaXplIHByb3BlcnRpZXMgYW5kIG1pc3Npbmcga2V5ZnJhbWVz
Jyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQpOworICBkaXYu
c3R5bGUuYW5pbWF0aW9uID0gJ2FuaW0tdmFyaWFibGVzIDEwMHMnOworCisgIHZhciBmcmFtZXMg
PSBnZXRLZXlmcmFtZXMoZGl2KTsKKworICBhc3NlcnRfZXF1YWxzKGZyYW1lcy5sZW5ndGgsIDIs
ICJudW1iZXIgb2YgZnJhbWVzIik7CisKKyAgdmFyIGV4cGVjdGVkID0gWworICAgIHsgb2Zmc2V0
OiAwLCBjb21wdXRlZE9mZnNldDogMCwgZWFzaW5nOiAiZWFzZSIsIGNvbXBvc2l0ZTogbnVsbCwK
KyAgICAgIHRyYW5zZm9ybTogIm5vbmUiIH0sCisgICAgeyBvZmZzZXQ6IDEsIGNvbXB1dGVkT2Zm
c2V0OiAxLCBlYXNpbmc6ICJlYXNlIiwgY29tcG9zaXRlOiBudWxsLAorICAgICAgdHJhbnNmb3Jt
OiAidHJhbnNsYXRlKDEwMHB4LCAwcHgpIiB9LAorICBdOworICBmb3IgKHZhciBpID0gMDsgaSA8
IGZyYW1lcy5sZW5ndGg7IGkrKykgeworICAgIGFzc2VydF9mcmFtZXNfZXF1YWwoZnJhbWVzW2ld
LCBleHBlY3RlZFtpXSwgIkNvbXB1dGVkS2V5ZnJhbWUgIyIgKyBpKTsKKyAgfQorfSwgJ0tleWZy
YW1lRWZmZWN0UmVhZE9ubHkuZ2V0S2V5ZnJhbWVzKCkgcmV0dXJucyBleHBlY3RlZCB2YWx1ZXMg
Zm9yICcgKworICAgJ2FuaW1hdGlvbnMgd2l0aCBDU1MgdmFyaWFibGVzIGFzIGtleWZyYW1lIHZh
bHVlcycpOworCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0KTsKKyAg
ZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICdhbmltLXZhcmlhYmxlcy1zaG9ydGhhbmQgMTAwcyc7CisK
KyAgdmFyIGZyYW1lcyA9IGdldEtleWZyYW1lcyhkaXYpOworCisgIGFzc2VydF9lcXVhbHMoZnJh
bWVzLmxlbmd0aCwgMiwgIm51bWJlciBvZiBmcmFtZXMiKTsKKworICB2YXIgZXhwZWN0ZWQgPSBb
CisgICAgeyBvZmZzZXQ6IDAsIGNvbXB1dGVkT2Zmc2V0OiAwLCBlYXNpbmc6ICJlYXNlIiwgY29t
cG9zaXRlOiBudWxsLAorICAgICAgbWFyZ2luQm90dG9tOiAiMHB4IiwKKyAgICAgIG1hcmdpbkxl
ZnQ6ICIwcHgiLAorICAgICAgbWFyZ2luUmlnaHQ6ICIwcHgiLAorICAgICAgbWFyZ2luVG9wOiAi
MHB4IiB9LAorICAgIHsgb2Zmc2V0OiAxLCBjb21wdXRlZE9mZnNldDogMSwgZWFzaW5nOiAiZWFz
ZSIsIGNvbXBvc2l0ZTogbnVsbCwKKyAgICAgIG1hcmdpbkJvdHRvbTogIjEwMHB4IiwKKyAgICAg
IG1hcmdpbkxlZnQ6ICIxMDBweCIsCisgICAgICBtYXJnaW5SaWdodDogIjEwMHB4IiwKKyAgICAg
IG1hcmdpblRvcDogIjEwMHB4IiB9LAorICBdOworICBmb3IgKHZhciBpID0gMDsgaSA8IGZyYW1l
cy5sZW5ndGg7IGkrKykgeworICAgIGFzc2VydF9mcmFtZXNfZXF1YWwoZnJhbWVzW2ldLCBleHBl
Y3RlZFtpXSwgIkNvbXB1dGVkS2V5ZnJhbWUgIyIgKyBpKTsKKyAgfQorfSwgJ0tleWZyYW1lRWZm
ZWN0UmVhZE9ubHkuZ2V0S2V5ZnJhbWVzKCkgcmV0dXJucyBleHBlY3RlZCB2YWx1ZXMgZm9yICcg
KworICAgJ2FuaW1hdGlvbnMgd2l0aCBDU1MgdmFyaWFibGVzIGFzIGtleWZyYW1lIHZhbHVlcyBp
biBhIHNob3J0aGFuZCBwcm9wZXJ0eScpOworCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRp
diA9IGFkZERpdih0KTsKKyAgZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICdhbmltLWN1c3RvbS1wcm9w
ZXJ0eS1pbi1rZXlmcmFtZSAxMDBzJzsKKworICB2YXIgZnJhbWVzID0gZ2V0S2V5ZnJhbWVzKGRp
dik7CisKKyAgYXNzZXJ0X2VxdWFscyhmcmFtZXMubGVuZ3RoLCAyLCAibnVtYmVyIG9mIGZyYW1l
cyIpOworCisgIHZhciBleHBlY3RlZCA9IFsKKyAgICB7IG9mZnNldDogMCwgY29tcHV0ZWRPZmZz
ZXQ6IDAsIGVhc2luZzogImVhc2UiLCBjb21wb3NpdGU6IG51bGwsCisgICAgICBjb2xvcjogInJn
YigwLCAwLCAwKSIgfSwKKyAgICB7IG9mZnNldDogMSwgY29tcHV0ZWRPZmZzZXQ6IDEsIGVhc2lu
ZzogImVhc2UiLCBjb21wb3NpdGU6IG51bGwsCisgICAgICBjb2xvcjogInJnYigwLCAyNTUsIDAp
IiB9LAorICBdOworICBmb3IgKHZhciBpID0gMDsgaSA8IGZyYW1lcy5sZW5ndGg7IGkrKykgewor
ICAgIGFzc2VydF9mcmFtZXNfZXF1YWwoZnJhbWVzW2ldLCBleHBlY3RlZFtpXSwgIkNvbXB1dGVk
S2V5ZnJhbWUgIyIgKyBpKTsKKyAgfQorfSwgJ0tleWZyYW1lRWZmZWN0UmVhZE9ubHkuZ2V0S2V5
ZnJhbWVzKCkgcmV0dXJucyBleHBlY3RlZCB2YWx1ZXMgZm9yICcgKworICAgJ2FuaW1hdGlvbnMg
d2l0aCBhIENTUyB2YXJpYWJsZSB3aGljaCBpcyBvdmVycmlkZW4gYnkgdGhlIHZhbHVlIGluIGtl
eWZyYW1lJyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQpOwor
ICBkaXYuc3R5bGUuYW5pbWF0aW9uID0gJ2FuaW0tb25seS1jdXN0b20tcHJvcGVydHktaW4ta2V5
ZnJhbWUgMTAwcyc7CisKKyAgdmFyIGZyYW1lcyA9IGdldEtleWZyYW1lcyhkaXYpOworCisgIGFz
c2VydF9lcXVhbHMoZnJhbWVzLmxlbmd0aCwgMiwgIm51bWJlciBvZiBmcmFtZXMiKTsKKworICB2
YXIgZXhwZWN0ZWQgPSBbCisgICAgeyBvZmZzZXQ6IDAsIGNvbXB1dGVkT2Zmc2V0OiAwLCBlYXNp
bmc6ICJlYXNlIiwgY29tcG9zaXRlOiBudWxsLAorICAgICAgdHJhbnNmb3JtOiAidHJhbnNsYXRl
KDEwMHB4LCAwcHgpIiB9LAorICAgIHsgb2Zmc2V0OiAxLCBjb21wdXRlZE9mZnNldDogMSwgZWFz
aW5nOiAiZWFzZSIsIGNvbXBvc2l0ZTogbnVsbCwKKyAgICAgIHRyYW5zZm9ybTogIm5vbmUiIH0s
CisgIF07CisgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhbWVzLmxlbmd0aDsgaSsrKSB7CisgICAg
YXNzZXJ0X2ZyYW1lc19lcXVhbChmcmFtZXNbaV0sIGV4cGVjdGVkW2ldLCAiQ29tcHV0ZWRLZXlm
cmFtZSAjIiArIGkpOworICB9Cit9LCAnS2V5ZnJhbWVFZmZlY3RSZWFkT25seS5nZXRLZXlmcmFt
ZXMoKSByZXR1cm5zIGV4cGVjdGVkIHZhbHVlcyBmb3IgJyArCisgICAnYW5pbWF0aW9ucyB3aXRo
IG9ubHkgY3VzdG9tIHByb3BlcnR5IGluIGEga2V5ZnJhbWUnKTsKKworPC9zY3JpcHQ+Cis8L2Jv
ZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRp
b25zL3Rlc3RfcHNldWRvRWxlbWVudC1nZXQtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfcHNldWRvRWxlbWVu
dC1nZXQtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2IxMDE2MzliYzUyMmJk
MzI5NzQ3NGQ5NmM1MjIzZGJmMDAzZTk4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9wc2V1ZG9FbGVtZW50LWdldC1h
bmltYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBnZXRBbmltYXRp
b25zIHJldHVybnMgQ1NTQW5pbWF0aW9uIG9iamVjdHMgCitGQUlMIGdldEFuaW1hdGlvbnMgcmV0
dXJucyBjc3MgdHJhbnNpdGlvbnMvYW5pbWF0aW9ucywgYW5kIHNjcmlwdC1nZW5lcmF0ZWQgYW5p
bWF0aW9ucyBpbiB0aGUgZXhwZWN0ZWQgb3JkZXIgYXNzZXJ0X2VxdWFsczogR290IGV4cGVjdGVk
IG51bWJlciBvZiBhbmltYXRpb25zL3RybmFzaXRpb25zIHJ1bm5pbmcgb24gOjphZnRlciBwc2V1
ZG8gZWxlbWVudCBleHBlY3RlZCA1IGJ1dCBnb3QgMgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfcHNldWRvRWxlbWVudC1nZXQt
YW5pbWF0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0
aW9ucy90ZXN0X3BzZXVkb0VsZW1lbnQtZ2V0LWFuaW1hdGlvbnMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
MDEzYzU2ZjZmMmUyMjA5YTZmZGMzYWUzMTE4ZTVmMGRmNWQ2ZGYzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X3BzZXVk
b0VsZW1lbnQtZ2V0LWFuaW1hdGlvbnMuaHRtbApAQCAtMCwwICsxLDc0IEBACis8IWRvY3R5cGUg
aHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUNTU0FuaW1hdGlvbnNBbmRDU1NU
cmFuc2l0aW9uc0JhY2tlZEJ5V2ViQW5pbWF0aW9ucz10cnVlIF0gLS0+Cis8bWV0YSBjaGFyc2V0
PXV0Zi04PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGNvbW1vbi5q
cyI+PC9zY3JpcHQ+Cis8c3R5bGU+CitAa2V5ZnJhbWVzIGFuaW0xIHsgfQorQGtleWZyYW1lcyBh
bmltMiB7IH0KKy5iZWZvcmU6OmJlZm9yZSB7CisgIGFuaW1hdGlvbjogYW5pbTEgMTBzOworICBj
b250ZW50OiAnJzsKK30KKy5hZnRlci13aXRoLW1peC1hbmltcy10cmFuczo6YWZ0ZXIgeworICBj
b250ZW50OiAnJzsKKyAgYW5pbWF0aW9uOiBhbmltMSAxMHMsIGFuaW0yIDEwczsKKyAgd2lkdGg6
IDBweDsKKyAgaGVpZ2h0OiAwcHg7CisgIHRyYW5zaXRpb246IGFsbCAxMDBzOworfQorLmFmdGVy
LWNoYW5nZTo6YWZ0ZXIgeworICB3aWR0aDogMTAwcHg7CisgIGhlaWdodDogMTAwcHg7CisgIGNv
bnRlbnQ6ICcnOworfQorPC9zdHlsZT4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxz
Y3JpcHQ+CisndXNlIHN0cmljdCc7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0g
YWRkRGl2KHQsIHsgY2xhc3M6ICdiZWZvcmUnIH0pOworICB2YXIgcHNldWRvVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0QW5pbWF0aW9ucygpWzBdLmVmZmVjdC50YXJnZXQ7CisgIGFzc2VydF9lcXVhbHMo
cHNldWRvVGFyZ2V0LmdldEFuaW1hdGlvbnMoKS5sZW5ndGgsIDEsCisgICAgICAgICAgICAgICAg
J0V4cGVjdGVkIG51bWJlciBvZiBhbmltYXRpb25zIGFyZSByZXR1cm5lZCcpOworICBhc3NlcnRf
ZXF1YWxzKHBzZXVkb1RhcmdldC5nZXRBbmltYXRpb25zKClbMF0uYW5pbWF0aW9uTmFtZSwgJ2Fu
aW0xJywKKyAgICAgICAgICAgICAgICAnQ1NTIGFuaW1hdGlvbiBuYW1lIG1hdGNoZXMnKTsKK30s
ICdnZXRBbmltYXRpb25zIHJldHVybnMgQ1NTQW5pbWF0aW9uIG9iamVjdHMnKTsKKwordGVzdChm
dW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeyBjbGFzczogJ2FmdGVyLXdpdGgt
bWl4LWFuaW1zLXRyYW5zJyB9KTsKKyAgLy8gVHJpZ2dlciB0cmFuc2l0aW9ucworICBmbHVzaENv
bXB1dGVkU3R5bGUoZGl2KTsKKyAgZGl2LmNsYXNzTGlzdC5hZGQoJ2FmdGVyLWNoYW5nZScpOwor
CisgIC8vIENyZWF0ZSBhZGRpdGlvbmFsIGFuaW1hdGlvbiBvbiB0aGUgcHNldWRvLWVsZW1lbnQg
ZnJvbSBzY3JpcHQKKyAgdmFyIHBzZXVkb1RhcmdldCA9IGRvY3VtZW50LmdldEFuaW1hdGlvbnMo
KVswXS5lZmZlY3QudGFyZ2V0OworICB2YXIgZWZmZWN0ID0gbmV3IEtleWZyYW1lRWZmZWN0UmVh
ZE9ubHkocHNldWRvVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeyBiYWNrZ3JvdW5kOiBbImJsdWUiLCAicmVkIl0gfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMgKiBNU19QRVJfU0VDKTsKKyAgdmFyIG5ld0FuaW1h
dGlvbiA9IG5ldyBBbmltYXRpb24oZWZmZWN0LCBkb2N1bWVudC50aW1lbGluZSk7CisgIG5ld0Fu
aW1hdGlvbi5pZCA9ICdzY3JpcHRlZC1hbmltJzsKKyAgbmV3QW5pbWF0aW9uLnBsYXkoKTsKKwor
ICAvLyBDaGVjayBvcmRlciAtIHRoZSBzY3JpcHQtZ2VuZXJhdGVkIGFuaW1hdGlvbiBzaG91bGQg
YXBwZWFyIGxhdGVyCisgIHZhciBhbmltcyA9IHBzZXVkb1RhcmdldC5nZXRBbmltYXRpb25zKCk7
CisgIGFzc2VydF9lcXVhbHMoYW5pbXMubGVuZ3RoLCA1LAorICAgICAgICAgICAgICAgICdHb3Qg
ZXhwZWN0ZWQgbnVtYmVyIG9mIGFuaW1hdGlvbnMvdHJuYXNpdGlvbnMgcnVubmluZyBvbiAnICsK
KyAgICAgICAgICAgICAgICAnOjphZnRlciBwc2V1ZG8gZWxlbWVudCcpOworICBhc3NlcnRfZXF1
YWxzKGFuaW1zWzBdLnRyYW5zaXRpb25Qcm9wZXJ0eSwgJ2hlaWdodCcsCisgICAgICAgICAgICAg
ICAgJzFzdCBhbmltYXRpb24gaXMgdGhlIDFzdCB0cmFuc2l0aW9uIHNvcnRlZCBieSBuYW1lJyk7
CisgIGFzc2VydF9lcXVhbHMoYW5pbXNbMV0udHJhbnNpdGlvblByb3BlcnR5LCAnd2lkdGgnLAor
ICAgICAgICAgICAgICAgICcybmQgYW5pbWF0aW9uIGlzIHRoZSAybmQgdHJhbnNpdGlvbiBzb3J0
ZWQgYnkgbmFtZSAnKTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltc1syXS5hbmltYXRpb25OYW1lLCAn
YW5pbTEnLAorICAgICAgICAgICAgICAgICczcmQgYW5pbWF0aW9uIGlzIHRoZSAxc3QgYW5pbWF0
aW9uIGluIGFuaW1hdGlvbi1uYW1lIGxpc3QnKTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltc1szXS5h
bmltYXRpb25OYW1lLCAnYW5pbTInLAorICAgICAgICAgICAgICAgICc0cmQgYW5pbWF0aW9uIGlz
IHRoZSAybmQgYW5pbWF0aW9uIGluIGFuaW1hdGlvbi1uYW1lIGxpc3QnKTsKKyAgYXNzZXJ0X2Vx
dWFscyhhbmltc1s0XS5pZCwgJ3NjcmlwdGVkLWFuaW0nLAorICAgICAgICAgICAgICAgICdBbmlt
YXRpb24gYWRkZWQgYnkgc2NyaXB0IGFwcGVhcnMgbGFzdCcpOworfSwgJ2dldEFuaW1hdGlvbnMg
cmV0dXJucyBjc3MgdHJhbnNpdGlvbnMvYW5pbWF0aW9ucywgYW5kIHNjcmlwdC1nZW5lcmF0ZWQg
JyArCisgICAnYW5pbWF0aW9ucyBpbiB0aGUgZXhwZWN0ZWQgb3JkZXInKTsKKworPC9zY3JpcHQ+
Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1h
bmltYXRpb25zL3Rlc3Rfc2V0dGluZy1lZmZlY3QuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9zZXR0aW5nLWVmZmVjdC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhmZmYzNmUzOTQyZDkwYjQ1ZDMzNTM0Nzg5NTZkNmM3MGFkZjVkMjEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3Rf
c2V0dGluZy1lZmZlY3QuaHRtbApAQCAtMCwwICsxLDEzMiBAQAorPCFkb2N0eXBlIGh0bWw+PCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVDU1NBbmltYXRpb25zQW5kQ1NTVHJhbnNpdGlv
bnNCYWNrZWRCeVdlYkFuaW1hdGlvbnM9dHJ1ZSBdIC0tPgorPG1ldGEgY2hhcnNldD11dGYtOD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3Rjb21tb24uanMiPjwvc2Ny
aXB0PgorPHN0eWxlPgorICBAa2V5ZnJhbWVzIGFuaW0geworICAgIGZyb20geworICAgICAgbWFy
Z2luLWxlZnQ6IDBweDsKKyAgICB9CisgICAgdG8geworICAgICAgbWFyZ2luLWxlZnQ6IDEwMHB4
OworICAgIH0KKyAgfQorPC9zdHlsZT4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxz
Y3JpcHQ+CisndXNlIHN0cmljdCc7CisKK3Byb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgIHZh
ciBkaXYgPSBhZGREaXYodCk7CisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAnYW5pbSAxMDBzJzsK
KworICB2YXIgd2F0Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIodCwgZGl2LCBbICdhbmltYXRpb25l
bmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmltYXRp
b25jYW5jZWwnIF0pOworICB2YXIgYW5pbWF0aW9uID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsK
KyAgcmV0dXJuIGFuaW1hdGlvbi5yZWFkeS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGFuaW1hdGlv
bi5jdXJyZW50VGltZSA9IDUwICogTVNfUEVSX1NFQzsKKyAgICBhbmltYXRpb24uZWZmZWN0ID0g
bnVsbDsKKyAgICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbi5wbGF5U3RhdGUsICdmaW5pc2hlZCcp
OworICAgIGFzc2VydF9lcXVhbHMoZ2V0Q29tcHV0ZWRTdHlsZShkaXYpLm1hcmdpbkxlZnQsICcw
cHgnKTsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcignYW5pbWF0aW9uZW5kJyk7CisgIH0p
OworfSwgJ1NldHRpbmcgYSBudWxsIGVmZmVjdCBvbiBhIHJ1bm5pbmcgYW5pbWF0aW9uIGZpcmVz
IGFuIGFuaW1hdGlvbmVuZCBldmVudCcpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewor
ICB2YXIgZGl2ID0gYWRkRGl2KHQpOworICBkaXYuc3R5bGUuYW5pbWF0aW9uID0gJ2FuaW0gMTAw
cyc7CisKKyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisgIHJldHVy
biBhbmltYXRpb24ucmVhZHkudGhlbihmdW5jdGlvbigpIHsKKyAgICBhbmltYXRpb24uY3VycmVu
dFRpbWUgPSA1MCAqIE1TX1BFUl9TRUM7CisgICAgYW5pbWF0aW9uLmVmZmVjdCA9IG5ldyBLZXlm
cmFtZUVmZmVjdChkaXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7IGxlZnQ6IFsgJzBweCcgLCAnMTAwcHgnXSB9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTAwICogTVNfUEVSX1NFQyk7CisgICAgYXNzZXJ0X2VxdWFscyhh
bmltYXRpb24ucGxheVN0YXRlLCAncnVubmluZycpOworICAgIGFzc2VydF9lcXVhbHMoZ2V0Q29t
cHV0ZWRTdHlsZShkaXYpLm1hcmdpbkxlZnQsICcwcHgnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGdl
dENvbXB1dGVkU3R5bGUoZGl2KS5sZWZ0LCAnNTBweCcpOworICB9KTsKK30sICdSZXBsYWNpbmcg
YW4gYW5pbWF0aW9uXCdzIGVmZmVjdCB3aXRoIGFuIGVmZmVjdCB0aGF0IHRhcmdldHMgYSBkaWZm
ZXJlbnQgJyArCisgICAncHJvcGVydHkgc2hvdWxkIHVwZGF0ZSBib3RoIHByb3BlcnRpZXMnKTsK
KworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0KTsKKyAg
ZGl2LnN0eWxlLmFuaW1hdGlvbiA9ICdhbmltIDEwMHMnOworCisgIHZhciBhbmltYXRpb24gPSBk
aXYuZ2V0QW5pbWF0aW9ucygpWzBdOworICByZXR1cm4gYW5pbWF0aW9uLnJlYWR5LnRoZW4oZnVu
Y3Rpb24oKSB7CisgICAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gNTAgKiBNU19QRVJfU0VDOwor
ICAgIGFuaW1hdGlvbi5lZmZlY3QgPSBuZXcgS2V5ZnJhbWVFZmZlY3QoZGl2LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsZWZ0OiBbICcwcHgnICwgJzEwMHB4
J10gfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwICogTVNf
UEVSX1NFQyk7CisgICAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb24ucGxheVN0YXRlLCAnZmluaXNo
ZWQnKTsKKyAgfSk7Cit9LCAnUmVwbGFjaW5nIGFuIGFuaW1hdGlvblwncyBlZmZlY3Qgd2l0aCBh
IHNob3J0ZXIgb25lIHRoYXQgc2hvdWxkIGhhdmUgJyArCisgICAnYWxyZWFkeSBmaW5pc2hlZCwg
dGhlIGFuaW1hdGlvbiBmaW5pc2hlcyBpbW1lZGlhdGVseScpOworCitwcm9taXNlX3Rlc3QoZnVu
Y3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQpOworICBkaXYuc3R5bGUuYW5pbWF0aW9u
ID0gJ2FuaW0gMTAwcyc7CisKKyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClb
MF07CisgIGFzc2VydF90cnVlKGFuaW1hdGlvbi5wZW5kaW5nKTsKKworICBhbmltYXRpb24uZWZm
ZWN0ID0gbmV3IEtleWZyYW1lRWZmZWN0KGRpdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7IGxlZnQ6IFsgJzBweCcgLCAnMTAwcHgnXSB9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMCAqIE1TX1BFUl9TRUMpOworICBhc3NlcnRf
dHJ1ZShhbmltYXRpb24ucGVuZGluZyk7CisKKyAgcmV0dXJuIGFuaW1hdGlvbi5yZWFkeS50aGVu
KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9mYWxzZShhbmltYXRpb24ucGVuZGluZyk7CisgIH0p
OworfSwgJ0EgcGxheS1wZW5kaW5nIGFuaW1hdGlvblwncyBlZmZlY3Qgd2hvc2UgZWZmZWN0IGlz
IHJlcGxhY2VkIHN0aWxsIGV4aXRzICcgKworICAgJ3RoZSBwZW5kaW5nIHN0YXRlJyk7CisKK3By
b21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYxID0gYWRkRGl2KHQpOworICB2YXIg
ZGl2MiA9IGFkZERpdih0KTsKKworICB2YXIgd2F0Y2hlcjEgPSBuZXcgRXZlbnRXYXRjaGVyKHQs
IGRpdjEsICdhbmltYXRpb25zdGFydCcpOworICAvLyBXYXRjaCB8ZGl2MnwgYXMgd2VsbCB0byBl
bnN1cmUgaXQgZG9lcyAqbm90KiBnZXQgZXZlbnRzLgorICB2YXIgd2F0Y2hlcjIgPSBuZXcgRXZl
bnRXYXRjaGVyKHQsIGRpdjIsICdhbmltYXRpb25zdGFydCcpOworCisgIGRpdjEuc3R5bGUuYW5p
bWF0aW9uID0gJ2FuaW0gMTAwcyc7CisKKyAgdmFyIGFuaW1hdGlvbiA9IGRpdjEuZ2V0QW5pbWF0
aW9ucygpWzBdOworICBhbmltYXRpb24uZWZmZWN0ID0gbmV3IEtleWZyYW1lRWZmZWN0KGRpdjIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsZWZ0OiBbICcwcHgn
LCAnMTAwcHgnIF0gfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
MDAgKiBNU19QRVJfU0VDKTsKKworICByZXR1cm4gd2F0Y2hlcjEud2FpdF9mb3IoJ2FuaW1hdGlv
bnN0YXJ0JykudGhlbihmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbi5l
ZmZlY3QudGFyZ2V0LCBkaXYyKTsKKworICAgIC8vIFRoZW4gd2FpdCBhIGNvdXBsZSBvZiBmcmFt
ZXMgYW5kIGNoZWNrIHRoYXQgbm8gZXZlbnQgd2FzIGRpc3BhdGNoZWQuCisgICAgcmV0dXJuIHdh
aXRGb3JBbmltYXRpb25GcmFtZXMoMik7CisgIH0pOworfSwgJ1RoZSBldmVudCBpcyBkaXNwYXRj
aGVkIGF0IHRoZSBvcmlnaW5hbCBlbGVtZW50IGV2ZW4gYWZ0ZXIgc2V0dGluZyBhbiAnICsKKyAg
ICdlZmZlY3Qgd2l0aCBhIGRpZmZlcmVudCB0YXJnZXQgZWxlbWVudCcpOworCitwcm9taXNlX3Rl
c3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQpOworICB2YXIgd2F0Y2hlciA9
IG5ldyBFdmVudFdhdGNoZXIodCwgZGl2LCBbICdhbmltYXRpb25zdGFydCcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuaW1hdGlvbmVuZCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuaW1hdGlvbmNhbmNlbCcgXSk7
CisgIGRpdi5zdHlsZS5hbmltYXRpb24gPSAnYW5pbSAxMDBzJzsKKyAgdmFyIGFuaW1hdGlvbiA9
IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisgIGFuaW1hdGlvbi5maW5pc2goKTsKKworICByZXR1
cm4gd2F0Y2hlci53YWl0X2ZvcihbICdhbmltYXRpb25zdGFydCcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2FuaW1hdGlvbmVuZCcgXSkudGhlbihmdW5jdGlvbihldnQpIHsKKyAgICAv
LyBTZXQgYSBsb25nZXIgZWZmZWN0CisgICAgYW5pbWF0aW9uLmVmZmVjdCA9IG5ldyBLZXlmcmFt
ZUVmZmVjdChkaXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
IGxlZnQ6IFsgJzBweCcsICcxMDBweCcgXSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMjAwICogTVNfUEVSX1NFQyk7CisgICAgcmV0dXJuIHdhdGNoZXIud2Fp
dF9mb3IoJ2FuaW1hdGlvbnN0YXJ0Jyk7CisgIH0pOworfSwgJ0FmdGVyIHJlcGxhY2luZyBhIGZp
bmlzaGVkIGFuaW1hdGlvblwncyBlZmZlY3Qgd2l0aCBhIGxvbmdlciBvbmUgJyArCisgICAnaXQg
ZmlyZXMgYW4gYW5pbWF0aW9uc3RhcnQgZXZlbnQnKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy10cmFuc2l0aW9ucy90
ZXN0X2FuaW1hdGlvbi1jYW5jZWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9hbmltYXRpb24tY2FuY2VsLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mMzQ3MDlhNjhlODJhNGQyZGQ5OWE4OTZhMTc3ZTVkYjY5Y2ZkNmNlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNp
dGlvbnMvdGVzdF9hbmltYXRpb24tY2FuY2VsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBA
CisKK0ZBSUwgQW5pbWF0ZWQgc3R5bGUgaXMgY2xlYXJlZCBhZnRlciBjYW5jZWxsaW5nIGEgcnVu
bmluZyBDU1MgdHJhbnNpdGlvbiBhc3NlcnRfZXF1YWxzOiB0cmFuc2Zvcm0gc3R5bGUgaXMgbm8g
bG9uZ2VyIGFuaW1hdGVkIGFmdGVyIGNhbmNlbGxpbmcgZXhwZWN0ZWQgIjEwMDBweCIgYnV0IGdv
dCAiMC4wMDMwMDAyNDAwNzQ0NzA2MzkycHgiCitGQUlMIEFmdGVyIGNhbmNlbGluZyBhIHRyYW5z
aXRpb24sIGl0IGNhbiBzdGlsbCBiZSByZS11c2VkIGFzc2VydF9lcXVhbHM6IG1hcmdpbi1sZWZ0
IHN0eWxlIGlzIGFuaW1hdGVkIGFmdGVyIHJlLXN0YXJ0aW5nIHRyYW5zaXRpb24gZXhwZWN0ZWQg
IjBweCIgYnV0IGdvdCAiMTAwMHB4IgorRkFJTCBBZnRlciBjYW5jZWxsaW5nIGEgZmluaXNoZWQg
dHJhbnNpdGlvbiwgaXQgY2FuIHN0aWxsIGJlIHJlLXVzZWQgYXNzZXJ0X2VxdWFsczogbWFyZ2lu
LWxlZnQgc3R5bGUgaXMgbm90IGFuaW1hdGVkIGFmdGVyIGNhbmNlbGxpbmcgZXhwZWN0ZWQgIjEw
MDBweCIgYnV0IGdvdCAiMC4wNDQwNTc2ODU4ODE4NTMxMDRweCIKK1BBU1MgQWZ0ZXIgY2FuY2Vs
bGluZyBhIHRyYW5zaXRpb24sIHVwZGF0aW5nIHRyYW5zaXRpb24gcHJvcGVydGllcyBkb2Vzbid0
IG1ha2UgaXQgbGl2ZSBhZ2FpbiAKK0ZBSUwgU2V0dGluZyBkaXNwbGF5Om5vbmUgb24gYW4gZWxl
bWVudCBjYW5jZWxzIGl0cyB0cmFuc2l0aW9ucyBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiaWRs
ZSIgYnV0IGdvdCAiZmluaXNoZWQiCitGQUlMIFNldHRpbmcgZGlzcGxheTpub25lIGNhbmNlbHMg
dHJhbnNpdGlvbnMgb24gYSBjaGlsZCBlbGVtZW50IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJp
ZGxlIiBidXQgZ290ICJydW5uaW5nIgorRkFJTCBSZW1vdmluZyBhIHByb3BlcnR5IGZyb20gdHJh
bnNpdGlvbi1wcm9wZXJ0eSBjYW5jZWxzIHRyYW5zaXRpb25zIG9uIHRoYXQgcHJvcGVydHkgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgImlkbGUiIGJ1dCBnb3QgImZpbmlzaGVkIgorRkFJTCBTZXR0
aW5nIHplcm8gY29tYmluZWQgZHVyYXRpb24gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImlkbGUi
IGJ1dCBnb3QgImZpbmlzaGVkIgorRkFJTCBDaGFuZ2luZyBzdHlsZSB0byBhbm90aGVyIGludGVy
cG9sYWJsZSB2YWx1ZSBjYW5jZWxzIHRoZSBvcmlnaW5hbCB0cmFuc2l0aW9uIGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkICJpZGxlIiBidXQgZ290ICJmaW5pc2hlZCIKK0ZBSUwgQW4gYWZ0ZXItY2hh
bmdlIHN0eWxlIHZhbHVlIGNhbid0IGJlIGludGVycG9sYXRlZCBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiaWRsZSIgYnV0IGdvdCAiZmluaXNoZWQiCitGQUlMIFJldmVyc2luZyBhIHJ1bm5pbmcg
dHJhbnNpdGlvbiBjYW5jZWxzIHRoZSBvcmlnaW5hbCB0cmFuc2l0aW9uIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICJpZGxlIiBidXQgZ290ICJmaW5pc2hlZCIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9hbmltYXRpb24tY2Fu
Y2VsLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy10cmFuc2l0aW9ucy90
ZXN0X2FuaW1hdGlvbi1jYW5jZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kODA5YTFhYzM3Njc2MzMxNDI3
NzI3MWUwYTgyNDZmNzc3NWM3OTdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9hbmltYXRpb24tY2FuY2VsLmh0bWwK
QEAgLTAsMCArMSwyMzUgQEAKKzwhZG9jdHlwZSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVy
IFsgZW5hYmxlQ1NTQW5pbWF0aW9uc0FuZENTU1RyYW5zaXRpb25zQmFja2VkQnlXZWJBbmltYXRp
b25zPXRydWUgXSAtLT4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy90ZXN0Y29tbW9uLmpzIj48L3NjcmlwdD4KKzxib2R5PgorPGRpdiBp
ZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7CisKK3Byb21pc2VfdGVzdChm
dW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeyBzdHlsZTogJ21hcmdpbi1sZWZ0
OiAwcHgnIH0pOworICBmbHVzaENvbXB1dGVkU3R5bGUoZGl2KTsKKworICBkaXYuc3R5bGUudHJh
bnNpdGlvbiA9ICdtYXJnaW4tbGVmdCAxMDBzJzsKKyAgZGl2LnN0eWxlLm1hcmdpbkxlZnQgPSAn
MTAwMHB4JzsKKworICB2YXIgdHJhbnNpdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07Cisg
IHJldHVybiB0cmFuc2l0aW9uLnJlYWR5LnRoZW4od2FpdEZvckZyYW1lKS50aGVuKGZ1bmN0aW9u
KCkgeworICAgIGFzc2VydF9ub3RfZXF1YWxzKGdldENvbXB1dGVkU3R5bGUoZGl2KS5tYXJnaW5M
ZWZ0LCAnMTAwMHB4JywKKyAgICAgICAgICAgICAgICAgICAgICAndHJhbnNmb3JtIHN0eWxlIGlz
IGFuaW1hdGVkIGJlZm9yZSBjYW5jZWxsaW5nJyk7CisgICAgdHJhbnNpdGlvbi5jYW5jZWwoKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGdldENvbXB1dGVkU3R5bGUoZGl2KS5tYXJnaW5MZWZ0LCBkaXYu
c3R5bGUubWFyZ2luTGVmdCwKKyAgICAgICAgICAgICAgICAgICd0cmFuc2Zvcm0gc3R5bGUgaXMg
bm8gbG9uZ2VyIGFuaW1hdGVkIGFmdGVyIGNhbmNlbGxpbmcnKTsKKyAgfSk7Cit9LCAnQW5pbWF0
ZWQgc3R5bGUgaXMgY2xlYXJlZCBhZnRlciBjYW5jZWxsaW5nIGEgcnVubmluZyBDU1MgdHJhbnNp
dGlvbicpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2
KHQsIHsgc3R5bGU6ICdtYXJnaW4tbGVmdDogMHB4JyB9KTsKKyAgZmx1c2hDb21wdXRlZFN0eWxl
KGRpdik7CisKKyAgZGl2LnN0eWxlLnRyYW5zaXRpb24gPSAnbWFyZ2luLWxlZnQgMTAwcyc7Cisg
IGRpdi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzEwMDBweCc7CisKKyAgdmFyIHRyYW5zaXRpb24gPSBk
aXYuZ2V0QW5pbWF0aW9ucygpWzBdOworICByZXR1cm4gdHJhbnNpdGlvbi5yZWFkeS50aGVuKGZ1
bmN0aW9uKCkgeworICAgIHRyYW5zaXRpb24uY2FuY2VsKCk7CisgICAgYXNzZXJ0X2VxdWFscyhn
ZXRDb21wdXRlZFN0eWxlKGRpdikubWFyZ2luTGVmdCwgJzEwMDBweCcsCisgICAgICAgICAgICAg
ICAgICAnbWFyZ2luLWxlZnQgc3R5bGUgaXMgbm90IGFuaW1hdGVkIGFmdGVyIGNhbmNlbGxpbmcn
KTsKKyAgICB0cmFuc2l0aW9uLnBsYXkoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGdldENvbXB1dGVk
U3R5bGUoZGl2KS5tYXJnaW5MZWZ0LCAnMHB4JywKKyAgICAgICAgICAgICAgICAgICdtYXJnaW4t
bGVmdCBzdHlsZSBpcyBhbmltYXRlZCBhZnRlciByZS1zdGFydGluZyB0cmFuc2l0aW9uJyk7Cisg
ICAgcmV0dXJuIHRyYW5zaXRpb24ucmVhZHk7CisgIH0pLnRoZW4oZnVuY3Rpb24oKSB7CisgICAg
YXNzZXJ0X2VxdWFscyh0cmFuc2l0aW9uLnBsYXlTdGF0ZSwgJ3J1bm5pbmcnLAorICAgICAgICAg
ICAgICAgICAgJ1RyYW5zaXRpb24gc3VjY2VlZHMgaW4gcnVubmluZyBhZnRlciBiZWluZyByZS1z
dGFydGVkJyk7CisgIH0pOworfSwgJ0FmdGVyIGNhbmNlbGluZyBhIHRyYW5zaXRpb24sIGl0IGNh
biBzdGlsbCBiZSByZS11c2VkJyk7CisKK3Byb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CisgIHZh
ciBkaXYgPSBhZGREaXYodCwgeyBzdHlsZTogJ21hcmdpbi1sZWZ0OiAwcHgnIH0pOworICBmbHVz
aENvbXB1dGVkU3R5bGUoZGl2KTsKKworICBkaXYuc3R5bGUudHJhbnNpdGlvbiA9ICdtYXJnaW4t
bGVmdCAxMDBzJzsKKyAgZGl2LnN0eWxlLm1hcmdpbkxlZnQgPSAnMTAwMHB4JzsKKworICB2YXIg
dHJhbnNpdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisgIHJldHVybiB0cmFuc2l0aW9u
LnJlYWR5LnRoZW4oZnVuY3Rpb24oKSB7CisgICAgdHJhbnNpdGlvbi5maW5pc2goKTsKKyAgICB0
cmFuc2l0aW9uLmNhbmNlbCgpOworICAgIGFzc2VydF9lcXVhbHMoZ2V0Q29tcHV0ZWRTdHlsZShk
aXYpLm1hcmdpbkxlZnQsICcxMDAwcHgnLAorICAgICAgICAgICAgICAgICAgJ21hcmdpbi1sZWZ0
IHN0eWxlIGlzIG5vdCBhbmltYXRlZCBhZnRlciBjYW5jZWxsaW5nJyk7CisgICAgdHJhbnNpdGlv
bi5wbGF5KCk7CisgICAgYXNzZXJ0X2VxdWFscyhnZXRDb21wdXRlZFN0eWxlKGRpdikubWFyZ2lu
TGVmdCwgJzBweCcsCisgICAgICAgICAgICAgICAgICAnbWFyZ2luLWxlZnQgc3R5bGUgaXMgYW5p
bWF0ZWQgYWZ0ZXIgcmUtc3RhcnRpbmcgdHJhbnNpdGlvbicpOworICAgIHJldHVybiB0cmFuc2l0
aW9uLnJlYWR5OworICB9KS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9lcXVhbHModHJh
bnNpdGlvbi5wbGF5U3RhdGUsICdydW5uaW5nJywKKyAgICAgICAgICAgICAgICAgICdUcmFuc2l0
aW9uIHN1Y2NlZWRzIGluIHJ1bm5pbmcgYWZ0ZXIgYmVpbmcgcmUtc3RhcnRlZCcpOworICB9KTsK
K30sICdBZnRlciBjYW5jZWxsaW5nIGEgZmluaXNoZWQgdHJhbnNpdGlvbiwgaXQgY2FuIHN0aWxs
IGJlIHJlLXVzZWQnKTsKKwordGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYo
dCwgeyBzdHlsZTogJ21hcmdpbi1sZWZ0OiAwcHgnIH0pOworICBmbHVzaENvbXB1dGVkU3R5bGUo
ZGl2KTsKKworICBkaXYuc3R5bGUudHJhbnNpdGlvbiA9ICdtYXJnaW4tbGVmdCAxMDBzJzsKKyAg
ZGl2LnN0eWxlLm1hcmdpbkxlZnQgPSAnMTAwMHB4JzsKKworICB2YXIgdHJhbnNpdGlvbiA9IGRp
di5nZXRBbmltYXRpb25zKClbMF07CisgIHRyYW5zaXRpb24uY2FuY2VsKCk7CisgIGFzc2VydF9l
cXVhbHMoZ2V0Q29tcHV0ZWRTdHlsZShkaXYpLm1hcmdpbkxlZnQsICcxMDAwcHgnLAorICAgICAg
ICAgICAgICAgICdtYXJnaW4tbGVmdCBzdHlsZSBpcyBub3QgYW5pbWF0ZWQgYWZ0ZXIgY2FuY2Vs
bGluZycpOworCisgIC8vIFRyaWdnZXIgYSBjaGFuZ2UgdG8gYSB0cmFuc2l0aW9uIHByb3BlcnR5
IGFuZCBjaGVjayB0aGF0IHRoaXMKKyAgLy8gZG9lc24ndCBjYXVzZSB0aGUgYW5pbWF0aW9uIHRv
IGJlY29tZSBsaXZlIGFnYWluCisgIGRpdi5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAnMjAw
cyc7CisgIGZsdXNoQ29tcHV0ZWRTdHlsZShkaXYpOworICBhc3NlcnRfZXF1YWxzKGdldENvbXB1
dGVkU3R5bGUoZGl2KS5tYXJnaW5MZWZ0LCAnMTAwMHB4JywKKyAgICAgICAgICAgICAgICAnbWFy
Z2luLWxlZnQgc3R5bGUgaXMgc3RpbGwgbm90IGFuaW1hdGVkIGFmdGVyIHVwZGF0aW5nJworICAg
ICAgICAgICAgICAgICsgJyB0cmFuc2l0aW9uLWR1cmF0aW9uJyk7CisgIGFzc2VydF9lcXVhbHMo
dHJhbnNpdGlvbi5wbGF5U3RhdGUsICdpZGxlJywKKyAgICAgICAgICAgICAgICAnVHJhbnNpdGlv
biBpcyBzdGlsbCBpZGxlIGFmdGVyIHVwZGF0aW5nIHRyYW5zaXRpb24tZHVyYXRpb24nKTsKK30s
ICdBZnRlciBjYW5jZWxsaW5nIGEgdHJhbnNpdGlvbiwgdXBkYXRpbmcgdHJhbnNpdGlvbiBwcm9w
ZXJ0aWVzIGRvZXNuXCd0IG1ha2UnCisgICArICcgaXQgbGl2ZSBhZ2FpbicpOworCitwcm9taXNl
X3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsgc3R5bGU6ICdtYXJn
aW4tbGVmdDogMHB4JyB9KTsKKyAgZmx1c2hDb21wdXRlZFN0eWxlKGRpdik7CisKKyAgZGl2LnN0
eWxlLnRyYW5zaXRpb24gPSAnbWFyZ2luLWxlZnQgMTAwcyc7CisgIGRpdi5zdHlsZS5tYXJnaW5M
ZWZ0ID0gJzEwMDBweCc7CisKKyAgdmFyIHRyYW5zaXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygp
WzBdOworICByZXR1cm4gdHJhbnNpdGlvbi5yZWFkeS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGFz
c2VydF9lcXVhbHModHJhbnNpdGlvbi5wbGF5U3RhdGUsICdydW5uaW5nJyk7CisgICAgZGl2LnN0
eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisgICAgcmV0dXJuIHdhaXRGb3JGcmFtZSgpOworICB9KS50
aGVuKGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9lcXVhbHModHJhbnNpdGlvbi5wbGF5U3RhdGUs
ICdpZGxlJyk7CisgICAgYXNzZXJ0X2VxdWFscyhnZXRDb21wdXRlZFN0eWxlKGRpdikubWFyZ2lu
TGVmdCwgJzEwMDBweCcpOworICB9KTsKK30sICdTZXR0aW5nIGRpc3BsYXk6bm9uZSBvbiBhbiBl
bGVtZW50IGNhbmNlbHMgaXRzIHRyYW5zaXRpb25zJyk7CisKK3Byb21pc2VfdGVzdChmdW5jdGlv
bih0KSB7CisgIHZhciBwYXJlbnREaXYgPSBhZGREaXYodCk7CisgIHZhciBjaGlsZERpdiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICBwYXJlbnREaXYuYXBwZW5kQ2hpbGQoY2hp
bGREaXYpOworICBjaGlsZERpdi5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ21hcmdpbi1sZWZ0OiAw
cHgnKTsKKworICBmbHVzaENvbXB1dGVkU3R5bGUoY2hpbGREaXYpOworCisgIGNoaWxkRGl2LnN0
eWxlLnRyYW5zaXRpb24gPSAnbWFyZ2luLWxlZnQgMTAwcyc7CisgIGNoaWxkRGl2LnN0eWxlLm1h
cmdpbkxlZnQgPSAnMTAwMHB4JzsKKworICB2YXIgdHJhbnNpdGlvbiA9IGNoaWxkRGl2LmdldEFu
aW1hdGlvbnMoKVswXTsKKyAgcmV0dXJuIHRyYW5zaXRpb24ucmVhZHkudGhlbihmdW5jdGlvbigp
IHsKKyAgICBhc3NlcnRfZXF1YWxzKHRyYW5zaXRpb24ucGxheVN0YXRlLCAncnVubmluZycpOwor
ICAgIHBhcmVudERpdi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworICAgIHJldHVybiB3YWl0Rm9y
RnJhbWUoKTsKKyAgfSkudGhlbihmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfZXF1YWxzKHRyYW5z
aXRpb24ucGxheVN0YXRlLCAnaWRsZScpOworICAgIGFzc2VydF9lcXVhbHMoZ2V0Q29tcHV0ZWRT
dHlsZShjaGlsZERpdikubWFyZ2luTGVmdCwgJzEwMDBweCcpOworICB9KTsKK30sICdTZXR0aW5n
IGRpc3BsYXk6bm9uZSBjYW5jZWxzIHRyYW5zaXRpb25zIG9uIGEgY2hpbGQgZWxlbWVudCcpOwor
Citwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsgc3R5
bGU6ICdtYXJnaW4tbGVmdDogMHB4JyB9KTsKKyAgZmx1c2hDb21wdXRlZFN0eWxlKGRpdik7CisK
KyAgZGl2LnN0eWxlLnRyYW5zaXRpb24gPSAnbWFyZ2luLWxlZnQgMTAwcyc7CisgIGRpdi5zdHls
ZS5tYXJnaW5MZWZ0ID0gJzEwMDBweCc7CisKKyAgdmFyIHRyYW5zaXRpb24gPSBkaXYuZ2V0QW5p
bWF0aW9ucygpWzBdOworICByZXR1cm4gdHJhbnNpdGlvbi5yZWFkeS50aGVuKGZ1bmN0aW9uKCkg
eworICAgIGFzc2VydF9lcXVhbHModHJhbnNpdGlvbi5wbGF5U3RhdGUsICdydW5uaW5nJyk7Cisg
ICAgLy8gU2V0IGFuIHVucmVjb2duaXplZCBwcm9wZXJ0eSB2YWx1ZQorICAgIGRpdi5zdHlsZS50
cmFuc2l0aW9uUHJvcGVydHkgPSAnbm9uZSc7CisgICAgZmx1c2hDb21wdXRlZFN0eWxlKGRpdik7
CisgICAgcmV0dXJuIHdhaXRGb3JGcmFtZSgpOworICB9KS50aGVuKGZ1bmN0aW9uKCkgeworICAg
IGFzc2VydF9lcXVhbHModHJhbnNpdGlvbi5wbGF5U3RhdGUsICdpZGxlJyk7CisgICAgYXNzZXJ0
X2VxdWFscyhnZXRDb21wdXRlZFN0eWxlKGRpdikubWFyZ2luTGVmdCwgJzEwMDBweCcpOworICB9
KTsKK30sICdSZW1vdmluZyBhIHByb3BlcnR5IGZyb20gdHJhbnNpdGlvbi1wcm9wZXJ0eSBjYW5j
ZWxzIHRyYW5zaXRpb25zIG9uIHRoYXQgJysKKyAgICdwcm9wZXJ0eScpOworCitwcm9taXNlX3Rl
c3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsgc3R5bGU6ICdtYXJnaW4t
bGVmdDogMHB4JyB9KTsKKyAgZmx1c2hDb21wdXRlZFN0eWxlKGRpdik7CisKKyAgZGl2LnN0eWxl
LnRyYW5zaXRpb24gPSAnbWFyZ2luLWxlZnQgMTAwcyc7CisgIGRpdi5zdHlsZS5tYXJnaW5MZWZ0
ID0gJzEwMDBweCc7CisKKyAgdmFyIHRyYW5zaXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBd
OworICByZXR1cm4gdHJhbnNpdGlvbi5yZWFkeS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGFzc2Vy
dF9lcXVhbHModHJhbnNpdGlvbi5wbGF5U3RhdGUsICdydW5uaW5nJyk7CisgICAgZGl2LnN0eWxl
LnRyYW5zaXRpb24gPSAnbWFyZ2luLXRvcCAxMHMgLTEwcyc7IC8vIGNvbWJpbmVkIGR1cmF0aW9u
IGlzIHplcm8KKyAgICBmbHVzaENvbXB1dGVkU3R5bGUoZGl2KTsKKyAgICByZXR1cm4gd2FpdEZv
ckZyYW1lKCk7CisgIH0pLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X2VxdWFscyh0cmFu
c2l0aW9uLnBsYXlTdGF0ZSwgJ2lkbGUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGdldENvbXB1dGVk
U3R5bGUoZGl2KS5tYXJnaW5MZWZ0LCAnMTAwMHB4Jyk7CisgIH0pOworfSwgJ1NldHRpbmcgemVy
byBjb21iaW5lZCBkdXJhdGlvbicpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICB2
YXIgZGl2ID0gYWRkRGl2KHQsIHsgc3R5bGU6ICdtYXJnaW4tbGVmdDogMHB4JyB9KTsKKyAgZmx1
c2hDb21wdXRlZFN0eWxlKGRpdik7CisKKyAgZGl2LnN0eWxlLnRyYW5zaXRpb24gPSAnbWFyZ2lu
LWxlZnQgMTAwcyc7CisgIGRpdi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzEwMDBweCc7CisKKyAgdmFy
IHRyYW5zaXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworICByZXR1cm4gdHJhbnNpdGlv
bi5yZWFkeS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9lcXVhbHModHJhbnNpdGlvbi5w
bGF5U3RhdGUsICdydW5uaW5nJyk7CisgICAgZGl2LnN0eWxlLm1hcmdpbkxlZnQgPSAnMjAwMHB4
JzsKKyAgICBmbHVzaENvbXB1dGVkU3R5bGUoZGl2KTsKKyAgICByZXR1cm4gd2FpdEZvckZyYW1l
KCk7CisgIH0pLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X2VxdWFscyh0cmFuc2l0aW9u
LnBsYXlTdGF0ZSwgJ2lkbGUnKTsKKyAgfSk7Cit9LCAnQ2hhbmdpbmcgc3R5bGUgdG8gYW5vdGhl
ciBpbnRlcnBvbGFibGUgdmFsdWUgY2FuY2VscyB0aGUgb3JpZ2luYWwgJyArCisgICAndHJhbnNp
dGlvbicpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2
KHQsIHsgc3R5bGU6ICdtYXJnaW4tbGVmdDogMHB4JyB9KTsKKyAgZmx1c2hDb21wdXRlZFN0eWxl
KGRpdik7CisKKyAgZGl2LnN0eWxlLnRyYW5zaXRpb24gPSAnbWFyZ2luLWxlZnQgMTAwcyc7Cisg
IGRpdi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzEwMDBweCc7CisKKyAgdmFyIHRyYW5zaXRpb24gPSBk
aXYuZ2V0QW5pbWF0aW9ucygpWzBdOworICByZXR1cm4gdHJhbnNpdGlvbi5yZWFkeS50aGVuKGZ1
bmN0aW9uKCkgeworICAgIGFzc2VydF9lcXVhbHModHJhbnNpdGlvbi5wbGF5U3RhdGUsICdydW5u
aW5nJyk7CisgICAgZGl2LnN0eWxlLm1hcmdpbkxlZnQgPSAnYXV0byc7CisgICAgZmx1c2hDb21w
dXRlZFN0eWxlKGRpdik7CisgICAgcmV0dXJuIHdhaXRGb3JGcmFtZSgpOworICB9KS50aGVuKGZ1
bmN0aW9uKCkgeworICAgIGFzc2VydF9lcXVhbHMoZGl2LmdldEFuaW1hdGlvbnMoKS5sZW5ndGgs
IDAsCisgICAgICAgICAgICAgICAgICAnVGhlcmUgc2hvdWxkIGJlIG5vIHRyYW5zaXRpb25zJyk7
CisgICAgYXNzZXJ0X2VxdWFscyh0cmFuc2l0aW9uLnBsYXlTdGF0ZSwgJ2lkbGUnKTsKKyAgfSk7
Cit9LCAnQW4gYWZ0ZXItY2hhbmdlIHN0eWxlIHZhbHVlIGNhblwndCBiZSBpbnRlcnBvbGF0ZWQn
KTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7
IHN0eWxlOiAnbWFyZ2luLWxlZnQ6IDBweCcgfSk7CisgIGZsdXNoQ29tcHV0ZWRTdHlsZShkaXYp
OworCisgIGRpdi5zdHlsZS50cmFuc2l0aW9uID0gJ21hcmdpbi1sZWZ0IDEwMHMnOworICBkaXYu
c3R5bGUubWFyZ2luTGVmdCA9ICcxMDAwcHgnOworCisgIHZhciB0cmFuc2l0aW9uID0gZGl2Lmdl
dEFuaW1hdGlvbnMoKVswXTsKKyAgcmV0dXJuIHRyYW5zaXRpb24ucmVhZHkudGhlbihmdW5jdGlv
bigpIHsKKyAgICBhc3NlcnRfZXF1YWxzKHRyYW5zaXRpb24ucGxheVN0YXRlLCAncnVubmluZycp
OworICAgIGRpdi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzBweCc7CisgICAgZmx1c2hDb21wdXRlZFN0
eWxlKGRpdik7CisgICAgcmV0dXJuIHdhaXRGb3JGcmFtZSgpOworICB9KS50aGVuKGZ1bmN0aW9u
KCkgeworICAgIGFzc2VydF9lcXVhbHModHJhbnNpdGlvbi5wbGF5U3RhdGUsICdpZGxlJyk7Cisg
IH0pOworfSwgJ1JldmVyc2luZyBhIHJ1bm5pbmcgdHJhbnNpdGlvbiBjYW5jZWxzIHRoZSBvcmln
aW5hbCB0cmFuc2l0aW9uJyk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9hbmltYXRpb24t
Y29tcHV0ZWQtdGltaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvY3NzLXRyYW5zaXRpb25zL3Rlc3RfYW5pbWF0aW9uLWNvbXB1dGVkLXRpbWluZy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzAzNGJhODhmMDc0MGYyOWNjNGEyNTVkN2ZhMjJjOTQ1M2FiZDg1
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLXRy
YW5zaXRpb25zL3Rlc3RfYW5pbWF0aW9uLWNvbXB1dGVkLXRpbWluZy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyMyBAQAorCitQQVNTIGRlbGF5IG9mIGEgbmV3IHRyYW5pc2l0aW9uIAorUEFTUyBQ
b3NpdGl2ZSBkZWxheSBvZiBhIG5ldyB0cmFuc2l0aW9uIAorUEFTUyBOZWdhdGl2ZSBkZWxheSBv
ZiBhIG5ldyB0cmFuc2l0aW9uIAorUEFTUyBlbmREZWxheSBvZiBhIG5ldyB0cmFuc2l0aW9uIAor
RkFJTCBmaWxsIG9mIGEgbmV3IHRyYW5zaXRpb24gYXNzZXJ0X2VxdWFsczogRmlsbCBiYWNrd2Fy
ZHMgZXhwZWN0ZWQgImJhY2t3YXJkcyIgYnV0IGdvdCAibm9uZSIKK1BBU1MgaXRlcmF0aW9uU3Rh
cnQgb2YgYSBuZXcgdHJhbnNpdGlvbiAKK1BBU1MgaXRlcmF0aW9ucyBvZiBhIG5ldyB0cmFuc2l0
aW9uIAorUEFTUyBkdXJhdGlvbiBvZiBhIG5ldyB0cmFuc2l0aW9uIAorUEFTUyBkaXJlY3Rpb24g
b2YgYSBuZXcgdHJhbnNpdGlvbiAKK0ZBSUwgZWFzaW5nIG9mIGEgbmV3IHRyYW5zaXRpb24gYXNz
ZXJ0X2VxdWFsczogSW5pdGlhbCB2YWx1ZSBvZiBlYXNpbmcgZXhwZWN0ZWQgImxpbmVhciIgYnV0
IGdvdCAiZWFzZSIKK1BBU1MgZW5kVGltZSBvZiBhIG5ldyB0cmFuc2l0aW9uIAorUEFTUyBhY3Rp
dmVEdXJhdGlvbiBvZiBhIG5ldyB0cmFuc2l0aW9uIAorUEFTUyBsb2NhbFRpbWUgb2YgYSBuZXcg
dHJhbnNpdGlvbiAKK1BBU1MgbG9jYWxUaW1lIGlzIGFsd2F5cyBlcXVhbCB0byBjdXJyZW50VGlt
ZSAKK0ZBSUwgbG9jYWxUaW1lIHJlZmxlY3RzIHBsYXliYWNrUmF0ZSBpbW1lZGlhdGVseSBudWxs
IGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2FuaW0uZWZmZWN0LmdldENvbXB1dGVkVGlt
aW5nJykKK1BBU1MgcHJvZ3Jlc3Mgb2YgYSBuZXcgdHJhbnNpdGlvbiAKK0ZBSUwgcHJvZ3Jlc3Mg
b2YgYSBuZXcgdHJhbnNpdGlvbiB3aXRoIHBvc2l0aXZlIGRlbGF5IGluIGJlZm9yZSBwaGFzZSBh
c3NlcnRfZXF1YWxzOiBJbml0aWFsIHZhbHVlIG9mIHByb2dyZXNzIGV4cGVjdGVkIChudW1iZXIp
IDAgYnV0IGdvdCAob2JqZWN0KSBudWxsCitQQVNTIHByb2dyZXNzIG9mIGEgZmluaXNoZWQgdHJh
bnNpdGlvbiAKK1BBU1MgY3VycmVudEl0ZXJhdGlvbiBvZiBhIG5ldyB0cmFuc2l0aW9uIAorRkFJ
TCBjdXJyZW50SXRlcmF0aW9uIG9mIGEgbmV3IHRyYW5zaXRpb24gd2l0aCBwb3NpdGl2ZSBkZWxh
eSBpbiBiZWZvcmUgcGhhc2UgYXNzZXJ0X2VxdWFsczogSW5pdGlhbCB2YWx1ZSBvZiBjdXJyZW50
SXRlcmF0aW9uIGV4cGVjdGVkIChudW1iZXIpIDAgYnV0IGdvdCAob2JqZWN0KSBudWxsCitQQVNT
IGN1cnJlbnRJdGVyYXRpb24gb2YgYSBmaW5pc2hlZCB0cmFuc2l0aW9uIAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy10cmFuc2l0aW9ucy90ZXN0X2FuaW1h
dGlvbi1jb21wdXRlZC10aW1pbmcuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
Y3NzLXRyYW5zaXRpb25zL3Rlc3RfYW5pbWF0aW9uLWNvbXB1dGVkLXRpbWluZy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhjNjE3YmNiZTM4NzJkNTRmNTQyNzkzMWE3NzkzNzY0ZGJmZjZmZDEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy10cmFuc2l0aW9ucy90
ZXN0X2FuaW1hdGlvbi1jb21wdXRlZC10aW1pbmcuaHRtbApAQCAtMCwwICsxLDMxNyBAQAorPCFk
b2N0eXBlIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVDU1NBbmltYXRpb25z
QW5kQ1NTVHJhbnNpdGlvbnNCYWNrZWRCeVdlYkFuaW1hdGlvbnM9dHJ1ZSBdIC0tPgorPG1ldGEg
Y2hhcnNldD11dGYtOD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3Rj
b21tb24uanMiPjwvc2NyaXB0PgorPHN0eWxlPgorCisuYW5pbWF0ZWQtZGl2IHsKKyAgbWFyZ2lu
LWxlZnQ6IDEwMHB4OworfQorCis8L3N0eWxlPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2
PgorPHNjcmlwdD4KKworJ3VzZSBzdHJpY3QnOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8gZGVsYXkKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAg
dmFyIGRpdiA9IGFkZERpdih0LCB7J2NsYXNzJzogJ2FuaW1hdGVkLWRpdid9KTsKKyAgZGl2LnN0
eWxlLnRyYW5zaXRpb24gPSAnbWFyZ2luLWxlZnQgMTBzJzsKKyAgZmx1c2hDb21wdXRlZFN0eWxl
KGRpdik7CisgIGRpdi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzEwcHgnOworCisKKyAgdmFyIGVmZmVj
dCA9IGRpdi5nZXRBbmltYXRpb25zKClbMF0uZWZmZWN0OworICBhc3NlcnRfZXF1YWxzKGVmZmVj
dC5nZXRDb21wdXRlZFRpbWluZygpLmRlbGF5LCAwLAorICAgICAgICAgICAgICAgICdJbml0aWFs
IHZhbHVlIG9mIGRlbGF5Jyk7Cit9LCAnZGVsYXkgb2YgYSBuZXcgdHJhbmlzaXRpb24nKTsKKwor
dGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeydjbGFzcyc6ICdhbmlt
YXRlZC1kaXYnfSk7CisgIGRpdi5zdHlsZS50cmFuc2l0aW9uID0gJ21hcmdpbi1sZWZ0IDEwcyAx
MHMnOworICBmbHVzaENvbXB1dGVkU3R5bGUoZGl2KTsKKyAgZGl2LnN0eWxlLm1hcmdpbkxlZnQg
PSAnMTBweCc7CisKKyAgdmFyIGVmZmVjdCA9IGRpdi5nZXRBbmltYXRpb25zKClbMF0uZWZmZWN0
OworICBhc3NlcnRfZXF1YWxzKGVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLmRlbGF5LCAxMDAw
MCwKKyAgICAgICAgICAgICAgICAnSW5pdGlhbCB2YWx1ZSBvZiBkZWxheScpOworfSwgJ1Bvc2l0
aXZlIGRlbGF5IG9mIGEgbmV3IHRyYW5zaXRpb24nKTsKKwordGVzdChmdW5jdGlvbih0KSB7Cisg
IHZhciBkaXYgPSBhZGREaXYodCwgeydjbGFzcyc6ICdhbmltYXRlZC1kaXYnfSk7CisgIGRpdi5z
dHlsZS50cmFuc2l0aW9uID0gJ21hcmdpbi1sZWZ0IDEwcyAtNXMnOworICBmbHVzaENvbXB1dGVk
U3R5bGUoZGl2KTsKKyAgZGl2LnN0eWxlLm1hcmdpbkxlZnQgPSAnMTBweCc7CisKKyAgdmFyIGVm
ZmVjdCA9IGRpdi5nZXRBbmltYXRpb25zKClbMF0uZWZmZWN0OworICBhc3NlcnRfZXF1YWxzKGVm
ZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLmRlbGF5LCAtNTAwMCwKKyAgICAgICAgICAgICAgICAn
SW5pdGlhbCB2YWx1ZSBvZiBkZWxheScpOworfSwgJ05lZ2F0aXZlIGRlbGF5IG9mIGEgbmV3IHRy
YW5zaXRpb24nKTsKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gZW5kRGVsYXkKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFk
ZERpdih0LCB7J2NsYXNzJzogJ2FuaW1hdGVkLWRpdid9KTsKKyAgZGl2LnN0eWxlLnRyYW5zaXRp
b24gPSAnbWFyZ2luLWxlZnQgMTBzJzsKKyAgZmx1c2hDb21wdXRlZFN0eWxlKGRpdik7CisgIGRp
di5zdHlsZS5tYXJnaW5MZWZ0ID0gJzEwcHgnOworCisgIHZhciBlZmZlY3QgPSBkaXYuZ2V0QW5p
bWF0aW9ucygpWzBdLmVmZmVjdDsKKyAgYXNzZXJ0X2VxdWFscyhlZmZlY3QuZ2V0Q29tcHV0ZWRU
aW1pbmcoKS5lbmREZWxheSwgMCwKKyAgICAgICAgICAgICAgICAnSW5pdGlhbCB2YWx1ZSBvZiBl
bmREZWxheScpOworfSwgJ2VuZERlbGF5IG9mIGEgbmV3IHRyYW5zaXRpb24nKTsKKworCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gZmlsbAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3Rl
c3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsnY2xhc3MnOiAnYW5pbWF0
ZWQtZGl2J30pOworICBkaXYuc3R5bGUudHJhbnNpdGlvbiA9ICdtYXJnaW4tbGVmdCAxMHMnOwor
ICBmbHVzaENvbXB1dGVkU3R5bGUoZGl2KTsKKyAgZGl2LnN0eWxlLm1hcmdpbkxlZnQgPSAnMTBw
eCc7CisKKyAgdmFyIGVmZmVjdCA9IGRpdi5nZXRBbmltYXRpb25zKClbMF0uZWZmZWN0OworICBh
c3NlcnRfZXF1YWxzKGVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLmZpbGwsICdiYWNrd2FyZHMn
LAorICAgICAgICAgICAgICAgICdGaWxsIGJhY2t3YXJkcycpOworfSwgJ2ZpbGwgb2YgYSBuZXcg
dHJhbnNpdGlvbicpOworCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBpdGVyYXRpb25T
dGFydAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIg
ZGl2ID0gYWRkRGl2KHQsIHsnY2xhc3MnOiAnYW5pbWF0ZWQtZGl2J30pOworICBkaXYuc3R5bGUu
dHJhbnNpdGlvbiA9ICdtYXJnaW4tbGVmdCAxMHMnOworICBmbHVzaENvbXB1dGVkU3R5bGUoZGl2
KTsKKyAgZGl2LnN0eWxlLm1hcmdpbkxlZnQgPSAnMTBweCc7CisKKyAgdmFyIGVmZmVjdCA9IGRp
di5nZXRBbmltYXRpb25zKClbMF0uZWZmZWN0OworICBhc3NlcnRfZXF1YWxzKGVmZmVjdC5nZXRD
b21wdXRlZFRpbWluZygpLml0ZXJhdGlvblN0YXJ0LCAwLAorICAgICAgICAgICAgICAgICdJbml0
aWFsIHZhbHVlIG9mIGl0ZXJhdGlvblN0YXJ0Jyk7Cit9LCAnaXRlcmF0aW9uU3RhcnQgb2YgYSBu
ZXcgdHJhbnNpdGlvbicpOworCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBpdGVyYXRp
b25zCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLQordGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBk
aXYgPSBhZGREaXYodCwgeydjbGFzcyc6ICdhbmltYXRlZC1kaXYnfSk7CisgIGRpdi5zdHlsZS50
cmFuc2l0aW9uID0gJ21hcmdpbi1sZWZ0IDEwcyc7CisgIGZsdXNoQ29tcHV0ZWRTdHlsZShkaXYp
OworICBkaXYuc3R5bGUubWFyZ2luTGVmdCA9ICcxMHB4JzsKKworICB2YXIgZWZmZWN0ID0gZGl2
LmdldEFuaW1hdGlvbnMoKVswXS5lZmZlY3Q7CisgIGFzc2VydF9lcXVhbHMoZWZmZWN0LmdldENv
bXB1dGVkVGltaW5nKCkuaXRlcmF0aW9ucywgMSwKKyAgICAgICAgICAgICAgICAnSW5pdGlhbCB2
YWx1ZSBvZiBpdGVyYXRpb25zJyk7Cit9LCAnaXRlcmF0aW9ucyBvZiBhIG5ldyB0cmFuc2l0aW9u
Jyk7CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGR1cmF0aW9uCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLQordGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwg
eydjbGFzcyc6ICdhbmltYXRlZC1kaXYnfSk7CisgIGRpdi5zdHlsZS50cmFuc2l0aW9uID0gJ21h
cmdpbi1sZWZ0IDEwcyc7CisgIGZsdXNoQ29tcHV0ZWRTdHlsZShkaXYpOworICBkaXYuc3R5bGUu
bWFyZ2luTGVmdCA9ICcxMHB4JzsKKworICB2YXIgZWZmZWN0ID0gZGl2LmdldEFuaW1hdGlvbnMo
KVswXS5lZmZlY3Q7CisgIGFzc2VydF9lcXVhbHMoZWZmZWN0LmdldENvbXB1dGVkVGltaW5nKCku
ZHVyYXRpb24sIDEwMDAwLAorICAgICAgICAgICAgICAgICdJbml0aWFsIHZhbHVlIG9mIGR1cmF0
aW9uJyk7Cit9LCAnZHVyYXRpb24gb2YgYSBuZXcgdHJhbnNpdGlvbicpOworCisKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLyBkaXJlY3Rpb24KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tCit0
ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7J2NsYXNzJzogJ2FuaW1h
dGVkLWRpdid9KTsKKyAgZGl2LnN0eWxlLnRyYW5zaXRpb24gPSAnbWFyZ2luLWxlZnQgMTBzJzsK
KyAgZmx1c2hDb21wdXRlZFN0eWxlKGRpdik7CisgIGRpdi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzEw
cHgnOworCisgIHZhciBlZmZlY3QgPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdLmVmZmVjdDsKKyAg
YXNzZXJ0X2VxdWFscyhlZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5kaXJlY3Rpb24sICdub3Jt
YWwnLAorICAgICAgICAgICAgICAgICdJbml0aWFsIHZhbHVlIG9mIGRpcmVjdGlvbicpOworfSwg
J2RpcmVjdGlvbiBvZiBhIG5ldyB0cmFuc2l0aW9uJyk7CisKKworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vIGVhc2luZworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3Rlc3QoZnVuY3Rpb24o
dCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsnY2xhc3MnOiAnYW5pbWF0ZWQtZGl2J30pOwor
ICBkaXYuc3R5bGUudHJhbnNpdGlvbiA9ICdtYXJnaW4tbGVmdCAxMHMnOworICBmbHVzaENvbXB1
dGVkU3R5bGUoZGl2KTsKKyAgZGl2LnN0eWxlLm1hcmdpbkxlZnQgPSAnMTBweCc7CisKKyAgdmFy
IGVmZmVjdCA9IGRpdi5nZXRBbmltYXRpb25zKClbMF0uZWZmZWN0OworICBhc3NlcnRfZXF1YWxz
KGVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLmVhc2luZywgJ2xpbmVhcicsCisgICAgICAgICAg
ICAgICAgJ0luaXRpYWwgdmFsdWUgb2YgZWFzaW5nJyk7Cit9LCAnZWFzaW5nIG9mIGEgbmV3IHRy
YW5zaXRpb24nKTsKKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGVu
ZFRpbWUKKy8vID0gbWF4KHN0YXJ0IGRlbGF5ICsgYWN0aXZlIGR1cmF0aW9uICsgZW5kIGRlbGF5
LCAwKQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIg
ZGl2ID0gYWRkRGl2KHQsIHsnY2xhc3MnOiAnYW5pbWF0ZWQtZGl2J30pOworICBkaXYuc3R5bGUu
dHJhbnNpdGlvbiA9ICdtYXJnaW4tbGVmdCAxMDBzIC01cyc7CisgIGZsdXNoQ29tcHV0ZWRTdHls
ZShkaXYpOworICBkaXYuc3R5bGUubWFyZ2luTGVmdCA9ICcxMHB4JzsKKworICB2YXIgZWZmZWN0
ID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXS5lZmZlY3Q7CisgIHZhciBhbnN3ZXIgPSAxMDAwMDAg
LSA1MDAwOyAvLyBtcworICBhc3NlcnRfZXF1YWxzKGVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygp
LmVuZFRpbWUsIGFuc3dlciwKKyAgICAgICAgICAgICAgICAnSW5pdGlhbCB2YWx1ZSBvZiBlbmRU
aW1lJyk7Cit9LCAnZW5kVGltZSBvZiBhIG5ldyB0cmFuc2l0aW9uJyk7CisKKworLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vIGFjdGl2ZUR1cmF0aW9uCisvLyA9IGl0ZXJhdGlvbiBkdXJhdGlv
biAqIGl0ZXJhdGlvbiBjb3VudCg9PTEpCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLQordGVzdChm
dW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeydjbGFzcyc6ICdhbmltYXRlZC1k
aXYnfSk7CisgIGRpdi5zdHlsZS50cmFuc2l0aW9uID0gJ21hcmdpbi1sZWZ0IDEwMHMgLTVzJzsK
KyAgZmx1c2hDb21wdXRlZFN0eWxlKGRpdik7CisgIGRpdi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzEw
cHgnOworCisgIHZhciBlZmZlY3QgPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdLmVmZmVjdDsKKyAg
YXNzZXJ0X2VxdWFscyhlZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5hY3RpdmVEdXJhdGlvbiwg
MTAwMDAwLAorICAgICAgICAgICAgICAgICdJbml0aWFsIHZhbHVlIG9mIGFjdGl2ZUR1cmF0aW9u
Jyk7Cit9LCAnYWN0aXZlRHVyYXRpb24gb2YgYSBuZXcgdHJhbnNpdGlvbicpOworCisKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tCisvLyBsb2NhbFRpbWUKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
Cit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7J2NsYXNzJzogJ2Fu
aW1hdGVkLWRpdid9KTsKKyAgZGl2LnN0eWxlLnRyYW5zaXRpb24gPSAnbWFyZ2luLWxlZnQgMTAw
cyc7CisgIGZsdXNoQ29tcHV0ZWRTdHlsZShkaXYpOworICBkaXYuc3R5bGUubWFyZ2luTGVmdCA9
ICcxMHB4JzsKKworICB2YXIgZWZmZWN0ID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXS5lZmZlY3Q7
CisgIGFzc2VydF9lcXVhbHMoZWZmZWN0LmdldENvbXB1dGVkVGltaW5nKCkubG9jYWxUaW1lLCAw
LAorICAgICAgICAgICAgICAgICdJbml0aWFsIHZhbHVlIG9mIGxvY2FsVGltZScpOworfSwgJ2xv
Y2FsVGltZSBvZiBhIG5ldyB0cmFuc2l0aW9uJyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2
YXIgZGl2ID0gYWRkRGl2KHQsIHsnY2xhc3MnOiAnYW5pbWF0ZWQtZGl2J30pOworICBkaXYuc3R5
bGUudHJhbnNpdGlvbiA9ICdtYXJnaW4tbGVmdCAxMDBzJzsKKyAgZmx1c2hDb21wdXRlZFN0eWxl
KGRpdik7CisgIGRpdi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzEwcHgnOworCisgIHZhciBhbmltID0g
ZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKyAgYW5pbS5jdXJyZW50VGltZSA9IDUwMDA7CisgIGFz
c2VydF9lcXVhbHMoYW5pbS5lZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5sb2NhbFRpbWUsIGFu
aW0uY3VycmVudFRpbWUsCisgICAgICAgICAgICAgICAgJ2N1cnJlbnQgbG9jYWxUaW1lIGFmdGVy
IHNldHRpbmcgY3VycmVudFRpbWUnKTsKK30sICdsb2NhbFRpbWUgaXMgYWx3YXlzIGVxdWFsIHRv
IGN1cnJlbnRUaW1lJyk7CisKK2FzeW5jX3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0g
YWRkRGl2KHQsIHsnY2xhc3MnOiAnYW5pbWF0ZWQtZGl2J30pOworICBkaXYuc3R5bGUudHJhbnNp
dGlvbiA9ICdtYXJnaW4tbGVmdCAxMDBzJzsKKyAgZmx1c2hDb21wdXRlZFN0eWxlKGRpdik7Cisg
IGRpdi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzEwcHgnOworCisgIHZhciBhbmltID0gZGl2LmdldEFu
aW1hdGlvbnMoKVswXTsKKyAgYW5pbS5wbGF5YmFja1JhdGUgPSAyOyAvLyAyIHRpbWVzIGZhc3Rl
cgorCisgIGFuaW0ucmVhZHkudGhlbih0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICBhc3Nl
cnRfZXF1YWxzKGFuaW0uZWZmZWN0LmdldENvbXB1dGVkVGltaW5nKCkubG9jYWxUaW1lLCBhbmlt
LmN1cnJlbnRUaW1lLAorICAgICAgICAgICAgICAgICAgJ2xvY2FsVGltZSBpcyBlcXVhbCB0byBj
dXJyZW50VGltZScpOworICAgIHJldHVybiB3YWl0Rm9yRnJhbWUoKTsKKyAgfSkpLnRoZW4odC5z
dGVwX2Z1bmNfZG9uZShmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfZXF1YWxzKGFuaW0uZWZmZWN0
LmdldENvbXB1dGVkVGltaW5nKCkubG9jYWxUaW1lLCBhbmltLmN1cnJlbnRUaW1lLAorICAgICAg
ICAgICAgICAgICAgJ2xvY2FsVGltZSBpcyBlcXVhbCB0byBjdXJyZW50VGltZScpOworICB9KSk7
Cit9LCAnbG9jYWxUaW1lIHJlZmxlY3RzIHBsYXliYWNrUmF0ZSBpbW1lZGlhdGVseScpOworCisK
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBwcm9ncmVzcworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0KK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsnY2xhc3Mn
OiAnYW5pbWF0ZWQtZGl2J30pOworICBkaXYuc3R5bGUudHJhbnNpdGlvbiA9ICdtYXJnaW4tbGVm
dCAxMC41cyc7CisgIGZsdXNoQ29tcHV0ZWRTdHlsZShkaXYpOworICBkaXYuc3R5bGUubWFyZ2lu
TGVmdCA9ICcxMHB4JzsKKworICB2YXIgZWZmZWN0ID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXS5l
ZmZlY3Q7CisgIGFzc2VydF9lcXVhbHMoZWZmZWN0LmdldENvbXB1dGVkVGltaW5nKCkucHJvZ3Jl
c3MsIDAuMCwKKyAgICAgICAgICAgICAgICAnSW5pdGlhbCB2YWx1ZSBvZiBwcm9ncmVzcycpOwor
fSwgJ3Byb2dyZXNzIG9mIGEgbmV3IHRyYW5zaXRpb24nKTsKKwordGVzdChmdW5jdGlvbih0KSB7
CisgIHZhciBkaXYgPSBhZGREaXYodCwgeydjbGFzcyc6ICdhbmltYXRlZC1kaXYnfSk7CisgIGRp
di5zdHlsZS50cmFuc2l0aW9uID0gJ21hcmdpbi1sZWZ0IDEwLjVzIDJzJzsKKyAgZmx1c2hDb21w
dXRlZFN0eWxlKGRpdik7CisgIGRpdi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzEwcHgnOworCisgIHZh
ciBlZmZlY3QgPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdLmVmZmVjdDsKKyAgYXNzZXJ0X2VxdWFs
cyhlZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5wcm9ncmVzcywgMC4wLAorICAgICAgICAgICAg
ICAgICdJbml0aWFsIHZhbHVlIG9mIHByb2dyZXNzJyk7Cit9LCAncHJvZ3Jlc3Mgb2YgYSBuZXcg
dHJhbnNpdGlvbiB3aXRoIHBvc2l0aXZlIGRlbGF5IGluIGJlZm9yZSBwaGFzZScpOworCit0ZXN0
KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7J2NsYXNzJzogJ2FuaW1hdGVk
LWRpdid9KTsKKyAgZGl2LnN0eWxlLnRyYW5zaXRpb24gPSAnbWFyZ2luLWxlZnQgMTAuNXMnOwor
ICBmbHVzaENvbXB1dGVkU3R5bGUoZGl2KTsKKyAgZGl2LnN0eWxlLm1hcmdpbkxlZnQgPSAnMTBw
eCc7CisKKyAgdmFyIGFuaW0gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworICBhbmltLmZpbmlz
aCgpCisgIGFzc2VydF9lcXVhbHMoYW5pbS5lZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5wcm9n
cmVzcywgbnVsbCwKKyAgICAgICAgICAgICAgICAnZmluaXNoZWQgcHJvZ3Jlc3MnKTsKK30sICdw
cm9ncmVzcyBvZiBhIGZpbmlzaGVkIHRyYW5zaXRpb24nKTsKKworCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8gY3VycmVudEl0ZXJhdGlvbgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3Rl
c3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsnY2xhc3MnOiAnYW5pbWF0
ZWQtZGl2J30pOworICBkaXYuc3R5bGUudHJhbnNpdGlvbiA9ICdtYXJnaW4tbGVmdCAxMHMnOwor
ICBmbHVzaENvbXB1dGVkU3R5bGUoZGl2KTsKKyAgZGl2LnN0eWxlLm1hcmdpbkxlZnQgPSAnMTBw
eCc7CisKKyAgdmFyIGVmZmVjdCA9IGRpdi5nZXRBbmltYXRpb25zKClbMF0uZWZmZWN0OworICBh
c3NlcnRfZXF1YWxzKGVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLmN1cnJlbnRJdGVyYXRpb24s
IDAsCisgICAgICAgICAgICAgICAgJ0luaXRpYWwgdmFsdWUgb2YgY3VycmVudEl0ZXJhdGlvbicp
OworfSwgJ2N1cnJlbnRJdGVyYXRpb24gb2YgYSBuZXcgdHJhbnNpdGlvbicpOworCit0ZXN0KGZ1
bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7J2NsYXNzJzogJ2FuaW1hdGVkLWRp
did9KTsKKyAgZGl2LnN0eWxlLnRyYW5zaXRpb24gPSAnbWFyZ2luLWxlZnQgMTBzIDJzJzsKKyAg
Zmx1c2hDb21wdXRlZFN0eWxlKGRpdik7CisgIGRpdi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzEwcHgn
OworCisgIHZhciBlZmZlY3QgPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdLmVmZmVjdDsKKyAgYXNz
ZXJ0X2VxdWFscyhlZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5jdXJyZW50SXRlcmF0aW9uLCAw
LAorICAgICAgICAgICAgICAgICdJbml0aWFsIHZhbHVlIG9mIGN1cnJlbnRJdGVyYXRpb24nKTsK
K30sICdjdXJyZW50SXRlcmF0aW9uIG9mIGEgbmV3IHRyYW5zaXRpb24gd2l0aCBwb3NpdGl2ZSBk
ZWxheSBpbiBiZWZvcmUgcGhhc2UnKTsKKwordGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYg
PSBhZGREaXYodCwgeydjbGFzcyc6ICdhbmltYXRlZC1kaXYnfSk7CisgIGRpdi5zdHlsZS50cmFu
c2l0aW9uID0gJ21hcmdpbi1sZWZ0IDEwcyc7CisgIGZsdXNoQ29tcHV0ZWRTdHlsZShkaXYpOwor
ICBkaXYuc3R5bGUubWFyZ2luTGVmdCA9ICcxMHB4JzsKKworICB2YXIgYW5pbSA9IGRpdi5nZXRB
bmltYXRpb25zKClbMF07CisgIGFuaW0uZmluaXNoKCk7CisgIGFzc2VydF9lcXVhbHMoYW5pbS5l
ZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5jdXJyZW50SXRlcmF0aW9uLCBudWxsLAorICAgICAg
ICAgICAgICAgICdmaW5pc2hlZCBjdXJyZW50SXRlcmF0aW9uJyk7Cit9LCAnY3VycmVudEl0ZXJh
dGlvbiBvZiBhIGZpbmlzaGVkIHRyYW5zaXRpb24nKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy10cmFuc2l0aW9ucy90
ZXN0X2FuaW1hdGlvbi1jdXJyZW50dGltZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL2Nzcy10cmFuc2l0aW9ucy90ZXN0X2FuaW1hdGlvbi1jdXJyZW50dGltZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGY0YjFlZTJhZDE1MDk3NGYyM2QyYTE5OWMzZjExYzg1
YmJiM2Y0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEv
Y3NzLXRyYW5zaXRpb25zL3Rlc3RfYW5pbWF0aW9uLWN1cnJlbnR0aW1lLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDggQEAKKworUEFTUyBjdXJyZW50VGltZSBvZiBhIG5ld2x5IGNyZWF0ZWQgdHJh
bnNpdGlvbiBpcyB6ZXJvIAorUEFTUyBTYW5pdHkgdGVzdCB0byBjaGVjayByb3VuZC10cmlwcGlu
ZyBhc3NpZ25pbmcgdG8gbmV3IGFuaW1hdGlvbidzIGN1cnJlbnRUaW1lIAorRkFJTCBTa2lwcGlu
ZyBmb3J3YXJkIHRocm91Z2ggdHJhbnNpdGlvbiBhc3NlcnRfZXF1YWxzOiBBbmltYXRpb24ucGxh
eVN0YXRlIHNob3VsZCBiZSAicnVubmluZyIgb24gdGhlIGZpcnN0IHBhaW50IHRpY2sgYWZ0ZXIg
YW5pbWF0aW9uIGNyZWF0aW9uIGV4cGVjdGVkICJydW5uaW5nIiBidXQgZ290ICJmaW5pc2hlZCIK
K1BBU1MgU2tpcHBpbmcgYmFja3dhcmRzIHRocm91Z2ggdHJhbnNpdGlvbiAKK1BBU1MgU2V0dGlu
ZyBjdXJyZW50VGltZSB0byBudWxsIAorUEFTUyBBbmltYXRpb24uY3VycmVudFRpbWUgYWZ0ZXIg
cGF1c2luZyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3Mt
dHJhbnNpdGlvbnMvdGVzdF9hbmltYXRpb24tY3VycmVudHRpbWUuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvY3NzLXRyYW5zaXRpb25zL3Rlc3RfYW5pbWF0aW9uLWN1cnJlbnR0
aW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUwMTc4Mzg4MDczMDAyZDg3M2NkNDI1NTgxMDY5MzFiZDVm
MjNkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3Nz
LXRyYW5zaXRpb25zL3Rlc3RfYW5pbWF0aW9uLWN1cnJlbnR0aW1lLmh0bWwKQEAgLTAsMCArMSwz
MDkgQEAKKzwhZG9jdHlwZSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlQ1NT
QW5pbWF0aW9uc0FuZENTU1RyYW5zaXRpb25zQmFja2VkQnlXZWJBbmltYXRpb25zPXRydWUgXSAt
LT4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PXV0Zi04PgorICAgIDx0aXRs
ZT5UZXN0cyBmb3IgdGhlIGVmZmVjdCBvZiBzZXR0aW5nIGEgQ1NTIHRyYW5zaXRpb24ncworICAg
ICAgICAgICBBbmltYXRpb24uY3VycmVudFRpbWU8L3RpdGxlPgorICAgIDxzdHlsZT4KKworLmFu
aW1hdGVkLWRpdiB7CisgIG1hcmdpbi1sZWZ0OiAxMDBweDsKKyAgdHJhbnNpdGlvbjogbWFyZ2lu
LWxlZnQgMTAwMHMgbGluZWFyIDEwMDBzOworfQorCisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3Rjb21tb24uanMiPjwvc2Ny
aXB0PgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxkaXYgaWQ9ImxvZyI+PC9kaXY+CisgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCisndXNlIHN0cmljdCc7CisKKy8vIFRP
RE86IE9uY2UgdGhlIGNvbXB1dGVkVGltaW5nIHByb3BlcnR5IGlzIGltcGxlbWVudGVkLCBhZGQg
Y2hlY2tzIHRvIHRoZQorLy8gY2hlY2tlciBoZWxwZXJzIHRvIGVuc3VyZSB0aGF0IGNvbXB1dGVk
VGltaW5nJ3MgcHJvcGVydGllcyBhcmUgdXBkYXRlZCBhcworLy8gZXhwZWN0ZWQuCisvLyBTZWUg
aHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwODA1NQorCisK
K2NvbnN0IEFOSU1fREVMQVlfTVMgPSAxMDAwMDAwOyAvLyAxMDAwcworY29uc3QgQU5JTV9EVVJf
TVMgPSAxMDAwMDAwOyAvLyAxMDAwcworCisvKioKKyAqIFRoZXNlIGhlbHBlcnMgZ2V0IHRoZSB2
YWx1ZSB0aGF0IHRoZSBjdXJyZW50VGltZSBuZWVkcyB0byBiZSBzZXQgdG8sIHRvIHB1dAorICog
YW4gYW5pbWF0aW9uIHRoYXQgdXNlcyB0aGUgYWJvdmUgQU5JTV9ERUxBWV9NUyBhbmQgQU5JTV9E
VVJfTVMgdmFsdWVzIGludG8KKyAqIHRoZSBtaWRkbGUgb2YgdmFyaW91cyBwaGFzZXMgb3IgcG9p
bnRzIHRocm91Z2ggdGhlIGFjdGl2ZSBkdXJhdGlvbi4KKyAqLworZnVuY3Rpb24gY3VycmVudFRp
bWVGb3JCZWZvcmVQaGFzZSgpIHsKKyAgcmV0dXJuIEFOSU1fREVMQVlfTVMgLyAyOworfQorZnVu
Y3Rpb24gY3VycmVudFRpbWVGb3JBY3RpdmVQaGFzZSgpIHsKKyAgcmV0dXJuIEFOSU1fREVMQVlf
TVMgKyBBTklNX0RVUl9NUyAvIDI7Cit9CitmdW5jdGlvbiBjdXJyZW50VGltZUZvckFmdGVyUGhh
c2UoKSB7CisgIHJldHVybiBBTklNX0RFTEFZX01TICsgQU5JTV9EVVJfTVMgKyBBTklNX0RFTEFZ
X01TIC8gMjsKK30KK2Z1bmN0aW9uIGN1cnJlbnRUaW1lRm9yU3RhcnRPZkFjdGl2ZUludGVydmFs
KCkgeworICByZXR1cm4gQU5JTV9ERUxBWV9NUzsKK30KK2Z1bmN0aW9uIGN1cnJlbnRUaW1lRm9y
RmlmdHlQZXJjZW50VGhyb3VnaEFjdGl2ZUludGVydmFsKCkgeworICByZXR1cm4gQU5JTV9ERUxB
WV9NUyArIEFOSU1fRFVSX01TICogMC41OworfQorZnVuY3Rpb24gY3VycmVudFRpbWVGb3JFbmRP
ZkFjdGl2ZUludGVydmFsKCkgeworICByZXR1cm4gQU5JTV9ERUxBWV9NUyArIEFOSU1fRFVSX01T
OworfQorCisKKy8vIEV4cGVjdGVkIGNvbXB1dGVkICdtYXJnaW4tbGVmdCcgdmFsdWVzIGF0IHBv
aW50cyBkdXJpbmcgdGhlIGFjdGl2ZSBpbnRlcnZhbDoKKy8vIFdoZW4gd2UgYXNzZXJ0X2JldHdl
ZW5faW5jbHVzaXZlIHVzaW5nIHRoZXNlIHZhbHVlcyB3ZSBjb3VsZCBpbiB0aGVvcnkgY2F1c2UK
Ky8vIGludGVybWl0dGVudCBmYWlsdXJlIGR1ZSB0byB2ZXJ5IGxvbmcgZGVsYXlzIGJldHdlZW4g
cGFpbnRzLCBidXQgc2luY2UgdGhlCisvLyBhY3RpdmUgZHVyYXRpb24gaXMgMTAwMHMgbG9uZywg
YSBkZWxheSB3b3VsZCBuZWVkIHRvIGJlIGFyb3VuZCAxMDBzIHRvIGNhdXNlCisvLyB0aGF0LiBJ
ZiB0aGF0J3MgaGFwcGVuaW5nIHRoZW4gdGhlcmUgYXJlIGxpa2VseSBvdGhlciBpc3N1ZXMgdGhh
dCBzaG91bGQgYmUKKy8vIGZpeGVkLCBzbyBhIGZhaWx1cmUgdG8gbWFrZSB1cyBsb29rIGludG8g
dGhhdCBzZWVtcyBsaWtlIGEgZ29vZCB0aGluZy4KK2NvbnN0IElOSVRJQUxfUE9TSVRJT04gPSAx
MDA7Citjb25zdCBURU5fUENUX1BPU0lUSU9OID0gMTEwOworY29uc3QgRklGVFlfUENUX1BPU0lU
SU9OID0gMTUwOworY29uc3QgRU5EX1BPU0lUSU9OID0gMjAwOworCisKKy8vIFRoZSB0ZXJtcyB1
c2VkIGZvciB0aGUgbmFtaW5nIG9mIHRoZSBmb2xsb3dpbmcgaGVscGVyIGZ1bmN0aW9ucyByZWZl
ciB0bworLy8gdGVybXMgdXNlZCBpbiB0aGUgV2ViIEFuaW1hdGlvbnMgc3BlY2lmaWNhdGlvbiBm
b3Igc3BlY2lmaWMgcGhhc2VzIG9mIGFuCisvLyBhbmltYXRpb24uIFRoZSB0ZXJtcyBjYW4gYmUg
Zm91bmQgaGVyZToKKy8vCisvLyAgIGh0dHA6Ly9kcmFmdHMuY3Nzd2cub3JnL3dlYi1hbmltYXRp
b25zLyNhbmltYXRpb24tZWZmZWN0LXBoYXNlcy1hbmQtc3RhdGVzCisKKy8vIENhbGxlZCB3aGVu
IGN1cnJlbnRUaW1lIGlzIHNldCB0byB6ZXJvICh0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdGFydCBk
ZWxheSkuCitmdW5jdGlvbiBjaGVja1N0YXRlT25TZXR0aW5nQ3VycmVudFRpbWVUb1plcm8oYW5p
bWF0aW9uKQoreworICAvLyBXZSBkb24ndCB0ZXN0IGFuaW1hdGlvbi5jdXJyZW50VGltZSBzaW5j
ZSBvdXIgY2FsbGVyIGp1c3Qgc2V0IGl0LgorCisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uLnBs
YXlTdGF0ZSwgJ3J1bm5pbmcnLAorICAgICdBbmltYXRpb24ucGxheVN0YXRlIHNob3VsZCBiZSAi
cnVubmluZyIgYXQgdGhlIHN0YXJ0IG9mICcgKworICAgICd0aGUgc3RhcnQgZGVsYXknKTsKKwor
ICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbi5lZmZlY3QudGFyZ2V0LnN0eWxlLmFuaW1hdGlvblBs
YXlTdGF0ZSwgJ3J1bm5pbmcnLAorICAgICdBbmltYXRpb24uZWZmZWN0LnRhcmdldC5zdHlsZS5h
bmltYXRpb25QbGF5U3RhdGUgc2hvdWxkIGJlICcgKworICAgICcicnVubmluZyIgYXQgdGhlIHN0
YXJ0IG9mIHRoZSBzdGFydCBkZWxheScpOworCisgIHZhciBkaXYgPSBhbmltYXRpb24uZWZmZWN0
LnRhcmdldDsKKyAgdmFyIG1hcmdpbkxlZnQgPSBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUo
ZGl2KS5tYXJnaW5MZWZ0KTsKKyAgYXNzZXJ0X2VxdWFscyhtYXJnaW5MZWZ0LCBVTkFOSU1BVEVE
X1BPU0lUSU9OLAorICAgICAgICAgICAgICAgICd0aGUgY29tcHV0ZWQgdmFsdWUgb2YgbWFyZ2lu
LWxlZnQgc2hvdWxkIGJlIHVuYWZmZWN0ZWQgJyArCisgICAgICAgICAgICAgICAgJ2F0IHRoZSBi
ZWdpbm5pbmcgb2YgdGhlIHN0YXJ0IGRlbGF5Jyk7Cit9CisKKy8vIENhbGxlZCB3aGVuIHRoZSBy
ZWFkeSBQcm9taXNlJ3MgY2FsbGJhY2tzIHNob3VsZCBoYXBwZW4KK2Z1bmN0aW9uIGNoZWNrU3Rh
dGVPblJlYWR5UHJvbWlzZVJlc29sdmVkKGFuaW1hdGlvbikKK3sKKyAgLy8gdGhlIDAuMDAwMSBo
ZXJlIGlzIGZvciByb3VuZGluZyBlcnJvcgorICBhc3NlcnRfbGVzc190aGFuX2VxdWFsKGFuaW1h
dGlvbi5jdXJyZW50VGltZSwKKyAgICBhbmltYXRpb24udGltZWxpbmUuY3VycmVudFRpbWUgLSBh
bmltYXRpb24uc3RhcnRUaW1lICsgMC4wMDAxLAorICAgICdBbmltYXRpb24uY3VycmVudFRpbWUg
c2hvdWxkIGJlIGxlc3MgdGhhbiB0aGUgbG9jYWwgdGltZSAnICsKKyAgICAnZXF1aXZhbGVudCBv
ZiB0aGUgdGltZWxpbmVcJ3MgY3VycmVudFRpbWUgb24gdGhlIGZpcnN0IHBhaW50IHRpY2sgJyAr
CisgICAgJ2FmdGVyIGFuaW1hdGlvbiBjcmVhdGlvbicpOworCisgIGFzc2VydF9lcXVhbHMoYW5p
bWF0aW9uLnBsYXlTdGF0ZSwgJ3J1bm5pbmcnLAorICAgICdBbmltYXRpb24ucGxheVN0YXRlIHNo
b3VsZCBiZSAicnVubmluZyIgb24gdGhlIGZpcnN0IHBhaW50ICcgKworICAgICd0aWNrIGFmdGVy
IGFuaW1hdGlvbiBjcmVhdGlvbicpOworCisgIHZhciBkaXYgPSBhbmltYXRpb24uZWZmZWN0LnRh
cmdldDsKKyAgdmFyIG1hcmdpbkxlZnQgPSBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZGl2
KS5tYXJnaW5MZWZ0KTsKKyAgYXNzZXJ0X2VxdWFscyhtYXJnaW5MZWZ0LCBJTklUSUFMX1BPU0lU
SU9OLAorICAgICAgICAgICAgICAgICd0aGUgY29tcHV0ZWQgdmFsdWUgb2YgbWFyZ2luLWxlZnQg
c2hvdWxkIGJlIHVuYWZmZWN0ZWQgJyArCisgICAgICAgICAgICAgICAgJ2J5IGFuIGFuaW1hdGlv
biB3aXRoIGEgZGVsYXkgb24gcmVhZHkgUHJvbWlzZSByZXNvbHZlJyk7Cit9CisKKy8vIENhbGxl
ZCB3aGVuIGN1cnJlbnRUaW1lIGlzIHNldCB0byB0aGUgdGltZSB0aGUgYWN0aXZlIGludGVydmFs
IHN0YXJ0cy4KK2Z1bmN0aW9uIGNoZWNrU3RhdGVBdEFjdGl2ZUludGVydmFsU3RhcnRUaW1lKGFu
aW1hdGlvbikKK3sKKyAgLy8gV2UgZG9uJ3QgdGVzdCBhbmltYXRpb24uY3VycmVudFRpbWUgc2lu
Y2Ugb3VyIGNhbGxlciBqdXN0IHNldCBpdC4KKworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbi5w
bGF5U3RhdGUsICdydW5uaW5nJywKKyAgICAnQW5pbWF0aW9uLnBsYXlTdGF0ZSBzaG91bGQgYmUg
InJ1bm5pbmciIGF0IHRoZSBzdGFydCBvZiAnICsKKyAgICAndGhlIGFjdGl2ZSBpbnRlcnZhbCcp
OworCisgIHZhciBkaXYgPSBhbmltYXRpb24uZWZmZWN0LnRhcmdldDsKKyAgdmFyIG1hcmdpbkxl
ZnQgPSBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZGl2KS5tYXJnaW5MZWZ0KTsKKyAgYXNz
ZXJ0X2JldHdlZW5faW5jbHVzaXZlKG1hcmdpbkxlZnQsIElOSVRJQUxfUE9TSVRJT04sIFRFTl9Q
Q1RfUE9TSVRJT04sCisgICAgJ3RoZSBjb21wdXRlZCB2YWx1ZSBvZiBtYXJnaW4tbGVmdCBzaG91
bGQgYmUgY2xvc2UgdG8gdGhlIHZhbHVlIGF0IHRoZSAnICsKKyAgICAnYmVnaW5uaW5nIG9mIHRo
ZSBhbmltYXRpb24nKTsKK30KKworZnVuY3Rpb24gY2hlY2tTdGF0ZUF0RmlmdHlQY3RPZkFjdGl2
ZUludGVydmFsKGFuaW1hdGlvbikKK3sKKyAgLy8gV2UgZG9uJ3QgdGVzdCBhbmltYXRpb24uY3Vy
cmVudFRpbWUgc2luY2Ugb3VyIGNhbGxlciBqdXN0IHNldCBpdC4KKworICB2YXIgZGl2ID0gYW5p
bWF0aW9uLmVmZmVjdC50YXJnZXQ7CisgIHZhciBtYXJnaW5MZWZ0ID0gcGFyc2VGbG9hdChnZXRD
b21wdXRlZFN0eWxlKGRpdikubWFyZ2luTGVmdCk7CisgIGFzc2VydF9lcXVhbHMobWFyZ2luTGVm
dCwgRklGVFlfUENUX1BPU0lUSU9OLAorICAgICd0aGUgY29tcHV0ZWQgdmFsdWUgb2YgbWFyZ2lu
LWxlZnQgc2hvdWxkIGJlIGhhbGYgd2F5IHRocm91Z2ggdGhlICcgKworICAgICdhbmltYXRpb24g
YXQgdGhlIG1pZHBvaW50IG9mIHRoZSBhY3RpdmUgaW50ZXJ2YWwnKTsKK30KKworLy8gQ2FsbGVk
IHdoZW4gY3VycmVudFRpbWUgaXMgc2V0IHRvIHRoZSB0aW1lIHRoZSBhY3RpdmUgaW50ZXJ2YWwg
ZW5kcy4KK2Z1bmN0aW9uIGNoZWNrU3RhdGVBdEFjdGl2ZUludGVydmFsRW5kVGltZShhbmltYXRp
b24pCit7CisgIC8vIFdlIGRvbid0IHRlc3QgYW5pbWF0aW9uLmN1cnJlbnRUaW1lIHNpbmNlIG91
ciBjYWxsZXIganVzdCBzZXQgaXQuCisKKyAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb24ucGxheVN0
YXRlLCAnZmluaXNoZWQnLAorICAgICdBbmltYXRpb24ucGxheVN0YXRlIHNob3VsZCBiZSAiZmlu
aXNoZWQiIGF0IHRoZSBlbmQgb2YgJyArCisgICAgJ3RoZSBhY3RpdmUgaW50ZXJ2YWwnKTsKKwor
ICB2YXIgZGl2ID0gYW5pbWF0aW9uLmVmZmVjdC50YXJnZXQ7CisgIHZhciBtYXJnaW5MZWZ0ID0g
cGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKGRpdikubWFyZ2luTGVmdCk7CisgIGFzc2VydF9l
cXVhbHMobWFyZ2luTGVmdCwgRU5EX1BPU0lUSU9OLAorICAgICd0aGUgY29tcHV0ZWQgdmFsdWUg
b2YgbWFyZ2luLWxlZnQgc2hvdWxkIGJlIHRoZSBmaW5hbCB0cmFuc2l0aW9uZWQtdG8gJyArCisg
ICAgJ3ZhbHVlIGF0IHRoZSBlbmQgb2YgdGhlIGFjdGl2ZSBkdXJhdGlvbicpOworfQorCit0ZXN0
KGZ1bmN0aW9uKHQpCit7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeydjbGFzcyc6ICdhbmltYXRl
ZC1kaXYnfSk7CisgIGZsdXNoQ29tcHV0ZWRTdHlsZShkaXYpOworICBkaXYuc3R5bGUubWFyZ2lu
TGVmdCA9ICcyMDBweCc7IC8vIGluaXRpYXRlIHRyYW5zaXRpb24KKworICB2YXIgYW5pbWF0aW9u
ID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb24uY3Vy
cmVudFRpbWUsIDAsICdjdXJyZW50VGltZSBzaG91bGQgYmUgemVybycpOworfSwgJ2N1cnJlbnRU
aW1lIG9mIGEgbmV3bHkgY3JlYXRlZCB0cmFuc2l0aW9uIGlzIHplcm8nKTsKKworCit0ZXN0KGZ1
bmN0aW9uKHQpCit7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeydjbGFzcyc6ICdhbmltYXRlZC1k
aXYnfSk7CisgIGZsdXNoQ29tcHV0ZWRTdHlsZShkaXYpOworICBkaXYuc3R5bGUubWFyZ2luTGVm
dCA9ICcyMDBweCc7IC8vIGluaXRpYXRlIHRyYW5zaXRpb24KKworICB2YXIgYW5pbWF0aW9uID0g
ZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKworICAvLyBTbyB0aGF0IGFuaW1hdGlvbiBpcyBydW5u
aW5nIGluc3RlYWQgb2YgcGF1c2VkIHdoZW4gd2Ugc2V0IGN1cnJlbnRUaW1lOgorICBhbmltYXRp
b24uc3RhcnRUaW1lID0gYW5pbWF0aW9uLnRpbWVsaW5lLmN1cnJlbnRUaW1lOworCisgIGFuaW1h
dGlvbi5jdXJyZW50VGltZSA9IDEwOworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbi5jdXJyZW50
VGltZSwgMTAsCisgICAgJ0NoZWNrIHNldHRpbmcgb2YgY3VycmVudFRpbWUgYWN0dWFsbHkgd29y
a3MnKTsKK30sICdTYW5pdHkgdGVzdCB0byBjaGVjayByb3VuZC10cmlwcGluZyBhc3NpZ25pbmcg
dG8gbmV3IGFuaW1hdGlvblwncyAnICsKKyAgICdjdXJyZW50VGltZScpOworCisKK2FzeW5jX3Rl
c3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsnY2xhc3MnOiAnYW5pbWF0
ZWQtZGl2J30pOworICB2YXIgZXZlbnRXYXRjaGVyID0gbmV3IEV2ZW50V2F0Y2hlcih0LCBkaXYs
ICd0cmFuc2l0aW9uZW5kJyk7CisKKyAgZmx1c2hDb21wdXRlZFN0eWxlKGRpdik7CisgIGRpdi5z
dHlsZS5tYXJnaW5MZWZ0ID0gJzIwMHB4JzsgLy8gaW5pdGlhdGUgdHJhbnNpdGlvbgorCisgIHZh
ciBhbmltYXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworCisgIGFuaW1hdGlvbi5yZWFk
eS50aGVuKHQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIGNoZWNrU3RhdGVPblJlYWR5UHJv
bWlzZVJlc29sdmVkKGFuaW1hdGlvbik7CisKKyAgICBhbmltYXRpb24uY3VycmVudFRpbWUgPSBj
dXJyZW50VGltZUZvclN0YXJ0T2ZBY3RpdmVJbnRlcnZhbCgpOworICAgIGNoZWNrU3RhdGVBdEFj
dGl2ZUludGVydmFsU3RhcnRUaW1lKGFuaW1hdGlvbik7CisKKyAgICBhbmltYXRpb24uY3VycmVu
dFRpbWUgPSBjdXJyZW50VGltZUZvckZpZnR5UGVyY2VudFRocm91Z2hBY3RpdmVJbnRlcnZhbCgp
OworICAgIGNoZWNrU3RhdGVBdEZpZnR5UGN0T2ZBY3RpdmVJbnRlcnZhbChhbmltYXRpb24pOwor
CisgICAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gY3VycmVudFRpbWVGb3JFbmRPZkFjdGl2ZUlu
dGVydmFsKCk7CisgICAgcmV0dXJuIGV2ZW50V2F0Y2hlci53YWl0X2ZvcigndHJhbnNpdGlvbmVu
ZCcpOworICB9KSkudGhlbih0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICBjaGVja1N0YXRl
QXRBY3RpdmVJbnRlcnZhbEVuZFRpbWUoYW5pbWF0aW9uKTsKKyAgfSkpLmNhdGNoKHQuc3RlcF9m
dW5jKGZ1bmN0aW9uKHJlYXNvbikgeworICAgIGFzc2VydF91bnJlYWNoZWQocmVhc29uKTsKKyAg
fSkpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgdC5kb25lKCk7CisgIH0pOworfSwgJ1NraXBwaW5n
IGZvcndhcmQgdGhyb3VnaCB0cmFuc2l0aW9uJyk7CisKKwordGVzdChmdW5jdGlvbih0KSB7Cisg
IHZhciBkaXYgPSBhZGREaXYodCwgeydjbGFzcyc6ICdhbmltYXRlZC1kaXYnfSk7CisgIHZhciBl
dmVudFdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVyKHQsIGRpdiwgJ3RyYW5zaXRpb25lbmQnKTsK
KworICBmbHVzaENvbXB1dGVkU3R5bGUoZGl2KTsKKyAgZGl2LnN0eWxlLm1hcmdpbkxlZnQgPSAn
MjAwcHgnOyAvLyBpbml0aWF0ZSB0cmFuc2l0aW9uCisKKyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5n
ZXRBbmltYXRpb25zKClbMF07CisKKyAgLy8gVW5saWtlIGluIHRoZSBjYXNlIG9mIENTUyBhbmlt
YXRpb25zLCB3ZSBjYW5ub3Qgc2tpcCB0byB0aGUgZW5kIGFuZCBza2lwCisgIC8vIGJhY2t3YXJk
cyBzaW5jZSB3aGVuIHdlIHJlYWNoIHRoZSBlbmQgdGhlIHRyYW5zaXRpb24gZWZmZWN0IGlzIHJl
bW92ZWQgYW5kCisgIC8vIGNoYW5nZXMgdG8gdGhlIEFuaW1hdGlvbiBvYmplY3Qgbm8gbG9uZ2Vy
IGFmZmVjdCB0aGUgZWxlbWVudC4gRm9yCisgIC8vIHRoaXMgcmVhc29uIHdlIG9ubHkgc2tpcCBm
b3J3YXJkcyBhcyBmYXIgYXMgdGhlIDUwJSB0aHJvdWdoIHBvaW50LgorCisgIGFuaW1hdGlvbi5y
ZWFkeS50aGVuKHQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIGFuaW1hdGlvbi5jdXJyZW50
VGltZSA9IGN1cnJlbnRUaW1lRm9yRmlmdHlQZXJjZW50VGhyb3VnaEFjdGl2ZUludGVydmFsKCk7
CisgICAgY2hlY2tTdGF0ZUF0RmlmdHlQY3RPZkFjdGl2ZUludGVydmFsKGFuaW1hdGlvbik7CisK
KyAgICBhbmltYXRpb24uY3VycmVudFRpbWUgPSBjdXJyZW50VGltZUZvclN0YXJ0T2ZBY3RpdmVJ
bnRlcnZhbCgpOworCisgICAgLy8gRGVzcGl0ZSBnb2luZyBiYWNrd2FyZHMgZnJvbSBiZWluZyBp
biB0aGUgYWN0aXZlIGludGVydmFsIHRvIGJlaW5nCisgICAgLy8gYmVmb3JlIGl0LCB3ZSBub3cg
ZXhwZWN0IGEgJ3RyYW5zaXRpb25lbmQnIGV2ZW50IGJlY2F1c2UgdGhlIHRyYW5zaXRpb24KKyAg
ICAvLyBzaG91bGQgZ28gZnJvbSBiZWluZyBhY3RpdmUgdG8gaW5hY3RpdmUuCisgICAgLy8KKyAg
ICAvLyBDYWxsaW5nIGNoZWNrU3RhdGVBdEFjdGl2ZUludGVydmFsU3RhcnRUaW1lIHdpbGwgY2hl
Y2sgY29tcHV0ZWQgc3R5bGUsCisgICAgLy8gY2F1c2luZyBjb21wdXRlZCBzdHlsZSB0byBiZSB1
cGRhdGVkIGFuZCB0aGUgJ3RyYW5zaXRpb25lbmQnIGV2ZW50IHRvCisgICAgLy8gYmUgZGlzcGF0
Y2hlZCBzeW5jaHJvbm91c2x5LiBXZSBuZWVkIHRvIGNhbGwgd2FpdF9mb3IgZmlyc3QKKyAgICAv
LyBvdGhlcndpc2UgZXZlbnRXYXRjaGVyIHdpbGwgYXNzZXJ0IHRoYXQgdGhlIGV2ZW50IHdhcyB1
bmV4cGVjdGVkLgorICAgIGV2ZW50V2F0Y2hlci53YWl0X2ZvcigndHJhbnNpdGlvbmVuZCcpLnRo
ZW4oZnVuY3Rpb24oKSB7CisgICAgICB0LmRvbmUoKTsKKyAgICB9KTsKKyAgICBjaGVja1N0YXRl
QXRBY3RpdmVJbnRlcnZhbFN0YXJ0VGltZShhbmltYXRpb24pOworICB9KSk7Cit9LCAnU2tpcHBp
bmcgYmFja3dhcmRzIHRocm91Z2ggdHJhbnNpdGlvbicpOworCisKK2FzeW5jX3Rlc3QoZnVuY3Rp
b24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsnY2xhc3MnOiAnYW5pbWF0ZWQtZGl2J30p
OworICBmbHVzaENvbXB1dGVkU3R5bGUoZGl2KTsKKyAgZGl2LnN0eWxlLm1hcmdpbkxlZnQgPSAn
MjAwcHgnOyAvLyBpbml0aWF0ZSB0cmFuc2l0aW9uCisKKyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5n
ZXRBbmltYXRpb25zKClbMF07CisKKyAgYW5pbWF0aW9uLnJlYWR5LnRoZW4odC5zdGVwX2Z1bmMo
ZnVuY3Rpb24oKSB7CisgICAgdmFyIGV4Y2VwdGlvbjsKKyAgICB0cnkgeworICAgICAgYW5pbWF0
aW9uLmN1cnJlbnRUaW1lID0gbnVsbDsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICBleGNlcHRp
b24gPSBlOworICAgIH0KKyAgICBhc3NlcnRfZXF1YWxzKGV4Y2VwdGlvbi5uYW1lLCAnVHlwZUVy
cm9yJywKKyAgICAgICdFeHBlY3QgVHlwZUVycm9yIGV4Y2VwdGlvbiBvbiB0cnlpbmcgdG8gc2V0
ICcgKworICAgICAgJ0FuaW1hdGlvbi5jdXJyZW50VGltZSB0byBudWxsJyk7CisgIH0pKS5jYXRj
aCh0LnN0ZXBfZnVuYyhmdW5jdGlvbihyZWFzb24pIHsKKyAgICBhc3NlcnRfdW5yZWFjaGVkKHJl
YXNvbik7CisgIH0pKS50aGVuKGZ1bmN0aW9uKCkgeworICAgIHQuZG9uZSgpOworICB9KTsKK30s
ICdTZXR0aW5nIGN1cnJlbnRUaW1lIHRvIG51bGwnKTsKKworCithc3luY190ZXN0KGZ1bmN0aW9u
KHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7J2NsYXNzJzogJ2FuaW1hdGVkLWRpdid9KTsK
KyAgZmx1c2hDb21wdXRlZFN0eWxlKGRpdik7CisgIGRpdi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzIw
MHB4JzsgLy8gaW5pdGlhdGUgdHJhbnNpdGlvbgorCisgIHZhciBhbmltYXRpb24gPSBkaXYuZ2V0
QW5pbWF0aW9ucygpWzBdOworICB2YXIgcGF1c2VUaW1lOworCisgIGFuaW1hdGlvbi5yZWFkeS50
aGVuKHQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9ub3RfZXF1YWxzKGFuaW1h
dGlvbi5jdXJyZW50VGltZSwgbnVsbCwKKyAgICAgICdBbmltYXRpb24uY3VycmVudFRpbWUgbm90
IG51bGwgb24gcmVhZHkgUHJvbWlzZSByZXNvbHZlJyk7CisgICAgYW5pbWF0aW9uLnBhdXNlKCk7
CisgICAgcmV0dXJuIGFuaW1hdGlvbi5yZWFkeTsKKyAgfSkpLnRoZW4odC5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7CisgICAgcGF1c2VUaW1lID0gYW5pbWF0aW9uLmN1cnJlbnRUaW1lOworICAgIHJl
dHVybiB3YWl0Rm9yRnJhbWUoKTsKKyAgfSkpLnRoZW4odC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
CisgICAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb24uY3VycmVudFRpbWUsIHBhdXNlVGltZSwKKyAg
ICAgICdBbmltYXRpb24uY3VycmVudFRpbWUgaXMgdW5jaGFuZ2VkIGFmdGVyIHBhdXNpbmcnKTsK
KyAgfSkpLmNhdGNoKHQuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlYXNvbikgeworICAgIGFzc2VydF91
bnJlYWNoZWQocmVhc29uKTsKKyAgfSkpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgdC5kb25lKCk7
CisgIH0pOworfSwgJ0FuaW1hdGlvbi5jdXJyZW50VGltZSBhZnRlciBwYXVzaW5nJyk7CisKKyAg
ICA8L3NjcmlwdD4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9hbmltYXRpb24tZmluaXNoZWQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlv
bnMvdGVzdF9hbmltYXRpb24tZmluaXNoZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2ZjRl
OWQ0OGUzODkxMTkzYWQ5NTk5MTBiNjI5ODNmYmI3ODAzZTIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy10cmFuc2l0aW9ucy90ZXN0X2FuaW1hdGlv
bi1maW5pc2hlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgVGVzdCByZXN0
YXJ0aW5nIGEgZmluaXNoZWQgdHJhbnNpdGlvbiAKK0ZBSUwgVGVzdCByZXN0YXJ0aW5nIGEgcmV2
ZXJzZWQgZmluaXNoZWQgdHJhbnNpdGlvbiBhc3NlcnRfZXF1YWxzOiBSZXBsYXlpbmcgYSBmaW5p
c2hlZCByZXZlcnNlZCB0cmFuc2l0aW9uIHNob3VsZCByZXNldCBpdHMgY3VycmVudFRpbWUgdG8g
dGhlIGVuZCBvZiB0aGUgZWZmZWN0IGV4cGVjdGVkIDIwMDAwMDAgYnV0IGdvdCAwCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLXRyYW5zaXRpb25zL3Rlc3Rf
YW5pbWF0aW9uLWZpbmlzaGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nz
cy10cmFuc2l0aW9ucy90ZXN0X2FuaW1hdGlvbi1maW5pc2hlZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFk
OTQ0MjI1M2U1MzU3ZmVkMWM3OTJhODJkZTMyZTZiMDJhNzdhNGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy10cmFuc2l0aW9ucy90ZXN0X2FuaW1h
dGlvbi1maW5pc2hlZC5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzwhZG9jdHlwZSBodG1sPjwhLS0g
d2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlQ1NTQW5pbWF0aW9uc0FuZENTU1RyYW5zaXRpb25z
QmFja2VkQnlXZWJBbmltYXRpb25zPXRydWUgXSAtLT4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0Y29tbW9uLmpzIj48L3Njcmlw
dD4KKzxzdHlsZT4KKworLmFuaW1hdGVkLWRpdiB7CisgIG1hcmdpbi1sZWZ0OiAxMDBweDsKKyAg
dHJhbnNpdGlvbjogbWFyZ2luLWxlZnQgMTAwMHMgbGluZWFyIDEwMDBzOworfQorCis8L3N0eWxl
PgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlwdD4KKworJ3VzZSBzdHJpY3Qn
OworCitjb25zdCBBTklNX0RFTEFZX01TID0gMTAwMDAwMDsgLy8gMTAwMHMKK2NvbnN0IEFOSU1f
RFVSX01TID0gMTAwMDAwMDsgLy8gMTAwMHMKKworYXN5bmNfdGVzdChmdW5jdGlvbih0KSB7Cisg
IHZhciBkaXYgPSBhZGREaXYodCwgeydjbGFzcyc6ICdhbmltYXRlZC1kaXYnfSk7CisgIGZsdXNo
Q29tcHV0ZWRTdHlsZShkaXYpOworICBkaXYuc3R5bGUubWFyZ2luTGVmdCA9ICcyMDBweCc7IC8v
IGluaXRpYXRlIHRyYW5zaXRpb24KKworICB2YXIgYW5pbWF0aW9uID0gZGl2LmdldEFuaW1hdGlv
bnMoKVswXTsKKworICBhbmltYXRpb24uZmluaXNoKCk7CisKKyAgYW5pbWF0aW9uLmZpbmlzaGVk
LnRoZW4odC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgYW5pbWF0aW9uLnBsYXkoKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbi5jdXJyZW50VGltZSwgMCwKKyAgICAgICAgICAgICAg
ICAgICdSZXBsYXlpbmcgYSBmaW5pc2hlZCB0cmFuc2l0aW9uIHNob3VsZCByZXNldCBpdHMgJyAr
CisgICAgICAgICAgICAgICAgICAnY3VycmVudFRpbWUnKTsKKyAgICB0LmRvbmUoKTsKKyAgfSkp
OworfSwgJ1Rlc3QgcmVzdGFydGluZyBhIGZpbmlzaGVkIHRyYW5zaXRpb24nKTsKKworYXN5bmNf
dGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeydjbGFzcyc6ICdhbmlt
YXRlZC1kaXYnfSk7CisgIGZsdXNoQ29tcHV0ZWRTdHlsZShkaXYpOworICBkaXYuc3R5bGUubWFy
Z2luTGVmdCA9ICcyMDBweCc7IC8vIGluaXRpYXRlIHRyYW5zaXRpb24KKworICB2YXIgYW5pbWF0
aW9uID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKworICBhbmltYXRpb24ucmVhZHkudGhlbihm
dW5jdGlvbigpIHsKKyAgICBhbmltYXRpb24ucGxheWJhY2tSYXRlID0gLTE7CisgICAgcmV0dXJu
IGFuaW1hdGlvbi5maW5pc2hlZDsKKyAgfSkudGhlbih0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsK
KyAgICBhbmltYXRpb24ucGxheSgpOworICAgIC8vIEZJWE1FOiBvbmNlIGFuaW1hdGlvbi5lZmZl
Y3QuY29tcHV0ZWRUaW1pbmcuZW5kVGltZSBpcyBhdmFpbGFibGUgKGJ1ZworICAgIC8vIDExMDgw
NTUpIHdlIHNob3VsZCB1c2UgdGhhdCBoZXJlLgorICAgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9u
LmN1cnJlbnRUaW1lLCBBTklNX0RFTEFZX01TICsgQU5JTV9EVVJfTVMsCisgICAgICAgICAgICAg
ICAgICAnUmVwbGF5aW5nIGEgZmluaXNoZWQgcmV2ZXJzZWQgdHJhbnNpdGlvbiBzaG91bGQgcmVz
ZXQgJyArCisgICAgICAgICAgICAgICAgICAnaXRzIGN1cnJlbnRUaW1lIHRvIHRoZSBlbmQgb2Yg
dGhlIGVmZmVjdCcpOworICAgIHQuZG9uZSgpOworICB9KSk7Cit9LCAnVGVzdCByZXN0YXJ0aW5n
IGEgcmV2ZXJzZWQgZmluaXNoZWQgdHJhbnNpdGlvbicpOworCis8L3NjcmlwdD4KKzwvYm9keT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLXRyYW5zaXRpb25z
L3Rlc3RfYW5pbWF0aW9uLXBhdXNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9hbmltYXRpb24tcGF1c2luZy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTcyZTc4NWYyOTg3NjlmM2FiYTQyYTk0MzI5MTIxYTMxZGYxMzI3
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLXRy
YW5zaXRpb25zL3Rlc3RfYW5pbWF0aW9uLXBhdXNpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NCBAQAorQ09OU09MRSBNRVNTQUdFOiBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IEFib3J0
RXJyb3I6IFRoZSBvcGVyYXRpb24gd2FzIGFib3J0ZWQuCisjUElEIFVOUkVTUE9OU0lWRSAtIGNv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudCAocGlkIDEzNTE5KQorRkFJTDog
VGltZWQgb3V0IHdhaXRpbmcgZm9yIG5vdGlmeURvbmUgdG8gYmUgY2FsbGVkCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLXRyYW5zaXRpb25zL3Rlc3RfYW5p
bWF0aW9uLXBhdXNpbmcuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLXRy
YW5zaXRpb25zL3Rlc3RfYW5pbWF0aW9uLXBhdXNpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzQ1MWMw
ZDFjNzljNTE3YTIzYTM3NmM2ZjEwMzk0OTljNTNjNmJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9hbmltYXRpb24t
cGF1c2luZy5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhZG9jdHlwZSBodG1sPjwhLS0gd2Via2l0
LXRlc3QtcnVubmVyIFsgZW5hYmxlQ1NTQW5pbWF0aW9uc0FuZENTU1RyYW5zaXRpb25zQmFja2Vk
QnlXZWJBbmltYXRpb25zPXRydWUgXSAtLT4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0Y29tbW9uLmpzIj48L3NjcmlwdD4KKzxi
b2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7CisKK2Fz
eW5jX3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQpOworICB2YXIgY3Mg
PSBnZXRDb21wdXRlZFN0eWxlKGRpdik7CisKKyAgZGl2LnN0eWxlLm1hcmdpbkxlZnQgPSAnMHB4
JzsKKyAgY3MubWFyZ2luTGVmdDsgLy8gRmx1c2ggc3R5bGUgdG8gc2V0IHVwIHRyYW5zaXRpb24g
c3RhcnQgcG9pbnQKKyAgZGl2LnN0eWxlLnRyYW5zaXRpb24gPSAnbWFyZ2luLWxlZnQgMTAwcyc7
CisgIGRpdi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzEwMDAwcHgnOworICBjcy5tYXJnaW5MZWZ0Owor
CisgIHZhciBhbmltYXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworICB2YXIgcHJldmlv
dXNQcm9ncmVzcyA9IGFuaW1hdGlvbi5lZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5wcm9ncmVz
czsKKyAgYXNzZXJ0X2VxdWFscyhwcmV2aW91c1Byb2dyZXNzLCAwLCAnSW5pdGlhbCB2YWx1ZSBv
ZiBwcm9ncmVzcyBpcyB6ZXJvJyk7CisKKyAgYW5pbWF0aW9uLnJlYWR5LnRoZW4od2FpdEZvck5l
eHRGcmFtZSkudGhlbih0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfZ3JlYXRl
cl90aGFuKGFuaW1hdGlvbi5lZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5wcm9ncmVzcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzUHJvZ3Jlc3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAnSXRlcmF0aW9uIHByb2dyZXNzIGlzIGluaXRpYWxseSBpbmNyZWFzaW5nJyk7Cisg
ICAgYW5pbWF0aW9uLnBhdXNlKCk7CisgICAgcmV0dXJuIGFuaW1hdGlvbi5yZWFkeTsKKyAgfSkp
LnRoZW4odC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgcHJldmlvdXNQcm9ncmVzcyA9IGFu
aW1hdGlvbi5lZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5wcm9ncmVzczsKKyAgICByZXR1cm4g
d2FpdEZvck5leHRGcmFtZSgpOworICB9KSkudGhlbih0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsK
KyAgICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbi5lZmZlY3QuZ2V0Q29tcHV0ZWRUaW1pbmcoKS5w
cm9ncmVzcywKKyAgICAgICAgICAgICAgICAgIHByZXZpb3VzUHJvZ3Jlc3MsCisgICAgICAgICAg
ICAgICAgICAnSXRlcmF0aW9uIHByb2dyZXNzIGRvZXMgbm90IGluY3JlYXNlIGFmdGVyIGNhbGxp
bmcgcGF1c2UoKScpOworICAgIHByZXZpb3VzUHJvZ3Jlc3MgPSBhbmltYXRpb24uZWZmZWN0Lmdl
dENvbXB1dGVkVGltaW5nKCkucHJvZ3Jlc3M7CisgICAgYW5pbWF0aW9uLnBsYXkoKTsKKyAgICBy
ZXR1cm4gYW5pbWF0aW9uLnJlYWR5LnRoZW4od2FpdEZvck5leHRGcmFtZSk7CisgIH0pKS50aGVu
KHQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9ncmVhdGVyX3RoYW4oYW5pbWF0
aW9uLmVmZmVjdC5nZXRDb21wdXRlZFRpbWluZygpLnByb2dyZXNzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgcHJldmlvdXNQcm9ncmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICdJdGVy
YXRpb24gcHJvZ3Jlc3MgaW5jcmVhc2VzIGFmdGVyIGNhbGxpbmcgcGxheSgpJyk7CisgICAgdC5k
b25lKCk7CisgIH0pKTsKK30sICdwYXVzZSgpIGFuZCBwbGF5KCkgYSB0cmFuc2l0aW9uJyk7CisK
Kzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9hbmltYXRpb24tcmVhZHktZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9hbmltYXRp
b24tcmVhZHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjZmE5NGVkY2I2NDA4NDM1MTgwZjBh
YjU0NWIyNDdiOTc2MWZjZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC9tb3ppbGxhL2Nzcy10cmFuc2l0aW9ucy90ZXN0X2FuaW1hdGlvbi1yZWFkeS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw1IEBACisKK1BBU1MgQSBuZXcgcmVhZHkgcHJvbWlzZSBpcyBjcmVhdGVk
IGVhY2ggdGltZSBwbGF5KCkgaXMgY2FsbGVkIHRoZSBhbmltYXRpb24gcHJvcGVydHkgCitGQUlM
IHJlYWR5IHByb21pc2UgaXMgcmVqZWN0ZWQgd2hlbiBhIHRyYW5zaXRpb24gaXMgY2FuY2VsbGVk
IGJ5IHVwZGF0aW5nIHRyYW5zaXRpb24tcHJvcGVydHkgYXNzZXJ0X2VxdWFsczogQW5pbWF0aW9u
IGlzIGlkbGUgYWZ0ZXIgdHJhbnNpdGlvbiB3YXMgY2FuY2VsbGVkIGV4cGVjdGVkICJpZGxlIiBi
dXQgZ290ICJwYXVzZWQiCitGQUlMIHJlYWR5IHByb21pc2UgaXMgcmVqZWN0ZWQgd2hlbiBhIHRy
YW5zaXRpb24gaXMgY2FuY2VsbGVkIGJ5IGNoYW5naW5nIHRoZSB0cmFuc2l0aW9uIHByb3BlcnR5
IHRvIHNvbWV0aGluZyBub3QgaW50ZXJwb2xhYmxlIGFzc2VydF9lcXVhbHM6IEFuaW1hdGlvbiBp
cyBpZGxlIGFmdGVyIHRyYW5zaXRpb24gd2FzIGNhbmNlbGxlZCBleHBlY3RlZCAiaWRsZSIgYnV0
IGdvdCAicGF1c2VkIgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L2Nzcy10cmFuc2l0aW9ucy90ZXN0X2FuaW1hdGlvbi1yZWFkeS5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9hbmltYXRpb24tcmVhZHkuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZjlhOWU2YzQ0MGU5NjZlN2ViMzYzNjE0ZmZhYTc3Y2MzNDc0MDVhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNp
dGlvbnMvdGVzdF9hbmltYXRpb24tcmVhZHkuaHRtbApAQCAtMCwwICsxLDk4IEBACis8IWRvY3R5
cGUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUNTU0FuaW1hdGlvbnNBbmRD
U1NUcmFuc2l0aW9uc0JhY2tlZEJ5V2ViQW5pbWF0aW9ucz10cnVlIF0gLS0+Cis8bWV0YSBjaGFy
c2V0PXV0Zi04PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGNvbW1v
bi5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0Pgor
J3VzZSBzdHJpY3QnOworCithc3luY190ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFk
ZERpdih0KTsKKyAgZGl2LnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoMHB4KSc7CisgIGdl
dENvbXB1dGVkU3R5bGUoZGl2KS50cmFuc2Zvcm07CisgIGRpdi5zdHlsZS50cmFuc2l0aW9uID0g
J3RyYW5zZm9ybSAxMDBzJzsKKyAgZGl2LnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoMTBw
eCknOworICBnZXRDb21wdXRlZFN0eWxlKGRpdikudHJhbnNmb3JtOworCisgIHZhciBhbmltYXRp
b24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworICB2YXIgb3JpZ2luYWxSZWFkeVByb21pc2Ug
PSBhbmltYXRpb24ucmVhZHk7CisKKyAgYW5pbWF0aW9uLnJlYWR5LnRoZW4odC5zdGVwX2Z1bmMo
ZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb24ucmVhZHksIG9yaWdpbmFs
UmVhZHlQcm9taXNlLAorICAgICAgICAgICAgICAgICAgJ1JlYWR5IHByb21pc2UgaXMgdGhlIHNh
bWUgb2JqZWN0IHdoZW4gcGxheWluZyBjb21wbGV0ZXMnKTsKKyAgICBhbmltYXRpb24ucGF1c2Uo
KTsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhhbmltYXRpb24ucmVhZHksIG9yaWdpbmFsUmVhZHlQ
cm9taXNlLAorICAgICAgICAgICAgICAgICAgICAgICdSZWFkeSBwcm9taXNlIG9iamVjdCBpZGVu
dGl0eSBkaWZmZXJzIHdoZW4gcGF1c2luZycpOworICAgIHQuZG9uZSgpOworICB9KSk7Cit9LCAn
QSBuZXcgcmVhZHkgcHJvbWlzZSBpcyBjcmVhdGVkIGVhY2ggdGltZSBwbGF5KCkgaXMgY2FsbGVk
JworICAgKyAnIHRoZSBhbmltYXRpb24gcHJvcGVydHknKTsKKworYXN5bmNfdGVzdChmdW5jdGlv
bih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCk7CisKKyAgLy8gU2V0IHVwIHBlbmRpbmcgdHJh
bnNpdGlvbgorICBkaXYuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZSgwcHgpJzsKKyAgZ2V0
Q29tcHV0ZWRTdHlsZShkaXYpLnRyYW5zZm9ybTsKKyAgZGl2LnN0eWxlLnRyYW5zaXRpb24gPSAn
dHJhbnNmb3JtIDEwMHMnOworICBkaXYuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZSgxMHB4
KSc7CisgIGdldENvbXB1dGVkU3R5bGUoZGl2KS50cmFuc2Zvcm07CisKKyAgdmFyIGFuaW1hdGlv
biA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisgIGFzc2VydF90cnVlKGFuaW1hdGlvbi5wZW5k
aW5nLCAnQW5pbWF0aW9uIGlzIGluaXRpYWxseSBwZW5kaW5nJyk7CisKKyAgLy8gU2V0IHVwIGxp
c3RlbmVycyBvbiByZWFkeSBwcm9taXNlCisgIGFuaW1hdGlvbi5yZWFkeS50aGVuKHQuc3RlcF9m
dW5jKGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF91bnJlYWNoZWQoJ3JlYWR5IHByb21pc2Ugd2Fz
IGZ1bGZpbGxlZCcpOworICB9KSkuY2F0Y2godC5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJyKSB7Cisg
ICAgYXNzZXJ0X2VxdWFscyhlcnIubmFtZSwgJ0Fib3J0RXJyb3InLAorICAgICAgICAgICAgICAg
ICAgJ3JlYWR5IHByb21pc2UgaXMgcmVqZWN0ZWQgd2l0aCBBYm9ydEVycm9yJyk7CisgICAgYXNz
ZXJ0X2VxdWFscyhhbmltYXRpb24ucGxheVN0YXRlLCAnaWRsZScsCisgICAgICAgICAgICAgICAg
ICAnQW5pbWF0aW9uIGlzIGlkbGUgYWZ0ZXIgdHJhbnNpdGlvbiB3YXMgY2FuY2VsbGVkJyk7Cisg
IH0pKS50aGVuKHQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIHQuZG9uZSgpOworICB9KSk7
CisKKyAgLy8gTm93IHJlbW92ZSB0cmFuc2Zvcm0gZnJvbSB0cmFuc2l0aW9uLXByb3BlcnR5IGFu
ZCBmbHVzaCBzdHlsZXMKKyAgZGl2LnN0eWxlLnRyYW5zaXRpb25Qcm9wZXJ0eSA9ICdub25lJzsK
KyAgZ2V0Q29tcHV0ZWRTdHlsZShkaXYpLnRyYW5zaXRpb25Qcm9wZXJ0eTsKKworfSwgJ3JlYWR5
IHByb21pc2UgaXMgcmVqZWN0ZWQgd2hlbiBhIHRyYW5zaXRpb24gaXMgY2FuY2VsbGVkIGJ5IHVw
ZGF0aW5nJworICAgKyAnIHRyYW5zaXRpb24tcHJvcGVydHknKTsKKworYXN5bmNfdGVzdChmdW5j
dGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCk7CisKKyAgLy8gU2V0IHVwIHBlbmRpbmcg
dHJhbnNpdGlvbgorICBkaXYuc3R5bGUubWFyZ2luTGVmdCA9ICcwcHgnOworICBnZXRDb21wdXRl
ZFN0eWxlKGRpdikubWFyZ2luTGVmdDsKKyAgZGl2LnN0eWxlLnRyYW5zaXRpb24gPSAnbWFyZ2lu
LWxlZnQgMTAwcyc7CisgIGRpdi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzEwMHB4JzsKKyAgZ2V0Q29t
cHV0ZWRTdHlsZShkaXYpLm1hcmdpbkxlZnQ7CisKKyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRB
bmltYXRpb25zKClbMF07CisgIGFzc2VydF90cnVlKGFuaW1hdGlvbi5wZW5kaW5nLCAnQW5pbWF0
aW9uIGlzIGluaXRpYWxseSBwZW5kaW5nJyk7CisKKyAgLy8gU2V0IHVwIGxpc3RlbmVycyBvbiBy
ZWFkeSBwcm9taXNlCisgIGFuaW1hdGlvbi5yZWFkeS50aGVuKHQuc3RlcF9mdW5jKGZ1bmN0aW9u
KCkgeworICAgIGFzc2VydF91bnJlYWNoZWQoJ3JlYWR5IHByb21pc2Ugd2FzIGZ1bGZpbGxlZCcp
OworICB9KSkuY2F0Y2godC5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJyKSB7CisgICAgYXNzZXJ0X2Vx
dWFscyhlcnIubmFtZSwgJ0Fib3J0RXJyb3InLAorICAgICAgICAgICAgICAgICAgJ3JlYWR5IHBy
b21pc2UgaXMgcmVqZWN0ZWQgd2l0aCBBYm9ydEVycm9yJyk7CisgICAgYXNzZXJ0X2VxdWFscyhh
bmltYXRpb24ucGxheVN0YXRlLCAnaWRsZScsCisgICAgICAgICAgICAgICAgICAnQW5pbWF0aW9u
IGlzIGlkbGUgYWZ0ZXIgdHJhbnNpdGlvbiB3YXMgY2FuY2VsbGVkJyk7CisgIH0pKS50aGVuKHQu
c3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgIHQuZG9uZSgpOworICB9KSk7CisKKyAgLy8gTm93
IHVwZGF0ZSB0aGUgdHJhbnNpdGlvbiB0byBhbmltYXRlIHRvIHNvbWV0aGluZyBub3QtaW50ZXJw
b2xhYmxlCisgIGRpdi5zdHlsZS5tYXJnaW5MZWZ0ID0gJ2F1dG8nOworICBnZXRDb21wdXRlZFN0
eWxlKGRpdikubWFyZ2luTGVmdDsKKworfSwgJ3JlYWR5IHByb21pc2UgaXMgcmVqZWN0ZWQgd2hl
biBhIHRyYW5zaXRpb24gaXMgY2FuY2VsbGVkIGJ5IGNoYW5naW5nJworICAgKyAnIHRoZSB0cmFu
c2l0aW9uIHByb3BlcnR5IHRvIHNvbWV0aGluZyBub3QgaW50ZXJwb2xhYmxlJyk7CisKKzwvc2Ny
aXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9j
c3MtdHJhbnNpdGlvbnMvdGVzdF9hbmltYXRpb24tc3RhcnR0aW1lLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLXRyYW5zaXRpb25zL3Rlc3RfYW5pbWF0aW9u
LXN0YXJ0dGltZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRkZGIwNmExNWQzMjZmZTY0MTMy
Zjg1YmUyNTk3Yjg0YTM5ZDBmNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL21vemlsbGEvY3NzLXRyYW5zaXRpb25zL3Rlc3RfYW5pbWF0aW9uLXN0YXJ0dGltZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw4IEBACisKK1BBU1Mgc3RhcnRUaW1lIG9mIGEgbmV3bHkgY3Jl
YXRlZCB0cmFuc2l0aW9uIGlzIHVucmVzb2x2ZWQgCitQQVNTIFNhbml0eSB0ZXN0IHRvIGNoZWNr
IHJvdW5kLXRyaXBwaW5nIGFzc2lnbmluZyB0byBuZXcgYW5pbWF0aW9uJ3Mgc3RhcnRUaW1lIAor
RkFJTCBTa2lwcGluZyBmb3J3YXJkIHRocm91Z2ggYW5pbWF0aW9uIGFzc2VydF9lcXVhbHM6IEFu
aW1hdGlvbi5wbGF5U3RhdGUgc2hvdWxkIGJlICJydW5uaW5nIiBvbiB0aGUgZmlyc3QgcGFpbnQg
dGljayBhZnRlciBhbmltYXRpb24gY3JlYXRpb24gZXhwZWN0ZWQgInJ1bm5pbmciIGJ1dCBnb3Qg
ImZpbmlzaGVkIgorRkFJTCBTa2lwcGluZyBiYWNrd2FyZHMgdGhyb3VnaCB0cmFuc2l0aW9uIGFz
c2VydF9lcXVhbHM6IHRoZSBjb21wdXRlZCB2YWx1ZSBvZiBtYXJnaW4tbGVmdCBzaG91bGQgYmUg
aGFsZiB3YXkgdGhyb3VnaCB0aGUgYW5pbWF0aW9uIGF0IHRoZSBtaWRwb2ludCBvZiB0aGUgYWN0
aXZlIGludGVydmFsIGV4cGVjdGVkIDE1MCBidXQgZ290IDIwMAorUEFTUyBTZXR0aW5nIHN0YXJ0
VGltZSB0byBudWxsIAorUEFTUyBBbmltYXRpb24uc3RhcnRUaW1lIGFmdGVyIHBhdXNlZCAKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMv
dGVzdF9hbmltYXRpb24tc3RhcnR0aW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL2Nzcy10cmFuc2l0aW9ucy90ZXN0X2FuaW1hdGlvbi1zdGFydHRpbWUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zOGM5YWE5ZTU2NGI0MjVjNmZlMWRjNWZmMGVhY2NlYmE2MTRkOTczCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVz
dF9hbmltYXRpb24tc3RhcnR0aW1lLmh0bWwKQEAgLTAsMCArMSwyODYgQEAKKzwhZG9jdHlwZSBo
dG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlQ1NTQW5pbWF0aW9uc0FuZENTU1Ry
YW5zaXRpb25zQmFja2VkQnlXZWJBbmltYXRpb25zPXRydWUgXSAtLT4KKzxodG1sPgorICA8aGVh
ZD4KKyAgICA8bWV0YSBjaGFyc2V0PXV0Zi04PgorICAgIDx0aXRsZT5UZXN0cyBmb3IgdGhlIGVm
ZmVjdCBvZiBzZXR0aW5nIGEgQ1NTIHRyYW5zaXRpb24ncworICAgICAgICAgICBBbmltYXRpb24u
c3RhcnRUaW1lPC90aXRsZT4KKyAgICA8c3R5bGU+CisKKy5hbmltYXRlZC1kaXYgeworICBtYXJn
aW4tbGVmdDogMTAwcHg7CisgIHRyYW5zaXRpb246IG1hcmdpbi1sZWZ0IDEwMDBzIGxpbmVhciAx
MDAwczsKK30KKworICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy90ZXN0Y29tbW9uLmpzIj48L3NjcmlwdD4KKyAgPC9oZWFkPgorICA8
Ym9keT4KKyAgICA8ZGl2IGlkPSJsb2ciPjwvZGl2PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKworJ3VzZSBzdHJpY3QnOworCisvLyBUT0RPOiBPbmNlIHRoZSBjb21wdXRl
ZFRpbWluZyBwcm9wZXJ0eSBpcyBpbXBsZW1lbnRlZCwgYWRkIGNoZWNrcyB0byB0aGUKKy8vIGNo
ZWNrZXIgaGVscGVycyB0byBlbnN1cmUgdGhhdCBjb21wdXRlZFRpbWluZydzIHByb3BlcnRpZXMg
YXJlIHVwZGF0ZWQgYXMKKy8vIGV4cGVjdGVkLgorLy8gU2VlIGh0dHBzOi8vYnVnemlsbGEubW96
aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTExMDgwNTUKKworCitjb25zdCBBTklNX0RFTEFZX01T
ID0gMTAwMDAwMDsgLy8gMTAwMHMKK2NvbnN0IEFOSU1fRFVSX01TID0gMTAwMDAwMDsgLy8gMTAw
MHMKKworLyoqCisgKiBUaGVzZSBoZWxwZXJzIGdldCB0aGUgdmFsdWUgdGhhdCB0aGUgc3RhcnRU
aW1lIG5lZWRzIHRvIGJlIHNldCB0bywgdG8gcHV0IGFuCisgKiBhbmltYXRpb24gdGhhdCB1c2Vz
IHRoZSBhYm92ZSBBTklNX0RFTEFZX01TIGFuZCBBTklNX0RVUl9NUyB2YWx1ZXMgaW50byB0aGUK
KyAqIG1pZGRsZSBvZiB2YXJpb3VzIHBoYXNlcyBvciBwb2ludHMgdGhyb3VnaCB0aGUgYWN0aXZl
IGR1cmF0aW9uLgorICovCitmdW5jdGlvbiBzdGFydFRpbWVGb3JCZWZvcmVQaGFzZSh0aW1lbGlu
ZSkgeworICByZXR1cm4gdGltZWxpbmUuY3VycmVudFRpbWUgLSBBTklNX0RFTEFZX01TIC8gMjsK
K30KK2Z1bmN0aW9uIHN0YXJ0VGltZUZvckFjdGl2ZVBoYXNlKHRpbWVsaW5lKSB7CisgIHJldHVy
biB0aW1lbGluZS5jdXJyZW50VGltZSAtIEFOSU1fREVMQVlfTVMgLSBBTklNX0RVUl9NUyAvIDI7
Cit9CitmdW5jdGlvbiBzdGFydFRpbWVGb3JBZnRlclBoYXNlKHRpbWVsaW5lKSB7CisgIHJldHVy
biB0aW1lbGluZS5jdXJyZW50VGltZSAtIEFOSU1fREVMQVlfTVMgLSBBTklNX0RVUl9NUyAtIEFO
SU1fREVMQVlfTVMgLyAyOworfQorZnVuY3Rpb24gc3RhcnRUaW1lRm9yU3RhcnRPZkFjdGl2ZUlu
dGVydmFsKHRpbWVsaW5lKSB7CisgIHJldHVybiB0aW1lbGluZS5jdXJyZW50VGltZSAtIEFOSU1f
REVMQVlfTVM7Cit9CitmdW5jdGlvbiBzdGFydFRpbWVGb3JGaWZ0eVBlcmNlbnRUaHJvdWdoQWN0
aXZlSW50ZXJ2YWwodGltZWxpbmUpIHsKKyAgcmV0dXJuIHRpbWVsaW5lLmN1cnJlbnRUaW1lIC0g
QU5JTV9ERUxBWV9NUyAtIEFOSU1fRFVSX01TICogMC41OworfQorZnVuY3Rpb24gc3RhcnRUaW1l
Rm9yRW5kT2ZBY3RpdmVJbnRlcnZhbCh0aW1lbGluZSkgeworICByZXR1cm4gdGltZWxpbmUuY3Vy
cmVudFRpbWUgLSBBTklNX0RFTEFZX01TIC0gQU5JTV9EVVJfTVM7Cit9CisKKworLy8gRXhwZWN0
ZWQgY29tcHV0ZWQgJ21hcmdpbi1sZWZ0JyB2YWx1ZXMgYXQgcG9pbnRzIGR1cmluZyB0aGUgYWN0
aXZlIGludGVydmFsOgorLy8gV2hlbiB3ZSBhc3NlcnRfYmV0d2Vlbl9pbmNsdXNpdmUgdXNpbmcg
dGhlc2UgdmFsdWVzIHdlIGNvdWxkIGluIHRoZW9yeSBjYXVzZQorLy8gaW50ZXJtaXR0ZW50IGZh
aWx1cmUgZHVlIHRvIHZlcnkgbG9uZyBkZWxheXMgYmV0d2VlbiBwYWludHMsIGJ1dCBzaW5jZSB0
aGUKKy8vIGFjdGl2ZSBkdXJhdGlvbiBpcyAxMDAwcyBsb25nLCBhIGRlbGF5IHdvdWxkIG5lZWQg
dG8gYmUgYXJvdW5kIDEwMHMgdG8gY2F1c2UKKy8vIHRoYXQuIElmIHRoYXQncyBoYXBwZW5pbmcg
dGhlbiB0aGVyZSBhcmUgbGlrZWx5IG90aGVyIGlzc3VlcyB0aGF0IHNob3VsZCBiZQorLy8gZml4
ZWQsIHNvIGEgZmFpbHVyZSB0byBtYWtlIHVzIGxvb2sgaW50byB0aGF0IHNlZW1zIGxpa2UgYSBn
b29kIHRoaW5nLgorY29uc3QgSU5JVElBTF9QT1NJVElPTiA9IDEwMDsKK2NvbnN0IFRFTl9QQ1Rf
UE9TSVRJT04gPSAxMTA7Citjb25zdCBGSUZUWV9QQ1RfUE9TSVRJT04gPSAxNTA7Citjb25zdCBF
TkRfUE9TSVRJT04gPSAyMDA7CisKKy8vIFRoZSB0ZXJtcyB1c2VkIGZvciB0aGUgbmFtaW5nIG9m
IHRoZSBmb2xsb3dpbmcgaGVscGVyIGZ1bmN0aW9ucyByZWZlciB0bworLy8gdGVybXMgdXNlZCBp
biB0aGUgV2ViIEFuaW1hdGlvbnMgc3BlY2lmaWNhdGlvbiBmb3Igc3BlY2lmaWMgcGhhc2VzIG9m
IGFuCisvLyBhbmltYXRpb24uIFRoZSB0ZXJtcyBjYW4gYmUgZm91bmQgaGVyZToKKy8vCisvLyAg
IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy8jYW5pbWF0aW9uLWVmZmVj
dC1waGFzZXMtYW5kLXN0YXRlcworLy8KKy8vIE5vdGUgdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4g
dGhlICJhbmltYXRpb24gc3RhcnQgdGltZSIgd2hpY2ggb2NjdXJzIGJlZm9yZQorLy8gdGhlIHN0
YXJ0IGRlbGF5IGFuZCB0aGUgc3RhcnQgb2YgdGhlIGFjdGl2ZSBpbnRlcnZhbCB3aGljaCBvY2N1
cnMgYWZ0ZXIgaXQuCisKKy8vIENhbGxlZCB3aGVuIHRoZSByZWFkeSBQcm9taXNlJ3MgY2FsbGJh
Y2tzIHNob3VsZCBoYXBwZW4KK2Z1bmN0aW9uIGNoZWNrU3RhdGVPblJlYWR5UHJvbWlzZVJlc29s
dmVkKGFuaW1hdGlvbikKK3sKKyAgYXNzZXJ0X2xlc3NfdGhhbl9lcXVhbChhbmltYXRpb24uc3Rh
cnRUaW1lLCBhbmltYXRpb24udGltZWxpbmUuY3VycmVudFRpbWUsCisgICAgJ0FuaW1hdGlvbi5z
dGFydFRpbWUgc2hvdWxkIGJlIGxlc3MgdGhhbiB0aGUgdGltZWxpbmVcJ3MgJyArCisgICAgJ2N1
cnJlbnRUaW1lIG9uIHRoZSBmaXJzdCBwYWludCB0aWNrIGFmdGVyIGFuaW1hdGlvbiBjcmVhdGlv
bicpOworCisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uLnBsYXlTdGF0ZSwgJ3J1bm5pbmcnLAor
ICAgICdBbmltYXRpb24ucGxheVN0YXRlIHNob3VsZCBiZSAicnVubmluZyIgb24gdGhlIGZpcnN0
IHBhaW50ICcgKworICAgICd0aWNrIGFmdGVyIGFuaW1hdGlvbiBjcmVhdGlvbicpOworCisgIHZh
ciBkaXYgPSBhbmltYXRpb24uZWZmZWN0LnRhcmdldDsKKyAgdmFyIG1hcmdpbkxlZnQgPSBwYXJz
ZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZGl2KS5tYXJnaW5MZWZ0KTsKKyAgYXNzZXJ0X2VxdWFs
cyhtYXJnaW5MZWZ0LCBJTklUSUFMX1BPU0lUSU9OLAorICAgICAgICAgICAgICAgICd0aGUgY29t
cHV0ZWQgdmFsdWUgb2YgbWFyZ2luLWxlZnQgc2hvdWxkIGJlIHVuYWZmZWN0ZWQgJyArCisgICAg
ICAgICAgICAgICAgJ2J5IGFuIGFuaW1hdGlvbiB3aXRoIGEgZGVsYXkgb24gcmVhZHkgUHJvbWlz
ZSByZXNvbHZlJyk7Cit9CisKKy8vIENhbGxlZCB3aGVuIHN0YXJ0VGltZSBpcyBzZXQgdG8gdGhl
IHRpbWUgdGhlIGFjdGl2ZSBpbnRlcnZhbCBzdGFydHMuCitmdW5jdGlvbiBjaGVja1N0YXRlQXRB
Y3RpdmVJbnRlcnZhbFN0YXJ0VGltZShhbmltYXRpb24pCit7CisgIC8vIFdlIGRvbid0IHRlc3Qg
YW5pbWF0aW9uLnN0YXJ0VGltZSBzaW5jZSBvdXIgY2FsbGVyIGp1c3Qgc2V0IGl0LgorCisgIGFz
c2VydF9lcXVhbHMoYW5pbWF0aW9uLnBsYXlTdGF0ZSwgJ3J1bm5pbmcnLAorICAgICdBbmltYXRp
b24ucGxheVN0YXRlIHNob3VsZCBiZSAicnVubmluZyIgYXQgdGhlIHN0YXJ0IG9mICcgKworICAg
ICd0aGUgYWN0aXZlIGludGVydmFsJyk7CisKKyAgdmFyIGRpdiA9IGFuaW1hdGlvbi5lZmZlY3Qu
dGFyZ2V0OworICB2YXIgbWFyZ2luTGVmdCA9IHBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZShk
aXYpLm1hcmdpbkxlZnQpOworICBhc3NlcnRfYmV0d2Vlbl9pbmNsdXNpdmUobWFyZ2luTGVmdCwg
SU5JVElBTF9QT1NJVElPTiwgVEVOX1BDVF9QT1NJVElPTiwKKyAgICAndGhlIGNvbXB1dGVkIHZh
bHVlIG9mIG1hcmdpbi1sZWZ0IHNob3VsZCBiZSBjbG9zZSB0byB0aGUgdmFsdWUgYXQgdGhlICcg
KworICAgICdiZWdpbm5pbmcgb2YgdGhlIGFuaW1hdGlvbicpOworfQorCitmdW5jdGlvbiBjaGVj
a1N0YXRlQXRGaWZ0eVBjdE9mQWN0aXZlSW50ZXJ2YWwoYW5pbWF0aW9uKQoreworICAvLyBXZSBk
b24ndCB0ZXN0IGFuaW1hdGlvbi5zdGFydFRpbWUgc2luY2Ugb3VyIGNhbGxlciBqdXN0IHNldCBp
dC4KKworICB2YXIgZGl2ID0gYW5pbWF0aW9uLmVmZmVjdC50YXJnZXQ7CisgIHZhciBtYXJnaW5M
ZWZ0ID0gcGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKGRpdikubWFyZ2luTGVmdCk7CisgIGFz
c2VydF9lcXVhbHMobWFyZ2luTGVmdCwgRklGVFlfUENUX1BPU0lUSU9OLAorICAgICd0aGUgY29t
cHV0ZWQgdmFsdWUgb2YgbWFyZ2luLWxlZnQgc2hvdWxkIGJlIGhhbGYgd2F5IHRocm91Z2ggdGhl
ICcgKworICAgICdhbmltYXRpb24gYXQgdGhlIG1pZHBvaW50IG9mIHRoZSBhY3RpdmUgaW50ZXJ2
YWwnKTsKK30KKworLy8gQ2FsbGVkIHdoZW4gc3RhcnRUaW1lIGlzIHNldCB0byB0aGUgdGltZSB0
aGUgYWN0aXZlIGludGVydmFsIGVuZHMuCitmdW5jdGlvbiBjaGVja1N0YXRlQXRBY3RpdmVJbnRl
cnZhbEVuZFRpbWUoYW5pbWF0aW9uKQoreworICAvLyBXZSBkb24ndCB0ZXN0IGFuaW1hdGlvbi5z
dGFydFRpbWUgc2luY2Ugb3VyIGNhbGxlciBqdXN0IHNldCBpdC4KKworICBhc3NlcnRfZXF1YWxz
KGFuaW1hdGlvbi5wbGF5U3RhdGUsICdmaW5pc2hlZCcsCisgICAgJ0FuaW1hdGlvbi5wbGF5U3Rh
dGUgc2hvdWxkIGJlICJmaW5pc2hlZCIgYXQgdGhlIGVuZCBvZiAnICsKKyAgICAndGhlIGFjdGl2
ZSBpbnRlcnZhbCcpOworCisgIHZhciBkaXYgPSBhbmltYXRpb24uZWZmZWN0LnRhcmdldDsKKyAg
dmFyIG1hcmdpbkxlZnQgPSBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZGl2KS5tYXJnaW5M
ZWZ0KTsKKyAgYXNzZXJ0X2VxdWFscyhtYXJnaW5MZWZ0LCBFTkRfUE9TSVRJT04sCisgICAgJ3Ro
ZSBjb21wdXRlZCB2YWx1ZSBvZiBtYXJnaW4tbGVmdCBzaG91bGQgYmUgdGhlIGZpbmFsIHRyYW5z
aXRpb25lZC10byAnICsKKyAgICAndmFsdWUgYXQgdGhlIGVuZCBvZiB0aGUgYWN0aXZlIGR1cmF0
aW9uJyk7Cit9CisKK3Rlc3QoZnVuY3Rpb24odCkKK3sKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7
J2NsYXNzJzogJ2FuaW1hdGVkLWRpdid9KTsKKyAgZmx1c2hDb21wdXRlZFN0eWxlKGRpdik7Cisg
IGRpdi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzIwMHB4JzsgLy8gaW5pdGlhdGUgdHJhbnNpdGlvbgor
CisgIHZhciBhbmltYXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworICBhc3NlcnRfZXF1
YWxzKGFuaW1hdGlvbi5zdGFydFRpbWUsIG51bGwsICdzdGFydFRpbWUgaXMgdW5yZXNvbHZlZCcp
OworfSwgJ3N0YXJ0VGltZSBvZiBhIG5ld2x5IGNyZWF0ZWQgdHJhbnNpdGlvbiBpcyB1bnJlc29s
dmVkJyk7CisKKwordGVzdChmdW5jdGlvbih0KQoreworICB2YXIgZGl2ID0gYWRkRGl2KHQsIHsn
Y2xhc3MnOiAnYW5pbWF0ZWQtZGl2J30pOworICBmbHVzaENvbXB1dGVkU3R5bGUoZGl2KTsKKyAg
ZGl2LnN0eWxlLm1hcmdpbkxlZnQgPSAnMjAwcHgnOyAvLyBpbml0aWF0ZSB0cmFuc2l0aW9uCisK
KyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisgIHZhciBjdXJyZW50
VGltZSA9IGFuaW1hdGlvbi50aW1lbGluZS5jdXJyZW50VGltZTsKKyAgYW5pbWF0aW9uLnN0YXJ0
VGltZSA9IGN1cnJlbnRUaW1lOworICBhc3NlcnRfdGltZXNfZXF1YWwoYW5pbWF0aW9uLnN0YXJ0
VGltZSwgY3VycmVudFRpbWUsCisgICAgJ0NoZWNrIHNldHRpbmcgb2Ygc3RhcnRUaW1lIGFjdHVh
bGx5IHdvcmtzJyk7Cit9LCAnU2FuaXR5IHRlc3QgdG8gY2hlY2sgcm91bmQtdHJpcHBpbmcgYXNz
aWduaW5nIHRvIG5ldyBhbmltYXRpb25cJ3MgJyArCisgICAnc3RhcnRUaW1lJyk7CisKKworYXN5
bmNfdGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeydjbGFzcyc6ICdh
bmltYXRlZC1kaXYnfSk7CisgIHZhciBldmVudFdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVyKHQs
IGRpdiwgJ3RyYW5zaXRpb25lbmQnKTsKKworICBmbHVzaENvbXB1dGVkU3R5bGUoZGl2KTsKKyAg
ZGl2LnN0eWxlLm1hcmdpbkxlZnQgPSAnMjAwcHgnOyAvLyBpbml0aWF0ZSB0cmFuc2l0aW9uCisK
KyAgdmFyIGFuaW1hdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisKKyAgYW5pbWF0aW9u
LnJlYWR5LnRoZW4odC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgY2hlY2tTdGF0ZU9uUmVh
ZHlQcm9taXNlUmVzb2x2ZWQoYW5pbWF0aW9uKTsKKworICAgIGFuaW1hdGlvbi5zdGFydFRpbWUg
PSBzdGFydFRpbWVGb3JTdGFydE9mQWN0aXZlSW50ZXJ2YWwoYW5pbWF0aW9uLnRpbWVsaW5lKTsK
KyAgICBjaGVja1N0YXRlQXRBY3RpdmVJbnRlcnZhbFN0YXJ0VGltZShhbmltYXRpb24pOworCisg
ICAgYW5pbWF0aW9uLnN0YXJ0VGltZSA9CisgICAgICBzdGFydFRpbWVGb3JGaWZ0eVBlcmNlbnRU
aHJvdWdoQWN0aXZlSW50ZXJ2YWwoYW5pbWF0aW9uLnRpbWVsaW5lKTsKKyAgICBjaGVja1N0YXRl
QXRGaWZ0eVBjdE9mQWN0aXZlSW50ZXJ2YWwoYW5pbWF0aW9uKTsKKworICAgIGFuaW1hdGlvbi5z
dGFydFRpbWUgPSBzdGFydFRpbWVGb3JFbmRPZkFjdGl2ZUludGVydmFsKGFuaW1hdGlvbi50aW1l
bGluZSk7CisgICAgcmV0dXJuIGV2ZW50V2F0Y2hlci53YWl0X2ZvcigndHJhbnNpdGlvbmVuZCcp
OworICB9KSkudGhlbih0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICBjaGVja1N0YXRlQXRB
Y3RpdmVJbnRlcnZhbEVuZFRpbWUoYW5pbWF0aW9uKTsKKyAgfSkpLmNhdGNoKHQuc3RlcF9mdW5j
KGZ1bmN0aW9uKHJlYXNvbikgeworICAgIGFzc2VydF91bnJlYWNoZWQocmVhc29uKTsKKyAgfSkp
LnRoZW4oZnVuY3Rpb24oKSB7CisgICAgdC5kb25lKCk7CisgIH0pOworfSwgJ1NraXBwaW5nIGZv
cndhcmQgdGhyb3VnaCBhbmltYXRpb24nKTsKKworCit0ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFy
IGRpdiA9IGFkZERpdih0LCB7J2NsYXNzJzogJ2FuaW1hdGVkLWRpdid9KTsKKyAgdmFyIGV2ZW50
V2F0Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIodCwgZGl2LCAndHJhbnNpdGlvbmVuZCcpOworCisg
IGZsdXNoQ29tcHV0ZWRTdHlsZShkaXYpOworICBkaXYuc3R5bGUubWFyZ2luTGVmdCA9ICcyMDBw
eCc7IC8vIGluaXRpYXRlIHRyYW5zaXRpb24KKworICB2YXIgYW5pbWF0aW9uID0gZGl2LmdldEFu
aW1hdGlvbnMoKVswXTsKKworICAvLyBVbmxpa2UgaW4gdGhlIGNhc2Ugb2YgQ1NTIGFuaW1hdGlv
bnMsIHdlIGNhbm5vdCBza2lwIHRvIHRoZSBlbmQgYW5kIHNraXAKKyAgLy8gYmFja3dhcmRzIHNp
bmNlIHdoZW4gd2UgcmVhY2ggdGhlIGVuZCB0aGUgdHJhbnNpdGlvbiBlZmZlY3QgaXMgcmVtb3Zl
ZCBhbmQKKyAgLy8gY2hhbmdlcyB0byB0aGUgQW5pbWF0aW9uIG9iamVjdCBubyBsb25nZXIgYWZm
ZWN0IHRoZSBlbGVtZW50LiBGb3IKKyAgLy8gdGhpcyByZWFzb24gd2Ugb25seSBza2lwIGZvcndh
cmRzIGFzIGZhciBhcyB0aGUgOTAlIHRocm91Z2ggcG9pbnQuCisKKyAgYW5pbWF0aW9uLnN0YXJ0
VGltZSA9CisgICAgc3RhcnRUaW1lRm9yRmlmdHlQZXJjZW50VGhyb3VnaEFjdGl2ZUludGVydmFs
KGFuaW1hdGlvbi50aW1lbGluZSk7CisgIGNoZWNrU3RhdGVBdEZpZnR5UGN0T2ZBY3RpdmVJbnRl
cnZhbChhbmltYXRpb24pOworCisgIGFuaW1hdGlvbi5zdGFydFRpbWUgPSBzdGFydFRpbWVGb3JT
dGFydE9mQWN0aXZlSW50ZXJ2YWwoYW5pbWF0aW9uLnRpbWVsaW5lKTsKKworICAvLyBEZXNwaXRl
IGdvaW5nIGJhY2t3YXJkcyBmcm9tIGJlaW5nIGluIHRoZSBhY3RpdmUgaW50ZXJ2YWwgdG8gYmVp
bmcgYmVmb3JlCisgIC8vIGl0LCB3ZSBub3cgZXhwZWN0IGFuICdhbmltYXRpb25lbmQnIGV2ZW50
IGJlY2F1c2UgdGhlIGFuaW1hdGlvbiBzaG91bGQgZ28KKyAgLy8gZnJvbSBiZWluZyBhY3RpdmUg
dG8gaW5hY3RpdmUuCisgIC8vCisgIC8vIENhbGxpbmcgY2hlY2tTdGF0ZUF0QWN0aXZlSW50ZXJ2
YWxTdGFydFRpbWUgd2lsbCBjaGVjayBjb21wdXRlZCBzdHlsZSwKKyAgLy8gY2F1c2luZyBjb21w
dXRlZCBzdHlsZSB0byBiZSB1cGRhdGVkIGFuZCB0aGUgJ3RyYW5zaXRpb25lbmQnIGV2ZW50IHRv
CisgIC8vIGJlIGRpc3BhdGNoZWQgc3luY2hyb25vdXNseS4gV2UgbmVlZCB0byBjYWxsIHdhaXRG
b3JFdmVudCBmaXJzdAorICAvLyBvdGhlcndpc2UgZXZlbnRXYXRjaGVyIHdpbGwgYXNzZXJ0IHRo
YXQgdGhlIGV2ZW50IHdhcyB1bmV4cGVjdGVkLgorICBldmVudFdhdGNoZXIud2FpdF9mb3IoJ3Ry
YW5zaXRpb25lbmQnKS50aGVuKGZ1bmN0aW9uKCkgeworICAgIHQuZG9uZSgpOworICB9KTsKKyAg
Y2hlY2tTdGF0ZUF0QWN0aXZlSW50ZXJ2YWxTdGFydFRpbWUoYW5pbWF0aW9uKTsKK30sICdTa2lw
cGluZyBiYWNrd2FyZHMgdGhyb3VnaCB0cmFuc2l0aW9uJyk7CisKKworYXN5bmNfdGVzdChmdW5j
dGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeydjbGFzcyc6ICdhbmltYXRlZC1kaXYn
fSk7CisKKyAgZmx1c2hDb21wdXRlZFN0eWxlKGRpdik7CisgIGRpdi5zdHlsZS5tYXJnaW5MZWZ0
ID0gJzIwMHB4JzsgLy8gaW5pdGlhdGUgdHJhbnNpdGlvbgorCisgIHZhciBhbmltYXRpb24gPSBk
aXYuZ2V0QW5pbWF0aW9ucygpWzBdOworCisgIHZhciBzdG9yZWRDdXJyZW50VGltZTsKKworICBh
bmltYXRpb24ucmVhZHkudGhlbih0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICBzdG9yZWRD
dXJyZW50VGltZSA9IGFuaW1hdGlvbi5jdXJyZW50VGltZTsKKyAgICBhbmltYXRpb24uc3RhcnRU
aW1lID0gbnVsbDsKKyAgICByZXR1cm4gYW5pbWF0aW9uLnJlYWR5OworICB9KSkuY2F0Y2godC5z
dGVwX2Z1bmMoZnVuY3Rpb24ocmVhc29uKSB7CisgICAgYXNzZXJ0X3VucmVhY2hlZChyZWFzb24p
OworICB9KSkudGhlbih0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfZXF1YWxz
KGFuaW1hdGlvbi5jdXJyZW50VGltZSwgc3RvcmVkQ3VycmVudFRpbWUsCisgICAgICAnVGVzdCB0
aGF0IGhvbGQgdGltZSBpcyBjb3JyZWN0Jyk7CisgICAgdC5kb25lKCk7CisgIH0pKTsKK30sICdT
ZXR0aW5nIHN0YXJ0VGltZSB0byBudWxsJyk7CisKKworYXN5bmNfdGVzdChmdW5jdGlvbih0KSB7
CisgIHZhciBkaXYgPSBhZGREaXYodCwgeydjbGFzcyc6ICdhbmltYXRlZC1kaXYnfSk7CisKKyAg
Zmx1c2hDb21wdXRlZFN0eWxlKGRpdik7CisgIGRpdi5zdHlsZS5tYXJnaW5MZWZ0ID0gJzIwMHB4
JzsgLy8gaW5pdGlhdGUgdHJhbnNpdGlvbgorCisgIHZhciBhbmltYXRpb24gPSBkaXYuZ2V0QW5p
bWF0aW9ucygpWzBdOworCisgIGFuaW1hdGlvbi5yZWFkeS50aGVuKHQuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgeworICAgIHZhciBzYXZlZFN0YXJ0VGltZSA9IGFuaW1hdGlvbi5zdGFydFRpbWU7CisK
KyAgICBhc3NlcnRfbm90X2VxdWFscyhhbmltYXRpb24uc3RhcnRUaW1lLCBudWxsLAorICAgICAg
J0FuaW1hdGlvbi5zdGFydFRpbWUgbm90IG51bGwgb24gcmVhZHkgUHJvbWlzZSByZXNvbHZlJyk7
CisKKyAgICBhbmltYXRpb24ucGF1c2UoKTsKKyAgICByZXR1cm4gYW5pbWF0aW9uLnJlYWR5Owor
ICB9KSkudGhlbih0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfZXF1YWxzKGFu
aW1hdGlvbi5zdGFydFRpbWUsIG51bGwsCisgICAgICAnQW5pbWF0aW9uLnN0YXJ0VGltZSBpcyBu
dWxsIGFmdGVyIHBhdXNlZCcpOworICAgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uLnBsYXlTdGF0
ZSwgJ3BhdXNlZCcsCisgICAgICAnQW5pbWF0aW9uLnBsYXlTdGF0ZSBpcyAicGF1c2VkIiBhZnRl
ciBwYXVzZSgpIGNhbGwnKTsKKyAgfSkpLmNhdGNoKHQuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlYXNv
bikgeworICAgIGFzc2VydF91bnJlYWNoZWQocmVhc29uKTsKKyAgfSkpLnRoZW4oZnVuY3Rpb24o
KSB7CisgICAgdC5kb25lKCk7CisgIH0pOworfSwgJ0FuaW1hdGlvbi5zdGFydFRpbWUgYWZ0ZXIg
cGF1c2VkJyk7CisKKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9jc3N0
cmFuc2l0aW9uLXRyYW5zaXRpb25wcm9wZXJ0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC9tb3ppbGxhL2Nzcy10cmFuc2l0aW9ucy90ZXN0X2Nzc3RyYW5zaXRpb24tdHJhbnNp
dGlvbnByb3BlcnR5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZmRiYmRiYmNjNGFiODFmNGVm
NDljMzlhNTJjNDc1MDM2MWNlYWZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9jc3N0cmFuc2l0aW9uLXRyYW5zaXRp
b25wcm9wZXJ0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK0ZBSUwgQ1NTVHJhbnNp
dGlvbi50cmFuc2l0aW9uUHJvcGVydHkgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1
YXRpbmcgJ2Rpdi5nZXRBbmltYXRpb25zKClbMF0udHJhbnNpdGlvblByb3BlcnR5JykKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVz
dF9jc3N0cmFuc2l0aW9uLXRyYW5zaXRpb25wcm9wZXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9jc3N0cmFuc2l0aW9uLXRyYW5zaXRp
b25wcm9wZXJ0eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3OTc5ZmJmMzI0MjM4MmJmMDdjY2UyOWM1ZmE2
ZmRhMGQ4MTUxZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL2Nzcy10cmFuc2l0aW9ucy90ZXN0X2Nzc3RyYW5zaXRpb24tdHJhbnNpdGlvbnByb3BlcnR5
Lmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFkb2N0eXBlIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1y
dW5uZXIgWyBlbmFibGVDU1NBbmltYXRpb25zQW5kQ1NTVHJhbnNpdGlvbnNCYWNrZWRCeVdlYkFu
aW1hdGlvbnM9dHJ1ZSBdIC0tPgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3Rjb21tb24uanMiPjwvc2NyaXB0PgorPGJvZHk+Cis8
ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKKwordGVzdChmdW5j
dGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCk7CisKKyAgLy8gQWRkIGEgdHJhbnNpdGlv
bgorICBkaXYuc3R5bGUubGVmdCA9ICcwcHgnOworICBnZXRDb21wdXRlZFN0eWxlKGRpdikudHJh
bnNpdGlvblByb3BlcnR5OworICBkaXYuc3R5bGUudHJhbnNpdGlvbiA9ICdhbGwgMTAwcyc7Cisg
IGRpdi5zdHlsZS5sZWZ0ID0gJzEwMHB4JzsKKworICBhc3NlcnRfZXF1YWxzKGRpdi5nZXRBbmlt
YXRpb25zKClbMF0udHJhbnNpdGlvblByb3BlcnR5LCAnbGVmdCcsCisgICAgICAgICAgICAgICAg
J1RoZSB0cmFuc2l0aW9uUHJvcGVydHkgZm9yIHRoZSBjb3JyZXNwb25kcyB0byB0aGUgc3BlY2lm
aWMgJyArCisgICAgICAgICAgICAgICAgJ3Byb3BlcnR5IGJlaW5nIHRyYW5zaXRpb25lZCcpOwor
fSwgJ0NTU1RyYW5zaXRpb24udHJhbnNpdGlvblByb3BlcnR5Jyk7CisKKzwvc2NyaXB0PgorPC9i
b2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNp
dGlvbnMvdGVzdF9kb2N1bWVudC1nZXQtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy10cmFuc2l0aW9ucy90ZXN0X2RvY3VtZW50LWdldC1h
bmltYXRpb25zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OGRmYTkzMDI5ZGU5ZGFlYmZmYTZi
NTdlOWNiZTI2MmY3YWI1ZGYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9kb2N1bWVudC1nZXQtYW5pbWF0aW9ucy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK1BBU1MgZ2V0QW5pbWF0aW9ucyBmb3Igbm9u
LWFuaW1hdGVkIGNvbnRlbnQgCitGQUlMIGdldEFuaW1hdGlvbnMgZm9yIENTUyBUcmFuc2l0aW9u
cyBhc3NlcnRfZXF1YWxzOiBnZXRBbmltYXRpb25zIHJldHVybnMgdHdvIHJ1bm5pbmcgQ1NTIFRy
YW5zaXRpb25zIGV4cGVjdGVkIDIgYnV0IGdvdCAwCitGQUlMIENTUyBUcmFuc2l0aW9ucyB0YXJn
ZXR0aW5nIChwc2V1ZG8tKWVsZW1lbnRzIHNob3VsZCBoYXZlIGNvcnJlY3Qgb3JkZXIgYWZ0ZXIg
c29ydGluZyBhc3NlcnRfZXF1YWxzOiBDU1MgdHJhbnNpdGlvbiBvbiBib3RoIHBzZXVkby1lbGVt
ZW50cyBhbmQgZWxlbWVudHMgYXJlIHJldHVybmVkIGV4cGVjdGVkIDQgYnV0IGdvdCAyCitGQUlM
IFRyYW5zaXRpb25zIGFyZSBub3QgcmV0dXJuZWQgYWZ0ZXIgdGhleSBoYXZlIGZpbmlzaGVkIGFz
c2VydF9lcXVhbHM6IEdvdCB0cmFuc2l0aW9uIGV4cGVjdGVkIDEgYnV0IGdvdCAwCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLXRyYW5zaXRpb25zL3Rlc3Rf
ZG9jdW1lbnQtZ2V0LWFuaW1hdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvY3NzLXRyYW5zaXRpb25zL3Rlc3RfZG9jdW1lbnQtZ2V0LWFuaW1hdGlvbnMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jN2Y1Yjg4YjE1ZmMzNDg3ZTdkYWViMDk5MTVkNzZmZmUyZjBmYTY5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMv
dGVzdF9kb2N1bWVudC1nZXQtYW5pbWF0aW9ucy5odG1sCkBAIC0wLDAgKzEsOTUgQEAKKzwhZG9j
dHlwZSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlQ1NTQW5pbWF0aW9uc0Fu
ZENTU1RyYW5zaXRpb25zQmFja2VkQnlXZWJBbmltYXRpb25zPXRydWUgXSAtLT4KKzxtZXRhIGNo
YXJzZXQ9dXRmLTg+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0Y29t
bW9uLmpzIj48L3NjcmlwdD4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+
CisndXNlIHN0cmljdCc7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICBhc3NlcnRfZXF1YWxzKGRv
Y3VtZW50LmdldEFuaW1hdGlvbnMoKS5sZW5ndGgsIDAsCisgICAgJ2dldEFuaW1hdGlvbnMgcmV0
dXJucyBhbiBlbXB0eSBzZXF1ZW5jZSBmb3IgYSBkb2N1bWVudCcKKyAgICArICcgd2l0aCBubyBh
bmltYXRpb25zJyk7Cit9LCAnZ2V0QW5pbWF0aW9ucyBmb3Igbm9uLWFuaW1hdGVkIGNvbnRlbnQn
KTsKKwordGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCk7CisKKyAgLy8g
QWRkIGEgY291cGxlIG9mIHRyYW5zaXRpb25zCisgIGRpdi5zdHlsZS5sZWZ0ID0gJzBweCc7Cisg
IGRpdi5zdHlsZS50b3AgPSAnMHB4JzsKKyAgZ2V0Q29tcHV0ZWRTdHlsZShkaXYpLnRyYW5zaXRp
b25Qcm9wZXJ0eTsKKworICBkaXYuc3R5bGUudHJhbnNpdGlvbiA9ICdhbGwgMTAwcyc7CisgIGRp
di5zdHlsZS5sZWZ0ID0gJzEwMHB4JzsKKyAgZGl2LnN0eWxlLnRvcCA9ICcxMDBweCc7CisgIGFz
c2VydF9lcXVhbHMoZG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygpLmxlbmd0aCwgMiwKKyAgICAgICAg
ICAgICAgICAnZ2V0QW5pbWF0aW9ucyByZXR1cm5zIHR3byBydW5uaW5nIENTUyBUcmFuc2l0aW9u
cycpOworCisgIC8vIFJlbW92ZSBib3RoCisgIGRpdi5zdHlsZS50cmFuc2l0aW9uUHJvcGVydHkg
PSAnbm9uZSc7CisgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygpLmxlbmd0
aCwgMCwKKyAgICAgICAgICAgICAgICAnZ2V0QW5pbWF0aW9ucyByZXR1cm5zIG5vIHJ1bm5pbmcg
Q1NTIFRyYW5zaXRpb25zJyk7Cit9LCAnZ2V0QW5pbWF0aW9ucyBmb3IgQ1NTIFRyYW5zaXRpb25z
Jyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICBhZGRTdHlsZSh0LCB7ICcuaW5pdDo6YWZ0ZXIn
OiAnY29udGVudDogIiI7IHdpZHRoOiAwcHg7ICcgKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAndHJhbnNpdGlvbjogYWxsIDEwMHM7JywKKyAgICAgICAgICAgICAgICAnLmluaXQ6
OmJlZm9yZSc6ICdjb250ZW50OiAiIjsgd2lkdGg6IDBweDsgJyArCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbjogYWxsIDEwczsnLAorICAgICAgICAgICAgICAg
ICcuY2hhbmdlOjphZnRlcic6ICd3aWR0aDogMTAwcHg7JywKKyAgICAgICAgICAgICAgICAnLmNo
YW5nZTo6YmVmb3JlJzogJ3dpZHRoOiAxMDBweDsnIH0pOworICAvLyBjcmVhdGUgdHdvIGRpdnMg
d2l0aCB0aGVzZSBhcnJhbmdlbWVudDoKKyAgLy8gICAgICAgcGFyZW50CisgIC8vICAgICA6OmJl
Zm9yZSwKKyAgLy8gICAgIDo6YWZ0ZXIKKyAgLy8gICAgICAgIHwKKyAgLy8gICAgICAgY2hpbGQK
KyAgdmFyIHBhcmVudCA9IGFkZERpdih0KTsKKyAgdmFyIGNoaWxkID0gYWRkRGl2KHQpOworICBw
YXJlbnQuYXBwZW5kQ2hpbGQoY2hpbGQpOworCisgIHBhcmVudC5zdHlsZS5sZWZ0ID0gJzBweCc7
CisgIHBhcmVudC5zdHlsZS50cmFuc2l0aW9uID0gJ2xlZnQgMTBzJzsKKyAgcGFyZW50LmNsYXNz
TGlzdC5hZGQoJ2luaXQnKTsKKyAgY2hpbGQuc3R5bGUubGVmdCA9ICcwcHgnOworICBjaGlsZC5z
dHlsZS50cmFuc2l0aW9uID0gJ2xlZnQgMTBzJzsKKyAgZmx1c2hDb21wdXRlZFN0eWxlKHBhcmVu
dCk7CisKKyAgcGFyZW50LnN0eWxlLmxlZnQgPSAnMTAwcHgnOworICBwYXJlbnQuY2xhc3NMaXN0
LmFkZCgnY2hhbmdlJyk7CisgIGNoaWxkLnN0eWxlLmxlZnQgPSAnMTAwcHgnOworCisgIHZhciBh
bmltcyA9IGRvY3VtZW50LmdldEFuaW1hdGlvbnMoKTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltcy5s
ZW5ndGgsIDQsCisgICAgICAgICAgICAgICAgJ0NTUyB0cmFuc2l0aW9uIG9uIGJvdGggcHNldWRv
LWVsZW1lbnRzIGFuZCBlbGVtZW50cyAnICsKKyAgICAgICAgICAgICAgICAnYXJlIHJldHVybmVk
Jyk7CisgIGFzc2VydF9lcXVhbHMoYW5pbXNbMF0uZWZmZWN0LnRhcmdldCwgcGFyZW50LAorICAg
ICAgICAgICAgICAgICdUaGUgYW5pbWF0aW9uIHRhcmdldGluZyB0aGUgcGFyZW50IGVsZW1lbnQg
Y29tZXMgZmlyc3QnKTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltc1sxXS5lZmZlY3QudGFyZ2V0LnR5
cGUsICc6OmJlZm9yZScsCisgICAgICAgICAgICAgICAgJ1RoZSBhbmltYXRpb24gdGFyZ2V0aW5n
IHRoZSA6OmJlZm9yZSBlbGVtZW50IGNvbWVzIHNlY29uZCcpOworICBhc3NlcnRfZXF1YWxzKGFu
aW1zWzJdLmVmZmVjdC50YXJnZXQudHlwZSwgJzo6YWZ0ZXInLAorICAgICAgICAgICAgICAgICdU
aGUgYW5pbWF0aW9uIHRhcmdldGluZyB0aGUgOjphZnRlciBlbGVtZW50IGNvbWVzIHRoaXJkJyk7
CisgIGFzc2VydF9lcXVhbHMoYW5pbXNbM10uZWZmZWN0LnRhcmdldCwgY2hpbGQsCisgICAgICAg
ICAgICAgICAgJ1RoZSBhbmltYXRpb24gdGFyZ2V0aW5nIHRoZSBjaGlsZCBlbGVtZW50IGNvbWVz
IGxhc3QnKTsKK30sICdDU1MgVHJhbnNpdGlvbnMgdGFyZ2V0dGluZyAocHNldWRvLSllbGVtZW50
cyBzaG91bGQgaGF2ZSBjb3JyZWN0IG9yZGVyICcgKworICAgJ2FmdGVyIHNvcnRpbmcnKTsKKwor
YXN5bmNfdGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeyBzdHlsZTog
J2xlZnQ6IDBweDsgdHJhbnNpdGlvbjogYWxsIDUwbXMnIH0pOworICBmbHVzaENvbXB1dGVkU3R5
bGUoZGl2KTsKKworICBkaXYuc3R5bGUubGVmdCA9ICcxMDBweCc7CisgIHZhciBhbmltYXRpb25z
ID0gZGl2LmdldEFuaW1hdGlvbnMoKTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb25zLmxlbmd0
aCwgMSwgJ0dvdCB0cmFuc2l0aW9uJyk7CisgIGFuaW1hdGlvbnNbMF0uZmluaXNoZWQudGhlbih0
LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LmdldEFu
aW1hdGlvbnMoKS5sZW5ndGgsIDAsCisgICAgICAgICAgICAgICAgICAnTm8gYW5pbWF0aW9ucyBy
ZXR1cm5lZCcpOworICAgIHQuZG9uZSgpOworICB9KSk7Cit9LCAnVHJhbnNpdGlvbnMgYXJlIG5v
dCByZXR1cm5lZCBhZnRlciB0aGV5IGhhdmUgZmluaXNoZWQnKTsKKworPC9zY3JpcHQ+Cis8L2Jv
ZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy10cmFuc2l0
aW9ucy90ZXN0X2VmZmVjdC10YXJnZXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9lZmZlY3QtdGFyZ2V0LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jZmRmNTUxNmEyYjQxNTMzMmVjOTc0OWIyZmEwMTdlNzViODE2MTdiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNp
dGlvbnMvdGVzdF9lZmZlY3QtdGFyZ2V0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKwor
UEFTUyBSZXR1cm5lZCBDU1MgdHJhbnNpdGlvbnMgaGF2ZSB0aGUgY29ycmVjdCBBbmltYXRpb24u
dGFyZ2V0IAorRkFJTCBlZmZlY3QudGFyZ2V0IHNob3VsZCByZXR1cm4gdGhlIHNhbWUgQ1NTUHNl
dWRvRWxlbWVudCBvYmplY3QgZWFjaCB0aW1lIGFzc2VydF9lcXVhbHM6IEdvdCB0cmFuc2l0aW9u
cyBydW5uaW5nIG9uIDo6YWZ0ZXIgcHNldWRvIGVsZW1lbnQgZXhwZWN0ZWQgMiBidXQgZ290IDAK
K0ZBSUwgZWZmZWN0LnRhcmdldCBmcm9tIHRoZSBzY3JpcHQtZ2VuZXJhdGVkIGFuaW1hdGlvbiBz
aG91bGQgcmV0dXJuIHRoZSBzYW1lIENTU1BzZXVkb0VsZW1lbnQgb2JqZWN0IGFzIHRoYXQgZnJv
bSB0aGUgQ1NTIGdlbmVyYXRlZCB0cmFuc2l0aW9uIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0
IChldmFsdWF0aW5nICdkb2N1bWVudC5nZXRBbmltYXRpb25zKClbMF0uZWZmZWN0JykKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVz
dF9lZmZlY3QtdGFyZ2V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy10
cmFuc2l0aW9ucy90ZXN0X2VmZmVjdC10YXJnZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGJjZDI0OWIz
NGI4N2JkMDRkNmY2NjczZThmMmY2YjljZTFlMTk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9lZmZlY3QtdGFyZ2V0
Lmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPCFkb2N0eXBlIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1y
dW5uZXIgWyBlbmFibGVDU1NBbmltYXRpb25zQW5kQ1NTVHJhbnNpdGlvbnNCYWNrZWRCeVdlYkFu
aW1hdGlvbnM9dHJ1ZSBdIC0tPgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3Rjb21tb24uanMiPjwvc2NyaXB0PgorPGJvZHk+Cis8
ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKKwordGVzdChmdW5j
dGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCk7CisKKyAgZGl2LnN0eWxlLmxlZnQgPSAn
MHB4JzsKKyAgZ2V0Q29tcHV0ZWRTdHlsZShkaXYpLnRyYW5zaXRpb25Qcm9wZXJ0eTsKKyAgZGl2
LnN0eWxlLnRyYW5zaXRpb24gPSAnbGVmdCAxMDBzJzsKKyAgZGl2LnN0eWxlLmxlZnQgPSAnMTAw
cHgnOworCisgIHZhciBhbmltYXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworICBhc3Nl
cnRfZXF1YWxzKGFuaW1hdGlvbi5lZmZlY3QudGFyZ2V0LCBkaXYsCisgICAgJ0FuaW1hdGlvbi50
YXJnZXQgaXMgdGhlIGFuaW1hdGFibGUgZGl2Jyk7Cit9LCAnUmV0dXJuZWQgQ1NTIHRyYW5zaXRp
b25zIGhhdmUgdGhlIGNvcnJlY3QgQW5pbWF0aW9uLnRhcmdldCcpOworCit0ZXN0KGZ1bmN0aW9u
KHQpIHsKKyAgYWRkU3R5bGUodCwgeyAnLmluaXQ6OmFmdGVyJzogJ2NvbnRlbnQ6ICIiOyB3aWR0
aDogMHB4OyBoZWlnaHQ6IDBweDsgJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICd0cmFuc2l0aW9uOiBhbGwgMTBzOycsCisgICAgICAgICAgICAgICAgJy5jaGFuZ2U6OmFmdGVy
JzogJ3dpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsnIH0pOworICB2YXIgZGl2ID0gYWRkRGl2
KHQsIHsgY2xhc3M6ICdpbml0JyB9KTsKKyAgZmx1c2hDb21wdXRlZFN0eWxlKGRpdik7CisgIGRp
di5jbGFzc0xpc3QuYWRkKCdjaGFuZ2UnKTsKKworICB2YXIgYW5pbXMgPSBkb2N1bWVudC5nZXRB
bmltYXRpb25zKCk7CisgIGFzc2VydF9lcXVhbHMoYW5pbXMubGVuZ3RoLCAyLAorICAgICAgICAg
ICAgICAgICdHb3QgdHJhbnNpdGlvbnMgcnVubmluZyBvbiA6OmFmdGVyIHBzZXVkbyBlbGVtZW50
Jyk7CisgIGFzc2VydF9lcXVhbHMoYW5pbXNbMF0uZWZmZWN0LnRhcmdldCwgYW5pbXNbMV0uZWZm
ZWN0LnRhcmdldCwKKyAgICAgICAgICAgICAgICAnQm90aCB0cmFuc2l0aW9ucyByZXR1cm4gdGhl
IHNhbWUgdGFyZ2V0IG9iamVjdCcpOworfSwgJ2VmZmVjdC50YXJnZXQgc2hvdWxkIHJldHVybiB0
aGUgc2FtZSBDU1NQc2V1ZG9FbGVtZW50IG9iamVjdCBlYWNoIHRpbWUnKTsKKwordGVzdChmdW5j
dGlvbih0KSB7CisgIGFkZFN0eWxlKHQsIHsgJy5pbml0OjphZnRlcic6ICdjb250ZW50OiAiIjsg
d2lkdGg6IDBweDsgdHJhbnNpdGlvbjogYWxsIDEwczsnLAorICAgICAgICAgICAgICAgICcuY2hh
bmdlOjphZnRlcic6ICd3aWR0aDogMTAwcHg7JyB9KTsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7
IGNsYXNzOiAnaW5pdCcgfSk7CisgIGZsdXNoQ29tcHV0ZWRTdHlsZShkaXYpOworICBkaXYuY2xh
c3NMaXN0LmFkZCgnY2hhbmdlJyk7CisgIHZhciBwc2V1ZG9UYXJnZXQgPSBkb2N1bWVudC5nZXRB
bmltYXRpb25zKClbMF0uZWZmZWN0LnRhcmdldDsKKyAgdmFyIGVmZmVjdCA9IG5ldyBLZXlmcmFt
ZUVmZmVjdFJlYWRPbmx5KHBzZXVkb1RhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsgYmFja2dyb3VuZDogWyJibHVlIiwgInJlZCJdIH0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMDAwKTsKKyAgdmFyIG5ld0FuaW0g
PSBuZXcgQW5pbWF0aW9uKGVmZmVjdCwgZG9jdW1lbnQudGltZWxpbmUpOworICBuZXdBbmltLnBs
YXkoKTsKKworICB2YXIgYW5pbXMgPSBkb2N1bWVudC5nZXRBbmltYXRpb25zKCk7CisgIGFzc2Vy
dF9lcXVhbHMoYW5pbXMubGVuZ3RoLCAyLAorICAgICAgICAgICAgICAgICdHb3QgYW5pbWF0aW9u
cyBydW5uaW5nIG9uIDo6YWZ0ZXIgcHNldWRvIGVsZW1lbnQnKTsKKyAgYXNzZXJ0X25vdF9lcXVh
bHMoYW5pbXNbMF0sIG5ld0FuaW0sCisgICAgICAgICAgICAgICAgICAgICdUaGUgc2NyaXBlZC1n
ZW5lcmF0ZWQgYW5pbWF0aW9uIGFwcGVhcnMgbGFzdCcpOworICBhc3NlcnRfZXF1YWxzKG5ld0Fu
aW0uZWZmZWN0LnRhcmdldCwgcHNldWRvVGFyZ2V0LAorICAgICAgICAgICAgICAgICdUaGUgZWZm
ZWN0LnRhcmdldCBvZiB0aGUgc2NyaXB0ZWQtZ2VuZXJhdGVkIGFuaW1hdGlvbiBpcyAnICsKKyAg
ICAgICAgICAgICAgICAndGhlIHNhbWUgYXMgdGhlIG9uZSBmcm9tIHRoZSBhcmd1bWVudCBvZiAn
ICsKKyAgICAgICAgICAgICAgICAnS2V5ZnJhbWVFZmZlY3RSZWFkT25seSBjb25zdHJ1Y3Rvcicp
OworICBhc3NlcnRfZXF1YWxzKGFuaW1zWzBdLmVmZmVjdC50YXJnZXQsIG5ld0FuaW0uZWZmZWN0
LnRhcmdldCwKKyAgICAgICAgICAgICAgICAnQm90aCB0aGUgdHJhbnNpdGlvbiBhbmQgdGhlIHNj
cmlwdGVkLWdlbmVyYXRlZCBhbmltYXRpb24gJyArCisgICAgICAgICAgICAgICAgJ3JldHVybiB0
aGUgc2FtZSB0YXJnZXQgb2JqZWN0Jyk7Cit9LCAnZWZmZWN0LnRhcmdldCBmcm9tIHRoZSBzY3Jp
cHQtZ2VuZXJhdGVkIGFuaW1hdGlvbiBzaG91bGQgcmV0dXJuIHRoZSBzYW1lICcgKworICAgJ0NT
U1BzZXVkb0VsZW1lbnQgb2JqZWN0IGFzIHRoYXQgZnJvbSB0aGUgQ1NTIGdlbmVyYXRlZCB0cmFu
c2l0aW9uJyk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9lbGVtZW50LWdldC1hbmltYXRp
b25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLXRyYW5z
aXRpb25zL3Rlc3RfZWxlbWVudC1nZXQtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWNmNmI0MTc3OWUwMjhlYjQ3NzRmZmZiZWQ1ZmQ3MmU0NzliMzMwMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLXRyYW5zaXRpb25zL3Rlc3Rf
ZWxlbWVudC1nZXQtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisjUElE
IFVOUkVTUE9OU0lWRSAtIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudCAo
cGlkIDEzNTMwKQorRkFJTDogVGltZWQgb3V0IHdhaXRpbmcgZm9yIG5vdGlmeURvbmUgdG8gYmUg
Y2FsbGVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLXRy
YW5zaXRpb25zL3Rlc3RfZWxlbWVudC1nZXQtYW5pbWF0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9lbGVtZW50LWdldC1hbmltYXRp
b25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTIyZmIzNWMzZTUzNzQzNDBjYTRiODI4YTkzMGVkMmUxOGI3
NDI4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3Nz
LXRyYW5zaXRpb25zL3Rlc3RfZWxlbWVudC1nZXQtYW5pbWF0aW9ucy5odG1sCkBAIC0wLDAgKzEs
MTQ5IEBACis8IWRvY3R5cGUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUNT
U0FuaW1hdGlvbnNBbmRDU1NUcmFuc2l0aW9uc0JhY2tlZEJ5V2ViQW5pbWF0aW9ucz10cnVlIF0g
LS0+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdGVzdGNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImxvZyI+PC9k
aXY+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOworCithc3luY190ZXN0KGZ1bmN0aW9uKHQpIHsK
KyAgdmFyIGRpdiA9IGFkZERpdih0KTsKKworICAvLyBGSVhNRTogVGhpcyB0ZXN0IGRvZXMgdG9v
IG1hbnkgdGhpbmdzLiBJdCBzaG91bGQgYmUgc3BsaXQgdXAuCisKKyAgLy8gQWRkIGEgY291cGxl
IG9mIHRyYW5zaXRpb25zCisgIGRpdi5zdHlsZS5sZWZ0ID0gJzBweCc7CisgIGRpdi5zdHlsZS50
b3AgPSAnMHB4JzsKKyAgZ2V0Q29tcHV0ZWRTdHlsZShkaXYpLnRyYW5zaXRpb25Qcm9wZXJ0eTsK
KworICBkaXYuc3R5bGUudHJhbnNpdGlvbiA9ICdhbGwgMTAwcyc7CisgIGRpdi5zdHlsZS5sZWZ0
ID0gJzEwMHB4JzsKKyAgZGl2LnN0eWxlLnRvcCA9ICcxMDBweCc7CisKKyAgdmFyIGFuaW1hdGlv
bnMgPSBkaXYuZ2V0QW5pbWF0aW9ucygpOworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbnMubGVu
Z3RoLCAyLAorICAgICdnZXRBbmltYXRpb25zKCkgcmV0dXJucyBvbmUgQW5pbWF0aW9uIHBlciB0
cmFuc2l0aW9uaW5nIHByb3BlcnR5Jyk7CisgIHdhaXRGb3JBbGxBbmltYXRpb25zKGFuaW1hdGlv
bnMpLnRoZW4odC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgdmFyIHN0YXJ0VGltZSA9IGFu
aW1hdGlvbnNbMF0uc3RhcnRUaW1lOworICAgIGFzc2VydF90cnVlKHN0YXJ0VGltZSA+IDAgJiYg
c3RhcnRUaW1lIDw9IGRvY3VtZW50LnRpbWVsaW5lLmN1cnJlbnRUaW1lLAorICAgICAgICAgICAg
ICAgICdDU1MgdHJhbnNpdGlvbnMgaGF2ZSBzZW5zaWJsZSBzdGFydCB0aW1lcycpOworICAgIGFz
c2VydF9lcXVhbHMoYW5pbWF0aW9uc1swXS5zdGFydFRpbWUsIGFuaW1hdGlvbnNbMV0uc3RhcnRU
aW1lLAorICAgICAgJ0NTUyB0cmFuc2l0aW9ucyBzdGFydGVkIHRvZ2V0aGVyIGhhdmUgdGhlIHNh
bWUgc3RhcnQgdGltZScpOworICAgIC8vIFdhaXQgYSBtb21lbnQgdGhlbiBhZGQgYSB0aGlyZCB0
cmFuc2l0aW9uCisgICAgcmV0dXJuIHdhaXRGb3JGcmFtZSgpOworICB9KSkudGhlbih0LnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsKKyAgICBkaXYuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ2dyZWVu
JzsKKyAgICBhbmltYXRpb25zID0gZGl2LmdldEFuaW1hdGlvbnMoKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGFuaW1hdGlvbnMubGVuZ3RoLCAzLAorICAgICAgJ2dldEFuaW1hdGlvbnMgcmV0dXJucyBB
bmltYXRpb25zIGZvciBhbGwgcnVubmluZyBDU1MgVHJhbnNpdGlvbnMnKTsKKyAgICByZXR1cm4g
d2FpdEZvckFsbEFuaW1hdGlvbnMoYW5pbWF0aW9ucyk7CisgIH0pKS50aGVuKHQuc3RlcF9mdW5j
KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9sZXNzX3RoYW4oYW5pbWF0aW9uc1sxXS5zdGFydFRp
bWUsIGFuaW1hdGlvbnNbMl0uc3RhcnRUaW1lLAorICAgICAgJ0FuaW1hdGlvbiBmb3IgYWRkaXRp
b25hbCBDU1MgdHJhbnNpdGlvbiBzdGFydHMgYWZ0ZXIgdGhlIG9yaWdpbmFsJworICAgICAgKyAn
IHRyYW5zaXRpb25zIGFuZCBhcHBlYXJzIGxhdGVyIGluIHRoZSBsaXN0Jyk7CisgICAgdC5kb25l
KCk7CisgIH0pKTsKK30sICdnZXRBbmltYXRpb25zIGZvciBDU1MgVHJhbnNpdGlvbnMnKTsKKwor
dGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCwgeyBzdHlsZTogJ2xlZnQ6
IDBweDsgdHJhbnNpdGlvbjogYWxsIDEwMHMnIH0pOworCisgIGZsdXNoQ29tcHV0ZWRTdHlsZShk
aXYpOworICBkaXYuc3R5bGUubGVmdCA9ICcxMDBweCc7CisKKyAgYXNzZXJ0X2NsYXNzX3N0cmlu
ZyhkaXYuZ2V0QW5pbWF0aW9ucygpWzBdLCAnQ1NTVHJhbnNpdGlvbicsCisgICAgICAgICAgICAg
ICAgICAgICAgJ0ludGVyZmFjZSBvZiByZXR1cm5lZCBhbmltYXRpb24gaXMgQ1NTVHJhbnNpdGlv
bicpOworfSwgJ2dldEFuaW1hdGlvbnMgcmV0dXJucyBDU1NUcmFuc2l0aW9uIG9iamVjdHMgZm9y
IENTUyBUcmFuc2l0aW9ucycpOworCithc3luY190ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRp
diA9IGFkZERpdih0KTsKKworICAvLyBTZXQgdXAgZXZlbnQgbGlzdGVuZXIKKyAgZGl2LmFkZEV2
ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCB0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAg
ICBhc3NlcnRfZXF1YWxzKGRpdi5nZXRBbmltYXRpb25zKCkubGVuZ3RoLCAwLAorICAgICAgJ2dl
dEFuaW1hdGlvbnMgZG9lcyBub3QgcmV0dXJuIGZpbmlzaGVkIENTUyBUcmFuc2l0aW9ucycpOwor
ICAgIHQuZG9uZSgpOworICB9KSk7CisKKyAgLy8gQWRkIGEgdmVyeSBzaG9ydCB0cmFuc2l0aW9u
CisgIGRpdi5zdHlsZS5sZWZ0ID0gJzBweCc7CisgIGdldENvbXB1dGVkU3R5bGUoZGl2KS5sZWZ0
OworCisgIGRpdi5zdHlsZS50cmFuc2l0aW9uID0gJ2FsbCAwLjAxcyc7CisgIGRpdi5zdHlsZS5s
ZWZ0ID0gJzEwMHB4JzsKKyAgZ2V0Q29tcHV0ZWRTdHlsZShkaXYpLmxlZnQ7Cit9LCAnZ2V0QW5p
bWF0aW9ucyBmb3IgQ1NTIFRyYW5zaXRpb25zIHRoYXQgaGF2ZSBmaW5pc2hlZCcpOworCit0ZXN0
KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0KTsKKworICAvLyBUcnkgdG8gdHJh
bnNpdGlvbiBub24tYW5pbWF0YWJsZSBwcm9wZXJ0eSBhbmltYXRpb24tZHVyYXRpb24KKyAgZGl2
LnN0eWxlLmFuaW1hdGlvbkR1cmF0aW9uID0gJzEwcyc7CisgIGdldENvbXB1dGVkU3R5bGUoZGl2
KS5hbmltYXRpb25EdXJhdGlvbjsKKworICBkaXYuc3R5bGUudHJhbnNpdGlvbiA9ICdhbGwgMTAw
cyc7CisgIGRpdi5zdHlsZS5hbmltYXRpb25EdXJhdGlvbiA9ICcxMDBzJzsKKworICBhc3NlcnRf
ZXF1YWxzKGRpdi5nZXRBbmltYXRpb25zKCkubGVuZ3RoLCAwLAorICAgICdnZXRBbmltYXRpb25z
IHJldHVybnMgYW4gZW1wdHkgc2VxdWVuY2UgZm9yIGEgdHJhbnNpdGlvbicKKyAgICArICcgb2Yg
YSBub24tYW5pbWF0YWJsZSBwcm9wZXJ0eScpOworfSwgJ2dldEFuaW1hdGlvbnMgZm9yIHRyYW5z
aXRpb24gb24gbm9uLWFuaW1hdGFibGUgcHJvcGVydHknKTsKKwordGVzdChmdW5jdGlvbih0KSB7
CisgIHZhciBkaXYgPSBhZGREaXYodCk7CisKKyAgZGl2LnN0eWxlLnNldFByb3BlcnR5KCctdmVu
ZG9yLXVuc3VwcG9ydGVkJywgJzBweCcsICcnKTsKKyAgZ2V0Q29tcHV0ZWRTdHlsZShkaXYpLnRy
YW5zaXRpb25Qcm9wZXJ0eTsKKyAgZGl2LnN0eWxlLnRyYW5zaXRpb24gPSAnYWxsIDEwMHMnOwor
ICBkaXYuc3R5bGUuc2V0UHJvcGVydHkoJy12ZW5kb3ItdW5zdXBwb3J0ZWQnLCAnMTAwcHgnLCAn
Jyk7CisKKyAgYXNzZXJ0X2VxdWFscyhkaXYuZ2V0QW5pbWF0aW9ucygpLmxlbmd0aCwgMCwKKyAg
ICAnZ2V0QW5pbWF0aW9ucyByZXR1cm5zIGFuIGVtcHR5IHNlcXVlbmNlIGZvciBhIHRyYW5zaXRp
b24nCisgICAgKyAnIG9mIGFuIHVuc3VwcG9ydGVkIHByb3BlcnR5Jyk7Cit9LCAnZ2V0QW5pbWF0
aW9ucyBmb3IgdHJhbnNpdGlvbiBvbiB1bnN1cHBvcnRlZCBwcm9wZXJ0eScpOworCit0ZXN0KGZ1
bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFkZERpdih0LCB7IHN0eWxlOiAndHJhbnNmb3JtOiB0
cmFuc2xhdGUoMHB4KTsgJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29wYWNp
dHk6IDA7ICcgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItd2lkdGg6
IDBweDsgJyArIC8vIFNob3J0aGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdi
b3JkZXItc3R5bGU6IHNvbGlkJyB9KTsKKyAgZ2V0Q29tcHV0ZWRTdHlsZShkaXYpLnRyYW5zZm9y
bTsKKworICBkaXYuc3R5bGUudHJhbnNpdGlvbiA9ICdhbGwgMTAwcyc7CisgIGRpdi5zdHlsZS50
cmFuc2Zvcm0gPSAndHJhbnNsYXRlKDEwMHB4KSc7CisgIGRpdi5zdHlsZS5vcGFjaXR5ID0gJzEn
OworICBkaXYuc3R5bGUuYm9yZGVyV2lkdGggPSAnMXB4JzsKKworICB2YXIgYW5pbWF0aW9ucyA9
IGRpdi5nZXRBbmltYXRpb25zKCk7CisgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9ucy5sZW5ndGgs
IDYsCisgICAgICAgICAgICAgICAgJ0dlbmVyYXRlZCBleHBlY3RlZCBudW1iZXIgb2YgdHJhbnNp
dGlvbnMnKTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb25zWzBdLnRyYW5zaXRpb25Qcm9wZXJ0
eSwgJ2JvcmRlci1ib3R0b20td2lkdGgnKTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb25zWzFd
LnRyYW5zaXRpb25Qcm9wZXJ0eSwgJ2JvcmRlci1sZWZ0LXdpZHRoJyk7CisgIGFzc2VydF9lcXVh
bHMoYW5pbWF0aW9uc1syXS50cmFuc2l0aW9uUHJvcGVydHksICdib3JkZXItcmlnaHQtd2lkdGgn
KTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb25zWzNdLnRyYW5zaXRpb25Qcm9wZXJ0eSwgJ2Jv
cmRlci10b3Atd2lkdGgnKTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb25zWzRdLnRyYW5zaXRp
b25Qcm9wZXJ0eSwgJ29wYWNpdHknKTsKKyAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb25zWzVdLnRy
YW5zaXRpb25Qcm9wZXJ0eSwgJ3RyYW5zZm9ybScpOworfSwgJ2dldEFuaW1hdGlvbnMgc29ydHMg
c2ltdWx0YW5lb3VzIHRyYW5zaXRpb25zIGJ5IG5hbWUnKTsKKwordGVzdChmdW5jdGlvbih0KSB7
CisgIHZhciBkaXYgPSBhZGREaXYodCwgeyBzdHlsZTogJ3RyYW5zZm9ybTogdHJhbnNsYXRlKDBw
eCk7ICcgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcGFjaXR5OiAwJyB9KTsK
KyAgZ2V0Q29tcHV0ZWRTdHlsZShkaXYpLnRyYW5zZm9ybTsKKworICBkaXYuc3R5bGUudHJhbnNp
dGlvbiA9ICdhbGwgMTAwcyc7CisgIGRpdi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlKDEw
MHB4KSc7CisgIGFzc2VydF9lcXVhbHMoZGl2LmdldEFuaW1hdGlvbnMoKS5sZW5ndGgsIDEsCisg
ICAgICAgICAgICAgICAgJ0luaXRpYWxseSB0aGVyZSBpcyBvbmx5IG9uZSAodHJhbnNmb3JtKSB0
cmFuc2l0aW9uJyk7CisgIGRpdi5zdHlsZS5vcGFjaXR5ID0gJzEnOworICBhc3NlcnRfZXF1YWxz
KGRpdi5nZXRBbmltYXRpb25zKCkubGVuZ3RoLCAyLAorICAgICAgICAgICAgICAgICdUaGVuIGEg
c2Vjb25kIChvcGFjaXR5KSB0cmFuc2l0aW9uIGlzIGFkZGVkJyk7CisKKyAgdmFyIGFuaW1hdGlv
bnMgPSBkaXYuZ2V0QW5pbWF0aW9ucygpOworICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbnNbMF0u
dHJhbnNpdGlvblByb3BlcnR5LCAndHJhbnNmb3JtJyk7CisgIGFzc2VydF9lcXVhbHMoYW5pbWF0
aW9uc1sxXS50cmFuc2l0aW9uUHJvcGVydHksICdvcGFjaXR5Jyk7Cit9LCAnZ2V0QW5pbWF0aW9u
cyBzb3J0cyB0cmFuc2l0aW9ucyBieSB3aGVuIHRoZXkgd2VyZSBnZW5lcmF0ZWQnKTsKKworPC9z
Y3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L2Nzcy10cmFuc2l0aW9ucy90ZXN0X2V2ZW50LWRpc3BhdGNoLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLXRyYW5zaXRpb25zL3Rlc3RfZXZlbnQtZGlzcGF0
Y2gtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5ZGIxMGZiMmY4YTIzZDJkYTlkOTMyNTRlNjcz
MWQwNTRkOWJmZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3pp
bGxhL2Nzcy10cmFuc2l0aW9ucy90ZXN0X2V2ZW50LWRpc3BhdGNoLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDMgQEAKKyNQSUQgVU5SRVNQT05TSVZFIC0gY29tLmFwcGxlLldlYktpdC5XZWJDb250
ZW50LkRldmVsb3BtZW50IChwaWQgMTM1NDYpCitGQUlMOiBUaW1lZCBvdXQgd2FpdGluZyBmb3Ig
bm90aWZ5RG9uZSB0byBiZSBjYWxsZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9ldmVudC1kaXNwYXRjaC5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9ldmVudC1kaXNw
YXRjaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyNDVjZjJlYmE2N2ViMDUyNTVkMGFjOWU3ZTUxYjdjNjgw
OTgwYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nz
cy10cmFuc2l0aW9ucy90ZXN0X2V2ZW50LWRpc3BhdGNoLmh0bWwKQEAgLTAsMCArMSw0NzcgQEAK
KzwhZG9jdHlwZSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlQ1NTQW5pbWF0
aW9uc0FuZENTU1RyYW5zaXRpb25zQmFja2VkQnlXZWJBbmltYXRpb25zPXRydWUgXSAtLT4KKzxt
ZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+VGVzdHMgZm9yIENTUy1UcmFuc2l0aW9uIGV2ZW50
czwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9y
Zy9jc3MtdHJhbnNpdGlvbnMtMi8jdHJhbnNpdGlvbi1ldmVudHMiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIEhl
bHBlciBjbGFzcyB0byByZWNvcmQgdGhlIGVsYXBzZWRUaW1lIG1lbWJlciBvZiBlYWNoIGV2ZW50
LgorICogVGhlIEV2ZW50V2F0Y2hlciBjbGFzcyBpbiB0ZXN0aGFybmVzcy5qcyBhbGxvd3MgdXMg
dG8gd2FpdCBvbgorICogbXVsdGlwbGUgZXZlbnRzIGluIGEgY2VydGFpbiBvcmRlciBidXQgb25s
eSByZWNvcmRzIHRoZSBldmVudAorICogcGFyYW1ldGVycyBvZiB0aGUgbW9zdCByZWNlbnQgZXZl
bnQuCisgKi8KK2Z1bmN0aW9uIFRyYW5zaXRpb25FdmVudEhhbmRsZXIodGFyZ2V0KSB7CisgIHRo
aXMudGFyZ2V0ID0gdGFyZ2V0OworICB0aGlzLnRhcmdldC5vbnRyYW5zaXRpb25ydW4gPSBldnQg
PT4geworICAgIHRoaXMudHJhbnNpdGlvbnJ1biA9IGV2dC5lbGFwc2VkVGltZTsKKyAgfTsKKyAg
dGhpcy50YXJnZXQub250cmFuc2l0aW9uc3RhcnQgPSBldnQgPT4geworICAgIHRoaXMudHJhbnNp
dGlvbnN0YXJ0ID0gZXZ0LmVsYXBzZWRUaW1lOworICB9OworICB0aGlzLnRhcmdldC5vbnRyYW5z
aXRpb25lbmQgPSBldnQgPT4geworICAgIHRoaXMudHJhbnNpdGlvbmVuZCA9IGV2dC5lbGFwc2Vk
VGltZTsKKyAgfTsKKyAgdGhpcy50YXJnZXQub250cmFuc2l0aW9uY2FuY2VsID0gZXZ0ID0+IHsK
KyAgICB0aGlzLnRyYW5zaXRpb25jYW5jZWwgPSBldnQuZWxhcHNlZFRpbWU7CisgIH07Cit9CisK
K1RyYW5zaXRpb25FdmVudEhhbmRsZXIucHJvdG90eXBlLmNsZWFyID0gKCkgPT4geworICB0aGlz
LnRyYW5zaXRpb25ydW4gICAgPSB1bmRlZmluZWQ7CisgIHRoaXMudHJhbnNpdGlvbnN0YXJ0ICA9
IHVuZGVmaW5lZDsKKyAgdGhpcy50cmFuc2l0aW9uZW5kICAgID0gdW5kZWZpbmVkOworICB0aGlz
LnRyYW5zaXRpb25jYW5jZWwgPSB1bmRlZmluZWQ7Cit9OworCitmdW5jdGlvbiBzZXR1cFRyYW5z
aXRpb24odCwgdHJhbnNpdGlvblN0eWxlKSB7CisgIGNvbnN0IGRpdiA9IGFkZERpdih0LCB7IHN0
eWxlOiAndHJhbnNpdGlvbjogJyArIHRyYW5zaXRpb25TdHlsZSB9KTsKKyAgLy8gTm90ZSB0aGF0
IHRoaXMgVHJhbnNpdGlvbkV2ZW50SGFuZGxlciBzaG91bGQgYmUgY3JlYXRlZCBiZWZvcmUgRXZl
bnRXYXRjaGVyCisgIC8vIHRvIGNhcHR1cmUgYWxsIGV2ZW50cyBpbiB0aGUgaGFuZGxlciBwcmlv
ciB0byB0aGUgRXZlbnRXYXRjaGVyIHNpbmNlCisgIC8vIHRlc3RoYXJuZXNzLmpzIHByb2NlZWRz
IHdoZW4gdGhlIEV2ZW50V2F0Y2hlciByZWNlaXZlZCB3YXRjaGluZyBldmVudHMuCisgIGNvbnN0
IGhhbmRsZXIgPSBuZXcgVHJhbnNpdGlvbkV2ZW50SGFuZGxlcihkaXYpOworICBjb25zdCB3YXRj
aGVyID0gbmV3IEV2ZW50V2F0Y2hlcih0LCBkaXYsIFsgJ3RyYW5zaXRpb25ydW4nLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uc3RhcnQnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uZW5k
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlv
bmNhbmNlbCcgXSk7CisgIGZsdXNoQ29tcHV0ZWRTdHlsZShkaXYpOworCisgIGRpdi5zdHlsZS5t
YXJnaW5MZWZ0ID0gJzEwMHB4JzsKKyAgY29uc3QgdHJhbnNpdGlvbiA9IGRpdi5nZXRBbmltYXRp
b25zKClbMF07CisKKyAgcmV0dXJuIHsgdHJhbnNpdGlvbiwgd2F0Y2hlciwgZGl2LCBoYW5kbGVy
IH07Cit9CisKKy8vIE9uIHRoZSBuZXh0IGZyYW1lIChpLmUuIHdoZW4gZXZlbnRzIGFyZSBxdWV1
ZWQpLCB3aGV0aGVyIG9yIG5vdCB0aGUKKy8vIHRyYW5zaXRpb24gaXMgc3RpbGwgcGVuZGluZyBk
ZXBlbmRzIG9uIHRoZSBpbXBsZW1lbnRhdGlvbi4KK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29u
c3QgeyB0cmFuc2l0aW9uLCB3YXRjaGVyIH0gPQorICAgIHNldHVwVHJhbnNpdGlvbih0LCAnbWFy
Z2luLWxlZnQgMTAwcyAxMDBzJyk7CisgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKCd0cmFuc2l0
aW9ucnVuJykudGhlbihldnQgPT4geworICAgIGFzc2VydF9lcXVhbHMoZXZ0LmVsYXBzZWRUaW1l
LCAwLjApOworICB9KTsKK30sICdJZGxlIC0+IFBlbmRpbmcgb3IgQmVmb3JlJyk7CisKK3Byb21p
c2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyB0cmFuc2l0aW9uLCB3YXRjaGVyIH0gPQorICAgIHNl
dHVwVHJhbnNpdGlvbih0LCAnbWFyZ2luLWxlZnQgMTAwcyAxMDBzJyk7CisgIC8vIEZvcmNlIHRo
ZSB0cmFuc2l0aW9uIHRvIGxlYXZlIHRoZSBpZGxlIHBoYXNlCisgIHRyYW5zaXRpb24uc3RhcnRU
aW1lID0gZG9jdW1lbnQudGltZWxpbmUuY3VycmVudFRpbWU7CisgIHJldHVybiB3YXRjaGVyLndh
aXRfZm9yKCd0cmFuc2l0aW9ucnVuJykudGhlbihldnQgPT4geworICAgIGFzc2VydF9lcXVhbHMo
ZXZ0LmVsYXBzZWRUaW1lLCAwLjApOworICB9KTsKK30sICdJZGxlIC0+IEJlZm9yZScpOworCitw
cm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHsgdHJhbnNpdGlvbiwgd2F0Y2hlciwgZGl2LCBo
YW5kbGVyIH0gPQorICAgIHNldHVwVHJhbnNpdGlvbih0LCAnbWFyZ2luLWxlZnQgMTAwcyAxMDBz
Jyk7CisKKyAgLy8gU2VlayB0byBBY3RpdmUgcGhhc2UuCisgIHRyYW5zaXRpb24uY3VycmVudFRp
bWUgPSAxMDAgKiBNU19QRVJfU0VDOworICAvLyB0cmFuc2l0aW9uLnBhdXNlKCk7CisgIHJldHVy
biB3YXRjaGVyLndhaXRfZm9yKFsgJ3RyYW5zaXRpb25ydW4nLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICd0cmFuc2l0aW9uc3RhcnQnIF0pLnRoZW4oZXZ0ID0+IHsKKyAgICBhc3NlcnRf
ZXF1YWxzKGhhbmRsZXIudHJhbnNpdGlvbnJ1biwgMC4wKTsKKyAgICBhc3NlcnRfZXF1YWxzKGhh
bmRsZXIudHJhbnNpdGlvbnN0YXJ0LCAwLjApOworICB9KTsKK30sICdJZGxlIG9yIFBlbmRpbmcg
LT4gQWN0aXZlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyB0cmFuc2l0aW9u
LCB3YXRjaGVyLCBkaXYsIGhhbmRsZXIgfSA9CisgICAgc2V0dXBUcmFuc2l0aW9uKHQsICdtYXJn
aW4tbGVmdCAxMDBzIDEwMHMnKTsKKworICAvLyBTZWVrIHRvIEFmdGVyIHBoYXNlLgorICB0cmFu
c2l0aW9uLmZpbmlzaCgpOworICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcihbICd0cmFuc2l0aW9u
cnVuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbnN0YXJ0JywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbmVuZCcgXSkudGhlbihldnQgPT4g
eworICAgIGFzc2VydF9lcXVhbHMoaGFuZGxlci50cmFuc2l0aW9ucnVuLCAwLjApOworICAgIGFz
c2VydF9lcXVhbHMoaGFuZGxlci50cmFuc2l0aW9uc3RhcnQsIDAuMCk7CisgICAgYXNzZXJ0X2Vx
dWFscyhoYW5kbGVyLnRyYW5zaXRpb25lbmQsIDEwMC4wKTsKKyAgfSk7Cit9LCAnSWRsZSBvciBQ
ZW5kaW5nIC0+IEFmdGVyJyk7CisKKy8vIFRpbWVvdXQKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAg
Y29uc3QgeyB0cmFuc2l0aW9uLCB3YXRjaGVyLCBkaXYgfSA9CisgICAgc2V0dXBUcmFuc2l0aW9u
KHQsICdtYXJnaW4tbGVmdCAxMDBzIDEwMHMnKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWyB3
YXRjaGVyLndhaXRfZm9yKCd0cmFuc2l0aW9ucnVuJyksCisgICAgICAgICAgICAgICAgICAgICAg
IHRyYW5zaXRpb24ucmVhZHkgXSkudGhlbigoKSA9PiB7CisgICAgLy8gTWFrZSBpZGxlCisgICAg
ZGl2LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisgICAgZmx1c2hDb21wdXRlZFN0eWxlKGRpdik7
CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ3RyYW5zaXRpb25jYW5jZWwnKTsKKyAgfSku
dGhlbihldnQgPT4geworICAgIGFzc2VydF9lcXVhbHMoZXZ0LmVsYXBzZWRUaW1lLCAwLjApOwor
ICB9KTsKK30sICdCZWZvcmUgLT4gSWRsZSAoZGlzcGxheTogbm9uZSknKTsKKworcHJvbWlzZV90
ZXN0KHQgPT4geworICBjb25zdCB7IHRyYW5zaXRpb24sIHdhdGNoZXIgfSA9CisgICAgc2V0dXBU
cmFuc2l0aW9uKHQsICdtYXJnaW4tbGVmdCAxMDBzIDEwMHMnKTsKKworICByZXR1cm4gUHJvbWlz
ZS5hbGwoWyB3YXRjaGVyLndhaXRfZm9yKCd0cmFuc2l0aW9ucnVuJyksCisgICAgICAgICAgICAg
ICAgICAgICAgIHRyYW5zaXRpb24ucmVhZHkgXSkudGhlbigoKSA9PiB7CisgICAgLy8gTWFrZSBp
ZGxlCisgICAgdHJhbnNpdGlvbi50aW1lbGluZSA9IG51bGw7CisgICAgcmV0dXJuIHdhdGNoZXIu
d2FpdF9mb3IoJ3RyYW5zaXRpb25jYW5jZWwnKTsKKyAgfSkudGhlbihldnQgPT4geworICAgIGFz
c2VydF9lcXVhbHMoZXZ0LmVsYXBzZWRUaW1lLCAwLjApOworICB9KTsKK30sICdCZWZvcmUgLT4g
SWRsZSAoQW5pbWF0aW9uLnRpbWVsaW5lID0gbnVsbCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4g
eworICBjb25zdCB7IHRyYW5zaXRpb24sIHdhdGNoZXIgfSA9CisgICAgc2V0dXBUcmFuc2l0aW9u
KHQsICdtYXJnaW4tbGVmdCAxMDBzIDEwMHMnKTsKKworICByZXR1cm4gUHJvbWlzZS5hbGwoWyB3
YXRjaGVyLndhaXRfZm9yKCd0cmFuc2l0aW9ucnVuJyksCisgICAgICAgICAgICAgICAgICAgICAg
IHRyYW5zaXRpb24ucmVhZHkgXSkudGhlbigoKSA9PiB7CisgICAgdHJhbnNpdGlvbi5jdXJyZW50
VGltZSA9IDEwMCAqIE1TX1BFUl9TRUM7CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ3Ry
YW5zaXRpb25zdGFydCcpOworICB9KS50aGVuKGV2dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhl
dnQuZWxhcHNlZFRpbWUsIDAuMCk7CisgIH0pOworfSwgJ0JlZm9yZSAtPiBBY3RpdmUnKTsKKwor
cHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB7IHRyYW5zaXRpb24sIHdhdGNoZXIsIGRpdiwg
aGFuZGxlciB9ID0KKyAgICBzZXR1cFRyYW5zaXRpb24odCwgJ21hcmdpbi1sZWZ0IDEwMHMgMTAw
cycpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbIHdhdGNoZXIud2FpdF9mb3IoJ3RyYW5zaXRp
b25ydW4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbi5yZWFkeSBdKS50aGVu
KCgpID0+IHsKKyAgICAvLyBTZWVrIHRvIEFmdGVyIHBoYXNlLgorICAgIHRyYW5zaXRpb24uY3Vy
cmVudFRpbWUgPSAyMDAgKiBNU19QRVJfU0VDOworICAgIHJldHVybiB3YXRjaGVyLndhaXRfZm9y
KFsgJ3RyYW5zaXRpb25zdGFydCcsICd0cmFuc2l0aW9uZW5kJyBdKTsKKyAgfSkudGhlbihldnQg
PT4geworICAgIGFzc2VydF9lcXVhbHMoaGFuZGxlci50cmFuc2l0aW9uc3RhcnQsIDAuMCk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhoYW5kbGVyLnRyYW5zaXRpb25lbmQsIDEwMC4wKTsKKyAgfSk7Cit9
LCAnQmVmb3JlIC0+IEFmdGVyJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyB0
cmFuc2l0aW9uLCB3YXRjaGVyLCBkaXYgfSA9CisgICAgc2V0dXBUcmFuc2l0aW9uKHQsICdtYXJn
aW4tbGVmdCAxMDBzJyk7CisKKyAgLy8gU2VlayB0byBBY3RpdmUgc3RhcnQgcG9zaXRpb24uCisg
IHRyYW5zaXRpb24ucGF1c2UoKTsKKyAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoWyAndHJhbnNp
dGlvbnJ1bicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRpb25zdGFydCcg
XSkudGhlbihldnQgPT4geworICAgIC8vIE1ha2UgaWRsZQorICAgIGRpdi5zdHlsZS5kaXNwbGF5
ID0gJ25vbmUnOworICAgIGZsdXNoQ29tcHV0ZWRTdHlsZShkaXYpOworICAgIHJldHVybiB3YXRj
aGVyLndhaXRfZm9yKCd0cmFuc2l0aW9uY2FuY2VsJyk7CisgIH0pLnRoZW4oZXZ0ID0+IHsKKyAg
ICBhc3NlcnRfZXF1YWxzKGV2dC5lbGFwc2VkVGltZSwgMC4wKTsKKyAgfSk7Cit9LCAnQWN0aXZl
IC0+IElkbGUsIG5vIGRlbGF5IChkaXNwbGF5OiBub25lKScpOworCitwcm9taXNlX3Rlc3QodCA9
PiB7CisgIGNvbnN0IHsgdHJhbnNpdGlvbiwgd2F0Y2hlciB9ID0KKyAgICBzZXR1cFRyYW5zaXRp
b24odCwgJ21hcmdpbi1sZWZ0IDEwMHMnKTsKKworICByZXR1cm4gd2F0Y2hlci53YWl0X2Zvcihb
ICd0cmFuc2l0aW9ucnVuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlv
bnN0YXJ0JyBdKS50aGVuKGV2dCA9PiB7CisgICAgLy8gTWFrZSBpZGxlCisgICAgdHJhbnNpdGlv
bi5jdXJyZW50VGltZSA9IDA7CisgICAgdHJhbnNpdGlvbi50aW1lbGluZSA9IG51bGw7CisgICAg
cmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ3RyYW5zaXRpb25jYW5jZWwnKTsKKyAgfSkudGhlbihl
dnQgPT4geworICAgIGFzc2VydF9lcXVhbHMoZXZ0LmVsYXBzZWRUaW1lLCAwLjApOworICB9KTsK
K30sICdBY3RpdmUgLT4gSWRsZSwgbm8gZGVsYXkgKEFuaW1hdGlvbi50aW1lbGluZSA9IG51bGwp
Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyB0cmFuc2l0aW9uLCB3YXRjaGVy
LCBkaXYgfSA9CisgICAgc2V0dXBUcmFuc2l0aW9uKHQsICdtYXJnaW4tbGVmdCAxMDBzIDEwMHMn
KTsKKyAgLy8gUGF1c2Ugc28gdGhlIGN1cnJlbnRUaW1lIGlzIGZpeGVkIGFuZCB3ZSBjYW4gYWNj
dXJhdGVseSBjb21wYXJlIHRoZSBldmVudAorICAvLyB0aW1lIGluIHRyYW5zaXRpb24gY2FuY2Vs
IGV2ZW50cy4KKyAgdHJhbnNpdGlvbi5wYXVzZSgpOworCisgIC8vIFNlZWsgdG8gQWN0aXZlIHBo
YXNlLgorICB0cmFuc2l0aW9uLmN1cnJlbnRUaW1lID0gMTAwICogTVNfUEVSX1NFQzsKKyAgcmV0
dXJuIHdhdGNoZXIud2FpdF9mb3IoWyAndHJhbnNpdGlvbnJ1bicsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3RyYW5zaXRpb25zdGFydCcgXSkudGhlbihldnQgPT4geworICAgIC8vIE1h
a2UgaWRsZQorICAgIGRpdi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworICAgIGZsdXNoQ29tcHV0
ZWRTdHlsZShkaXYpOworICAgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKCd0cmFuc2l0aW9uY2Fu
Y2VsJyk7CisgIH0pLnRoZW4oZXZ0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGV2dC5lbGFwc2Vk
VGltZSwgMC4wKTsKKyAgfSk7Cit9LCAnQWN0aXZlIC0+IElkbGUsIHdpdGggcG9zaXRpdmUgZGVs
YXkgKGRpc3BsYXk6IG5vbmUpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyB0
cmFuc2l0aW9uLCB3YXRjaGVyIH0gPQorICAgIHNldHVwVHJhbnNpdGlvbih0LCAnbWFyZ2luLWxl
ZnQgMTAwcyAxMDBzJyk7CisKKyAgLy8gU2VlayB0byBBY3RpdmUgcGhhc2UuCisgIHRyYW5zaXRp
b24uY3VycmVudFRpbWUgPSAxMDAgKiBNU19QRVJfU0VDOworICByZXR1cm4gd2F0Y2hlci53YWl0
X2ZvcihbICd0cmFuc2l0aW9ucnVuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJh
bnNpdGlvbnN0YXJ0JyBdKS50aGVuKGV2dCA9PiB7CisgICAgLy8gTWFrZSBpZGxlCisgICAgdHJh
bnNpdGlvbi5jdXJyZW50VGltZSA9IDEwMCAqIE1TX1BFUl9TRUM7CisgICAgdHJhbnNpdGlvbi50
aW1lbGluZSA9IG51bGw7CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ3RyYW5zaXRpb25j
YW5jZWwnKTsKKyAgfSkudGhlbihldnQgPT4geworICAgIGFzc2VydF9lcXVhbHMoZXZ0LmVsYXBz
ZWRUaW1lLCAwLjApOworICB9KTsKK30sICdBY3RpdmUgLT4gSWRsZSwgd2l0aCBwb3NpdGl2ZSBk
ZWxheSAoQW5pbWF0aW9uLnRpbWVsaW5lID0gbnVsbCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4g
eworICBjb25zdCB7IHRyYW5zaXRpb24sIHdhdGNoZXIsIGRpdiB9ID0KKyAgICBzZXR1cFRyYW5z
aXRpb24odCwgJ21hcmdpbi1sZWZ0IDEwMHMgLTUwcycpOworCisgIC8vIFBhdXNlIHNvIHRoZSBj
dXJyZW50VGltZSBpcyBmaXhlZCBhbmQgd2UgY2FuIGFjY3VyYXRlbHkgY29tcGFyZSB0aGUgZXZl
bnQKKyAgLy8gdGltZSBpbiB0cmFuc2l0aW9uIGNhbmNlbCBldmVudHMuCisgIHRyYW5zaXRpb24u
cGF1c2UoKTsKKworICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcihbICd0cmFuc2l0aW9ucnVuJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbnN0YXJ0JyBdKS50aGVuKGV2
dCA9PiB7CisgICAgLy8gTWFrZSBpZGxlCisgICAgZGl2LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7
CisgICAgZmx1c2hDb21wdXRlZFN0eWxlKGRpdik7CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9m
b3IoJ3RyYW5zaXRpb25jYW5jZWwnKTsKKyAgfSkudGhlbihldnQgPT4geworICAgIGFzc2VydF9l
cXVhbHMoZXZ0LmVsYXBzZWRUaW1lLCA1MC4wKTsKKyAgfSk7Cit9LCAnQWN0aXZlIC0+IElkbGUs
IHdpdGggbmVnYXRpdmUgZGVsYXkgKGRpc3BsYXk6IG5vbmUpJyk7CisKK3Byb21pc2VfdGVzdCh0
ID0+IHsKKyAgY29uc3QgeyB0cmFuc2l0aW9uLCB3YXRjaGVyIH0gPQorICAgIHNldHVwVHJhbnNp
dGlvbih0LCAnbWFyZ2luLWxlZnQgMTAwcyAtNTBzJyk7CisKKyAgcmV0dXJuIHdhdGNoZXIud2Fp
dF9mb3IoWyAndHJhbnNpdGlvbnJ1bicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Ry
YW5zaXRpb25zdGFydCcgXSkudGhlbihldnQgPT4geworICAgIC8vIE1ha2UgaWRsZQorICAgIHRy
YW5zaXRpb24uY3VycmVudFRpbWUgPSA1MCAqIE1TX1BFUl9TRUM7CisgICAgdHJhbnNpdGlvbi50
aW1lbGluZSA9IG51bGw7CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ3RyYW5zaXRpb25j
YW5jZWwnKTsKKyAgfSkudGhlbihldnQgPT4geworICAgIGFzc2VydF9lcXVhbHMoZXZ0LmVsYXBz
ZWRUaW1lLCAwLjApOworICB9KTsKK30sICdBY3RpdmUgLT4gSWRsZSwgd2l0aCBuZWdhdGl2ZSBk
ZWxheSAoQW5pbWF0aW9uLnRpbWVsaW5lID0gbnVsbCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4g
eworICBjb25zdCB7IHRyYW5zaXRpb24sIHdhdGNoZXIgfSA9CisgICAgc2V0dXBUcmFuc2l0aW9u
KHQsICdtYXJnaW4tbGVmdCAxMDBzIDEwMHMnKTsKKyAgLy8gU2VlayB0byBBY3RpdmUgcGhhc2Uu
CisgIHRyYW5zaXRpb24uY3VycmVudFRpbWUgPSAxMDAgKiBNU19QRVJfU0VDOworICByZXR1cm4g
d2F0Y2hlci53YWl0X2ZvcihbICd0cmFuc2l0aW9ucnVuJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAndHJhbnNpdGlvbnN0YXJ0JyBdKS50aGVuKGV2dCA9PiB7CisgICAgLy8gU2VlayB0
byBCZWZvcmUgcGhhc2UuCisgICAgdHJhbnNpdGlvbi5jdXJyZW50VGltZSA9IDA7CisgICAgcmV0
dXJuIHdhdGNoZXIud2FpdF9mb3IoJ3RyYW5zaXRpb25lbmQnKTsKKyAgfSkudGhlbihldnQgPT4g
eworICAgIGFzc2VydF9lcXVhbHMoZXZ0LmVsYXBzZWRUaW1lLCAwLjApOworICB9KTsKK30sICdB
Y3RpdmUgLT4gQmVmb3JlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyB0cmFu
c2l0aW9uLCB3YXRjaGVyIH0gPQorICAgIHNldHVwVHJhbnNpdGlvbih0LCAnbWFyZ2luLWxlZnQg
MTAwcyAxMDBzJyk7CisgIC8vIFNlZWsgdG8gQWN0aXZlIHBoYXNlLgorICB0cmFuc2l0aW9uLmN1
cnJlbnRUaW1lID0gMTAwICogTVNfUEVSX1NFQzsKKyAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3Io
WyAndHJhbnNpdGlvbnJ1bicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRp
b25zdGFydCcgXSkudGhlbihldnQgPT4geworICAgIC8vIFNlZWsgdG8gQWZ0ZXIgcGhhc2UuCisg
ICAgdHJhbnNpdGlvbi5jdXJyZW50VGltZSA9IDIwMCAqIE1TX1BFUl9TRUM7CisgICAgcmV0dXJu
IHdhdGNoZXIud2FpdF9mb3IoJ3RyYW5zaXRpb25lbmQnKTsKKyAgfSkudGhlbihldnQgPT4gewor
ICAgIGFzc2VydF9lcXVhbHMoZXZ0LmVsYXBzZWRUaW1lLCAxMDAuMCk7CisgIH0pOworfSwgJ0Fj
dGl2ZSAtPiBBZnRlcicpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHsgdHJhbnNp
dGlvbiwgd2F0Y2hlciwgZGl2LCBoYW5kbGVyIH0gPQorICAgIHNldHVwVHJhbnNpdGlvbih0LCAn
bWFyZ2luLWxlZnQgMTAwcyAxMDBzJyk7CisKKyAgLy8gU2VlayB0byBBZnRlciBwaGFzZS4KKyAg
dHJhbnNpdGlvbi5maW5pc2goKTsKKyAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoWyAndHJhbnNp
dGlvbnJ1bicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRpb25zdGFydCcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRpb25lbmQnIF0pLnRoZW4oZXZ0
ID0+IHsKKyAgICAvLyBTZWVrIHRvIEJlZm9yZSBwaGFzZS4KKyAgICB0cmFuc2l0aW9uLmN1cnJl
bnRUaW1lID0gMDsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcihbICd0cmFuc2l0aW9uc3Rh
cnQnLCAndHJhbnNpdGlvbmVuZCcgXSk7CisgIH0pLnRoZW4oZXZ0ID0+IHsKKyAgICBhc3NlcnRf
ZXF1YWxzKGhhbmRsZXIudHJhbnNpdGlvbnN0YXJ0LCAxMDAuMCk7CisgICAgYXNzZXJ0X2VxdWFs
cyhoYW5kbGVyLnRyYW5zaXRpb25lbmQsIDAuMCk7CisgIH0pOworfSwgJ0FmdGVyIC0+IEJlZm9y
ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHsgdHJhbnNpdGlvbiwgd2F0Y2hl
ciB9ID0KKyAgICBzZXR1cFRyYW5zaXRpb24odCwgJ21hcmdpbi1sZWZ0IDEwMHMgMTAwcycpOwor
ICAvLyBTZWVrIHRvIEFmdGVyIHBoYXNlLgorICB0cmFuc2l0aW9uLmZpbmlzaCgpOworICByZXR1
cm4gd2F0Y2hlci53YWl0X2ZvcihbICd0cmFuc2l0aW9ucnVuJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAndHJhbnNpdGlvbnN0YXJ0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAndHJhbnNpdGlvbmVuZCcgXSkudGhlbihldnQgPT4geworICAgIC8vIFNlZWsgdG8gQWN0aXZl
IHBoYXNlLgorICAgIHRyYW5zaXRpb24uY3VycmVudFRpbWUgPSAxMDAgKiBNU19QRVJfU0VDOwor
ICAgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKCd0cmFuc2l0aW9uc3RhcnQnKTsKKyAgfSkudGhl
bihldnQgPT4geworICAgIGFzc2VydF9lcXVhbHMoZXZ0LmVsYXBzZWRUaW1lLCAxMDAuMCk7Cisg
IH0pOworfSwgJ0FmdGVyIC0+IEFjdGl2ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNv
bnN0IHsgdHJhbnNpdGlvbiwgd2F0Y2hlciwgZGl2LCBoYW5kbGVyIH0gPQorICAgIHNldHVwVHJh
bnNpdGlvbih0LCAnbWFyZ2luLWxlZnQgMTAwcyAtNTBzJyk7CisKKyAgcmV0dXJuIHdhdGNoZXIu
d2FpdF9mb3IoWyAndHJhbnNpdGlvbnJ1bicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3RyYW5zaXRpb25zdGFydCcgXSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhoYW5k
bGVyLnRyYW5zaXRpb25ydW4sIDUwLjApOworICAgIGFzc2VydF9lcXVhbHMoaGFuZGxlci50cmFu
c2l0aW9uc3RhcnQsIDUwLjApOworICAgIHRyYW5zaXRpb24uZmluaXNoKCk7CisgICAgcmV0dXJu
IHdhdGNoZXIud2FpdF9mb3IoJ3RyYW5zaXRpb25lbmQnKTsKKyAgfSkudGhlbihldnQgPT4gewor
ICAgIGFzc2VydF9lcXVhbHMoZXZ0LmVsYXBzZWRUaW1lLCAxMDAuMCk7CisgIH0pOworfSwgJ0Nh
bGN1bGF0aW5nIHRoZSBpbnRlcnZhbCBzdGFydCBhbmQgZW5kIHRpbWUgd2l0aCBuZWdhdGl2ZSBz
dGFydCBkZWxheS4nKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB7IHRyYW5zaXRp
b24sIHdhdGNoZXIsIGRpdiwgaGFuZGxlciB9ID0KKyAgICBzZXR1cFRyYW5zaXRpb24odCwgJ21h
cmdpbi1sZWZ0IDEwMHMgMTAwcycpOworCisgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKCd0cmFu
c2l0aW9ucnVuJykudGhlbihldnQgPT4geworICAgIC8vIFdlIGNhbid0IHNldCB0aGUgZW5kIGRl
bGF5IHZpYSBnZW5lcmF0ZWQgZWZmZWN0IHRpbWluZy4KKyAgICAvLyBCZWNhdXNlIENTUy1UcmFu
c2l0aW9uIHVzZSB0aGUgQW5pbWF0aW9uRWZmZWN0VGltaW5nUmVhZE9ubHkuCisgICAgdHJhbnNp
dGlvbi5lZmZlY3QgPSBuZXcgS2V5ZnJhbWVFZmZlY3QoZGl2LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWFyZ2lubGVmdDogWyAnMHB4JywgJzEwMHB4JyBd
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGR1cmF0aW9u
OiAxMDAgKiBNU19QRVJfU0VDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZW5kRGVsYXk6IC01MCAqIE1TX1BFUl9TRUMgfSk7CisgICAgLy8gU2VlayB0byBC
ZWZvcmUgYW5kIHBsYXkuCisgICAgdHJhbnNpdGlvbi5jYW5jZWwoKTsKKyAgICB0cmFuc2l0aW9u
LnBsYXkoKTsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcihbICd0cmFuc2l0aW9uY2FuY2Vs
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9ucnVuJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uc3RhcnQnIF0pOworICB9KS50aGVu
KCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGhhbmRsZXIudHJhbnNpdGlvbnN0YXJ0LCAwLjAp
OworCisgICAgLy8gU2VlayB0byBBZnRlciBwaGFzZS4KKyAgICB0cmFuc2l0aW9uLmZpbmlzaCgp
OworICAgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKCd0cmFuc2l0aW9uZW5kJyk7CisgIH0pLnRo
ZW4oZXZ0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGV2dC5lbGFwc2VkVGltZSwgNTAuMCk7Cisg
IH0pOworfSwgJ0NhbGN1bGF0aW5nIHRoZSBpbnRlcnZhbCBzdGFydCBhbmQgZW5kIHRpbWUgd2l0
aCBuZWdhdGl2ZSBlbmQgZGVsYXkuJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3Qg
eyB0cmFuc2l0aW9uLCB3YXRjaGVyLCBkaXYgfSA9CisgICAgc2V0dXBUcmFuc2l0aW9uKHQsICdt
YXJnaW4tbGVmdCAxMDBzIDEwMHMnKTsKKworICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcigndHJh
bnNpdGlvbnJ1bicpLnRoZW4oKCkgPT4geworICAgIC8vIE1ha2UgaWRsZQorICAgIGRpdi5zdHls
ZS5kaXNwbGF5ID0gJ25vbmUnOworICAgIGZsdXNoQ29tcHV0ZWRTdHlsZShkaXYpOworICAgIHJl
dHVybiB3YXRjaGVyLndhaXRfZm9yKCd0cmFuc2l0aW9uY2FuY2VsJyk7CisgIH0pLnRoZW4oKCkg
PT4geworICAgIHRyYW5zaXRpb24uY2FuY2VsKCk7CisgICAgLy8gVGhlbiB3YWl0IGEgY291cGxl
IG9mIGZyYW1lcyBhbmQgY2hlY2sgdGhhdCBubyBldmVudCB3YXMgZGlzcGF0Y2hlZAorICAgIHJl
dHVybiB3YWl0Rm9yQW5pbWF0aW9uRnJhbWVzKDIpOworICB9KTsKK30sICdDYWxsIEFuaW1hdGlv
bi5jYW5jZWwgYWZ0ZXIgY2FuY2VsbGluZyB0cmFuc2l0aW9uLicpOworCitwcm9taXNlX3Rlc3Qo
dCA9PiB7CisgIGNvbnN0IHsgdHJhbnNpdGlvbiwgd2F0Y2hlciwgZGl2IH0gPQorICAgIHNldHVw
VHJhbnNpdGlvbih0LCAnbWFyZ2luLWxlZnQgMTAwcyAxMDBzJyk7CisKKyAgcmV0dXJuIHdhdGNo
ZXIud2FpdF9mb3IoJ3RyYW5zaXRpb25ydW4nKS50aGVuKGV2dCA9PiB7CisgICAgLy8gTWFrZSBp
ZGxlCisgICAgZGl2LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisgICAgZmx1c2hDb21wdXRlZFN0
eWxlKGRpdik7CisgICAgdHJhbnNpdGlvbi5wbGF5KCk7CisgICAgd2F0Y2hlci53YWl0X2Zvcihb
ICd0cmFuc2l0aW9uY2FuY2VsJywKKyAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRpb25y
dW4nLAorICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbnN0YXJ0JyBdKTsKKyAgfSk7
Cit9LCAnUmVzdGFydCB0cmFuc2l0aW9uIGFmdGVyIGNhbmNlbGxpbmcgdHJhbnNpdGlvbiBpbW1l
ZGlhdGVseScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHsgdHJhbnNpdGlvbiwg
d2F0Y2hlciwgZGl2IH0gPQorICAgIHNldHVwVHJhbnNpdGlvbih0LCAnbWFyZ2luLWxlZnQgMTAw
cyAxMDBzJyk7CisKKyAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ3RyYW5zaXRpb25ydW4nKS50
aGVuKGV2dCA9PiB7CisgICAgLy8gTWFrZSBpZGxlCisgICAgZGl2LnN0eWxlLmRpc3BsYXkgPSAn
bm9uZSc7CisgICAgZmx1c2hDb21wdXRlZFN0eWxlKGRpdik7CisgICAgdHJhbnNpdGlvbi5wbGF5
KCk7CisgICAgdHJhbnNpdGlvbi5jYW5jZWwoKTsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2Zv
cigndHJhbnNpdGlvbmNhbmNlbCcpOworICB9KS50aGVuKGV2dCA9PiB7CisgICAgLy8gVGhlbiB3
YWl0IGEgY291cGxlIG9mIGZyYW1lcyBhbmQgY2hlY2sgdGhhdCBubyBldmVudCB3YXMgZGlzcGF0
Y2hlZAorICAgIHJldHVybiB3YWl0Rm9yQW5pbWF0aW9uRnJhbWVzKDIpOworICB9KTsKK30sICdD
YWxsIEFuaW1hdGlvbi5jYW5jZWwgYWZ0ZXIgcmVzdGFydGluZyB0cmFuc2l0aW9uIGltbWVkaWF0
ZWx5Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyB0cmFuc2l0aW9uLCB3YXRj
aGVyIH0gPQorICAgIHNldHVwVHJhbnNpdGlvbih0LCAnbWFyZ2luLWxlZnQgMTAwcycpOworCisg
IHJldHVybiB3YXRjaGVyLndhaXRfZm9yKFsgJ3RyYW5zaXRpb25ydW4nLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uc3RhcnQnIF0pLnRoZW4oZXZ0ID0+IHsKKyAgICAv
LyBNYWtlIGlkbGUKKyAgICB0cmFuc2l0aW9uLnRpbWVsaW5lID0gbnVsbDsKKyAgICByZXR1cm4g
d2F0Y2hlci53YWl0X2ZvcigndHJhbnNpdGlvbmNhbmNlbCcpOworICB9KS50aGVuKGV2dCA9PiB7
CisgICAgdHJhbnNpdGlvbi50aW1lbGluZSA9IGRvY3VtZW50LnRpbWVsaW5lOworICAgIHRyYW5z
aXRpb24ucGxheSgpOworCisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoWyd0cmFuc2l0aW9u
cnVuJywgJ3RyYW5zaXRpb25zdGFydCddKTsKKyAgfSk7Cit9LCAnU2V0IHRpbWVsaW5lIGFuZCBw
bGF5IHRyYW5zaXRpb24gYWZ0ZXIgY2xlYXIgdGhlIHRpbWVsaW5lJyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKyAgY29uc3QgeyB0cmFuc2l0aW9uLCB3YXRjaGVyLCBkaXYgfSA9CisgICAgc2V0
dXBUcmFuc2l0aW9uKHQsICdtYXJnaW4tbGVmdCAxMDBzJyk7CisKKyAgcmV0dXJuIHdhdGNoZXIu
d2FpdF9mb3IoWyAndHJhbnNpdGlvbnJ1bicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3RyYW5zaXRpb25zdGFydCcgXSkudGhlbigoKSA9PiB7CisgICAgdHJhbnNpdGlvbi5jYW5jZWwo
KTsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcigndHJhbnNpdGlvbmNhbmNlbCcpOworICB9
KS50aGVuKCgpID0+IHsKKyAgICAvLyBNYWtlIEFmdGVyIHBoYXNlCisgICAgdHJhbnNpdGlvbi5l
ZmZlY3QgPSBudWxsOworCisgICAgLy8gVGhlbiB3YWl0IGEgY291cGxlIG9mIGZyYW1lcyBhbmQg
Y2hlY2sgdGhhdCBubyBldmVudCB3YXMgZGlzcGF0Y2hlZAorICAgIHJldHVybiB3YWl0Rm9yQW5p
bWF0aW9uRnJhbWVzKDIpOworICB9KTsKK30sICdTZXQgbnVsbCB0YXJnZXQgZWZmZWN0IGFmdGVy
IGNhbmNlbCB0aGUgdHJhbnNpdGlvbicpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0
IHsgdHJhbnNpdGlvbiwgd2F0Y2hlciwgZGl2IH0gPQorICAgIHNldHVwVHJhbnNpdGlvbih0LCAn
bWFyZ2luLWxlZnQgMTAwcycpOworCisgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKFsgJ3RyYW5z
aXRpb25ydW4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uc3RhcnQn
IF0pLnRoZW4oZXZ0ID0+IHsKKyAgICB0cmFuc2l0aW9uLmVmZmVjdCA9IG51bGw7CisgICAgcmV0
dXJuIHdhdGNoZXIud2FpdF9mb3IoJ3RyYW5zaXRpb25lbmQnKTsKKyAgfSkudGhlbihldnQgPT4g
eworICAgIHRyYW5zaXRpb24uY2FuY2VsKCk7CisKKyAgICAvLyBUaGVuIHdhaXQgYSBjb3VwbGUg
b2YgZnJhbWVzIGFuZCBjaGVjayB0aGF0IG5vIGV2ZW50IHdhcyBkaXNwYXRjaGVkCisgICAgcmV0
dXJuIHdhaXRGb3JBbmltYXRpb25GcmFtZXMoMik7CisgIH0pOworfSwgJ0NhbmNlbCB0aGUgdHJh
bnNpdGlvbiBhZnRlciBjbGVhcmluZyB0aGUgdGFyZ2V0IGVmZmVjdCcpOworCis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemls
bGEvY3NzLXRyYW5zaXRpb25zL3Rlc3Rfa2V5ZnJhbWVlZmZlY3QtZ2V0a2V5ZnJhbWVzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLXRyYW5zaXRpb25zL3Rl
c3Rfa2V5ZnJhbWVlZmZlY3QtZ2V0a2V5ZnJhbWVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
NzE3YWQ1MmZlMzYxZmYzMDQzNGE3MTVmNzVjZGNlYTRlMTJiZmM2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9rZXlm
cmFtZWVmZmVjdC1nZXRrZXlmcmFtZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCitG
QUlMIEtleWZyYW1lRWZmZWN0UmVhZE9ubHkuZ2V0S2V5ZnJhbWVzKCkgcmV0dXJucyBleHBlY3Rl
ZCBmcmFtZXMgZm9yIGEgc2ltcGxlIHRyYW5zaXRpb24gYXNzZXJ0X2VxdWFsczogdmFsdWUgZm9y
ICdlYXNpbmcnIG9uIENvbXB1dGVkS2V5ZnJhbWUgIzAgZXhwZWN0ZWQgImVhc2UiIGJ1dCBnb3Qg
ImxpbmVhciIKK0ZBSUwgS2V5ZnJhbWVFZmZlY3RSZWFkT25seS5nZXRLZXlmcmFtZXMoKSByZXR1
cm5zIGV4cGVjdGVkIGZyYW1lcyBmb3IgYSBzaW1wbGUgdHJhbnNpdGlvbiB3aXRoIGEgbm9uLWRl
ZmF1bHQgZWFzaW5nIGZ1bmN0aW9uIGFzc2VydF9lcXVhbHM6IHZhbHVlIGZvciAnZWFzaW5nJyBv
biBDb21wdXRlZEtleWZyYW1lICMwIGV4cGVjdGVkICJzdGVwcygyKSIgYnV0IGdvdCAibGluZWFy
IgorRkFJTCBLZXlmcmFtZUVmZmVjdFJlYWRPbmx5LmdldEtleWZyYW1lcygpIHJldHVybnMgZXhw
ZWN0ZWQgZnJhbWVzIGZvciBhIHRyYW5zaXRpb24gd2l0aCBhIENTUyB2YXJpYWJsZSBlbmRwb2lu
dCBhc3NlcnRfZXF1YWxzOiB2YWx1ZSBmb3IgJ2Vhc2luZycgb24gQ29tcHV0ZWRLZXlmcmFtZSAj
MCBleHBlY3RlZCAiZWFzZSIgYnV0IGdvdCAibGluZWFyIgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy10cmFuc2l0aW9ucy90ZXN0X2tleWZyYW1lZWZmZWN0
LWdldGtleWZyYW1lcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJh
bnNpdGlvbnMvdGVzdF9rZXlmcmFtZWVmZmVjdC1nZXRrZXlmcmFtZXMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hMmNhNjkyMjk2YWJjYmIzMTQ0NDZlYjkzMWQ0MDRkNjFkZjZhZGVkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9r
ZXlmcmFtZWVmZmVjdC1nZXRrZXlmcmFtZXMuaHRtbApAQCAtMCwwICsxLDEwMyBAQAorPCFkb2N0
eXBlIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVDU1NBbmltYXRpb25zQW5k
Q1NTVHJhbnNpdGlvbnNCYWNrZWRCeVdlYkFuaW1hdGlvbnM9dHJ1ZSBdIC0tPgorPG1ldGEgY2hh
cnNldD11dGYtOD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3Rjb21t
b24uanMiPjwvc2NyaXB0PgorPHN0eWxlPgorOnJvb3QgeworICAtLXZhci0xMDBweDogMTAwcHg7
Cit9Cis8L3N0eWxlPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlwdD4KKyd1
c2Ugc3RyaWN0JzsKKworZnVuY3Rpb24gZ2V0S2V5ZnJhbWVzKGUpIHsKKyAgcmV0dXJuIGUuZ2V0
QW5pbWF0aW9ucygpWzBdLmVmZmVjdC5nZXRLZXlmcmFtZXMoKTsKK30KKworZnVuY3Rpb24gYXNz
ZXJ0X2ZyYW1lc19lcXVhbChhLCBiLCBuYW1lKSB7CisgIGFzc2VydF9lcXVhbHMoT2JqZWN0Lmtl
eXMoYSkuc29ydCgpLnRvU3RyaW5nKCksCisgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoYiku
c29ydCgpLnRvU3RyaW5nKCksCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMgb24gIiArIG5h
bWUpOworICBmb3IgKHZhciBwIGluIGEpIHsKKyAgICBhc3NlcnRfZXF1YWxzKGFbcF0sIGJbcF0s
ICJ2YWx1ZSBmb3IgJyIgKyBwICsgIicgb24gIiArIG5hbWUpOworICB9Cit9CisKK3Rlc3QoZnVu
Y3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRkRGl2KHQpOworCisgIGRpdi5zdHlsZS5sZWZ0ID0g
JzBweCc7CisgIGdldENvbXB1dGVkU3R5bGUoZGl2KS50cmFuc2l0aW9uUHJvcGVydHk7CisgIGRp
di5zdHlsZS50cmFuc2l0aW9uID0gJ2xlZnQgMTAwcyc7CisgIGRpdi5zdHlsZS5sZWZ0ID0gJzEw
MHB4JzsKKworICB2YXIgZnJhbWVzID0gZ2V0S2V5ZnJhbWVzKGRpdik7CisKKyAgYXNzZXJ0X2Vx
dWFscyhmcmFtZXMubGVuZ3RoLCAyLCAibnVtYmVyIG9mIGZyYW1lcyIpOworCisgIHZhciBleHBl
Y3RlZCA9IFsKKyAgICB7IG9mZnNldDogMCwgY29tcHV0ZWRPZmZzZXQ6IDAsIGVhc2luZzogImVh
c2UiLCBjb21wb3NpdGU6IG51bGwsCisgICAgICBsZWZ0OiAiMHB4IiB9LAorICAgIHsgb2Zmc2V0
OiAxLCBjb21wdXRlZE9mZnNldDogMSwgZWFzaW5nOiAibGluZWFyIiwgY29tcG9zaXRlOiBudWxs
LAorICAgICAgbGVmdDogIjEwMHB4IiB9LAorICBdOworCisgIGZvciAodmFyIGkgPSAwOyBpIDwg
ZnJhbWVzLmxlbmd0aDsgaSsrKSB7CisgICAgYXNzZXJ0X2ZyYW1lc19lcXVhbChmcmFtZXNbaV0s
IGV4cGVjdGVkW2ldLCAiQ29tcHV0ZWRLZXlmcmFtZSAjIiArIGkpOworICB9Cit9LCAnS2V5ZnJh
bWVFZmZlY3RSZWFkT25seS5nZXRLZXlmcmFtZXMoKSByZXR1cm5zIGV4cGVjdGVkIGZyYW1lcyBm
b3IgYSBzaW1wbGUnCisgICArICcgdHJhbnNpdGlvbicpOworCit0ZXN0KGZ1bmN0aW9uKHQpIHsK
KyAgdmFyIGRpdiA9IGFkZERpdih0KTsKKworICBkaXYuc3R5bGUubGVmdCA9ICcwcHgnOworICBn
ZXRDb21wdXRlZFN0eWxlKGRpdikudHJhbnNpdGlvblByb3BlcnR5OworICBkaXYuc3R5bGUudHJh
bnNpdGlvbiA9ICdsZWZ0IDEwMHMgc3RlcHMoMixlbmQpJzsKKyAgZGl2LnN0eWxlLmxlZnQgPSAn
MTAwcHgnOworCisgIHZhciBmcmFtZXMgPSBnZXRLZXlmcmFtZXMoZGl2KTsKKworICBhc3NlcnRf
ZXF1YWxzKGZyYW1lcy5sZW5ndGgsIDIsICJudW1iZXIgb2YgZnJhbWVzIik7CisKKyAgdmFyIGV4
cGVjdGVkID0gWworICAgIHsgb2Zmc2V0OiAwLCBjb21wdXRlZE9mZnNldDogMCwgZWFzaW5nOiAi
c3RlcHMoMikiLCBjb21wb3NpdGU6IG51bGwsCisgICAgICBsZWZ0OiAiMHB4IiB9LAorICAgIHsg
b2Zmc2V0OiAxLCBjb21wdXRlZE9mZnNldDogMSwgZWFzaW5nOiAibGluZWFyIiwgY29tcG9zaXRl
OiBudWxsLAorICAgICAgbGVmdDogIjEwMHB4IiB9LAorICBdOworCisgIGZvciAodmFyIGkgPSAw
OyBpIDwgZnJhbWVzLmxlbmd0aDsgaSsrKSB7CisgICAgYXNzZXJ0X2ZyYW1lc19lcXVhbChmcmFt
ZXNbaV0sIGV4cGVjdGVkW2ldLCAiQ29tcHV0ZWRLZXlmcmFtZSAjIiArIGkpOworICB9Cit9LCAn
S2V5ZnJhbWVFZmZlY3RSZWFkT25seS5nZXRLZXlmcmFtZXMoKSByZXR1cm5zIGV4cGVjdGVkIGZy
YW1lcyBmb3IgYSBzaW1wbGUnCisgICArICcgdHJhbnNpdGlvbiB3aXRoIGEgbm9uLWRlZmF1bHQg
ZWFzaW5nIGZ1bmN0aW9uJyk7CisKK3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0gYWRk
RGl2KHQpOworICBkaXYuc3R5bGUubGVmdCA9ICcwcHgnOworICBnZXRDb21wdXRlZFN0eWxlKGRp
dikudHJhbnNpdGlvblByb3BlcnR5OworICBkaXYuc3R5bGUudHJhbnNpdGlvbiA9ICdsZWZ0IDEw
MHMnOworICBkaXYuc3R5bGUubGVmdCA9ICd2YXIoLS12YXItMTAwcHgpJzsKKworICB2YXIgZnJh
bWVzID0gZ2V0S2V5ZnJhbWVzKGRpdik7CisKKyAgLy8gQ1NTIHRyYW5zaXRpb24gZW5kcG9pbnRz
IGFyZSBiYXNlZCBvbiB0aGUgY29tcHV0ZWQgdmFsdWUgc28gd2UKKyAgLy8gc2hvdWxkbid0IHNl
ZSB0aGUgdmFyaWFibGUgcmVmZXJlbmNlCisgIHZhciBleHBlY3RlZCA9IFsKKyAgICB7IG9mZnNl
dDogMCwgY29tcHV0ZWRPZmZzZXQ6IDAsIGVhc2luZzogJ2Vhc2UnLCBjb21wb3NpdGU6IG51bGws
CisgICAgICBsZWZ0OiAnMHB4JyB9LAorICAgIHsgb2Zmc2V0OiAxLCBjb21wdXRlZE9mZnNldDog
MSwgZWFzaW5nOiAnbGluZWFyJywgY29tcG9zaXRlOiBudWxsLAorICAgICAgbGVmdDogJzEwMHB4
JyB9LAorICBdOworICBmb3IgKHZhciBpID0gMDsgaSA8IGZyYW1lcy5sZW5ndGg7IGkrKykgewor
ICAgIGFzc2VydF9mcmFtZXNfZXF1YWwoZnJhbWVzW2ldLCBleHBlY3RlZFtpXSwgIkNvbXB1dGVk
S2V5ZnJhbWUgIyIgKyBpKTsKKyAgfQorfSwgJ0tleWZyYW1lRWZmZWN0UmVhZE9ubHkuZ2V0S2V5
ZnJhbWVzKCkgcmV0dXJucyBleHBlY3RlZCBmcmFtZXMgZm9yIGEnCisgICArICcgdHJhbnNpdGlv
biB3aXRoIGEgQ1NTIHZhcmlhYmxlIGVuZHBvaW50Jyk7CisKKzwvc2NyaXB0PgorPC9ib2R5Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMv
dGVzdF9wc2V1ZG9FbGVtZW50LWdldC1hbmltYXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLXRyYW5zaXRpb25zL3Rlc3RfcHNldWRvRWxlbWVudC1n
ZXQtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY3YjBiMzllMjJlNzdiYWY0
NWNlZGY4M2I3ZGY5ODQwYzM3MjM1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvY3NzLXRyYW5zaXRpb25zL3Rlc3RfcHNldWRvRWxlbWVudC1nZXQtYW5p
bWF0aW9ucy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK0ZBSUwgZ2V0QW5pbWF0aW9u
cyBzb3J0cyBzaW11bHRhbmVvdXMgdHJhbnNpdGlvbnMgYnkgbmFtZSBhc3NlcnRfZXF1YWxzOiBH
b3QgZXhwZWN0ZWQgbnVtYmVyIG9mIGFuaW1hdGlvbnMgb24gZG9jdW1lbnQgZXhwZWN0ZWQgMyBi
dXQgZ290IDAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3Mt
dHJhbnNpdGlvbnMvdGVzdF9wc2V1ZG9FbGVtZW50LWdldC1hbmltYXRpb25zLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy10cmFuc2l0aW9ucy90ZXN0X3BzZXVkb0VsZW1l
bnQtZ2V0LWFuaW1hdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDU2NjVjNjY5NGE0YzE0YThhY2Ni
ZTZiNzVkNTdhMDQ4ODBhZDZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9wc2V1ZG9FbGVtZW50LWdldC1hbmltYXRp
b25zLmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPCFkb2N0eXBlIGh0bWw+PCEtLSB3ZWJraXQtdGVz
dC1ydW5uZXIgWyBlbmFibGVDU1NBbmltYXRpb25zQW5kQ1NTVHJhbnNpdGlvbnNCYWNrZWRCeVdl
YkFuaW1hdGlvbnM9dHJ1ZSBdIC0tPgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3Rjb21tb24uanMiPjwvc2NyaXB0PgorPHN0eWxl
PgorLmluaXQ6OmJlZm9yZSB7CisgIGNvbnRlbnQ6ICcnOworICBoZWlnaHQ6IDBweDsKKyAgd2lk
dGg6IDBweDsKKyAgb3BhY2l0eTogMDsKKyAgdHJhbnNpdGlvbjogYWxsIDEwMHM7Cit9CisuY2hh
bmdlOjpiZWZvcmUgeworICBoZWlnaHQ6IDEwMHB4OworICB3aWR0aDogMTAwcHg7CisgIG9wYWNp
dHk6IDE7Cit9Cis8L3N0eWxlPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlw
dD4KKyd1c2Ugc3RyaWN0JzsKKwordGVzdChmdW5jdGlvbih0KSB7CisgIHZhciBkaXYgPSBhZGRE
aXYodCwgeyBjbGFzczogJ2luaXQnIH0pOworICBmbHVzaENvbXB1dGVkU3R5bGUoZGl2KTsKKyAg
ZGl2LmNsYXNzTGlzdC5hZGQoJ2NoYW5nZScpOworCisgIC8vIFNhbml0eSBjaGVja3MKKyAgYXNz
ZXJ0X2VxdWFscyhkb2N1bWVudC5nZXRBbmltYXRpb25zKCkubGVuZ3RoLCAzLAorICAgICAgICAg
ICAgICAgICdHb3QgZXhwZWN0ZWQgbnVtYmVyIG9mIGFuaW1hdGlvbnMgb24gZG9jdW1lbnQnKTsK
KyAgdmFyIHBzZXVkb1RhcmdldCA9IGRvY3VtZW50LmdldEFuaW1hdGlvbnMoKVswXS5lZmZlY3Qu
dGFyZ2V0OworICBhc3NlcnRfY2xhc3Nfc3RyaW5nKHBzZXVkb1RhcmdldCwgJ0NTU1BzZXVkb0Vs
ZW1lbnQnLAorICAgICAgICAgICAgICAgICAgICAgICdHb3QgcHNldWRvLWVsZW1lbnQgdGFyZ2V0
Jyk7CisKKyAgLy8gQ2hlY2sgYW5pbWF0aW9ucyByZXR1cm5lZCBmcm9tIHRoZSBwc2V1ZG8gZWxl
bWVudCBhcmUgaW4gY29ycmVjdCBvcmRlcgorICB2YXIgYW5pbXMgPSBwc2V1ZG9UYXJnZXQuZ2V0
QW5pbWF0aW9ucygpOworICBhc3NlcnRfZXF1YWxzKGFuaW1zLmxlbmd0aCwgMywKKyAgICAgICAg
ICAgICAgICAnR290IGV4cGVjdGVkIG51bWJlciBvZiBhbmltYXRpb25zIG9uIHBzZXVkby1lbGVt
ZW50Jyk7CisgIGFzc2VydF9lcXVhbHMoYW5pbXNbMF0udHJhbnNpdGlvblByb3BlcnR5LCAnaGVp
Z2h0Jyk7CisgIGFzc2VydF9lcXVhbHMoYW5pbXNbMV0udHJhbnNpdGlvblByb3BlcnR5LCAnb3Bh
Y2l0eScpOworICBhc3NlcnRfZXF1YWxzKGFuaW1zWzJdLnRyYW5zaXRpb25Qcm9wZXJ0eSwgJ3dp
ZHRoJyk7Cit9LCAnZ2V0QW5pbWF0aW9ucyBzb3J0cyBzaW11bHRhbmVvdXMgdHJhbnNpdGlvbnMg
YnkgbmFtZScpOworCis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvY3NzLXRyYW5zaXRpb25zL3Rlc3Rfc2V0dGluZy1lZmZlY3QuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLXRyYW5zaXRpb25zL3Rlc3Rfc2V0
dGluZy1lZmZlY3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGQ5MDljYjk5NTVkMjkxODNlY2U1MmE5ZDU4
NTZmYWRiNzkzYTVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96
aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9zZXR0aW5nLWVmZmVjdC5odG1sCkBAIC0wLDAgKzEs
MTAyIEBACis8IWRvY3R5cGUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUNT
U0FuaW1hdGlvbnNBbmRDU1NUcmFuc2l0aW9uc0JhY2tlZEJ5V2ViQW5pbWF0aW9ucz10cnVlIF0g
LS0+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdGVzdGNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImxvZyI+PC9k
aXY+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkg
eworICB2YXIgZGl2ID0gYWRkRGl2KHQpOworICB2YXIgd2F0Y2hlciA9IG5ldyBFdmVudFdhdGNo
ZXIodCwgZGl2LCBbICd0cmFuc2l0aW9uZW5kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbmNhbmNlbCcgXSk7CisgIGRpdi5zdHlsZS5sZWZ0
ID0gJzBweCc7CisKKyAgZGl2LnN0eWxlLnRyYW5zaXRpb24gPSAnbGVmdCAxMDBzJzsKKyAgZmx1
c2hDb21wdXRlZFN0eWxlKGRpdik7CisgIGRpdi5zdHlsZS5sZWZ0ID0gJzEwMHB4JzsKKworICB2
YXIgdHJhbnNpdGlvbiA9IGRpdi5nZXRBbmltYXRpb25zKClbMF07CisgIHJldHVybiB0cmFuc2l0
aW9uLnJlYWR5LnRoZW4oZnVuY3Rpb24oKSB7CisgICAgdHJhbnNpdGlvbi5jdXJyZW50VGltZSA9
IDUwICogTVNfUEVSX1NFQzsKKyAgICB0cmFuc2l0aW9uLmVmZmVjdCA9IG51bGw7CisgICAgYXNz
ZXJ0X2VxdWFscyh0cmFuc2l0aW9uLnRyYW5zaXRpb25Qcm9wZXJ0eSwgJ2xlZnQnKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHRyYW5zaXRpb24ucGxheVN0YXRlLCAnZmluaXNoZWQnKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGdldENvbXB1dGVkU3R5bGUoZGl2KS5sZWZ0LCAnMTAwcHgnKTsKKyAgICByZXR1
cm4gd2F0Y2hlci53YWl0X2ZvcigndHJhbnNpdGlvbmVuZCcpOworICB9KTsKK30sICdUZXN0IGZv
ciByZW1vdmluZyBhIHRyYW5zaXRpb24gZWZmZWN0Jyk7CisKK3Byb21pc2VfdGVzdChmdW5jdGlv
bih0KSB7CisgIHZhciBkaXYgPSBhZGREaXYodCk7CisgIHZhciB3YXRjaGVyID0gbmV3IEV2ZW50
V2F0Y2hlcih0LCBkaXYsIFsgJ3RyYW5zaXRpb25lbmQnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uY2FuY2VsJyBdKTsKKyAgZGl2LnN0eWxl
LmxlZnQgPSAnMHB4JzsKKworICBkaXYuc3R5bGUudHJhbnNpdGlvbiA9ICdsZWZ0IDEwMHMnOwor
ICBmbHVzaENvbXB1dGVkU3R5bGUoZGl2KTsKKyAgZGl2LnN0eWxlLmxlZnQgPSAnMTAwcHgnOwor
CisgIHZhciB0cmFuc2l0aW9uID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKyAgcmV0dXJuIHRy
YW5zaXRpb24ucmVhZHkudGhlbihmdW5jdGlvbigpIHsKKyAgICB0cmFuc2l0aW9uLmN1cnJlbnRU
aW1lID0gNTAgKiBNU19QRVJfU0VDOworICAgIHRyYW5zaXRpb24uZWZmZWN0ID0gbmV3IEtleWZy
YW1lRWZmZWN0KGRpdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7IG1hcmdpbkxlZnQ6IFsgJzBweCcgLCAnMTAwcHgnXSB9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEwMCAqIE1TX1BFUl9TRUMpOworICAgIGFzc2VydF9l
cXVhbHModHJhbnNpdGlvbi50cmFuc2l0aW9uUHJvcGVydHksICdsZWZ0Jyk7CisgICAgYXNzZXJ0
X2VxdWFscyh0cmFuc2l0aW9uLnBsYXlTdGF0ZSwgJ3J1bm5pbmcnKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGdldENvbXB1dGVkU3R5bGUoZGl2KS5sZWZ0LCAnMTAwcHgnKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGdldENvbXB1dGVkU3R5bGUoZGl2KS5tYXJnaW5MZWZ0LCAnNTBweCcpOworICB9KTsKK30s
ICdUZXN0IGZvciByZXBsYWNpbmcgdGhlIHRyYW5zaXRpb24gZWZmZWN0IGJ5IGEgbmV3IGtleWZy
YW1lIGVmZmVjdCcpOworCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgeworICB2YXIgZGl2ID0g
YWRkRGl2KHQpOworICB2YXIgd2F0Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIodCwgZGl2LCBbICd0
cmFuc2l0aW9uZW5kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAndHJhbnNpdGlvbmNhbmNlbCcgXSk7CisgIGRpdi5zdHlsZS5sZWZ0ID0gJzBweCc7CisgIGRp
di5zdHlsZS53aWR0aCA9ICcwcHgnOworCisgIGRpdi5zdHlsZS50cmFuc2l0aW9uID0gJ2xlZnQg
MTAwcyc7CisgIGZsdXNoQ29tcHV0ZWRTdHlsZShkaXYpOworICBkaXYuc3R5bGUubGVmdCA9ICcx
MDBweCc7CisKKyAgdmFyIHRyYW5zaXRpb24gPSBkaXYuZ2V0QW5pbWF0aW9ucygpWzBdOworICBy
ZXR1cm4gdHJhbnNpdGlvbi5yZWFkeS50aGVuKGZ1bmN0aW9uKCkgeworICAgIHRyYW5zaXRpb24u
Y3VycmVudFRpbWUgPSA1MCAqIE1TX1BFUl9TRUM7CisgICAgdHJhbnNpdGlvbi5lZmZlY3QgPSBu
ZXcgS2V5ZnJhbWVFZmZlY3QoZGl2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsgbWFyZ2luTGVmdDogWyAnMHB4JyAsICcxMDBweCddIH0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAgKiBNU19QRVJfU0VDKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHRyYW5zaXRpb24ucGxheVN0YXRlLCAnZmluaXNoZWQnKTsKKyAgfSk7Cit9
LCAnVGVzdCBmb3Igc2V0dGluZyBhIG5ldyBrZXlmcmFtZSBlZmZlY3Qgd2l0aCBhIHNob3J0ZXIg
ZHVyYXRpb24nKTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgdmFyIGRpdiA9IGFk
ZERpdih0KTsKKyAgdmFyIHdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVyKHQsIGRpdiwgWyAndHJh
bnNpdGlvbmVuZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3RyYW5zaXRpb25jYW5jZWwnIF0pOworICBkaXYuc3R5bGUubGVmdCA9ICcwcHgnOworICBkaXYu
c3R5bGUud2lkdGggPSAnMHB4JzsKKworICBkaXYuc3R5bGUudHJhbnNpdGlvbiA9ICdsZWZ0IDEw
MHMnOworICBmbHVzaENvbXB1dGVkU3R5bGUoZGl2KTsKKyAgZGl2LnN0eWxlLmxlZnQgPSAnMTAw
cHgnOworCisgIHZhciB0cmFuc2l0aW9uID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKyAgYXNz
ZXJ0X3RydWUodHJhbnNpdGlvbi5wZW5kaW5nKTsKKworICB0cmFuc2l0aW9uLmVmZmVjdCA9IG5l
dyBLZXlmcmFtZUVmZmVjdChkaXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsgbWFyZ2luTGVmdDogWyAnMHB4JyAsICcxMDBweCddIH0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMCAqIE1TX1BFUl9TRUMpOworICBhc3NlcnRf
ZXF1YWxzKHRyYW5zaXRpb24udHJhbnNpdGlvblByb3BlcnR5LCAnbGVmdCcpOworICBhc3NlcnRf
dHJ1ZSh0cmFuc2l0aW9uLnBlbmRpbmcpOworCisgIHJldHVybiB0cmFuc2l0aW9uLnJlYWR5LnRo
ZW4oZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X2ZhbHNlKHRyYW5zaXRpb24ucGVuZGluZyk7Cisg
IH0pOworfSwgJ1Rlc3QgZm9yIHNldHRpbmcgYSBuZXcga2V5ZnJhbWUgZWZmZWN0IHRvIGEgcGVu
ZGluZyB0cmFuc2l0aW9uJyk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9yZXNvdXJjZXMvdGVzdGNvbW1vbi5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvcmVzb3VyY2VzL3Rlc3Rjb21tb24uanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2M1MDY2ZmM0MzVlNDQzZGY4MTdmZmVmNDYwZjQzYmEwYzI4NjA5MgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvcmVzb3VyY2VzL3Rlc3Rjb21tb24u
anMKQEAgLTAsMCArMSw0MzIgQEAKKy8qIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNhdGVkIHRvIHRo
ZSBQdWJsaWMgRG9tYWluLgorICogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9t
YWluL3plcm8vMS4wLyAqLworCisvKioKKyAqIFVzZSB0aGlzIHZhcmlhYmxlIGlmIHlvdSBzcGVj
aWZ5IGR1cmF0aW9uIG9yIHNvbWUgb3RoZXIgcHJvcGVydGllcworICogZm9yIHNjcmlwdCBhbmlt
YXRpb24uCisgKiBFLmcuLCBkaXYuYW5pbWF0ZSh7IG9wYWNpdHk6IFswLCAxXSB9LCAxMDAgKiBN
U19QRVJfU0VDKTsKKyAqCisgKiBOT1RFOiBDcmVhdGluZyBhbmltYXRpb25zIHdpdGggc2hvcnQg
ZHVyYXRpb24gbWF5IGNhdXNlIGludGVybWl0dGVudAorICogZmFpbHVyZXMgaW4gYXN5bmNocm9u
b3VzIHRlc3QuIEZvciBleGFtcGxlLCB0aGUgc2hvcnQgZHVyYXRpb24gYW5pbWF0aW9uCisgKiBt
aWdodCBiZSBmaW5pc2hlZCB3aGVuIGFuaW1hdGlvbi5yZWFkeSBoYXMgYmVlbiBmdWxmaWxsZWQg
YmVjYXVzZSBvZiBzbG93CisgKiBwbGF0Zm9ybXMgb3IgYnVzeW5lc3Mgb2YgdGhlIG1haW4gdGhy
ZWFkLgorICogU2V0dGluZyBzaG9ydCBkdXJhdGlvbiB0byBjYW5jZWwgaXRzIGFuaW1hdGlvbiBk
b2VzIG5vdCBtYXR0ZXIgYnV0CisgKiBpZiB5b3UgZG9uJ3Qgd2FudCB0byBjYW5jZWwgdGhlIGFu
aW1hdGlvbiwgY29uc2lkZXIgdXNpbmcgbG9uZ2VyIGR1cmF0aW9uLgorICovCitjb25zdCBNU19Q
RVJfU0VDID0gMTAwMDsKKworLyogVGhlIHJlY29tbWVuZGVkIG1pbmltdW0gcHJlY2lzaW9uIHRv
IHVzZSBmb3IgdGltZSB2YWx1ZXNbMV0uCisgKgorICogWzFdIGh0dHBzOi8vZHJhZnRzLmNzc3dn
Lm9yZy93ZWItYW5pbWF0aW9ucy8jcHJlY2lzaW9uLW9mLXRpbWUtdmFsdWVzCisgKi8KK3ZhciBU
SU1FX1BSRUNJU0lPTiA9IDAuMDAwNTsgLy8gbXMKKworLyoKKyAqIEFsbG93IGltcGxlbWVudGF0
aW9ucyB0byBzdWJzdGl0dXRlIGFuIGFsdGVybmF0aXZlIG1ldGhvZCBmb3IgY29tcGFyaW5nCisg
KiB0aW1lcyBiYXNlZCBvbiB0aGVpciBwcmVjaXNpb24gcmVxdWlyZW1lbnRzLgorICovCitmdW5j
dGlvbiBhc3NlcnRfdGltZXNfZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pIHsK
KyAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwgVElNRV9QUkVDSVNJT04g
KiAyLCBkZXNjcmlwdGlvbik7Cit9CisKKy8qCisgKiBDb21wYXJlIGEgdGltZSB2YWx1ZSBiYXNl
ZCBvbiBpdHMgcHJlY2lzaW9uIHJlcXVpcmVtZW50cyB3aXRoIGEgZml4ZWQgdmFsdWUuCisgKi8K
K2Z1bmN0aW9uIGFzc2VydF90aW1lX2VxdWFsc19saXRlcmFsKGFjdHVhbCwgZXhwZWN0ZWQsIGRl
c2NyaXB0aW9uKSB7CisgIGFzc2VydF9hcHByb3hfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIFRJ
TUVfUFJFQ0lTSU9OLCBkZXNjcmlwdGlvbik7Cit9CisKKy8qCisgKiBDb21wYXJlIG1hdHJpeCBz
dHJpbmcgbGlrZSAnbWF0cml4KDEsIDAsIDAsIDEsIDEwMCwgMCknLgorICogVGhpcyBmdW5jdGlv
biBhbGxvd3MgZXJyb3IsIDAuMDEsIGJlY2F1c2Ugb24gQW5kcm9pZCB3aGVuIHdlIGFyZSBzY2Fs
aW5nIGRvd24KKyAqIHRoZSBkb2N1bWVudCwgaXQgcmVzdWx0cyBpbiBzb21lIGVycm9ycy4KKyAq
LworZnVuY3Rpb24gYXNzZXJ0X21hdHJpeF9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3Jp
cHRpb24pIHsKKyAgdmFyIG1hdHJpeFJlZ0V4cCA9IC9ebWF0cml4XCgoLispLCguKyksKC4rKSwo
LispLCguKyksKC4rKVwpLzsKKyAgYXNzZXJ0X3JlZ2V4cF9tYXRjaChhY3R1YWwsIG1hdHJpeFJl
Z0V4cCwKKyAgICAnQWN0dWFsIHZhbHVlIHNob3VsZCBiZSBhIG1hdHJpeCcpCisgIGFzc2VydF9y
ZWdleHBfbWF0Y2goZXhwZWN0ZWQsIG1hdHJpeFJlZ0V4cCwKKyAgICAnRXhwZWN0ZWQgdmFsdWUg
c2hvdWxkIGJlIGEgbWF0cml4Jyk7CisKKyAgdmFyIGFjdHVhbE1hdHJpeEFycmF5ID0gYWN0dWFs
Lm1hdGNoKG1hdHJpeFJlZ0V4cCkuc2xpY2UoMSkubWFwKE51bWJlcik7CisgIHZhciBleHBlY3Rl
ZE1hdHJpeEFycmF5ID0gZXhwZWN0ZWQubWF0Y2gobWF0cml4UmVnRXhwKS5zbGljZSgxKS5tYXAo
TnVtYmVyKTsKKworICBhc3NlcnRfZXF1YWxzKGFjdHVhbE1hdHJpeEFycmF5Lmxlbmd0aCwgZXhw
ZWN0ZWRNYXRyaXhBcnJheS5sZW5ndGgsCisgICAgJ0FycmF5IGxlbmd0aHMgc2hvdWxkIGJlIGVx
dWFsIChnb3QgXCcnICsgZXhwZWN0ZWQgKyAnXCcgYW5kIFwnJyArIGFjdHVhbCArCisgICAgJ1wn
KTogJyArIGRlc2NyaXB0aW9uKTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3R1YWxNYXRyaXhB
cnJheS5sZW5ndGg7IGkrKykgeworICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGFjdHVhbE1hdHJp
eEFycmF5W2ldLCBleHBlY3RlZE1hdHJpeEFycmF5W2ldLCAwLjAxLAorICAgICAgJ01hdHJpeCBh
cnJheSBzaG91bGQgYmUgZXF1YWwgKGdvdCBcJycgKyBleHBlY3RlZCArICdcJyBhbmQgXCcnICsg
YWN0dWFsICsKKyAgICAgICdcJyk6ICcgKyBkZXNjcmlwdGlvbik7CisgIH0KK30KKworLyoqCisg
KiBDb21wYXJlIGdpdmVuIHZhbHVlcyB3aGljaCBhcmUgc2FtZSBmb3JtYXQgb2YKKyAqIEtleWZy
YW1lRWZmZWN0UmVhZG9ubHk6OkdldFByb3BlcnRpZXMuCisgKi8KK2Z1bmN0aW9uIGFzc2VydF9w
cm9wZXJ0aWVzX2VxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgYXNzZXJ0X2VxdWFscyhhY3R1
YWwubGVuZ3RoLCBleHBlY3RlZC5sZW5ndGgpOworCisgIGNvbnN0IGNvbXBhcmVQcm9wZXJ0aWVz
ID0gKGEsIGIpID0+CisgICAgYS5wcm9wZXJ0eSA9PSBiLnByb3BlcnR5ID8gMCA6IChhLnByb3Bl
cnR5IDwgYi5wcm9wZXJ0eSA/IC0xIDogMSk7CisKKyAgY29uc3Qgc29ydGVkQWN0dWFsICAgPSBh
Y3R1YWwuc29ydChjb21wYXJlUHJvcGVydGllcyk7CisgIGNvbnN0IHNvcnRlZEV4cGVjdGVkID0g
ZXhwZWN0ZWQuc29ydChjb21wYXJlUHJvcGVydGllcyk7CisKKyAgY29uc3Qgc2VyaWFsaXplVmFs
dWVzID0gdmFsdWVzID0+CisgICAgdmFsdWVzLm1hcCh2YWx1ZSA9PgorICAgICAgJ3sgJyArCisg
ICAgICAgICAgWyAnb2Zmc2V0JywgJ3ZhbHVlJywgJ2Vhc2luZycsICdjb21wb3NpdGUnIF0ubWFw
KAorICAgICAgICAgICAgbWVtYmVyID0+IGAke21lbWJlcn06ICR7dmFsdWVbbWVtYmVyXX1gCisg
ICAgICAgICAgKS5qb2luKCcsICcpICsKKyAgICAgICAgICAgICAgICAgICAgICAnIH0nKQorICAg
ICAgICAgIC5qb2luKCcsICcpOworCisgIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydGVkQWN0dWFs
Lmxlbmd0aDsgaSsrKSB7CisgICAgYXNzZXJ0X2VxdWFscyhzb3J0ZWRBY3R1YWxbaV0ucHJvcGVy
dHksCisgICAgICAgICAgICAgICAgICBzb3J0ZWRFeHBlY3RlZFtpXS5wcm9wZXJ0eSwKKyAgICAg
ICAgICAgICAgICAgICdDU1MgcHJvcGVydHkgbmFtZSBzaG91bGQgbWF0Y2gnKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHNlcmlhbGl6ZVZhbHVlcyhzb3J0ZWRBY3R1YWxbaV0udmFsdWVzKSwKKyAgICAg
ICAgICAgICAgICAgIHNlcmlhbGl6ZVZhbHVlcyhzb3J0ZWRFeHBlY3RlZFtpXS52YWx1ZXMpLAor
ICAgICAgICAgICAgICAgICAgYFZhbHVlcyBhcnJheXMgZG8gbm90IG1hdGNoIGZvciBgCisgICAg
ICAgICAgICAgICAgICArIGAke3NvcnRlZEFjdHVhbFtpXS5wcm9wZXJ0eX0gcHJvcGVydHlgKTsK
KyAgfQorfQorCisvKioKKyAqIENvbnN0cnVjdCBhIG9iamVjdCB3aGljaCBpcyBzYW1lIHRvIGEg
dmFsdWUgb2YKKyAqIEtleWZyYW1lRWZmZWN0UmVhZG9ubHk6OkdldFByb3BlcnRpZXMoKS4KKyAq
IFRoZSBtZXRob2QgcmV0dXJucyB1bmRlZmluZWQgYXMgYSB2YWx1ZSBpbiBjYXNlIG9mIG1pc3Np
bmcga2V5ZnJhbWUuCisgKiBUaGVyZWZvciwgd2UgY2FuIHVzZSB1bmRlZmluZWQgZm9yIHx2YWx1
ZXwgYW5kIHxlYXNpbmd8IHBhcmFtZXRlci4KKyAqIEBwYXJhbSBvZmZzZXQgLSBrZXlmcmFtZSBv
ZmZzZXQuIGUuZy4gMC4xCisgKiBAcGFyYW0gdmFsdWUgLSBhbnkga2V5ZnJhbWUgdmFsdWUuIGUu
Zy4gdW5kZWZpbmVkICcxcHgnLCAnY2VudGVyJywgMC41CisgKiBAcGFyYW0gY29tcG9zaXRlIC0g
J3JlcGxhY2UnLCAnYWRkJywgJ2FjY3VtdWxhdGUnCisgKiBAcGFyYW0gZWFzaW5nIC0gZS5nLiB1
bmRlZmluZWQsICdsaW5lYXInLCAnZWFzZScgYW5kIHNvIG9uCisgKiBAcmV0dXJuIE9iamVjdCAt
CisgKiAgIGUuZy4geyBvZmZzZXQ6IDAuMSwgdmFsdWU6ICcxcHgnLCBjb21wb3NpdGU6ICdyZXBs
YWNlJywgZWFzaW5nOiAnZWFzZSd9CisgKi8KK2Z1bmN0aW9uIHZhbHVlRm9ybWF0KG9mZnNldCwg
dmFsdWUsIGNvbXBvc2l0ZSwgZWFzaW5nKSB7CisgIHJldHVybiB7IG9mZnNldDogb2Zmc2V0LCB2
YWx1ZTogdmFsdWUsIGVhc2luZzogZWFzaW5nLCBjb21wb3NpdGU6IGNvbXBvc2l0ZSB9OworfQor
CisvKioKKyAqIEFwcGVuZHMgYSBkaXYgdG8gdGhlIGRvY3VtZW50IGJvZHkgYW5kIGNyZWF0ZXMg
YW4gYW5pbWF0aW9uIG9uIHRoZSBkaXYuCisgKiBOT1RFOiBUaGlzIGZ1bmN0aW9uIGFzc2VydHMg
d2hlbiB0cnlpbmcgdG8gY3JlYXRlIGFuaW1hdGlvbnMgd2l0aCBkdXJhdGlvbnMKKyAqIHNob3J0
ZXIgdGhhbiAxMDBzIGJlY2F1c2UgdGhlIHNob3J0ZXIgZHVyYXRpb24gbWF5IGNhdXNlIGludGVy
bWl0dGVudAorICogZmFpbHVyZXMuICBJZiB5b3UgYXJlIG5vdCBzdXJlIGhvdyBsb25nIGl0IGlz
IHN1aXRhYmxlLCB1c2UgMTAwczsgaXQncworICogbG9uZyBlbm91Z2ggYnV0IHNob3J0ZXIgdGhh
biBvdXIgdGVzdCBmcmFtZXdvcmsgdGltZW91dCAoMzMwcykuCisgKiBJZiB5b3UgcmVhbGx5IG5l
ZWQgdG8gdXNlIHNob3J0ZXIgZHVyYXRpb25zLCB1c2UgYW5pbWF0ZSgpIGZ1bmN0aW9uIGRpcmVj
dGx5LgorICoKKyAqIEBwYXJhbSB0ICBUaGUgdGVzdGhhcm5lc3MuanMgVGVzdCBvYmplY3QuIElm
IHByb3ZpZGVkLCB0aGlzIHdpbGwgYmUgdXNlZAorICogICAgICAgICAgIHRvIHJlZ2lzdGVyIGEg
Y2xlYW51cCBjYWxsYmFjayB0byByZW1vdmUgdGhlIGRpdiB3aGVuIHRoZSB0ZXN0CisgKiAgICAg
ICAgICAgZmluaXNoZXMuCisgKiBAcGFyYW0gYXR0cnMgIEEgZGljdGlvbmFyeSBvYmplY3Qgd2l0
aCBhdHRyaWJ1dGUgbmFtZXMgYW5kIHZhbHVlcyB0byBzZXQgb24KKyAqICAgICAgICAgICAgICAg
dGhlIGRpdi4KKyAqIEBwYXJhbSBmcmFtZXMgIFRoZSBrZXlmcmFtZXMgcGFzc2VkIHRvIEVsZW1l
bnQuYW5pbWF0ZSgpLgorICogQHBhcmFtIG9wdGlvbnMgIFRoZSBvcHRpb25zIHBhc3NlZCB0byBF
bGVtZW50LmFuaW1hdGUoKS4KKyAqLworZnVuY3Rpb24gYWRkRGl2QW5kQW5pbWF0ZSh0LCBhdHRy
cywgZnJhbWVzLCBvcHRpb25zKSB7CisgIGxldCBhbmltRHVyID0gKHR5cGVvZiBvcHRpb25zID09
PSAnb2JqZWN0JykgPworICAgIG9wdGlvbnMuZHVyYXRpb24gOiBvcHRpb25zOworICBhc3NlcnRf
Z3JlYXRlcl90aGFuX2VxdWFsKGFuaW1EdXIsIDEwMCAqIE1TX1BFUl9TRUMsCisgICAgICAnQ2xp
ZW50cyBvZiB0aGlzIGFkZERpdkFuZEFuaW1hdGUgQVBJIG11c3QgcmVxdWVzdCBhIGR1cmF0aW9u
ICcgKworICAgICAgJ29mIGF0IGxlYXN0IDEwMHMsIHRvIGF2b2lkIGludGVybWl0dGVudCBmYWls
dXJlcyBmcm9tIGUuZy4nICsKKyAgICAgICd0aGUgbWFpbiB0aHJlYWQgYmVpbmcgYnVzeSBmb3Ig
YW4gZXh0ZW5kZWQgcGVyaW9kJyk7CisKKyAgcmV0dXJuIGFkZERpdih0LCBhdHRycykuYW5pbWF0
ZShmcmFtZXMsIG9wdGlvbnMpOworfQorCisvKioKKyAqIEFwcGVuZHMgYSBkaXYgdG8gdGhlIGRv
Y3VtZW50IGJvZHkuCisgKgorICogQHBhcmFtIHQgIFRoZSB0ZXN0aGFybmVzcy5qcyBUZXN0IG9i
amVjdC4gSWYgcHJvdmlkZWQsIHRoaXMgd2lsbCBiZSB1c2VkCisgKiAgICAgICAgICAgdG8gcmVn
aXN0ZXIgYSBjbGVhbnVwIGNhbGxiYWNrIHRvIHJlbW92ZSB0aGUgZGl2IHdoZW4gdGhlIHRlc3QK
KyAqICAgICAgICAgICBmaW5pc2hlcy4KKyAqCisgKiBAcGFyYW0gYXR0cnMgIEEgZGljdGlvbmFy
eSBvYmplY3Qgd2l0aCBhdHRyaWJ1dGUgbmFtZXMgYW5kIHZhbHVlcyB0byBzZXQgb24KKyAqICAg
ICAgICAgICAgICAgdGhlIGRpdi4KKyAqLworZnVuY3Rpb24gYWRkRGl2KHQsIGF0dHJzKSB7Cisg
IHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgaWYgKGF0dHJzKSB7
CisgICAgZm9yICh2YXIgYXR0ck5hbWUgaW4gYXR0cnMpIHsKKyAgICAgIGRpdi5zZXRBdHRyaWJ1
dGUoYXR0ck5hbWUsIGF0dHJzW2F0dHJOYW1lXSk7CisgICAgfQorICB9CisgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoZGl2KTsKKyAgaWYgKHQgJiYgdHlwZW9mIHQuYWRkX2NsZWFudXAgPT09
ICdmdW5jdGlvbicpIHsKKyAgICB0LmFkZF9jbGVhbnVwKGZ1bmN0aW9uKCkgeworICAgICAgaWYg
KGRpdi5wYXJlbnROb2RlKSB7CisgICAgICAgIGRpdi5yZW1vdmUoKTsKKyAgICAgIH0KKyAgICB9
KTsKKyAgfQorICByZXR1cm4gZGl2OworfQorCisvKioKKyAqIEFwcGVuZHMgYSBzdHlsZSBkaXYg
dG8gdGhlIGRvY3VtZW50IGhlYWQuCisgKgorICogQHBhcmFtIHQgIFRoZSB0ZXN0aGFybmVzcy5q
cyBUZXN0IG9iamVjdC4gSWYgcHJvdmlkZWQsIHRoaXMgd2lsbCBiZSB1c2VkCisgKiAgICAgICAg
ICAgdG8gcmVnaXN0ZXIgYSBjbGVhbnVwIGNhbGxiYWNrIHRvIHJlbW92ZSB0aGUgc3R5bGUgZWxl
bWVudAorICogICAgICAgICAgIHdoZW4gdGhlIHRlc3QgZmluaXNoZXMuCisgKgorICogQHBhcmFt
IHJ1bGVzICBBIGRpY3Rpb25hcnkgb2JqZWN0IHdpdGggc2VsZWN0b3IgbmFtZXMgYW5kIHJ1bGVz
IHRvIHNldCBvbgorICogICAgICAgICAgICAgICB0aGUgc3R5bGUgc2hlZXQuCisgKi8KK2Z1bmN0
aW9uIGFkZFN0eWxlKHQsIHJ1bGVzKSB7CisgIHZhciBleHRyYVN0eWxlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnc3R5bGUnKTsKKyAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChleHRyYVN0
eWxlKTsKKyAgaWYgKHJ1bGVzKSB7CisgICAgdmFyIHNoZWV0ID0gZXh0cmFTdHlsZS5zaGVldDsK
KyAgICBmb3IgKHZhciBzZWxlY3RvciBpbiBydWxlcykgeworICAgICAgc2hlZXQuaW5zZXJ0UnVs
ZShzZWxlY3RvciArICd7JyArIHJ1bGVzW3NlbGVjdG9yXSArICd9JywKKyAgICAgICAgICAgICAg
ICAgICAgICAgc2hlZXQuY3NzUnVsZXMubGVuZ3RoKTsKKyAgICB9CisgIH0KKworICBpZiAodCAm
JiB0eXBlb2YgdC5hZGRfY2xlYW51cCA9PT0gJ2Z1bmN0aW9uJykgeworICAgIHQuYWRkX2NsZWFu
dXAoZnVuY3Rpb24oKSB7CisgICAgICBleHRyYVN0eWxlLnJlbW92ZSgpOworICAgIH0pOworICB9
Cit9CisKKy8qKgorICogVGFrZXMgYSBDU1MgcHJvcGVydHkgKGUuZy4gbWFyZ2luLWxlZnQpIGFu
ZCByZXR1cm5zIHRoZSBlcXVpdmFsZW50IElETAorICogbmFtZSAoZS5nLiBtYXJnaW5MZWZ0KS4K
KyAqLworZnVuY3Rpb24gcHJvcGVydHlUb0lETChwcm9wZXJ0eSkgeworICB2YXIgcHJlZml4TWF0
Y2ggPSBwcm9wZXJ0eS5tYXRjaCgvXi0oXHcrKS0vKTsKKyAgaWYgKHByZWZpeE1hdGNoKSB7Cisg
ICAgdmFyIHByZWZpeCA9IHByZWZpeE1hdGNoWzFdID09PSAnbW96JyA/ICdNb3onIDogcHJlZml4
TWF0Y2hbMV07CisgICAgcHJvcGVydHkgPSBwcmVmaXggKyBwcm9wZXJ0eS5zdWJzdHJpbmcocHJl
Zml4TWF0Y2hbMF0ubGVuZ3RoIC0gMSk7CisgIH0KKyAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cu
b3JnL2Nzc29tLyNjc3MtcHJvcGVydHktdG8taWRsLWF0dHJpYnV0ZQorICByZXR1cm4gcHJvcGVy
dHkucmVwbGFjZSgvLShbYS16XSkvZ2ksIGZ1bmN0aW9uKHN0ciwgZ3JvdXApIHsKKyAgICByZXR1
cm4gZ3JvdXAudG9VcHBlckNhc2UoKTsKKyAgfSk7Cit9CisKKy8qKgorICogUHJvbWlzZSB3cmFw
cGVyIGZvciByZXF1ZXN0QW5pbWF0aW9uRnJhbWUuCisgKi8KK2Z1bmN0aW9uIHdhaXRGb3JGcmFt
ZSgpIHsKKyAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewor
ICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVzb2x2ZSk7CisgIH0pOworfQorCisv
KioKKyAqIFdhaXRzIGZvciBhIHJlcXVlc3RBbmltYXRpb25GcmFtZSBjYWxsYmFjayBpbiB0aGUg
bmV4dCByZWZyZXNoIGRyaXZlciB0aWNrLgorICogTm90ZSB0aGF0ICdkb20uYW5pbWF0aW9ucy1h
cGkuY29yZS5lbmFibGVkJyBwcmVmIHNob3VsZCBiZSB0cnVlIHRvIHVzZSB0aGlzCisgKiBmdW5j
dGlvbi4KKyAqLworZnVuY3Rpb24gd2FpdEZvck5leHRGcmFtZSgpIHsKKyAgY29uc3QgdGltZUF0
U3RhcnQgPSBkb2N1bWVudC50aW1lbGluZS5jdXJyZW50VGltZTsKKyAgcmV0dXJuIG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4geworICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4g
eworICAgICAgaWYgKHRpbWVBdFN0YXJ0ID09PSBkb2N1bWVudC50aW1lbGluZS5jdXJyZW50VGlt
ZSkgeworICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlc29sdmUpOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgcmVzb2x2ZSgpOworICAgICAgfQorICAgIH0pOworICB9KTsK
K30KKworLyoqCisgKiBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIGFmdGVyIHRo
ZSBnaXZlbiBudW1iZXIgb2YgY29uc2VjdXRpdmUKKyAqIGFuaW1hdGlvbiBmcmFtZXMgaGF2ZSBv
Y2N1cmVkICh1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgY2FsbGJhY2tzKS4KKyAqCisgKiBA
cGFyYW0gZnJhbWVDb3VudCAgVGhlIG51bWJlciBvZiBhbmltYXRpb24gZnJhbWVzLgorICogQHBh
cmFtIG9uRnJhbWUgIEFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRvIGJlIHByb2Nlc3NlZCBpbiBlYWNo
IGFuaW1hdGlvbiBmcmFtZS4KKyAqLworZnVuY3Rpb24gd2FpdEZvckFuaW1hdGlvbkZyYW1lcyhm
cmFtZUNvdW50LCBvbkZyYW1lKSB7CisgIGNvbnN0IHRpbWVBdFN0YXJ0ID0gZG9jdW1lbnQudGlt
ZWxpbmUuY3VycmVudFRpbWU7CisgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZl
LCByZWplY3QpIHsKKyAgICBmdW5jdGlvbiBoYW5kbGVGcmFtZSgpIHsKKyAgICAgIGlmIChvbkZy
YW1lICYmIHR5cGVvZiBvbkZyYW1lID09PSAnZnVuY3Rpb24nKSB7CisgICAgICAgIG9uRnJhbWUo
KTsKKyAgICAgIH0KKyAgICAgIGlmICh0aW1lQXRTdGFydCAhPSBkb2N1bWVudC50aW1lbGluZS5j
dXJyZW50VGltZSAmJgorICAgICAgICAgIC0tZnJhbWVDb3VudCA8PSAwKSB7CisgICAgICAgIHJl
c29sdmUoKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9u
RnJhbWUoaGFuZGxlRnJhbWUpOyAvLyB3YWl0IGFub3RoZXIgZnJhbWUKKyAgICAgIH0KKyAgICB9
CisgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShoYW5kbGVGcmFtZSk7CisgIH0pOwor
fQorCisvKioKKyAqIFByb21pc2Ugd3JhcHBlciBmb3IgcmVxdWVzdElkbGVDYWxsYmFjay4KKyAq
LworZnVuY3Rpb24gd2FpdEZvcklkbGUoKSB7CisgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZl
ID0+IHsKKyAgICByZXF1ZXN0SWRsZUNhbGxiYWNrKHJlc29sdmUpOworICB9KTsKK30KKworLyoq
CisgKiBXcmFwcGVyIHRoYXQgdGFrZXMgYSBzZXF1ZW5jZSBvZiBOIGFuaW1hdGlvbnMgYW5kIHJl
dHVybnM6CisgKgorICogICBQcm9taXNlLmFsbChbYW5pbWF0aW9uc1swXS5yZWFkeSwgYW5pbWF0
aW9uc1sxXS5yZWFkeSwgLi4uIGFuaW1hdGlvbnNbTi0xXS5yZWFkeV0pOworICovCitmdW5jdGlv
biB3YWl0Rm9yQWxsQW5pbWF0aW9ucyhhbmltYXRpb25zKSB7CisgIHJldHVybiBQcm9taXNlLmFs
bChhbmltYXRpb25zLm1hcChmdW5jdGlvbihhbmltYXRpb24pIHsKKyAgICByZXR1cm4gYW5pbWF0
aW9uLnJlYWR5OworICB9KSk7Cit9CisKKy8qKgorICogRmx1c2ggdGhlIGNvbXB1dGVkIHN0eWxl
IGZvciB0aGUgZ2l2ZW4gZWxlbWVudC4gVGhpcyBpcyB1c2VmdWwsIGZvciBleGFtcGxlLAorICog
d2hlbiB3ZSBhcmUgdGVzdGluZyBhIHRyYW5zaXRpb24gYW5kIG5lZWQgdGhlIGluaXRpYWwgdmFs
dWUgb2YgYSBwcm9wZXJ0eQorICogdG8gYmUgY29tcHV0ZWQgc28gdGhhdCB3aGVuIHdlIHN5bmNo
cm9ub3VzbHlldCBzZXQgaXQgdG8gYSBkaWZmZXJlbnQgdmFsdWUKKyAqIHdlIGFjdHVhbGx5IGdl
dCBhIHRyYW5zaXRpb24gaW5zdGVhZCBvZiB0aGF0IGJlaW5nIHRoZSBpbml0aWFsIHZhbHVlLgor
ICovCitmdW5jdGlvbiBmbHVzaENvbXB1dGVkU3R5bGUoZWxlbSkgeworICB2YXIgY3MgPSBnZXRD
b21wdXRlZFN0eWxlKGVsZW0pOworICBjcy5tYXJnaW5MZWZ0OworfQorCitpZiAob3BlbmVyKSB7
CisgIGZvciAodmFyIGZ1bmNOYW1lIG9mIFsiYXN5bmNfdGVzdCIsICJhc3NlcnRfbm90X2VxdWFs
cyIsICJhc3NlcnRfZXF1YWxzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJhc3NlcnRfYXBw
cm94X2VxdWFscyIsICJhc3NlcnRfbGVzc190aGFuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJhc3NlcnRfbGVzc190aGFuX2VxdWFsIiwgImFzc2VydF9ncmVhdGVyX3RoYW4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgImFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAiYXNzZXJ0X3RydWUiLCAiYXNzZXJ0X2ZhbHNlIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJhc3NlcnRfY2xhc3Nfc3RyaW5nIiwgImFzc2VydF90aHJvd3MiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgImFzc2VydF91bnJlYWNoZWQiLCAiYXNzZXJ0X3JlZ2V4cF9t
YXRjaCIsCisgICAgICAgICAgICAgICAgICAgICAgICAicHJvbWlzZV90ZXN0IiwgInRlc3QiXSkg
eworICAgIGlmIChvcGVuZXJbZnVuY05hbWVdKSB7CisgICAgICB3aW5kb3dbZnVuY05hbWVdID0g
b3BlbmVyW2Z1bmNOYW1lXS5iaW5kKG9wZW5lcik7CisgICAgfQorICB9CisKKyAgd2luZG93LkV2
ZW50V2F0Y2hlciA9IG9wZW5lci5FdmVudFdhdGNoZXI7CisKKyAgZnVuY3Rpb24gZG9uZSgpIHsK
KyAgICBvcGVuZXIuYWRkX2NvbXBsZXRpb25fY2FsbGJhY2soZnVuY3Rpb24oKSB7CisgICAgICBz
ZWxmLmNsb3NlKCk7CisgICAgfSk7CisgICAgb3BlbmVyLmRvbmUoKTsKKyAgfQorfQorCisvKgor
ICogUmV0dXJucyBhIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aGVuIHRoZSBkb2N1bWVudCBo
YXMgZmluaXNoZWQgbG9hZGluZy4KKyAqLworZnVuY3Rpb24gd2FpdEZvckRvY3VtZW50TG9hZCgp
IHsKKyAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeworICAg
IGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAiY29tcGxldGUiKSB7CisgICAgICByZXNvbHZl
KCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwg
cmVzb2x2ZSk7CisgICAgfQorICB9KTsKK30KKworLyoKKyAqIEVudGVycyB0ZXN0IHJlZnJlc2gg
bW9kZSwgYW5kIHJlc3RvcmVzIHRoZSBtb2RlIHdoZW4gfHR8IGZpbmlzaGVzLgorICovCitmdW5j
dGlvbiB1c2VUZXN0UmVmcmVzaE1vZGUodCkgeworICBmdW5jdGlvbiBlbnN1cmVOb1N1cHByZXNz
ZWRQYWludHMoKSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAg
ZnVuY3Rpb24gY2hlY2tTdXBwcmVzc2VkUGFpbnRzKCkgeworICAgICAgICBpZiAoIVNwZWNpYWxQ
b3dlcnMuRE9NV2luZG93VXRpbHMucGFpbnRpbmdTdXBwcmVzc2VkKSB7CisgICAgICAgICAgcmVz
b2x2ZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0
aW9uRnJhbWUoY2hlY2tTdXBwcmVzc2VkUGFpbnRzKTsKKyAgICAgICAgfQorICAgICAgfQorICAg
ICAgY2hlY2tTdXBwcmVzc2VkUGFpbnRzKCk7CisgICAgfSk7CisgIH0KKworICByZXR1cm4gZW5z
dXJlTm9TdXBwcmVzc2VkUGFpbnRzKCkudGhlbigoKSA9PiB7CisgICAgU3BlY2lhbFBvd2Vycy5E
T01XaW5kb3dVdGlscy5hZHZhbmNlVGltZUFuZFJlZnJlc2goMCk7CisgICAgdC5hZGRfY2xlYW51
cCgoKSA9PiB7CisgICAgICBTcGVjaWFsUG93ZXJzLkRPTVdpbmRvd1V0aWxzLnJlc3RvcmVOb3Jt
YWxSZWZyZXNoKCk7CisgICAgfSk7CisgIH0pOworfQorCisvKioKKyAqIFJldHVybnMgdHJ1ZSBp
ZiBvZmYtbWFpbi10aHJlYWQgYW5pbWF0aW9ucy4KKyAqLworZnVuY3Rpb24gaXNPTVRBRW5hYmxl
ZCgpIHsKKyAgY29uc3QgT01UQVByZWZLZXkgPSAnbGF5ZXJzLm9mZm1haW50aHJlYWRjb21wb3Np
dGlvbi5hc3luYy1hbmltYXRpb25zJzsKKyAgcmV0dXJuIFNwZWNpYWxQb3dlcnMuRE9NV2luZG93
VXRpbHMubGF5ZXJNYW5hZ2VyUmVtb3RlICYmCisgICAgICAgICBTcGVjaWFsUG93ZXJzLmdldEJv
b2xQcmVmKE9NVEFQcmVmS2V5KTsKK30KKworLyoqCisgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGRv
Y3VtZW50IGlzIHN0eWxlZCBieSBzZXJ2by4KKyAqLworZnVuY3Rpb24gaXNTdHlsZWRCeVNlcnZv
KCkgeworICByZXR1cm4gU3BlY2lhbFBvd2Vycy5ET01XaW5kb3dVdGlscy5pc1N0eWxlZEJ5U2Vy
dm87Cit9CisKKy8qKgorICogQXBwZW5kIGFuIFNWRyBlbGVtZW50IHRvIHRoZSB0YXJnZXQgZWxl
bWVudC4KKyAqCisgKiBAcGFyYW0gdGFyZ2V0IFRoZSBlbGVtZW50IHdoaWNoIHdhbnQgdG8gYXBw
ZW5kLgorICogQHBhcmFtIGF0dHJzICBBIGFycmF5IG9iamVjdCB3aXRoIGF0dHJpYnV0ZSBuYW1l
IGFuZCB2YWx1ZXMgdG8gc2V0IG9uCisgKiAgICAgICAgICAgICAgIHRoZSBTVkcgZWxlbWVudC4K
KyAqIEByZXR1cm4gQW4gU1ZHIG91dGVyIGVsZW1lbnQuCisgKi8KK2Z1bmN0aW9uIGFkZFNWR0Vs
ZW1lbnQodGFyZ2V0LCB0YWcsIGF0dHJzKSB7CisgIGlmICghdGFyZ2V0KSB7CisgICAgcmV0dXJu
IG51bGw7CisgIH0KKyAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgdGFnKTsKKyAgaWYgKGF0dHJzKSB7CisgICAgZm9y
ICh2YXIgYXR0ck5hbWUgaW4gYXR0cnMpIHsKKyAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlTlMo
bnVsbCwgYXR0ck5hbWUsIGF0dHJzW2F0dHJOYW1lXSk7CisgICAgfQorICB9CisgIHRhcmdldC5h
cHBlbmRDaGlsZChlbGVtZW50KTsKKyAgcmV0dXJuIGVsZW1lbnQ7Cit9CisKKy8qCisgKiBHZXQg
QW5pbWF0aW9uIGRpc3RhbmNlIGJldHdlZW4gdHdvIHNwZWNpZmllZCB2YWx1ZXMgZm9yIGEgc3Bl
Y2lmaWMgcHJvcGVydHkuCisgKgorICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IGVsZW1lbnQu
CisgKiBAcGFyYW0gcHJvcCBUaGUgQ1NTIHByb3BlcnR5LgorICogQHBhcmFtIHYxIFRoZSBmaXJz
dCBwcm9wZXJ0eSB2YWx1ZS4KKyAqIEBwYXJhbSB2MiBUaGUgU2Vjb25kIHByb3BlcnR5IHZhbHVl
LgorICoKKyAqIEByZXR1cm4gVGhlIGRpc3RhbmNlIGJldHdlZW4gfHYxfCBhbmQgfHYyfCBmb3Ig
fHByb3B8IG9uIHx0YXJnZXR8LgorICovCitmdW5jdGlvbiBnZXREaXN0YW5jZSh0YXJnZXQsIHBy
b3AsIHYxLCB2MikgeworICBpZiAoIXRhcmdldCkgeworICAgIHJldHVybiAwLjA7CisgIH0KKyAg
cmV0dXJuIFNwZWNpYWxQb3dlcnMuRE9NV2luZG93VXRpbHMKKyAgICAgICAgICAgLmNvbXB1dGVB
bmltYXRpb25EaXN0YW5jZSh0YXJnZXQsIHByb3AsIHYxLCB2Mik7Cit9CisKKy8qCisgKiBBIHBy
b21pc2Ugd3JhcHBlciBmb3Igd2FpdGluZyBNb3pBZnRlclBhaW50LgorICovCitmdW5jdGlvbiB3
YWl0Rm9yUGFpbnRzKCkgeworICAvLyBGSVhNRTogQnVnIDE0MTUwNjUuIEluc3RlYWQgd2FpdGlu
ZyBmb3IgdHdvIHJlcXVlc3RBbmltYXRpb25GcmFtZXMsIHdlCisgIC8vIHNob3VsZCB3YWl0IGZv
ciBNb3pBZnRlclBhaW50IG9uY2UgYWZ0ZXIgTW96QWZ0ZXJQYWludCBpcyBmaXJlZCBwcm9wZXJs
eQorICAvLyAoYnVnIDEzNDEyOTQpLgorICByZXR1cm4gd2FpdEZvckFuaW1hdGlvbkZyYW1lcygy
KTsKK30KKworLy8gUmV0dXJucyB0cnVlIGlmIHxhQW5pbWF0aW9ufCBiZWdpbnMgYXQgdGhlIGN1
cnJlbnQgdGltZWxpbmUgdGltZS4gIFdlCisvLyBzb21ldGltZXMgbmVlZCB0byBkZXRlY3QgdGhp
cyBjYXNlIGJlY2F1c2UgaWYgd2Ugc3RhcnRlZCBhbiBhbmltYXRpb24KKy8vIGFzeW5jaHJvbm91
c2x5IChlLmcuIHVzaW5nIHBsYXkoKSkgYW5kIHRoZW4gZW5kZWQgdXAgcnVubmluZyB0aGUgbmV4
dCBmcmFtZQorLy8gYXQgcHJlY2lzZWx5IHRoZSB0aW1lIHRoZSBhbmltYXRpb24gc3RhcnRlZCAo
ZHVlIHRvIGFsaWduaW5nIHdpdGggdnN5bmMKKy8vIHJlZnJlc2ggcmF0ZSkgdGhlbiB3ZSB3b24n
dCBlbmQgdXAgcmVzdHlsaW5nIGluIHRoYXQgZnJhbWUuCitmdW5jdGlvbiBhbmltYXRpb25TdGFy
dHNSaWdodE5vdyhhQW5pbWF0aW9uKSB7CisgIHJldHVybiBhQW5pbWF0aW9uLnN0YXJ0VGltZSA9
PT0gYUFuaW1hdGlvbi50aW1lbGluZS5jdXJyZW50VGltZSAmJgorICAgICAgICAgYUFuaW1hdGlv
bi5jdXJyZW50VGltZSA9PT0gMDsKK30KKwo=
</data>
<flag name="review"
          id="354731"
          type_id="1"
          status="+"
          setter="jonlee"
    />
          </attachment>
      

    </bug>

</bugzilla>