<?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>234660</bug_id>
          
          <creation_ts>2021-12-24 00:29:59 -0800</creation_ts>
          <short_desc>[perf.webkit.org] Support cc me</short_desc>
          <delta_ts>2022-01-05 10:19:12 -0800</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>NEW</bug_status>
          <resolution></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="Zhifei Fang">zhifei_fang</reporter>
          <assigned_to name="Zhifei Fang">zhifei_fang</assigned_to>
          <cc>dewei_zhu</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zhifei_fang</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1826697</commentid>
    <comment_count>0</comment_count>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-12-24 00:29:59 -0800</bug_when>
    <thetext>[perf.webkit.org] Support cc me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826698</commentid>
    <comment_count>1</comment_count>
      <attachid>447931</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-12-24 00:44:04 -0800</bug_when>
    <thetext>Created attachment 447931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826735</commentid>
    <comment_count>2</comment_count>
      <attachid>447931</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-12-24 10:09:56 -0800</bug_when>
    <thetext>Comment on attachment 447931
Patch

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

&gt; Websites/perf.webkit.org/init-database.sql:216
&gt; +    task_cc varchar(256)[] DEFAULT array[]::varchar[],

Please don&apos;t use abbreviations like cc. Call it task_watch_list or something.
Are we certain we don&apos;t need any options for how to monitor task / task groups?
Otherwise, we should be adding a new table like analysis_task_subscribers or something to normalize the table.

&gt; Websites/perf.webkit.org/init-database.sql:300
&gt; +    testgroup_cc varchar(256)[] DEFAULT array[]::varchar[],

Ditto.

&gt; Websites/perf.webkit.org/public/api/analysis-tasks.php:100
&gt; +        &apos;isMyTask&apos; =&gt; $task_row[&apos;task_author&apos;] == $current_user,
&gt; +        &apos;amIcc&apos; =&gt; array_search($current_user, $cc_list) !== false,

Let&apos;s not do this in the backend like this.
This would mean that analysis task entries will never be catchable.
r- because of this.

