<?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>82924</bug_id>
          
          <creation_ts>2012-04-02 12:22:19 -0700</creation_ts>
          <short_desc>Generate the lists of all layout test builders from the buildbot json</short_desc>
          <delta_ts>2012-04-02 18:25:53 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Ojan Vafai">ojan</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>mihaip</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>593678</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-02 12:22:19 -0700</bug_when>
    <thetext>Generate the lists of all layout test builders from the buildbot json</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593692</commentid>
    <comment_count>1</comment_count>
      <attachid>135156</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-02 12:36:06 -0700</bug_when>
    <thetext>Created attachment 135156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593695</commentid>
    <comment_count>2</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-02 12:36:58 -0700</bug_when>
    <thetext>Mihai, you&apos;re probably the person most familiar with this code. Mind reviewing this?

FWIW, I&apos;d be happy with a rubberstamp. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594112</commentid>
    <comment_count>3</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-02 18:25:53 -0700</bug_when>
    <thetext>Committed r112971: &lt;http://trac.webkit.org/changeset/112971&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135156</attachid>
            <date>2012-04-02 12:36:06 -0700</date>
            <delta_ts>2012-04-02 17:04:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82924-20120402123605.patch</filename>
            <type>text/plain</type>
            <size>44631</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyOTEzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2FhNGE2OTY2YTg1YWIyZDU2ZTAxODJkM2U2OWE2NTky
