Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qUA6T-00BsG1-Db for pgsql-hackers@arkaria.postgresql.org; Thu, 10 Aug 2023 18:09:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1qUA6Q-00HZij-Nn for pgsql-hackers@arkaria.postgresql.org; Thu, 10 Aug 2023 18:09:43 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qUA6Q-00HZgx-AU for pgsql-hackers@lists.postgresql.org; Thu, 10 Aug 2023 18:09:42 +0000 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qUA6N-001jlj-2w for pgsql-hackers@lists.postgresql.org; Thu, 10 Aug 2023 18:09:42 +0000 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-317744867a6so1115757f8f.1 for ; Thu, 10 Aug 2023 11:09:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691690977; x=1692295777; h=in-reply-to:content-language:references:cc:to:subject:from :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=oOP2FJgUBruPQsO9o2Ktb4jg0EY19wAO9BrSiQf5Rm0=; b=FvQmVjo8wH4Dm/jT4kA7wQt4s5NMxi4/mRnM+E4gGSrwuF3LWb8V3yZTcGLNBxMbvW u13pXlfyEbILaYdF+BAhlGLLVraoN4nDeUUOKntWHei1LqGTT7latTvO3JAIfBwDG3r5 HIx39PGMcq6RMe8fHr0QkyZN4rFk1u6Ax5hBcgY2+FMC/qv15kD8d3q66LhmtjiW2ARp upuCN8giCMF985XPqPe/gFKmRlYE8bth/fEqCNT0vrL/6PMk2XZbrhtTNTGILZDIBCAg EfY6DcbVHnCKGXQzN3FdeIckZjfUp19kWsbD00yRvq8PNS3JiKqEgQg8gk0D1aZMOpXG rWXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691690977; x=1692295777; h=in-reply-to:content-language:references:cc:to:subject:from :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=oOP2FJgUBruPQsO9o2Ktb4jg0EY19wAO9BrSiQf5Rm0=; b=Lz7EenbXf6OB9P+eH2vUFrO9qHKKJspblSAw/BHr+qBxSErBOR7Xw9Khs9IvTsRiiS uCoFNBZPJWrgBDVdBxDeZNzj7L4yNWJm31f0n0dC/U0zdgj8X/JCHZrM8B5gZ3SveFNw tv7EYp/6KJRFxl/aAOqiBYTVXViewe/+9R+he1yiJNfLI0iRwra4bGnUM2USqUxxUUGC JwE89acGcia2eiV+jF8PQrzmlW/3bUD3+DJI1aQ9x04HnSLjGuYNnYITAcSy5HHDCWeu NSli6VZK299B6e8Z23qB1qBI8JxX/BgnGMkYavEv0PzZER7fJ1slpeoKo5ieDV5wBK9X RkRg== X-Gm-Message-State: AOJu0YwYyePun/a5mjDrbkrQJOLLSerxDjqaNAW8LNsP6afrZ6oakQPP x4ph72KoQs8i+vabLVpJMi8= X-Google-Smtp-Source: AGHT+IFFvf/EmPlpD4RhGcBqG3W8KPC8DtHGz91IJIkr1jwWnFWgP62VBhVWjRWi7lbpaXW8pMWPBA== X-Received: by 2002:a5d:470e:0:b0:313:e9d7:108f with SMTP id y14-20020a5d470e000000b00313e9d7108fmr2647762wrq.33.1691690976630; Thu, 10 Aug 2023 11:09:36 -0700 (PDT) Received: from [192.168.16.122] ([54.239.6.188]) by smtp.gmail.com with ESMTPSA id d10-20020a056000114a00b00301a351a8d6sm2826310wrx.84.2023.08.10.11.09.35 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 10 Aug 2023 11:09:35 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------g0MXu4FADqKqK5DQv3TOGSns" Message-ID: Date: Thu, 10 Aug 2023 20:09:34 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: "Drouvot, Bertrand" Subject: Re: WIP: new system catalog pg_wait_event To: Michael Paquier Cc: Kyotaro Horiguchi , tgl@sss.pgh.pa.us, pgsql-hackers@lists.postgresql.org References: <3658241.1691161701@sss.pgh.pa.us> <0109438a-9672-322b-7638-04ad47c97d0f@gmail.com> <1dc98591-0d06-f0da-bc88-21f529d6fb8e@gmail.com> <20230808.115332.301701413576096139.horikyota.ntt@gmail.com> Content-Language: en-US In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------g0MXu4FADqKqK5DQv3TOGSns Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, On 8/9/23 9:56 AM, Michael Paquier wrote: > On Tue, Aug 08, 2023 at 10:16:37AM +0200, Drouvot, Bertrand wrote: >> Please find attached v3 adding the wait event types. > > +-- There will surely be at least 9 wait event types, 240 wait events and at > +-- least 27 related to WAL > +select count(distinct(wait_event_type)) > 8 as ok_type, > + count(*) > 239 as ok, > + count(*) FILTER (WHERE description like '%WAL%') > 26 AS ok_wal_desc > +from pg_wait_event; > The point is to check the execution of this function, so this could be > simpler, like that or a GROUP BY clause with the event type: > SELECT count(*) > 0 FROM pg_wait_event; > SELECT wait_event_type, count(*) > 0 AS has_data FROM pg_wait_event > GROUP BY wait_event_type ORDER BY wait_event_type; > Thanks for looking at it! Right, so v4 attached is just testing "SELECT count(*) > 0 FROM pg_wait_event;", that does look enough to test. > + printf $ic "\tmemset(values, 0, sizeof(values));\n"; > + printf $ic "\tmemset(nulls, 0, sizeof(nulls));\n\n"; > + printf $ic "\tvalues[0] = CStringGetTextDatum(\"%s\");\n", $last; > + printf $ic "\tvalues[1] = CStringGetTextDatum(\"%s\");\n", $wev->[1]; > + printf $ic "\tvalues[2] = CStringGetTextDatum(\"%s\");\n\n", $new_desc; > > That's overcomplicated for some code generated. Wouldn't it be > simpler to generate a list of elements, with the code inserting the > tuples materialized looping over it? > Yeah, agree thanks! In v4, the perl script now appends the wait events in a List that way: " printf $ic "\telement = (wait_event_element *) palloc(sizeof(wait_event_element));\n"; printf $ic "\telement->wait_event_type = \"%s\";\n", $last; printf $ic "\telement->wait_event_name = \"%s\";\n", $wev->[1]; printf $ic "\telement->wait_event_description = \"%s\";\n\n", $new_desc; printf $ic "\twait_event = lappend(wait_event, element);\n\n"; " And the C function pg_get_wait_events() now iterates over this List. > + my $new_desc = substr $wev->[2], 1, -2; > + $new_desc =~ s/'/\\'/g; > + $new_desc =~ s/<.*>(.*?)<.*>/$1/g; > + $new_desc =~ s//$1/g; > + $new_desc =~ s/; see.*$//; > Better to document what this does, good idea... I had to turn them "on" one by one to recall why they are there...;-) Done in v4. > the contents produced look good. yeap > > + rename($ictmp, "$output_path/pg_wait_event_insert.c") > + || die "rename: $ictmp to $output_path/pg_wait_event_insert.c: $!"; > > # seems nicer to not add that as an include path for the whole backend. > waitevent_sources = files( > 'wait_event.c', > + 'pg_wait_event.c', > ) > > This could use a name referring to SQL functions, say > wait_event_funcs.c, with a wait_event_data.c or a > wait_event_funcs_data.c? That sounds better indeed, thanks! v4 is using wait_event_funcs.c and wait_event_funcs_data.c. > > + # Don't generate .c (except pg_wait_event_insert.c) and .h files for > + # Extension, LWLock and Lock, these are handled independently. > + my $is_exception = $waitclass eq 'WaitEventExtension' || > + $waitclass eq 'WaitEventLWLock' || > + $waitclass eq 'WaitEventLock'; > Perhaps it would be cleaner to use a separate loop? Agree that's worth it given the fact that iterating one more time is not that costly here. Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------g0MXu4FADqKqK5DQv3TOGSns Content-Type: text/plain; charset=UTF-8; name="v4-0001-pg_wait_event.patch" Content-Disposition: attachment; filename="v4-0001-pg_wait_event.patch" Content-Transfer-Encoding: base64 RnJvbSBhYTNlODE4MTBkYWFiYTdiMWIyZTA1MjE5ZWY2NjJmMmZkMDYwN2Y4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogU2F0LCA1IEF1ZyAyMDIzIDEyOjM5OjQyICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NF0gcGdfd2FpdF9ldmVudAoKQWRkaW5nIGEgbmV3IHN5c3RlbSB2aWV3LCBuYW1lbHkg cGdfd2FpdF9ldmVudCwgdGhhdCBkZXNjcmliZXMgdGhlIHdhaXQgZXZlbnRzLgotLS0KIGRv Yy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAgICAgICAgICAgICAgICB8IDY0ICsrKysr KysrKysrKysrKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAg ICAgICAgfCAgMyArCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS8uZ2l0aWdub3JlICAg ICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9NYWtlZmlsZSAgICAg ICAgICAgfCAgNiArLQogLi4uL2FjdGl2aXR5L2dlbmVyYXRlLXdhaXRfZXZlbnRfdHlwZXMu cGwgICAgIHwgNDYgKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv bWVzb24uYnVpbGQgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv d2FpdF9ldmVudF9mdW5jcy5jIHwgNjkgKysrKysrKysrKysrKysrKysrKwogc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgIHwgIDYgKysKIHNyYy9pbmNs dWRlL3V0aWxzL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgICAgICAgICAgfCAgNCArKwogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQgICAgICAgIHwgIDcgKysKIHNyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3N5c3ZpZXdzLnNxbCAgICAgICAgICAgICB8ICAzICsKIHNyYy90 b29scy9tc3ZjL2NsZWFuLmJhdCAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKIDEzIGZp bGVzIGNoYW5nZWQsIDIwOSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogIDI0LjQl IGRvYy9zcmMvc2dtbC8KICA1OC41JSBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS8KICAg NS45JSBzcmMvaW5jbHVkZS9jYXRhbG9nLwogICA0LjElIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvCiAgIDYuOSUgc3JjLwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0t dmlld3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAppbmRleCA1N2Iy MjgwNzZlLi5lZDI2YzgzMjZmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZp ZXdzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCkBAIC0yMjEs NiArMjIxLDExIEBACiAgICAgICA8ZW50cnk+dmlld3M8L2VudHJ5PgogICAgICA8L3Jvdz4K IAorICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaW5rIGxpbmtlbmQ9InZpZXctcGctd2Fp dC1ldmVudCI+PHN0cnVjdG5hbWU+cGdfd2FpdF9ldmVudDwvc3RydWN0bmFtZT48L2xpbms+ PC9lbnRyeT4KKyAgICAgIDxlbnRyeT53YWl0IGV2ZW50czwvZW50cnk+CisgICAgIDwvcm93 PgorCiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpAQCAtNDgyNSw0 ICs0ODMwLDYzIEBAIFNFTEVDVCAqIEZST00gcGdfbG9ja3MgcGwgTEVGVCBKT0lOIHBnX3By ZXBhcmVkX3hhY3RzIHBweAogICA8L3RhYmxlPgogIDwvc2VjdDE+CiAKKworIDxzZWN0MSBp ZD0idmlldy1wZy13YWl0LWV2ZW50Ij4KKyAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX3dhaXRf ZXZlbnQ8L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9InZpZXct cGctd2FpdC1ldmVudCI+CisgICA8cHJpbWFyeT5wZ193YWl0X2V2ZW50PC9wcmltYXJ5Pgor ICA8L2luZGV4dGVybT4KKworICA8cGFyYT4KKyAgIFRoZSB2aWV3IDxzdHJ1Y3RuYW1lPnBn X3dhaXRfZXZlbnQ8L3N0cnVjdG5hbWU+IHByb3ZpZGVzIGRlc2NyaXB0aW9uIGFib3V0IHRo ZQorICAgd2FpdCBldmVudHMuCisgIDwvcGFyYT4KKworICA8dGFibGU+CisgICA8dGl0bGU+ PHN0cnVjdG5hbWU+cGdfd2FpdF9ldmVudDwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+ CisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5f ZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5cGUKKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisgICAgPC90aGVhZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1 bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPndhaXRfZXZlbnRfdHlwZTwv c3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8 cGFyYT4KKyAgICAgICBXYWl0IGV2ZW50IHR5cGUKKyAgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2df dGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8 c3RydWN0ZmllbGQ+d2FpdF9ldmVudF9uYW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwv dHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFdhaXQgZXZlbnQg bmFtZQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5kZXNjcmlwdGlvbjwv c3RydWN0ZmllbGQ+IDx0eXBlPnRleHRlPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAg PHBhcmE+CisgICAgICAgV2FpdCBldmVudCBkZXNjcmlwdGlvbgorICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGJvZHk+CisgICA8L3Rncm91cD4KKyAgPC90 YWJsZT4KKyA8L3NlY3QxPgorCiA8L2NoYXB0ZXI+CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3Rl bV92aWV3cy5zcWwKaW5kZXggYWY2NWFmNmJkZC4uZjg2YTRkZDc3MCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTM0MiwzICsxMzQyLDYgQEAgQ1JFQVRF IFZJRVcgcGdfc3RhdF9zdWJzY3JpcHRpb25fc3RhdHMgQVMKICAgICAgICAgc3Muc3RhdHNf cmVzZXQKICAgICBGUk9NIHBnX3N1YnNjcmlwdGlvbiBhcyBzLAogICAgICAgICAgcGdfc3Rh dF9nZXRfc3Vic2NyaXB0aW9uX3N0YXRzKHMub2lkKSBhcyBzczsKKworQ1JFQVRFIFZJRVcg cGdfd2FpdF9ldmVudCBBUworICAgIFNFTEVDVCAqIEZST00gcGdfZ2V0X3dhaXRfZXZlbnRz KCkgQVMgd2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS8uZ2l0 aWdub3JlIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvLmdpdGlnbm9yZQppbmRleCBk NzcwNzkyODViLi5iZDBjMGM3NzcyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS8uZ2l0aWdub3JlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5Ly5n aXRpZ25vcmUKQEAgLTEsMiArMSwzIEBACiAvcGdzdGF0X3dhaXRfZXZlbnQuYwogL3dhaXRf ZXZlbnRfdHlwZXMuaAorL3dhaXRfZXZlbnRfZnVuY3NfZGF0YS5jCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3V0aWxz L2FjdGl2aXR5L01ha2VmaWxlCmluZGV4IGYxMTE3NzQ1ZDQuLjI4OWFmZTdjMmQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L01ha2VmaWxlCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L01ha2VmaWxlCkBAIC0zMiwxMCArMzIsMTQgQEAgT0JK UyA9IFwKIAlwZ3N0YXRfc3Vic2NyaXB0aW9uLm8gXAogCXBnc3RhdF93YWwubyBcCiAJcGdz dGF0X3hhY3QubyBcCisJd2FpdF9ldmVudF9mdW5jcy5vIFwKIAl3YWl0X2V2ZW50Lm8KIAog aW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2NvbW1vbi5tawogCit3YWl0X2V2 ZW50X2Z1bmNzLm86IHdhaXRfZXZlbnRfZnVuY3NfZGF0YS5jCit3YWl0X2V2ZW50X2Z1bmNz X2RhdGEuYzogd2FpdF9ldmVudF90eXBlcy5oCisKIHdhaXRfZXZlbnQubzogcGdzdGF0X3dh aXRfZXZlbnQuYwogcGdzdGF0X3dhaXRfZXZlbnQuYzogd2FpdF9ldmVudF90eXBlcy5oCiAJ dG91Y2ggJEAKQEAgLTQ0LDQgKzQ4LDQgQEAgd2FpdF9ldmVudF90eXBlcy5oOiAkKHRvcF9z cmNkaXIpL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHgK IAkkKFBFUkwpICQoc3JjZGlyKS9nZW5lcmF0ZS13YWl0X2V2ZW50X3R5cGVzLnBsIC0tY29k ZSAkPAogCiBtYWludGFpbmVyLWNsZWFuOiBjbGVhbgotCXJtIC1mIHdhaXRfZXZlbnRfdHlw ZXMuaCBwZ3N0YXRfd2FpdF9ldmVudC5jCisJcm0gLWYgd2FpdF9ldmVudF90eXBlcy5oIHBn c3RhdF93YWl0X2V2ZW50LmMgd2FpdF9ldmVudF9mdW5jc19kYXRhLmMKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2dlbmVyYXRlLXdhaXRfZXZlbnRfdHlwZXMu cGwgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9nZW5lcmF0ZS13YWl0X2V2ZW50X3R5 cGVzLnBsCmluZGV4IDU2MzM1ZTg3MzAuLjZmNGZjZDIyZDIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L2dlbmVyYXRlLXdhaXRfZXZlbnRfdHlwZXMucGwKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvZ2VuZXJhdGUtd2FpdF9ldmVudF90eXBl cy5wbApAQCAtNCw2ICs0LDcgQEAKICMgR2VuZXJhdGUgd2FpdCBldmVudHMgc3VwcG9ydCBm aWxlcyBmcm9tIHdhaXRfZXZlbnRfbmFtZXMudHh0OgogIyAtIHdhaXRfZXZlbnRfdHlwZXMu aCAoaWYgLS1jb2RlIGlzIHBhc3NlZCkKICMgLSBwZ3N0YXRfd2FpdF9ldmVudC5jIChpZiAt LWNvZGUgaXMgcGFzc2VkKQorIyAtIHdhaXRfZXZlbnRfZnVuY3NfZGF0YS5jIChpZiAtLWNv ZGUgaXMgcGFzc2VkKQogIyAtIHdhaXRfZXZlbnRfdHlwZXMuc2dtbCAoaWYgLS1kb2NzIGlz IHBhc3NlZCkKICMKICMgUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjMsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCkBAIC05OCw4ICs5OSwxMCBAQCBpZiAo JGdlbl9jb2RlKQogCSMgbXVsdGlwbGUgdGltZXMuCiAJbXkgJGh0bXAgPSAiJG91dHB1dF9w YXRoL3dhaXRfZXZlbnRfdHlwZXMuaC50bXAkJCI7CiAJbXkgJGN0bXAgPSAiJG91dHB1dF9w YXRoL3Bnc3RhdF93YWl0X2V2ZW50LmMudG1wJCQiOworCW15ICR3Y3RtcCA9ICIkb3V0cHV0 X3BhdGgvd2FpdF9ldmVudF9mdW5jc19kYXRhLmMudG1wJCQiOwogCW9wZW4gbXkgJGgsICc+ JywgJGh0bXAgb3IgZGllICJDb3VsZCBub3Qgb3BlbiAkaHRtcDogJCEiOwogCW9wZW4gbXkg JGMsICc+JywgJGN0bXAgb3IgZGllICJDb3VsZCBub3Qgb3BlbiAkY3RtcDogJCEiOworCW9w ZW4gbXkgJHdjLCAnPicsICR3Y3RtcCBvciBkaWUgIkNvdWxkIG5vdCBvcGVuICR3Y3RtcDog JCEiOwogCiAJbXkgJGhlYWRlcl9jb21tZW50ID0KIAkgICcvKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KQEAgLTEyOSwxMiArMTMyLDE0IEBAIGlmICgkZ2VuX2NvZGUpCiAKIAlwcmludGYgJGMg JGhlYWRlcl9jb21tZW50LCAncGdzdGF0X3dhaXRfZXZlbnQuYyc7CiAKKwlwcmludGYgJHdj ICRoZWFkZXJfY29tbWVudCwgJ3dhaXRfZXZlbnRfZnVuY3NfZGF0YS5jJzsKKworCSMgR2Vu ZXJhdGUgdGhlIHBnc3RhdF93YWl0X2V2ZW50LmMgYW5kIHdhaXRfZXZlbnRfdHlwZXMuaCBm aWxlcwogCSMgdWMoKSBpcyBiZWluZyB1c2VkIHRvIGZvcmNlIHRoZSBjb21wYXJpc29uIHRv IGJlIGNhc2UtaW5zZW5zaXRpdmUuCiAJZm9yZWFjaCBteSAkd2FpdGNsYXNzIChzb3J0IHsg dWMoJGEpIGNtcCB1YygkYikgfSBrZXlzICVoYXNod2UpCiAJewotCi0JCSMgRG9uJ3QgZ2Vu ZXJhdGUgLmMgYW5kIC5oIGZpbGVzIGZvciBFeHRlbnNpb24sIExXTG9jayBhbmQKLQkJIyBM b2NrLCB0aGVzZSBhcmUgaGFuZGxlZCBpbmRlcGVuZGVudGx5LgorCQkjIERvbid0IGdlbmVy YXRlIHRoZSBwZ3N0YXRfd2FpdF9ldmVudC5jIGFuZCB3YWl0X2V2ZW50X3R5cGVzLmggZmls ZXMKKwkJIyBmb3IgRXh0ZW5zaW9uLCBMV0xvY2sgYW5kIExvY2ssIHRoZXNlIGFyZSBoYW5k bGVkIGluZGVwZW5kZW50bHkuCiAJCW5leHQKIAkJICBpZiAoICR3YWl0Y2xhc3MgZXEgJ1dh aXRFdmVudEV4dGVuc2lvbicKIAkJCXx8ICR3YWl0Y2xhc3MgZXEgJ1dhaXRFdmVudExXTG9j aycKQEAgLTE4MywxNCArMTg4LDQ5IEBAIGlmICgkZ2VuX2NvZGUpCiAJCXByaW50ZiAkYyAi fVxuXG4iOwogCX0KIAorCSMgR2VuZXJhdGUgdGhlIHdhaXRfZXZlbnRfZnVuY3NfZGF0YS5j IGZpbGUKKwkjIHVjKCkgaXMgYmVpbmcgdXNlZCB0byBmb3JjZSB0aGUgY29tcGFyaXNvbiB0 byBiZSBjYXNlLWluc2Vuc2l0aXZlLgorCWZvcmVhY2ggbXkgJHdhaXRjbGFzcyAoc29ydCB7 IHVjKCRhKSBjbXAgdWMoJGIpIH0ga2V5cyAlaGFzaHdlKQorCXsKKwkJbXkgJGxhc3QgPSAk d2FpdGNsYXNzOworCQkkbGFzdCA9fiBzL15XYWl0RXZlbnQvLzsKKworCQlmb3JlYWNoIG15 ICR3ZXYgKEB7ICRoYXNod2V7JHdhaXRjbGFzc30gfSkKKwkJeworCQkJbXkgJG5ld19kZXNj ID0gc3Vic3RyICR3ZXYtPlsyXSwgMSwgLTI7CisJCQkjIHB1dCBhbiBlc2NhcGUgXCBpbiBm cm9udCBvZiAnCisJCQkkbmV3X2Rlc2MgPX4gcy8nL1xcJy9nOworCisJCQkjIGp1c3Qga2Vl cCB0ZXh0IGZyb20gPHdoYXRldmVyPnRleHQ8L3dhaHRldmVyPgorCQkJJG5ld19kZXNjID1+ IHMvPC4qPiguKj8pPC4qPi8kMS9nOworCisJCQkjIGp1c3Qga2VlcCB0ZXh0IGZyb20gPHhy ZWYgbGlua2VuZD0idGV4dCIvPgorCQkJJG5ld19kZXNjID1+IHMvPHhyZWYgbGlua2VuZD0i Z3VjLSguKj8pIlwvPi8kMS9nOworCisJCQkjIHJlbW92ZSBhbnkgInNlZSA8eHJlZiBsaW5r ZW5kPSJ0ZXh0Ii8+IgorCQkJJG5ld19kZXNjID1+IHMvOyBzZWUuKiQvLzsKKworCQkJcHJp bnRmICR3YyAiXHRlbGVtZW50ID0gKHdhaXRfZXZlbnRfZWxlbWVudCAqKSBwYWxsb2Moc2l6 ZW9mKHdhaXRfZXZlbnRfZWxlbWVudCkpO1xuIjsKKworCQkJcHJpbnRmICR3YyAiXHRlbGVt ZW50LT53YWl0X2V2ZW50X3R5cGUgPSBcIiVzXCI7XG4iLCAkbGFzdDsKKwkJCXByaW50ZiAk d2MgIlx0ZWxlbWVudC0+d2FpdF9ldmVudF9uYW1lID0gXCIlc1wiO1xuIiwgJHdldi0+WzFd OworCQkJcHJpbnRmICR3YyAiXHRlbGVtZW50LT53YWl0X2V2ZW50X2Rlc2NyaXB0aW9uID0g XCIlc1wiO1xuXG4iLCAkbmV3X2Rlc2M7CisKKwkJCXByaW50ZiAkd2MgIlx0d2FpdF9ldmVu dCA9IGxhcHBlbmQod2FpdF9ldmVudCwgZWxlbWVudCk7XG5cbiI7CisJCX0KKwl9CisKIAlw cmludGYgJGggIiNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogV0FJVF9FVkVO VF9UWVBFU19IICovXG4iOwogCWNsb3NlICRoOwogCWNsb3NlICRjOworCWNsb3NlICR3YzsK IAogCXJlbmFtZSgkaHRtcCwgIiRvdXRwdXRfcGF0aC93YWl0X2V2ZW50X3R5cGVzLmgiKQog CSAgfHwgZGllICJyZW5hbWU6ICRodG1wIHRvICRvdXRwdXRfcGF0aC93YWl0X2V2ZW50X3R5 cGVzLmg6ICQhIjsKIAlyZW5hbWUoJGN0bXAsICIkb3V0cHV0X3BhdGgvcGdzdGF0X3dhaXRf ZXZlbnQuYyIpCiAJICB8fCBkaWUgInJlbmFtZTogJGN0bXAgdG8gJG91dHB1dF9wYXRoL3Bn c3RhdF93YWl0X2V2ZW50LmM6ICQhIjsKKwlyZW5hbWUoJHdjdG1wLCAiJG91dHB1dF9wYXRo L3dhaXRfZXZlbnRfZnVuY3NfZGF0YS5jIikKKwkgIHx8IGRpZSAicmVuYW1lOiAkY3RtcCB0 byAkb3V0cHV0X3BhdGgvd2FpdF9ldmVudF9mdW5jc19kYXRhLmM6ICQhIjsKIH0KICMgR2Vu ZXJhdGUgdGhlIC5zZ21sIGZpbGUuCiBlbHNpZiAoJGdlbl9kb2NzKQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS9tZXNvbi5idWlsZAppbmRleCA5NjMzZjM2MjNjLi40NmEyN2U3NTQ4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9tZXNvbi5idWlsZAor KysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9tZXNvbi5idWlsZApAQCAtMjMsNiAr MjMsNyBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAjIHNlZW1zIG5pY2VyIHRvIG5v dCBhZGQgdGhhdCBhcyBhbiBpbmNsdWRlIHBhdGggZm9yIHRoZSB3aG9sZSBiYWNrZW5kLgog d2FpdGV2ZW50X3NvdXJjZXMgPSBmaWxlcygKICAgJ3dhaXRfZXZlbnQuYycsCisgICd3YWl0 X2V2ZW50X2Z1bmNzLmMnLAogKQogCiB3YWl0X2V2ZW50ID0gc3RhdGljX2xpYnJhcnkoJ3dh aXRfZXZlbnRfbmFtZXMnLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvd2FpdF9ldmVudF9mdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudF9mdW5jcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LjNlMjdhNjM3ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS93YWl0X2V2ZW50X2Z1bmNzLmMKQEAgLTAsMCArMSw2OSBAQAorLyogLS0tLS0tLS0t LQorICogd2FpdF9ldmVudF9mdW5jcy5jCisgKiAgICBXYWl0IGV2ZW50IHJlcG9ydGluZyBp bmZyYXN0cnVjdHVyZS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAyMywgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKgorICogSURFTlRJRklDQVRJ T04KKyAqICAgIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfZnVuY3Mu YworICoKKyAqIE5PVEVTCisgKgorICogVGhlICJ3YWl0X2V2ZW50X2Z1bmNzX2RhdGEuYyIg aW5jbHVkZWQgaW4gdGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieQorICogICAgICAgICAgICAg ICAgICAgICAgc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvZ2VuZXJhdGUtd2FpdF9ldmVu dF90eXBlcy5wbAorICoKKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRl ICJmdW5jYXBpLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKworLyoKKyAqIFRo aXMgZnVuY3Rpb24gbGlzdHMgdGhlIHdhaXQgZXZlbnRzIGFuZCB0aGVpciBkZXNjcmlwdGlv bnMuCisgKgorICogVGhlIHN5c3RlbSB2aWV3IHBnX3dhaXRfZXZlbnQgcHJvdmlkZXMgYSB1 c2VyIGludGVyZmFjZSB0byB0aGlzCisgKiBTUkYuCisgKi8KK0RhdHVtCitwZ19nZXRfd2Fp dF9ldmVudHMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKyNkZWZpbmUgTlVNX1dBSVRfRVZFTlRf VEFCTEVTX0VMRU0gMworCVJldHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJbmZv ICopIGZjaW5mby0+cmVzdWx0aW5mbzsKKwlEYXR1bSAgICAgICB2YWx1ZXNbTlVNX1dBSVRf RVZFTlRfVEFCTEVTX0VMRU1dOworCWJvb2wgICAgICAgIG51bGxzW05VTV9XQUlUX0VWRU5U X1RBQkxFU19FTEVNXTsKKwlMaXN0ICp3YWl0X2V2ZW50ID0gTklMOworCUxpc3RDZWxsICAg KmNlbGw7CisKKwl0eXBlZGVmIHN0cnVjdAorCXsKKwkJY2hhciAqd2FpdF9ldmVudF90eXBl OworCQljaGFyICp3YWl0X2V2ZW50X25hbWU7CisJCWNoYXIgKndhaXRfZXZlbnRfZGVzY3Jp cHRpb247CisJfSB3YWl0X2V2ZW50X2VsZW1lbnQ7CisKKwl3YWl0X2V2ZW50X2VsZW1lbnQg KmVsZW1lbnQgPSBOVUxMOworCS8qIEJ1aWxkIHR1cGxlc3RvcmUgdG8gaG9sZCB0aGUgcmVz dWx0IHJvd3MgKi8KKwlJbml0TWF0ZXJpYWxpemVkU1JGKGZjaW5mbywgMCk7CisKKwkvKiBQ b3B1bGF0ZSB0aGUgd2FpdF9ldmVudCBMaXN0ICovCisJI2luY2x1ZGUgIndhaXRfZXZlbnRf ZnVuY3NfZGF0YS5jIgorCisJLyogSXRlcmF0ZSBvdmVyIHRoZSBsaXN0IG9mIHdhaXQgZXZl bnRzICovCisJZm9yZWFjaChjZWxsLCB3YWl0X2V2ZW50KQorCXsKKworCQl3YWl0X2V2ZW50 X2VsZW1lbnQgKmVsZW0gPSBsZmlyc3QoY2VsbCk7CisKKwkJbWVtc2V0KHZhbHVlcywgMCwg c2l6ZW9mKHZhbHVlcykpOworCQltZW1zZXQobnVsbHMsIDAsIHNpemVvZihudWxscykpOwor CisJCXZhbHVlc1swXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oZWxlbS0+d2FpdF9ldmVudF90 eXBlKTsKKwkJdmFsdWVzWzFdID0gQ1N0cmluZ0dldFRleHREYXR1bShlbGVtLT53YWl0X2V2 ZW50X25hbWUpOworCQl2YWx1ZXNbMl0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGVsZW0tPndh aXRfZXZlbnRfZGVzY3JpcHRpb24pOworCisJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5m by0+c2V0UmVzdWx0LCByc2luZm8tPnNldERlc2MsIHZhbHVlcywgbnVsbHMpOworCX0KKwor CXJldHVybiAoRGF0dW0pIDA7Cit9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA2 OTk2MDczOTg5Li42ZDEwZDJlNWJlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAg LTU0MTcsNiArNTQxNywxMiBAQAogICBwcm9hcmdtb2RlcyA9PiAne2ksbyxvLG8sbyxvLG8s byxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sb30nLAog ICBwcm9hcmduYW1lcyA9PiAne3BpZCxkYXRpZCxwaWQsdXNlc3lzaWQsYXBwbGljYXRpb25f bmFtZSxzdGF0ZSxxdWVyeSx3YWl0X2V2ZW50X3R5cGUsd2FpdF9ldmVudCx4YWN0X3N0YXJ0 LHF1ZXJ5X3N0YXJ0LGJhY2tlbmRfc3RhcnQsc3RhdGVfY2hhbmdlLGNsaWVudF9hZGRyLGNs aWVudF9ob3N0bmFtZSxjbGllbnRfcG9ydCxiYWNrZW5kX3hpZCxiYWNrZW5kX3htaW4sYmFj a2VuZF90eXBlLHNzbCxzc2x2ZXJzaW9uLHNzbGNpcGhlcixzc2xiaXRzLHNzbF9jbGllbnRf ZG4sc3NsX2NsaWVudF9zZXJpYWwsc3NsX2lzc3Vlcl9kbixnc3NfYXV0aCxnc3NfcHJpbmMs Z3NzX2VuYyxnc3NfZGVsZWdhdGlvbixsZWFkZXJfcGlkLHF1ZXJ5X2lkfScsCiAgIHByb3Ny YyA9PiAncGdfc3RhdF9nZXRfYWN0aXZpdHknIH0sCit7IG9pZCA9PiAnODQwMycsIGRlc2Ny ID0+ICdkZXNjcmliZSB3YWl0IGV2ZW50cycsCisgIHByb25hbWUgPT4gJ3BnX2dldF93YWl0 X2V2ZW50cycsIHByb2Nvc3QgPT4gJzEwJywgcHJvcm93cyA9PiAnMTAwJywKKyAgcHJvcmV0 c2V0ID0+ICd0JywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICdyZWNvcmQn LAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvYWxsYXJndHlwZXMgPT4gJ3t0ZXh0LHRleHQs dGV4dH0nLAorICBwcm9hcmdtb2RlcyA9PiAne28sbyxvfScsIHByb2FyZ25hbWVzID0+ICd7 d2FpdF9ldmVudF90eXBlLHdhaXRfZXZlbnRfbmFtZSxkZXNjcmlwdGlvbn0nLAorICBwcm9z cmMgPT4gJ3BnX2dldF93YWl0X2V2ZW50cycgfSwKIHsgb2lkID0+ICczMzE4JywKICAgZGVz Y3IgPT4gJ3N0YXRpc3RpY3M6IGluZm9ybWF0aW9uIGFib3V0IHByb2dyZXNzIG9mIGJhY2tl bmRzIHJ1bm5pbmcgbWFpbnRlbmFuY2UgY29tbWFuZCcsCiAgIHByb25hbWUgPT4gJ3BnX3N0 YXRfZ2V0X3Byb2dyZXNzX2luZm8nLCBwcm9yb3dzID0+ICcxMDAnLCBwcm9yZXRzZXQgPT4g J3QnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbWVzb24uYnVpbGQgYi9zcmMv aW5jbHVkZS91dGlscy9tZXNvbi5idWlsZAppbmRleCA2ZGU1ZDkzNzk5Li5jMTc5NDc4NjEx IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9tZXNvbi5idWlsZAorKysgYi9zcmMv aW5jbHVkZS91dGlscy9tZXNvbi5idWlsZApAQCAtMSw2ICsxLDYgQEAKICMgQ29weXJpZ2h0 IChjKSAyMDIyLTIwMjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAK LXdhaXRfZXZlbnRfb3V0cHV0ID0gWyd3YWl0X2V2ZW50X3R5cGVzLmgnLCAncGdzdGF0X3dh aXRfZXZlbnQuYyddCit3YWl0X2V2ZW50X291dHB1dCA9IFsnd2FpdF9ldmVudF90eXBlcy5o JywgJ3Bnc3RhdF93YWl0X2V2ZW50LmMnLCAnd2FpdF9ldmVudF9mdW5jc19kYXRhLmMnXQog d2FpdF9ldmVudF90YXJnZXQgPSBjdXN0b21fdGFyZ2V0KCd3YWl0X2V2ZW50X25hbWVzJywK ICAgaW5wdXQ6IGZpbGVzKCcuLi8uLi9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZl bnRfbmFtZXMudHh0JyksCiAgIG91dHB1dDogd2FpdF9ldmVudF9vdXRwdXQsCkBAIC0xMSw3 ICsxMSw3IEBAIHdhaXRfZXZlbnRfdGFyZ2V0ID0gY3VzdG9tX3RhcmdldCgnd2FpdF9ldmVu dF9uYW1lcycsCiAgIF0sCiAgIGJ1aWxkX2J5X2RlZmF1bHQ6IHRydWUsCiAgIGluc3RhbGw6 IHRydWUsCi0gIGluc3RhbGxfZGlyOiBbZGlyX2luY2x1ZGVfc2VydmVyIC8gJ3V0aWxzJywg ZmFsc2VdLAorICBpbnN0YWxsX2RpcjogW2Rpcl9pbmNsdWRlX3NlcnZlciAvICd1dGlscycs IGZhbHNlLCBmYWxzZV0sCiApCiAKIHdhaXRfZXZlbnRfdHlwZXNfaCA9IHdhaXRfZXZlbnRf dGFyZ2V0WzBdCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVz Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IGUwN2Fm Y2Q0YWEuLmYxNjBjYjU2NDIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0 CkBAIC0yNjMxLDYgKzI2MzEsMTAgQEAgcGdfdmlld3N8IFNFTEVDVCBuLm5zcG5hbWUgQVMg c2NoZW1hbmFtZSwKICAgIEZST00gKHBnX2NsYXNzIGMKICAgICAgTEVGVCBKT0lOIHBnX25h bWVzcGFjZSBuIE9OICgobi5vaWQgPSBjLnJlbG5hbWVzcGFjZSkpKQogICBXSEVSRSAoYy5y ZWxraW5kID0gJ3YnOjoiY2hhciIpOworcGdfd2FpdF9ldmVudHwgU0VMRUNUIHdhaXRfZXZl bnRfdHlwZSwKKyAgICB3YWl0X2V2ZW50X25hbWUsCisgICAgZGVzY3JpcHRpb24KKyAgIEZS T00gcGdfZ2V0X3dhaXRfZXZlbnRzKCkgd2Uod2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50 X25hbWUsIGRlc2NyaXB0aW9uKTsKIFNFTEVDVCB0YWJsZW5hbWUsIHJ1bGVuYW1lLCBkZWZp bml0aW9uIEZST00gcGdfcnVsZXMKIFdIRVJFIHNjaGVtYW5hbWUgPSAncGdfY2F0YWxvZycK IE9SREVSIEJZIHRhYmxlbmFtZSwgcnVsZW5hbWU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvc3lzdmlld3Mub3V0CmluZGV4IDAwMWM2ZTdlYjkuLjdhY2U3N2Q3MTQgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CkBAIC0xMzQsNiArMTM0LDEzIEBA IHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZyb20gcGdfc2V0dGluZ3Mgd2hlcmUgbmFtZSBsaWtl ICdlbmFibGUlJzsKICBlbmFibGVfdGlkc2NhbiAgICAgICAgICAgICAgICAgfCBvbgogKDIx IHJvd3MpCiAKKy0tIFRoZXJlIGlzIHdhaXQgZXZlbnQgZGVzY3JpcHRpb25zCitzZWxlY3Qg Y291bnQoKikgPiAwIGFzIG9rICBGUk9NIHBnX3dhaXRfZXZlbnQ7Cisgb2sgCistLS0tCisg dAorKDEgcm93KQorCiAtLSBUZXN0IHRoYXQgdGhlIHBnX3RpbWV6b25lX25hbWVzIGFuZCBw Z190aW1lem9uZV9hYmJyZXZzIHZpZXdzIGFyZQogLS0gbW9yZS1vci1sZXNzIHdvcmtpbmcu ICBXZSBjYW4ndCB0ZXN0IHRoZWlyIGNvbnRlbnRzIGluIGFueSBncmVhdCBkZXRhaWwKIC0t IHdpdGhvdXQgdGhlIG91dHB1dHMgY2hhbmdpbmcgYW55dGltZSBJQU5BIHVwZGF0ZXMgdGhl IHVuZGVybHlpbmcgZGF0YSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N5 c3ZpZXdzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N5c3ZpZXdzLnNxbAppbmRleCAz NTFlNDY5Yzc3Li42NDNkZmNjMWQzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9zeXN2aWV3cy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3lzdmlld3Muc3Fs CkBAIC01NSw2ICs1NSw5IEBAIHNlbGVjdCBjb3VudCgqKSA9IDAgYXMgb2sgZnJvbSBwZ19z dGF0X3dhbF9yZWNlaXZlcjsKIC0tIGEgcmVncmVzc2lvbiB0ZXN0IHJ1bi4KIHNlbGVjdCBu YW1lLCBzZXR0aW5nIGZyb20gcGdfc2V0dGluZ3Mgd2hlcmUgbmFtZSBsaWtlICdlbmFibGUl JzsKIAorLS0gVGhlcmUgaXMgd2FpdCBldmVudCBkZXNjcmlwdGlvbnMKK3NlbGVjdCBjb3Vu dCgqKSA+IDAgYXMgb2sgIEZST00gcGdfd2FpdF9ldmVudDsKKwogLS0gVGVzdCB0aGF0IHRo ZSBwZ190aW1lem9uZV9uYW1lcyBhbmQgcGdfdGltZXpvbmVfYWJicmV2cyB2aWV3cyBhcmUK IC0tIG1vcmUtb3ItbGVzcyB3b3JraW5nLiAgV2UgY2FuJ3QgdGVzdCB0aGVpciBjb250ZW50 cyBpbiBhbnkgZ3JlYXQgZGV0YWlsCiAtLSB3aXRob3V0IHRoZSBvdXRwdXRzIGNoYW5naW5n IGFueXRpbWUgSUFOQSB1cGRhdGVzIHRoZSB1bmRlcmx5aW5nIGRhdGEsCmRpZmYgLS1naXQg YS9zcmMvdG9vbHMvbXN2Yy9jbGVhbi5iYXQgYi9zcmMvdG9vbHMvbXN2Yy9jbGVhbi5iYXQK aW5kZXggN2NiMjNlYTg5NC4uYWM4ZGE1ODFlNCAxMDA3NTUKLS0tIGEvc3JjL3Rvb2xzL21z dmMvY2xlYW4uYmF0CisrKyBiL3NyYy90b29scy9tc3ZjL2NsZWFuLmJhdApAQCAtNTUsNiAr NTUsNyBAQCBpZiBleGlzdCBzcmNcaW5jbHVkZVxjYXRhbG9nXGhlYWRlci1zdGFtcCBkZWwg L3Egc3JjXGluY2x1ZGVcY2F0YWxvZ1xoZWFkZXItc3RhbQogaWYgZXhpc3QgZG9jXHNyY1xz Z21sXHZlcnNpb24uc2dtbCBkZWwgL3EgZG9jXHNyY1xzZ21sXHZlcnNpb24uc2dtbAogCiBp ZiAlRElTVCU9PTEgaWYgZXhpc3Qgc3JjXGJhY2tlbmRcdXRpbHNcYWN0aXZpdHlccGdzdGF0 X3dhaXRfZXZlbnQuYyBkZWwgL3Egc3JjXGJhY2tlbmRcdXRpbHNcYWN0aXZpdHlccGdzdGF0 X3dhaXRfZXZlbnQuYworaWYgJURJU1QlPT0xIGlmIGV4aXN0IHNyY1xiYWNrZW5kXHV0aWxz XGFjdGl2aXR5XHdhaXRfZXZlbnRfZnVuY3NfZGF0YS5jIGRlbCAvcSBzcmNcYmFja2VuZFx1 dGlsc1xhY3Rpdml0eVx3YWl0X2V2ZW50X2Z1bmNzX2RhdGEuYwogaWYgJURJU1QlPT0xIGlm IGV4aXN0IHNyY1xiYWNrZW5kXHV0aWxzXGFjdGl2aXR5XHdhaXRfZXZlbnRfdHlwZXMuaCBk ZWwgL3Egc3JjXGJhY2tlbmRcdXRpbHNcYWN0aXZpdHlcd2FpdF9ldmVudF90eXBlcy5oCiBp ZiAlRElTVCU9PTEgaWYgZXhpc3Qgc3JjXGJhY2tlbmRcdXRpbHNcZm1ncm9pZHMuaCBkZWwg L3Egc3JjXGJhY2tlbmRcdXRpbHNcZm1ncm9pZHMuaAogaWYgJURJU1QlPT0xIGlmIGV4aXN0 IHNyY1xiYWNrZW5kXHV0aWxzXGZtZ3Jwcm90b3MuaCBkZWwgL3Egc3JjXGJhY2tlbmRcdXRp bHNcZm1ncnByb3Rvcy5oCi0tIAoyLjM0LjEKCg== --------------g0MXu4FADqKqK5DQv3TOGSns--