&gt; Websites/perf.webkit.org/public/include/json-header.php:215
&gt; +function parse_simple_pg_array($array_string) {

I&apos;m very afraid that this function is prone to escaping errors / injection attacks.
We should instead use array_to_json in our SQL query:
https://www.postgresql.org/docs/9.3/functions-json.html

&gt; Websites/perf.webkit.org/public/include/json-header.php:223
&gt; +    for ($i=0; $i&lt;strlen($array_string); $i++) {

Nit: Need space around = and &lt;.

&gt; Websites/perf.webkit.org/public/include/json-header.php:277
&gt; +function to_pg_array($arr) {

Again, I&apos;m very afraid that this function will have escaping errors.

&gt; Websites/perf.webkit.org/public/include/json-header.php:283
&gt; +            $item = str_replace(&apos;&quot;&apos;, &apos;\\&quot;&apos;, $item);

We should use pg_escape_string instead.

We should also use this function in fetch_for_tasks in commit-log-fetcher.php

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:54
&gt; +        // pgsql select statement will get string array like this: {a,b,c}
&gt; +        // pgsql insert or update will need the array like this: {&quot;a&quot;,&quot;b&quot;,&quot;c&quot;}
&gt; +        $cc_list = to_pg_array(parse_simple_pg_array($task[&apos;task_cc&apos;]));

Please remove this comment. It doesn&apos;t really add much to the readability of the code.

&gt; Websites/perf.webkit.org/public/privileged-api/create-test-group.php:108
&gt; +    $group_id = create_test_group_and_build_requests($db, $commit_sets, $task_id, $name, $author, $cc_list, $triggerable_id, $platform_id, $test_id, $repetition_count, $repetition_type, $needs_notification);

This function should take a watch list as an array instead of encoded postgres array.

&gt; Websites/perf.webkit.org/public/privileged-api/update-analysis-task.php:51
&gt; +        if ($data[&apos;ccMe&apos;]) {
&gt; +            if (array_search($current_user, $cc_list) === false) {
&gt; +                array_push($cc_list, $current_user);
&gt; +                $need_update = true;
&gt; +            }
&gt; +        } else {
&gt; +            $idx = array_search($current_user, $cc_list);
&gt; +            if ($idx !== false) {
&gt; +                array_splice($cc_list, $idx, 1);
&gt; +                $need_update = true;
&gt; +            }
&gt; +        }

Instead of cc-me, we should be specifying the current user name as a part of the API.
Like Bugzilla, I&apos;d imagine people want to be able to add other users to a task / task group as well.

&gt; Websites/perf.webkit.org/public/privileged-api/update-analysis-task.php:79
&gt; +            $db-&gt;begin_transaction();
&gt; +            if (!$db-&gt;update_row(&apos;analysis_test_groups&apos;, &apos;testgroup&apos;, array(&apos;id&apos; =&gt; intval($group[&apos;testgroup_id&apos;])), $update_cc)) {
&gt; +                $db-&gt;rollback_transaction();
&gt; +                exit_with_error(&apos;FailedToUpdateTestGroup&apos;, array(&apos;id&apos; =&gt; $group[&apos;testgroup_id&apos;], &apos;values&apos; =&gt; $update_cc));
&gt; +            }
&gt; +            $db-&gt;commit_transaction();

We shouldn&apos;t have a bunch of small transactions like this.
This would mean changes can be partially committed. r- because of this.

&gt; Websites/perf.webkit.org/public/v3/models/analysis-task.js:25
&gt; +        this._isMytask = object.isMyTask;
&gt; +        this._amIcc = object.amIcc;

We should instead determine whether this task belongs to the current user or not here in the frontend side.
But I don&apos;t think this even needs to be instance variable. We can determine that in the methods below.

&gt; Websites/perf.webkit.org/public/v3/models/analysis-task.js:80
&gt; +    amIcc () { return this._amIcc; }
&gt; +    isMyTask() { return this._isMytask; }

I don&apos;t think we want AnalysisTask object to be aware of the concept of current user.
Instead, add a method to return the list of users who are monitoring this task.
r- because of this.

&gt; Websites/perf.webkit.org/public/v3/models/analysis-task.js:92
&gt; +    ccMe(cc_switch) { return this._updateRemoteState({ccMe: cc_switch}); }

Nit: use camelCase, not _.
Again, here, we don&apos;t want AnalysisTask to be aware of the current user concept directly.
We should specify the name of the observer as an argument instead.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:737
&gt; +        if (!task) return;

Nit: return needs to be on a new line.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:739
&gt; +        if (task.isMyTask()) {

We should probably add a new trivial API which returns the current user name:
e.g. /api/current-user
and fetch that in updateFromSerializedState.
We should then wait for both promises before we start rendering the task.

&gt; Websites/perf.webkit.org/public/v3/pages/analysis-task-page.js:746
&gt; +        checkbox.addEventListener(&apos;change&apos;, () =&gt; task.ccMe(checkbox.checked));

We need to schedule to render this component once we updated the status.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827308</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-31 00:30:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/87025136&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828006</commentid>
    <comment_count>4</comment_count>
      <attachid>447931</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2022-01-04 10:37:52 -0800</bug_when>
    <thetext>Comment on attachment 447931
Patch

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

&gt; Websites/perf.webkit.org/server-tests/resources/test-server.js:54
&gt; +    setCurrentUser(user) {

Nit: new line for &apos;{&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828307</commentid>
    <comment_count>5</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2022-01-05 10:19:12 -0800</bug_when>
    <thetext>rdar://83212502</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447931</attachid>
            <date>2021-12-24 00:44:04 -0800</date>
            <delta_ts>2021-12-24 10:09:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234660-20211224004403.patch</filename>
            <type>text/plain</type>
            <size>45606</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDYyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCA1NzMwZmVjN2FkZjI5ZGNmZmIwYTlhOWE0NTIxMjRiYjNiOTYyNWZjLi41NWQ1NTEwNmY1
M2M2ZDg0NDBkODgzMDRhZjY1MDFjMDAwZjhlZGJmIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAyMS0xMi0yNCAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW3BlcmYud2Via2l0Lm9yZ10gU3VwcG9ydCBjYyBt
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NjYw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFQ
SSB0byBzdXBwb3J0IGFkZCBhbmQgcmVtb3ZlIGN1cnJlbnQgdXNlciB0byB0YXNrIGFuZCB0ZXN0
IGdyb3VwIGNjIGxpc3QuCisKKyAgICAgICAgKiBpbml0LWRhdGFiYXNlLnNxbDogQWRkIG5ldyBj
YyBmaWVsZC4KKyAgICAgICAgKiBtaWdyYXRlLWRhdGFiYXNlLnNxbDogRGl0dG8uCisgICAgICAg
ICogcHVibGljL2FwaS9hbmFseXNpcy10YXNrcy5waHA6IE1ha2UgdGhlIGFwaSByZXR1cm4gY2Mg
bGlzdCwgIGlmIHRoaXMgdGFzayBpcyBjcmVhdGVkIGJ5IGN1cmVudCB1c2VyLCBpZiBjdXJyZW50
IHVzZXIgaXMgaW4gdGhpcyB0YXNrIGNjIGxpc3QuCisgICAgICAgICogcHVibGljL2FwaS90ZXN0
LWdyb3Vwcy5waHA6IE1ha2UgdGhlIGFwaSByZXR1cm4gdGVzdCBncm91cCBjYyBsaXN0LgorICAg
ICAgICAqIHB1YmxpYy9pbmNsdWRlL2NvbW1pdC1zZXRzLWhlbHBlcnMucGhwOiBNYWtlIGNyZWF0
ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1ZXN0cyBjYW4gdGFrZSBjYyBsaXN0LgorICAgICAg
ICAqIHB1YmxpYy9pbmNsdWRlL2pzb24taGVhZGVyLnBocDogQWRkIHR3byBmdW5jdGlvbnMgdG8g
cGFyc2UgcGdzcWwgYXJyYXkgYW5kIHRyYW5zZmVyIFBIUCBhcnJheSB0byBwZ3NxbCBhcnJheS4K
KyAgICAgICAgKiBwdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lzLXRhc2sucGhw
OiBDcmVhdGUgdGVzdCBncm91cCB3aXRoIHRhc2sncyBjYyBsaXN0LgorICAgICAgICAqIHB1Ymxp
Yy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHA6IERpdHRvLgorICAgICAgICAq
IHB1YmxpYy9wcml2aWxlZ2VkLWFwaS91cGRhdGUtYW5hbHlzaXMtdGFzay5waHA6IFN1cHBvcnQg
YWRkIGFuZCByZW1vdmUgY3VycmVudCB1c2VyIHRvIGNjIGxpc3QuCisgICAgICAgICogcHVibGlj
L3YzL21vZGVscy9hbmFseXNpcy10YXNrLmpzOgorICAgICAgICAoQW5hbHlzaXNUYXNrKToKKyAg
ICAgICAgKEFuYWx5c2lzVGFzay5wcm90b3R5cGUudXBkYXRlU2luZ2xldG9uKToKKyAgICAgICAg
KEFuYWx5c2lzVGFzay5wcm90b3R5cGUuY2MpOgorICAgICAgICAoQW5hbHlzaXNUYXNrLnByb3Rv
dHlwZS5hbUljYyk6CisgICAgICAgIChBbmFseXNpc1Rhc2sucHJvdG90eXBlLmlzTXlUYXNrKToK
KyAgICAgICAgKEFuYWx5c2lzVGFzay5wcm90b3R5cGUuY2NNZSk6CisgICAgICAgICogcHVibGlj
L3YzL21vZGVscy90ZXN0LWdyb3VwLmpzOgorICAgICAgICAoVGVzdEdyb3VwKToKKyAgICAgICAg
KFRlc3RHcm91cC5wcm90b3R5cGUudXBkYXRlU2luZ2xldG9uKToKKyAgICAgICAgKFRlc3RHcm91
cC5wcm90b3R5cGUuY2MpOgorICAgICAgICAqIHB1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNr
LXBhZ2UuanM6CisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdlKToKKyAgICAgICAgKEFuYWx5c2lz
VGFza1BhZ2UucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdlLnBy
b3RvdHlwZS5fcmVuZGVyVGFza0NDTWUpOgorICAgICAgICAoQW5hbHlzaXNUYXNrUGFnZS5jc3NU
ZW1wbGF0ZSk6CisgICAgICAgICogc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS1h
bmFseXNpcy10YXNrLXRlc3RzLmpzOgorICAgICAgICAqIHNlcnZlci10ZXN0cy9yZXNvdXJjZXMv
dGVzdC1zZXJ2ZXIuanM6CisgICAgICAgIChUZXN0U2VydmVyKToKKyAgICAgICAgKFRlc3RTZXJ2
ZXIucHJvdG90eXBlLnNldEN1cnJlbnRVc2VyKTogTWFrZSB0aGUgdGVzdCBzZXJ2ZXIgY2FuIGNo
YW5nZSBjdXJyZW50IHVzZXIuCisgICAgICAgIChUZXN0U2VydmVyLnByb3RvdHlwZS5fc3RhcnRB
cGFjaGUpOgorICAgICAgICAqIHRvb2xzL2pzL2FuYWx5c2lzLXJlc3VsdHMtbm90aWZpZXIuanM6
CisgICAgICAgIChBbmFseXNpc1Jlc3VsdHNOb3RpZmllci5wcm90b3R5cGUuYXN5bmMgc2VuZE5v
dGlmaWNhdGlvbnNGb3JUZXN0R3JvdXBzKToKKyAgICAgICAgKiB1bml0LXRlc3RzL2FuYWx5c2lz
LXRhc2stdGVzdHMuanM6CisKIDIwMjEtMTEtMDYgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgZW1wdHkgZGlyZWN0b3JpZXMgZnJvbSBmcm9tIHN2
bi53ZWJraXQub3JnIHJlcG9zaXRvcnkgYXMgb2YgcjI4NTM1NwpkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3FsIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL2luaXQtZGF0YWJhc2Uuc3FsCmluZGV4IGJhODNjYjk4NDI2MjAwZjA1ODY5N2RjM2M3
YzYxOTQzODZmMzA2YWMuLjhjNTlkMzQ1MWVhMzgxYmMzNDBkMzVkZjQyMGVkZjFkYWNkYzNmN2Ug
MTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbAor
KysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwKQEAgLTIxMyw2
ICsyMTMsNyBAQCBDUkVBVEUgVEFCTEUgYW5hbHlzaXNfdGFza3MgKAogICAgIHRhc2tfaWQgc2Vy
aWFsIFBSSU1BUlkgS0VZLAogICAgIHRhc2tfbmFtZSB2YXJjaGFyKDI1NikgTk9UIE5VTEwsCiAg
ICAgdGFza19hdXRob3IgdmFyY2hhcigyNTYpLAorICAgIHRhc2tfY2MgdmFyY2hhcigyNTYpW10g
REVGQVVMVCBhcnJheVtdOjp2YXJjaGFyW10sCiAgICAgdGFza19zZWdtZW50YXRpb24gaW50ZWdl
ciBSRUZFUkVOQ0VTIGFuYWx5c2lzX3N0cmF0ZWdpZXMsCiAgICAgdGFza190ZXN0X3JhbmdlIGlu
dGVnZXIgUkVGRVJFTkNFUyBhbmFseXNpc19zdHJhdGVnaWVzLAogICAgIHRhc2tfY3JlYXRlZF9h
dCB0aW1lc3RhbXAgTk9UIE5VTEwgREVGQVVMVCAoQ1VSUkVOVF9USU1FU1RBTVAgQVQgVElNRSBa
T05FICdVVEMnKSwKQEAgLTI5Niw2ICsyOTcsNyBAQCBDUkVBVEUgVEFCTEUgYW5hbHlzaXNfdGVz
dF9ncm91cHMgKAogICAgIHRlc3Rncm91cF90YXNrIGludGVnZXIgUkVGRVJFTkNFUyBhbmFseXNp
c190YXNrcyBOT1QgTlVMTCwKICAgICB0ZXN0Z3JvdXBfbmFtZSB2YXJjaGFyKDI1NiksCiAgICAg
dGVzdGdyb3VwX2F1dGhvciB2YXJjaGFyKDI1NiksCisgICAgdGVzdGdyb3VwX2NjIHZhcmNoYXIo
MjU2KVtdIERFRkFVTFQgYXJyYXlbXTo6dmFyY2hhcltdLAogICAgIHRlc3Rncm91cF9jcmVhdGVk
X2F0IHRpbWVzdGFtcCBOT1QgTlVMTCBERUZBVUxUIChDVVJSRU5UX1RJTUVTVEFNUCBBVCBUSU1F
IFpPTkUgJ1VUQycpLAogICAgIHRlc3Rncm91cF9oaWRkZW4gYm9vbGVhbiBOT1QgTlVMTCBERUZB
VUxUIEZBTFNFLAogICAgIHRlc3Rncm91cF9uZWVkc19ub3RpZmljYXRpb24gYm9vbGVhbiBOT1Qg
TlVMTCBERUZBVUxUIEZBTFNFLApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L21pZ3JhdGUtZGF0YWJhc2Uuc3FsIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL21pZ3JhdGUt
ZGF0YWJhc2Uuc3FsCmluZGV4IDIxYTM2NTUzMGE1Zjc3YjIzYzg3YmE3OWRlZDA3MzRkYjhkMWUz
NGUuLjUxN2FhZjQwY2NjMDEzMDYwYjY5NmQyMjE5NWZiNGRlNmYzOTM2NTEgMTAwNjQ0Ci0tLSBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9taWdyYXRlLWRhdGFiYXNlLnNxbAorKysgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvbWlncmF0ZS1kYXRhYmFzZS5zcWwKQEAgLTEyLDcgKzEyLDkg
QEAgRU5EIElGOwogQUxURVIgVEFCTEUgYnVpbGRfcmVxdWVzdHMgQUREIENPTFVNTiBJRiBOT1Qg
RVhJU1RTIHJlcXVlc3Rfc3RhdHVzX2Rlc2NyaXB0aW9uIHZhcmNoYXIoMTAyNCkgREVGQVVMVCBO
VUxMOwogQUxURVIgVEFCTEUgcGxhdGZvcm1zIEFERCBDT0xVTU4gIElGIE5PVCBFWElTVFMgcGxh
dGZvcm1fZ3JvdXAgaW50ZWdlciBSRUZFUkVOQ0VTIHBsYXRmb3JtX2dyb3VwcyBERUZBVUxUIE5V
TEw7CiBBTFRFUiBUQUJMRSBjb21taXRzIEFERCBDT0xVTU4gSUYgTk9UIEVYSVNUUyBjb21taXRf
cmV2aXNpb25faWRlbnRpZmllciB2YXJjaGFyKDY0KSBERUZBVUxUIE5VTEw7CitBTFRFUiBUQUJM
RSBhbmFseXNpc190YXNrcyBBREQgQ09MVU1OIElGIE5PVCBFWElTVFMgdGFza19jYyB2YXJjaGFy
KDI1NilbXSBERUZBVUxUIGFycmF5W106OnZhcmNoYXJbXTsKIEFMVEVSIFRBQkxFIGFuYWx5c2lz
X3Rlc3RfZ3JvdXBzIEFERCBDT0xVTU4gSUYgTk9UIEVYSVNUUyB0ZXN0Z3JvdXBfcmVwZXRpdGlv
bl90eXBlIGFuYWx5c2lzX3Rlc3RfZ3JvdXBfcmVwZXRpdGlvbl90eXBlIE5PVCBOVUxMIERFRkFV
TFQgJ2FsdGVybmF0aW5nJzsKK0FMVEVSIFRBQkxFIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzIEFERCBD
T0xVTU4gSUYgTk9UIEVYSVNUUyB0ZXN0Z3JvdXBfY2MgdmFyY2hhcigyNTYpW10gREVGQVVMVCBh
cnJheVtdOjp2YXJjaGFyW107CiBBTFRFUiBUQUJMRSBjb21taXRzIERST1AgQ09OU1RSQUlOVCBJ
RiBFWElTVFMgY29tbWl0X3N0cmluZ19pZGVudGlmaWVyX2luX3JlcG9zaXRvcnlfbXVzdF9iZV91
bmlxdWU7CiBBTFRFUiBUQUJMRSBjb21taXRzIEFERCBDT05TVFJBSU5UIGNvbW1pdF9zdHJpbmdf
aWRlbnRpZmllcl9pbl9yZXBvc2l0b3J5X211c3RfYmVfdW5pcXVlIFVOSVFVRShjb21taXRfcmVw
b3NpdG9yeSwgY29tbWl0X3JldmlzaW9uX2lkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS9hbmFseXNpcy10YXNrcy5waHAgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS9hbmFseXNpcy10YXNrcy5waHAKaW5kZXgg
MTYwY2ZmNDgyMWMwOWZhZTJlZjRmOWYwNWJmNWU1ZTEzMWMwMWZmNS4uNjE4Yzg3YWM1N2E3OGYw
NmY3NTY0OGQ3MjE2MzI5NGI3MDViYzI4ZiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy9hcGkvYW5hbHlzaXMtdGFza3MucGhwCisrKyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9wdWJsaWMvYXBpL2FuYWx5c2lzLXRhc2tzLnBocApAQCAtODksMTAgKzg5LDE1
IEBAIGZ1bmN0aW9uIGZldGNoX2Fzc29jaWF0ZWRfZGF0YV9mb3JfdGFza3MoJGRiLCAmJHRhc2tz
KSB7CiB9CiAKIGZ1bmN0aW9uIGZvcm1hdF90YXNrKCR0YXNrX3JvdykgeworICAgICRjY19saXN0
ID0gcGFyc2Vfc2ltcGxlX3BnX2FycmF5KCR0YXNrX3Jvd1sndGFza19jYyddKTsKKyAgICAkY3Vy
cmVudF91c2VyID0gcmVtb3RlX3VzZXJfbmFtZSgpOwogICAgIHJldHVybiBhcnJheSgKICAgICAg
ICAgJ2lkJyA9PiAkdGFza19yb3dbJ3Rhc2tfaWQnXSwKICAgICAgICAgJ25hbWUnID0+ICR0YXNr
X3Jvd1sndGFza19uYW1lJ10sCisgICAgICAgICdjYycgPT4gJGNjX2xpc3QsCiAgICAgICAgICdh
dXRob3InID0+ICR0YXNrX3Jvd1sndGFza19hdXRob3InXSwKKyAgICAgICAgJ2lzTXlUYXNrJyA9
PiAkdGFza19yb3dbJ3Rhc2tfYXV0aG9yJ10gPT0gJGN1cnJlbnRfdXNlciwKKyAgICAgICAgJ2Ft
SWNjJyA9PiBhcnJheV9zZWFyY2goJGN1cnJlbnRfdXNlciwgJGNjX2xpc3QpICE9PSBmYWxzZSwK
ICAgICAgICAgJ3NlZ21lbnRhdGlvblN0cmF0ZWd5JyA9PiAkdGFza19yb3dbJ3Rhc2tfc2VnbWVu
dGF0aW9uJ10sCiAgICAgICAgICd0ZXN0UmFuZ2VTdHJhZ2VneScgPT4gJHRhc2tfcm93Wyd0YXNr
X3Rlc3RfcmFuZ2UnXSwKICAgICAgICAgJ2NyZWF0ZWRBdCcgPT4gc3RydG90aW1lKCR0YXNrX3Jv
d1sndGFza19jcmVhdGVkX2F0J10pICogMTAwMCwKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9wdWJsaWMvYXBpL3Rlc3QtZ3JvdXBzLnBocCBiL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvYXBpL3Rlc3QtZ3JvdXBzLnBocAppbmRleCA2ODQ3ZjQ4NzQyOGY1Mzhl
NWEzNDhhMTk5ZGUyNzk1ZDVkNzdkNmU4Li4xNDVmZTJkZDBmMjRkZDE4MDg1YjI1OTU0YmRjNGUz
MzJmODAwMDMzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2Fw
aS90ZXN0LWdyb3Vwcy5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9h
cGkvdGVzdC1ncm91cHMucGhwCkBAIC04OCw2ICs4OCw3IEBAIGZ1bmN0aW9uIGZvcm1hdF90ZXN0
X2dyb3VwKCRncm91cF9yb3cpIHsKICAgICAgICAgJ3Rhc2snID0+ICRncm91cF9yb3dbJ3Rlc3Rn
cm91cF90YXNrJ10sCiAgICAgICAgICduYW1lJyA9PiAkZ3JvdXBfcm93Wyd0ZXN0Z3JvdXBfbmFt
ZSddLAogICAgICAgICAnYXV0aG9yJyA9PiAkZ3JvdXBfcm93Wyd0ZXN0Z3JvdXBfYXV0aG9yJ10s
CisgICAgICAgICdjYycgPT4gcGFyc2Vfc2ltcGxlX3BnX2FycmF5KCRncm91cF9yb3dbJ3Rlc3Rn
cm91cF9jYyddKSwKICAgICAgICAgJ2NyZWF0ZWRBdCcgPT4gRGF0YWJhc2U6OnRvX2pzX3RpbWUo
JGdyb3VwX3Jvd1sndGVzdGdyb3VwX2NyZWF0ZWRfYXQnXSksCiAgICAgICAgICdub3RpZmljYXRp
b25TZW50QXQnID0+IERhdGFiYXNlOjp0b19qc190aW1lKCRncm91cF9yb3dbJ3Rlc3Rncm91cF9u
b3RpZmljYXRpb25fc2VudF9hdCddKSwKICAgICAgICAgJ2hpZGRlbicgPT4gRGF0YWJhc2U6Omlz
X3RydWUoJGdyb3VwX3Jvd1sndGVzdGdyb3VwX2hpZGRlbiddKSwKZGlmZiAtLWdpdCBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1oZWxwZXJzLnBo
cCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9jb21taXQtc2V0cy1o
ZWxwZXJzLnBocAppbmRleCA3YTMwMGZiNDk0ZTM3M2I1NzZmYWViNzRmNTQ0N2IyMDllOGNhYWEz
Li44MGNlN2FhYzU1OGRlNmUwOWZhN2VhNGRhNzg3ZTI2YTVkZTc5N2ZlIDEwMDY0NAotLS0gYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvY29tbWl0LXNldHMtaGVscGVy
cy5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2NvbW1p
dC1zZXRzLWhlbHBlcnMucGhwCkBAIC00LDE0ICs0LDE0IEBAIHJlcXVpcmVfb25jZSgncmVwb3Np
dG9yeS1ncm91cC1maW5kZXIucGhwJyk7CiByZXF1aXJlX29uY2UoJ2NvbW1pdC1sb2ctZmV0Y2hl
ci5waHAnKTsKIAogIyBGSVhNRTogU2hvdWxkIGNyZWF0ZSBhIGhlbHBlciBjbGFzcyBmb3IgYmVs
b3cgMyBoZWxwZXIgZnVuY3Rpb25zIHRvIGF2b2lkIHBhc3NpbmcgbG9uZyBhcmd1bWVudCBsaXN0
LgotZnVuY3Rpb24gY3JlYXRlX3Rlc3RfZ3JvdXBfYW5kX2J1aWxkX3JlcXVlc3RzKCRkYiwgJGNv
bW1pdF9zZXRzLCAkdGFza19pZCwgJG5hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwgJHBs
YXRmb3JtX2lkLCAkdGVzdF9pZCwgJHJlcGV0aXRpb25fY291bnQsICRyZXBldGl0aW9uX3R5cGUs
ICRuZWVkc19ub3RpZmljYXRpb24pCitmdW5jdGlvbiBjcmVhdGVfdGVzdF9ncm91cF9hbmRfYnVp
bGRfcmVxdWVzdHMoJGRiLCAkY29tbWl0X3NldHMsICR0YXNrX2lkLCAkbmFtZSwgJGF1dGhvciwg
JGNjX2xpc3QsICR0cmlnZ2VyYWJsZV9pZCwgJHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJHJlcGV0
aXRpb25fY291bnQsICRyZXBldGl0aW9uX3R5cGUsICRuZWVkc19ub3RpZmljYXRpb24pCiB7CiAg
ICAgYXNzZXJ0KGluX2FycmF5KCRyZXBldGl0aW9uX3R5cGUsIGFycmF5KCdhbHRlcm5hdGluZycs
ICdzZXF1ZW50aWFsJywgJ3BhaXJlZC1wYXJhbGxlbCcpKSk7CiAgICAgbGlzdCAoJGJ1aWxkX2Nv
bmZpZ3VyYXRpb25fbGlzdCwgJHRlc3RfY29uZmlndXJhdGlvbl9saXN0KSA9IGluc2VydF9jb21t
aXRfc2V0c19hbmRfY29uc3RydWN0X2NvbmZpZ3VyYXRpb25fbGlzdCgkZGIsICRjb21taXRfc2V0
cyk7CiAKICAgICAkZ3JvdXBfaWQgPSAkZGItPmluc2VydF9yb3coJ2FuYWx5c2lzX3Rlc3RfZ3Jv
dXBzJywgJ3Rlc3Rncm91cCcsCiAgICAgICAgIGFycmF5KCd0YXNrJyA9PiAkdGFza19pZCwgJ25h
bWUnID0+ICRuYW1lLCAnYXV0aG9yJyA9PiAkYXV0aG9yLCAnbmVlZHNfbm90aWZpY2F0aW9uJyA9
PiAkbmVlZHNfbm90aWZpY2F0aW9uLAotICAgICAgICAgICAgJ2luaXRpYWxfcmVwZXRpdGlvbl9j
b3VudCcgPT4gJHJlcGV0aXRpb25fY291bnQsICdyZXBldGl0aW9uX3R5cGUnID0+ICRyZXBldGl0
aW9uX3R5cGUpKTsKKyAgICAgICAgICAgICdpbml0aWFsX3JlcGV0aXRpb25fY291bnQnID0+ICRy
ZXBldGl0aW9uX2NvdW50LCAncmVwZXRpdGlvbl90eXBlJyA9PiAkcmVwZXRpdGlvbl90eXBlLCAn
Y2MnID0+ICRjY19saXN0KSk7CiAKICAgICAkYnVpbGRfY291bnQgPSBjb3VudCgkYnVpbGRfY29u
ZmlndXJhdGlvbl9saXN0KTsKICAgICAkb3JkZXIgPSAtJGJ1aWxkX2NvdW50OwpkaWZmIC0tZ2l0
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2pzb24taGVhZGVyLnBo
cCBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9qc29uLWhlYWRlci5w
aHAKaW5kZXggMjkyN2JlZmMyMGExZjQ0ZWU3ZGY2YWMxNmJhOWNiN2JmOTExM2U4My4uZTc4MTll
NjRkZWJmYTc4MjExYzRlMDk1NzU0ODdkNGZmMjBlYmQxNCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2pzb24taGVhZGVyLnBocAorKysgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvanNvbi1oZWFkZXIucGhwCkBAIC0y
MTIsNCArMjEyLDgwIEBAIGZ1bmN0aW9uIGZpbmRfdHJpZ2dlcmFibGVfZm9yX3Rhc2soJGRiLCAk
dGFza19pZCkgewogICAgIHJldHVybiBOVUxMOwogfQogCitmdW5jdGlvbiBwYXJzZV9zaW1wbGVf
cGdfYXJyYXkoJGFycmF5X3N0cmluZykgeworICAgIGlmIChlbXB0eSgkYXJyYXlfc3RyaW5nKSkK
KyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgJHJlcyA9IGFycmF5KCk7CisgICAgJGJ1ZmZlciA9
ICcnOworICAgICRjdXJyZW50X3F1b3RlID0gbnVsbDsKKyAgICAkcXVvdGVfc3RhdGUgPSAtMTsg
Ly8gMCBvcGVuLCAxIGNsb3NlLCAtMSBOb25lIHFvdXRlCisgICAgJHN0YXRlID0gLTE7IC8vMCBz
dGFydCwgMSBjdXJyZW50IGlzIGEgc3RyaW5nLCAyIGN1cnJlbnQgaXMgYSBudW1iZXIsIDMgZW5k
CisgICAgZm9yICgkaT0wOyAkaTxzdHJsZW4oJGFycmF5X3N0cmluZyk7ICRpKyspIHsKKyAgICAg
ICAgJGNoYXIgPSAkYXJyYXlfc3RyaW5nWyRpXTsKKyAgICAgICAgaWYgKCRjaGFyID09ICd7JykK
KyAgICAgICAgICAgICRzdGF0ZSA9IDA7CisgICAgICAgIGVsc2UgaWYgKCRjaGFyID09ICcsJyB8
fCAkY2hhciA9PSAnfScpIHsKKyAgICAgICAgICAgIGlmICgkc3RhdGUgPT0gMSAmJiAoJHF1b3Rl
X3N0YXRlID09IDEgfHwgJHF1b3RlX3N0YXRlID09IC0xKSkgeworICAgICAgICAgICAgICAgIGlm
IChzdHJsZW4oJGJ1ZmZlcikpCisgICAgICAgICAgICAgICAgICAgIGFycmF5X3B1c2goJHJlcywg
JGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgJGJ1ZmZlciA9ICcnOworICAgICAgICAgICAgICAg
ICRxdW90ZV9zdGF0ZSA9IC0xOworICAgICAgICAgICAgICAgICRzdGF0ZSA9IDA7CisgICAgICAg
ICAgICAgICAgJGN1cnJlbnRfcXVvdGUgPSBudWxsOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZSBpZiAoJHN0YXRlID09IDIpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RybGVuKCRi
dWZmZXIpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc19udW1lcmljKCRidWZmZXIpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfcHVzaCgkcmVzLCBzdHJwb3MoJGJ1ZmZlciwg
Jy4nKSA9PT0gZmFsc2UgPyBpbnR2YWwoJGJ1ZmZlcikgOiBmbG9hdHZhbCgkYnVmZmVyKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBu
dWxsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAkYnVmZmVyID0gJyc7Cisg
ICAgICAgICAgICAgICAgJHN0YXRlID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
ICgkY2hhciA9PSAnfScgJiYgJHN0YXRlID09IDApCisgICAgICAgICAgICAgICAgcmV0dXJuICRy
ZXM7CisgICAgICAgIH0gZWxzZSBpZiAoJGNoYXIgPT0gIiciIHx8ICRjaGFyID09ICciJykgewor
ICAgICAgICAgICAgaWYgKCRpIC0gMSA+IDAgJiYgJGFycmF5X3N0cmluZ1skaSAtIDFdID09ICdc
XCcgJiYgJHN0YXRlID09IDEgJiYgJHF1b3RlX3N0YXRlID09IDApIHsKKyAgICAgICAgICAgICAg
ICAkYnVmZmVyID0gJGJ1ZmZlci4kY2hhcjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgaWYgKCRxdW90ZV9zdGF0ZSA9PSAwICYmICRjdXJyZW50X3F1b3RlID09ICRjaGFy
ICYmICRzdGF0ZSA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgICRxdW90ZV9zdGF0ZSA9IDE7
CisgICAgICAgICAgICAgICAgICAgICRjdXJyZW50X3F1b3RlID0gbnVsbDsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKCRxdW90ZV9zdGF0ZSA9PSAtMSAmJiAkY3VycmVudF9xdW90ZSA9PSBu
dWxsICYmICRzdGF0ZSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICRjdXJyZW50X3F1b3Rl
ID0gJGNoYXI7CisgICAgICAgICAgICAgICAgICAgICRxdW90ZV9zdGF0ZSA9IDA7CisgICAgICAg
ICAgICAgICAgICAgICRzdGF0ZSA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UgaWYgKCgkY2hhciA9PSAnICcgfHwgJGNoYXIgPT0gJ1x0JyB8fCAk
Y2hhciA9PSAnXHInIHx8ICRjaGFyID09ICdcbicpICYmICRzdGF0ZSA9PSAwKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIGVsc2UgaWYgKCgkc3RhdGUgPT0gMSAmJiAoJHF1b3RlX3N0
YXRlID09IDAgfHwgJHF1b3RlX3N0YXRlID09IC0xKSkgfHwgJHN0YXRlID09IDIgfHwgJHN0YXRl
ID09IDApIHsKKyAgICAgICAgICAgICRidWZmZXIgPSAkYnVmZmVyLiRjaGFyOworICAgICAgICAg
ICAgaWYgKCRzdGF0ZSA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzX251bWVyaWMoJGJ1
ZmZlcikgfHwgJGJ1ZmZlciA9PSAnLicpCisgICAgICAgICAgICAgICAgICAgICRzdGF0ZSA9IDI7
CisgICAgICAgICAgICAgICAgZWxzZSAKKyAgICAgICAgICAgICAgICAgICAgJHN0YXRlID0gMTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gbnVsbDsK
KyAgICB9CisgICAgcmV0dXJuIG51bGw7Cit9CisKK2Z1bmN0aW9uIHRvX3BnX2FycmF5KCRhcnIp
IHsKKyAgICAkcmVzID0gYXJyYXkoKTsKKyAgICBmb3JlYWNoICgkYXJyIGFzICRpdGVtKSB7Cisg
ICAgICAgIGlmIChpc19hcnJheSgkaXRlbSkpIHsKKyAgICAgICAgICAgIGFycmF5X3B1c2goJHJl
cywgdG9fcGdfYXJyYXkoJGl0ZW0pKTsgCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAk
aXRlbSA9IHN0cl9yZXBsYWNlKCciJywgJ1xcIicsICRpdGVtKTsKKyAgICAgICAgICAgIGlmICgh
aXNfbnVtZXJpYygkaXRlbSkpCisgICAgICAgICAgICAgICAgJGl0ZW0gPSAnIicgLiAkaXRlbSAu
ICciJzsKKyAgICAgICAgICAgIGFycmF5X3B1c2goJHJlcywgJGl0ZW0pOyAKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gJ3snIC4gaW1wbG9kZSgnLCcsICRyZXMpIC4gJ30nOworfQogPz4K
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1h
cGkvY3JlYXRlLWFuYWx5c2lzLXRhc2sucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAKaW5kZXggYjZmZjk2
NDU3N2QyNTI4MTg2YTBiM2RlMjc4NzVmM2I4OTk2OGE1ZC4uNzFhYmE1ZjBlMWQxNWZhZTdlZjU1
ODNlZDM5N2QyY2M0MmEyNzRhNiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlzaXMtdGFzay5waHAKKysrIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtYW5hbHlz
aXMtdGFzay5waHAKQEAgLTkzLDcgKzkzLDcgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICAgICAg
fQogICAgICAgICAkdGVzdF9pZCA9ICR0cmlnZ2VyYWJsZVsndGVzdCddOwogICAgICAgICAkY29t
bWl0X3NldHMgPSBjb21taXRfc2V0c19mcm9tX3JldmlzaW9uX3NldHMoJGRiLCAkdHJpZ2dlcmFi
bGVfaWQsICRyZXZpc2lvbl9zZXRfbGlzdCk7Ci0gICAgICAgIGNyZWF0ZV90ZXN0X2dyb3VwX2Fu
ZF9idWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0cywgJHRhc2tfaWQsICR0ZXN0X2dyb3Vw
X25hbWUsICRhdXRob3IsICR0cmlnZ2VyYWJsZV9pZCwgJGNvbmZpZ1snY29uZmlnX3BsYXRmb3Jt
J10sICR0ZXN0X2lkLCAkcmVwZXRpdGlvbl9jb3VudCwgJHJlcGV0aXRpb25fdHlwZSwgJG5lZWRz
X25vdGlmaWNhdGlvbik7CisgICAgICAgIGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9idWlsZF9yZXF1
ZXN0cygkZGIsICRjb21taXRfc2V0cywgJHRhc2tfaWQsICR0ZXN0X2dyb3VwX25hbWUsICRhdXRo
b3IsICd7fScsICR0cmlnZ2VyYWJsZV9pZCwgJGNvbmZpZ1snY29uZmlnX3BsYXRmb3JtJ10sICR0
ZXN0X2lkLCAkcmVwZXRpdGlvbl9jb3VudCwgJHJlcGV0aXRpb25fdHlwZSwgJG5lZWRzX25vdGlm
aWNhdGlvbik7CiAgICAgfQogCiAgICAgJGRiLT5jb21taXRfdHJhbnNhY3Rpb24oKTsKZGlmZiAt
LWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3Jl
YXRlLXRlc3QtZ3JvdXAucGhwIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2
aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKaW5kZXggNzI3N2M3ZDQ1ZjAxMzY3MGMy
NWY5Y2QxNjVhYTY0ZjkxNWQxZTIwZi4uYTQwMDMwZWNlZmIxYjM4ZTEwMTVmMGQ1NzYxMzMxNDll
NmIyMWIxYiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2
aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHAKQEAgLTQ5
LDYgKzQ5LDkgQEAgZnVuY3Rpb24gbWFpbigpCiAgICAgJHRyaWdnZXJhYmxlX2lkID0gTlVMTDsK
ICAgICBpZiAoJHRhc2tfaWQpIHsKICAgICAgICAgJHRhc2sgPSAkZGItPnNlbGVjdF9maXJzdF9y
b3coJ2FuYWx5c2lzX3Rhc2tzJywgJ3Rhc2snLCBhcnJheSgnaWQnID0+ICR0YXNrX2lkKSk7Cisg
ICAgICAgIC8vIHBnc3FsIHNlbGVjdCBzdGF0ZW1lbnQgd2lsbCBnZXQgc3RyaW5nIGFycmF5IGxp
a2UgdGhpczoge2EsYixjfQorICAgICAgICAvLyBwZ3NxbCBpbnNlcnQgb3IgdXBkYXRlIHdpbGwg
bmVlZCB0aGUgYXJyYXkgbGlrZSB0aGlzOiB7ImEiLCJiIiwiYyJ9CisgICAgICAgICRjY19saXN0
ID0gdG9fcGdfYXJyYXkocGFyc2Vfc2ltcGxlX3BnX2FycmF5KCR0YXNrWyd0YXNrX2NjJ10pKTsK
ICAgICAgICAgaWYgKCEkdGFzaykKICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignSW52YWxp
ZFRhc2snLCBhcnJheSgndGFzaycgPT4gJHRhc2tfaWQpKTsKIApAQCAtOTcsMTAgKzEwMCwxMiBA
QCBmdW5jdGlvbiBtYWluKCkKIAogICAgICRkYi0+YmVnaW5fdHJhbnNhY3Rpb24oKTsKIAotICAg
IGlmICgkdGFza19uYW1lKQorICAgIGlmICgkdGFza19uYW1lKSB7CiAgICAgICAgICR0YXNrX2lk
ID0gJGRiLT5pbnNlcnRfcm93KCdhbmFseXNpc190YXNrcycsICd0YXNrJywgYXJyYXkoJ25hbWUn
ID0+ICR0YXNrX25hbWUsICdhdXRob3InID0+ICRhdXRob3IpKTsKKyAgICAgICAgJGNjX2xpc3Qg
PSAne30nOworICAgIH0KIAotICAgICRncm91cF9pZCA9IGNyZWF0ZV90ZXN0X2dyb3VwX2FuZF9i
dWlsZF9yZXF1ZXN0cygkZGIsICRjb21taXRfc2V0cywgJHRhc2tfaWQsICRuYW1lLCAkYXV0aG9y
LCAkdHJpZ2dlcmFibGVfaWQsICRwbGF0Zm9ybV9pZCwgJHRlc3RfaWQsICRyZXBldGl0aW9uX2Nv
dW50LCAkcmVwZXRpdGlvbl90eXBlLCAkbmVlZHNfbm90aWZpY2F0aW9uKTsKKyAgICAkZ3JvdXBf
aWQgPSBjcmVhdGVfdGVzdF9ncm91cF9hbmRfYnVpbGRfcmVxdWVzdHMoJGRiLCAkY29tbWl0X3Nl
dHMsICR0YXNrX2lkLCAkbmFtZSwgJGF1dGhvciwgJGNjX2xpc3QsICR0cmlnZ2VyYWJsZV9pZCwg
JHBsYXRmb3JtX2lkLCAkdGVzdF9pZCwgJHJlcGV0aXRpb25fY291bnQsICRyZXBldGl0aW9uX3R5
cGUsICRuZWVkc19ub3RpZmljYXRpb24pOwogCiAgICAgJGRiLT5jb21taXRfdHJhbnNhY3Rpb24o
KTsKIApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxl
Z2VkLWFwaS91cGRhdGUtYW5hbHlzaXMtdGFzay5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS1hbmFseXNpcy10YXNrLnBocAppbmRleCA0
OTE5YTg0ZTRiZTU1NGIzMjc2ZWY5OWNhMTAwYTk3NzAzZmU3MGUzLi5kOTJiOTY5YTUwZmFiOGFi
YTI4MTc3NDFmMGUzYWIyZTIzZTQ3YzAzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS1hbmFseXNpcy10YXNrLnBocAorKysg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS1h
bmFseXNpcy10YXNrLnBocApAQCAtMyw2ICszLDcgQEAKIHJlcXVpcmVfb25jZSgnLi4vaW5jbHVk
ZS9qc29uLWhlYWRlci5waHAnKTsKIAogZnVuY3Rpb24gbWFpbigpIHsKKyAgICAkZGIgPSBjb25u
ZWN0KCk7CiAgICAgJGRhdGEgPSBlbnN1cmVfcHJpdmlsZWdlZF9hcGlfZGF0YV9hbmRfdG9rZW4o
KTsKIAogICAgICRhbmFseXNpc190YXNrX2lkID0gYXJyYXlfZ2V0KCRkYXRhLCAndGFzaycpOwpA
QCAtMzEsMTAgKzMyLDU4IEBAIGZ1bmN0aW9uIG1haW4oKSB7CiAgICAgICAgICAgICBleGl0X3dp
dGhfZXJyb3IoJ0ludmFsaWRWYWx1ZUZvckZlZWRiYWNrJywgYXJyYXkoJ3ZhbHVlJyA9PiAkZGF0
YVsnbmVlZGVkJ10pKTsKICAgICB9CiAKKyAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnY2NNZScs
ICRkYXRhKSkgeworICAgICAgICAkY3VycmVudF91c2VyID0gcmVtb3RlX3VzZXJfbmFtZSgkZGF0
YSk7CisgICAgICAgICR0YXNrID0gJGRiLT5zZWxlY3RfZmlyc3Rfcm93KCdhbmFseXNpc190YXNr
cycsICd0YXNrJywgYXJyYXkoJ2lkJyA9PiAkYW5hbHlzaXNfdGFza19pZCkpOworICAgICAgICAk
Y2NfbGlzdCA9IHBhcnNlX3NpbXBsZV9wZ19hcnJheSgkdGFza1sndGFza19jYyddKTsKKyAgICAg
ICAgJG5lZWRfdXBkYXRlID0gZmFsc2U7CisgICAgICAgIGlmICgkZGF0YVsnY2NNZSddKSB7Cisg
ICAgICAgICAgICBpZiAoYXJyYXlfc2VhcmNoKCRjdXJyZW50X3VzZXIsICRjY19saXN0KSA9PT0g
ZmFsc2UpIHsKKyAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRjY19saXN0LCAkY3VycmVudF91
c2VyKTsKKyAgICAgICAgICAgICAgICAkbmVlZF91cGRhdGUgPSB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJGlkeCA9IGFycmF5X3NlYXJjaCgkY3Vy
cmVudF91c2VyLCAkY2NfbGlzdCk7CisgICAgICAgICAgICBpZiAoJGlkeCAhPT0gZmFsc2UpIHsK
KyAgICAgICAgICAgICAgICBhcnJheV9zcGxpY2UoJGNjX2xpc3QsICRpZHgsIDEpOworICAgICAg
ICAgICAgICAgICRuZWVkX3VwZGF0ZSA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgaWYgKCRuZWVkX3VwZGF0ZSA9PSB0cnVlKQorICAgICAgICAgICAgJHZhbHVlc1sn
Y2MnXSA9IHRvX3BnX2FycmF5KCRjY19saXN0KTsKKyAgICAgICAgJHRlc3RfZ3JvdXBzID0gJGRi
LT5zZWxlY3Rfcm93cygnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCAndGVzdGdyb3VwJywgYXJyYXko
J3Rhc2snID0+ICRhbmFseXNpc190YXNrX2lkKSk7CisgICAgICAgIGZvcmVhY2ggKCR0ZXN0X2dy
b3VwcyBhcyAmJGdyb3VwKSB7CisgICAgICAgICAgICAkZ3JvdXBfY2NfbGlzdCA9IHBhcnNlX3Np
bXBsZV9wZ19hcnJheSgkZ3JvdXBbJ3Rlc3Rncm91cF9jYyddKTsKKyAgICAgICAgICAgICRuZWVk
X3VwZGF0ZSA9IGZhbHNlOworICAgICAgICAgICAgaWYgKCRkYXRhWydjY01lJ10pIHsKKyAgICAg
ICAgICAgICAgICBpZiAoYXJyYXlfc2VhcmNoKCRjdXJyZW50X3VzZXIsICRncm91cF9jY19saXN0
KSA9PT0gZmFsc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgYXJyYXlfcHVzaCgkZ3JvdXBfY2Nf
bGlzdCwgJGN1cnJlbnRfdXNlcik7CisgICAgICAgICAgICAgICAgICAgICRuZWVkX3VwZGF0ZSA9
IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAkaWR4ID0gYXJyYXlfc2VhcmNoKCRjdXJyZW50X3VzZXIsICRncm91cF9jY19saXN0
KTsKKyAgICAgICAgICAgICAgICBpZiAoJGlkeCAhPT0gZmFsc2UpIHsKKyAgICAgICAgICAgICAg
ICAgICAgYXJyYXlfc3BsaWNlKCRncm91cF9jY19saXN0LCAkaWR4LCAxKTsKKyAgICAgICAgICAg
ICAgICAgICAgJG5lZWRfdXBkYXRlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoISRuZWVkX3VwZGF0ZSkgY29udGludWU7CisgICAgICAg
ICAgICAkdXBkYXRlX2NjID0gYXJyYXkoCisgICAgICAgICAgICAgICAgJ2NjJyA9PiAgdG9fcGdf
YXJyYXkoJGdyb3VwX2NjX2xpc3QpCisgICAgICAgICAgICApOworICAgICAgICAgICAgJGRiLT5i
ZWdpbl90cmFuc2FjdGlvbigpOworICAgICAgICAgICAgaWYgKCEkZGItPnVwZGF0ZV9yb3coJ2Fu
YWx5c2lzX3Rlc3RfZ3JvdXBzJywgJ3Rlc3Rncm91cCcsIGFycmF5KCdpZCcgPT4gaW50dmFsKCRn
cm91cFsndGVzdGdyb3VwX2lkJ10pKSwgJHVwZGF0ZV9jYykpIHsKKyAgICAgICAgICAgICAgICAk
ZGItPnJvbGxiYWNrX3RyYW5zYWN0aW9uKCk7CisgICAgICAgICAgICAgICAgZXhpdF93aXRoX2Vy
cm9yKCdGYWlsZWRUb1VwZGF0ZVRlc3RHcm91cCcsIGFycmF5KCdpZCcgPT4gJGdyb3VwWyd0ZXN0
Z3JvdXBfaWQnXSwgJ3ZhbHVlcycgPT4gJHVwZGF0ZV9jYykpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgJGRiLT5jb21taXRfdHJhbnNhY3Rpb24oKTsKKyAgICAgICAgfQorCisgICAgfQor
CiAgICAgaWYgKCEkdmFsdWVzKQogICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ05vdGhpbmdUb1Vw
ZGF0ZScpOwogCi0gICAgJGRiID0gY29ubmVjdCgpOwogICAgICRkYi0+YmVnaW5fdHJhbnNhY3Rp
b24oKTsKIAogICAgIGlmICghJGRiLT51cGRhdGVfcm93KCdhbmFseXNpc190YXNrcycsICd0YXNr
JywgYXJyYXkoJ2lkJyA9PiAkYW5hbHlzaXNfdGFza19pZCksICR2YWx1ZXMpKSB7CmRpZmYgLS1n
aXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9hbmFseXNpcy10
YXNrLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYW5hbHlz
aXMtdGFzay5qcwppbmRleCA2YTA4NWNhY2UyYzc1N2U4OTM4MmRkZmVhMTA1MTA5NzM1OWZhYTBk
Li5iYzk4YjkyYWFkOTE4OGE1M2YxYWM0ZjFjOGUyMDEwMDZkNmVhNTU3IDEwMDY0NAotLS0gYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9hbmFseXNpcy10YXNrLmpz
CisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2FuYWx5c2lz
LXRhc2suanMKQEAgLTIwLDYgKzIwLDkgQEAgY2xhc3MgQW5hbHlzaXNUYXNrIGV4dGVuZHMgTGFi
ZWxlZE9iamVjdCB7CiAgICAgICAgIHRoaXMuX2NhdGVnb3J5ID0gb2JqZWN0LmNhdGVnb3J5Owog
ICAgICAgICB0aGlzLl9jaGFuZ2VUeXBlID0gb2JqZWN0LnJlc3VsdDsgLy8gQ2FuJ3QgY2hhbmdl
IGR1ZSB0byB2MiBjb21wYXRpYmlsaXR5LgogICAgICAgICB0aGlzLl9uZWVkZWQgPSBvYmplY3Qu
bmVlZGVkOworICAgICAgICB0aGlzLl9jYyA9IG9iamVjdC5jYzsKKyAgICAgICAgdGhpcy5faXNN
eXRhc2sgPSBvYmplY3QuaXNNeVRhc2s7CisgICAgICAgIHRoaXMuX2FtSWNjID0gb2JqZWN0LmFt
SWNjOwogICAgICAgICB0aGlzLl9idWdzID0gb2JqZWN0LmJ1Z3MgfHwgW107CiAgICAgICAgIHRo
aXMuX2NhdXNlcyA9IG9iamVjdC5jYXVzZXMgfHwgW107CiAgICAgICAgIHRoaXMuX2ZpeGVzID0g
b2JqZWN0LmZpeGVzIHx8IFtdOwpAQCAtNTEsNiArNTQsOCBAQCBjbGFzcyBBbmFseXNpc1Rhc2sg
ZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKIAogICAgICAgICB0aGlzLl9jYXRlZ29yeSA9IG9iamVj
dC5jYXRlZ29yeTsKICAgICAgICAgdGhpcy5fY2hhbmdlVHlwZSA9IG9iamVjdC5yZXN1bHQ7IC8v
IENhbid0IGNoYW5nZSBkdWUgdG8gdjIgY29tcGF0aWJpbGl0eS4KKyAgICAgICAgdGhpcy5fY2Mg
PSBvYmplY3QuY2M7CisgICAgICAgIHRoaXMuX2FtSWNjID0gb2JqZWN0LmFtSWNjOwogICAgICAg
ICB0aGlzLl9uZWVkZWQgPSBvYmplY3QubmVlZGVkOwogICAgICAgICB0aGlzLl9idWdzID0gb2Jq
ZWN0LmJ1Z3MgfHwgW107CiAgICAgICAgIHRoaXMuX2NhdXNlcyA9IG9iamVjdC5jYXVzZXMgfHwg
W107CkBAIC03MCw2ICs3NSw5IEBAIGNsYXNzIEFuYWx5c2lzVGFzayBleHRlbmRzIExhYmVsZWRP
YmplY3QgewogICAgIGVuZFRpbWUoKSB7IHJldHVybiB0aGlzLl9lbmRUaW1lOyB9CiAKICAgICBh
dXRob3IoKSB7IHJldHVybiB0aGlzLl9hdXRob3IgfHwgJyc7IH0KKyAgICBjYygpIHsgcmV0dXJu
IHRoaXMuX2NjOyB9CisgICAgYW1JY2MgKCkgeyByZXR1cm4gdGhpcy5fYW1JY2M7IH0KKyAgICBp
c015VGFzaygpIHsgcmV0dXJuIHRoaXMuX2lzTXl0YXNrOyB9CiAgICAgY3JlYXRlZEF0KCkgeyBy
ZXR1cm4gdGhpcy5fY3JlYXRlZEF0OyB9CiAgICAgYnVncygpIHsgcmV0dXJuIHRoaXMuX2J1Z3M7
IH0KICAgICBjYXVzZXMoKSB7IHJldHVybiB0aGlzLl9jYXVzZXM7IH0KQEAgLTgxLDYgKzg5LDcg
QEAgY2xhc3MgQW5hbHlzaXNUYXNrIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAKICAgICB1cGRh
dGVOYW1lKG5ld05hbWUpIHsgcmV0dXJuIHRoaXMuX3VwZGF0ZVJlbW90ZVN0YXRlKHtuYW1lOiBu
ZXdOYW1lfSk7IH0KICAgICB1cGRhdGVDaGFuZ2VUeXBlKGNoYW5nZVR5cGUpIHsgcmV0dXJuIHRo
aXMuX3VwZGF0ZVJlbW90ZVN0YXRlKHtyZXN1bHQ6IGNoYW5nZVR5cGV9KTsgfQorICAgIGNjTWUo
Y2Nfc3dpdGNoKSB7IHJldHVybiB0aGlzLl91cGRhdGVSZW1vdGVTdGF0ZSh7Y2NNZTogY2Nfc3dp
dGNofSk7IH0KIAogICAgIF91cGRhdGVSZW1vdGVTdGF0ZShwYXJhbSkKICAgICB7CmRpZmYgLS1n
aXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3Vw
LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91
cC5qcwppbmRleCA1YjUzMWE0MjA1NzZjOWQ5YmU5MDY4Njk1ZTY0MzY3NTEwZTYyY2UwLi43NDVi
YTk4ZGEwZjRhZDM5MWQ0OWFiM2IzYjNmNDA1YTkyYjhmNjU2IDEwMDY0NAotLS0gYS9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzCisrKyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMKQEAg
LTEzLDYgKzEzLDcgQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAg
ICAgICAgIHRoaXMuX21heU5lZWRNb3JlUmVxdWVzdHMgPSBvYmplY3QubWF5TmVlZE1vcmVSZXF1
ZXN0czsKICAgICAgICAgdGhpcy5faW5pdGlhbFJlcGV0aXRpb25Db3VudCA9ICtvYmplY3QuaW5p
dGlhbFJlcGV0aXRpb25Db3VudDsKICAgICAgICAgdGhpcy5fcmVwZXRpdGlvblR5cGUgPSBvYmpl
Y3QucmVwZXRpdGlvblR5cGU7CisgICAgICAgIHRoaXMuX2NjID0gb2JqZWN0LmNjOwogICAgICAg
ICB0aGlzLl9idWlsZFJlcXVlc3RzID0gW107CiAgICAgICAgIHRoaXMuX29yZGVyQnVpbGRSZXF1
ZXN0c0xhemlseSA9IG5ldyBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbigoLi4uYnVpbGRSZXF1ZXN0
cykgPT4gewogICAgICAgICAgICAgcmV0dXJuIGJ1aWxkUmVxdWVzdHMuc29ydCgoYSwgYikgPT4g
YS5vcmRlcigpIC0gYi5vcmRlcigpKTsKQEAgLTM5LDYgKzQwLDcgQEAgY2xhc3MgVGVzdEdyb3Vw
IGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIHRoaXMuX21heU5lZWRNb3JlUmVxdWVz
dHMgPSBvYmplY3QubWF5TmVlZE1vcmVSZXF1ZXN0czsKICAgICAgICAgdGhpcy5faW5pdGlhbFJl
cGV0aXRpb25Db3VudCA9ICtvYmplY3QuaW5pdGlhbFJlcGV0aXRpb25Db3VudDsKICAgICAgICAg
dGhpcy5fcmVwZXRpdGlvblR5cGUgPSBvYmplY3QucmVwZXRpdGlvblR5cGU7CisgICAgICAgIHRo
aXMuX2NjID0gb2JqZWN0LmNjOwogICAgIH0KIAogICAgIHRhc2soKSB7IHJldHVybiBBbmFseXNp
c1Rhc2suZmluZEJ5SWQodGhpcy5fdGFza0lkKTsgfQpAQCAtNTEsNiArNTMsNyBAQCBjbGFzcyBU
ZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICByZXBldGl0aW9uVHlwZSgpIHsg
cmV0dXJuIHRoaXMuX3JlcGV0aXRpb25UeXBlOyB9CiAgICAgbm90aWZpY2F0aW9uU2VudEF0KCkg
eyByZXR1cm4gdGhpcy5fbm90aWZpY2F0aW9uU2VudEF0OyB9CiAgICAgYXV0aG9yKCkgeyByZXR1
cm4gdGhpcy5fYXV0aG9yTmFtZTsgfQorICAgIGNjKCkgeyByZXR1cm4gdGhpcy5fY2M7IH0KICAg
ICBhZGRCdWlsZFJlcXVlc3QocmVxdWVzdCkKICAgICB7CiAgICAgICAgIHRoaXMuX2J1aWxkUmVx
dWVzdHMucHVzaChyZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpzIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMKaW5kZXggMzQ5
MDRiMDI4Y2IyYTY0NDY2YzY5YWU0MDk0YzE4M2ZlOGRiOTcyMC4uNWExMGQ4YzIzMjM1MDY4YmI4
YzgwOWYxZGFmNmE4OTA0YzU0ZDlkYyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMKKysrIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMKQEAg
LTUwOSw2ICs1MDksNyBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhI
ZWFkaW5nIHsKICAgICB7CiAgICAgICAgIHN1cGVyKCdBbmFseXNpcyBUYXNrJyk7CiAgICAgICAg
IHRoaXMuX3JlbmRlclRhc2tOYW1lQW5kU3RhdHVzTGF6aWx5ID0gbmV3IExhemlseUV2YWx1YXRl
ZEZ1bmN0aW9uKHRoaXMuX3JlbmRlclRhc2tOYW1lQW5kU3RhdHVzLmJpbmQodGhpcykpOworICAg
ICAgICB0aGlzLl9yZW5kZXJUYXNrQ0NNZUxhemlseSA9IG5ldyBMYXppbHlFdmFsdWF0ZWRGdW5j
dGlvbih0aGlzLl9yZW5kZXJUYXNrQ0NNZS5iaW5kKHRoaXMpKTsKICAgICAgICAgdGhpcy5fcmVu
ZGVyQ2F1c2VBbmRGaXhlc0xhemlseSA9IG5ldyBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbih0aGlz
Ll9yZW5kZXJDYXVzZUFuZEZpeGVzLmJpbmQodGhpcykpOwogICAgICAgICB0aGlzLl9yZW5kZXJS
ZWxhdGVkVGFza3NMYXppbHkgPSBuZXcgTGF6aWx5RXZhbHVhdGVkRnVuY3Rpb24odGhpcy5fcmVu
ZGVyUmVsYXRlZFRhc2tzLmJpbmQodGhpcykpOwogICAgICAgICB0aGlzLl9yZXNldFZhcmlhYmxl
cygpOwpAQCAtNzA0LDYgKzcwNSw3IEBAIGNsYXNzIEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQ
YWdlV2l0aEhlYWRpbmcgewogICAgICAgICB0aGlzLl9yZW5kZXJDYXVzZUFuZEZpeGVzTGF6aWx5
LmV2YWx1YXRlKHRoaXMuX3N0YXJ0UG9pbnQsIHRoaXMuX3Rhc2ssIHRoaXMucGFydCgnY2F1c2Ut
bGlzdCcpLCB0aGlzLl90YXNrID8gdGhpcy5fdGFzay5jYXVzZXMoKSA6IFtdKTsKICAgICAgICAg
dGhpcy5fcmVuZGVyQ2F1c2VBbmRGaXhlc0xhemlseS5ldmFsdWF0ZSh0aGlzLl9zdGFydFBvaW50
LCB0aGlzLl90YXNrLCB0aGlzLnBhcnQoJ2ZpeC1saXN0JyksIHRoaXMuX3Rhc2sgPyB0aGlzLl90
YXNrLmZpeGVzKCkgOiBbXSk7CiAgICAgICAgIHRoaXMuX3JlbmRlclJlbGF0ZWRUYXNrc0xhemls
eS5ldmFsdWF0ZSh0aGlzLl90YXNrLCB0aGlzLl9yZWxhdGVkVGFza3MpOworICAgICAgICB0aGlz
Ll9yZW5kZXJUYXNrQ0NNZUxhemlseS5ldmFsdWF0ZSh0aGlzLl90YXNrLCB0aGlzLl90YXNrID8g
dGhpcy5fdGFzay5pc015VGFzaygpOiBmYWxzZSwgdGhpcy5fdGFzayA/IHRoaXMuX3Rhc2suYW1J
Y2MoKSA6IGZhbHNlKQogCiAgICAgICAgIHRoaXMuY29udGVudCgnY2hhcnQtcGFuZScpLnN0eWxl
LmRpc3BsYXkgPSB0aGlzLl90YXNrICYmICF0aGlzLl90YXNrLmlzQ3VzdG9tKCkgPyBudWxsIDog
J25vbmUnOwogICAgICAgICB0aGlzLnBhcnQoJ2NoYXJ0LXBhbmUnKS5zZXRTaG93Rm9ybSghIXRo
aXMuX3RyaWdnZXJhYmxlKTsKQEAgLTczMCw2ICs3MzIsMjAgQEAgY2xhc3MgQW5hbHlzaXNUYXNr
UGFnZSBleHRlbmRzIFBhZ2VXaXRoSGVhZGluZyB7CiAgICAgICAgIHRoaXMuY29udGVudCgnY2hh
bmdlLXR5cGUnKS52YWx1ZSA9IGNoYW5nZVR5cGUgfHwgJ3VuY29uZmlybWVkJzsKICAgICB9CiAK
KyAgICBfcmVuZGVyVGFza0NDTWUodGFzaykKKyAgICB7CisgICAgICAgIGlmICghdGFzaykgcmV0
dXJuOworICAgICAgICAvLyBObyBuZWVkIHRvIGNjIGF1dGhvciBvd24gdGFzaworICAgICAgICBp
ZiAodGFzay5pc015VGFzaygpKSB7CisgICAgICAgICAgICB0aGlzLmNvbnRlbnQoJ2FuYWx5c2lz
LXRhc2stY2MtbWUnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIHRoaXMuY29udGVudCgnYW5hbHlzaXMtdGFzay1jYy1tZScp
LnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lJzsKKyAgICAgICAgY29uc3QgY2hlY2tib3ggPSB0aGlz
LmNvbnRlbnQoJ2FuYWx5c2lzLXRhc2stY2MtbWUtaW5wdXQnKTsKKyAgICAgICAgY2hlY2tib3gu
Y2hlY2tlZCA9IHRhc2suYW1JY2MoKTsKKyAgICAgICAgY2hlY2tib3guYWRkRXZlbnRMaXN0ZW5l
cignY2hhbmdlJywgKCkgPT4gdGFzay5jY01lKGNoZWNrYm94LmNoZWNrZWQpKTsKKyAgICB9CisK
ICAgICBfcmVuZGVyUmVsYXRlZFRhc2tzKHRhc2ssIHJlbGF0ZWRUYXNrcykKICAgICB7CiAgICAg
ICAgIGNvbnN0IGVsZW1lbnQgPSBDb21wb25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7CkBAIC05NTIs
NyArOTY4LDEwIEBAIGNsYXNzIEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRp
bmcgewogICAgIHsKICAgICAgICAgcmV0dXJuIGAKICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFu
YWx5c2lzLXRhc2stcGFnZSI+Ci0gICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJhbmFseXNpcy10
YXNrLW5hbWUiPjxlZGl0YWJsZS10ZXh0IGlkPSJhbmFseXNpcy10YXNrLW5hbWUiPjwvZWRpdGFi
bGUtdGV4dD48L2gyPgorICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0iYW5hbHlzaXMtdGFzay1u
YW1lIj4KKyAgICAgICAgICAgICAgICAgICAgPGVkaXRhYmxlLXRleHQgaWQ9ImFuYWx5c2lzLXRh
c2stbmFtZSI+PC9lZGl0YWJsZS10ZXh0PgorICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFz
cz0iYW5hbHlzaXMtdGFzay1jYy1tZSI+PGlucHV0IGlkPSJhbmFseXNpcy10YXNrLWNjLW1lLWlu
cHV0IiB0eXBlPSJjaGVja2JveCI+Q0MgbWU8L3NwYW4+CisgICAgICAgICAgICAgICAgPC9oMj4K
ICAgICAgICAgICAgICAgICA8aDMgaWQ9InBsYXRmb3JtLW1ldHJpYy1uYW1lcyI+PC9oMz4KICAg
ICAgICAgICAgICAgICA8cCBjbGFzcz0iZXJyb3ItbWVzc2FnZSI+PC9wPgogICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImFuYWx5c2lzLXRhc2stc3RhdHVzIj4KQEAgLTEwMDUsNiArMTAyNCwx
NSBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhIZWFkaW5nIHsKICAg
ICAgICAgICAgICAgICBtYXJnaW46IDAgMXJlbTsKICAgICAgICAgICAgICAgICBwYWRkaW5nOiAw
OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgLmFuYWx5c2lzLXRhc2stY2MtbWUgeworICAg
ICAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKKyAgICAgICAgICAgICAgICBjb2xvcjogYmxh
Y2s7CisgICAgICAgICAgICAgICAgcGFkZGluZzogMC41cmVtOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAjYW5hbHlzaXMtdGFzay1jYy1tZS1pbnB1dCB7CisgICAgICAgICAgICAgICAg
bWFyZ2luLXJpZ2h0OiAwLjVyZW07CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICNwbGF0
Zm9ybS1tZXRyaWMtbmFtZXMgewogICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKZGlm
ZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdl
ZC1hcGktY3JlYXRlLWFuYWx5c2lzLXRhc2stdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS1hbmFseXNpcy10YXNrLXRl
c3RzLmpzCmluZGV4IDA4YzI3NTIwZTY4OWMwZmZhM2I2NzBhYjZmMjgyYTcyMzk4YmQ1NWQuLjEw
YzkxOGM1Yzc3YmMyNmYxZjE0ZjAyNWQyOTA1YTZhYzcwZTBjMWIgMTAwNjQ0Ci0tLSBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLWFu
YWx5c2lzLXRhc2stdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZl
ci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtYW5hbHlzaXMtdGFzay10ZXN0cy5qcwpAQCAt
MjI5LDYgKzIyOSw3MiBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNp
cy10YXNrIHdpdGggYnJvd3NlciBwcml2aWxlZ2VkIGFwaScsIGZ1bgogICAgICAgICB9KTsKICAg
ICB9KTsKIAorICAgIGl0KCdzaG91bGQgY3JlYXRlIGFuIGFuYWx5c2lzIHRhc2sgd2l0aCBhdXRo
b3IgbmFtZSBhbmQgZW1wdHkgY2MgbGlzdCB3aGVuIG5hbWUsIHN0YXJ0UnVuLCBhbmQgZW5kUnVu
IGFyZSBzZXQgcHJvcGVybHknLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IGRiID0gVGVz
dFNlcnZlci5kYXRhYmFzZSgpOworICAgICAgICBjb25zdCBhdXRob3IgPSAndGVzdCc7CisgICAg
ICAgIFRlc3RTZXJ2ZXIuc2V0Q3VycmVudFVzZXIoYXV0aG9yKTsKKyAgICAgICAgYXdhaXQgYWRk
QnVpbGRlckZvclJlcG9ydChyZXBvcnRXaXRoUmV2aXNpb25bMF0pOworICAgICAgICBhd2FpdCBU
ZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCByZXBvcnRXaXRo
UmV2aXNpb24pOworICAgICAgICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09O
KCcvYXBpL3JlcG9ydC8nLCBhbm90aGVyUmVwb3J0V2l0aFJldmlzaW9uKTsKKyAgICAgICAgYXdh
aXQgTWFuaWZlc3QuZmV0Y2goKTsKKyAgICAgICAKKyAgICAgICAgY29uc3QgdGVzdDEgPSBUZXN0
LmZpbmRCeVBhdGgoWydTdWl0ZScsICd0ZXN0MSddKTsKKyAgICAgICAgY29uc3QgcGxhdGZvcm0g
PSBQbGF0Zm9ybS5maW5kQnlOYW1lKCdzb21lIHBsYXRmb3JtJyk7CisgICAgICAgIGNvbnN0IGNv
bmZpZ1JvdyA9IGF3YWl0IGRiLnNlbGVjdEZpcnN0Um93KCd0ZXN0X2NvbmZpZ3VyYXRpb25zJywg
e21ldHJpYzogdGVzdDEubWV0cmljcygpWzBdLmlkKCksIHBsYXRmb3JtOiBwbGF0Zm9ybS5pZCgp
fSk7CisgICAgICAgIGNvbnN0IHRlc3RSdW5zID0gYXdhaXQgZGIuc2VsZWN0Um93cygndGVzdF9y
dW5zJywge2NvbmZpZzogY29uZmlnUm93WydpZCddfSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RF
cXVhbCh0ZXN0UnVucy5sZW5ndGgsIDIpOworICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQg
UHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLWFuYWx5c2lzLXRhc2snLCB7bmFtZTog
J2hpJywgc3RhcnRSdW46IHRlc3RSdW5zWzBdWydpZCddLCBlbmRSdW46IHRlc3RSdW5zWzFdWydp
ZCddfSk7CisgICAgICAgIGNvbnN0IHRhc2sgPSBhd2FpdCBBbmFseXNpc1Rhc2suZmV0Y2hCeUlk
KGNvbnRlbnRbJ3Rhc2tJZCddKTsKKworICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGFzay5u
YW1lKCksICdoaScpOworICAgICAgICBhc3NlcnQoIXRhc2suaGFzUmVzdWx0cygpKTsKKyAgICAg
ICAgYXNzZXJ0KCF0YXNrLmhhc1BlbmRpbmdSZXF1ZXN0cygpKTsKKyAgICAgICAgYXNzZXJ0LmVx
dWFsKHRhc2suYXV0aG9yKCksIGF1dGhvcik7CisgICAgICAgIGFzc2VydC5lcXVhbCh0YXNrLmlz
TXlUYXNrKCksIHRydWUpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHRhc2suY2Mo
KSwgW10pOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHRhc2suYnVncygpLCBbXSk7
CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodGFzay5jYXVzZXMoKSwgW10pOworICAg
ICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHRhc2suZml4ZXMoKSwgW10pOworICAgICAgICBh
c3NlcnQuc3RyaWN0RXF1YWwodGFzay5jaGFuZ2VUeXBlKCksIG51bGwpOworICAgICAgICBhc3Nl
cnQuc3RyaWN0RXF1YWwodGFzay5wbGF0Zm9ybSgpLmxhYmVsKCksICdzb21lIHBsYXRmb3JtJyk7
CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0YXNrLm1ldHJpYygpLnRlc3QoKS5sYWJlbCgp
LCAndGVzdDEnKTsKKworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBjaGFuZ2UgaXNNeVRhc2sg
dG8gZmFsc2Ugd2hlbiB0aGUgcmVtb3RlIHVzZXIgaXMgZGlmZmVybnQgdGhhbiB0aGUgYXV0aG9y
JywgYXN5bmMgKCkgPT4geworICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2Uo
KTsKKyAgICAgICAgY29uc3QgYXV0aG9yID0gJ3Rlc3QnOworICAgICAgICBjb25zdCByZW1vdGVV
c2VyID0gJ3JlbW90ZSc7CisgICAgICAgIFRlc3RTZXJ2ZXIuc2V0Q3VycmVudFVzZXIoYXV0aG9y
KTsKKyAgICAgICAgYXdhaXQgYWRkQnVpbGRlckZvclJlcG9ydChyZXBvcnRXaXRoUmV2aXNpb25b
MF0pOworICAgICAgICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBp
L3JlcG9ydC8nLCByZXBvcnRXaXRoUmV2aXNpb24pOworICAgICAgICBhd2FpdCBUZXN0U2VydmVy
LnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBhbm90aGVyUmVwb3J0V2l0aFJl
dmlzaW9uKTsKKyAgICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2goKTsKKyAgICAgICAKKyAgICAg
ICAgY29uc3QgdGVzdDEgPSBUZXN0LmZpbmRCeVBhdGgoWydTdWl0ZScsICd0ZXN0MSddKTsKKyAg
ICAgICAgY29uc3QgcGxhdGZvcm0gPSBQbGF0Zm9ybS5maW5kQnlOYW1lKCdzb21lIHBsYXRmb3Jt
Jyk7CisgICAgICAgIGNvbnN0IGNvbmZpZ1JvdyA9IGF3YWl0IGRiLnNlbGVjdEZpcnN0Um93KCd0
ZXN0X2NvbmZpZ3VyYXRpb25zJywge21ldHJpYzogdGVzdDEubWV0cmljcygpWzBdLmlkKCksIHBs
YXRmb3JtOiBwbGF0Zm9ybS5pZCgpfSk7CisgICAgICAgIGNvbnN0IHRlc3RSdW5zID0gYXdhaXQg
ZGIuc2VsZWN0Um93cygndGVzdF9ydW5zJywge2NvbmZpZzogY29uZmlnUm93WydpZCddfSk7Cisg
ICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0UnVucy5sZW5ndGgsIDIpOworICAgICAgICBj
b25zdCBjb250ZW50ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLWFu
YWx5c2lzLXRhc2snLCB7bmFtZTogJ2hpJywgc3RhcnRSdW46IHRlc3RSdW5zWzBdWydpZCddLCBl
bmRSdW46IHRlc3RSdW5zWzFdWydpZCddfSk7CisgICAgICAgIAorICAgICAgICBUZXN0U2VydmVy
LnNldEN1cnJlbnRVc2VyKHJlbW90ZVVzZXIpOworICAgICAgICBjb25zdCB0YXNrID0gYXdhaXQg
QW5hbHlzaXNUYXNrLmZldGNoQnlJZChjb250ZW50Wyd0YXNrSWQnXSk7CisKKyAgICAgICAgYXNz
ZXJ0LnN0cmljdEVxdWFsKHRhc2submFtZSgpLCAnaGknKTsKKyAgICAgICAgYXNzZXJ0KCF0YXNr
Lmhhc1Jlc3VsdHMoKSk7CisgICAgICAgIGFzc2VydCghdGFzay5oYXNQZW5kaW5nUmVxdWVzdHMo
KSk7CisgICAgICAgIGFzc2VydC5lcXVhbCh0YXNrLmF1dGhvcigpLCBhdXRob3IpOworICAgICAg
ICBhc3NlcnQuZXF1YWwodGFzay5pc015VGFzaygpLCBmYWxzZSk7CisgICAgICAgIGFzc2VydC5k
ZWVwU3RyaWN0RXF1YWwodGFzay5jYygpLCBbXSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0
RXF1YWwodGFzay5idWdzKCksIFtdKTsKKyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh0
YXNrLmNhdXNlcygpLCBbXSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodGFzay5m
aXhlcygpLCBbXSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0YXNrLmNoYW5nZVR5cGUo
KSwgbnVsbCk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0YXNrLnBsYXRmb3JtKCkubGFi
ZWwoKSwgJ3NvbWUgcGxhdGZvcm0nKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRhc2su
bWV0cmljKCkudGVzdCgpLmxhYmVsKCksICd0ZXN0MScpOworICAgIH0pOworCiAgICAgaXQoJ3No
b3VsZCBjcmVhdGUgYW4gYW5hbHlzaXMgdGFzayBhbmQgdXNlIGJ1aWxkIHRpbWUgYXMgZmFsbGJh
Y2sgd2hlbiBjb21taXQgdGltZSBpcyBub3QgYXZhaWxhYmxlJywgKCkgPT4gewogICAgICAgICBj
b25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKICAgICAgICAgcmV0dXJuIGFkZEJ1aWxk
ZXJGb3JSZXBvcnQocmVwb3J0V2l0aFJldmlzaW9uTm9UaW1lc3RhbXBbMF0pLnRoZW4oKCkgPT4g
ewpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2
aWxlZ2VkLWFwaS11cGRhdGUtYW5hbHlzaXMtdGFzay10ZXN0cy5qcyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBkYXRlLWFuYWx5c2lzLXRh
c2stdGVzdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODY4ZTZkYmZkY2U0ZGEwZDgyODJkOTVhMjdmOTM2ZWZl
MWExZDVlYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2
ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBkYXRlLWFuYWx5c2lzLXRhc2stdGVzdHMuanMKQEAg
LTAsMCArMSwyODEgQEAKKyd1c2Ugc3RyaWN0JzsKKworbGV0IGFzc2VydCA9IHJlcXVpcmUoJ2Fz
c2VydCcpOworCitsZXQgTW9ja0RhdGEgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9tb2NrLWRhdGEu
anMnKTsKK2xldCBUZXN0U2VydmVyID0gcmVxdWlyZSgnLi9yZXNvdXJjZXMvdGVzdC1zZXJ2ZXIu
anMnKTsKK2NvbnN0IGFkZEJ1aWxkZXJGb3JSZXBvcnQgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9j
b21tb24tb3BlcmF0aW9ucy5qcycpLmFkZEJ1aWxkZXJGb3JSZXBvcnQ7Citjb25zdCBhZGRXb3Jr
ZXJGb3JSZXBvcnQgPSByZXF1aXJlKCcuL3Jlc291cmNlcy9jb21tb24tb3BlcmF0aW9ucy5qcycp
LmFkZFdvcmtlckZvclJlcG9ydDsKK2NvbnN0IHByZXBhcmVTZXJ2ZXJUZXN0ID0gcmVxdWlyZSgn
Li9yZXNvdXJjZXMvY29tbW9uLW9wZXJhdGlvbnMuanMnKS5wcmVwYXJlU2VydmVyVGVzdDsKK2Nv
bnN0IFRlbXBvcmFyeUZpbGUgPSByZXF1aXJlKCcuL3Jlc291cmNlcy90ZW1wb3JhcnktZmlsZS5q
cycpLlRlbXBvcmFyeUZpbGU7CisKK2NvbnN0IHJlcG9ydFdpdGhSZXZpc2lvbiA9IFt7CisgICAg
ImJ1aWxkVGFnIjogIjEyNCIsCisgICAgImJ1aWxkVGltZSI6ICIyMDE1LTEwLTI3VDE1OjM0OjUx
IiwKKyAgICAicmV2aXNpb25zIjogeworICAgICAgICAiV2ViS2l0IjogeworICAgICAgICAgICAg
InJldmlzaW9uIjogIjE5MTYyMiIsCisgICAgICAgICAgICAidGltZXN0YW1wIjogJzIwMTUtMTAt
MjdUMTE6MzY6NTYuODc4NDczWicsCisgICAgICAgIH0sCisgICAgfSwKKyAgICAiYnVpbGRlck5h
bWUiOiAic29tZUJ1aWxkZXIiLAorICAgICJidWlsZGVyUGFzc3dvcmQiOiAic29tZVBhc3N3b3Jk
IiwKKyAgICAicGxhdGZvcm0iOiAic29tZSBwbGF0Zm9ybSIsCisgICAgInRlc3RzIjogeworICAg
ICAgICAiU3VpdGUiOiB7CisgICAgICAgICAgICAibWV0cmljcyI6IHsKKyAgICAgICAgICAgICAg
ICAiVGltZSI6IFsiQXJpdGhtZXRpYyJdLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJ0
ZXN0cyI6IHsKKyAgICAgICAgICAgICAgICAidGVzdDEiOiB7CisgICAgICAgICAgICAgICAgICAg
ICJtZXRyaWNzIjogeyJUaW1lIjogeyAiY3VycmVudCI6IFsxMV0gfX0sCisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgIH19XTsKKworY29uc3QgYW5vdGhl
clJlcG9ydFdpdGhSZXZpc2lvbiA9IFt7CisgICAgImJ1aWxkVGFnIjogIjEyNSIsCisgICAgImJ1
aWxkVGltZSI6ICIyMDE1LTEwLTI3VDE3OjI3OjQxIiwKKyAgICAicmV2aXNpb25zIjogeworICAg
ICAgICAiV2ViS2l0IjogeworICAgICAgICAgICAgInJldmlzaW9uIjogIjE5MTYyMyIsCisgICAg
ICAgICAgICAidGltZXN0YW1wIjogJzIwMTUtMTAtMjdUMTY6Mzg6MTAuNzY4OTk1WicsCisgICAg
ICAgIH0sCisgICAgfSwKKyAgICAiYnVpbGRlck5hbWUiOiAic29tZUJ1aWxkZXIiLAorICAgICJi
dWlsZGVyUGFzc3dvcmQiOiAic29tZVBhc3N3b3JkIiwKKyAgICAicGxhdGZvcm0iOiAic29tZSBw
bGF0Zm9ybSIsCisgICAgInRlc3RzIjogeworICAgICAgICAiU3VpdGUiOiB7CisgICAgICAgICAg
ICAibWV0cmljcyI6IHsKKyAgICAgICAgICAgICAgICAiVGltZSI6IFsiQXJpdGhtZXRpYyJdLAor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJ0ZXN0cyI6IHsKKyAgICAgICAgICAgICAgICAi
dGVzdDEiOiB7CisgICAgICAgICAgICAgICAgICAgICJtZXRyaWNzIjogeyJUaW1lIjogeyAiY3Vy
cmVudCI6IFsxMl0gfX0sCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgIH19XTsKKworYXN5bmMgZnVuY3Rpb24gY3JlYXRlQW5hbHlzaXNUYXNrKG5hbWUs
IHdlYmtpdFJldmlzaW9ucyA9IFsiMTkxNjIyIiwgIjE5MTYyMyJdKQoreworICAgIGNvbnN0IHJl
cG9ydFdpdGhSZXZpc2lvbiA9IFt7CisgICAgICAgICJidWlsZFRhZyI6ICIxMjQiLAorICAgICAg
ICAiYnVpbGRUaW1lIjogIjIwMTUtMTAtMjdUMTU6MzQ6NTEiLAorICAgICAgICAicmV2aXNpb25z
IjogeworICAgICAgICAgICAgIldlYktpdCI6IHsKKyAgICAgICAgICAgICAgICAicmV2aXNpb24i
OiB3ZWJraXRSZXZpc2lvbnNbMF0sCisgICAgICAgICAgICAgICAgInRpbWVzdGFtcCI6ICcyMDE1
LTEwLTI3VDExOjM2OjU2Ljg3ODQ3M1onLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJt
YWNPUyI6IHsKKyAgICAgICAgICAgICAgICAicmV2aXNpb24iOiAiMTVBMjg0IiwKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJ1aWxkZXJOYW1lIjogInNvbWVCdWlsZGVyIiwK
KyAgICAgICAgIndvcmtlck5hbWUiOiAic29tZVdvcmtlciIsCisgICAgICAgICJ3b3JrZXJQYXNz
d29yZCI6ICJzb21lUGFzc3dvcmQiLAorICAgICAgICAicGxhdGZvcm0iOiAic29tZSBwbGF0Zm9y
bSIsCisgICAgICAgICJ0ZXN0cyI6IHsKKyAgICAgICAgICAgICJzb21lIHRlc3QiOiB7CisgICAg
ICAgICAgICAgICAgIm1ldHJpY3MiOiB7CisgICAgICAgICAgICAgICAgICAgICJUaW1lIjogWyJB
cml0aG1ldGljIl0sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidGVzdHMi
OiB7CisgICAgICAgICAgICAgICAgICAgICJ0ZXN0MSI6IHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJtZXRyaWNzIjogeyJUaW1lIjogeyAiY3VycmVudCI6IFsxMV0gfX0sCisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICB9
fV07CisKKyAgICBjb25zdCBhbm90aGVyUmVwb3J0V2l0aFJldmlzaW9uID0gW3sKKyAgICAgICAg
ImJ1aWxkVGFnIjogIjEyNSIsCisgICAgICAgICJidWlsZFRpbWUiOiAiMjAxNS0xMC0yN1QxNzoy
Nzo0MSIsCisgICAgICAgICJyZXZpc2lvbnMiOiB7CisgICAgICAgICAgICAiV2ViS2l0Ijogewor
ICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6IHdlYmtpdFJldmlzaW9uc1sxXSwKKyAgICAgICAg
ICAgICAgICAidGltZXN0YW1wIjogJzIwMTUtMTAtMjdUMTY6Mzg6MTAuNzY4OTk1WicsCisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgIm1hY09TIjogeworICAgICAgICAgICAgICAgICJyZXZp
c2lvbiI6ICIxNUEyODQiLAorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYnVp
bGRlck5hbWUiOiAic29tZUJ1aWxkZXIiLAorICAgICAgICAid29ya2VyTmFtZSI6ICJzb21lV29y
a2VyIiwKKyAgICAgICAgIndvcmtlclBhc3N3b3JkIjogInNvbWVQYXNzd29yZCIsCisgICAgICAg
ICJwbGF0Zm9ybSI6ICJzb21lIHBsYXRmb3JtIiwKKyAgICAgICAgInRlc3RzIjogeworICAgICAg
ICAgICAgInNvbWUgdGVzdCI6IHsKKyAgICAgICAgICAgICAgICAibWV0cmljcyI6IHsKKyAgICAg
ICAgICAgICAgICAgICAgIlRpbWUiOiBbIkFyaXRobWV0aWMiXSwKKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgICJ0ZXN0cyI6IHsKKyAgICAgICAgICAgICAgICAgICAgInRlc3Qx
IjogeworICAgICAgICAgICAgICAgICAgICAgICAgIm1ldHJpY3MiOiB7IlRpbWUiOiB7ICJjdXJy
ZW50IjogWzEyXSB9fSwKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0sCisgICAgICAgIH19XTsKKworICAgIGNvbnN0IGRiID0gVGVzdFNlcnZl
ci5kYXRhYmFzZSgpOworICAgIGNvbnN0IHJlbW90ZSA9IFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCk7
CisgICAgYXdhaXQgYWRkV29ya2VyRm9yUmVwb3J0KHJlcG9ydFdpdGhSZXZpc2lvblswXSk7Cisg
ICAgYXdhaXQgcmVtb3RlLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCByZXBvcnRXaXRoUmV2aXNp
b24pOworICAgIGF3YWl0IHJlbW90ZS5wb3N0SlNPTignL2FwaS9yZXBvcnQvJywgYW5vdGhlclJl
cG9ydFdpdGhSZXZpc2lvbik7CisgICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2goKTsKKyAgICBjb25z
dCB0ZXN0ID0gVGVzdC5maW5kQnlQYXRoKFsnc29tZSB0ZXN0JywgJ3Rlc3QxJ10pOworICAgIGNv
bnN0IHBsYXRmb3JtID0gUGxhdGZvcm0uZmluZEJ5TmFtZSgnc29tZSBwbGF0Zm9ybScpOworICAg
IGNvbnN0IGNvbmZpZ1JvdyA9IGF3YWl0IGRiLnNlbGVjdEZpcnN0Um93KCd0ZXN0X2NvbmZpZ3Vy
YXRpb25zJywge21ldHJpYzogdGVzdC5tZXRyaWNzKClbMF0uaWQoKSwgcGxhdGZvcm06IHBsYXRm
b3JtLmlkKCl9KTsKKyAgICBjb25zdCB0ZXN0UnVucyA9IGF3YWl0IGRiLnNlbGVjdFJvd3MoJ3Rl
c3RfcnVucycsIHtjb25maWc6IGNvbmZpZ1Jvd1snaWQnXX0pOworCisgICAgYXNzZXJ0LnN0cmlj
dEVxdWFsKHRlc3RSdW5zLmxlbmd0aCwgMik7CisgICAgY29uc3QgY29udGVudCA9IGF3YWl0IFBy
aXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS1hbmFseXNpcy10YXNrJywgeworICAgICAg
ICBuYW1lOiBuYW1lLAorICAgICAgICBzdGFydFJ1bjogdGVzdFJ1bnNbMF1bJ2lkJ10sCisgICAg
ICAgIGVuZFJ1bjogdGVzdFJ1bnNbMV1bJ2lkJ10sCisgICAgICAgIG5lZWRzTm90aWZpY2F0aW9u
OiB0cnVlLAorICAgIH0pOworICAgIHJldHVybiBjb250ZW50Wyd0YXNrSWQnXTsKK30KKworYXN5
bmMgZnVuY3Rpb24gYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKG5hbWUsIHdlYmtpdFJldmlz
aW9ucykKK3sKKyAgICBjb25zdCByZXBvcnQgPSB7CisgICAgICAgICd3b3JrZXJOYW1lJzogJ2Fu
b3RoZXJXb3JrZXInLAorICAgICAgICAnd29ya2VyUGFzc3dvcmQnOiAnYW5vdGhlclBhc3N3b3Jk
JywKKyAgICAgICAgJ3RyaWdnZXJhYmxlJzogJ2J1aWxkLXdlYmtpdCcsCisgICAgICAgICdjb25m
aWd1cmF0aW9ucyc6IFsKKyAgICAgICAgICAgIHt0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCks
IHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgpLCBzdXBwb3J0ZWRSZXBldGl0aW9u
VHlwZXM6IFsnYWx0ZXJuYXRpbmcnLCAnc2VxdWVudGlhbCddfSwKKyAgICAgICAgICAgIHt0ZXN0
OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIHBsYXRmb3JtOiBNb2NrRGF0YS5vdGhlclBsYXRmb3Jt
SWQoKSwgc3VwcG9ydGVkUmVwZXRpdGlvblR5cGVzOiBbJ2FsdGVybmF0aW5nJywgJ3NlcXVlbnRp
YWwnXX0sCisgICAgICAgIF0sCisgICAgICAgICdyZXBvc2l0b3J5R3JvdXBzJzogWworICAgICAg
ICAgICAge25hbWU6ICdvcy1vbmx5JywgYWNjZXB0c1Jvb3Q6IHRydWUsIHJlcG9zaXRvcmllczog
WworICAgICAgICAgICAgICAgIHtyZXBvc2l0b3J5OiBNb2NrRGF0YS5tYWNvc1JlcG9zaXRvcnlJ
ZCgpLCBhY2NlcHRzUGF0Y2g6IGZhbHNlfSwKKyAgICAgICAgICAgIF19LAorICAgICAgICAgICAg
e25hbWU6ICd3ZWJraXQtb25seScsIGFjY2VwdHNSb290OiB0cnVlLCByZXBvc2l0b3JpZXM6IFsK
KyAgICAgICAgICAgICAgICB7cmVwb3NpdG9yeTogTW9ja0RhdGEud2Via2l0UmVwb3NpdG9yeUlk
KCksIGFjY2VwdHNQYXRjaDogdHJ1ZX0sCisgICAgICAgICAgICBdfSwKKyAgICAgICAgICAgIHtu
YW1lOiAnc3lzdGVtLWFuZC13ZWJraXQnLCBhY2NlcHRzUm9vdDogdHJ1ZSwgcmVwb3NpdG9yaWVz
OiBbCisgICAgICAgICAgICAgICAge3JlcG9zaXRvcnk6IE1vY2tEYXRhLm1hY29zUmVwb3NpdG9y
eUlkKCksIGFjY2VwdHNQYXRjaDogZmFsc2V9LAorICAgICAgICAgICAgICAgIHtyZXBvc2l0b3J5
OiBNb2NrRGF0YS53ZWJraXRSZXBvc2l0b3J5SWQoKSwgYWNjZXB0c1BhdGNoOiB0cnVlfQorICAg
ICAgICAgICAgXX0sCisgICAgICAgICAgICB7bmFtZTogJ3N5c3RlbS13ZWJraXQtc2pjJywgYWNj
ZXB0c1Jvb3Q6IHRydWUsIHJlcG9zaXRvcmllczogWworICAgICAgICAgICAgICAgIHtyZXBvc2l0
b3J5OiBNb2NrRGF0YS5tYWNvc1JlcG9zaXRvcnlJZCgpLCBhY2NlcHRzUGF0Y2g6IGZhbHNlfSwK
KyAgICAgICAgICAgICAgICB7cmVwb3NpdG9yeTogTW9ja0RhdGEuanNjUmVwb3NpdG9yeUlkKCks
IGFjY2VwdHNQYXRjaDogZmFsc2V9LAorICAgICAgICAgICAgICAgIHtyZXBvc2l0b3J5OiBNb2Nr
RGF0YS53ZWJraXRSZXBvc2l0b3J5SWQoKSwgYWNjZXB0c1BhdGNoOiB0cnVlfQorICAgICAgICAg
ICAgXX0sCisgICAgICAgIF0KKyAgICB9OworICAgIGF3YWl0IE1vY2tEYXRhLmFkZE1vY2tEYXRh
KFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKSk7CisgICAgYXdhaXQgYWRkV29ya2VyRm9yUmVwb3J0KHJl
cG9ydCk7CisgICAgYXdhaXQgVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5wb3N0SlNPTignL2FwaS91
cGRhdGUtdHJpZ2dlcmFibGUvJywgcmVwb3J0KTsKKyAgICByZXR1cm4gYXdhaXQgY3JlYXRlQW5h
bHlzaXNUYXNrKG5hbWUsIHdlYmtpdFJldmlzaW9ucyk7Cit9CisKK2Rlc2NyaWJlKCcvcHJpdmls
ZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2lzLXRhc2sgd2l0aCBicm93c2VyIHByaXZpbGVnZWQgYXBp
JywgZnVuY3Rpb24gKCkgeworICAgIHByZXBhcmVTZXJ2ZXJUZXN0KHRoaXMpOworICAgIFRlbXBv
cmFyeUZpbGUuaW5qZWN0KCk7CisgICAgCisgICAgaXQoJ3Nob3VsZCBhZGQgYW5kIHJlbW92ZSBj
dXJyZW50IHVzZXIgdG8gdGFzayBjYyBsaXN0IHdoZW4gcHJvdmlkZSBjY01lJywgYXN5bmMgKCkg
PT4geworICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKKyAgICAgICAg
Y29uc3QgYXV0aG9yID0gJ3Rlc3QnOworICAgICAgICBjb25zdCByZW1vdGVVc2VyID0gJ3JlbW90
ZSc7CisgICAgICAgIFRlc3RTZXJ2ZXIuc2V0Q3VycmVudFVzZXIoYXV0aG9yKTsKKyAgICAgICAg
YXdhaXQgYWRkQnVpbGRlckZvclJlcG9ydChyZXBvcnRXaXRoUmV2aXNpb25bMF0pOworICAgICAg
ICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBy
ZXBvcnRXaXRoUmV2aXNpb24pOworICAgICAgICBhd2FpdCBUZXN0U2VydmVyLnJlbW90ZUFQSSgp
LnBvc3RKU09OKCcvYXBpL3JlcG9ydC8nLCBhbm90aGVyUmVwb3J0V2l0aFJldmlzaW9uKTsKKyAg
ICAgICAgYXdhaXQgTWFuaWZlc3QuZmV0Y2goKTsKKyAgICAgICAKKyAgICAgICAgY29uc3QgdGVz
dDEgPSBUZXN0LmZpbmRCeVBhdGgoWydTdWl0ZScsICd0ZXN0MSddKTsKKyAgICAgICAgY29uc3Qg
cGxhdGZvcm0gPSBQbGF0Zm9ybS5maW5kQnlOYW1lKCdzb21lIHBsYXRmb3JtJyk7CisgICAgICAg
IGNvbnN0IGNvbmZpZ1JvdyA9IGF3YWl0IGRiLnNlbGVjdEZpcnN0Um93KCd0ZXN0X2NvbmZpZ3Vy
YXRpb25zJywge21ldHJpYzogdGVzdDEubWV0cmljcygpWzBdLmlkKCksIHBsYXRmb3JtOiBwbGF0
Zm9ybS5pZCgpfSk7CisgICAgICAgIGNvbnN0IHRlc3RSdW5zID0gYXdhaXQgZGIuc2VsZWN0Um93
cygndGVzdF9ydW5zJywge2NvbmZpZzogY29uZmlnUm93WydpZCddfSk7CisgICAgICAgIGFzc2Vy
dC5zdHJpY3RFcXVhbCh0ZXN0UnVucy5sZW5ndGgsIDIpOworICAgICAgICBjb25zdCBjb250ZW50
ID0gYXdhaXQgUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLWFuYWx5c2lzLXRhc2sn
LCB7bmFtZTogJ2hpJywgc3RhcnRSdW46IHRlc3RSdW5zWzBdWydpZCddLCBlbmRSdW46IHRlc3RS
dW5zWzFdWydpZCddfSk7CisgICAgICAgIAorICAgICAgICBUZXN0U2VydmVyLnNldEN1cnJlbnRV
c2VyKHJlbW90ZVVzZXIpOworICAgICAgICBsZXQgdGFzayA9IGF3YWl0IEFuYWx5c2lzVGFzay5m
ZXRjaEJ5SWQoY29udGVudFsndGFza0lkJ10pOworCisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVh
bCh0YXNrLm5hbWUoKSwgJ2hpJyk7CisgICAgICAgIGFzc2VydCghdGFzay5oYXNSZXN1bHRzKCkp
OworICAgICAgICBhc3NlcnQoIXRhc2suaGFzUGVuZGluZ1JlcXVlc3RzKCkpOworICAgICAgICBh
c3NlcnQuZXF1YWwodGFzay5hdXRob3IoKSwgYXV0aG9yKTsKKyAgICAgICAgYXNzZXJ0LmVxdWFs
KHRhc2suaXNNeVRhc2soKSwgZmFsc2UpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFs
KHRhc2suY2MoKSwgW10pOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHRhc2suYW1J
Y2MoKSwgZmFsc2UpOworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHRhc2suYnVncygp
LCBbXSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodGFzay5jYXVzZXMoKSwgW10p
OworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHRhc2suZml4ZXMoKSwgW10pOworICAg
ICAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGFzay5jaGFuZ2VUeXBlKCksIG51bGwpOworICAgICAg
ICBhc3NlcnQuc3RyaWN0RXF1YWwodGFzay5wbGF0Zm9ybSgpLmxhYmVsKCksICdzb21lIHBsYXRm
b3JtJyk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0YXNrLm1ldHJpYygpLnRlc3QoKS5s
YWJlbCgpLCAndGVzdDEnKTsKKworICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1
ZXN0KCd1cGRhdGUtYW5hbHlzaXMtdGFzaycsIHt0YXNrOiBjb250ZW50Wyd0YXNrSWQnXSwgY2NN
ZTogdHJ1ZX0pOworICAgICAgICBhd2FpdCBNYW5pZmVzdC5mZXRjaCgpOworICAgICAgICB0YXNr
ID0gYXdhaXQgQW5hbHlzaXNUYXNrLmZldGNoQnlJZChjb250ZW50Wyd0YXNrSWQnXSwgdHJ1ZSk7
CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodGFzay5jYygpLCBbcmVtb3RlVXNlcl0p
OworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHRhc2suYW1JY2MoKSwgdHJ1ZSk7Cisg
ICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS1hbmFseXNpcy10
YXNrJywge3Rhc2s6IGNvbnRlbnRbJ3Rhc2tJZCddLCBjY01lOiBmYWxzZX0pOworICAgICAgICB0
YXNrID0gYXdhaXQgQW5hbHlzaXNUYXNrLmZldGNoQnlJZChjb250ZW50Wyd0YXNrSWQnXSwgdHJ1
ZSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodGFzay5jYygpLCBbXSk7CisgICAg
fSk7CisKKyAgICBpdCgnc2hvdWxkIGFkZCBhbmQgcmVtb3ZlIGN1cnJlbnQgdXNlciB0byB0ZXN0
Z3JvdXAgY2MgbGlzdCB3aGVuIHByb3ZpZGUgY2NNZScsIGFzeW5jICgpID0+IHsKKyAgICAgICAg
Y29uc3QgZGIgPSBUZXN0U2VydmVyLmRhdGFiYXNlKCk7CisgICAgICAgIGNvbnN0IGF1dGhvciA9
ICd0ZXN0JzsKKyAgICAgICAgY29uc3QgcmVtb3RlVXNlciA9ICdyZW1vdGUnOworICAgICAgICBU
ZXN0U2VydmVyLnNldEN1cnJlbnRVc2VyKGF1dGhvcik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgYXdhaXQgYWRkVHJp
Z2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKTsKKyAgICAgICAgY29uc3Qgd2Via2l0
ID0gUmVwb3NpdG9yeS5hbGwoKS5maWx0ZXIoKHJlcG9zaXRvcnkpID0+IHJlcG9zaXRvcnkubmFt
ZSgpID09ICdXZWJLaXQnKVswXTsKKyAgICAgICAgY29uc3QgcmV2aXNpb25TZXRzID0gW3tbd2Vi
a2l0LmlkKCldOiB7cmV2aXNpb246ICcxOTE2MjInfX0sIHtbd2Via2l0LmlkKCldOiB7cmV2aXNp
b246ICcxOTE2MjMnfX1dOworICAgICAgICBsZXQgY29udGVudCA9IGF3YWl0IFByaXZpbGVnZWRB
UEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywKKyAgICAgICAgICAgIHtuYW1lOiAn
dGVzdCcsIHRhc2tOYW1lOiAnb3RoZXIgdGFzaycsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxh
dGZvcm1JZCgpLCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9u
OiB0cnVlLCByZXZpc2lvblNldHN9KTsKKworICAgICAgICBUZXN0U2VydmVyLnNldEN1cnJlbnRV
c2VyKHJlbW90ZVVzZXIpOworICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0
KCd1cGRhdGUtYW5hbHlzaXMtdGFzaycsIHt0YXNrOiBjb250ZW50Wyd0YXNrSWQnXSwgY2NNZTog
dHJ1ZX0pOworICAgICAgICBhd2FpdCBNYW5pZmVzdC5mZXRjaCgpOworICAgICAgICBsZXQgdGFz
ayA9IGF3YWl0IEFuYWx5c2lzVGFzay5mZXRjaEJ5SWQoY29udGVudFsndGFza0lkJ10sIHRydWUp
OworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHRhc2suY2MoKSwgW3JlbW90ZVVzZXJd
KTsKKyAgICAgICAgbGV0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNr
KGNvbnRlbnRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRl
c3RHcm91cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgbGV0IGdyb3VwID0gdGVzdEdyb3Vwc1swXTsK
KyAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChncm91cC5jYygpLCBbcmVtb3RlVXNlcl0p
OworCisgICAgICAgIGF3YWl0IFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ3VwZGF0ZS1hbmFs
eXNpcy10YXNrJywge3Rhc2s6IGNvbnRlbnRbJ3Rhc2tJZCddLCBjY01lOiBmYWxzZX0pOworICAg
ICAgICB0YXNrID0gYXdhaXQgQW5hbHlzaXNUYXNrLmZldGNoQnlJZChjb250ZW50Wyd0YXNrSWQn
XSwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodGFzay5jYygpLCBbXSk7
CisgICAgICAgIHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNrKGNvbnRl
bnRbJ3Rhc2tJZCddLCB0cnVlKTsKKyAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlc3RHcm91
cHMubGVuZ3RoLCAxKTsKKyAgICAgICAgZ3JvdXAgPSB0ZXN0R3JvdXBzWzBdOworICAgICAgICBh
c3NlcnQuZGVlcFN0cmljdEVxdWFsKGdyb3VwLmNjKCksIFtdKTsKKyAgICB9KTsKKworICAgIGl0
KCdzaG91bGQgY29weSBjYyBsaXN0IHRvIG5ldyB0ZXN0Z3JvdXBzIHdoZW4gcHJvdmlkZSBjY01l
JywgYXN5bmMgKCkgPT4geworICAgICAgICBjb25zdCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2Uo
KTsKKyAgICAgICAgY29uc3QgYXV0aG9yID0gJ3Rlc3QnOworICAgICAgICBjb25zdCByZW1vdGVV
c2VyID0gJ3JlbW90ZSc7CisgICAgICAgIFRlc3RTZXJ2ZXIuc2V0Q3VycmVudFVzZXIoYXV0aG9y
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICBjb25zdCB0YXNrSWQgPSBhd2FpdCBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0
ZVRhc2soJ3NvbWUgdGFzaycpOworICAgICAgICBUZXN0U2VydmVyLnNldEN1cnJlbnRVc2VyKHJl
bW90ZVVzZXIpOworICAgICAgICBhd2FpdCBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCd1cGRh
dGUtYW5hbHlzaXMtdGFzaycsIHt0YXNrOiB0YXNrSWQsIGNjTWU6IHRydWV9KTsKKyAgICAgICAg
VGVzdFNlcnZlci5zZXRDdXJyZW50VXNlcihhdXRob3IpOworCisgICAgICAgIGNvbnN0IHdlYmtp
dCA9IFJlcG9zaXRvcnkuYWxsKCkuZmlsdGVyKChyZXBvc2l0b3J5KSA9PiByZXBvc2l0b3J5Lm5h
bWUoKSA9PSAnV2ViS2l0JylbMF07CisgICAgICAgIGNvbnN0IHJldmlzaW9uU2V0cyA9IFt7W3dl
YmtpdC5pZCgpXToge3JldmlzaW9uOiAnMTkxNjIyJ319LCB7W3dlYmtpdC5pZCgpXToge3Jldmlz
aW9uOiAnMTkxNjIzJ319XTsKKyAgICAgICAgbGV0IGNvbnRlbnQgPSBhd2FpdCBQcml2aWxlZ2Vk
QVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsCisgICAgICAgICAgICB7bmFtZTog
J3Rlc3QnLCB0YXNrOiB0YXNrSWQsIHBsYXRmb3JtOiBNb2NrRGF0YS5zb21lUGxhdGZvcm1JZCgp
LCB0ZXN0OiBNb2NrRGF0YS5zb21lVGVzdElkKCksIG5lZWRzTm90aWZpY2F0aW9uOiB0cnVlLCBy
ZXZpc2lvblNldHN9KTsKKworCisgICAgICAgIGF3YWl0IE1hbmlmZXN0LmZldGNoKCk7CisgICAg
ICAgIGxldCB0YXNrID0gYXdhaXQgQW5hbHlzaXNUYXNrLmZldGNoQnlJZCh0YXNrSWQsIHRydWUp
OworICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHRhc2suY2MoKSwgW3JlbW90ZVVzZXJd
KTsKKyAgICAgICAgbGV0IHRlc3RHcm91cHMgPSBhd2FpdCBUZXN0R3JvdXAuZmV0Y2hGb3JUYXNr
KHRhc2tJZCwgdHJ1ZSk7CisgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXN0R3JvdXBzLmxl
bmd0aCwgMSk7CisgICAgICAgIGxldCBncm91cCA9IHRlc3RHcm91cHNbMF07CisgICAgICAgIGFz
c2VydC5kZWVwU3RyaWN0RXF1YWwoZ3JvdXAuY2MoKSwgW3JlbW90ZVVzZXJdKTsKKyAgICB9KTsK
K30pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL3Rlc3Qtc2VydmVyLmpzIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvdGVzdC1zZXJ2ZXIu
anMKaW5kZXggMWZlN2M2OTc1NjIyMmUwZjgxNTRkYTcwOTljNzI2MTE3MDFlYzQxNC4uMjZiMDU2
MmE5M2JkNDcwZTVmM2ViZTAxMWRmNjIwODk0N2EwMWI2YiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvdGVzdC1zZXJ2ZXIuanMKKysr
IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvdGVzdC1z
ZXJ2ZXIuanMKQEAgLTIyLDYgKzIyLDcgQEAgY2xhc3MgVGVzdFNlcnZlciB7CiAgICAgICAgIHRo
aXMuX3Nob3VsZExvZyA9IGZhbHNlOwogICAgICAgICB0aGlzLl9wZ3NxbERpcmVjdG9yeSA9IG51
bGw7CiAgICAgICAgIHRoaXMuX3NlcnZlciA9IG51bGw7CisgICAgICAgIHRoaXMuX2N1cnJlbnRV
c2VyID0gbnVsbDsKIAogICAgICAgICB0aGlzLl9kYXRhYmFzZU5hbWUgPSBDb25maWcudmFsdWUo
J3Rlc3REYXRhYmFzZU5hbWUnKTsKICAgICAgICAgdGhpcy5fZGF0YWJhc2VVc2VyID0gQ29uZmln
LnZhbHVlKCdkYXRhYmFzZS51c2VybmFtZScpOwpAQCAtNTAsNiArNTEsMTIgQEAgY2xhc3MgVGVz
dFNlcnZlciB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdG9wQXBhY2hlKCk7CiAgICAgfQogCisg
ICAgc2V0Q3VycmVudFVzZXIodXNlcikgeworICAgICAgICB0aGlzLl9jdXJyZW50VXNlciA9IHVz
ZXI7CisgICAgICAgIHRoaXMuX3N0b3BBcGFjaGUoKTsKKyAgICAgICAgdGhpcy5fc3RhcnRBcGFj
aGUoKTsKKyAgICB9CisKICAgICByZW1vdGVBUEkoKQogICAgIHsKICAgICAgICAgYXNzZXJ0KHRo
aXMuX3JlbW90ZSk7CkBAIC0xOTAsNiArMTk3LDEwIEBAIGNsYXNzIFRlc3RTZXJ2ZXIgewogICAg
ICAgICAgICAgJy1jJywgYERvY3VtZW50Um9vdCAke0NvbmZpZy5zZXJ2ZXJSb290KCl9YCwKICAg
ICAgICAgICAgICctRCcsIHBocFZlcnNpb25dOwogCisgICAgICAgIGlmICh0aGlzLl9jdXJyZW50
VXNlcikKKyAgICAgICAgICAgIGFyZ3MgPSBhcmdzLmNvbmNhdChbCisgICAgICAgICAgICAgICAg
Jy1jJywgYFNldEVudiBSRU1PVEVfVVNFUiAke3RoaXMuX2N1cnJlbnRVc2VyfWAKKyAgICAgICAg
ICAgIF0pOwogICAgICAgICBpZiAodGhpcy5fc2hvdWxkTG9nKQogICAgICAgICAgICAgY29uc29s
ZS5sb2coYXJncyk7CiAKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29s
cy9qcy9hbmFseXNpcy1yZXN1bHRzLW5vdGlmaWVyLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3Rvb2xzL2pzL2FuYWx5c2lzLXJlc3VsdHMtbm90aWZpZXIuanMKaW5kZXggMmRkYWM3MTY1
ZTRhYmQ3NTA4Y2I5NDBhOGMyZDVkYWQxZWJjZDJjOC4uNzk5ODMzMjU3NDkxNDQ4ZmVhM2YwZDlh
NzEyMzM5M2RhNDk3NTdkYSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rv
b2xzL2pzL2FuYWx5c2lzLXJlc3VsdHMtbm90aWZpZXIuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3Rvb2xzL2pzL2FuYWx5c2lzLXJlc3VsdHMtbm90aWZpZXIuanMKQEAgLTQxLDcg
KzQxLDEwIEBAIGNsYXNzIEFuYWx5c2lzUmVzdWx0c05vdGlmaWVyIHsKICAgICAgICAgICAgIGNv
bnN0IG1lc3NhZ2UgPSBhd2FpdCBBbmFseXNpc1Jlc3VsdHNOb3RpZmllci5fbWVzc2FnZUZvclRl
c3RHcm91cCh0ZXN0R3JvdXAsIHRpdGxlKTsKICAgICAgICAgICAgIGxldCBjb250ZW50ID0gQW5h
bHlzaXNSZXN1bHRzTm90aWZpZXIuX2luc3RhbnRpYXRlTm90aWZpY2F0aW9uVGVtcGxhdGUodGhp
cy5fbWVzc2FnZVRlbXBsYXRlLCB0aXRsZSwgbWVzc2FnZSk7CiAgICAgICAgICAgICBjb250ZW50
ID0gdGhpcy5fYXBwbHlSdWxlcyh0ZXN0R3JvdXAucGxhdGZvcm0oKS5uYW1lKCksIHRlc3RHcm91
cC50ZXN0KCkucGF0aCgpWzBdLm5hbWUoKSwgISF0ZXN0R3JvdXAuYXV0aG9yKCksIGNvbnRlbnQp
OwotICAgICAgICAgICAgY29uc3QgdGVzdEdyb3VwSW5mbyA9IHthdXRob3I6IHRlc3RHcm91cC5h
dXRob3IoKX07CisgICAgICAgICAgICBjb25zdCB0ZXN0R3JvdXBJbmZvID0geworICAgICAgICAg
ICAgICAgIGF1dGhvcjogdGVzdEdyb3VwLmF1dGhvcigpLAorICAgICAgICAgICAgICAgIGNjOiB0
ZXN0R3JvdXAuY2MoKSwKKyAgICAgICAgICAgIH07CiAKICAgICAgICAgICAgIGNvbnN0IHRlbXBE
aXIgPSBmcy5ta2R0ZW1wU3luYyhvcy50bXBkaXIoKSk7CiAgICAgICAgICAgICBjb25zdCB0ZW1w
RmlsZVBhdGggPSBwYXRoLmpvaW4odGVtcERpciwgJ3RlbXAtY29udGVudC5qc29uJyk7CmRpZmYg
LS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9hbmFseXNpcy10YXNr
LXRlc3RzLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYW5hbHlzaXMt
dGFzay10ZXN0cy5qcwppbmRleCAyZTY3MGIwNzk1MTE0ZWI2NzU1MjVjMmRmN2JlYTEzOGQzMzhl
N2MwLi40ZWYwOTZmYjU3ZDEyNWVkYTFhMjRjMDNiOGIzOTZhNjRmYmU3MDkxIDEwMDY0NAotLS0g
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9hbmFseXNpcy10YXNrLXRlc3Rz
LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2FuYWx5c2lzLXRh
c2stdGVzdHMuanMKQEAgLTM3OSw2ICszNzksOCBAQCBkZXNjcmliZSgnQW5hbHlzaXNUYXNrJywg
KCkgPT4gewogICAgICAgICAgICAgICAgIGFuYWx5c2lzVGFza3M6IFt7CiAgICAgICAgICAgICAg
ICAgICAgIGF1dGhvcjogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgYnVnczogW10sCisgICAg
ICAgICAgICAgICAgICAgIGNjOiBbXSwKKyAgICAgICAgICAgICAgICAgICAgaXNNeVRhc2s6IHRy
dWUsCiAgICAgICAgICAgICAgICAgICAgIGJ1aWxkUmVxdWVzdENvdW50OiA4LAogICAgICAgICAg
ICAgICAgICAgICBmaW5pc2hlZEJ1aWxkUmVxdWVzdENvdW50OiAwLAogICAgICAgICAgICAgICAg
ICAgICBjYXRlZ29yeTogJ2lkZW50aWZpZWQnLApAQCAtNDA2LDYgKzQwOCw4IEBAIGRlc2NyaWJl
KCdBbmFseXNpc1Rhc2snLCAoKSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYW5hbHlz
aXNUYXNrLmlkKCksIDUyNTUpOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChhbmFseXNp
c1Rhc2suYnVncygpLCBbXSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYW5hbHlzaXNUYXNr
LmF1dGhvcigpLCAnJyk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGFuYWx5c2lzVGFz
ay5jYygpLCBbXSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYW5hbHlzaXNUYXNrLmlzTXlU
YXNrKCksIHRydWUpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGFuYWx5c2lzVGFzay5wbGF0
Zm9ybSgpLCBNb2NrTW9kZWxzLnNvbWVQbGF0Zm9ybSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoYW5hbHlzaXNUYXNrLm1ldHJpYygpLCBNb2NrTW9kZWxzLnNvbWVNZXRyaWMpOwogICAgICAg
ICB9KTsK
</data>
<flag name="review"
          id="473699"
          type_id="1"
          status="-"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>