MWI0OGFlMS4uZWJhOTIzZmQ3YjA2OWY0YzZiZDliMTQ1NTkxZDg3YjBhZDk5YWY2MyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgx
IEBACisyMDEyLTA0LTAyICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgR2VuZXJhdGUgdGhlIGxpc3RzIG9mIGFsbCBsYXlvdXQgdGVzdCBidWlsZGVycyBmcm9tIHRo
ZSBidWlsZGJvdCBqc29uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MjkyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEluIG9yZGVyIHRvIG1ha2UgdGhpcyB3b3JrLCBjbGVhbmVkIHVwIGEgbG90IG9mIGV4
aXN0aW5nIHRlY2huaWNhbCBkZWJ0LgorICAgICAgICAtR290IHJpZCBvZiBleHBlY3RhdGlvbnMg
YnVpbGRlci4gVGhpcyBjb25jZXB0IGlzIG91dGRhdGVkIGFuZCBqdXN0IGRlYWQgY29kZS4KKyAg
ICAgICAgLVNwbGl0IGhhc2ggcGFyYW1ldGVyIHBhcnNpbmcgaW50byB0d28gZnVuY3Rpb25zLiBP
bmUgZm9yIGRhc2hib2FyZF9iYXNlCisgICAgICAgIChjcm9zc0Rhc2hib2FyZFBhcmFtZXRlcnMp
IGFuZCBvbmUgZm9yIHRoZSBzcGVjaWZpYyBkYXNoYm9hcmQgaHRtbCBmaWxlCisgICAgICAgIChk
YXNoYm9hcmRTcGVjaWZpY1BhcmFtZXRlcnMpLiBJbiB0aGUgb2xkIHdvcmxkLCBwYXJzZVBhcmFt
ZXRlcnMgbmVlZGVkIHRvCisgICAgICAgIGJlIGNhbGxlZCB0d2ljZSBhbmQgZGVwZW5kZWQgb24g
aXQncyBvd24gb3V0cHV0IHRoZSBmaXJzdCB0aW1lIHRocm91Z2guCisgICAgICAgIE5vdyB3ZSBv
bmx5IG5lZWQgdG8gcGFyc2UgY3Jvc3NEYXNoYm9hcmRQYXJhbWV0ZXJzIGZpcnN0IGFuZCBjcm9z
c0Rhc2hib2FyZFBhcmFtZXRlcnMKKyAgICAgICAgZG9lc24ndCBkZXBlbmQgb24gdGhlIG91dHB1
dCBvZiBjcm9zc0Rhc2hib2FyZFBhcmFtZXRlcnMuCisgICAgICAgIC1Mb3RzIG9mIHZhcmlhYmxl
L21ldGhvZCByZW5hbWVzIGR1ZSB0byB0aGUgYWJvdmUuCisgICAgICAgIC1nX2RlZmF1bHREYXNo
Ym9hcmRTcGVjaWZpY1N0YXRlVmFsdWVzIG5vdyBoYXMgdG8gbGlzdCBhbGwgcG9zc2libGUgaGFz
aCBwYXJhbWV0ZXJzCisgICAgICAgIGZvciB0aGF0IGRhc2hib2FyZC4KKworICAgICAgICAqIFRl
c3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYWdncmVnYXRlX3Jlc3VsdHMuaHRtbDoK
KyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2J1aWxkZXJzLmpz
OgorICAgICAgICAoQnVpbGRlckdyb3VwKToKKyAgICAgICAgKEJ1aWxkZXJHcm91cC5wcm90b3R5
cGUuc2V0dXApOgorICAgICAgICAoanNvblJlcXVlc3QueGhyLm9ubG9hZCk6CisgICAgICAgIChq
c29uUmVxdWVzdC54aHIub25lcnJvcik6CisgICAgICAgIChpc1dlYmtpdFRlc3RSdW5uZXIpOgor
ICAgICAgICAoaXNDaHJvbWl1bVdlYmtpdFRpcE9mVHJlZVRlc3RSdW5uZXIpOgorICAgICAgICAo
aXNDaHJvbWl1bVdlYmtpdERlcHNUZXN0UnVubmVyKToKKyAgICAgICAgKGdlbmVyYXRlQnVpbGRl
cnNGcm9tQnVpbGRlckxpc3QpOgorICAgICAgICAob25MYXlvdXRUZXN0QnVpbGRlckxpc3RMb2Fk
KToKKyAgICAgICAgKG9uRXJyb3JMb2FkaW5nQnVpbGRlckxpc3QpOgorICAgICAgICAobG9hZEJ1
aWxkZXJzTGlzdCk6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJk
cy9kYXNoYm9hcmRfYmFzZS5qczoKKyAgICAgICAgKGhhbmRsZVZhbGlkSGFzaFBhcmFtZXRlcldy
YXBwZXIpOgorICAgICAgICAocXVlcnlIYXNoQXNNYXApOgorICAgICAgICAocGFyc2VQYXJhbWV0
ZXIpOgorICAgICAgICAocGFyc2VDcm9zc0Rhc2hib2FyZFBhcmFtZXRlcnMpOgorICAgICAgICAo
cGFyc2VEYXNoYm9hcmRTcGVjaWZpY1BhcmFtZXRlcnMpOgorICAgICAgICAocGFyc2VQYXJhbWV0
ZXJzKToKKyAgICAgICAgKGRpZmZTdGF0ZXMpOgorICAgICAgICAoZGVmYXVsdFZhbHVlKToKKyAg
ICAgICAgKGlzTGF5b3V0VGVzdFJlc3VsdHMpOgorICAgICAgICAoaXNHUFVUZXN0UmVzdWx0cyk6
CisgICAgICAgIChjdXJyZW50QnVpbGRlckdyb3VwQ2F0ZWdvcnkpOgorICAgICAgICAoY3VycmVu
dEJ1aWxkZXJHcm91cCk6CisgICAgICAgIChpbml0QnVpbGRlcnMpOgorICAgICAgICBOb3cgdGhh
dCB3ZSd2ZSBzcGxpdCBwYXJhbWV0ZXIgcGFyc2VpbmcsIHRoZXNlIG1ldGhvZHMgbm8gbG9uZ2Vy
IG5lZWQKKyAgICAgICAgdG8gdGFrZSBhbiBvcHRpb25hbCBzdGF0ZS4gVGhleSBjYW4gYWx3YXlz
IGp1c3QgdXNlIHRoZSBnbG9iYWwgY3Jvc3MtZGFzaGJvYXJkIHN0YXRlLgorCisgICAgICAgIChw
YXRoVG9CdWlsZGVyUmVzdWx0c0ZpbGUpOgorICAgICAgICAoYXBwZW5kSlNPTlNjcmlwdEVsZW1l
bnRGb3IpOgorICAgICAgICAoYXBwZW5kSlNPTlNjcmlwdEVsZW1lbnRzKToKKyAgICAgICAgKGhh
bmRsZVJlc291cmNlTG9hZEVycm9yKToKKyAgICAgICAgKGhhdmVKc29uRmlsZXNMb2FkZWQpOgor
ICAgICAgICAoY29tYmluZWREYXNoYm9hcmRTdGF0ZSk6CisgICAgICAgIChzZXRRdWVyeVBhcmFt
ZXRlcik6CisgICAgICAgIChwZXJtYUxpbmtVUkxIYXNoKToKKyAgICAgICAgKHRvZ2dsZVF1ZXJ5
UGFyYW1ldGVyKToKKyAgICAgICAgKHF1ZXJ5UGFyYW1ldGVyVmFsdWUpOgorICAgICAgICAoc2Vs
ZWN0SFRNTCk6CisgICAgICAgIChodG1sRm9yVGVzdFR5cGVTd2l0Y2hlcik6CisgICAgICAgIChn
X2hhbmRsZUJ1aWxkZXJzTGlzdExvYWRlZCk6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9z
dGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkLmh0bWw6CisgICAgICAgICogVGVz
dFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkX3Rlc3Rz
LmpzOgorICAgICAgICAodGVzdFBsYXRmb3JtQW5kQnVpbGRUeXBlKToKKyAgICAgICAgKHRlc3RT
dWJzdHJpbmdMaXN0KToKKyAgICAgICAgKHRlc3RIdG1sRm9yVGVzdFR5cGVTd2l0Y2hlckdyb3Vw
KToKKyAgICAgICAgKHRlc3RMb29rdXBWaXJ0dWFsVGVzdFN1aXRlKToKKyAgICAgICAgKHRlc3RC
YXNlVGVzdCk6CisgICAgICAgIChnZW5lcmF0ZUJ1aWxkZXJzRnJvbUJ1aWxkZXJMaXN0SGVscGVy
KToKKyAgICAgICAgKHRlc3RHZW5lcmF0ZUNocm9taXVtV2Via2l0VGlwT2ZUcmVlQnVpbGRlcnNG
cm9tQnVpbGRlckxpc3QpOgorICAgICAgICAodGVzdEdlbmVyYXRlQ2hyb21pdW1XZWJraXREZXBz
QnVpbGRlcnNGcm9tQnVpbGRlckxpc3QpOgorICAgICAgICAoYXNzZXJ0T2JqZWN0c0RlZXBFcXVh
bCk6CisgICAgICAgICh0ZXN0UXVlcnlIYXNoQXNNYXApOgorICAgICAgICAodGVzdERpZmZTdGF0
ZXMpOgorICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdGltZWxp
bmVfZXhwbG9yZXIuaHRtbDoKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNo
Ym9hcmRzL3RyZWVtYXAuaHRtbDoKKwogMjAxMi0wNC0wMiAgQmFsYXpzIEtlbGVtZW4gIDxrYmFs
YXpzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtXSzJdIFNldCB1cCBwbHVnaW4gcHJvY2Vz
cyBvbiBVbml4CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNo
Ym9hcmRzL2FnZ3JlZ2F0ZV9yZXN1bHRzLmh0bWwgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0
YXRpYy1kYXNoYm9hcmRzL2FnZ3JlZ2F0ZV9yZXN1bHRzLmh0bWwKaW5kZXggZWRlNjFiOTA1YzNl
MzNkZGNhMDgxMTcxZmU3NzY5MDJjOWViYWMxNC4uOWE3NmIwNmI0ZWQ3MjZjOWJiNjI1MGNkOTRm
ZTkzYWQ5MDk3ZGQ0ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMt
ZGFzaGJvYXJkcy9hZ2dyZWdhdGVfcmVzdWx0cy5odG1sCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRT
ZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYWdncmVnYXRlX3Jlc3VsdHMuaHRtbApAQCAtODQsNyAr
ODQsNyBAQCBmdW5jdGlvbiBoYW5kbGVWYWxpZEhhc2hQYXJhbWV0ZXIoa2V5LCB2YWx1ZSkKICAg
ICB9CiB9CiAKLWdfZGVmYXVsdFN0YXRlVmFsdWVzID0geworZ19kZWZhdWx0RGFzaGJvYXJkU3Bl
Y2lmaWNTdGF0ZVZhbHVlcyA9IHsKICAgICByYXdWYWx1ZXM6IGZhbHNlCiB9OwogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2J1aWxkZXJzLmpz
IGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9idWlsZGVycy5qcwpp
bmRleCBiYWVhZTZlZWE5MzQ1YTY5MDQyMjQ2MDFjNThjZDRjMzUxZjE4YzI2Li44NThkNDJhZWEy
Zjk2ODA2MjBlNmVkNTYxYmVkZWZhYTgwYzNmNjFmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVz
dWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2J1aWxkZXJzLmpzCisrKyBiL1Rvb2xzL1Rlc3RS
ZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYnVpbGRlcnMuanMKQEAgLTY5LDggKzY5LDYg
QEAgZnVuY3Rpb24gQnVpbGRlckdyb3VwKGlzVG9UV2ViS2l0LCBidWlsZGVycykKICAgICAgICAg
dGhpcy5idWlsZGVyc1tidWlsZGVyXSA9IGJ1aWxkZXIucmVwbGFjZSgvWyAuKCldL2csICdfJyk7
CiAgICAgICAgIGlmIChmbGFncyAmIEJ1aWxkZXJHcm91cC5ERUZBVUxUX0JVSUxERVIpCiAgICAg
ICAgICAgICB0aGlzLmRlZmF1bHRCdWlsZGVyID0gYnVpbGRlcjsKLSAgICAgICAgaWYgKGZsYWdz
ICYgQnVpbGRlckdyb3VwLkVYUEVDVEFUSU9OU19CVUlMREVSKQotICAgICAgICAgICAgdGhpcy5l
eHBlY3RhdGlvbnNCdWlsZGVyID0gYnVpbGRlcjsKICAgICB9LCB0aGlzKTsKIH0KIApAQCAtNzks
MTcgKzc3LDEyIEBAIEJ1aWxkZXJHcm91cC5wcm90b3R5cGUuc2V0dXAgPSBmdW5jdGlvbigpCiAg
ICAgLy8gRklYTUU6IGluc3RlYWQgb2YgY29weWluZyB0aGVzZSB0byBnbG9iYWxzLCBpdCB3b3Vs
ZCBiZSBiZXR0ZXIgaWYKICAgICAvLyB0aGUgcmVzdCBvZiB0aGUgY29kZSByZWFkIHRoaW5ncyBm
cm9tIHRoZSBCdWlsZGVyR3JvdXAgaW5zdGFuY2UgZGlyZWN0bHkKICAgICBnX2RlZmF1bHRCdWls
ZGVyTmFtZSA9IHRoaXMuZGVmYXVsdEJ1aWxkZXI7Ci0gICAgZ19leHBlY3RhdGlvbnNCdWlsZGVy
ID0gdGhpcy5leHBlY3RhdGlvbnNCdWlsZGVyOwogICAgIGdfYnVpbGRlcnMgPSB0aGlzLmJ1aWxk
ZXJzOwogfTsKIAogQnVpbGRlckdyb3VwLlRPVF9XRUJLSVQgPSB0cnVlOwogQnVpbGRlckdyb3Vw
LkRFUFNfV0VCS0lUID0gZmFsc2U7Ci0KIEJ1aWxkZXJHcm91cC5ERUZBVUxUX0JVSUxERVIgPSAx
IDw8IDE7Ci0vLyBGb3IgZXhwZWN0YXRpb25zIGJ1aWxkZXIsIGxpc3QgdGhlIGZhc3Rlc3QgYnVp
bGRlciBzbyB0aGF0IHdlIGFsd2F5cyBoYXZlIHRoZQotLy8gbW9zdCB1cCB0byBkYXRlIGV4cGVj
dGF0aW9ucy4KLUJ1aWxkZXJHcm91cC5FWFBFQ1RBVElPTlNfQlVJTERFUiA9IDEgPDwgMjsKIAog
dmFyIEJVSUxERVJfVE9fTUFTVEVSID0ge307CiBmdW5jdGlvbiBhc3NvY2lhdGVCdWlsZGVyc1dp
dGhNYXN0ZXIoYnVpbGRlcnMsIG1hc3RlcikKQEAgLTEwMCw3OCArOTMsOTYgQEAgZnVuY3Rpb24g
YXNzb2NpYXRlQnVpbGRlcnNXaXRoTWFzdGVyKGJ1aWxkZXJzLCBtYXN0ZXIpCiAgICAgfSk7CiB9
CiAKLXZhciBDSFJPTUlVTV9MQVlPVVRfREVQU19CVUlMREVSUyA9IFsKLSAgICBbJ1dlYmtpdCBX
aW4gKGRlcHMpJywgQnVpbGRlckdyb3VwLkRFRkFVTFRfQlVJTERFUl0sCi0gICAgWydXZWJraXQg
TGludXggKGRlcHMpJywgQnVpbGRlckdyb3VwLkVYUEVDVEFUSU9OU19CVUlMREVSXSwKLSAgICBb
J1dlYmtpdCBNYWMxMC42IChkZXBzKSddLAotXTsKLWFzc29jaWF0ZUJ1aWxkZXJzV2l0aE1hc3Rl
cihDSFJPTUlVTV9MQVlPVVRfREVQU19CVUlMREVSUywgQ0hST01JVU1fV0VCS0lUX0JVSUxERVJf
TUFTVEVSKTsKLQotdmFyIENIUk9NSVVNX0xBWU9VVF9UT1RfQlVJTERFUlMgPSBbCi0gICAgWydX
ZWJraXQgV2luJywgQnVpbGRlckdyb3VwLkRFRkFVTFRfQlVJTERFUl0sCi0gICAgWydXZWJraXQg
VmlzdGEnXSwKLSAgICBbJ1dlYmtpdCBXaW43J10sCi0gICAgWydXZWJraXQgV2luIChkYmcpKDEp
J10sCi0gICAgWydXZWJraXQgV2luIChkYmcpKDIpJ10sCi0gICAgWydXZWJraXQgTGludXgnLCBC
dWlsZGVyR3JvdXAuRVhQRUNUQVRJT05TX0JVSUxERVJdLAotICAgIFsnV2Via2l0IExpbnV4IDMy
J10sCi0gICAgWydXZWJraXQgTGludXggKGRiZyknXSwKLSAgICBbJ1dlYmtpdCBNYWMxMC41J10s
Ci0gICAgWydXZWJraXQgTWFjMTAuNSAoZGJnKSgxKSddLAotICAgIFsnV2Via2l0IE1hYzEwLjUg
KGRiZykoMiknXSwKLSAgICBbJ1dlYmtpdCBNYWMxMC42J10sCi0gICAgWydXZWJraXQgTWFjMTAu
NiAoZGJnKSddLAotICAgIFsnV2Via2l0IE1hYzEwLjcnXSwKLV07Ci1hc3NvY2lhdGVCdWlsZGVy
c1dpdGhNYXN0ZXIoQ0hST01JVU1fTEFZT1VUX1RPVF9CVUlMREVSUywgQ0hST01JVU1fV0VCS0lU
X0JVSUxERVJfTUFTVEVSKTsKK2Z1bmN0aW9uIGpzb25SZXF1ZXN0KHVybCwgb25sb2FkLCBvbmVy
cm9yKQoreworICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICB4aHIub3Bl
bignR0VUJywgdXJsLCB0cnVlKTsKKyAgICB4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgIGlmICh4aHIuc3RhdHVzID09IDIwMCkKKyAgICAgICAgICAgIG9ubG9hZChKU09OLnBhcnNl
KHhoci5yZXNwb25zZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvbmVycm9yKHVybCk7
CisgICAgfTsKKyAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBvbmVycm9yKHVybCk7IH07
CisgICAgeGhyLnNlbmQoKTsKK30KKworZnVuY3Rpb24gaXNXZWJraXRUZXN0UnVubmVyKGJ1aWxk
ZXIpCit7CisgICAgaWYgKGJ1aWxkZXIuaW5kZXhPZignVGVzdHMnKSAhPSAtMSkgeworICAgICAg
ICAvLyBBcHBsZSBXaW5kb3dzIGJvdHMgc3RpbGwgcnVuIG9sZC1ydW4td2Via2l0LXRlc3RzLCBz
byB0aGV5IGRvbid0IHVwbG9hZCBkYXRhLgorICAgICAgICByZXR1cm4gYnVpbGRlci5pbmRleE9m
KCdXaW5kb3dzJykgPT0gLTEgfHwgKGJ1aWxkZXIuaW5kZXhPZignUXQnKSAhPSAtMSAmJiBidWls
ZGVyLmluZGV4T2YoJ0Nocm9taXVtJykgIT0gLTEpOworICAgIH0KKyAgICByZXR1cm4gYnVpbGRl
ci5pbmRleE9mKCdHVEsnKSAhPSAtMSB8fCBidWlsZGVyID09ICdRdCBMaW51eCBSZWxlYXNlJzsK
K30KKworZnVuY3Rpb24gaXNDaHJvbWl1bVdlYmtpdFRpcE9mVHJlZVRlc3RSdW5uZXIoYnVpbGRl
cikKK3sKKyAgICByZXR1cm4gYnVpbGRlci5pbmRleE9mKCdXZWJraXQnKSAhPSAtMSAmJiBidWls
ZGVyLmluZGV4T2YoJ0J1aWxkZXInKSA9PSAtMSAmJiBidWlsZGVyLmluZGV4T2YoJyhkZXBzKScp
ID09IC0xOworfQogCi1mdW5jdGlvbiBnZW5lcmF0ZVdlYmtpdEJ1aWxkZXJzRnJvbUJ1aWxkZXJM
aXN0KGJ1aWxkZXJMaXN0KQorZnVuY3Rpb24gaXNDaHJvbWl1bVdlYmtpdERlcHNUZXN0UnVubmVy
KGJ1aWxkZXIpCiB7Ci0gICAgcmV0dXJuIGJ1aWxkZXJMaXN0LmZpbHRlcihmdW5jdGlvbih0ZXN0
ZXIpIHsKLSAgICAgICAgaWYgKHRlc3Rlci5pbmRleE9mKCdUZXN0cycpICE9IC0xKSB7Ci0gICAg
ICAgICAgICAvLyBBcHBsZSBXaW5kb3dzIGJvdHMgc3RpbGwgcnVuIG9sZC1ydW4td2Via2l0LXRl
c3RzLCBzbyB0aGV5IGRvbid0IHVwbG9hZCBkYXRhLgotICAgICAgICAgICAgcmV0dXJuIHRlc3Rl
ci5pbmRleE9mKCdXaW5kb3dzJykgPT0gLTEgfHwgKHRlc3Rlci5pbmRleE9mKCdRdCcpICE9IC0x
ICYmIHRlc3Rlci5pbmRleE9mKCdDaHJvbWl1bScpICE9IC0xKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gdGVzdGVyLmluZGV4T2YoJ0dUSycpICE9IC0xIHx8IHRlc3RlciA9PSAnUXQgTGlu
dXggUmVsZWFzZSc7Ci0gICAgfSkubWFwKGZ1bmN0aW9uKHRlc3RlciwgaW5kZXgpIHsKKyAgICBy
ZXR1cm4gYnVpbGRlci5pbmRleE9mKCdXZWJraXQnKSAhPSAtMSAmJiBidWlsZGVyLmluZGV4T2Yo
J0J1aWxkZXInKSA9PSAtMSAmJiBidWlsZGVyLmluZGV4T2YoJyhkZXBzKScpICE9IC0xOworfQor
CitmdW5jdGlvbiBnZW5lcmF0ZUJ1aWxkZXJzRnJvbUJ1aWxkZXJMaXN0KGJ1aWxkZXJMaXN0LCBm
aWx0ZXIpCit7CisgICAgcmV0dXJuIGJ1aWxkZXJMaXN0LmZpbHRlcihmaWx0ZXIpLm1hcChmdW5j
dGlvbih0ZXN0ZXIsIGluZGV4KSB7CiAgICAgICAgIHZhciBidWlsZGVyID0gW3Rlc3Rlcl07CiAg
ICAgICAgIGlmICghaW5kZXgpCiAgICAgICAgICAgICBidWlsZGVyLnB1c2goQnVpbGRlckdyb3Vw
LkRFRkFVTFRfQlVJTERFUik7Ci0gICAgICAgIGlmICh0ZXN0ZXIuaW5kZXhPZignQ2hyb21pdW0g
TGludXgnKSAhPSAtMSkgewotICAgICAgICAgICAgaWYgKGJ1aWxkZXIubGVuZ3RoID09IDEpCi0g
ICAgICAgICAgICAgICAgYnVpbGRlci5wdXNoKEJ1aWxkZXJHcm91cC5FWFBFQ1RBVElPTlNfQlVJ
TERFUik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYnVpbGRlclsxXSB8PSBC
dWlsZGVyR3JvdXAuRVhQRUNUQVRJT05TX0JVSUxERVI7Ci0gICAgICAgIH0KICAgICAgICAgcmV0
dXJuIGJ1aWxkZXI7CiAgICAgfSk7CiB9CiAKLS8vIEZJWE1FOiBBdXRvbWF0aWNhbGx5IGdyYWIg
YWxsIHRoZSBidWlsZGVyIGxpc3RzIGZyb20gdGhlIGJ1aWxkYm90IGpzb24uCiB2YXIgV0VCS0lU
X0RPVF9PUkdfQlVJTERFUl9KU09OX1VSTCA9ICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9qc29u
L2J1aWxkZXJzJzsKLXZhciBXRUJLSVRfVE9UX0JVSUxERVJTID0gW107Ci0vLyBGSVhNRTogTW92
ZSBkYXNoYm9hcmRfYmFzZS5qcydzIHJlcXVlc3QgbWV0aG9kIGludG8gYSBiYXNlLmpzIGZpbGUg
dGhhdCBidWlsZGVycy5qcyBjYW4gZGVwZW5kIG9uIHdpdGhvdXQgYSBsYXllciB2aW9sYXRpb24u
Ci12YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci14aHIub3BlbignR0VUJywgV0VCS0lU
X0RPVF9PUkdfQlVJTERFUl9KU09OX1VSTCwgdHJ1ZSk7Ci14aHIub25sb2FkID0gZnVuY3Rpb24o
KSB7Ci0gICAgaWYgKHhoci5zdGF0dXMgIT0gMjAwKSB7Ci0gICAgICAgIGFsZXJ0KCdDb3VsZCBu
b3QgbG9hZCBsaXN0IG9mIGJ1aWxkZXJzIGZyb20gJyArIFdFQktJVF9ET1RfT1JHX0JVSUxERVJf
SlNPTl9VUkwgKyAnLiBUcnkgcmVsb2FkaW5nLicpOwordmFyIENIUk9NSVVNX0NBTkFSWV9CVUlM
REVSX0pTT05fVVJMID0gJ2h0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJr
aXQvanNvbi9idWlsZGVycyc7CisKK2Z1bmN0aW9uIG9uTGF5b3V0VGVzdEJ1aWxkZXJMaXN0TG9h
ZChidWlsZGVyRmlsdGVyLCBtYXN0ZXIsIGdyb3VwTmFtZSwgZ3JvdXBFbnVtLCBqc29uKQorewor
ICAgIHZhciBidWlsZGVycyA9IGdlbmVyYXRlQnVpbGRlcnNGcm9tQnVpbGRlckxpc3QoT2JqZWN0
LmtleXMoanNvbiksIGJ1aWxkZXJGaWx0ZXIpOworICAgIGFzc29jaWF0ZUJ1aWxkZXJzV2l0aE1h
c3RlcihidWlsZGVycywgbWFzdGVyKTsKKyAgICBMQVlPVVRfVEVTVFNfQlVJTERFUl9HUk9VUFNb
Z3JvdXBOYW1lXSA9IG5ldyBCdWlsZGVyR3JvdXAoQnVpbGRlckdyb3VwLmdyb3VwRW51bSwgYnVp
bGRlcnMpOworICAgIGdfaGFuZGxlQnVpbGRlcnNMaXN0TG9hZGVkKCk7Cit9CisKK2Z1bmN0aW9u
IG9uRXJyb3JMb2FkaW5nQnVpbGRlckxpc3QodXJsKQoreworICAgIGFsZXJ0KCdDb3VsZCBub3Qg
bG9hZCBsaXN0IG9mIGJ1aWxkZXJzIGZyb20gJyArIHVybCArICcuIFRyeSByZWxvYWRpbmcuJyk7
Cit9CisKK2Z1bmN0aW9uIGxvYWRCdWlsZGVyc0xpc3QoZ3JvdXAsIHRlc3RUeXBlKSB7CisgICAg
aWYgKHRlc3RUeXBlICE9ICdsYXlvdXQtdGVzdHMnKSB7CisgICAgICAgIC8vIEZJWE1FOiBMb2Fk
IGJ1aWxkZXIgbGlzdHMgZm9yIG5vbi1sYXlvdXQtdGVzdHMgZHluYW1pY2FsbHkgYXMgd2VsbC4K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICB2YXIgb25Mb2FkLCB1cmw7CisgICAgc3dpdGNo
KGdyb3VwKSB7CisgICAgY2FzZSAnQFRvVCAtIGNocm9taXVtLm9yZyc6CisgICAgICAgIG9uTG9h
ZCA9IHBhcnRpYWwob25MYXlvdXRUZXN0QnVpbGRlckxpc3RMb2FkLCBpc0Nocm9taXVtV2Via2l0
VGlwT2ZUcmVlVGVzdFJ1bm5lciwgQ0hST01JVU1fV0VCS0lUX0JVSUxERVJfTUFTVEVSLCBncm91
cCwgQnVpbGRlckdyb3VwLlRPVF9XRUJLSVQpOworICAgICAgICB1cmwgPSBDSFJPTUlVTV9DQU5B
UllfQlVJTERFUl9KU09OX1VSTDsKKyAgICAgICAgYnJlYWs7CiAKLSAgICB2YXIgYnVpbGRlcnMg
PSBnZW5lcmF0ZVdlYmtpdEJ1aWxkZXJzRnJvbUJ1aWxkZXJMaXN0KE9iamVjdC5rZXlzKEpTT04u
cGFyc2UoeGhyLnJlc3BvbnNlKSkpOwotICAgIGFzc29jaWF0ZUJ1aWxkZXJzV2l0aE1hc3Rlcihi
dWlsZGVycywgV0VCS0lUX0JVSUxERVJfTUFTVEVSKTsKLSAgICBMQVlPVVRfVEVTVFNfQlVJTERF
Ul9HUk9VUFNbJ0BUb1QgLSB3ZWJraXQub3JnJ10gPSBuZXcgQnVpbGRlckdyb3VwKEJ1aWxkZXJH
cm91cC5UT1RfV0VCS0lULCBidWlsZGVycyk7Ci0gICAgZ19oYW5kbGVCdWlsZGVyc0xpc3RMb2Fk
ZWQoKTsKLX07Ci14aHIub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBhbGVydCgnQ291bGQgbm90IGxv
YWQgbGlzdCBvZiBidWlsZGVycyBmcm9tICcgKyBXRUJLSVRfRE9UX09SR19CVUlMREVSX0pTT05f
VVJMICsgJy4gVHJ5IHJlbG9hZGluZy4nKTsgfQoteGhyLnNlbmQoKTsKKyAgICBjYXNlICdAVG9U
IC0gd2Via2l0Lm9yZyc6CisgICAgICAgIG9uTG9hZCA9IHBhcnRpYWwob25MYXlvdXRUZXN0QnVp
bGRlckxpc3RMb2FkLCBpc1dlYmtpdFRlc3RSdW5uZXIsIFdFQktJVF9CVUlMREVSX01BU1RFUiwg
Z3JvdXAsIEJ1aWxkZXJHcm91cC5UT1RfV0VCS0lUKTsKKyAgICAgICAgdXJsID0gV0VCS0lUX0RP
VF9PUkdfQlVJTERFUl9KU09OX1VSTDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlICdAREVQ
UyAtIGNocm9taXVtLm9yZyc6CisgICAgICAgIG9uTG9hZCA9IHBhcnRpYWwob25MYXlvdXRUZXN0
QnVpbGRlckxpc3RMb2FkLCBpc0Nocm9taXVtV2Via2l0RGVwc1Rlc3RSdW5uZXIsIENIUk9NSVVN
X1dFQktJVF9CVUlMREVSX01BU1RFUiwgZ3JvdXAsIEJ1aWxkZXJHcm91cC5ERVBTX1dFQktJVCk7
CisgICAgICAgIHVybCA9IENIUk9NSVVNX0NBTkFSWV9CVUlMREVSX0pTT05fVVJMOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBqc29uUmVxdWVzdCh1cmwsIG9uTG9hZCwgb25FcnJvckxv
YWRpbmdCdWlsZGVyTGlzdCk7Cit9CiAKIHZhciBMQVlPVVRfVEVTVFNfQlVJTERFUl9HUk9VUFMg
PSB7Ci0gICAgJ0BERVBTIC0gY2hyb21pdW0ub3JnJzogbmV3IEJ1aWxkZXJHcm91cChCdWlsZGVy
R3JvdXAuREVQU19XRUJLSVQsIENIUk9NSVVNX0xBWU9VVF9ERVBTX0JVSUxERVJTKSwKLSAgICAn
QFRvVCAtIGNocm9taXVtLm9yZyc6IG5ldyBCdWlsZGVyR3JvdXAoQnVpbGRlckdyb3VwLlRPVF9X
RUJLSVQsIENIUk9NSVVNX0xBWU9VVF9UT1RfQlVJTERFUlMpLAotICAgICdAVG9UIC0gd2Via2l0
Lm9yZyc6IG5ldyBCdWlsZGVyR3JvdXAoQnVpbGRlckdyb3VwLlRPVF9XRUJLSVQsIFtdKSwKLX07
CisgICAgJ0BUb1QgLSBjaHJvbWl1bS5vcmcnOiBudWxsLAorICAgICdAVG9UIC0gd2Via2l0Lm9y
Zyc6IG51bGwsCisgICAgJ0BERVBTIC0gY2hyb21pdW0ub3JnJzogbnVsbCwKK30KIAogdmFyIENI
Uk9NSVVNX0dQVV9HVEVTVFNfREVQU19CVUlMREVSUyA9IFsKICAgICBbJ1dpbjcgUmVsZWFzZSAo
TlZJRElBKScsIEJ1aWxkZXJHcm91cC5ERUZBVUxUX0JVSUxERVJdLApkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qcyBi
L1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jhc2Uu
anMKaW5kZXggMGZkMDhiYTE0ZWJiOWZmZGI4MTQ1ODYzY2VkODJmMTA2NzQ0NDgzYi4uYjg2MmJm
OGU2YzU5MjkzMDUzZjEzNDcxZWY2NmE2NDU3MzZlNjMyMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qcworKysgYi9U
b29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpz
CkBAIC00OSw3ICs0OSw3IEBAIGZ1bmN0aW9uIGhhbmRsZVZhbGlkSGFzaFBhcmFtZXRlcihrZXks
IHZhbHVlKQogCiAvLyBEZWZhdWx0IGhhc2ggcGFyYW1ldGVycyBmb3IgdGhlIHBhZ2UuIFRoZSBw
YWdlIHNob3VsZCBvdmVycmlkZSB0aGlzIHRvIGNyZWF0ZQogLy8gZGVmYXVsdCBzdGF0ZXMuCi12
YXIgZ19kZWZhdWx0U3RhdGVWYWx1ZXMgPSB7fTsKK3ZhciBnX2RlZmF1bHREYXNoYm9hcmRTcGVj
aWZpY1N0YXRlVmFsdWVzID0ge307CiAKIAogLy8gVGhlIHBhZ2Ugc2hvdWxkIG92ZXJyaWRlIHRo
aXMgdG8gbW9kaWZ5IHBhZ2Ugc3RhdGUgZHVlIHRvCkBAIC0xNzIsMTIgKzE3MiwxMiBAQCBmdW5j
dGlvbiBoYW5kbGVWYWxpZEhhc2hQYXJhbWV0ZXJXcmFwcGVyKGtleSwgdmFsdWUpCiB7CiAgICAg
c3dpdGNoKGtleSkgewogICAgIGNhc2UgJ3Rlc3RUeXBlJzoKLSAgICAgICAgdmFsaWRhdGVQYXJh
bWV0ZXIoZ19jdXJyZW50U3RhdGUsIGtleSwgdmFsdWUsCisgICAgICAgIHZhbGlkYXRlUGFyYW1l
dGVyKGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZSwga2V5LCB2YWx1ZSwKICAgICAgICAgICAgIGZ1bmN0
aW9uKCkgeyByZXR1cm4gVEVTVF9UWVBFUy5pbmRleE9mKHZhbHVlKSAhPSAtMTsgfSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgY2FzZSAnZ3JvdXAnOgotICAgICAgICB2YWxpZGF0ZVBh
cmFtZXRlcihnX2N1cnJlbnRTdGF0ZSwga2V5LCB2YWx1ZSwKKyAgICAgICAgdmFsaWRhdGVQYXJh
bWV0ZXIoZ19jcm9zc0Rhc2hib2FyZFN0YXRlLCBrZXksIHZhbHVlLAogICAgICAgICAgICAgZnVu
Y3Rpb24oKSB7CiAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSBpbiBMQVlPVVRfVEVTVFNfQlVJ
TERFUl9HUk9VUFMgfHwKICAgICAgICAgICAgICAgICAgIHZhbHVlIGluIENIUk9NSVVNX0dQVV9U
RVNUU19CVUlMREVSX0dST1VQUyB8fApAQCAtMTg1LDEzICsxODUsNyBAQCBmdW5jdGlvbiBoYW5k
bGVWYWxpZEhhc2hQYXJhbWV0ZXJXcmFwcGVyKGtleSwgdmFsdWUpCiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAvLyBGSVhNRTogcmVtb3ZlIHN1cHBvcnQgZm9y
IHRoaXMgcGFyYW1ldGVyIG9uY2UgdGhlIHdhdGVyZmFsbCBzdGFydHMgdG8KLSAgICAvLyBwYXNz
IGluIHRoZSBidWlsZGVyIG5hbWUgaW5zdGVhZC4KLSAgICBjYXNlICdtYXN0ZXInOgotICAgICAg
ICB2YWxpZGF0ZVBhcmFtZXRlcihnX2N1cnJlbnRTdGF0ZSwga2V5LCB2YWx1ZSwKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKCkgeyByZXR1cm4gdmFsdWUgaW4gTEVHQUNZX0JVSUxERVJfTUFTVEVSU19U
T19HUk9VUFM7IH0pOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLQorICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBwcm9iYWJseSBiZSBzdG9yZWQgb24gZ19jcm9zc0Rhc2hib2FyZFN0YXRlIGxpa2Ug
ZXZlcnl0aGluZyBlbHNlIGluIHRoaXMgZnVuY3Rpb24uCiAgICAgY2FzZSAnYnVpbGRlcic6CiAg
ICAgICAgIHZhbGlkYXRlUGFyYW1ldGVyKGdfY3VycmVudFN0YXRlLCBrZXksIHZhbHVlLAogICAg
ICAgICAgICAgZnVuY3Rpb24oKSB7IHJldHVybiB2YWx1ZSBpbiBnX2J1aWxkZXJzOyB9KTsKQEAg
LTE5OSwxMyArMTkzLDEzIEBAIGZ1bmN0aW9uIGhhbmRsZVZhbGlkSGFzaFBhcmFtZXRlcldyYXBw
ZXIoa2V5LCB2YWx1ZSkKIAogICAgIGNhc2UgJ3VzZVRlc3REYXRhJzoKICAgICBjYXNlICdzaG93
QWxsUnVucyc6Ci0gICAgICAgIGdfY3VycmVudFN0YXRlW2tleV0gPSB2YWx1ZSA9PSAndHJ1ZSc7
CisgICAgICAgIGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZVtrZXldID0gdmFsdWUgPT0gJ3RydWUnOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNhc2UgJ2J1aWxkRGlyJzoKLSAgICAgICAgZ19j
dXJyZW50U3RhdGVbJ3Rlc3RUeXBlJ10gPSAnbGF5b3V0LXRlc3QtcmVzdWx0cyc7CiAgICAgICAg
IGlmICh2YWx1ZSA9PT0gJ0RlYnVnJyB8fCB2YWx1ZSA9PSAnUmVsZWFzZScpIHsKLSAgICAgICAg
ICAgIGdfY3VycmVudFN0YXRlW2tleV0gPSB2YWx1ZTsKKyAgICAgICAgICAgIGdfY3Jvc3NEYXNo
Ym9hcmRTdGF0ZVsndGVzdFR5cGUnXSA9ICdsYXlvdXQtdGVzdHMnOworICAgICAgICAgICAgZ19j
cm9zc0Rhc2hib2FyZFN0YXRlW2tleV0gPSB2YWx1ZTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxOSw3ICsy
MTMsOCBAQCB2YXIgZ19kZWZhdWx0Q3Jvc3NEYXNoYm9hcmRTdGF0ZVZhbHVlcyA9IHsKICAgICBn
cm91cDogJ0BUb1QgLSBjaHJvbWl1bS5vcmcnLAogICAgIHNob3dBbGxSdW5zOiBmYWxzZSwKICAg
ICB0ZXN0VHlwZTogJ2xheW91dC10ZXN0cycsCi0gICAgYnVpbGREaXIgOiAnJworICAgIGJ1aWxk
RGlyOiAnJywKKyAgICB1c2VUZXN0RGF0YTogZmFsc2UsCiB9CiAKIC8vIEdlbmVyaWMgdXRpbGl0
eSBmdW5jdGlvbnMuCkBAIC0yODksMTEgKzI4NCw4IEBAIGZ1bmN0aW9uIHZhbGlkYXRlUGFyYW1l
dGVyKHN0YXRlLCBrZXksIHZhbHVlLCB2YWxpZGF0ZUZuKQogICAgICAgICBjb25zb2xlLmxvZyhr
ZXkgKyAnIHZhbHVlIGlzIG5vdCB2YWxpZDogJyArIHZhbHVlKTsKIH0KIAotZnVuY3Rpb24gcGFy
c2VQYXJhbWV0ZXJzKHBhcmFtZXRlclN0cikKK2Z1bmN0aW9uIHF1ZXJ5SGFzaEFzTWFwKCkKIHsK
LSAgICBnX29sZFN0YXRlID0gZ19jdXJyZW50U3RhdGU7Ci0gICAgZ19jdXJyZW50U3RhdGUgPSB7
fTsKLQogICAgIHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2g7CiAgICAgdmFyIHBhcmFt
c0xpc3QgPSBoYXNoID8gaGFzaC5zdWJzdHJpbmcoMSkuc3BsaXQoJyYnKSA6IFtdOwogICAgIHZh
ciBwYXJhbXNNYXAgPSB7fTsKQEAgLTMwOCw2MiArMzAwLDgxIEBAIGZ1bmN0aW9uIHBhcnNlUGFy
YW1ldGVycyhwYXJhbWV0ZXJTdHIpCiAgICAgICAgIHBhcmFtc01hcFt0aGlzUGFyYW1bMF1dID0g
ZGVjb2RlVVJJQ29tcG9uZW50KHRoaXNQYXJhbVsxXSk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24g
cGFyc2VQYXJhbShrZXkpCi0gICAgewotICAgICAgICB2YXIgdmFsdWUgPSBwYXJhbXNNYXBba2V5
XTsKLSAgICAgICAgaWYgKCFoYW5kbGVWYWxpZEhhc2hQYXJhbWV0ZXJXcmFwcGVyKGtleSwgdmFs
dWUpKQotICAgICAgICAgICAgaW52YWxpZEtleXMucHVzaChrZXkgKyAnPScgKyB2YWx1ZSk7Cisg
ICAgLy8gRklYTUU6IHJlbW92ZSBzdXBwb3J0IGZvciBtYXBwaW5nIGZyb20gdGhlIG1hc3RlciBw
YXJhbWV0ZXIgdG8gdGhlIGdyb3VwCisgICAgLy8gb25lIG9uY2UgdGhlIHdhdGVyZmFsbCBzdGFy
dHMgdG8gcGFzcyBpbiB0aGUgYnVpbGRlciBuYW1lIGluc3RlYWQuCisgICAgaWYgKHBhcmFtc01h
cC5tYXN0ZXIpIHsKKyAgICAgICAgcGFyYW1zTWFwLmdyb3VwID0gTEVHQUNZX0JVSUxERVJfTUFT
VEVSU19UT19HUk9VUFNbcGFyYW1zTWFwLm1hc3Rlcl07CisgICAgICAgIGlmICghcGFyYW1zTWFw
Lmdyb3VwKQorICAgICAgICAgICAgY29uc29sZS5sb2coJ0VSUk9SOiBVbmtub3duIG1hc3RlciBu
YW1lOiAnICsgcGFyYW1zTWFwLm1hc3Rlcik7CisgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNo
ID0gd2luZG93LmxvY2F0aW9uLmhhc2gucmVwbGFjZSgnbWFzdGVyPScgKyBwYXJhbXNNYXAubWFz
dGVyLCAnZ3JvdXA9JyArIHBhcmFtc01hcC5ncm91cCk7CisgICAgICAgIGRlbGV0ZSBwYXJhbXNN
YXAubWFzdGVyOwogICAgIH0KIAotICAgIC8vIFBhcnNlIGJ1aWxkZXIgcGFyYW0gbGFzdCwgc2lu
Y2UgdGhlIGxpc3Qgb2YgdmFsaWQgYnVpbGRlcnMgZGVwZW5kcyBvbiB0aGUgb3RoZXIgcGFyYW1l
dGVycy4KLSAgICBmb3IgKHZhciBrZXkgaW4gcGFyYW1zTWFwKSB7Ci0gICAgICAgIGlmIChrZXkg
IT0gJ2J1aWxkZXInKQotICAgICAgICAgICAgcGFyc2VQYXJhbShrZXkpOwotICAgIH0KLSAgICBp
ZiAoJ2J1aWxkZXInIGluIHBhcmFtc01hcCkgewotICAgICAgICBpZiAoIWdfYnVpbGRlcnMpIHsK
LSAgICAgICAgICAgIHZhciB0ZW1wU3RhdGUgPSB7fTsKLSAgICAgICAgICAgIGZvciAodmFyIGtl
eSBpbiBnX2N1cnJlbnRTdGF0ZSkKLSAgICAgICAgICAgICAgICB0ZW1wU3RhdGVba2V5XSA9IGdf
Y3VycmVudFN0YXRlW2tleV07Ci0gICAgICAgICAgICBmaWxsTWlzc2luZ1ZhbHVlcyh0ZW1wU3Rh
dGUsIGdfZGVmYXVsdENyb3NzRGFzaGJvYXJkU3RhdGVWYWx1ZXMpOwotICAgICAgICAgICAgZmls
bE1pc3NpbmdWYWx1ZXModGVtcFN0YXRlLCBnX2RlZmF1bHRTdGF0ZVZhbHVlcyk7Ci0gICAgICAg
ICAgICBpbml0QnVpbGRlcnModGVtcFN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICBwYXJzZVBh
cmFtKCdidWlsZGVyJyk7Ci0gICAgfQorICAgIHJldHVybiBwYXJhbXNNYXA7Cit9CisKK2Z1bmN0
aW9uIHBhcnNlUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGtleSkKK3sKKyAgICBpZiAoIShrZXkgaW4g
cGFyYW1ldGVycykpCisgICAgICAgIHJldHVybjsKKyAgICB2YXIgdmFsdWUgPSBwYXJhbWV0ZXJz
W2tleV07CisgICAgaWYgKCFoYW5kbGVWYWxpZEhhc2hQYXJhbWV0ZXJXcmFwcGVyKGtleSwgdmFs
dWUpKQorICAgICAgICBjb25zb2xlLmxvZygiSW52YWxpZCBxdWVyeSBwYXJhbWV0ZXI6ICIgKyBr
ZXkgKyAnPScgKyB2YWx1ZSk7Cit9CisKK2Z1bmN0aW9uIHBhcnNlQ3Jvc3NEYXNoYm9hcmRQYXJh
bWV0ZXJzKCkKK3sKKyAgICBnX2Nyb3NzRGFzaGJvYXJkU3RhdGUgPSB7fTsKKyAgICB2YXIgcGFy
YW1ldGVycyA9IHF1ZXJ5SGFzaEFzTWFwKCk7CisgICAgZm9yIChwYXJhbWV0ZXJOYW1lIGluIGdf
ZGVmYXVsdENyb3NzRGFzaGJvYXJkU3RhdGVWYWx1ZXMpCisgICAgICAgIHBhcnNlUGFyYW1ldGVy
KHBhcmFtZXRlcnMsIHBhcmFtZXRlck5hbWUpOworCisgICAgZmlsbE1pc3NpbmdWYWx1ZXMoZ19j
cm9zc0Rhc2hib2FyZFN0YXRlLCBnX2RlZmF1bHRDcm9zc0Rhc2hib2FyZFN0YXRlVmFsdWVzKTsK
K30KIAotICAgIGlmIChpbnZhbGlkS2V5cy5sZW5ndGgpCi0gICAgICAgIGNvbnNvbGUubG9nKCJJ
bnZhbGlkIHF1ZXJ5IHBhcmFtZXRlcnM6ICIgKyBpbnZhbGlkS2V5cy5qb2luKCcsJykpOworZnVu
Y3Rpb24gcGFyc2VEYXNoYm9hcmRTcGVjaWZpY1BhcmFtZXRlcnMoKQoreworICAgIGdfY3VycmVu
dFN0YXRlID0ge307CisgICAgdmFyIHBhcmFtZXRlcnMgPSBxdWVyeUhhc2hBc01hcCgpOworICAg
IGZvciAocGFyYW1ldGVyTmFtZSBpbiBnX2RlZmF1bHREYXNoYm9hcmRTcGVjaWZpY1N0YXRlVmFs
dWVzKQorICAgICAgICBwYXJzZVBhcmFtZXRlcihwYXJhbWV0ZXJzLCBwYXJhbWV0ZXJOYW1lKTsK
K30KKworZnVuY3Rpb24gcGFyc2VQYXJhbWV0ZXJzKCkKK3sKKyAgICB2YXIgb2xkQ3Jvc3NEYXNo
Ym9hcmRTdGF0ZSA9IGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZTsKKyAgICB2YXIgb2xkRGFzaGJvYXJk
U3BlY2lmaWNTdGF0ZSA9IGdfY3VycmVudFN0YXRlOwogCi0gICAgdmFyIGRpZmZTdGF0ZSA9IGRp
ZmZTdGF0ZXMoKTsKKyAgICBwYXJzZUNyb3NzRGFzaGJvYXJkUGFyYW1ldGVycygpOworICAgIHBh
cnNlRGFzaGJvYXJkU3BlY2lmaWNQYXJhbWV0ZXJzKCk7CiAKLSAgICBmaWxsTWlzc2luZ1ZhbHVl
cyhnX2N1cnJlbnRTdGF0ZSwgZ19kZWZhdWx0Q3Jvc3NEYXNoYm9hcmRTdGF0ZVZhbHVlcyk7Ci0g
ICAgZmlsbE1pc3NpbmdWYWx1ZXMoZ19jdXJyZW50U3RhdGUsIGdfZGVmYXVsdFN0YXRlVmFsdWVz
KTsKKyAgICB2YXIgY3Jvc3NEYXNoYm9hcmREaWZmU3RhdGUgPSBkaWZmU3RhdGVzKG9sZENyb3Nz
RGFzaGJvYXJkU3RhdGUsIGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZSk7CisgICAgdmFyIGRhc2hib2Fy
ZFNwZWNpZmljRGlmZlN0YXRlID0gZGlmZlN0YXRlcyhvbGREYXNoYm9hcmRTcGVjaWZpY1N0YXRl
LCBnX2N1cnJlbnRTdGF0ZSk7CisKKyAgICBmaWxsTWlzc2luZ1ZhbHVlcyhnX2N1cnJlbnRTdGF0
ZSwgZ19kZWZhdWx0RGFzaGJvYXJkU3BlY2lmaWNTdGF0ZVZhbHVlcyk7CiAgICAgZmlsbE1pc3Np
bmdWYWx1ZXMoZ19jdXJyZW50U3RhdGUsIHsnYnVpbGRlcic6IGdfZGVmYXVsdEJ1aWxkZXJOYW1l
fSk7CiAKICAgICAvLyBTb21lIHBhcmFtZXRlcnMgcmVxdWlyZSBsb2FkaW5nIGRpZmZlcmVudCBK
U09OIGZpbGVzIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuIERvIGEgcmVsb2FkLgotICAgIGlmIChn
X29sZFN0YXRlKSB7Ci0gICAgICAgIGZvciAodmFyIGtleSBpbiBnX2N1cnJlbnRTdGF0ZSkgewot
ICAgICAgICAgICAgaWYgKGdfb2xkU3RhdGVba2V5XSAhPSBnX2N1cnJlbnRTdGF0ZVtrZXldICYm
IFJFTE9BRF9SRVFVSVJJTkdfUEFSQU1FVEVSUy5pbmRleE9mKGtleSkgIT0gLTEpCisgICAgaWYg
KE9iamVjdC5rZXlzKG9sZENyb3NzRGFzaGJvYXJkU3RhdGUpLmxlbmd0aCkgeworICAgICAgICBm
b3IgKHZhciBrZXkgaW4gZ19jcm9zc0Rhc2hib2FyZFN0YXRlKSB7CisgICAgICAgICAgICBpZiAo
b2xkQ3Jvc3NEYXNoYm9hcmRTdGF0ZVtrZXldICE9IGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZVtrZXld
ICYmIFJFTE9BRF9SRVFVSVJJTkdfUEFSQU1FVEVSUy5pbmRleE9mKGtleSkgIT0gLTEpCiAgICAg
ICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgcmV0dXJuIGRpZmZTdGF0ZTsKKyAgICByZXR1cm4gZGFzaGJvYXJkU3BlY2lmaWNEaWZm
U3RhdGU7CiB9CiAKLS8vIEZpbmQgdGhlIGRpZmZlcmVuY2Ugb2YgZ19jdXJyZW50U3RhdGUgd2l0
aCBnX29sZFN0YXRlLgotLy8gQHJldHVybiB7T2JqZWN0fSBrZXk6dmFsdWVzIG9mIHRoZSBuZXcg
b3IgY2hhbmdlZCBwYXJhbXMuCi1mdW5jdGlvbiBkaWZmU3RhdGVzKCkKK2Z1bmN0aW9uIGRpZmZT
dGF0ZXMob2xkU3RhdGUsIG5ld1N0YXRlKQogewogICAgIC8vIElmIHRoZXJlIGlzIG5vIG9sZCBz
dGF0ZSwgZXZlcnl0aGluZyBpbiB0aGUgY3VycmVudCBzdGF0ZSBpcyBuZXcuCi0gICAgaWYgKCFn
X29sZFN0YXRlKQotICAgICAgICByZXR1cm4gZ19jdXJyZW50U3RhdGU7CisgICAgaWYgKCFvbGRT
dGF0ZSkKKyAgICAgICAgcmV0dXJuIG5ld1N0YXRlOwogCiAgICAgdmFyIGNoYW5nZWRQYXJhbXMg
PSB7fTsKLSAgICBmb3IgKGN1cktleSBpbiBnX2N1cnJlbnRTdGF0ZSkgewotICAgICAgICB2YXIg
b2xkVmFsID0gZ19vbGRTdGF0ZVtjdXJLZXldOwotICAgICAgICB2YXIgbmV3VmFsID0gZ19jdXJy
ZW50U3RhdGVbY3VyS2V5XTsKKyAgICBmb3IgKGN1cktleSBpbiBuZXdTdGF0ZSkgeworICAgICAg
ICB2YXIgb2xkVmFsID0gb2xkU3RhdGVbY3VyS2V5XTsKKyAgICAgICAgdmFyIG5ld1ZhbCA9IG5l
d1N0YXRlW2N1cktleV07CiAgICAgICAgIC8vIEFkZCBuZXcga2V5cyBvciBjaGFuZ2VkIHZhbHVl
cy4KICAgICAgICAgaWYgKCFvbGRWYWwgfHwgb2xkVmFsICE9IG5ld1ZhbCkKICAgICAgICAgICAg
IGNoYW5nZWRQYXJhbXNbY3VyS2V5XSA9IG5ld1ZhbDsKQEAgLTM3Myw4ICszODQsOCBAQCBmdW5j
dGlvbiBkaWZmU3RhdGVzKCkKIAogZnVuY3Rpb24gZGVmYXVsdFZhbHVlKGtleSkKIHsKLSAgICBp
ZiAoa2V5IGluIGdfZGVmYXVsdFN0YXRlVmFsdWVzKQotICAgICAgICByZXR1cm4gZ19kZWZhdWx0
U3RhdGVWYWx1ZXNba2V5XTsKKyAgICBpZiAoa2V5IGluIGdfZGVmYXVsdERhc2hib2FyZFNwZWNp
ZmljU3RhdGVWYWx1ZXMpCisgICAgICAgIHJldHVybiBnX2RlZmF1bHREYXNoYm9hcmRTcGVjaWZp
Y1N0YXRlVmFsdWVzW2tleV07CiAgICAgcmV0dXJuIGdfZGVmYXVsdENyb3NzRGFzaGJvYXJkU3Rh
dGVWYWx1ZXNba2V5XTsKIH0KIApAQCAtNDA4LDMwICs0MTksMjYgQEAgZnVuY3Rpb24gYXBwZW5k
U2NyaXB0KHBhdGgsIG9wdF9vbkVycm9yLCBvcHRfb25Mb2FkKQogICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQoc2NyaXB0KTsKIH0KIAotLy8g
UGVybWFsaW5rYWJsZSBzdGF0ZSBvZiB0aGUgcGFnZS4KLXZhciBnX2N1cnJlbnRTdGF0ZTsKLQot
Ly8gU2F2ZWQgdmFsdWUgb2YgcHJldmlvdXMgZ19jdXJyZW50U3RhdGUuIFRoaXMgaXMgdXNlZCB0
byBkZXRlY3QgY2hhbmdpbmcgZnJvbQotLy8gb25lIHNldCBvZiBidWlsZGVycyB0byBhbm90aGVy
LCB3aGljaCByZXF1aXJlcyByZWxvYWRpbmcgdGhlIHBhZ2UuCi12YXIgZ19vbGRTdGF0ZTsKLQot
Ly8gUGFyc2UgY3Jvc3MtZGFzaGJvYXJkIHBhcmFtZXRlcnMgYmVmb3JlIHVzaW5nIHRoZW0uCi1w
YXJzZVBhcmFtZXRlcnMoKTsKKy8vIEZJWE1FOiBSZW5hbWUgdGhpcyB0byBnX2Rhc2hib2FyZFNw
ZWNpZmljU3RhdGU7Cit2YXIgZ19jdXJyZW50U3RhdGUgPSB7fTsKK3ZhciBnX2Nyb3NzRGFzaGJv
YXJkU3RhdGUgPSB7fTsKK3ZhciBnX3dhaXRpbmdPbkV4cGVjdGF0aW9uczsKK3BhcnNlQ3Jvc3NE
YXNoYm9hcmRQYXJhbWV0ZXJzKCk7Citsb2FkQnVpbGRlcnNMaXN0KGdfY3Jvc3NEYXNoYm9hcmRT
dGF0ZS5ncm91cCwgZ19jcm9zc0Rhc2hib2FyZFN0YXRlLnRlc3RUeXBlKTsKIAogZnVuY3Rpb24g
aXNMYXlvdXRUZXN0UmVzdWx0cygpCiB7Ci0gICAgcmV0dXJuIGdfY3VycmVudFN0YXRlLnRlc3RU
eXBlID09ICdsYXlvdXQtdGVzdHMnOworICAgIHJldHVybiBnX2Nyb3NzRGFzaGJvYXJkU3RhdGUu
dGVzdFR5cGUgPT0gJ2xheW91dC10ZXN0cyc7CiB9CiAKIGZ1bmN0aW9uIGlzR1BVVGVzdFJlc3Vs
dHMoKQogewotICAgIHJldHVybiBnX2N1cnJlbnRTdGF0ZS50ZXN0VHlwZSA9PSAnZ3B1X3Rlc3Rz
JzsKKyAgICByZXR1cm4gZ19jcm9zc0Rhc2hib2FyZFN0YXRlLnRlc3RUeXBlID09ICdncHVfdGVz
dHMnOwogfQogCi1mdW5jdGlvbiBjdXJyZW50QnVpbGRlckdyb3VwQ2F0ZWdvcnkob3B0X3N0YXRl
KQorZnVuY3Rpb24gY3VycmVudEJ1aWxkZXJHcm91cENhdGVnb3J5KCkKIHsKLSAgICB2YXIgc3Rh
dGUgPSBvcHRfc3RhdGUgfHwgZ19jdXJyZW50U3RhdGU7Ci0gICAgc3dpdGNoIChzdGF0ZS50ZXN0
VHlwZSkgeworICAgIHN3aXRjaCAoZ19jcm9zc0Rhc2hib2FyZFN0YXRlLnRlc3RUeXBlKSB7CiAg
ICAgY2FzZSAnbGF5b3V0LXRlc3RzJzoKICAgICAgICAgcmV0dXJuIExBWU9VVF9URVNUU19CVUlM
REVSX0dST1VQUwogICAgIGNhc2UgJ2dwdV90ZXN0cyc6CkBAIC00NjgsMTQgKzQ3NSwxMyBAQCBm
dW5jdGlvbiBjdXJyZW50QnVpbGRlckdyb3VwQ2F0ZWdvcnkob3B0X3N0YXRlKQogICAgIGNhc2Ug
J3ZpZXdzX3VuaXR0ZXN0cyc6CiAgICAgICAgIHJldHVybiBDSFJPTUlVTV9HVEVTVFNfQlVJTERF
Ul9HUk9VUFMKICAgICBkZWZhdWx0OgotICAgICAgICBjb25zb2xlLmxvZygnaW52YWxpZCB0ZXN0
VHlwZSBwYXJhbWV0ZXI6ICcgKyBzdGF0ZS50ZXN0VHlwZSk7CisgICAgICAgIGNvbnNvbGUubG9n
KCdpbnZhbGlkIHRlc3RUeXBlIHBhcmFtZXRlcjogJyArIGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZS50
ZXN0VHlwZSk7CiAgICAgfQogfQogCi1mdW5jdGlvbiBjdXJyZW50QnVpbGRlckdyb3VwKG9wdF9z
dGF0ZSkKK2Z1bmN0aW9uIGN1cnJlbnRCdWlsZGVyR3JvdXAoKQogewotICAgIHZhciBzdGF0ZSA9
IG9wdF9zdGF0ZSB8fCBnX2N1cnJlbnRTdGF0ZTsKLSAgICByZXR1cm4gY3VycmVudEJ1aWxkZXJH
cm91cENhdGVnb3J5KHN0YXRlKVtzdGF0ZS5ncm91cF0KKyAgICByZXR1cm4gY3VycmVudEJ1aWxk
ZXJHcm91cENhdGVnb3J5KClbZ19jcm9zc0Rhc2hib2FyZFN0YXRlLmdyb3VwXQogfQogCiBmdW5j
dGlvbiBidWlsZGVyTWFzdGVyKGJ1aWxkZXJOYW1lKQpAQCAtNDg4LDI1ICs0OTQsMTcgQEAgZnVu
Y3Rpb24gaXNUaXBPZlRyZWVXZWJLaXRCdWlsZGVyKCkKICAgICByZXR1cm4gY3VycmVudEJ1aWxk
ZXJHcm91cCgpLmlzVG9UV2ViS2l0OwogfQogCi12YXIgZ19kZWZhdWx0QnVpbGRlck5hbWUsIGdf
YnVpbGRlcnMsIGdfZXhwZWN0YXRpb25zQnVpbGRlcjsKLWZ1bmN0aW9uIGluaXRCdWlsZGVycyhz
dGF0ZSkKK3ZhciBnX2RlZmF1bHRCdWlsZGVyTmFtZSwgZ19idWlsZGVyczsKK2Z1bmN0aW9uIGlu
aXRCdWlsZGVycygpCiB7Ci0gICAgaWYgKHN0YXRlLmJ1aWxkRGlyKSB7CisgICAgaWYgKGdfY3Jv
c3NEYXNoYm9hcmRTdGF0ZS5idWlsZERpcikgewogICAgICAgICAvLyBJZiBidWlsZERpciBpcyBz
ZXQsIHBvaW50IHRvIHRoZSByZXN1bHRzLmpzb24gaW4gdGhlIGxvY2FsIHRyZWUuIFVzZWZ1bCBm
b3IgZGVidWdnaW5nIGNoYW5nZXMgdG8gdGhlIHB5dGhvbiBKU09OIGdlbmVyYXRvci4KICAgICAg
ICAgZ19kZWZhdWx0QnVpbGRlck5hbWUgPSAnRFVNTVlfQlVJTERFUl9OQU1FJzsKICAgICAgICAg
Z19idWlsZGVycyA9IHsnRFVNTVlfQlVJTERFUl9OQU1FJzogJyd9OwogICAgICAgICB2YXIgbG9j
ID0gZG9jdW1lbnQubG9jYXRpb24udG9TdHJpbmcoKTsKICAgICAgICAgdmFyIG9mZnNldCA9IGxv
Yy5pbmRleE9mKCd3ZWJraXQvJyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IHJl
bW92ZSBzdXBwb3J0IGZvciBtYXBwaW5nIGZyb20gdGhlIG1hc3RlciBwYXJhbWV0ZXIgdG8gdGhl
IGdyb3VwCi0gICAgICAgIC8vIG9uZSBvbmNlIHRoZSB3YXRlcmZhbGwgc3RhcnRzIHRvIHBhc3Mg
aW4gdGhlIGJ1aWxkZXIgbmFtZSBpbnN0ZWFkLgotICAgICAgICBpZiAoc3RhdGUubWFzdGVyKSB7
Ci0gICAgICAgICAgICBzdGF0ZS5ncm91cCA9IExFR0FDWV9CVUlMREVSX01BU1RFUlNfVE9fR1JP
VVBTW3N0YXRlLm1hc3Rlcl07Ci0gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaCA9IHdp
bmRvdy5sb2NhdGlvbi5oYXNoLnJlcGxhY2UoJ21hc3Rlcj0nICsgc3RhdGUubWFzdGVyLCAnZ3Jv
dXA9JyArIHN0YXRlLmdyb3VwKTsKLSAgICAgICAgICAgIGRlbGV0ZSBzdGF0ZS5tYXN0ZXI7Ci0g
ICAgICAgIH0KLSAgICAgICAgY3VycmVudEJ1aWxkZXJHcm91cChzdGF0ZSkuc2V0dXAoKTsKLSAg
ICB9CisgICAgfSBlbHNlCisgICAgICAgIGN1cnJlbnRCdWlsZGVyR3JvdXAoKS5zZXR1cCgpOwog
fQogCiAvLyBBcHBlbmQgSlNPTiBzY3JpcHQgZWxlbWVudHMuCkBAIC01NTksNyArNTU3LDcgQEAg
ZnVuY3Rpb24gcGF0aFRvQnVpbGRlclJlc3VsdHNGaWxlKGJ1aWxkZXJOYW1lKQogewogICAgIHJl
dHVybiBURVNUX1JFU1VMVFNfU0VSVkVSICsgJ3Rlc3RmaWxlP2J1aWxkZXI9JyArIGJ1aWxkZXJO
YW1lICsKICAgICAgICAgICAgICcmbWFzdGVyPScgKyBidWlsZGVyTWFzdGVyKGJ1aWxkZXJOYW1l
KS5uYW1lICsKLSAgICAgICAgICAgICcmdGVzdHR5cGU9JyArIGdfY3VycmVudFN0YXRlLnRlc3RU
eXBlICsgJyZuYW1lPSc7CisgICAgICAgICAgICAnJnRlc3R0eXBlPScgKyBnX2Nyb3NzRGFzaGJv
YXJkU3RhdGUudGVzdFR5cGUgKyAnJm5hbWU9JzsKIH0KIAogLy8gRklYTUU6IE1ha2UgdGhlIGRh
c2hib2FyZCB1bmRlcnN0YW5kIGRpZmZlcmVudCBwb3J0cycgZXhwZWN0YXRpb25zIGZpbGVzLgpA
QCAtNTc3LDggKzU3NSw2IEBAIGZ1bmN0aW9uIHJlcXVlc3RFeHBlY3RhdGlvbnNGaWxlKCkKICAg
ICB9KTsKIH0KIAotdmFyIGdfd2FpdGluZ09uRXhwZWN0YXRpb25zID0gaXNMYXlvdXRUZXN0UmVz
dWx0cygpICYmICFpc1RyZWVNYXAoKTsKLQogZnVuY3Rpb24gaXNUcmVlTWFwKCkKIHsKICAgICBy
ZXR1cm4gZW5kc1dpdGgod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLCAndHJlZW1hcC5odG1sJyk7
CkBAIC01ODksNyArNTg1LDcgQEAgZnVuY3Rpb24gYXBwZW5kSlNPTlNjcmlwdEVsZW1lbnRGb3Io
YnVpbGRlck5hbWUpCiAgICAgdmFyIHJlc3VsdHNGaWxlbmFtZTsKICAgICBpZiAoaXNUcmVlTWFw
KCkpCiAgICAgICAgIHJlc3VsdHNGaWxlbmFtZSA9ICd0aW1lc19tcy5qc29uJzsKLSAgICBlbHNl
IGlmIChnX2N1cnJlbnRTdGF0ZS5zaG93QWxsUnVucykKKyAgICBlbHNlIGlmIChnX2Nyb3NzRGFz
aGJvYXJkU3RhdGUuc2hvd0FsbFJ1bnMpCiAgICAgICAgIHJlc3VsdHNGaWxlbmFtZSA9ICdyZXN1
bHRzLmpzb24nOwogICAgIGVsc2UKICAgICAgICAgcmVzdWx0c0ZpbGVuYW1lID0gJ3Jlc3VsdHMt
c21hbGwuanNvbic7CkBAIC02MDgsNyArNjA0LDcgQEAgZnVuY3Rpb24gYXBwZW5kSlNPTlNjcmlw
dEVsZW1lbnRzKCkKIAogICAgIHBhcnNlUGFyYW1ldGVycygpOwogCi0gICAgaWYgKGdfY3VycmVu
dFN0YXRlLnVzZVRlc3REYXRhKSB7CisgICAgaWYgKGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZS51c2VU
ZXN0RGF0YSkgewogICAgICAgICBhcHBlbmRTY3JpcHQoJ2ZsYWtpbmVzc19kYXNoYm9hcmRfdGVz
dHMuanMnKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYxNiw2ICs2MTIsNyBAQCBmdW5j
dGlvbiBhcHBlbmRKU09OU2NyaXB0RWxlbWVudHMoKQogICAgIGZvciAodmFyIGJ1aWxkZXJOYW1l
IGluIGdfYnVpbGRlcnMpCiAgICAgICAgIGFwcGVuZEpTT05TY3JpcHRFbGVtZW50Rm9yKGJ1aWxk
ZXJOYW1lKTsKIAorICAgIHZhciBnX3dhaXRpbmdPbkV4cGVjdGF0aW9ucyA9IGlzTGF5b3V0VGVz
dFJlc3VsdHMoKSAmJiAhaXNUcmVlTWFwKCk7CiAgICAgaWYgKGdfd2FpdGluZ09uRXhwZWN0YXRp
b25zKQogICAgICAgICByZXF1ZXN0RXhwZWN0YXRpb25zRmlsZSgpOwogfQpAQCAtNjcwLDExICs2
NjcsMTEgQEAgZnVuY3Rpb24gaGFuZGxlUmVzb3VyY2VMb2FkRXJyb3IoYnVpbGRlck5hbWUsIGUp
CiAgICAgICAgIGdfZGVmYXVsdEJ1aWxkZXJOYW1lID0gbnVsbDsKICAgICAgICAgZm9yICh2YXIg
YXZhaWxhYmxlQnVpbGRlck5hbWUgaW4gZ19idWlsZGVycykgewogICAgICAgICAgICAgZ19kZWZh
dWx0QnVpbGRlck5hbWUgPSBhdmFpbGFibGVCdWlsZGVyTmFtZTsKLSAgICAgICAgICAgIGdfZGVm
YXVsdFN0YXRlVmFsdWVzLmJ1aWxkZXIgPSBhdmFpbGFibGVCdWlsZGVyTmFtZTsKKyAgICAgICAg
ICAgIGdfZGVmYXVsdERhc2hib2FyZFNwZWNpZmljU3RhdGVWYWx1ZXMuYnVpbGRlciA9IGF2YWls
YWJsZUJ1aWxkZXJOYW1lOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKCFnX2RlZmF1bHRCdWlsZGVyTmFtZSkgewotICAgICAgICAgICAgdmFyIGVycm9yID0gJ05v
IHRlc3RzIHJlc3VsdHMgZm91bmQgZm9yICcgKyBnX2N1cnJlbnRTdGF0ZS50ZXN0VHlwZSArICcu
IFJlbG9hZCB0aGUgcGFnZSB0byB0cnkgZmV0Y2hpbmcgaXQgYWdhaW4uJzsKKyAgICAgICAgICAg
IHZhciBlcnJvciA9ICdObyB0ZXN0cyByZXN1bHRzIGZvdW5kIGZvciAnICsgZ19jcm9zc0Rhc2hi
b2FyZFN0YXRlLnRlc3RUeXBlICsgJy4gUmVsb2FkIHRoZSBwYWdlIHRvIHRyeSBmZXRjaGluZyBp
dCBhZ2Fpbi4nOwogICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgICAg
ICBhZGRFcnJvcihlcnJvcik7CiAgICAgICAgIH0KQEAgLTcyMiw3ICs3MTksNyBAQCBmdW5jdGlv
biBzaG93RXJyb3JzKCkKIC8vIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGpzb24gZmls
ZXMgaGF2ZSBhbGwgY29tcGxldGVkIGxvYWRpbmcuCiBmdW5jdGlvbiBoYXZlSnNvbkZpbGVzTG9h
ZGVkKCkKIHsKLSAgICBpZiAoIWdfYnVpbGRlcnNMaXN0TG9hZGVkKQorICAgIGlmICghY3VycmVu
dEJ1aWxkZXJHcm91cCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoZ193YWl0
aW5nT25FeHBlY3RhdGlvbnMpCkBAIC03NjQsMTAgKzc2MSwxOCBAQCBmdW5jdGlvbiBoYW5kbGVM
b2NhdGlvbkNoYW5nZSgpCiAKIHdpbmRvdy5vbmhhc2hjaGFuZ2UgPSBoYW5kbGVMb2NhdGlvbkNo
YW5nZTsKIAorZnVuY3Rpb24gY29tYmluZWREYXNoYm9hcmRTdGF0ZSgpCit7CisgICAgdmFyIGNv
bWJpbmVkU3RhdGUgPSBPYmplY3QuY3JlYXRlKGdfY3VycmVudFN0YXRlKTsKKyAgICBmb3IgKHZh
ciBrZXkgaW4gZ19jcm9zc0Rhc2hib2FyZFN0YXRlKQorICAgICAgICBjb21iaW5lZFN0YXRlW2tl
eV0gPSBnX2Nyb3NzRGFzaGJvYXJkU3RhdGVba2V5XTsKKyAgICByZXR1cm4gY29tYmluZWRTdGF0
ZTsgICAgCit9CisKIC8vIFNldHMgdGhlIHBhZ2Ugc3RhdGUuIFRha2VzIHZhcmFyZ3Mgb2Yga2V5
LCB2YWx1ZSBwYWlycy4KIGZ1bmN0aW9uIHNldFF1ZXJ5UGFyYW1ldGVyKHZhcl9hcmdzKQogewot
ICAgIHZhciBzdGF0ZSA9IE9iamVjdC5jcmVhdGUoZ19jdXJyZW50U3RhdGUpOworICAgIHZhciBz
dGF0ZSA9IGNvbWJpbmVkRGFzaGJvYXJkU3RhdGUoKTsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGFyZ3VtZW50cy5sZW5ndGg7IGkgKz0gMikgewogICAgICAgICB2YXIga2V5ID0gYXJndW1lbnRz
W2ldOwogICAgICAgICBzdGF0ZVtrZXldID0gYXJndW1lbnRzW2kgKyAxXTsKQEAgLTc4MSw3ICs3
ODYsNyBAQCBmdW5jdGlvbiBzZXRRdWVyeVBhcmFtZXRlcih2YXJfYXJncykKIAogZnVuY3Rpb24g
cGVybWFMaW5rVVJMSGFzaChvcHRfc3RhdGUpCiB7Ci0gICAgdmFyIHN0YXRlID0gb3B0X3N0YXRl
IHx8IGdfY3VycmVudFN0YXRlOworICAgIHZhciBzdGF0ZSA9IG9wdF9zdGF0ZSB8fCBjb21iaW5l
ZERhc2hib2FyZFN0YXRlKCk7CiAgICAgcmV0dXJuICcjJyArIGpvaW5QYXJhbWV0ZXJzKHN0YXRl
KTsKIH0KIApAQCAtODYwLDcgKzg2NSwxMiBAQCBmdW5jdGlvbiBleHBlY3RhdGlvbnNNYXAoKQog
CiBmdW5jdGlvbiB0b2dnbGVRdWVyeVBhcmFtZXRlcihwYXJhbSkKIHsKLSAgICBzZXRRdWVyeVBh
cmFtZXRlcihwYXJhbSwgIWdfY3VycmVudFN0YXRlW3BhcmFtXSk7CisgICAgc2V0UXVlcnlQYXJh
bWV0ZXIocGFyYW0sICFxdWVyeVBhcmFtZXRlclZhbHVlKHBhcmFtKSk7Cit9CisKK2Z1bmN0aW9u
IHF1ZXJ5UGFyYW1ldGVyVmFsdWUocGFyYW1ldGVyKQoreworICAgIHJldHVybiBnX2N1cnJlbnRT
dGF0ZVtwYXJhbWV0ZXJdIHx8IGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZVtwYXJhbWV0ZXJdOwogfQog
CiBmdW5jdGlvbiBjaGVja2JveEhUTUwocXVlcnlQYXJhbWV0ZXIsIGxhYmVsLCBpc0NoZWNrZWQs
IG9wdF9leHRyYUphdmFTY3JpcHQpCkBAIC04ODAsNyArODkwLDcgQEAgZnVuY3Rpb24gc2VsZWN0
SFRNTChsYWJlbCwgcXVlcnlQYXJhbWV0ZXIsIG9wdGlvbnMpCiAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgIHZhciB2YWx1ZSA9IG9wdGlvbnNb
aV07CiAgICAgICAgIGh0bWwgKz0gJzxvcHRpb24gdmFsdWU9IicgKyB2YWx1ZSArICciICcgKwot
ICAgICAgICAgICAgKGdfY3VycmVudFN0YXRlW3F1ZXJ5UGFyYW1ldGVyXSA9PSB2YWx1ZSA/ICdz
ZWxlY3RlZCcgOiAnJykgKworICAgICAgICAgICAgKHF1ZXJ5UGFyYW1ldGVyVmFsdWUocXVlcnlQ
YXJhbWV0ZXIpID09IHZhbHVlID8gJ3NlbGVjdGVkJyA6ICcnKSArCiAgICAgICAgICAgICAnPicg
KyB2YWx1ZSArICc8L29wdGlvbj4nCiAgICAgfQogICAgIGh0bWwgKz0gJzwvc2VsZWN0PjwvbGFi
ZWw+ICc7CkBAIC05MTAsNyArOTIwLDcgQEAgZnVuY3Rpb24gaHRtbEZvclRlc3RUeXBlU3dpdGNo
ZXIob3B0X25vQnVpbGRlck1lbnUsIG9wdF9leHRyYUh0bWwsIG9wdF9pbmNsdWRlTm8KICAgICAg
ICAgT2JqZWN0LmtleXMoY3VycmVudEJ1aWxkZXJHcm91cENhdGVnb3J5KCkpKTsKIAogICAgIGlm
ICghaXNUcmVlTWFwKCkpCi0gICAgICAgIGh0bWwgKz0gY2hlY2tib3hIVE1MKCdzaG93QWxsUnVu
cycsICdTaG93IGFsbCBydW5zJywgZ19jdXJyZW50U3RhdGUuc2hvd0FsbFJ1bnMpOworICAgICAg
ICBodG1sICs9IGNoZWNrYm94SFRNTCgnc2hvd0FsbFJ1bnMnLCAnU2hvdyBhbGwgcnVucycsIGdf
Y3Jvc3NEYXNoYm9hcmRTdGF0ZS5zaG93QWxsUnVucyk7CiAKICAgICBpZiAob3B0X2V4dHJhSHRt
bCkKICAgICAgICAgaHRtbCArPSBvcHRfZXh0cmFIdG1sOwpAQCAtMTA4NCwxMSArMTA5NCwxMCBA
QCBmdW5jdGlvbiBkZWNvbXByZXNzUmVzdWx0cyhidWlsZGVyUmVzdWx0cykKICAgICB9OwogfQog
Ci12YXIgZ19idWlsZGVyc0xpc3RMb2FkZWQgPSBmYWxzZTsKLQogZnVuY3Rpb24gZ19oYW5kbGVC
dWlsZGVyc0xpc3RMb2FkZWQoKSB7Ci0gICAgZ19idWlsZGVyc0xpc3RMb2FkZWQgPSB0cnVlOwot
ICAgIGluaXRCdWlsZGVycyhnX2N1cnJlbnRTdGF0ZSk7CisgICAgaWYgKCFjdXJyZW50QnVpbGRl
ckdyb3VwKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpbml0QnVpbGRlcnMoKTsKICAgICBhcHBl
bmRKU09OU2NyaXB0RWxlbWVudHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3Vs
dFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkLmh0bWwgYi9Ub29s
cy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQu
aHRtbAppbmRleCA2MGU3MjY3NWIwMzc4MjViY2VjNjkxOTkyODg3YmYxNGI2ZmM1MDVlLi5lMGZj
MjJmNTBiYjEwZTQxZjVmODdhZGUyNDg1ODkwZjJhNjhkNTIwIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuaHRt
bAorKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVz
c19kYXNoYm9hcmQuaHRtbApAQCAtMzU0LDcgKzM1NCw3IEBAIHZhciBWSVJUVUFMX1NVSVRFUyA9
IHsKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogZnVuY3Rpb24gZ2VuZXJhdGVQYWdlKCkKIHsKLSAg
ICBpZiAoZ19jdXJyZW50U3RhdGUudXNlVGVzdERhdGEpCisgICAgaWYgKGdfY3Jvc3NEYXNoYm9h
cmRTdGF0ZS51c2VUZXN0RGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdXBkYXRlRGVmYXVs
dEJ1aWxkZXJTdGF0ZSgpOwpAQCAtNDUyLDcgKzQ1Miw3IEBAIGZ1bmN0aW9uIGhhbmRsZVZhbGlk
SGFzaFBhcmFtZXRlcihrZXksIHZhbHVlKQogICAgIH0KIH0KIAotZ19kZWZhdWx0U3RhdGVWYWx1
ZXMgPSB7CitnX2RlZmF1bHREYXNoYm9hcmRTcGVjaWZpY1N0YXRlVmFsdWVzID0gewogICAgIHNv
cnRPcmRlcjogQkFDS1dBUkQsCiAgICAgc29ydENvbHVtbjogJ2ZsYWtpbmVzcycsCiAgICAgc2hv
d0V4cGVjdGF0aW9uczogZmFsc2UsCkBAIC00NjgsNyArNDY4LDkgQEAgZ19kZWZhdWx0U3RhdGVW
YWx1ZXMgPSB7CiAgICAgZXhwZWN0YXRpb25zVXBkYXRlOiBmYWxzZSwKICAgICB1cGRhdGVJbmRl
eDogMCwKICAgICByZXN1bHRzSGVpZ2h0OiAzMDAsCi0gICAgcmV2aXNpb246IG51bGwKKyAgICBy
ZXZpc2lvbjogbnVsbCwKKyAgICB0ZXN0czogJycsCisgICAgcmVzdWx0OiAnJywKIH07CiAKIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtNTcxLDcgKzU3Myw3IEBAIGZ1bmN0aW9uIHBsYXRmb3Jt
QW5kQnVpbGRUeXBlKGJ1aWxkZXJOYW1lKQogICAgICAgICB2YXIgYnVpbGRlck5hbWVVcHBlckNh
c2UgPSBidWlsZGVyTmFtZS50b1VwcGVyQ2FzZSgpOwogICAgICAgICAKICAgICAgICAgdmFyIHBs
YXRmb3JtID0gJyc7Ci0gICAgICAgIGlmIChpc0xheW91dFRlc3RSZXN1bHRzKCkgJiYgZ19jdXJy
ZW50U3RhdGUuZ3JvdXAgPT0gJ0BUb1QgLSB3ZWJraXQub3JnJyAmJiAhc3RyaW5nQ29udGFpbnMo
YnVpbGRlck5hbWVVcHBlckNhc2UsICdDSFJPTUlVTScpKQorICAgICAgICBpZiAoaXNMYXlvdXRU
ZXN0UmVzdWx0cygpICYmIGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZS5ncm91cCA9PSAnQFRvVCAtIHdl
YmtpdC5vcmcnICYmICFzdHJpbmdDb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ0NIUk9N
SVVNJykpCiAgICAgICAgICAgICBwbGF0Zm9ybSA9IG5vbkNocm9taXVtUGxhdGZvcm0oYnVpbGRl
ck5hbWVVcHBlckNhc2UpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwbGF0Zm9ybSA9IGNo
cm9taXVtUGxhdGZvcm0oYnVpbGRlck5hbWVVcHBlckNhc2UpOwpAQCAtMTI0Myw3ICsxMjQ1LDcg
QEAgZnVuY3Rpb24gaW5kZXhlc0ZvckZhaWx1cmVzKGJ1aWxkZXIsIHRlc3ROYW1lKQogLy8gUmV0
dXJucyB0aGUgcGF0aCB0byB0aGUgZmFpbHVyZSBsb2cgZm9yIHRoaXMgbm9uLXdlYmtpdCB0ZXN0
LgogZnVuY3Rpb24gcGF0aFRvRmFpbHVyZUxvZyh0ZXN0TmFtZSkKIHsKLSAgICByZXR1cm4gJy9z
dGVwcy8nICsgZ19jdXJyZW50U3RhdGUudGVzdFR5cGUgKyAnL2xvZ3MvJyArIHRlc3ROYW1lLnNw
bGl0KCcuJylbMV0KKyAgICByZXR1cm4gJy9zdGVwcy8nICsgZ19jcm9zc0Rhc2hib2FyZFN0YXRl
LnRlc3RUeXBlICsgJy9sb2dzLycgKyB0ZXN0TmFtZS5zcGxpdCgnLicpWzFdCiB9CiAKIGZ1bmN0
aW9uIHNob3dQb3B1cEZvckJ1aWxkKGUsIGJ1aWxkZXIsIGluZGV4LCBvcHRfdGVzdE5hbWUpCkBA
IC0xNjMyLDcgKzE2MzQsNyBAQCBmdW5jdGlvbiByZWFsTW9kaWZpZXJzKG1vZGlmaWVyU3RyaW5n
KQogZnVuY3Rpb24gZ2VuZXJhdGVQYWdlRm9yRXhwZWN0YXRpb25zVXBkYXRlKCkKIHsKICAgICAv
LyBBbHdheXMgc2hvdyBhbGwgcnVucyB3aGVuIGF1dG8tdXBkYXRpbmcgZXhwZWN0YXRpb25zLgot
ICAgIGlmICghZ19jdXJyZW50U3RhdGUuc2hvd0FsbFJ1bnMpCisgICAgaWYgKCFnX2Nyb3NzRGFz
aGJvYXJkU3RhdGUuc2hvd0FsbFJ1bnMpCiAgICAgICAgIHNldFF1ZXJ5UGFyYW1ldGVyKCdzaG93
QWxsUnVucycsIHRydWUpOwogCiAgICAgcHJvY2Vzc1Rlc3RSdW5zRm9yQWxsQnVpbGRlcnMoKTsK
QEAgLTI0ODcsOSArMjQ4OSw5IEBAIGZ1bmN0aW9uIGlzSW52YWxpZEtleUZvckNyb3NzQnVpbGRl
clZpZXcoa2V5KQogZnVuY3Rpb24gdXBkYXRlRGVmYXVsdEJ1aWxkZXJTdGF0ZSgpCiB7CiAgICAg
aWYgKGlzQ3Jvc3NCdWlsZGVyVmlldygpKQotICAgICAgICBkZWxldGUgZ19kZWZhdWx0U3RhdGVW
YWx1ZXMuYnVpbGRlcjsKKyAgICAgICAgZGVsZXRlIGdfZGVmYXVsdERhc2hib2FyZFNwZWNpZmlj
U3RhdGVWYWx1ZXMuYnVpbGRlcjsKICAgICBlbHNlCi0gICAgICAgIGdfZGVmYXVsdFN0YXRlVmFs
dWVzLmJ1aWxkZXIgPSBnX2RlZmF1bHRCdWlsZGVyTmFtZTsKKyAgICAgICAgZ19kZWZhdWx0RGFz
aGJvYXJkU3BlY2lmaWNTdGF0ZVZhbHVlcy5idWlsZGVyID0gZ19kZWZhdWx0QnVpbGRlck5hbWU7
CiB9CiAKIC8vIFNldHMgdGhlIHBhZ2Ugc3RhdGUgdG8gcmVnZW5lcmF0ZSB0aGUgcGFnZS4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2lu
ZXNzX2Rhc2hib2FyZF90ZXN0cy5qcyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRh
c2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZF90ZXN0cy5qcwppbmRleCBiNTI5OTE3YWNlYmE3
ZjIxZTg0OWFiNTExM2M5ZDI1YjA0NjdiMjc1Li5jNWE1Njk2YjhhNDI3ODViN2E0NmM3NzIzMzM3
MjUxMTJmOGExNWY0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1k
YXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmRfdGVzdHMuanMKKysrIGIvVG9vbHMvVGVzdFJl
c3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkX3Rlc3RzLmpz
CkBAIC0xOTksNyArMTk5LDggQEAgZnVuY3Rpb24gdGVzdFBsYXRmb3JtQW5kQnVpbGRUeXBlKCkK
ICAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1hQIFRlc3RzJywgJ1hQJywgJ1JFTEVB
U0UnKTsKICAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0ludGVyYWN0aXZlIFRlc3Rz
IChkYmcpJywgJ1hQJywgJ0RFQlVHJyk7CiAgICAgCi0gICAgZ19jdXJyZW50U3RhdGUuZ3JvdXAg
PSAnQFRvVCAtIHdlYmtpdC5vcmcnOworICAgIGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZS5ncm91cCA9
ICdAVG9UIC0gd2Via2l0Lm9yZyc7CisgICAgZ19jcm9zc0Rhc2hib2FyZFN0YXRlLnRlc3RUeXBl
ID0gJ2xheW91dC10ZXN0cyc7CiAgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdDaHJv
bWl1bSBXaW4gUmVsZWFzZSAoVGVzdHMpJywgJ1hQJywgJ1JFTEVBU0UnKTsKICAgICBydW5QbGF0
Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0Nocm9taXVtIExpbnV4IFJlbGVhc2UgKFRlc3RzKScsICdM
VUNJRCcsICdSRUxFQVNFJyk7CiAgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdDaHJv
bWl1bSBNYWMgUmVsZWFzZSAoVGVzdHMpJywgJ1NOT1dMRU9QQVJEJywgJ1JFTEVBU0UnKTsKQEAg
LTMxNiwxMSArMzE3LDExIEBAIGZ1bmN0aW9uIHRlc3RHZXRFeHBlY3RhdGlvbnMoKQogCiBmdW5j
dGlvbiB0ZXN0U3Vic3RyaW5nTGlzdCgpCiB7Ci0gICAgZ19jdXJyZW50U3RhdGUudGVzdFR5cGUg
PSAnZ3Rlc3QnOworICAgIGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZS50ZXN0VHlwZSA9ICdndGVzdCc7
CiAgICAgZ19jdXJyZW50U3RhdGUudGVzdHMgPSAndGVzdC5GTEFLWV9mb28gdGVzdC5GQUlMU19m
b28xIHRlc3QuRElTQUJMRURfZm9vMiB0ZXN0Lk1BWUJFX2ZvbzMgdGVzdC5mb280JzsKICAgICBh
c3NlcnRFcXVhbHMoc3Vic3RyaW5nTGlzdCgpLnRvU3RyaW5nKCksICd0ZXN0LmZvbyx0ZXN0LmZv
bzEsdGVzdC5mb28yLHRlc3QuZm9vMyx0ZXN0LmZvbzQnKTsKIAotICAgIGdfY3VycmVudFN0YXRl
LnRlc3RUeXBlID0gJ2xheW91dC10ZXN0cyc7CisgICAgZ19jcm9zc0Rhc2hib2FyZFN0YXRlLnRl
c3RUeXBlID0gJ2xheW91dC10ZXN0cyc7CiAgICAgZ19jdXJyZW50U3RhdGUudGVzdHMgPSAnZm9v
L2Jhci5GTEFLWV9mb28uaHRtbCc7CiAgICAgYXNzZXJ0RXF1YWxzKHN1YnN0cmluZ0xpc3QoKS50
b1N0cmluZygpLCAnZm9vL2Jhci5GTEFLWV9mb28uaHRtbCcpOwogfQpAQCAtMzU5LDcgKzM2MCw3
IEBAIGZ1bmN0aW9uIHRlc3RIZWFkZXJGb3JUZXN0VGFibGVIdG1sKCkKIGZ1bmN0aW9uIHRlc3RI
dG1sRm9yVGVzdFR5cGVTd2l0Y2hlckdyb3VwKCkKIHsKICAgICB2YXIgY29udGFpbmVyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgZ19jdXJyZW50U3RhdGUudGVzdFR5cGUg
PSAndWlfdGVzdHMnOworICAgIGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZS50ZXN0VHlwZSA9ICd1aV90
ZXN0cyc7CiAgICAgY29udGFpbmVyLmlubmVySFRNTCA9IGh0bWxGb3JUZXN0VHlwZVN3aXRjaGVy
KCk7CiAgICAgdmFyIHNlbGVjdHMgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnc2VsZWN0
Jyk7CiAgICAgYXNzZXJ0RXF1YWxzKHNlbGVjdHMubGVuZ3RoLCAzKTsKQEAgLTM2Nyw3ICszNjgs
NyBAQCBmdW5jdGlvbiB0ZXN0SHRtbEZvclRlc3RUeXBlU3dpdGNoZXJHcm91cCgpCiAgICAgYXNz
ZXJ0RXF1YWxzKGdyb3VwLnBhcmVudE5vZGUudGV4dENvbnRlbnQuaW5kZXhPZignR3JvdXA6Jyks
IDApOwogICAgIGFzc2VydEVxdWFscyhncm91cC5jaGlsZHJlbi5sZW5ndGgsIDMpOwogCi0gICAg
Z19jdXJyZW50U3RhdGUudGVzdFR5cGUgPSAnbGF5b3V0LXRlc3RzJzsKKyAgICBnX2Nyb3NzRGFz
aGJvYXJkU3RhdGUudGVzdFR5cGUgPSAnbGF5b3V0LXRlc3RzJzsKICAgICBjb250YWluZXIuaW5u
ZXJIVE1MID0gaHRtbEZvclRlc3RUeXBlU3dpdGNoZXIoKTsKICAgICB2YXIgc2VsZWN0cyA9IGNv
bnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCdzZWxlY3QnKTsKICAgICBhc3NlcnRFcXVhbHMoc2Vs
ZWN0cy5sZW5ndGgsIDMpOwpAQCAtMzc4LDE4ICszNzksMzAgQEAgZnVuY3Rpb24gdGVzdEh0bWxG
b3JUZXN0VHlwZVN3aXRjaGVyR3JvdXAoKQogCiBmdW5jdGlvbiB0ZXN0TG9va3VwVmlydHVhbFRl
c3RTdWl0ZSgpCiB7Ci0gICAgc2VsZi5hc3NlcnRFcXVhbHMobG9va3VwVmlydHVhbFRlc3RTdWl0
ZSgnZmFzdC9jYW52YXMvZm9vLmh0bWwnKSwgJycpOwotICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxv
b2t1cFZpcnR1YWxUZXN0U3VpdGUoJ3BsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3Qv
Y2FudmFzL2Zvby5odG1sJyksCisgICAgYXNzZXJ0RXF1YWxzKGxvb2t1cFZpcnR1YWxUZXN0U3Vp
dGUoJ2Zhc3QvY2FudmFzL2Zvby5odG1sJyksICcnKTsKKyAgICBhc3NlcnRFcXVhbHMobG9va3Vw
VmlydHVhbFRlc3RTdWl0ZSgncGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvZmFzdC9jYW52
YXMvZm9vLmh0bWwnKSwKICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
dmlydHVhbC9ncHUvZmFzdC9jYW52YXMnKTsKIH0KIAogZnVuY3Rpb24gdGVzdEJhc2VUZXN0KCkK
IHsKLSAgICBzZWxmLmFzc2VydEVxdWFscyhiYXNlVGVzdCgnZmFzdC9jYW52YXMvZm9vLmh0bWwn
LCAnJyksICdmYXN0L2NhbnZhcy9mb28uaHRtbCcpOwotICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGJh
c2VUZXN0KCdwbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2NhbnZhcy9mb28uaHRt
bCcsICdwbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2NhbnZhcycpLCAnZmFzdC9j
YW52YXMvZm9vLmh0bWwnKTsKKyAgICBhc3NlcnRFcXVhbHMoYmFzZVRlc3QoJ2Zhc3QvY2FudmFz
L2Zvby5odG1sJywgJycpLCAnZmFzdC9jYW52YXMvZm9vLmh0bWwnKTsKKyAgICBhc3NlcnRFcXVh
bHMoYmFzZVRlc3QoJ3BsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvY2FudmFzL2Zv
by5odG1sJywgJ3BsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvY2FudmFzJyksICdm
YXN0L2NhbnZhcy9mb28uaHRtbCcpOwogfQogCiAvLyBGSVhNRTogQ3JlYXRlIGJ1aWxkZXJzX3Rl
c3RzLmpzIGFuZCBtb3ZlIHRoaXMgdGhlcmUuCitmdW5jdGlvbiBnZW5lcmF0ZUJ1aWxkZXJzRnJv
bUJ1aWxkZXJMaXN0SGVscGVyKGJ1aWxkZXJMaXN0LCBleHBlY3RlZEJ1aWxkZXJzLCBidWlsZGVy
RmlsdGVyKQoreworICAgIHZhciBidWlsZGVycyA9IGdlbmVyYXRlQnVpbGRlcnNGcm9tQnVpbGRl
ckxpc3QoYnVpbGRlckxpc3QsIGJ1aWxkZXJGaWx0ZXIpOworICAgIGFzc2VydEVxdWFscyhidWls
ZGVycy5sZW5ndGgsIGV4cGVjdGVkQnVpbGRlcnMubGVuZ3RoKTsKKyAgICBidWlsZGVycy5mb3JF
YWNoKGZ1bmN0aW9uKGJ1aWxkZXIsIGluZGV4KSB7CisgICAgICAgIHZhciBleHBlY3RlZCA9IGV4
cGVjdGVkQnVpbGRlcnNbaW5kZXhdOworICAgICAgICBhc3NlcnRFcXVhbHMoYnVpbGRlci5sZW5n
dGgsIGV4cGVjdGVkLmxlbmd0aCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVpbGRl
ci5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGFzc2VydEVxdWFscyhidWlsZGVyW2ldLCBleHBl
Y3RlZFtpXSk7CisgICAgfSkKK30KKwogZnVuY3Rpb24gdGVzdEdlbmVyYXRlV2Via2l0QnVpbGRl
cnNGcm9tQnVpbGRlckxpc3QoKQogewogICAgIHZhciBidWlsZGVyTGlzdCA9IFsiQ2hyb21pdW0g
QW5kcm9pZCBSZWxlYXNlIiwgIkNocm9taXVtIExpbnV4IFJlbGVhc2UiLCAiQ2hyb21pdW0gTGlu
dXggUmVsZWFzZSAoR3JpZCBMYXlvdXQpIiwgIkNocm9taXVtIExpbnV4IFJlbGVhc2UgKFBlcmYp
IiwgIkNocm9taXVtIExpbnV4IFJlbGVhc2UgKFRlc3RzKSIsCkBAIC00MDAsMTggKzQxMyw3OCBA
QCBmdW5jdGlvbiB0ZXN0R2VuZXJhdGVXZWJraXRCdWlsZGVyc0Zyb21CdWlsZGVyTGlzdCgpCiAg
ICAgICAgICJRdCBTbm93TGVvcGFyZCBSZWxlYXNlIiwgIlF0IFdpbmRvd3MgMzItYml0IERlYnVn
IiwgIlF0IFdpbmRvd3MgMzItYml0IFJlbGVhc2UiLCAiU25vd0xlb3BhcmQgSW50ZWwgRGVidWcg
KEJ1aWxkKSIsICJTbm93TGVvcGFyZCBJbnRlbCBEZWJ1ZyAoVGVzdHMpIiwKICAgICAgICAgIlNu
b3dMZW9wYXJkIEludGVsIERlYnVnIChXZWJLaXQyIFRlc3RzKSIsICJTbm93TGVvcGFyZCBJbnRl
bCBSZWxlYXNlIChCdWlsZCkiLCAiU25vd0xlb3BhcmQgSW50ZWwgUmVsZWFzZSAoVGVzdHMpIiwg
IlNub3dMZW9wYXJkIEludGVsIFJlbGVhc2UgKFdlYktpdDIgVGVzdHMpIiwKICAgICAgICAgIldp
bkNFIFJlbGVhc2UgKEJ1aWxkKSIsICJXaW5DYWlybyBSZWxlYXNlIiwgIldpbmRvd3MgNyBSZWxl
YXNlIChUZXN0cykiLCAiV2luZG93cyA3IFJlbGVhc2UgKFdlYktpdDIgVGVzdHMpIiwgIldpbmRv
d3MgRGVidWcgKEJ1aWxkKSIsICJXaW5kb3dzIFJlbGVhc2UgKEJ1aWxkKSIsICJXaW5kb3dzIFhQ
IERlYnVnIChUZXN0cykiXTsKLSAgICB2YXIgYnVpbGRlcnMgPSBnZW5lcmF0ZVdlYmtpdEJ1aWxk
ZXJzRnJvbUJ1aWxkZXJMaXN0KGJ1aWxkZXJMaXN0KTsKLSAgICB2YXIgZXhwZWN0ZWRCdWlsZGVy
cyA9IFtbIkNocm9taXVtIExpbnV4IFJlbGVhc2UgKFRlc3RzKSIsIDZdLCBbIkNocm9taXVtIE1h
YyBSZWxlYXNlIChUZXN0cykiXSwgWyJDaHJvbWl1bSBXaW4gUmVsZWFzZSAoVGVzdHMpIl0sIFsi
R1RLIExpbnV4IDMyLWJpdCBSZWxlYXNlIl0sIFsiR1RLIExpbnV4IDY0LWJpdCBEZWJ1ZyJdLAor
ICAgIHZhciBleHBlY3RlZEJ1aWxkZXJzID0gW1siQ2hyb21pdW0gTGludXggUmVsZWFzZSAoVGVz
dHMpIiwgMl0sIFsiQ2hyb21pdW0gTWFjIFJlbGVhc2UgKFRlc3RzKSJdLCBbIkNocm9taXVtIFdp
biBSZWxlYXNlIChUZXN0cykiXSwgWyJHVEsgTGludXggMzItYml0IFJlbGVhc2UiXSwgWyJHVEsg
TGludXggNjQtYml0IERlYnVnIl0sCiAgICAgICAgIFsiR1RLIExpbnV4IDY0LWJpdCBSZWxlYXNl
Il0sIFsiTGlvbiBEZWJ1ZyAoVGVzdHMpIl0sIFsiTGlvbiBEZWJ1ZyAoV2ViS2l0MiBUZXN0cyki
XSwgWyJMaW9uIFJlbGVhc2UgKFRlc3RzKSJdLCBbIkxpb24gUmVsZWFzZSAoV2ViS2l0MiBUZXN0
cykiXSwgWyJRdCBMaW51eCBSZWxlYXNlIl0sCiAgICAgICAgIFsiU25vd0xlb3BhcmQgSW50ZWwg
RGVidWcgKFRlc3RzKSJdLCBbIlNub3dMZW9wYXJkIEludGVsIERlYnVnIChXZWJLaXQyIFRlc3Rz
KSJdLCBbIlNub3dMZW9wYXJkIEludGVsIFJlbGVhc2UgKFRlc3RzKSJdLCBbIlNub3dMZW9wYXJk
IEludGVsIFJlbGVhc2UgKFdlYktpdDIgVGVzdHMpIl1dOworICAgIGdlbmVyYXRlQnVpbGRlcnNG
cm9tQnVpbGRlckxpc3RIZWxwZXIoYnVpbGRlckxpc3QsIGV4cGVjdGVkQnVpbGRlcnMsIGlzV2Vi
a2l0VGVzdFJ1bm5lcik7Cit9CiAKLSAgICBzZWxmLmFzc2VydEVxdWFscyhidWlsZGVycy5sZW5n
dGgsIGV4cGVjdGVkQnVpbGRlcnMubGVuZ3RoKTsKLSAgICBidWlsZGVycy5mb3JFYWNoKGZ1bmN0
aW9uKGJ1aWxkZXIsIGluZGV4KSB7Ci0gICAgICAgIHZhciBleHBlY3RlZCA9IGV4cGVjdGVkQnVp
bGRlcnNbaW5kZXhdOwotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhidWlsZGVyLmxlbmd0aCwg
ZXhwZWN0ZWQubGVuZ3RoKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWlsZGVyLmxl
bmd0aDsgaSsrKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoYnVpbGRlcltpXSwgZXhw
ZWN0ZWRbaV0pOwotICAgIH0pCitmdW5jdGlvbiB0ZXN0R2VuZXJhdGVDaHJvbWl1bVdlYmtpdFRp
cE9mVHJlZUJ1aWxkZXJzRnJvbUJ1aWxkZXJMaXN0KCkKK3sKKyAgICB2YXIgYnVpbGRlckxpc3Qg
PSBbIkNocm9tZSBGcmFtZSBUZXN0cyIsICJHUFUgTGludXggKE5WSURJQSkiLCAiR1BVIExpbnV4
IChkYmcpIChOVklESUEpIiwgIkdQVSBNYWMiLCAiR1BVIE1hYyAoZGJnKSIsICJHUFUgV2luNyAo
TlZJRElBKSIsICJHUFUgV2luNyAoZGJnKSAoTlZJRElBKSIsICJMaW51eCBQZXJmIiwgIkxpbnV4
IFRlc3RzIiwKKyAgICAgICAgIkxpbnV4IFZhbGdyaW5kIiwgIk1hYyBCdWlsZGVyIChkYmcpIiwg
Ik1hYzEwLjYgUGVyZiIsICJNYWMxMC42IFRlc3RzIiwgIlZpc3RhIFBlcmYiLCAiVmlzdGEgVGVz
dHMiLCAiV2Via2l0IExpbnV4IiwgIldlYmtpdCBMaW51eCAoZGJnKSIsICJXZWJraXQgTGludXgg
KGRlcHMpIiwgIldlYmtpdCBMaW51eCAzMiIsCisgICAgICAgICJXZWJraXQgTWFjIEJ1aWxkZXIi
LCAiV2Via2l0IE1hYyBCdWlsZGVyIChkYmcpIiwgIldlYmtpdCBNYWMgQnVpbGRlciAoZGVwcyki
LCAiV2Via2l0IE1hYzEwLjUiLCAiV2Via2l0IE1hYzEwLjUgKGRiZykoMSkiLCAiV2Via2l0IE1h
YzEwLjUgKGRiZykoMikiLCAiV2Via2l0IE1hYzEwLjYiLCAiV2Via2l0IE1hYzEwLjYgKGRiZyki
LAorICAgICAgICAiV2Via2l0IE1hYzEwLjYgKGRlcHMpIiwgIldlYmtpdCBNYWMxMC43IiwgIldl
YmtpdCBWaXN0YSIsICJXZWJraXQgV2luIiwgIldlYmtpdCBXaW4gKGRiZykoMSkiLCAiV2Via2l0
IFdpbiAoZGJnKSgyKSIsICJXZWJraXQgV2luIChkZXBzKSIsICJXZWJraXQgV2luIEJ1aWxkZXIi
LCAiV2Via2l0IFdpbiBCdWlsZGVyIChkYmcpIiwKKyAgICAgICAgIldlYmtpdCBXaW4gQnVpbGRl
ciAoZGVwcykiLCAiV2Via2l0IFdpbjciLCAiV2luIChkYmcpIiwgIldpbiBCdWlsZGVyIl07Cisg
ICAgdmFyIGV4cGVjdGVkQnVpbGRlcnMgPSBbWyJXZWJraXQgTGludXgiLCAyXSwgWyJXZWJraXQg
TGludXggKGRiZykiXSwgWyJXZWJraXQgTGludXggMzIiXSwgWyJXZWJraXQgTWFjMTAuNSJdLCBb
IldlYmtpdCBNYWMxMC41IChkYmcpKDEpIl0sIFsiV2Via2l0IE1hYzEwLjUgKGRiZykoMikiXSwg
WyJXZWJraXQgTWFjMTAuNiJdLAorICAgICAgICBbIldlYmtpdCBNYWMxMC42IChkYmcpIl0sIFsi
V2Via2l0IE1hYzEwLjciXSwgWyJXZWJraXQgVmlzdGEiXSwgWyJXZWJraXQgV2luIl0sIFsiV2Vi
a2l0IFdpbiAoZGJnKSgxKSJdLCBbIldlYmtpdCBXaW4gKGRiZykoMikiXSwgWyJXZWJraXQgV2lu
NyJdXTsKKyAgICBnZW5lcmF0ZUJ1aWxkZXJzRnJvbUJ1aWxkZXJMaXN0SGVscGVyKGJ1aWxkZXJM
aXN0LCBleHBlY3RlZEJ1aWxkZXJzLCBpc0Nocm9taXVtV2Via2l0VGlwT2ZUcmVlVGVzdFJ1bm5l
cik7Cit9CisKK2Z1bmN0aW9uIHRlc3RHZW5lcmF0ZUNocm9taXVtV2Via2l0RGVwc0J1aWxkZXJz
RnJvbUJ1aWxkZXJMaXN0KCkKK3sKKyAgICB2YXIgYnVpbGRlckxpc3QgPSBbIkNocm9tZSBGcmFt
ZSBUZXN0cyIsICJHUFUgTGludXggKE5WSURJQSkiLCAiR1BVIExpbnV4IChkYmcpIChOVklESUEp
IiwgIkdQVSBNYWMiLCAiR1BVIE1hYyAoZGJnKSIsICJHUFUgV2luNyAoTlZJRElBKSIsICJHUFUg
V2luNyAoZGJnKSAoTlZJRElBKSIsICJMaW51eCBQZXJmIiwgIkxpbnV4IFRlc3RzIiwKKyAgICAg
ICAgIkxpbnV4IFZhbGdyaW5kIiwgIk1hYyBCdWlsZGVyIChkYmcpIiwgIk1hYzEwLjYgUGVyZiIs
ICJNYWMxMC42IFRlc3RzIiwgIlZpc3RhIFBlcmYiLCAiVmlzdGEgVGVzdHMiLCAiV2Via2l0IExp
bnV4IiwgIldlYmtpdCBMaW51eCAoZGJnKSIsICJXZWJraXQgTGludXggKGRlcHMpIiwgIldlYmtp
dCBMaW51eCAzMiIsCisgICAgICAgICJXZWJraXQgTWFjIEJ1aWxkZXIiLCAiV2Via2l0IE1hYyBC
dWlsZGVyIChkYmcpIiwgIldlYmtpdCBNYWMgQnVpbGRlciAoZGVwcykiLCAiV2Via2l0IE1hYzEw
LjUiLCAiV2Via2l0IE1hYzEwLjUgKGRiZykoMSkiLCAiV2Via2l0IE1hYzEwLjUgKGRiZykoMiki
LCAiV2Via2l0IE1hYzEwLjYiLCAiV2Via2l0IE1hYzEwLjYgKGRiZykiLAorICAgICAgICAiV2Vi
a2l0IE1hYzEwLjYgKGRlcHMpIiwgIldlYmtpdCBNYWMxMC43IiwgIldlYmtpdCBWaXN0YSIsICJX
ZWJraXQgV2luIiwgIldlYmtpdCBXaW4gKGRiZykoMSkiLCAiV2Via2l0IFdpbiAoZGJnKSgyKSIs
ICJXZWJraXQgV2luIChkZXBzKSIsICJXZWJraXQgV2luIEJ1aWxkZXIiLCAiV2Via2l0IFdpbiBC
dWlsZGVyIChkYmcpIiwKKyAgICAgICAgIldlYmtpdCBXaW4gQnVpbGRlciAoZGVwcykiLCAiV2Vi
a2l0IFdpbjciLCAiV2luIChkYmcpIiwgIldpbiBCdWlsZGVyIl07CisgICAgdmFyIGV4cGVjdGVk
QnVpbGRlcnMgPSBbWyJXZWJraXQgTGludXggKGRlcHMpIiwgMl0sIFsiV2Via2l0IE1hYzEwLjYg
KGRlcHMpIl0sIFsiV2Via2l0IFdpbiAoZGVwcykiXV07CisgICAgZ2VuZXJhdGVCdWlsZGVyc0Zy
b21CdWlsZGVyTGlzdEhlbHBlcihidWlsZGVyTGlzdCwgZXhwZWN0ZWRCdWlsZGVycywgaXNDaHJv
bWl1bVdlYmtpdERlcHNUZXN0UnVubmVyKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0T2JqZWN0c0Rl
ZXBFcXVhbChhLCBiKQoreworICAgIGFzc2VydEVxdWFscyhPYmplY3Qua2V5cyhhKS5sZW5ndGgs
IE9iamVjdC5rZXlzKGIpLmxlbmd0aCk7CisgICAgZm9yICh2YXIga2V5IGluIGEpCisgICAgICAg
IGFzc2VydEVxdWFscyhhW2tleV0sIGJba2V5XSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RRdWVyeUhh
c2hBc01hcCgpCit7CisgICAgYXNzZXJ0RXF1YWxzKHdpbmRvdy5sb2NhdGlvbi5oYXNoLCAnI3Vz
ZVRlc3REYXRhPXRydWUnKTsKKyAgICBhc3NlcnRPYmplY3RzRGVlcEVxdWFsKHF1ZXJ5SGFzaEFz
TWFwKCksIHt1c2VUZXN0RGF0YTogJ3RydWUnfSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RQYXJzZUNy
b3NzRGFzaGJvYXJkUGFyYW1ldGVycygpCit7CisgICAgYXNzZXJ0RXF1YWxzKHdpbmRvdy5sb2Nh
dGlvbi5oYXNoLCAnI3VzZVRlc3REYXRhPXRydWUnKTsKKyAgICBwYXJzZUNyb3NzRGFzaGJvYXJk
UGFyYW1ldGVycygpOworCisgICAgdmFyIGV4cGVjdGVkUGFyYW1ldGVycyA9IHt9OworICAgIGZv
ciAodmFyIGtleSBpbiBnX2RlZmF1bHRDcm9zc0Rhc2hib2FyZFN0YXRlVmFsdWVzKQorICAgICAg
ICBleHBlY3RlZFBhcmFtZXRlcnNba2V5XSA9IGdfZGVmYXVsdENyb3NzRGFzaGJvYXJkU3RhdGVW
YWx1ZXNba2V5XTsKKyAgICBleHBlY3RlZFBhcmFtZXRlcnMudXNlVGVzdERhdGEgPSB0cnVlOwor
CisgICAgYXNzZXJ0T2JqZWN0c0RlZXBFcXVhbChnX2Nyb3NzRGFzaGJvYXJkU3RhdGUsIGV4cGVj
dGVkUGFyYW1ldGVycyk7Cit9CisKK2Z1bmN0aW9uIHRlc3REaWZmU3RhdGVzKCkKK3sKKyAgICB2
YXIgbmV3U3RhdGUgPSB7YTogMSwgYjogMn07CisgICAgYXNzZXJ0T2JqZWN0c0RlZXBFcXVhbChk
aWZmU3RhdGVzKG51bGwsIG5ld1N0YXRlKSwgbmV3U3RhdGUpOworCisgICAgdmFyIG9sZFN0YXRl
ID0ge2E6IDF9OworICAgIGFzc2VydE9iamVjdHNEZWVwRXF1YWwoZGlmZlN0YXRlcyhvbGRTdGF0
ZSwgbmV3U3RhdGUpLCB7YjogMn0pOworCisgICAgLy8gRklYTUU6IFRoaXMgaXMga2luZCBvZiB3
ZWlyZC4gSSB0aGluayB0aGUgZXhpc3RpbmcgdXNlcnMgb2YgdGhpcyBjb2RlIHdvcmsgY29ycmVj
dGx5LCBidXQgaXQncyBhIGNvbmZ1c2luZyByZXN1bHQuCisgICAgdmFyIG9sZFN0YXRlID0ge2M6
IDF9OworICAgIGFzc2VydE9iamVjdHNEZWVwRXF1YWwoZGlmZlN0YXRlcyhvbGRTdGF0ZSwgbmV3
U3RhdGUpLCB7YToxLCBiOiAyfSk7CisKKyAgICB2YXIgb2xkU3RhdGUgPSB7YTogMSwgYjogMn07
CisgICAgYXNzZXJ0T2JqZWN0c0RlZXBFcXVhbChkaWZmU3RhdGVzKG9sZFN0YXRlLCBuZXdTdGF0
ZSksIHt9KTsKKworICAgIHZhciBvbGRTdGF0ZSA9IHthOiAyLCBiOiAzfTsKKyAgICBhc3NlcnRP
YmplY3RzRGVlcEVxdWFsKGRpZmZTdGF0ZXMob2xkU3RhdGUsIG5ld1N0YXRlKSwge2E6IDEsIGI6
IDJ9KTsKIH0KIAogZnVuY3Rpb24gcnVuVGVzdHMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJl
c3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy90aW1lbGluZV9leHBsb3Jlci5odG1sIGIvVG9v
bHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy90aW1lbGluZV9leHBsb3Jlci5o
dG1sCmluZGV4IDM2NTBiYmQ0YThlYjVhNzAwNzIwYjE4MTMyYTgwMzM3OTQ1Yzg2NzQuLmZjNmIx
N2YwMWVhYmRlNWZjYzI2MThjZDQ0MzdjZDY5MWJmNDUxMzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdGltZWxpbmVfZXhwbG9yZXIuaHRtbAor
KysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3RpbWVsaW5lX2V4
cGxvcmVyLmh0bWwKQEAgLTEwMSw3ICsxMDEsNiBAQCBib2R5IHsKIDxzY3JpcHQ+CiB2YXIgRkFJ
TElOR19URVNUU19EQVRBU0VUX05BTUUgPSAnRmFpbGluZyB0ZXN0cyc7CiAKLXZhciBnX3Nob3Vs
ZFNob3dXZWJLaXRSZXZpc2lvbnNPbmx5ID0gaXNUaXBPZlRyZWVXZWJLaXRCdWlsZGVyKCk7CiB2
YXIgZ19keWdyYXBoOwogdmFyIGdfYnVpbGRJbmRpY2VzQnlUaW1lc3RhbXAgPSB7fTsKIHZhciBn
X2N1cnJlbnRCdWlsZEluZGV4ID0gLTE7CkBAIC0xNjMsMTEgKzE2MiwxNiBAQCBmdW5jdGlvbiBo
YW5kbGVWYWxpZEhhc2hQYXJhbWV0ZXIoa2V5LCB2YWx1ZSkKICAgICB9CiB9CiAKLWdfZGVmYXVs
dFN0YXRlVmFsdWVzID0geworZ19kZWZhdWx0RGFzaGJvYXJkU3BlY2lmaWNTdGF0ZVZhbHVlcyA9
IHsKICAgICBidWlsZFRpbWVzdGFtcDogLTEsCiAgICAgaWdub3JlRmxha3lUZXN0czogdHJ1ZQog
fTsKIAorZnVuY3Rpb24gc2hvdWxkU2hvd1dlYktpdFJldmlzaW9uc09ubHkoKQoreworICAgIHJl
dHVybiBpc1RpcE9mVHJlZVdlYktpdEJ1aWxkZXIoKTsKK30KKwogZnVuY3Rpb24gdXBkYXRlVGlt
ZWxpbmVGb3JCdWlsZGVyKCkKIHsKICAgICB2YXIgYnVpbGRlciA9IGdfY3VycmVudFN0YXRlLmJ1
aWxkZXI7CkBAIC0xODgsNyArMTkyLDcgQEAgZnVuY3Rpb24gdXBkYXRlVGltZWxpbmVGb3JCdWls
ZGVyKCkKIAogICAgICAgICBncmFwaERhdGEucHVzaChbYnVpbGREYXRlLCBmYWlsdXJlQ291bnRd
KTsKIAotICAgICAgICBpZiAoIWdfc2hvdWxkU2hvd1dlYktpdFJldmlzaW9uc09ubHkgJiYgKHJl
c3VsdHNbV0VCS0lUX1JFVklTSU9OU19LRVldW2ldICE9IHJlc3VsdHNbV0VCS0lUX1JFVklTSU9O
U19LRVldW2kgKyAxXSkpIHsKKyAgICAgICAgaWYgKCFzaG91bGRTaG93V2ViS2l0UmV2aXNpb25z
T25seSgpICYmIChyZXN1bHRzW1dFQktJVF9SRVZJU0lPTlNfS0VZXVtpXSAhPSByZXN1bHRzW1dF
QktJVF9SRVZJU0lPTlNfS0VZXVtpICsgMV0pKSB7CiAgICAgICAgICAgICBhbm5vdGF0aW9ucy5w
dXNoKHsKICAgICAgICAgICAgICAgICBzZXJpZXM6IEZBSUxJTkdfVEVTVFNfREFUQVNFVF9OQU1F
LAogICAgICAgICAgICAgICAgIHg6IGJ1aWxkRGF0ZSwKQEAgLTI5Miw3ICsyOTYsNyBAQCBmdW5j
dGlvbiB1cGRhdGVCdWlsZEluc3BlY3RvcihyZXN1bHRzLCBidWlsZGVyLCBkeWdyYXBoLCBpbmRl
eCkKICAgICBhZGRSb3coJ0J1aWxkOicsICc8YSBocmVmPSInICsgYnVpbGRVcmwgKyAnIiB0YXJn
ZXQ9Il9ibGFuayI+JyArIGJ1aWxkTnVtYmVyICsgJzwvYT4gKDxhIGhyZWY9IicgKyByZXN1bHRz
VXJsICsgJyIgdGFyZ2V0PSJfYmxhbmsiPnJlc3VsdHM8L2E+KScpOwogCiAgICAgLy8gUmV2aXNp
b24gbGluayhzKQotICAgIGlmICghZ19zaG91bGRTaG93V2ViS2l0UmV2aXNpb25zT25seSkKKyAg
ICBpZiAoIXNob3VsZFNob3dXZWJLaXRSZXZpc2lvbnNPbmx5KCkpCiAgICAgICAgIGFkZFJvdygn
Q2hyb21pdW0gY2hhbmdlOicsIGNocm9taXVtUmV2aXNpb25MaW5rKHJlc3VsdHMsIGluZGV4KSk7
CiAgICAgYWRkUm93KCdXZWJLaXQgY2hhbmdlOicsIHdlYktpdFJldmlzaW9uTGluayhyZXN1bHRz
LCBpbmRleCkpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1k
YXNoYm9hcmRzL3RyZWVtYXAuaHRtbCBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRh
c2hib2FyZHMvdHJlZW1hcC5odG1sCmluZGV4IDUwNjEzYzBjMTZmZjEwMTA3MzM5NDUwNjIxZjU1
NTljZTY2ZDJlY2EuLjY4NDk1N2JjNjRjZjcxYjk1YjE5YTkzNGNhZWFiOTZkYzRlZTM2NmEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdHJlZW1h
cC5odG1sCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdHJl
ZW1hcC5odG1sCkBAIC0zMTMsNiArMzEzLDEwIEBAIGZ1bmN0aW9uIGhhbmRsZVZhbGlkSGFzaFBh
cmFtZXRlcihrZXksIHZhbHVlKQogICAgIH0KIH0KIAorZ19kZWZhdWx0RGFzaGJvYXJkU3BlY2lm
aWNTdGF0ZVZhbHVlcyA9IHsKKyAgICB0cmVlbWFwZm9jdXM6ICcnLAorfQorCiBmdW5jdGlvbiBo
YW5kbGVRdWVyeVBhcmFtZXRlckNoYW5nZShwYXJhbXMpCiB7CiAgICAgaWYgKCFnX2J1aWxkZXJz
TGlzdExvYWRlZCkKQEAgLTMzNSw3ICszMzksNyBAQCBmdW5jdGlvbiBoYW5kbGVSZXNvdXJjZUxv
YWRFcnJvcihidWlsZGVyTmFtZSwgZSkKIHsKICAgICAkKCdtYXAnKS5pbm5lckhUTUwgPSAnPHNw
YW4gY2xhc3M9ZXJyb3I+Q291bGQgbm90IGxvYWQgZGF0YSBmb3IgJyArIGJ1aWxkZXJOYW1lICsg
Jy4gJyArCiAgICAgICAgICdFaXRoZXIgdGhlcmUgd2FzIGEgc2VydmVyLXNpZGUgZXJyb3Igb3Ig
JyArIGJ1aWxkZXJOYW1lICsgJyBkb2VzIG5vdCBydW4gJyArCi0gICAgICAgIGdfY3VycmVudFN0
YXRlLnRlc3RUeXBlICsgJy48L3NwYW4+JzsKKyAgICAgICAgZ19jcm9zc0Rhc2hib2FyZFN0YXRl
LnRlc3RUeXBlICsgJy48L3NwYW4+JzsKIH0KIAogZnVuY3Rpb24gZXh0cmFjdE5hbWUobm9kZSkK
</data>
<flag name="review"
          id="139581"
          type_id="1"
          status="+"
          setter="mihaip"
    />
          </attachment>
      

    </bug>

</bugzilla>