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 1uytXY-00EBrc-Rq for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Sep 2025 14:53:49 +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 1uytXW-008FAD-MK for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Sep 2025 14:53:47 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uytXV-008F9y-Dp for pgsql-hackers@lists.postgresql.org; Wed, 17 Sep 2025 14:53:47 +0000 Received: from fout-a1-smtp.messagingengine.com ([103.168.172.144]) by makus.postgresql.org with smtp (Exim 4.96) (envelope-from ) id 1uytXT-000vCN-2I for pgsql-hackers@lists.postgresql.org; Wed, 17 Sep 2025 14:53:45 +0000 Received: from phl-compute-01.internal (phl-compute-01.internal [10.202.2.41]) by mailfout.phl.internal (Postfix) with ESMTP id DA0CDEC02CA; Wed, 17 Sep 2025 10:53:42 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-01.internal (MEProxy); Wed, 17 Sep 2025 10:53:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burd.me; h=cc:cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm1; t=1758120822; x=1758207222; bh=/T3T6XGIyq 1CURK0trvng8yNe24HQOzEGEEC8LeL+Rg=; b=tk4qkxfg6UHDqgyNDFVdfvcpFK X+Am5h1QzxVWqcI+WpyxBfwkIBuFuRh+vRtRHujtgWYdEvTJWG53n+pM3py+UK6q B/jniFF15dD9mUA4t8ij3EWbtmLQt5pLZ3dv9IjeRs0fas7VsX8b9VoPB4JwHBop MwRw8n7DrdwmeDF73jWFocJVU7pLH8T3DTMXUAontqxASXoAph9UNHRlkaCQHN6E N5/a5yMikyvaCOwMYMo6rZlnb9w+e098r3yuhnVYpYLkIG9hH1ql4wrd/kUT7aXK T5qdyfB3VTsfeHlnB3oe/TuFvQey09VDrksQBKPTb7ThQzKGmlUn1DtWlN5A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1758120822; x=1758207222; bh=/T3T6XGIyq1CURK0trvng8yNe24HQOzEGEE C8LeL+Rg=; b=WsO+aQ9rCfWPsh48Ni2GfLKu1WTNe8uUhfdCv+VATeZugEVszBD Seot/HxnoKKexRzngxmI6CbMOHrPAiucHFK2l+0IySGXX4szyyTL+mgwGeJk1DFf mzqJmzzf7nWcw6yifIfJnUPVYq4h5N+KhwsVUiBXUzgZMH78lBEjqPNqBjII6zHH BAEsRAW5UNqboFAivqKdbXK5iKbbfJBbAr6EGLhgPpBORms6xNMDfB7N2gQvMuEg LT5Y7T4Ce4grvGFxCKXnyWMM7/ZtagVzQKEeRiYNV1DZNPtW0etk9ytzzyS6icjP rVsqO3wZ7iuqJX0GWnF4swXsYyLl1siRS3g== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggdegfeejgecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpeffhffvvefkjghfuffogggtsehmtdhmreertdejnecuhfhrohhmpefirhgvghcuuehu rhguuceoghhrvghgsegsuhhrugdrmhgvqeenucggtffrrghtthgvrhhnpeehtdeguefhgf egteetleeiuddvueekgeevtddujeefieffteeggfeigfelhfffhfenucffohhmrghinhep vghnthgvrhhprhhishgvuggsrdgtohhmnecuvehluhhsthgvrhfuihiivgeptdenucfrrg hrrghmpehmrghilhhfrhhomhepghhrvghgsegsuhhrugdrmhgvpdhnsggprhgtphhtthho peehpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehrohgsvghrthhmhhgrrghsse hgmhgrihhlrdgtohhmpdhrtghpthhtohepmhhitghhrggvlhesphgrqhhuihgvrhdrgiih iidprhgtphhtthhopehpghhsqhhlqdhhrggtkhgvrhhssehlihhsthhsrdhpohhsthhgrh gvshhqlhdrohhrghdprhgtphhtthhopehnrghthhgrnhgusghoshhsrghrthesghhmrghi lhdrtghomhdprhgtphhtthhopehsrgifrggurgdrmhhshhhksehgmhgrihhlrdgtohhm X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 17 Sep 2025 10:53:42 -0400 (EDT) Date: Wed, 17 Sep 2025 10:53:26 -0400 From: Greg Burd To: Robert Haas Cc: Michael Paquier , PostgreSQL Hackers , Nathan Bossart , Masahiko Sawada Message-ID: In-Reply-To: References: Subject: Re: [PATCH] Add tests for Bitmapset X-Mailer: Mailspring MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="68cacb66_684c0663_6415" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --68cacb66_684c0663_6415 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline On Sep 17 2025, at 9:55 am, Robert Haas wrote: > On Wed, Sep 17, 2025 at 9:18=E2=80=AFAM Greg Burd wrot= e: >> > +static void >> > +elog=5Fbitmapset(int elevel, const char *label, const Bitmapset *bm= s) >> > >> =20 >> I added a function bms=5Fvalues() that prints out the values contained= in >> a bitmapset and changed a few tests to use it. I removed the >> elog=5Fbitmapset() as it isn't being used and now that it's easy to ou= tput >> the set in SQL why keep it for debugging=3F > =20 > How about using outBitmapset() which already exists=3F Robert, Thanks for chiming in, not sure how I missed that one. :) > -- =20 > Robert Haas > EDB: http://www.enterprisedb.com I've updated the hash value for 32bit systems and changed the bms=5Fvalues() function to use outBitmapset() via bmsToString(). best. -greg --68cacb66_684c0663_6415 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v6-0001-Add-a-module-that-tests-Bitmapset.patch" RnJvbSAyYmExNmZhMzE0YjAxOTMxYTdmZTIwYmVjMGUyOTE3MjM3ZGY4OGVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTogV2VkLCAx MyBBdWcgMjAyNSAxNTo0MDozMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjZdIEFkZCBhIG1vZHVs ZSB0aGF0IHRlc3RzIEJpdG1hcHNldAoKQmFzaWMgdGVzdHMgZm9yIEJpdG1hcHNldCB0byBlbnN1 cmUgZnVuY3Rpb25hbGl0eSBhbmQgaGVscCBwcmV2ZW50CnVuaW50ZW50aW9uYWwgYnJlYWtpbmcg Y2hhbmdlcyBpbiB0aGUgZnV0dXJlLgotLS0KIHNyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZCAg ICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0 Ly5naXRpZ25vcmUgICAgfCAgICA0ICsKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQv TWFrZWZpbGUgICAgICB8ICAgMjMgKwogLi4uL2V4cGVjdGVkL3Rlc3RfYml0bWFwc2V0Lm91dCAg ICAgICAgICAgICAgIHwgIDYzNCArKysrKysrKysrCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0 bWFwc2V0L21lc29uLmJ1aWxkICAgfCAgIDMzICsKIC4uLi90ZXN0X2JpdG1hcHNldC9zcWwvdGVz dF9iaXRtYXBzZXQuc3FsICAgICB8ICAzNzIgKysrKysrCiAuLi4vdGVzdF9iaXRtYXBzZXQvdGVz dF9iaXRtYXBzZXQtLTEuMC5zcWwgICAgfCAgMTU1ICsrKwogLi4uL21vZHVsZXMvdGVzdF9iaXRt YXBzZXQvdGVzdF9iaXRtYXBzZXQuYyAgIHwgMTA3OSArKysrKysrKysrKysrKysrKwogLi4uL3Rl c3RfYml0bWFwc2V0L3Rlc3RfYml0bWFwc2V0LmNvbnRyb2wgICAgIHwgICAgNCArCiAxMCBmaWxl cyBjaGFuZ2VkLCAyMzA2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0Ly5naXRpZ25vcmUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC9leHBlY3RlZC90ZXN0X2JpdG1hcHNl dC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0 L21lc29uLmJ1aWxkCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Jp dG1hcHNldC9zcWwvdGVzdF9iaXRtYXBzZXQuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1hcHNldC0tMS4wLnNxbAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvdGVzdF9iaXRtYXBz ZXQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQv dGVzdF9iaXRtYXBzZXQuY29udHJvbAoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvTWFr ZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCmluZGV4IDkwM2E4YWMxNTFhLi45NDA3 MWVjMGUxNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQorKysgYi9zcmMv dGVzdC9tb2R1bGVzL01ha2VmaWxlCkBAIC0xNiw2ICsxNiw3IEBAIFNVQkRJUlMgPSBcCiAJCSAg c3BnaXN0X25hbWVfb3BzIFwKIAkJICB0ZXN0X2FpbyBcCiAJCSAgdGVzdF9iaW5hcnloZWFwIFwK KwkJICB0ZXN0X2JpdG1hcHNldCBcCiAJCSAgdGVzdF9ibG9vbWZpbHRlciBcCiAJCSAgdGVzdF9j b3B5X2NhbGxiYWNrcyBcCiAJCSAgdGVzdF9jdXN0b21fcm1ncnMgXApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQK aW5kZXggOTNiZTBmNTcyODkuLmQ4ZjVjOWM3NDk0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1 bGVzL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKQEAgLTE1 LDYgKzE1LDcgQEAgc3ViZGlyKCdzcGdpc3RfbmFtZV9vcHMnKQogc3ViZGlyKCdzc2xfcGFzc3Bo cmFzZV9jYWxsYmFjaycpCiBzdWJkaXIoJ3Rlc3RfYWlvJykKIHN1YmRpcigndGVzdF9iaW5hcnlo ZWFwJykKK3N1YmRpcigndGVzdF9iaXRtYXBzZXQnKQogc3ViZGlyKCd0ZXN0X2Jsb29tZmlsdGVy JykKIHN1YmRpcigndGVzdF9jb3B5X2NhbGxiYWNrcycpCiBzdWJkaXIoJ3Rlc3RfY3VzdG9tX3Jt Z3JzJykKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvLmdpdGln bm9yZSBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvLmdpdGlnbm9yZQpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWRjYjNmZjk3MjMKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0Ly5naXRpZ25vcmUKQEAgLTAs MCArMSw0IEBACisjIEdlbmVyYXRlZCBzdWJkaXJlY3RvcmllcworL2xvZy8KKy9yZXN1bHRzLwor L3RtcF9jaGVjay8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQv TWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L01ha2VmaWxlCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42NzE5OWQ0MGQ3MwotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvTWFrZWZpbGUKQEAgLTAs MCArMSwyMyBAQAorIyBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L01ha2VmaWxlCisK K01PRFVMRV9iaWcgPSB0ZXN0X2JpdG1hcHNldAorT0JKUyA9IFwKKwkkKFdJTjMyUkVTKSBcCisJ dGVzdF9iaXRtYXBzZXQubworUEdGSUxFREVTQyA9ICJ0ZXN0X2JpdG1hcHNldCAtIHRlc3QgY29k ZSBmb3Igc3JjL2luY2x1ZGUvbm9kZXMvYml0bWFwc2V0LmgiCisKK0VYVEVOU0lPTiA9IHRlc3Rf Yml0bWFwc2V0CitEQVRBID0gdGVzdF9iaXRtYXBzZXQtLTEuMC5zcWwKKworUkVHUkVTUyA9IHRl c3RfYml0bWFwc2V0CisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19jb25maWcKK1BH WFMgOj0gJChzaGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMpCitlbHNl CitzdWJkaXIgPSBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0Cit0b3BfYnVpbGRkaXIg PSAuLi8uLi8uLi8uLgoraW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2Jh bAoraW5jbHVkZSAkKHRvcF9zcmNkaXIpL2NvbnRyaWIvY29udHJpYi1nbG9iYWwubWsKK2VuZGlm CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L2V4cGVjdGVkL3Rl c3RfYml0bWFwc2V0Lm91dCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvZXhwZWN0 ZWQvdGVzdF9iaXRtYXBzZXQub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5lNjA5ZWMxYzVlNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9iaXRtYXBzZXQvZXhwZWN0ZWQvdGVzdF9iaXRtYXBzZXQub3V0CkBAIC0wLDAgKzEsNjM0IEBA CitDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgdGVzdF9iaXRtYXBzZXQ7CistLSBCQVNJ QyBGVU5DVElPTkFMSVRZIFRFU1RTCistLSBUZXN0IGJtc192YWx1ZXMgZnVuY3Rpb24KK1NFTEVD VCAndmFsdWVzIE5VTEwnIGFzIHRlc3QsIGJtc192YWx1ZXMoTlVMTCkgYXMgcmVzdWx0OworICAg IHRlc3QgICAgIHwgcmVzdWx0IAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIHZhbHVlcyBOVUxM IHwgKGIpCisoMSByb3cpCisKK1NFTEVDVCAndmFsdWVzIGVtcHR5JyBhcyB0ZXN0LCBibXNfdmFs dWVzKHRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbXTo6aW50ZWdlcltdKSkgYXMgcmVzdWx0Owor ICAgICB0ZXN0ICAgICB8IHJlc3VsdCAKKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgdmFsdWVz IGVtcHR5IHwgKGIpCisoMSByb3cpCisKK1NFTEVDVCAndmFsdWVzIHNpbmdsZXRvbicgYXMgdGVz dCwgYm1zX3ZhbHVlcyh0ZXN0X2Jtc19tYWtlX3NpbmdsZXRvbig0MikpIGFzIHJlc3VsdDsKKyAg ICAgICB0ZXN0ICAgICAgIHwgcmVzdWx0IAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisg dmFsdWVzIHNpbmdsZXRvbiB8IChiIDQyKQorKDEgcm93KQorCitTRUxFQ1QgJ3ZhbHVlcyBzbWFs bCBzZXQnIGFzIHRlc3QsIGJtc192YWx1ZXModGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDMs NV0pKSBhcyByZXN1bHQ7CisgICAgICAgdGVzdCAgICAgICB8ICByZXN1bHQgICAKKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIHZhbHVlcyBzbWFsbCBzZXQgfCAoYiAxIDMgNSkKKygx IHJvdykKKworU0VMRUNUICd2YWx1ZXMgbGFyZ2VyIHNldCcgYXMgdGVzdCwgYm1zX3ZhbHVlcyh0 ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzAsNSwxMCwxNSwyMF0pKSBhcyByZXN1bHQ7CisgICAg ICAgdGVzdCAgICAgICAgfCAgICAgIHJlc3VsdCAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0KKyB2YWx1ZXMgbGFyZ2VyIHNldCB8IChiIDAgNSAxMCAxNSAyMCkK KygxIHJvdykKKworU0VMRUNUICd2YWx1ZXMgdW5zb3J0ZWQgaW5wdXQnIGFzIHRlc3QsIGJtc192 YWx1ZXModGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsyMCw1LDE1LDAsMTBdKSkgYXMgcmVzdWx0 OworICAgICAgICAgdGVzdCAgICAgICAgICB8ICAgICAgcmVzdWx0ICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB2YWx1ZXMgdW5zb3J0ZWQgaW5wdXQg fCAoYiAwIDUgMTAgMTUgMjApCisoMSByb3cpCisKKy0tIFRlc3QgMTogQmFzaWMgdXRpbGl0eSBm dW5jdGlvbnMKK1NFTEVDVCAnTlVMTCBpbnB1dCB0byBmcm9tX2FycmF5JyBhcyB0ZXN0LCB0ZXN0 X2Jtc19mcm9tX2FycmF5KE5VTEwpIElTIE5VTEwgYXMgcmVzdWx0OworICAgICAgICAgICB0ZXN0 ICAgICAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t CisgTlVMTCBpbnB1dCB0byBmcm9tX2FycmF5IHwgdAorKDEgcm93KQorCitTRUxFQ1QgJ0VtcHR5 IGFycmF5IHRvIGZyb21fYXJyYXknIGFzIHRlc3QsIHRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlb XTo6aW50ZWdlcltdKSBJUyBOVUxMIGFzIHJlc3VsdDsKKyAgICAgICAgICAgdGVzdCAgICAgICAg ICAgIHwgcmVzdWx0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgRW1w dHkgYXJyYXkgdG8gZnJvbV9hcnJheSB8IHQKKygxIHJvdykKKworU0VMRUNUICdOVUxMIGlucHV0 IHRvIHRvX2FycmF5JyBhcyB0ZXN0LCB0ZXN0X2Jtc190b19hcnJheShOVUxMKSBJUyBOVUxMIGFz IHJlc3VsdDsKKyAgICAgICAgICB0ZXN0ICAgICAgICAgIHwgcmVzdWx0IAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgTlVMTCBpbnB1dCB0byB0b19hcnJheSB8IHQKKygxIHJv dykKKworLS0gVGVzdCAyOiBTaW5nbGV0b24gb3BlcmF0aW9ucworU0VMRUNUICdtYWtlX3Npbmds ZXRvbig0MiknIGFzIHRlc3QsIHRlc3RfYm1zX3RvX2FycmF5KHRlc3RfYm1zX21ha2Vfc2luZ2xl dG9uKDQyKSkgPSBBUlJBWVs0Ml0gYXMgcmVzdWx0OworICAgICAgICB0ZXN0ICAgICAgICB8IHJl c3VsdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgbWFrZV9zaW5nbGV0b24oNDIp IHwgdAorKDEgcm93KQorCitTRUxFQ1QgJ21ha2Vfc2luZ2xldG9uKDApJyBhcyB0ZXN0LCB0ZXN0 X2Jtc190b19hcnJheSh0ZXN0X2Jtc19tYWtlX3NpbmdsZXRvbigwKSkgPSBBUlJBWVswXSBhcyBy ZXN1bHQ7CisgICAgICAgdGVzdCAgICAgICAgfCByZXN1bHQgCistLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tCisgbWFrZV9zaW5nbGV0b24oMCkgfCB0CisoMSByb3cpCisKK1NFTEVDVCAnbWFr ZV9zaW5nbGV0b24oMTAwMCknIGFzIHRlc3QsIHRlc3RfYm1zX3RvX2FycmF5KHRlc3RfYm1zX21h a2Vfc2luZ2xldG9uKDEwMDApKSA9IEFSUkFZWzEwMDBdIGFzIHJlc3VsdDsKKyAgICAgICAgIHRl c3QgICAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBt YWtlX3NpbmdsZXRvbigxMDAwKSB8IHQKKygxIHJvdykKKworLS0gVGVzdCAzOiBBZGQgbWVtYmVy IG9wZXJhdGlvbnMKK1NFTEVDVCAnYWRkX21lbWJlcihOVUxMLCAxMCknIGFzIHRlc3QsIHRlc3Rf Ym1zX3RvX2FycmF5KHRlc3RfYm1zX2FkZF9tZW1iZXIoTlVMTCwgMTApKSA9IEFSUkFZWzEwXSBh cyByZXN1bHQ7CisgICAgICAgICB0ZXN0ICAgICAgICAgfCByZXN1bHQgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tCisgYWRkX21lbWJlcihOVUxMLCAxMCkgfCB0CisoMSByb3cpCisK K1NFTEVDVCAnYWRkX21lbWJlciBjb25zaXN0ZW5jeScgYXMgdGVzdCwgYm1zX3ZhbHVlcyh0ZXN0 X2Jtc19hZGRfbWVtYmVyKE5VTEwsIDEwKSkgYXMgdmFsdWVzOworICAgICAgICAgIHRlc3QgICAg ICAgICAgfCB2YWx1ZXMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBhZGRf bWVtYmVyIGNvbnNpc3RlbmN5IHwgKGIgMTApCisoMSByb3cpCisKK1NFTEVDVCAnYWRkX21lbWJl ciB0byBleGlzdGluZycgYXMgdGVzdCwgdGVzdF9ibXNfdG9fYXJyYXkodGVzdF9ibXNfYWRkX21l bWJlcih0ZXN0X2Jtc19tYWtlX3NpbmdsZXRvbig1KSwgMTApKSA9IEFSUkFZWzUsMTBdIGFzIHJl c3VsdDsKKyAgICAgICAgICB0ZXN0ICAgICAgICAgIHwgcmVzdWx0IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tCisgYWRkX21lbWJlciB0byBleGlzdGluZyB8IHQKKygxIHJvdykK KworU0VMRUNUICdhZGRfbWVtYmVyIHNvcnRlZCcgYXMgdGVzdCwgdGVzdF9ibXNfdG9fYXJyYXko dGVzdF9ibXNfYWRkX21lbWJlcih0ZXN0X2Jtc19tYWtlX3NpbmdsZXRvbigxMCksIDUpKSA9IEFS UkFZWzUsMTBdIGFzIHJlc3VsdDsKKyAgICAgICB0ZXN0ICAgICAgICB8IHJlc3VsdCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBhZGRfbWVtYmVyIHNvcnRlZCB8IHQKKygxIHJvdykK KworU0VMRUNUICdhZGRfbWVtYmVyIGlkZW1wb3RlbnQnIGFzIHRlc3QsIGJtc192YWx1ZXModGVz dF9ibXNfYWRkX21lbWJlcih0ZXN0X2Jtc19tYWtlX3NpbmdsZXRvbigxMCksIDEwKSkgYXMgdmFs dWVzOworICAgICAgICAgdGVzdCAgICAgICAgICB8IHZhbHVlcyAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tCisgYWRkX21lbWJlciBpZGVtcG90ZW50IHwgKGIgMTApCisoMSByb3cp CisKKy0tIFRlc3QgNDogRGVsZXRlIG1lbWJlciBvcGVyYXRpb25zCitTRUxFQ1QgJ2RlbF9tZW1i ZXIgZnJvbSBOVUxMJyBhcyB0ZXN0LCB0ZXN0X2Jtc19kZWxfbWVtYmVyKE5VTEwsIDEwKSBJUyBO VUxMIGFzIHJlc3VsdDsKKyAgICAgICAgIHRlc3QgICAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBkZWxfbWVtYmVyIGZyb20gTlVMTCB8IHQKKygxIHJv dykKKworU0VMRUNUICdkZWxfbWVtYmVyIHNpbmdsZXRvbiBiZWNvbWVzIGVtcHR5JyBhcyB0ZXN0 LCB0ZXN0X2Jtc19kZWxfbWVtYmVyKHRlc3RfYm1zX21ha2Vfc2luZ2xldG9uKDEwKSwgMTApIElT IE5VTEwgYXMgcmVzdWx0OworICAgICAgICAgICAgICAgIHRlc3QgICAgICAgICAgICAgICAgfCBy ZXN1bHQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBk ZWxfbWVtYmVyIHNpbmdsZXRvbiBiZWNvbWVzIGVtcHR5IHwgdAorKDEgcm93KQorCitTRUxFQ1Qg J2RlbF9tZW1iZXIgbm8gY2hhbmdlJyBhcyB0ZXN0LCBibXNfdmFsdWVzKHRlc3RfYm1zX2RlbF9t ZW1iZXIodGVzdF9ibXNfbWFrZV9zaW5nbGV0b24oMTApLCA1KSkgYXMgdmFsdWVzOworICAgICAg ICAgdGVzdCAgICAgICAgIHwgdmFsdWVzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LQorIGRlbF9tZW1iZXIgbm8gY2hhbmdlIHwgKGIgMTApCisoMSByb3cpCisKK1NFTEVDVCAnZGVs X21lbWJlciBmcm9tIG1pZGRsZScgYXMgdGVzdCwgdGVzdF9ibXNfdG9fYXJyYXkodGVzdF9ibXNf ZGVsX21lbWJlcih0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMiwzXSksIDIpKSA9IEFSUkFZ WzEsM10gYXMgcmVzdWx0OworICAgICAgICAgIHRlc3QgICAgICAgICAgfCByZXN1bHQgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBkZWxfbWVtYmVyIGZyb20gbWlkZGxlIHwg dAorKDEgcm93KQorCistLSBTRVQgT1BFUkFUSU9OUyBURVNUUworLS0gVGVzdCA1OiBVbmlvbiBv cGVyYXRpb25zCitXSVRIIHRlc3Rfc2V0cyBBUyAoCisgICAgU0VMRUNUCisJdGVzdF9ibXNfZnJv bV9hcnJheShBUlJBWVsxLDMsNV0pIEFTIHNldF8xMzUsCisJdGVzdF9ibXNfZnJvbV9hcnJheShB UlJBWVszLDUsN10pIEFTIHNldF8zNTcsCisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsyLDQs Nl0pIEFTIHNldF8yNDYKKykKK1NFTEVDVCAndW5pb24gb3ZlcmxhcHBpbmcgc2V0cycgYXMgdGVz dCwKKyAgICAgICB0ZXN0X2Jtc190b19hcnJheSh0ZXN0X2Jtc191bmlvbihzZXRfMTM1LCBzZXRf MzU3KSkgPSBBUlJBWVsxLDMsNSw3XSBhcyByZXN1bHQKK0ZST00gdGVzdF9zZXRzCitVTklPTiBB TEwKK1NFTEVDVCAndW5pb24gd2l0aCBOVUxMJyBhcyB0ZXN0LAorICAgICAgIHRlc3RfYm1zX3Rv X2FycmF5KHRlc3RfYm1zX3VuaW9uKHNldF8xMzUsIE5VTEwpKSA9IEFSUkFZWzEsMyw1XSBhcyBy ZXN1bHQKK0ZST00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAndW5pb24gTlVMTCB3aXRo IE5VTEwnIGFzIHRlc3QsCisgICAgICAgdGVzdF9ibXNfdW5pb24oTlVMTCwgTlVMTCkgSVMgTlVM TCBhcyByZXN1bHQKK0ZST00gdGVzdF9zZXRzOworICAgICAgICAgIHRlc3QgICAgICAgICAgfCBy ZXN1bHQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyB1bmlvbiBvdmVybGFw cGluZyBzZXRzIHwgdAorIHVuaW9uIHdpdGggTlVMTCAgICAgICAgfCB0CisgdW5pb24gTlVMTCB3 aXRoIE5VTEwgICB8IHQKKygzIHJvd3MpCisKKy0tIFRlc3QgNjogSW50ZXJzZWN0aW9uIG9wZXJh dGlvbnMKK1dJVEggdGVzdF9zZXRzIEFTICgKKyAgICBTRUxFQ1QKKwl0ZXN0X2Jtc19mcm9tX2Fy cmF5KEFSUkFZWzEsMyw1XSkgQVMgc2V0XzEzNSwKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZ WzMsNSw3XSkgQVMgc2V0XzM1NywKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzIsNCw2XSkg QVMgc2V0XzI0NgorKQorU0VMRUNUICdpbnRlcnNlY3Qgb3ZlcmxhcHBpbmcgc2V0cycgYXMgdGVz dCwKKyAgICAgICB0ZXN0X2Jtc190b19hcnJheSh0ZXN0X2Jtc19pbnRlcnNlY3Qoc2V0XzEzNSwg c2V0XzM1NykpID0gQVJSQVlbMyw1XSBhcyByZXN1bHQKK0ZST00gdGVzdF9zZXRzCitVTklPTiBB TEwKK1NFTEVDVCAnaW50ZXJzZWN0IGRpc2pvaW50IHNldHMnIGFzIHRlc3QsCisgICAgICAgdGVz dF9ibXNfaW50ZXJzZWN0KHNldF8xMzUsIHNldF8yNDYpIElTIE5VTEwgYXMgcmVzdWx0CitGUk9N IHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2ludGVyc2VjdCB3aXRoIE5VTEwnIGFzIHRl c3QsCisgICAgICAgdGVzdF9ibXNfaW50ZXJzZWN0KHNldF8xMzUsIE5VTEwpIElTIE5VTEwgYXMg cmVzdWx0CitGUk9NIHRlc3Rfc2V0czsKKyAgICAgICAgICAgIHRlc3QgICAgICAgICAgICB8IHJl c3VsdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBpbnRlcnNlY3Qg b3ZlcmxhcHBpbmcgc2V0cyB8IHQKKyBpbnRlcnNlY3QgZGlzam9pbnQgc2V0cyAgICB8IHQKKyBp bnRlcnNlY3Qgd2l0aCBOVUxMICAgICAgICB8IHQKKygzIHJvd3MpCisKKy0tIFRlc3QgNzogRGlm ZmVyZW5jZSBvcGVyYXRpb25zCitXSVRIIHRlc3Rfc2V0cyBBUyAoCisgICAgU0VMRUNUCisJdGVz dF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDMsNV0pIEFTIHNldF8xMzUsCisJdGVzdF9ibXNfZnJv bV9hcnJheShBUlJBWVszLDUsN10pIEFTIHNldF8zNTcsCisJdGVzdF9ibXNfZnJvbV9hcnJheShB UlJBWVsyLDQsNl0pIEFTIHNldF8yNDYKKykKK1NFTEVDVCAnZGlmZmVyZW5jZSBvdmVybGFwcGlu ZyBzZXRzJyBhcyB0ZXN0LAorICAgICAgIHRlc3RfYm1zX3RvX2FycmF5KHRlc3RfYm1zX2RpZmZl cmVuY2Uoc2V0XzEzNSwgc2V0XzM1NykpID0gQVJSQVlbMV0gYXMgcmVzdWx0CitGUk9NIHRlc3Rf c2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2RpZmZlcmVuY2UgZGlzam9pbnQgc2V0cycgYXMgdGVz dCwKKyAgICAgICB0ZXN0X2Jtc190b19hcnJheSh0ZXN0X2Jtc19kaWZmZXJlbmNlKHNldF8xMzUs IHNldF8yNDYpKSA9IEFSUkFZWzEsMyw1XSBhcyByZXN1bHQKK0ZST00gdGVzdF9zZXRzCitVTklP TiBBTEwKK1NFTEVDVCAnZGlmZmVyZW5jZSBpZGVudGljYWwgc2V0cycgYXMgdGVzdCwKKyAgICAg ICB0ZXN0X2Jtc19kaWZmZXJlbmNlKHNldF8xMzUsIHNldF8xMzUpIElTIE5VTEwgYXMgcmVzdWx0 CitGUk9NIHRlc3Rfc2V0czsKKyAgICAgICAgICAgIHRlc3QgICAgICAgICAgICAgfCByZXN1bHQg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIGRpZmZlcmVuY2Ugb3Zl cmxhcHBpbmcgc2V0cyB8IHQKKyBkaWZmZXJlbmNlIGRpc2pvaW50IHNldHMgICAgfCB0CisgZGlm ZmVyZW5jZSBpZGVudGljYWwgc2V0cyAgIHwgdAorKDMgcm93cykKKworLS0gTUVNQkVSU0hJUCBB TkQgQ09NUEFSSVNPTiBURVNUUworLS0gVGVzdCA4OiBNZW1iZXJzaGlwIHRlc3RzCitXSVRIIHRl c3Rfc2V0IEFTIChTRUxFQ1QgdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDMsNV0pIEFTIHNl dF8xMzUpCitTRUxFQ1QgJ2lzX21lbWJlciBleGlzdGluZycgYXMgdGVzdCwgdGVzdF9ibXNfaXNf bWVtYmVyKHNldF8xMzUsIDEpID0gdHJ1ZSBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldAorVU5JT04g QUxMCitTRUxFQ1QgJ2lzX21lbWJlciBtaXNzaW5nJyBhcyB0ZXN0LCB0ZXN0X2Jtc19pc19tZW1i ZXIoc2V0XzEzNSwgMikgPSBmYWxzZSBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldAorVU5JT04gQUxM CitTRUxFQ1QgJ2lzX21lbWJlciBleGlzdGluZyBtaWRkbGUnIGFzIHRlc3QsIHRlc3RfYm1zX2lz X21lbWJlcihzZXRfMTM1LCAzKSA9IHRydWUgYXMgcmVzdWx0IEZST00gdGVzdF9zZXQKK1VOSU9O IEFMTAorU0VMRUNUICdpc19tZW1iZXIgTlVMTCBzZXQnIGFzIHRlc3QsIHRlc3RfYm1zX2lzX21l bWJlcihOVUxMLCAxKSA9IGZhbHNlIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0OworICAgICAgICAg ICB0ZXN0ICAgICAgICAgICAgfCByZXN1bHQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0KKyBpc19tZW1iZXIgZXhpc3RpbmcgICAgICAgIHwgdAorIGlzX21lbWJlciBtaXNz aW5nICAgICAgICAgfCB0CisgaXNfbWVtYmVyIGV4aXN0aW5nIG1pZGRsZSB8IHQKKyBpc19tZW1i ZXIgTlVMTCBzZXQgICAgICAgIHwgdAorKDQgcm93cykKKworLS0gVGVzdCA5OiBTZXQgY2FyZGlu YWxpdHkKK1NFTEVDVCAnbnVtX21lbWJlcnMgTlVMTCcgYXMgdGVzdCwgdGVzdF9ibXNfbnVtX21l bWJlcnMoTlVMTCkgPSAwIGFzIHJlc3VsdDsKKyAgICAgICB0ZXN0ICAgICAgIHwgcmVzdWx0IAor LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgbnVtX21lbWJlcnMgTlVMTCB8IHQKKygxIHJv dykKKworU0VMRUNUICdudW1fbWVtYmVycyBzbWFsbCBzZXQnIGFzIHRlc3QsIHRlc3RfYm1zX251 bV9tZW1iZXJzKHRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVdKSkgPSAzIGFzIHJlc3Vs dDsKKyAgICAgICAgIHRlc3QgICAgICAgICAgfCByZXN1bHQgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLQorIG51bV9tZW1iZXJzIHNtYWxsIHNldCB8IHQKKygxIHJvdykKKworU0VM RUNUICdudW1fbWVtYmVycyBsYXJnZXIgc2V0JyBhcyB0ZXN0LCB0ZXN0X2Jtc19udW1fbWVtYmVy cyh0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzIsNCw2LDgsMTBdKSkgPSA1IGFzIHJlc3VsdDsK KyAgICAgICAgICB0ZXN0ICAgICAgICAgIHwgcmVzdWx0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tCisgbnVtX21lbWJlcnMgbGFyZ2VyIHNldCB8IHQKKygxIHJvdykKKworLS0g VGVzdCAxMDogU2V0IGVxdWFsaXR5IGFuZCBjb21wYXJpc29uCitXSVRIIHRlc3Rfc2V0cyBBUyAo CisgICAgU0VMRUNUCisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDMsNV0pIEFTIHNldF8x MzVfYSwKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1XSkgQVMgc2V0XzEzNV9iLAor CXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMiw0LDZdKSBBUyBzZXRfMjQ2LAorCXRlc3RfYm1z X2Zyb21fYXJyYXkoQVJSQVlbMSwzXSkgQVMgc2V0XzEzCispCitTRUxFQ1QgJ2VxdWFsIE5VTEwg TlVMTCcgYXMgdGVzdCwgdGVzdF9ibXNfZXF1YWwoTlVMTCwgTlVMTCkgPSB0cnVlIGFzIHJlc3Vs dCBGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2VxdWFsIE5VTEwgc2V0JyBhcyB0 ZXN0LCB0ZXN0X2Jtc19lcXVhbChOVUxMLCBzZXRfMTM1X2EpID0gZmFsc2UgYXMgcmVzdWx0IEZS T00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnZXF1YWwgc2V0IE5VTEwnIGFzIHRlc3Qs IHRlc3RfYm1zX2VxdWFsKHNldF8xMzVfYSwgTlVMTCkgPSBmYWxzZSBhcyByZXN1bHQgRlJPTSB0 ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdlcXVhbCBpZGVudGljYWwgc2V0cycgYXMgdGVz dCwgdGVzdF9ibXNfZXF1YWwoc2V0XzEzNV9hLCBzZXRfMTM1X2IpID0gdHJ1ZSBhcyByZXN1bHQg RlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdlcXVhbCBkaWZmZXJlbnQgc2V0cycg YXMgdGVzdCwgdGVzdF9ibXNfZXF1YWwoc2V0XzEzNV9hLCBzZXRfMjQ2KSA9IGZhbHNlIGFzIHJl c3VsdCBGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2NvbXBhcmUgTlVMTCBOVUxM JyBhcyB0ZXN0LCB0ZXN0X2Jtc19jb21wYXJlKE5VTEwsIE5VTEwpID0gMCBhcyByZXN1bHQgRlJP TSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdjb21wYXJlIE5VTEwgc2V0JyBhcyB0ZXN0 LCB0ZXN0X2Jtc19jb21wYXJlKE5VTEwsIHNldF8xMykgPSAtMSBhcyByZXN1bHQgRlJPTSB0ZXN0 X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdjb21wYXJlIHNldCBOVUxMJyBhcyB0ZXN0LCB0ZXN0 X2Jtc19jb21wYXJlKHNldF8xMywgTlVMTCkgPSAxIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0cwor VU5JT04gQUxMCitTRUxFQ1QgJ2NvbXBhcmUgZXF1YWwgc2V0cycgYXMgdGVzdCwgdGVzdF9ibXNf Y29tcGFyZShzZXRfMTMsIHNldF8xMykgPSAwIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0cworVU5J T04gQUxMCitTRUxFQ1QgJ2NvbXBhcmUgc3Vic2V0IHN1cGVyc2V0JyBhcyB0ZXN0LCB0ZXN0X2Jt c19jb21wYXJlKHNldF8xMywgc2V0XzEzNV9hKSA9IC0xIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0 cworVU5JT04gQUxMCitTRUxFQ1QgJ2NvbXBhcmUgc3VwZXJzZXQgc3Vic2V0JyBhcyB0ZXN0LCB0 ZXN0X2Jtc19jb21wYXJlKHNldF8xMzVfYSwgc2V0XzEzKSA9IDEgYXMgcmVzdWx0IEZST00gdGVz dF9zZXRzOworICAgICAgICAgIHRlc3QgICAgICAgICAgIHwgcmVzdWx0IAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIGVxdWFsIE5VTEwgTlVMTCAgICAgICAgIHwgdAorIGVx dWFsIE5VTEwgc2V0ICAgICAgICAgIHwgdAorIGVxdWFsIHNldCBOVUxMICAgICAgICAgIHwgdAor IGVxdWFsIGlkZW50aWNhbCBzZXRzICAgIHwgdAorIGVxdWFsIGRpZmZlcmVudCBzZXRzICAgIHwg dAorIGNvbXBhcmUgTlVMTCBOVUxMICAgICAgIHwgdAorIGNvbXBhcmUgTlVMTCBzZXQgICAgICAg IHwgdAorIGNvbXBhcmUgc2V0IE5VTEwgICAgICAgIHwgdAorIGNvbXBhcmUgZXF1YWwgc2V0cyAg ICAgIHwgdAorIGNvbXBhcmUgc3Vic2V0IHN1cGVyc2V0IHwgdAorIGNvbXBhcmUgc3VwZXJzZXQg c3Vic2V0IHwgdAorKDExIHJvd3MpCisKKy0tIEFEVkFOQ0VEIE9QRVJBVElPTlMgVEVTVFMKKy0t IFRlc3QgMTE6IFJhbmdlIG9wZXJhdGlvbnMKK1NFTEVDVCAnYWRkX3JhbmdlIGJhc2ljJyBhcyB0 ZXN0LCB0ZXN0X2Jtc190b19hcnJheSh0ZXN0X2Jtc19hZGRfcmFuZ2UoTlVMTCwgNSwgNykpID0g QVJSQVlbNSw2LDddIGFzIHJlc3VsdDsKKyAgICAgIHRlc3QgICAgICAgfCByZXN1bHQgCistLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIGFkZF9yYW5nZSBiYXNpYyB8IHQKKygxIHJvdykKKwor U0VMRUNUICdhZGRfcmFuZ2Ugc2luZ2xlIGVsZW1lbnQnIGFzIHRlc3QsIHRlc3RfYm1zX3RvX2Fy cmF5KHRlc3RfYm1zX2FkZF9yYW5nZShOVUxMLCA1LCA1KSkgPSBBUlJBWVs1XSBhcyByZXN1bHQ7 CisgICAgICAgICAgIHRlc3QgICAgICAgICAgIHwgcmVzdWx0IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0KKyBhZGRfcmFuZ2Ugc2luZ2xlIGVsZW1lbnQgfCB0CisoMSByb3cp CisKK1NFTEVDVCAnYWRkX3JhbmdlIHRvIGV4aXN0aW5nJyBhcyB0ZXN0LCB0ZXN0X2Jtc190b19h cnJheSh0ZXN0X2Jtc19hZGRfcmFuZ2UodGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDEwXSks IDUsIDcpKSA9IEFSUkFZWzEsNSw2LDcsMTBdIGFzIHJlc3VsdDsKKyAgICAgICAgIHRlc3QgICAg ICAgICAgfCByZXN1bHQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIGFkZF9y YW5nZSB0byBleGlzdGluZyB8IHQKKygxIHJvdykKKworLS0gVGVzdCAxMjogTWVtYmVyc2hpcCB0 eXBlcworU0VMRUNUICdtZW1iZXJzaGlwIGVtcHR5JyBhcyB0ZXN0LCB0ZXN0X2Jtc19tZW1iZXJz aGlwKE5VTEwpID0gMCBhcyByZXN1bHQ7CisgICAgICAgdGVzdCAgICAgICB8IHJlc3VsdCAKKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIG1lbWJlcnNoaXAgZW1wdHkgfCB0CisoMSByb3cp CisKK1NFTEVDVCAnbWVtYmVyc2hpcCBzaW5nbGV0b24nIGFzIHRlc3QsIHRlc3RfYm1zX21lbWJl cnNoaXAodGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVs0Ml0pKSA9IDEgYXMgcmVzdWx0OworICAg ICAgICAgdGVzdCAgICAgICAgIHwgcmVzdWx0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLQorIG1lbWJlcnNoaXAgc2luZ2xldG9uIHwgdAorKDEgcm93KQorCitTRUxFQ1QgJ21lbWJl cnNoaXAgbXVsdGlwbGUnIGFzIHRlc3QsIHRlc3RfYm1zX21lbWJlcnNoaXAodGVzdF9ibXNfZnJv bV9hcnJheShBUlJBWVsxLDIsM10pKSA9IDIgYXMgcmVzdWx0OworICAgICAgICB0ZXN0ICAgICAg ICAgfCByZXN1bHQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBtZW1iZXJzaGlw IG11bHRpcGxlIHwgdAorKDEgcm93KQorCistLSBUZXN0IDEzOiBTaW5nbGV0b24gbWVtYmVyIGV4 dHJhY3Rpb24KK1NFTEVDVCAnc2luZ2xldG9uX21lbWJlciB2YWxpZCcgYXMgdGVzdCwgdGVzdF9i bXNfc2luZ2xldG9uX21lbWJlcih0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzQyXSkpID0gNDIg YXMgcmVzdWx0OworICAgICAgICAgIHRlc3QgICAgICAgICAgfCByZXN1bHQgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBzaW5nbGV0b25fbWVtYmVyIHZhbGlkIHwgdAorKDEg cm93KQorCistLSBUZXN0IDE0OiBTZXQgaXRlcmF0aW9uCitXSVRIIHRlc3Rfc2V0IEFTIChTRUxF Q1QgdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVs1LDEwLDE1LDIwXSkgQVMgc2V0X251bWJlcnMp CitTRUxFQ1QgJ25leHRfbWVtYmVyIGZpcnN0JyBhcyB0ZXN0LCB0ZXN0X2Jtc19uZXh0X21lbWJl cihzZXRfbnVtYmVycywgLTEpID0gNSBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldAorVU5JT04gQUxM CitTRUxFQ1QgJ25leHRfbWVtYmVyIHNlY29uZCcgYXMgdGVzdCwgdGVzdF9ibXNfbmV4dF9tZW1i ZXIoc2V0X251bWJlcnMsIDUpID0gMTAgYXMgcmVzdWx0IEZST00gdGVzdF9zZXQKK1VOSU9OIEFM TAorU0VMRUNUICduZXh0X21lbWJlciBwYXN0IGVuZCcgYXMgdGVzdCwgdGVzdF9ibXNfbmV4dF9t ZW1iZXIoc2V0X251bWJlcnMsIDIwKSA9IC0yIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0CitVTklP TiBBTEwKK1NFTEVDVCAnbmV4dF9tZW1iZXIgZW1wdHkgc2V0JyBhcyB0ZXN0LCB0ZXN0X2Jtc19u ZXh0X21lbWJlcihOVUxMLCAtMSkgPSAtMiBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldAorVU5JT04g QUxMCitTRUxFQ1QgJ3ByZXZfbWVtYmVyIGxhc3QnIGFzIHRlc3QsIHRlc3RfYm1zX3ByZXZfbWVt YmVyKHNldF9udW1iZXJzLCAyMSkgPSAyMCBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldAorVU5JT04g QUxMCitTRUxFQ1QgJ3ByZXZfbWVtYmVyIHBlbnVsdGltYXRlJyBhcyB0ZXN0LCB0ZXN0X2Jtc19w cmV2X21lbWJlcihzZXRfbnVtYmVycywgMjApID0gMTUgYXMgcmVzdWx0IEZST00gdGVzdF9zZXQK K1VOSU9OIEFMTAorU0VMRUNUICdwcmV2X21lbWJlciBwYXN0IGJlZ2lubmluZycgYXMgdGVzdCwg dGVzdF9ibXNfcHJldl9tZW1iZXIoc2V0X251bWJlcnMsIDUpID0gLTIgYXMgcmVzdWx0IEZST00g dGVzdF9zZXQKK1VOSU9OIEFMTAorU0VMRUNUICdwcmV2X21lbWJlciBlbXB0eSBzZXQnIGFzIHRl c3QsIHRlc3RfYm1zX3ByZXZfbWVtYmVyKE5VTEwsIDEwMCkgPSAtMiBhcyByZXN1bHQgRlJPTSB0 ZXN0X3NldDsKKyAgICAgICAgICAgIHRlc3QgICAgICAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBuZXh0X21lbWJlciBmaXJzdCAgICAgICAg ICB8IHQKKyBuZXh0X21lbWJlciBzZWNvbmQgICAgICAgICB8IHQKKyBuZXh0X21lbWJlciBwYXN0 IGVuZCAgICAgICB8IHQKKyBuZXh0X21lbWJlciBlbXB0eSBzZXQgICAgICB8IHQKKyBwcmV2X21l bWJlciBsYXN0ICAgICAgICAgICB8IHQKKyBwcmV2X21lbWJlciBwZW51bHRpbWF0ZSAgICB8IHQK KyBwcmV2X21lbWJlciBwYXN0IGJlZ2lubmluZyB8IHQKKyBwcmV2X21lbWJlciBlbXB0eSBzZXQg ICAgICB8IHQKKyg4IHJvd3MpCisKKy0tIFRlc3QgMTU6IEhhc2ggZnVuY3Rpb25zCitXSVRIIHRl c3Rfc2V0cyBBUyAoCisgICAgU0VMRUNUCisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDMs NV0pIEFTIHNldF8xMzVhLAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVdKSBBUyBz ZXRfMTM1YiwKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzIsNCw2XSkgQVMgc2V0XzI0Ngor KQorU0VMRUNUICdoYXNoIE5VTEwnIGFzIHRlc3QsIHRlc3RfYm1zX2hhc2hfdmFsdWUoTlVMTCkg PSAwIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2hhc2ggY29u c2lzdGVuY3knIGFzIHRlc3QsIHRlc3RfYm1zX2hhc2hfdmFsdWUoc2V0XzEzNWEpID0gdGVzdF9i bXNfaGFzaF92YWx1ZShzZXRfMTM1YikgYXMgcmVzdWx0IEZST00gdGVzdF9zZXRzCitVTklPTiBB TEwKK1NFTEVDVCAnaGFzaCBkaWZmZXJlbnQgc2V0cycgYXMgdGVzdCwgdGVzdF9ibXNfaGFzaF92 YWx1ZShzZXRfMTM1YSkgIT0gdGVzdF9ibXNfaGFzaF92YWx1ZShzZXRfMjQ2KSBhcyByZXN1bHQg RlJPTSB0ZXN0X3NldHM7CisgICAgICAgIHRlc3QgICAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIGhhc2ggTlVMTCAgICAgICAgICAgfCB0CisgaGFzaCBj b25zaXN0ZW5jeSAgICB8IHQKKyBoYXNoIGRpZmZlcmVudCBzZXRzIHwgdAorKDMgcm93cykKKwor LS0gVGVzdCAxNjogU2V0IG92ZXJsYXAKK1dJVEggdGVzdF9zZXRzIEFTICgKKyAgICBTRUxFQ1QK Kwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1XSkgQVMgc2V0XzEzNSwKKwl0ZXN0X2Jt c19mcm9tX2FycmF5KEFSUkFZWzMsNSw3XSkgQVMgc2V0XzM1NywKKwl0ZXN0X2Jtc19mcm9tX2Fy cmF5KEFSUkFZWzIsNCw2XSkgQVMgc2V0XzI0NgorKQorU0VMRUNUICdvdmVybGFwIGV4aXN0aW5n JyBhcyB0ZXN0LCB0ZXN0X2Jtc19vdmVybGFwKHNldF8xMzUsIHNldF8zNTcpID0gdHJ1ZSBhcyBy ZXN1bHQgRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdvdmVybGFwIG5vbmUnIGFz IHRlc3QsIHRlc3RfYm1zX292ZXJsYXAoc2V0XzEzNSwgc2V0XzI0NikgPSBmYWxzZSBhcyByZXN1 bHQgRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdvdmVybGFwIHdpdGggTlVMTCcg YXMgdGVzdCwgdGVzdF9ibXNfb3ZlcmxhcChOVUxMLCBzZXRfMTM1KSA9IGZhbHNlIGFzIHJlc3Vs dCBGUk9NIHRlc3Rfc2V0czsKKyAgICAgICB0ZXN0ICAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBvdmVybGFwIGV4aXN0aW5nICB8IHQKKyBvdmVybGFwIG5v bmUgICAgICB8IHQKKyBvdmVybGFwIHdpdGggTlVMTCB8IHQKKygzIHJvd3MpCisKKy0tIFRlc3Qg MTc6IFN1YnNldCByZWxhdGlvbnMKK1dJVEggdGVzdF9zZXRzIEFTICgKKyAgICBTRUxFQ1QKKwl0 ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsM10pIEFTIHNldF8xMywKKwl0ZXN0X2Jtc19mcm9t X2FycmF5KEFSUkFZWzEsMyw1XSkgQVMgc2V0XzEzNSwKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFS UkFZWzIsNF0pIEFTIHNldF8yNAorKQorU0VMRUNUICdzdWJzZXQgTlVMTCBpcyBzdWJzZXQgb2Yg YWxsJyBhcyB0ZXN0LCB0ZXN0X2Jtc19pc19zdWJzZXQoTlVMTCwgc2V0XzEzNSkgPSB0cnVlIGFz IHJlc3VsdCBGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ3N1YnNldCBwcm9wZXIg c3Vic2V0JyBhcyB0ZXN0LCB0ZXN0X2Jtc19pc19zdWJzZXQoc2V0XzEzLCBzZXRfMTM1KSA9IHRy dWUgYXMgcmVzdWx0IEZST00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnc3Vic2V0IGlt cHJvcGVyIHN1YnNldCcgYXMgdGVzdCwgdGVzdF9ibXNfaXNfc3Vic2V0KHNldF8xMzUsIHNldF8x MykgPSBmYWxzZSBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdz dWJzZXQgZGlzam9pbnQgc2V0cycgYXMgdGVzdCwgdGVzdF9ibXNfaXNfc3Vic2V0KHNldF8xMywg c2V0XzI0KSA9IGZhbHNlIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0czsKKyAgICAgICAgICAgICB0 ZXN0ICAgICAgICAgICAgIHwgcmVzdWx0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tCisgc3Vic2V0IE5VTEwgaXMgc3Vic2V0IG9mIGFsbCB8IHQKKyBzdWJzZXQgcHJv cGVyIHN1YnNldCAgICAgICAgIHwgdAorIHN1YnNldCBpbXByb3BlciBzdWJzZXQgICAgICAgfCB0 Cisgc3Vic2V0IGRpc2pvaW50IHNldHMgICAgICAgICB8IHQKKyg0IHJvd3MpCisKKy0tIFRlc3Qg MTg6IENvcHkgb3BlcmF0aW9ucworV0lUSCB0ZXN0X3NldCBBUyAoU0VMRUNUIHRlc3RfYm1zX2Zy b21fYXJyYXkoQVJSQVlbMSwzLDUsN10pIEFTIG9yaWdpbmFsKQorU0VMRUNUICdjb3B5IE5VTEwn IGFzIHRlc3QsIHRlc3RfYm1zX2NvcHkoTlVMTCkgSVMgTlVMTCBhcyByZXN1bHQgRlJPTSB0ZXN0 X3NldAorVU5JT04gQUxMCitTRUxFQ1QgJ2NvcHkgZXF1YWxpdHknIGFzIHRlc3QsIHRlc3RfYm1z X2VxdWFsKG9yaWdpbmFsLCB0ZXN0X2Jtc19jb3B5KG9yaWdpbmFsKSkgPSB0cnVlIGFzIHJlc3Vs dCBGUk9NIHRlc3Rfc2V0OworICAgICB0ZXN0ICAgICAgfCByZXN1bHQgCistLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0KKyBjb3B5IE5VTEwgICAgIHwgdAorIGNvcHkgZXF1YWxpdHkgfCB0CisoMiBy b3dzKQorCistLSBUZXN0IDE5OiBBZGQgbWVtYmVycyBvcGVyYXRpb24KK1dJVEggYmFzZV9zZXRz IEFTICgKKyAgICBTRUxFQ1QKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsM10pIEFTIHNl dF8xMywKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzUsN10pIEFTIHNldF81NworKQorU0VM RUNUICdhZGRfbWVtYmVycyBvcGVyYXRpb24nIGFzIHRlc3QsCisgICAgICAgdGVzdF9ibXNfdG9f YXJyYXkodGVzdF9ibXNfYWRkX21lbWJlcnMoc2V0XzEzLCBzZXRfNTcpKSA9IEFSUkFZWzEsMyw1 LDddIGFzIHJlc3VsdAorRlJPTSBiYXNlX3NldHM7CisgICAgICAgICB0ZXN0ICAgICAgICAgIHwg cmVzdWx0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBhZGRfbWVtYmVycyBv cGVyYXRpb24gfCB0CisoMSByb3cpCisKKy0tIFRlc3QgMjA6IFRlc3QgaGFzaCBjb25zaXN0ZW5j eQorV0lUSCB0ZXN0X3NldHMgQVMgKAorICAgIFNFTEVDVAorCXRlc3RfYm1zX2Zyb21fYXJyYXko QVJSQVlbMSwzLDVdKSBBUyBzZXRfMTM1X2EsCisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsx LDMsNV0pIEFTIHNldF8xMzVfYiwKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzIsNCw2XSkg QVMgc2V0XzI0NgorKQorU0VMRUNUICdiaXRtYXBfaGFzaCBOVUxMJyBhcyB0ZXN0LAorICAgICAg IHRlc3RfYml0bWFwX2hhc2goTlVMTCkgPSAwIGFzIHJlc3VsdAorVU5JT04gQUxMCitTRUxFQ1Qg J2JpdG1hcF9oYXNoIGNvbnNpc3RlbmN5JyBhcyB0ZXN0LAorICAgICAgIHRlc3RfYml0bWFwX2hh c2goc2V0XzEzNV9hKSA9IHRlc3RfYml0bWFwX2hhc2goc2V0XzEzNV9iKSBhcyByZXN1bHQKK0ZS T00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnYml0bWFwX2hhc2ggdnMgYm1zX2hhc2hf dmFsdWUnIGFzIHRlc3QsCisgICAgICAgdGVzdF9iaXRtYXBfaGFzaChzZXRfMTM1X2EpID0gdGVz dF9ibXNfaGFzaF92YWx1ZShzZXRfMTM1X2EpIGFzIHJlc3VsdAorRlJPTSB0ZXN0X3NldHMKK1VO SU9OIEFMTAorU0VMRUNUICdiaXRtYXBfaGFzaCBkaWZmZXJlbnQgc2V0cycgYXMgdGVzdCwKKyAg ICAgICB0ZXN0X2JpdG1hcF9oYXNoKHNldF8xMzVfYSkgIT0gdGVzdF9iaXRtYXBfaGFzaChzZXRf MjQ2KSBhcyByZXN1bHQKK0ZST00gdGVzdF9zZXRzOworICAgICAgICAgICAgIHRlc3QgICAgICAg ICAgICAgIHwgcmVzdWx0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LQorIGJpdG1hcF9oYXNoIE5VTEwgICAgICAgICAgICAgIHwgdAorIGJpdG1hcF9oYXNoIGNvbnNp c3RlbmN5ICAgICAgIHwgdAorIGJpdG1hcF9oYXNoIHZzIGJtc19oYXNoX3ZhbHVlIHwgdAorIGJp dG1hcF9oYXNoIGRpZmZlcmVudCBzZXRzICAgIHwgdAorKDQgcm93cykKKworLS0gQXJjaGl0ZWN0 dXJlLWF3YXJlIGhhc2ggdGVzdGluZworV0lUSCBhcmNoX2luZm8gQVMgKAorICAgIFNFTEVDVAor ICAgICAgICBDQVNFCisgICAgICAgICAgICBXSEVOIHBnX2NvbHVtbl9zaXplKDE6OmJpZ2ludCkg PSA4IFRIRU4gJzY0Yml0JworICAgICAgICAgICAgRUxTRSAnMzJiaXQnCisgICAgICAgIEVORCBh cyBhcmNoaXRlY3R1cmUKKyksCitleHBlY3RlZF92YWx1ZXMgQVMgKAorICAgIFNFTEVDVAorICAg ICAgICBhcmNoaXRlY3R1cmUsCisgICAgICAgIENBU0UgYXJjaGl0ZWN0dXJlCisgICAgICAgICAg ICBXSEVOICc2NGJpdCcgVEhFTiAwCisgICAgICAgICAgICBXSEVOICczMmJpdCcgVEhFTiAwCisg ICAgICAgIEVORCBhcyBoYXNoX251bGwsCisgICAgICAgIENBU0UgYXJjaGl0ZWN0dXJlCisgICAg ICAgICAgICBXSEVOICc2NGJpdCcgVEhFTiA0OTg3MDc3OAorICAgICAgICAgICAgV0hFTiAnMzJi aXQnIFRIRU4gMTUwOTc1MjUyMAorICAgICAgICBFTkQgYXMgaGFzaF8xMzUsCisgICAgICAgIENB U0UgYXJjaGl0ZWN0dXJlCisgICAgICAgICAgICBXSEVOICc2NGJpdCcgVEhFTiAtMzAzOTIxNjA2 CisgICAgICAgICAgICBXSEVOICczMmJpdCcgVEhFTiAtNTA3MjgwNjY2CisgICAgICAgIEVORCBh cyBoYXNoXzI0NgorICAgIEZST00gYXJjaF9pbmZvCispCitTRUxFQ1QgJ2V4cGVjdGVkIGhhc2gg TlVMTCcgYXMgdGVzdCwKKyAgICAgICB0ZXN0X2JpdG1hcF9oYXNoKE5VTEwpID0gaGFzaF9udWxs IGFzIHJlc3VsdAorRlJPTSBleHBlY3RlZF92YWx1ZXMKK1VOSU9OIEFMTAorU0VMRUNUICdleHBl Y3RlZCBoYXNoIFsxLDMsNV0nIGFzIHRlc3QsCisgICAgICAgdGVzdF9iaXRtYXBfaGFzaCh0ZXN0 X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1XSkpID0gaGFzaF8xMzUgYXMgcmVzdWx0CitGUk9N IGV4cGVjdGVkX3ZhbHVlcworVU5JT04gQUxMCitTRUxFQ1QgJ2V4cGVjdGVkIGhhc2ggWzIsNCw2 XScgYXMgdGVzdCwKKyAgICAgICB0ZXN0X2JpdG1hcF9oYXNoKHRlc3RfYm1zX2Zyb21fYXJyYXko QVJSQVlbMiw0LDZdKSkgPSBoYXNoXzI0NiBhcyByZXN1bHQKK0ZST00gZXhwZWN0ZWRfdmFsdWVz OworICAgICAgICAgdGVzdCAgICAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tCisgZXhwZWN0ZWQgaGFzaCBOVUxMICAgIHwgdAorIGV4cGVjdGVkIGhhc2gg WzEsMyw1XSB8IHQKKyBleHBlY3RlZCBoYXNoIFsyLDQsNl0gfCB0CisoMyByb3dzKQorCistLSBU ZXN0IDIxOiBiaXRtYXBfbWF0Y2ggZnVuY3Rpb24KK1dJVEggdGVzdF9zZXRzIEFTICgKKyAgICBT RUxFQ1QKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1XSkgQVMgc2V0XzEzNV9hLAor CXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVdKSBBUyBzZXRfMTM1X2IsCisJdGVzdF9i bXNfZnJvbV9hcnJheShBUlJBWVsyLDQsNl0pIEFTIHNldF8yNDYsCisJdGVzdF9ibXNfZnJvbV9h cnJheShBUlJBWVsxLDNdKSBBUyBzZXRfMTMKKykKK1NFTEVDVCAnYml0bWFwX21hdGNoIE5VTEwg TlVMTCAoc2hvdWxkIGJlIDApJyBhcyB0ZXN0LAorICAgICAgIHRlc3RfYml0bWFwX21hdGNoKE5V TEwsIE5VTEwpID0gMCBhcyByZXN1bHQKK1VOSU9OIEFMTAorU0VMRUNUICdiaXRtYXBfbWF0Y2gg TlVMTCBzZXQgKHNob3VsZCBiZSAxKScgYXMgdGVzdCwKKyAgICAgICB0ZXN0X2JpdG1hcF9tYXRj aChOVUxMLCBzZXRfMTM1X2EpID0gMSBhcyByZXN1bHQKK0ZST00gdGVzdF9zZXRzCitVTklPTiBB TEwKK1NFTEVDVCAnYml0bWFwX21hdGNoIHNldCBOVUxMIChzaG91bGQgYmUgMSknIGFzIHRlc3Qs CisgICAgICAgdGVzdF9iaXRtYXBfbWF0Y2goc2V0XzEzNV9hLCBOVUxMKSA9IDEgYXMgcmVzdWx0 CitGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2JpdG1hcF9tYXRjaCBpZGVudGlj YWwgc2V0cyAoc2hvdWxkIGJlIDApJyBhcyB0ZXN0LAorICAgICAgIHRlc3RfYml0bWFwX21hdGNo KHNldF8xMzVfYSwgc2V0XzEzNV9iKSA9IDAgYXMgcmVzdWx0CitGUk9NIHRlc3Rfc2V0cworVU5J T04gQUxMCitTRUxFQ1QgJ2JpdG1hcF9tYXRjaCBkaWZmZXJlbnQgc2V0cyAoc2hvdWxkIGJlIDEp JyBhcyB0ZXN0LAorICAgICAgIHRlc3RfYml0bWFwX21hdGNoKHNldF8xMzVfYSwgc2V0XzI0Nikg PSAxIGFzIHJlc3VsdAorRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdiaXRtYXBf bWF0Y2ggc3Vic2V0L3N1cGVyc2V0IChzaG91bGQgYmUgMSknIGFzIHRlc3QsCisgICAgICAgdGVz dF9iaXRtYXBfbWF0Y2goc2V0XzEzLCBzZXRfMTM1X2EpID0gMSBhcyByZXN1bHQKK0ZST00gdGVz dF9zZXRzOworICAgICAgICAgICAgICAgICAgICB0ZXN0ICAgICAgICAgICAgICAgICAgICB8IHJl c3VsdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tCisgYml0bWFwX21hdGNoIE5VTEwgTlVMTCAoc2hvdWxkIGJlIDApICAgICAgIHwgdAorIGJp dG1hcF9tYXRjaCBOVUxMIHNldCAoc2hvdWxkIGJlIDEpICAgICAgICB8IHQKKyBiaXRtYXBfbWF0 Y2ggc2V0IE5VTEwgKHNob3VsZCBiZSAxKSAgICAgICAgfCB0CisgYml0bWFwX21hdGNoIGlkZW50 aWNhbCBzZXRzIChzaG91bGQgYmUgMCkgIHwgdAorIGJpdG1hcF9tYXRjaCBkaWZmZXJlbnQgc2V0 cyAoc2hvdWxkIGJlIDEpICB8IHQKKyBiaXRtYXBfbWF0Y2ggc3Vic2V0L3N1cGVyc2V0IChzaG91 bGQgYmUgMSkgfCB0CisoNiByb3dzKQorCistLSBUZXN0IHJlbGF0aW9uc2hpcCB3aXRoIGJtc19l cXVhbAorV0lUSCB0ZXN0X3NldHMgQVMgKAorICAgIFNFTEVDVAorCXRlc3RfYm1zX2Zyb21fYXJy YXkoQVJSQVlbMSwzLDVdKSBBUyBzZXRfMTM1X2EsCisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJB WVsxLDMsNV0pIEFTIHNldF8xMzVfYiwKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzIsNCw2 XSkgQVMgc2V0XzI0NgorKQorU0VMRUNUICdiaXRtYXBfbWF0Y2ggdnMgYm1zX2VxdWFsIChlcXVh bCBzZXRzKScgYXMgdGVzdCwKKyAgICAgICAodGVzdF9iaXRtYXBfbWF0Y2goc2V0XzEzNV9hLCBz ZXRfMTM1X2IpID0gMCkgPSB0ZXN0X2Jtc19lcXVhbChzZXRfMTM1X2EsIHNldF8xMzVfYikgYXMg cmVzdWx0CitGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2JpdG1hcF9tYXRjaCB2 cyBibXNfZXF1YWwgKGRpZmZlcmVudCBzZXRzKScgYXMgdGVzdCwKKyAgICAgICAodGVzdF9iaXRt YXBfbWF0Y2goc2V0XzEzNV9hLCBzZXRfMjQ2KSA9IDApID0gdGVzdF9ibXNfZXF1YWwoc2V0XzEz NV9hLCBzZXRfMjQ2KSBhcyByZXN1bHQKK0ZST00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVD VCAnYml0bWFwX21hdGNoIHZzIGJtc19lcXVhbCAoTlVMTCBjYXNlcyknIGFzIHRlc3QsCisgICAg ICAgKHRlc3RfYml0bWFwX21hdGNoKE5VTEwsIE5VTEwpID0gMCkgPSB0ZXN0X2Jtc19lcXVhbChO VUxMLCBOVUxMKSBhcyByZXN1bHQKK0ZST00gdGVzdF9zZXRzOworICAgICAgICAgICAgICAgICAg ICB0ZXN0ICAgICAgICAgICAgICAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgYml0bWFwX21hdGNoIHZzIGJtc19l cXVhbCAoZXF1YWwgc2V0cykgICAgIHwgdAorIGJpdG1hcF9tYXRjaCB2cyBibXNfZXF1YWwgKGRp ZmZlcmVudCBzZXRzKSB8IHQKKyBiaXRtYXBfbWF0Y2ggdnMgYm1zX2VxdWFsIChOVUxMIGNhc2Vz KSAgICAgfCB0CisoMyByb3dzKQorCistLSBUZXN0IHNwZWNpZmljIG1hdGNoIHZhbHVlcyBmb3Ig ZGVidWdnaW5nCitTRUxFQ1QgJ2JpdG1hcF9tYXRjaCBbMSwzLDVdIHZzIFsxLDMsNV0nIGFzIHRl c3QsCisgICAgICAgdGVzdF9iaXRtYXBfbWF0Y2godGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsx LDMsNV0pLCB0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1XSkpIGFzIG1hdGNoX3ZhbHVl OworICAgICAgICAgICAgICB0ZXN0ICAgICAgICAgICAgICAgfCBtYXRjaF92YWx1ZSAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYml0bWFwX21hdGNo IFsxLDMsNV0gdnMgWzEsMyw1XSB8ICAgICAgICAgICAwCisoMSByb3cpCisKK1NFTEVDVCAnYml0 bWFwX21hdGNoIFsxLDMsNV0gdnMgWzIsNCw2XScgYXMgdGVzdCwKKyAgICAgICB0ZXN0X2JpdG1h cF9tYXRjaCh0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1XSksIHRlc3RfYm1zX2Zyb21f YXJyYXkoQVJSQVlbMiw0LDZdKSkgYXMgbWF0Y2hfdmFsdWU7CisgICAgICAgICAgICAgIHRlc3Qg ICAgICAgICAgICAgICB8IG1hdGNoX3ZhbHVlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBiaXRtYXBfbWF0Y2ggWzEsMyw1XSB2cyBbMiw0LDZdIHwg ICAgICAgICAgIDEKKygxIHJvdykKKworLS0gVGVzdCBlZGdlIGNhc2VzCitTRUxFQ1QgJ2JpdG1h cF9tYXRjaCBlbXB0eSBhcnJheXMnIGFzIHRlc3QsCisgICAgICAgdGVzdF9iaXRtYXBfbWF0Y2go dGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVtdOjppbnRlZ2VyW10pLCB0ZXN0X2Jtc19mcm9tX2Fy cmF5KEFSUkFZW106OmludGVnZXJbXSkpID0gMCBhcyByZXN1bHQ7CisgICAgICAgICAgIHRlc3Qg ICAgICAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LQorIGJpdG1hcF9tYXRjaCBlbXB0eSBhcnJheXMgfCB0CisoMSByb3cpCisKKy0tIFRlc3QgMjI6 IFJhbmRvbSBvcGVyYXRpb25zIHN0cmVzcyB0ZXN0CitTRUxFQ1QgJ3JhbmRvbSBvcGVyYXRpb25z JyBhcyB0ZXN0LCB0ZXN0X3JhbmRvbV9vcGVyYXRpb25zKDEyMzQ1LCAxMDAwKSA+IDAgYXMgcmVz dWx0OworICAgICAgIHRlc3QgICAgICAgIHwgcmVzdWx0IAorLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLQorIHJhbmRvbSBvcGVyYXRpb25zIHwgdAorKDEgcm93KQorCistLSBFUlJPUiBDT05E SVRJT04gVEVTVFMKKy0tIFRlc3QgMjM6IEVycm9yIGNvbmRpdGlvbnMgKHRoZXNlIHNob3VsZCBw cm9kdWNlIEVSUk9ScykKKy0tIE5lZ2F0aXZlIG1lbWJlciB0ZXN0cworU0VMRUNUIHRlc3RfYm1z X21ha2Vfc2luZ2xldG9uKC0xKTsKK0VSUk9SOiAgbmVnYXRpdmUgYml0bWFwc2V0IG1lbWJlciBu b3QgYWxsb3dlZAorU0VMRUNUIHRlc3RfYm1zX2lzX21lbWJlcihOVUxMLCAtNSk7CitFUlJPUjog IG5lZ2F0aXZlIGJpdG1hcHNldCBtZW1iZXIgbm90IGFsbG93ZWQKK1NFTEVDVCB0ZXN0X2Jtc19h ZGRfbWVtYmVyKE5VTEwsIC0xMCk7CitFUlJPUjogIG5lZ2F0aXZlIGJpdG1hcHNldCBtZW1iZXIg bm90IGFsbG93ZWQKK1NFTEVDVCB0ZXN0X2Jtc19kZWxfbWVtYmVyKE5VTEwsIC0yMCk7CitFUlJP UjogIG5lZ2F0aXZlIGJpdG1hcHNldCBtZW1iZXIgbm90IGFsbG93ZWQKK1NFTEVDVCB0ZXN0X2Jt c19hZGRfcmFuZ2UoTlVMTCwgLTUsIDEwKTsKK0VSUk9SOiAgbmVnYXRpdmUgYml0bWFwc2V0IG1l bWJlciBub3QgYWxsb3dlZAorLS0gU2luZ2xldG9uIG1lbWJlciBlcnJvcnMKK1NFTEVDVCB0ZXN0 X2Jtc19zaW5nbGV0b25fbWVtYmVyKHRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwyXSkpOwor RVJST1I6ICBiaXRtYXBzZXQgaGFzIG11bHRpcGxlIG1lbWJlcnMKK0RST1AgRVhURU5TSU9OIHRl c3RfYml0bWFwc2V0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNl dC9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvbWVzb24uYnVp bGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg0OGY3YTQ0ZWI5Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC9tZXNvbi5i dWlsZApAQCAtMCwwICsxLDMzIEBACisjIENvcHlyaWdodCAoYykgMjAyNC0yMDI1LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCit0ZXN0X2JpdG1hcHNldF9zb3VyY2VzID0g ZmlsZXMoCisgICd0ZXN0X2JpdG1hcHNldC5jJywKKykKKworaWYgaG9zdF9zeXN0ZW0gPT0gJ3dp bmRvd3MnCisgIHRlc3RfYml0bWFwc2V0X3NvdXJjZXMgKz0gcmNfbGliX2dlbi5wcm9jZXNzKHdp bjMydmVyX3JjLCBleHRyYV9hcmdzOiBbCisgICAgJy0tTkFNRScsICd0ZXN0X2JpdG1hcHNldCcs CisgICAgJy0tRklMRURFU0MnLCAndGVzdF9iaXRtYXBzZXQgLSB0ZXN0IGNvZGUgZm9yIHNyYy9p bmNsdWRlL25vZGVzL2JpdG1hcHNldC5oJyxdKQorZW5kaWYKKwordGVzdF9iaXRtYXBzZXQgPSBz aGFyZWRfbW9kdWxlKCd0ZXN0X2JpdG1hcHNldCcsCisgIHRlc3RfYml0bWFwc2V0X3NvdXJjZXMs CisgIGt3YXJnczogcGdfdGVzdF9tb2RfYXJncywKKykKK3Rlc3RfaW5zdGFsbF9saWJzICs9IHRl c3RfYml0bWFwc2V0CisKK3Rlc3RfaW5zdGFsbF9kYXRhICs9IGZpbGVzKAorICAndGVzdF9iaXRt YXBzZXQuY29udHJvbCcsCisgICd0ZXN0X2JpdG1hcHNldC0tMS4wLnNxbCcsCispCisKK3Rlc3Rz ICs9IHsKKyAgJ25hbWUnOiAndGVzdF9iaXRtYXBzZXQnLAorICAnc2QnOiBtZXNvbi5jdXJyZW50 X3NvdXJjZV9kaXIoKSwKKyAgJ2JkJzogbWVzb24uY3VycmVudF9idWlsZF9kaXIoKSwKKyAgJ3Jl Z3Jlc3MnOiB7CisgICAgJ3NxbCc6IFsKKyAgICAgICd0ZXN0X2JpdG1hcHNldCcsCisgICAgXSwK KyAgfSwKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvc3Fs L3Rlc3RfYml0bWFwc2V0LnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvc3Fs L3Rlc3RfYml0bWFwc2V0LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uY2IzNDk2ZjQ1ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf Yml0bWFwc2V0L3NxbC90ZXN0X2JpdG1hcHNldC5zcWwKQEAgLTAsMCArMSwzNzIgQEAKK0NSRUFU RSBFWFRFTlNJT04gSUYgTk9UIEVYSVNUUyB0ZXN0X2JpdG1hcHNldDsKKworLS0gQkFTSUMgRlVO Q1RJT05BTElUWSBURVNUUworCistLSBUZXN0IGJtc192YWx1ZXMgZnVuY3Rpb24KKworU0VMRUNU ICd2YWx1ZXMgTlVMTCcgYXMgdGVzdCwgYm1zX3ZhbHVlcyhOVUxMKSBhcyByZXN1bHQ7CitTRUxF Q1QgJ3ZhbHVlcyBlbXB0eScgYXMgdGVzdCwgYm1zX3ZhbHVlcyh0ZXN0X2Jtc19mcm9tX2FycmF5 KEFSUkFZW106OmludGVnZXJbXSkpIGFzIHJlc3VsdDsKK1NFTEVDVCAndmFsdWVzIHNpbmdsZXRv bicgYXMgdGVzdCwgYm1zX3ZhbHVlcyh0ZXN0X2Jtc19tYWtlX3NpbmdsZXRvbig0MikpIGFzIHJl c3VsdDsKK1NFTEVDVCAndmFsdWVzIHNtYWxsIHNldCcgYXMgdGVzdCwgYm1zX3ZhbHVlcyh0ZXN0 X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1XSkpIGFzIHJlc3VsdDsKK1NFTEVDVCAndmFsdWVz IGxhcmdlciBzZXQnIGFzIHRlc3QsIGJtc192YWx1ZXModGVzdF9ibXNfZnJvbV9hcnJheShBUlJB WVswLDUsMTAsMTUsMjBdKSkgYXMgcmVzdWx0OworU0VMRUNUICd2YWx1ZXMgdW5zb3J0ZWQgaW5w dXQnIGFzIHRlc3QsIGJtc192YWx1ZXModGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsyMCw1LDE1 LDAsMTBdKSkgYXMgcmVzdWx0OworCistLSBUZXN0IDE6IEJhc2ljIHV0aWxpdHkgZnVuY3Rpb25z CitTRUxFQ1QgJ05VTEwgaW5wdXQgdG8gZnJvbV9hcnJheScgYXMgdGVzdCwgdGVzdF9ibXNfZnJv bV9hcnJheShOVUxMKSBJUyBOVUxMIGFzIHJlc3VsdDsKK1NFTEVDVCAnRW1wdHkgYXJyYXkgdG8g ZnJvbV9hcnJheScgYXMgdGVzdCwgdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVtdOjppbnRlZ2Vy W10pIElTIE5VTEwgYXMgcmVzdWx0OworU0VMRUNUICdOVUxMIGlucHV0IHRvIHRvX2FycmF5JyBh cyB0ZXN0LCB0ZXN0X2Jtc190b19hcnJheShOVUxMKSBJUyBOVUxMIGFzIHJlc3VsdDsKKworLS0g VGVzdCAyOiBTaW5nbGV0b24gb3BlcmF0aW9ucworU0VMRUNUICdtYWtlX3NpbmdsZXRvbig0Mikn IGFzIHRlc3QsIHRlc3RfYm1zX3RvX2FycmF5KHRlc3RfYm1zX21ha2Vfc2luZ2xldG9uKDQyKSkg PSBBUlJBWVs0Ml0gYXMgcmVzdWx0OworU0VMRUNUICdtYWtlX3NpbmdsZXRvbigwKScgYXMgdGVz dCwgdGVzdF9ibXNfdG9fYXJyYXkodGVzdF9ibXNfbWFrZV9zaW5nbGV0b24oMCkpID0gQVJSQVlb MF0gYXMgcmVzdWx0OworU0VMRUNUICdtYWtlX3NpbmdsZXRvbigxMDAwKScgYXMgdGVzdCwgdGVz dF9ibXNfdG9fYXJyYXkodGVzdF9ibXNfbWFrZV9zaW5nbGV0b24oMTAwMCkpID0gQVJSQVlbMTAw MF0gYXMgcmVzdWx0OworCistLSBUZXN0IDM6IEFkZCBtZW1iZXIgb3BlcmF0aW9ucworU0VMRUNU ICdhZGRfbWVtYmVyKE5VTEwsIDEwKScgYXMgdGVzdCwgdGVzdF9ibXNfdG9fYXJyYXkodGVzdF9i bXNfYWRkX21lbWJlcihOVUxMLCAxMCkpID0gQVJSQVlbMTBdIGFzIHJlc3VsdDsKK1NFTEVDVCAn YWRkX21lbWJlciBjb25zaXN0ZW5jeScgYXMgdGVzdCwgYm1zX3ZhbHVlcyh0ZXN0X2Jtc19hZGRf bWVtYmVyKE5VTEwsIDEwKSkgYXMgdmFsdWVzOworU0VMRUNUICdhZGRfbWVtYmVyIHRvIGV4aXN0 aW5nJyBhcyB0ZXN0LCB0ZXN0X2Jtc190b19hcnJheSh0ZXN0X2Jtc19hZGRfbWVtYmVyKHRlc3Rf Ym1zX21ha2Vfc2luZ2xldG9uKDUpLCAxMCkpID0gQVJSQVlbNSwxMF0gYXMgcmVzdWx0OworU0VM RUNUICdhZGRfbWVtYmVyIHNvcnRlZCcgYXMgdGVzdCwgdGVzdF9ibXNfdG9fYXJyYXkodGVzdF9i bXNfYWRkX21lbWJlcih0ZXN0X2Jtc19tYWtlX3NpbmdsZXRvbigxMCksIDUpKSA9IEFSUkFZWzUs MTBdIGFzIHJlc3VsdDsKK1NFTEVDVCAnYWRkX21lbWJlciBpZGVtcG90ZW50JyBhcyB0ZXN0LCBi bXNfdmFsdWVzKHRlc3RfYm1zX2FkZF9tZW1iZXIodGVzdF9ibXNfbWFrZV9zaW5nbGV0b24oMTAp LCAxMCkpIGFzIHZhbHVlczsKKworCistLSBUZXN0IDQ6IERlbGV0ZSBtZW1iZXIgb3BlcmF0aW9u cworU0VMRUNUICdkZWxfbWVtYmVyIGZyb20gTlVMTCcgYXMgdGVzdCwgdGVzdF9ibXNfZGVsX21l bWJlcihOVUxMLCAxMCkgSVMgTlVMTCBhcyByZXN1bHQ7CitTRUxFQ1QgJ2RlbF9tZW1iZXIgc2lu Z2xldG9uIGJlY29tZXMgZW1wdHknIGFzIHRlc3QsIHRlc3RfYm1zX2RlbF9tZW1iZXIodGVzdF9i bXNfbWFrZV9zaW5nbGV0b24oMTApLCAxMCkgSVMgTlVMTCBhcyByZXN1bHQ7CitTRUxFQ1QgJ2Rl bF9tZW1iZXIgbm8gY2hhbmdlJyBhcyB0ZXN0LCBibXNfdmFsdWVzKHRlc3RfYm1zX2RlbF9tZW1i ZXIodGVzdF9ibXNfbWFrZV9zaW5nbGV0b24oMTApLCA1KSkgYXMgdmFsdWVzOworU0VMRUNUICdk ZWxfbWVtYmVyIGZyb20gbWlkZGxlJyBhcyB0ZXN0LCB0ZXN0X2Jtc190b19hcnJheSh0ZXN0X2Jt c19kZWxfbWVtYmVyKHRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwyLDNdKSwgMikpID0gQVJS QVlbMSwzXSBhcyByZXN1bHQ7CisKKy0tIFNFVCBPUEVSQVRJT05TIFRFU1RTCisKKy0tIFRlc3Qg NTogVW5pb24gb3BlcmF0aW9ucworV0lUSCB0ZXN0X3NldHMgQVMgKAorICAgIFNFTEVDVAorCXRl c3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVdKSBBUyBzZXRfMTM1LAorCXRlc3RfYm1zX2Zy b21fYXJyYXkoQVJSQVlbMyw1LDddKSBBUyBzZXRfMzU3LAorCXRlc3RfYm1zX2Zyb21fYXJyYXko QVJSQVlbMiw0LDZdKSBBUyBzZXRfMjQ2CispCitTRUxFQ1QgJ3VuaW9uIG92ZXJsYXBwaW5nIHNl dHMnIGFzIHRlc3QsCisgICAgICAgdGVzdF9ibXNfdG9fYXJyYXkodGVzdF9ibXNfdW5pb24oc2V0 XzEzNSwgc2V0XzM1NykpID0gQVJSQVlbMSwzLDUsN10gYXMgcmVzdWx0CitGUk9NIHRlc3Rfc2V0 cworVU5JT04gQUxMCitTRUxFQ1QgJ3VuaW9uIHdpdGggTlVMTCcgYXMgdGVzdCwKKyAgICAgICB0 ZXN0X2Jtc190b19hcnJheSh0ZXN0X2Jtc191bmlvbihzZXRfMTM1LCBOVUxMKSkgPSBBUlJBWVsx LDMsNV0gYXMgcmVzdWx0CitGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ3VuaW9u IE5VTEwgd2l0aCBOVUxMJyBhcyB0ZXN0LAorICAgICAgIHRlc3RfYm1zX3VuaW9uKE5VTEwsIE5V TEwpIElTIE5VTEwgYXMgcmVzdWx0CitGUk9NIHRlc3Rfc2V0czsKKworLS0gVGVzdCA2OiBJbnRl cnNlY3Rpb24gb3BlcmF0aW9ucworV0lUSCB0ZXN0X3NldHMgQVMgKAorICAgIFNFTEVDVAorCXRl c3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVdKSBBUyBzZXRfMTM1LAorCXRlc3RfYm1zX2Zy b21fYXJyYXkoQVJSQVlbMyw1LDddKSBBUyBzZXRfMzU3LAorCXRlc3RfYm1zX2Zyb21fYXJyYXko QVJSQVlbMiw0LDZdKSBBUyBzZXRfMjQ2CispCitTRUxFQ1QgJ2ludGVyc2VjdCBvdmVybGFwcGlu ZyBzZXRzJyBhcyB0ZXN0LAorICAgICAgIHRlc3RfYm1zX3RvX2FycmF5KHRlc3RfYm1zX2ludGVy c2VjdChzZXRfMTM1LCBzZXRfMzU3KSkgPSBBUlJBWVszLDVdIGFzIHJlc3VsdAorRlJPTSB0ZXN0 X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdpbnRlcnNlY3QgZGlzam9pbnQgc2V0cycgYXMgdGVz dCwKKyAgICAgICB0ZXN0X2Jtc19pbnRlcnNlY3Qoc2V0XzEzNSwgc2V0XzI0NikgSVMgTlVMTCBh cyByZXN1bHQKK0ZST00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnaW50ZXJzZWN0IHdp dGggTlVMTCcgYXMgdGVzdCwKKyAgICAgICB0ZXN0X2Jtc19pbnRlcnNlY3Qoc2V0XzEzNSwgTlVM TCkgSVMgTlVMTCBhcyByZXN1bHQKK0ZST00gdGVzdF9zZXRzOworCistLSBUZXN0IDc6IERpZmZl cmVuY2Ugb3BlcmF0aW9ucworV0lUSCB0ZXN0X3NldHMgQVMgKAorICAgIFNFTEVDVAorCXRlc3Rf Ym1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVdKSBBUyBzZXRfMTM1LAorCXRlc3RfYm1zX2Zyb21f YXJyYXkoQVJSQVlbMyw1LDddKSBBUyBzZXRfMzU3LAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJS QVlbMiw0LDZdKSBBUyBzZXRfMjQ2CispCitTRUxFQ1QgJ2RpZmZlcmVuY2Ugb3ZlcmxhcHBpbmcg c2V0cycgYXMgdGVzdCwKKyAgICAgICB0ZXN0X2Jtc190b19hcnJheSh0ZXN0X2Jtc19kaWZmZXJl bmNlKHNldF8xMzUsIHNldF8zNTcpKSA9IEFSUkFZWzFdIGFzIHJlc3VsdAorRlJPTSB0ZXN0X3Nl dHMKK1VOSU9OIEFMTAorU0VMRUNUICdkaWZmZXJlbmNlIGRpc2pvaW50IHNldHMnIGFzIHRlc3Qs CisgICAgICAgdGVzdF9ibXNfdG9fYXJyYXkodGVzdF9ibXNfZGlmZmVyZW5jZShzZXRfMTM1LCBz ZXRfMjQ2KSkgPSBBUlJBWVsxLDMsNV0gYXMgcmVzdWx0CitGUk9NIHRlc3Rfc2V0cworVU5JT04g QUxMCitTRUxFQ1QgJ2RpZmZlcmVuY2UgaWRlbnRpY2FsIHNldHMnIGFzIHRlc3QsCisgICAgICAg dGVzdF9ibXNfZGlmZmVyZW5jZShzZXRfMTM1LCBzZXRfMTM1KSBJUyBOVUxMIGFzIHJlc3VsdAor RlJPTSB0ZXN0X3NldHM7CisKKy0tIE1FTUJFUlNISVAgQU5EIENPTVBBUklTT04gVEVTVFMKKwor LS0gVGVzdCA4OiBNZW1iZXJzaGlwIHRlc3RzCitXSVRIIHRlc3Rfc2V0IEFTIChTRUxFQ1QgdGVz dF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDMsNV0pIEFTIHNldF8xMzUpCitTRUxFQ1QgJ2lzX21l bWJlciBleGlzdGluZycgYXMgdGVzdCwgdGVzdF9ibXNfaXNfbWVtYmVyKHNldF8xMzUsIDEpID0g dHJ1ZSBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldAorVU5JT04gQUxMCitTRUxFQ1QgJ2lzX21lbWJl ciBtaXNzaW5nJyBhcyB0ZXN0LCB0ZXN0X2Jtc19pc19tZW1iZXIoc2V0XzEzNSwgMikgPSBmYWxz ZSBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldAorVU5JT04gQUxMCitTRUxFQ1QgJ2lzX21lbWJlciBl eGlzdGluZyBtaWRkbGUnIGFzIHRlc3QsIHRlc3RfYm1zX2lzX21lbWJlcihzZXRfMTM1LCAzKSA9 IHRydWUgYXMgcmVzdWx0IEZST00gdGVzdF9zZXQKK1VOSU9OIEFMTAorU0VMRUNUICdpc19tZW1i ZXIgTlVMTCBzZXQnIGFzIHRlc3QsIHRlc3RfYm1zX2lzX21lbWJlcihOVUxMLCAxKSA9IGZhbHNl IGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0OworCistLSBUZXN0IDk6IFNldCBjYXJkaW5hbGl0eQor U0VMRUNUICdudW1fbWVtYmVycyBOVUxMJyBhcyB0ZXN0LCB0ZXN0X2Jtc19udW1fbWVtYmVycyhO VUxMKSA9IDAgYXMgcmVzdWx0OworU0VMRUNUICdudW1fbWVtYmVycyBzbWFsbCBzZXQnIGFzIHRl c3QsIHRlc3RfYm1zX251bV9tZW1iZXJzKHRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVd KSkgPSAzIGFzIHJlc3VsdDsKK1NFTEVDVCAnbnVtX21lbWJlcnMgbGFyZ2VyIHNldCcgYXMgdGVz dCwgdGVzdF9ibXNfbnVtX21lbWJlcnModGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsyLDQsNiw4 LDEwXSkpID0gNSBhcyByZXN1bHQ7CisKKy0tIFRlc3QgMTA6IFNldCBlcXVhbGl0eSBhbmQgY29t cGFyaXNvbgorV0lUSCB0ZXN0X3NldHMgQVMgKAorICAgIFNFTEVDVAorCXRlc3RfYm1zX2Zyb21f YXJyYXkoQVJSQVlbMSwzLDVdKSBBUyBzZXRfMTM1X2EsCisJdGVzdF9ibXNfZnJvbV9hcnJheShB UlJBWVsxLDMsNV0pIEFTIHNldF8xMzVfYiwKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzIs NCw2XSkgQVMgc2V0XzI0NiwKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsM10pIEFTIHNl dF8xMworKQorU0VMRUNUICdlcXVhbCBOVUxMIE5VTEwnIGFzIHRlc3QsIHRlc3RfYm1zX2VxdWFs KE5VTEwsIE5VTEwpID0gdHJ1ZSBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAor U0VMRUNUICdlcXVhbCBOVUxMIHNldCcgYXMgdGVzdCwgdGVzdF9ibXNfZXF1YWwoTlVMTCwgc2V0 XzEzNV9hKSA9IGZhbHNlIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxF Q1QgJ2VxdWFsIHNldCBOVUxMJyBhcyB0ZXN0LCB0ZXN0X2Jtc19lcXVhbChzZXRfMTM1X2EsIE5V TEwpID0gZmFsc2UgYXMgcmVzdWx0IEZST00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAn ZXF1YWwgaWRlbnRpY2FsIHNldHMnIGFzIHRlc3QsIHRlc3RfYm1zX2VxdWFsKHNldF8xMzVfYSwg c2V0XzEzNV9iKSA9IHRydWUgYXMgcmVzdWx0IEZST00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NF TEVDVCAnZXF1YWwgZGlmZmVyZW50IHNldHMnIGFzIHRlc3QsIHRlc3RfYm1zX2VxdWFsKHNldF8x MzVfYSwgc2V0XzI0NikgPSBmYWxzZSBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFM TAorU0VMRUNUICdjb21wYXJlIE5VTEwgTlVMTCcgYXMgdGVzdCwgdGVzdF9ibXNfY29tcGFyZShO VUxMLCBOVUxMKSA9IDAgYXMgcmVzdWx0IEZST00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVD VCAnY29tcGFyZSBOVUxMIHNldCcgYXMgdGVzdCwgdGVzdF9ibXNfY29tcGFyZShOVUxMLCBzZXRf MTMpID0gLTEgYXMgcmVzdWx0IEZST00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnY29t cGFyZSBzZXQgTlVMTCcgYXMgdGVzdCwgdGVzdF9ibXNfY29tcGFyZShzZXRfMTMsIE5VTEwpID0g MSBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdjb21wYXJlIGVx dWFsIHNldHMnIGFzIHRlc3QsIHRlc3RfYm1zX2NvbXBhcmUoc2V0XzEzLCBzZXRfMTMpID0gMCBh cyByZXN1bHQgRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdjb21wYXJlIHN1YnNl dCBzdXBlcnNldCcgYXMgdGVzdCwgdGVzdF9ibXNfY29tcGFyZShzZXRfMTMsIHNldF8xMzVfYSkg PSAtMSBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdjb21wYXJl IHN1cGVyc2V0IHN1YnNldCcgYXMgdGVzdCwgdGVzdF9ibXNfY29tcGFyZShzZXRfMTM1X2EsIHNl dF8xMykgPSAxIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0czsKKworLS0gQURWQU5DRUQgT1BFUkFU SU9OUyBURVNUUworCistLSBUZXN0IDExOiBSYW5nZSBvcGVyYXRpb25zCitTRUxFQ1QgJ2FkZF9y YW5nZSBiYXNpYycgYXMgdGVzdCwgdGVzdF9ibXNfdG9fYXJyYXkodGVzdF9ibXNfYWRkX3Jhbmdl KE5VTEwsIDUsIDcpKSA9IEFSUkFZWzUsNiw3XSBhcyByZXN1bHQ7CitTRUxFQ1QgJ2FkZF9yYW5n ZSBzaW5nbGUgZWxlbWVudCcgYXMgdGVzdCwgdGVzdF9ibXNfdG9fYXJyYXkodGVzdF9ibXNfYWRk X3JhbmdlKE5VTEwsIDUsIDUpKSA9IEFSUkFZWzVdIGFzIHJlc3VsdDsKK1NFTEVDVCAnYWRkX3Jh bmdlIHRvIGV4aXN0aW5nJyBhcyB0ZXN0LCB0ZXN0X2Jtc190b19hcnJheSh0ZXN0X2Jtc19hZGRf cmFuZ2UodGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDEwXSksIDUsIDcpKSA9IEFSUkFZWzEs NSw2LDcsMTBdIGFzIHJlc3VsdDsKKworLS0gVGVzdCAxMjogTWVtYmVyc2hpcCB0eXBlcworU0VM RUNUICdtZW1iZXJzaGlwIGVtcHR5JyBhcyB0ZXN0LCB0ZXN0X2Jtc19tZW1iZXJzaGlwKE5VTEwp ID0gMCBhcyByZXN1bHQ7CitTRUxFQ1QgJ21lbWJlcnNoaXAgc2luZ2xldG9uJyBhcyB0ZXN0LCB0 ZXN0X2Jtc19tZW1iZXJzaGlwKHRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbNDJdKSkgPSAxIGFz IHJlc3VsdDsKK1NFTEVDVCAnbWVtYmVyc2hpcCBtdWx0aXBsZScgYXMgdGVzdCwgdGVzdF9ibXNf bWVtYmVyc2hpcCh0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMiwzXSkpID0gMiBhcyByZXN1 bHQ7CisKKy0tIFRlc3QgMTM6IFNpbmdsZXRvbiBtZW1iZXIgZXh0cmFjdGlvbgorU0VMRUNUICdz aW5nbGV0b25fbWVtYmVyIHZhbGlkJyBhcyB0ZXN0LCB0ZXN0X2Jtc19zaW5nbGV0b25fbWVtYmVy KHRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbNDJdKSkgPSA0MiBhcyByZXN1bHQ7CisKKy0tIFRl c3QgMTQ6IFNldCBpdGVyYXRpb24KK1dJVEggdGVzdF9zZXQgQVMgKFNFTEVDVCB0ZXN0X2Jtc19m cm9tX2FycmF5KEFSUkFZWzUsMTAsMTUsMjBdKSBBUyBzZXRfbnVtYmVycykKK1NFTEVDVCAnbmV4 dF9tZW1iZXIgZmlyc3QnIGFzIHRlc3QsIHRlc3RfYm1zX25leHRfbWVtYmVyKHNldF9udW1iZXJz LCAtMSkgPSA1IGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0CitVTklPTiBBTEwKK1NFTEVDVCAnbmV4 dF9tZW1iZXIgc2Vjb25kJyBhcyB0ZXN0LCB0ZXN0X2Jtc19uZXh0X21lbWJlcihzZXRfbnVtYmVy cywgNSkgPSAxMCBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldAorVU5JT04gQUxMCitTRUxFQ1QgJ25l eHRfbWVtYmVyIHBhc3QgZW5kJyBhcyB0ZXN0LCB0ZXN0X2Jtc19uZXh0X21lbWJlcihzZXRfbnVt YmVycywgMjApID0gLTIgYXMgcmVzdWx0IEZST00gdGVzdF9zZXQKK1VOSU9OIEFMTAorU0VMRUNU ICduZXh0X21lbWJlciBlbXB0eSBzZXQnIGFzIHRlc3QsIHRlc3RfYm1zX25leHRfbWVtYmVyKE5V TEwsIC0xKSA9IC0yIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0CitVTklPTiBBTEwKK1NFTEVDVCAn cHJldl9tZW1iZXIgbGFzdCcgYXMgdGVzdCwgdGVzdF9ibXNfcHJldl9tZW1iZXIoc2V0X251bWJl cnMsIDIxKSA9IDIwIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0CitVTklPTiBBTEwKK1NFTEVDVCAn cHJldl9tZW1iZXIgcGVudWx0aW1hdGUnIGFzIHRlc3QsIHRlc3RfYm1zX3ByZXZfbWVtYmVyKHNl dF9udW1iZXJzLCAyMCkgPSAxNSBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldAorVU5JT04gQUxMCitT RUxFQ1QgJ3ByZXZfbWVtYmVyIHBhc3QgYmVnaW5uaW5nJyBhcyB0ZXN0LCB0ZXN0X2Jtc19wcmV2 X21lbWJlcihzZXRfbnVtYmVycywgNSkgPSAtMiBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldAorVU5J T04gQUxMCitTRUxFQ1QgJ3ByZXZfbWVtYmVyIGVtcHR5IHNldCcgYXMgdGVzdCwgdGVzdF9ibXNf cHJldl9tZW1iZXIoTlVMTCwgMTAwKSA9IC0yIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0OworCist LSBUZXN0IDE1OiBIYXNoIGZ1bmN0aW9ucworV0lUSCB0ZXN0X3NldHMgQVMgKAorICAgIFNFTEVD VAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVdKSBBUyBzZXRfMTM1YSwKKwl0ZXN0 X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1XSkgQVMgc2V0XzEzNWIsCisJdGVzdF9ibXNfZnJv bV9hcnJheShBUlJBWVsyLDQsNl0pIEFTIHNldF8yNDYKKykKK1NFTEVDVCAnaGFzaCBOVUxMJyBh cyB0ZXN0LCB0ZXN0X2Jtc19oYXNoX3ZhbHVlKE5VTEwpID0gMCBhcyByZXN1bHQgRlJPTSB0ZXN0 X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdoYXNoIGNvbnNpc3RlbmN5JyBhcyB0ZXN0LCB0ZXN0 X2Jtc19oYXNoX3ZhbHVlKHNldF8xMzVhKSA9IHRlc3RfYm1zX2hhc2hfdmFsdWUoc2V0XzEzNWIp IGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2hhc2ggZGlmZmVy ZW50IHNldHMnIGFzIHRlc3QsIHRlc3RfYm1zX2hhc2hfdmFsdWUoc2V0XzEzNWEpICE9IHRlc3Rf Ym1zX2hhc2hfdmFsdWUoc2V0XzI0NikgYXMgcmVzdWx0IEZST00gdGVzdF9zZXRzOworCistLSBU ZXN0IDE2OiBTZXQgb3ZlcmxhcAorV0lUSCB0ZXN0X3NldHMgQVMgKAorICAgIFNFTEVDVAorCXRl c3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVdKSBBUyBzZXRfMTM1LAorCXRlc3RfYm1zX2Zy b21fYXJyYXkoQVJSQVlbMyw1LDddKSBBUyBzZXRfMzU3LAorCXRlc3RfYm1zX2Zyb21fYXJyYXko QVJSQVlbMiw0LDZdKSBBUyBzZXRfMjQ2CispCitTRUxFQ1QgJ292ZXJsYXAgZXhpc3RpbmcnIGFz IHRlc3QsIHRlc3RfYm1zX292ZXJsYXAoc2V0XzEzNSwgc2V0XzM1NykgPSB0cnVlIGFzIHJlc3Vs dCBGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ292ZXJsYXAgbm9uZScgYXMgdGVz dCwgdGVzdF9ibXNfb3ZlcmxhcChzZXRfMTM1LCBzZXRfMjQ2KSA9IGZhbHNlIGFzIHJlc3VsdCBG Uk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ292ZXJsYXAgd2l0aCBOVUxMJyBhcyB0 ZXN0LCB0ZXN0X2Jtc19vdmVybGFwKE5VTEwsIHNldF8xMzUpID0gZmFsc2UgYXMgcmVzdWx0IEZS T00gdGVzdF9zZXRzOworCistLSBUZXN0IDE3OiBTdWJzZXQgcmVsYXRpb25zCitXSVRIIHRlc3Rf c2V0cyBBUyAoCisgICAgU0VMRUNUCisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDNdKSBB UyBzZXRfMTMsCisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDMsNV0pIEFTIHNldF8xMzUs CisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsyLDRdKSBBUyBzZXRfMjQKKykKK1NFTEVDVCAn c3Vic2V0IE5VTEwgaXMgc3Vic2V0IG9mIGFsbCcgYXMgdGVzdCwgdGVzdF9ibXNfaXNfc3Vic2V0 KE5VTEwsIHNldF8xMzUpID0gdHJ1ZSBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFM TAorU0VMRUNUICdzdWJzZXQgcHJvcGVyIHN1YnNldCcgYXMgdGVzdCwgdGVzdF9ibXNfaXNfc3Vi c2V0KHNldF8xMywgc2V0XzEzNSkgPSB0cnVlIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0cworVU5J T04gQUxMCitTRUxFQ1QgJ3N1YnNldCBpbXByb3BlciBzdWJzZXQnIGFzIHRlc3QsIHRlc3RfYm1z X2lzX3N1YnNldChzZXRfMTM1LCBzZXRfMTMpID0gZmFsc2UgYXMgcmVzdWx0IEZST00gdGVzdF9z ZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnc3Vic2V0IGRpc2pvaW50IHNldHMnIGFzIHRlc3QsIHRl c3RfYm1zX2lzX3N1YnNldChzZXRfMTMsIHNldF8yNCkgPSBmYWxzZSBhcyByZXN1bHQgRlJPTSB0 ZXN0X3NldHM7CisKKy0tIFRlc3QgMTg6IENvcHkgb3BlcmF0aW9ucworV0lUSCB0ZXN0X3NldCBB UyAoU0VMRUNUIHRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDUsN10pIEFTIG9yaWdpbmFs KQorU0VMRUNUICdjb3B5IE5VTEwnIGFzIHRlc3QsIHRlc3RfYm1zX2NvcHkoTlVMTCkgSVMgTlVM TCBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldAorVU5JT04gQUxMCitTRUxFQ1QgJ2NvcHkgZXF1YWxp dHknIGFzIHRlc3QsIHRlc3RfYm1zX2VxdWFsKG9yaWdpbmFsLCB0ZXN0X2Jtc19jb3B5KG9yaWdp bmFsKSkgPSB0cnVlIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0OworCistLSBUZXN0IDE5OiBBZGQg bWVtYmVycyBvcGVyYXRpb24KK1dJVEggYmFzZV9zZXRzIEFTICgKKyAgICBTRUxFQ1QKKwl0ZXN0 X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsM10pIEFTIHNldF8xMywKKwl0ZXN0X2Jtc19mcm9tX2Fy cmF5KEFSUkFZWzUsN10pIEFTIHNldF81NworKQorU0VMRUNUICdhZGRfbWVtYmVycyBvcGVyYXRp b24nIGFzIHRlc3QsCisgICAgICAgdGVzdF9ibXNfdG9fYXJyYXkodGVzdF9ibXNfYWRkX21lbWJl cnMoc2V0XzEzLCBzZXRfNTcpKSA9IEFSUkFZWzEsMyw1LDddIGFzIHJlc3VsdAorRlJPTSBiYXNl X3NldHM7CisKKy0tIFRlc3QgMjA6IFRlc3QgaGFzaCBjb25zaXN0ZW5jeQorCitXSVRIIHRlc3Rf c2V0cyBBUyAoCisgICAgU0VMRUNUCisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDMsNV0p IEFTIHNldF8xMzVfYSwKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1XSkgQVMgc2V0 XzEzNV9iLAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMiw0LDZdKSBBUyBzZXRfMjQ2Cisp CitTRUxFQ1QgJ2JpdG1hcF9oYXNoIE5VTEwnIGFzIHRlc3QsCisgICAgICAgdGVzdF9iaXRtYXBf aGFzaChOVUxMKSA9IDAgYXMgcmVzdWx0CitVTklPTiBBTEwKK1NFTEVDVCAnYml0bWFwX2hhc2gg Y29uc2lzdGVuY3knIGFzIHRlc3QsCisgICAgICAgdGVzdF9iaXRtYXBfaGFzaChzZXRfMTM1X2Ep ID0gdGVzdF9iaXRtYXBfaGFzaChzZXRfMTM1X2IpIGFzIHJlc3VsdAorRlJPTSB0ZXN0X3NldHMK K1VOSU9OIEFMTAorU0VMRUNUICdiaXRtYXBfaGFzaCB2cyBibXNfaGFzaF92YWx1ZScgYXMgdGVz dCwKKyAgICAgICB0ZXN0X2JpdG1hcF9oYXNoKHNldF8xMzVfYSkgPSB0ZXN0X2Jtc19oYXNoX3Zh bHVlKHNldF8xMzVfYSkgYXMgcmVzdWx0CitGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxF Q1QgJ2JpdG1hcF9oYXNoIGRpZmZlcmVudCBzZXRzJyBhcyB0ZXN0LAorICAgICAgIHRlc3RfYml0 bWFwX2hhc2goc2V0XzEzNV9hKSAhPSB0ZXN0X2JpdG1hcF9oYXNoKHNldF8yNDYpIGFzIHJlc3Vs dAorRlJPTSB0ZXN0X3NldHM7CisKKy0tIEFyY2hpdGVjdHVyZS1hd2FyZSBoYXNoIHRlc3RpbmcK K1dJVEggYXJjaF9pbmZvIEFTICgKKyAgICBTRUxFQ1QKKyAgICAgICAgQ0FTRQorICAgICAgICAg ICAgV0hFTiBwZ19jb2x1bW5fc2l6ZSgxOjpiaWdpbnQpID0gOCBUSEVOICc2NGJpdCcKKyAgICAg ICAgICAgIEVMU0UgJzMyYml0JworICAgICAgICBFTkQgYXMgYXJjaGl0ZWN0dXJlCispLAorZXhw ZWN0ZWRfdmFsdWVzIEFTICgKKyAgICBTRUxFQ1QKKyAgICAgICAgYXJjaGl0ZWN0dXJlLAorICAg ICAgICBDQVNFIGFyY2hpdGVjdHVyZQorICAgICAgICAgICAgV0hFTiAnNjRiaXQnIFRIRU4gMAor ICAgICAgICAgICAgV0hFTiAnMzJiaXQnIFRIRU4gMAorICAgICAgICBFTkQgYXMgaGFzaF9udWxs LAorICAgICAgICBDQVNFIGFyY2hpdGVjdHVyZQorICAgICAgICAgICAgV0hFTiAnNjRiaXQnIFRI RU4gNDk4NzA3NzgKKyAgICAgICAgICAgIFdIRU4gJzMyYml0JyBUSEVOIDE1MDk3NTI1MjAKKyAg ICAgICAgRU5EIGFzIGhhc2hfMTM1LAorICAgICAgICBDQVNFIGFyY2hpdGVjdHVyZQorICAgICAg ICAgICAgV0hFTiAnNjRiaXQnIFRIRU4gLTMwMzkyMTYwNgorICAgICAgICAgICAgV0hFTiAnMzJi aXQnIFRIRU4gLTUwNzI4MDY2NgorICAgICAgICBFTkQgYXMgaGFzaF8yNDYKKyAgICBGUk9NIGFy Y2hfaW5mbworKQorU0VMRUNUICdleHBlY3RlZCBoYXNoIE5VTEwnIGFzIHRlc3QsCisgICAgICAg dGVzdF9iaXRtYXBfaGFzaChOVUxMKSA9IGhhc2hfbnVsbCBhcyByZXN1bHQKK0ZST00gZXhwZWN0 ZWRfdmFsdWVzCitVTklPTiBBTEwKK1NFTEVDVCAnZXhwZWN0ZWQgaGFzaCBbMSwzLDVdJyBhcyB0 ZXN0LAorICAgICAgIHRlc3RfYml0bWFwX2hhc2godGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsx LDMsNV0pKSA9IGhhc2hfMTM1IGFzIHJlc3VsdAorRlJPTSBleHBlY3RlZF92YWx1ZXMKK1VOSU9O IEFMTAorU0VMRUNUICdleHBlY3RlZCBoYXNoIFsyLDQsNl0nIGFzIHRlc3QsCisgICAgICAgdGVz dF9iaXRtYXBfaGFzaCh0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzIsNCw2XSkpID0gaGFzaF8y NDYgYXMgcmVzdWx0CitGUk9NIGV4cGVjdGVkX3ZhbHVlczsKKworLS0gVGVzdCAyMTogYml0bWFw X21hdGNoIGZ1bmN0aW9uCisKK1dJVEggdGVzdF9zZXRzIEFTICgKKyAgICBTRUxFQ1QKKwl0ZXN0 X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1XSkgQVMgc2V0XzEzNV9hLAorCXRlc3RfYm1zX2Zy b21fYXJyYXkoQVJSQVlbMSwzLDVdKSBBUyBzZXRfMTM1X2IsCisJdGVzdF9ibXNfZnJvbV9hcnJh eShBUlJBWVsyLDQsNl0pIEFTIHNldF8yNDYsCisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsx LDNdKSBBUyBzZXRfMTMKKykKK1NFTEVDVCAnYml0bWFwX21hdGNoIE5VTEwgTlVMTCAoc2hvdWxk IGJlIDApJyBhcyB0ZXN0LAorICAgICAgIHRlc3RfYml0bWFwX21hdGNoKE5VTEwsIE5VTEwpID0g MCBhcyByZXN1bHQKK1VOSU9OIEFMTAorU0VMRUNUICdiaXRtYXBfbWF0Y2ggTlVMTCBzZXQgKHNo b3VsZCBiZSAxKScgYXMgdGVzdCwKKyAgICAgICB0ZXN0X2JpdG1hcF9tYXRjaChOVUxMLCBzZXRf MTM1X2EpID0gMSBhcyByZXN1bHQKK0ZST00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAn Yml0bWFwX21hdGNoIHNldCBOVUxMIChzaG91bGQgYmUgMSknIGFzIHRlc3QsCisgICAgICAgdGVz dF9iaXRtYXBfbWF0Y2goc2V0XzEzNV9hLCBOVUxMKSA9IDEgYXMgcmVzdWx0CitGUk9NIHRlc3Rf c2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2JpdG1hcF9tYXRjaCBpZGVudGljYWwgc2V0cyAoc2hv dWxkIGJlIDApJyBhcyB0ZXN0LAorICAgICAgIHRlc3RfYml0bWFwX21hdGNoKHNldF8xMzVfYSwg c2V0XzEzNV9iKSA9IDAgYXMgcmVzdWx0CitGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxF Q1QgJ2JpdG1hcF9tYXRjaCBkaWZmZXJlbnQgc2V0cyAoc2hvdWxkIGJlIDEpJyBhcyB0ZXN0LAor ICAgICAgIHRlc3RfYml0bWFwX21hdGNoKHNldF8xMzVfYSwgc2V0XzI0NikgPSAxIGFzIHJlc3Vs dAorRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdiaXRtYXBfbWF0Y2ggc3Vic2V0 L3N1cGVyc2V0IChzaG91bGQgYmUgMSknIGFzIHRlc3QsCisgICAgICAgdGVzdF9iaXRtYXBfbWF0 Y2goc2V0XzEzLCBzZXRfMTM1X2EpID0gMSBhcyByZXN1bHQKK0ZST00gdGVzdF9zZXRzOworCist LSBUZXN0IHJlbGF0aW9uc2hpcCB3aXRoIGJtc19lcXVhbAorV0lUSCB0ZXN0X3NldHMgQVMgKAor ICAgIFNFTEVDVAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVdKSBBUyBzZXRfMTM1 X2EsCisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDMsNV0pIEFTIHNldF8xMzVfYiwKKwl0 ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzIsNCw2XSkgQVMgc2V0XzI0NgorKQorU0VMRUNUICdi aXRtYXBfbWF0Y2ggdnMgYm1zX2VxdWFsIChlcXVhbCBzZXRzKScgYXMgdGVzdCwKKyAgICAgICAo dGVzdF9iaXRtYXBfbWF0Y2goc2V0XzEzNV9hLCBzZXRfMTM1X2IpID0gMCkgPSB0ZXN0X2Jtc19l cXVhbChzZXRfMTM1X2EsIHNldF8xMzVfYikgYXMgcmVzdWx0CitGUk9NIHRlc3Rfc2V0cworVU5J T04gQUxMCitTRUxFQ1QgJ2JpdG1hcF9tYXRjaCB2cyBibXNfZXF1YWwgKGRpZmZlcmVudCBzZXRz KScgYXMgdGVzdCwKKyAgICAgICAodGVzdF9iaXRtYXBfbWF0Y2goc2V0XzEzNV9hLCBzZXRfMjQ2 KSA9IDApID0gdGVzdF9ibXNfZXF1YWwoc2V0XzEzNV9hLCBzZXRfMjQ2KSBhcyByZXN1bHQKK0ZS T00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnYml0bWFwX21hdGNoIHZzIGJtc19lcXVh bCAoTlVMTCBjYXNlcyknIGFzIHRlc3QsCisgICAgICAgKHRlc3RfYml0bWFwX21hdGNoKE5VTEws IE5VTEwpID0gMCkgPSB0ZXN0X2Jtc19lcXVhbChOVUxMLCBOVUxMKSBhcyByZXN1bHQKK0ZST00g dGVzdF9zZXRzOworCistLSBUZXN0IHNwZWNpZmljIG1hdGNoIHZhbHVlcyBmb3IgZGVidWdnaW5n CitTRUxFQ1QgJ2JpdG1hcF9tYXRjaCBbMSwzLDVdIHZzIFsxLDMsNV0nIGFzIHRlc3QsCisgICAg ICAgdGVzdF9iaXRtYXBfbWF0Y2godGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDMsNV0pLCB0 ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1XSkpIGFzIG1hdGNoX3ZhbHVlOworU0VMRUNU ICdiaXRtYXBfbWF0Y2ggWzEsMyw1XSB2cyBbMiw0LDZdJyBhcyB0ZXN0LAorICAgICAgIHRlc3Rf Yml0bWFwX21hdGNoKHRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVdKSwgdGVzdF9ibXNf ZnJvbV9hcnJheShBUlJBWVsyLDQsNl0pKSBhcyBtYXRjaF92YWx1ZTsKKworLS0gVGVzdCBlZGdl IGNhc2VzCitTRUxFQ1QgJ2JpdG1hcF9tYXRjaCBlbXB0eSBhcnJheXMnIGFzIHRlc3QsCisgICAg ICAgdGVzdF9iaXRtYXBfbWF0Y2godGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVtdOjppbnRlZ2Vy W10pLCB0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZW106OmludGVnZXJbXSkpID0gMCBhcyByZXN1 bHQ7CisKKy0tIFRlc3QgMjI6IFJhbmRvbSBvcGVyYXRpb25zIHN0cmVzcyB0ZXN0CitTRUxFQ1Qg J3JhbmRvbSBvcGVyYXRpb25zJyBhcyB0ZXN0LCB0ZXN0X3JhbmRvbV9vcGVyYXRpb25zKDEyMzQ1 LCAxMDAwKSA+IDAgYXMgcmVzdWx0OworCistLSBFUlJPUiBDT05ESVRJT04gVEVTVFMKKworLS0g VGVzdCAyMzogRXJyb3IgY29uZGl0aW9ucyAodGhlc2Ugc2hvdWxkIHByb2R1Y2UgRVJST1JzKQor CistLSBOZWdhdGl2ZSBtZW1iZXIgdGVzdHMKK1NFTEVDVCB0ZXN0X2Jtc19tYWtlX3NpbmdsZXRv bigtMSk7CitTRUxFQ1QgdGVzdF9ibXNfaXNfbWVtYmVyKE5VTEwsIC01KTsKK1NFTEVDVCB0ZXN0 X2Jtc19hZGRfbWVtYmVyKE5VTEwsIC0xMCk7CitTRUxFQ1QgdGVzdF9ibXNfZGVsX21lbWJlcihO VUxMLCAtMjApOworU0VMRUNUIHRlc3RfYm1zX2FkZF9yYW5nZShOVUxMLCAtNSwgMTApOworCist LSBTaW5nbGV0b24gbWVtYmVyIGVycm9ycworU0VMRUNUIHRlc3RfYm1zX3NpbmdsZXRvbl9tZW1i ZXIodGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDJdKSk7CisKK0RST1AgRVhURU5TSU9OIHRl c3RfYml0bWFwc2V0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNl dC90ZXN0X2JpdG1hcHNldC0tMS4wLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBz ZXQvdGVzdF9iaXRtYXBzZXQtLTEuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmJjYWM5OGUyZDg1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1hcHNldC0tMS4wLnNxbApAQCAtMCwwICsxLDE1NSBA QAorLyogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1hcHNldC0tMS4w LnNxbCAqLworCistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRo ZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9O IHRlc3RfYml0bWFwc2V0IiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKKworLS0gVXRpbGl0eSBm dW5jdGlvbnMKK0NSRUFURSBGVU5DVElPTiB0ZXN0X2Jtc19mcm9tX2FycmF5KGludGVnZXJbXSkK K1JFVFVSTlMgYnl0ZWEKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFU RSBGVU5DVElPTiB0ZXN0X2Jtc190b19hcnJheShieXRlYSkKK1JFVFVSTlMgaW50ZWdlcltdCitB UyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOworCitDUkVBVEUgRlVOQ1RJT04gYm1zX3Zh bHVlcyhieXRlYSkKK1JFVFVSTlMgdGV4dAorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0Ug QyBTVEFCTEU7CisKKy0tIEJpdG1hcHNldCBBUEkgZnVuY3Rpb25zCitDUkVBVEUgRlVOQ1RJT04g dGVzdF9ibXNfbWFrZV9zaW5nbGV0b24oaW50ZWdlcikKK1JFVFVSTlMgYnl0ZWEgU1RSSUNUCitB UyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOworCitDUkVBVEUgRlVOQ1RJT04gdGVzdF9i bXNfYWRkX21lbWJlcihieXRlYSwgaW50ZWdlcikKK1JFVFVSTlMgYnl0ZWEKK0FTICdNT0RVTEVf UEFUSE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiB0ZXN0X2Jtc19kZWxfbWVt YmVyKGJ5dGVhLCBpbnRlZ2VyKQorUkVUVVJOUyBieXRlYQorQVMgJ01PRFVMRV9QQVRITkFNRScg TEFOR1VBR0UgQzsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfYm1zX2lzX21lbWJlcihieXRlYSwg aW50ZWdlcikKK1JFVFVSTlMgYm9vbGVhbgorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0Ug QzsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfYm1zX251bV9tZW1iZXJzKGJ5dGVhKQorUkVUVVJO UyBpbnRlZ2VyCitBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOworCitDUkVBVEUgRlVO Q1RJT04gdGVzdF9ibXNfY29weShieXRlYSkKK1JFVFVSTlMgYnl0ZWEKK0FTICdNT0RVTEVfUEFU SE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiB0ZXN0X2Jtc19lcXVhbChieXRl YSwgYnl0ZWEpCitSRVRVUk5TIGJvb2xlYW4KK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdF IEM7CisKK0NSRUFURSBGVU5DVElPTiB0ZXN0X2Jtc19jb21wYXJlKGJ5dGVhLCBieXRlYSkKK1JF VFVSTlMgaW50ZWdlcgorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsKKworQ1JFQVRF IEZVTkNUSU9OIHRlc3RfYm1zX2lzX3N1YnNldChieXRlYSwgYnl0ZWEpCitSRVRVUk5TIGJvb2xl YW4KK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiB0 ZXN0X2Jtc19zdWJzZXRfY29tcGFyZShieXRlYSwgYnl0ZWEpCitSRVRVUk5TIGludGVnZXIKK0FT ICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiB0ZXN0X2Jt c191bmlvbihieXRlYSwgYnl0ZWEpCitSRVRVUk5TIGJ5dGVhCitBUyAnTU9EVUxFX1BBVEhOQU1F JyBMQU5HVUFHRSBDOworCitDUkVBVEUgRlVOQ1RJT04gdGVzdF9ibXNfaW50ZXJzZWN0KGJ5dGVh LCBieXRlYSkKK1JFVFVSTlMgYnl0ZWEKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7 CisKK0NSRUFURSBGVU5DVElPTiB0ZXN0X2Jtc19kaWZmZXJlbmNlKGJ5dGVhLCBieXRlYSkKK1JF VFVSTlMgYnl0ZWEKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBG VU5DVElPTiB0ZXN0X2Jtc19pc19lbXB0eShieXRlYSkKK1JFVFVSTlMgYm9vbGVhbgorQVMgJ01P RFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfYm1zX21l bWJlcnNoaXAoYnl0ZWEpCitSRVRVUk5TIGludGVnZXIKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExB TkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiB0ZXN0X2Jtc19zaW5nbGV0b25fbWVtYmVyKGJ5 dGVhKQorUkVUVVJOUyBpbnRlZ2VyIFNUUklDVAorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VB R0UgQzsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfYm1zX2dldF9zaW5nbGV0b25fbWVtYmVyKGJ5 dGVhLCBpbnRlZ2VyKQorUkVUVVJOUyBpbnRlZ2VyCitBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5H VUFHRSBDOworCitDUkVBVEUgRlVOQ1RJT04gdGVzdF9ibXNfbmV4dF9tZW1iZXIoYnl0ZWEsIGlu dGVnZXIpCitSRVRVUk5TIGludGVnZXIKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7 CisKK0NSRUFURSBGVU5DVElPTiB0ZXN0X2Jtc19wcmV2X21lbWJlcihieXRlYSwgaW50ZWdlcikK K1JFVFVSTlMgaW50ZWdlcgorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsKKworQ1JF QVRFIEZVTkNUSU9OIHRlc3RfYm1zX2hhc2hfdmFsdWUoYnl0ZWEpCitSRVRVUk5TIGludGVnZXIK K0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiB0ZXN0 X2Jtc19vdmVybGFwKGJ5dGVhLCBieXRlYSkKK1JFVFVSTlMgYm9vbGVhbgorQVMgJ01PRFVMRV9Q QVRITkFNRScgTEFOR1VBR0UgQzsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfYm1zX292ZXJsYXBf bGlzdChieXRlYSwgYnl0ZWFbXSkKK1JFVFVSTlMgYm9vbGVhbgorQVMgJ01PRFVMRV9QQVRITkFN RScgTEFOR1VBR0UgQzsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfYm1zX25vbmVtcHR5X2RpZmZl cmVuY2UoYnl0ZWEsIGJ5dGVhKQorUkVUVVJOUyBib29sZWFuCitBUyAnTU9EVUxFX1BBVEhOQU1F JyBMQU5HVUFHRSBDOworCitDUkVBVEUgRlVOQ1RJT04gdGVzdF9ibXNfbWVtYmVyX2luZGV4KGJ5 dGVhLCBpbnRlZ2VyKQorUkVUVVJOUyBpbnRlZ2VyCitBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5H VUFHRSBDOworCitDUkVBVEUgRlVOQ1RJT04gdGVzdF9ibXNfYWRkX3JhbmdlKGJ5dGVhLCBpbnRl Z2VyLCBpbnRlZ2VyKQorUkVUVVJOUyBieXRlYQorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VB R0UgQzsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfYm1zX2FkZF9tZW1iZXJzKGJ5dGVhLCBieXRl YSkKK1JFVFVSTlMgYnl0ZWEKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CisKK0NS RUFURSBGVU5DVElPTiB0ZXN0X2Jtc19yZXBsYWNlX21lbWJlcnMoYnl0ZWEsIGJ5dGVhKQorUkVU VVJOUyBieXRlYQorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsKKworQ1JFQVRFIEZV TkNUSU9OIHRlc3RfYm1zX2pvaW4oYnl0ZWEsIGJ5dGVhKQorUkVUVVJOUyBieXRlYQorQVMgJ01P RFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfYml0bWFw X2hhc2goYnl0ZWEpCitSRVRVUk5TIGludGVnZXIKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdV QUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiB0ZXN0X2JpdG1hcF9tYXRjaChieXRlYSwgYnl0ZWEp CitSRVRVUk5TIGludAorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsKKworLS0gVGVz dCB1dGlsaXR5IGZ1bmN0aW9ucworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfcmFuZG9tX29wZXJhdGlv bnMoaW50ZWdlciwgaW50ZWdlcikKK1JFVFVSTlMgaW50ZWdlciBTVFJJQ1QKK0FTICdNT0RVTEVf UEFUSE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiBjcmVhdGVfdGVzdF9iaXRt YXBzZXQobWVtYmVycyBpbnRlZ2VyW10pCitSRVRVUk5TIGJ5dGVhCitMQU5HVUFHRSBTUUwKK0FT ICQkCisgICAgU0VMRUNUIENBU0UgV0hFTiAkMSBJUyBOVUxMIE9SIGFycmF5X2xlbmd0aCgkMSwg MSkgPSAwCisJICAgVEhFTiBOVUxMOjpieXRlYQorCSAgIEVMU0UgYml0bWFwc2V0X3RvX2J5dGVh KCQxKQorCSAgIEVORDsKKyQkOworCitDT01NRU5UIE9OIEVYVEVOU0lPTiB0ZXN0X2JpdG1hcHNl dCBJUyAnVGVzdCBjb2RlIGZvciBCaXRtYXBzZXQnOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1hcHNldC5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1hcHNldC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi42ZGRkZDIyYjE3MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9iaXRtYXBzZXQvdGVzdF9iaXRtYXBzZXQuYwpAQCAtMCwwICsxLDEwNzkgQEAK Ky8qCisgKiB0ZXN0X2JpdG1hcHNldC5jCisgKiAgICAgIFRlc3QgbW9kdWxlIGZvciBiaXRtYXBz ZXQgZGF0YSBzdHJ1Y3R1cmUKKyAqCisgKiBUaGlzIG1vZHVsZSB0ZXN0cyB0aGUgYml0bWFwc2V0 IGltcGxlbWVudGF0aW9uIGluIFBvc3RncmVTUUwsCisgKiBjb3ZlcmluZyBhbGwgcHVibGljIEFQ SSBmdW5jdGlvbnMsIGVkZ2UgY2FzZXMsIGFuZCBtZW1vcnkgdXNhZ2UuCisgKgorICogc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1hcHNldC5jCisgKi8KKworI2luY2x1 ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdHJpbmcu aD4KKworI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1vbi9wZ19w cm5nLmgiCisjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5j bHVkZSAibm9kZXMvYml0bWFwc2V0LmgiCisjaW5jbHVkZSAibm9kZXMvbm9kZXMuaCIKKyNpbmNs dWRlICJub2Rlcy9wZ19saXN0LmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNs dWRlICJ2YXJhdHQuaCIKKworUEdfTU9EVUxFX01BR0lDOworCisvKiBVdGlsaXR5IGZ1bmN0aW9u cyAqLworUEdfRlVOQ1RJT05fSU5GT19WMShibXNfdmFsdWVzKTsKK1BHX0ZVTkNUSU9OX0lORk9f VjEodGVzdF9ibXNfZnJvbV9hcnJheSk7CitQR19GVU5DVElPTl9JTkZPX1YxKHRlc3RfYm1zX3Rv X2FycmF5KTsKKworLyogQml0bWFwc2V0IEFQSSBmdW5jdGlvbnMgaW4gb3JkZXIgb2YgYXBwZWFy YW5jZSBpbiBiaXRtYXBzZXQuYyAqLworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2Jtc19tYWtl X3NpbmdsZXRvbik7CitQR19GVU5DVElPTl9JTkZPX1YxKHRlc3RfYm1zX2FkZF9tZW1iZXIpOwor UEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2Jtc19kZWxfbWVtYmVyKTsKK1BHX0ZVTkNUSU9OX0lO Rk9fVjEodGVzdF9ibXNfaXNfbWVtYmVyKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEodGVzdF9ibXNf bnVtX21lbWJlcnMpOworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2Jtc19jb3B5KTsKK1BHX0ZV TkNUSU9OX0lORk9fVjEodGVzdF9ibXNfZXF1YWwpOworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0 X2Jtc19jb21wYXJlKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEodGVzdF9ibXNfaXNfc3Vic2V0KTsK K1BHX0ZVTkNUSU9OX0lORk9fVjEodGVzdF9ibXNfc3Vic2V0X2NvbXBhcmUpOworUEdfRlVOQ1RJ T05fSU5GT19WMSh0ZXN0X2Jtc191bmlvbik7CitQR19GVU5DVElPTl9JTkZPX1YxKHRlc3RfYm1z X2ludGVyc2VjdCk7CitQR19GVU5DVElPTl9JTkZPX1YxKHRlc3RfYm1zX2RpZmZlcmVuY2UpOwor UEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2Jtc19pc19lbXB0eSk7CitQR19GVU5DVElPTl9JTkZP X1YxKHRlc3RfYm1zX21lbWJlcnNoaXApOworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2Jtc19z aW5nbGV0b25fbWVtYmVyKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEodGVzdF9ibXNfZ2V0X3Npbmds ZXRvbl9tZW1iZXIpOworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2Jtc19uZXh0X21lbWJlcik7 CitQR19GVU5DVElPTl9JTkZPX1YxKHRlc3RfYm1zX3ByZXZfbWVtYmVyKTsKK1BHX0ZVTkNUSU9O X0lORk9fVjEodGVzdF9ibXNfaGFzaF92YWx1ZSk7CitQR19GVU5DVElPTl9JTkZPX1YxKHRlc3Rf Ym1zX292ZXJsYXApOworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2Jtc19vdmVybGFwX2xpc3Qp OworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2Jtc19ub25lbXB0eV9kaWZmZXJlbmNlKTsKK1BH X0ZVTkNUSU9OX0lORk9fVjEodGVzdF9ibXNfbWVtYmVyX2luZGV4KTsKK1BHX0ZVTkNUSU9OX0lO Rk9fVjEodGVzdF9ibXNfYWRkX3JhbmdlKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEodGVzdF9ibXNf YWRkX21lbWJlcnMpOworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2Jtc19yZXBsYWNlX21lbWJl cnMpOworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2Jtc19qb2luKTsKK1BHX0ZVTkNUSU9OX0lO Rk9fVjEodGVzdF9iaXRtYXBfaGFzaCk7CitQR19GVU5DVElPTl9JTkZPX1YxKHRlc3RfYml0bWFw X21hdGNoKTsKKworLyogVGVzdCB1dGlsaXR5IGZ1bmN0aW9ucyAqLworUEdfRlVOQ1RJT05fSU5G T19WMSh0ZXN0X3JhbmRvbV9vcGVyYXRpb25zKTsKKworLyoKKyAqIFV0aWxpdHkgZnVuY3Rpb25z IHRvIGNvbnZlcnQgYmV0d2VlbiBCaXRtYXBzZXQgYW5kIGJ5dGVhCisgKiBmb3IgcGFzc2luZyBk YXRhIGJldHdlZW4gU1FMIGFuZCBDIGZ1bmN0aW9ucworICovCisKK3N0YXRpYyBieXRlYSAqCitl bmNvZGVfYm1zX3RvX2J5dGVhKEJpdG1hcHNldCAqYm1zKQoreworCWJ5dGVhCSAgICpyZXN1bHQ7 CisJaW50CQkJYm1zX3NpemU7CisKKwlpZiAoYm1zID09IE5VTEwpCisJCXJldHVybiBOVUxMOwor CisJYm1zX3NpemUgPSBvZmZzZXRvZihCaXRtYXBzZXQsIHdvcmRzKSArIGJtcy0+bndvcmRzICog c2l6ZW9mKGJpdG1hcHdvcmQpOworCXJlc3VsdCA9IChieXRlYSAqKSBwYWxsb2MwKFZBUkhEUlNa ICsgYm1zX3NpemUpOworCW1lbWNweShWQVJEQVRBKHJlc3VsdCksIGJtcywgYm1zX3NpemUpOwor CVNFVF9WQVJTSVpFKHJlc3VsdCwgVkFSSERSU1ogKyBibXNfc2l6ZSk7CisKKwlyZXR1cm4gcmVz dWx0OworfQorCitzdGF0aWMgQml0bWFwc2V0ICoKK2RlY29kZV9ieXRlYV90b19ibXMoYnl0ZWEg KmRhdGEpCit7CisJQml0bWFwc2V0ICAqYm1zOworCWludAkJCWJtc19zaXplOworCisJaWYgKGRh dGEgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisKKwlibXNfc2l6ZSA9IFZBUlNJWkVfQU5ZX0VY SERSKGRhdGEpOworCisJaWYgKGJtc19zaXplIDwgb2Zmc2V0b2YoQml0bWFwc2V0LCB3b3Jkcykp CisJCXJldHVybiBOVUxMOworCisJYm1zID0gKEJpdG1hcHNldCAqKSBwYWxsb2MoYm1zX3NpemUp OworCW1lbWNweShibXMsIFZBUkRBVEFfQU5ZKGRhdGEpLCBibXNfc2l6ZSk7CisKKwlpZiAoYm1z LT5ud29yZHMgPCAwIHx8CisJCWJtcy0+bndvcmRzID4gKGJtc19zaXplIC0gb2Zmc2V0b2YoQml0 bWFwc2V0LCB3b3JkcykpIC8gc2l6ZW9mKGJpdG1hcHdvcmQpKQorCXsKKwkJcGZyZWUoYm1zKTsK KwkJcmV0dXJuIE5VTEw7CisJfQorCisJcmV0dXJuIGJtczsKK30KKworRGF0dW0KK2Jtc192YWx1 ZXMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlCaXRtYXBzZXQgICpibXM7CisJY2hhcgkgICAqc3Ry OworCXRleHQJICAgKnJlc3VsdDsKKworCWlmIChQR19BUkdJU05VTEwoMCkpCisJeworCQlyZXN1 bHQgPSBjc3RyaW5nX3RvX3RleHQoIihiKSIpOworCQlQR19SRVRVUk5fVEVYVF9QKHJlc3VsdCk7 CisJfQorCisJYm1zID0gZGVjb2RlX2J5dGVhX3RvX2JtcyhQR19HRVRBUkdfQllURUFfUFAoMCkp OworCXN0ciA9IGJtc1RvU3RyaW5nKGJtcyk7CisKKwlpZiAoYm1zKQorCQlibXNfZnJlZShibXMp OworCisJcmVzdWx0ID0gY3N0cmluZ190b190ZXh0KHN0cik7CisKKwlQR19SRVRVUk5fVEVYVF9Q KHJlc3VsdCk7Cit9CisKKy8qCisgKiBJbmRpdmlkdWFsIHRlc3QgZnVuY3Rpb25zIGZvciBlYWNo IGJpdG1hcHNldCBBUEkgZnVuY3Rpb24KKyAqLworCitEYXR1bQordGVzdF9ibXNfYWRkX21lbWJl cihQR19GVU5DVElPTl9BUkdTKQoreworCWludAkJCW1lbWJlcjsKKwlCaXRtYXBzZXQgICpibXMg PSBOVUxMOworCUJpdG1hcHNldCAgKnJlc3VsdF9ibXM7CisJYnl0ZWEJICAgKnJlc3VsdDsKKwor CWlmIChQR19BUkdJU05VTEwoMSkpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwlpZiAoIVBHX0FS R0lTTlVMTCgwKSkKKwkJYm1zID0gZGVjb2RlX2J5dGVhX3RvX2JtcyhQR19HRVRBUkdfQllURUFf UFAoMCkpOworCisJbWVtYmVyID0gUEdfR0VUQVJHX0lOVDMyKDEpOworCXJlc3VsdF9ibXMgPSBi bXNfYWRkX21lbWJlcihibXMsIG1lbWJlcik7CisJcmVzdWx0ID0gZW5jb2RlX2Jtc190b19ieXRl YShyZXN1bHRfYm1zKTsKKworCWlmIChibXMgJiYgYm1zICE9IHJlc3VsdF9ibXMpCisJCWJtc19m cmVlKGJtcyk7CisJaWYgKHJlc3VsdF9ibXMpCisJCWJtc19mcmVlKHJlc3VsdF9ibXMpOworCisJ aWYgKHJlc3VsdCA9PSBOVUxMKQorCQlQR19SRVRVUk5fTlVMTCgpOworCisJUEdfUkVUVVJOX0JZ VEVBX1AocmVzdWx0KTsKK30KKworRGF0dW0KK3Rlc3RfYm1zX2FkZF9tZW1iZXJzKFBHX0ZVTkNU SU9OX0FSR1MpCit7CisJQml0bWFwc2V0ICAqYm1zMSA9IE5VTEwsCisJCQkgICAqYm1zMiA9IE5V TEw7CisJQml0bWFwc2V0ICAqcmVzdWx0X2JtczsKKwlieXRlYQkgICAqcmVzdWx0OworCisJaWYg KCFQR19BUkdJU05VTEwoMCkpCisJCWJtczEgPSBkZWNvZGVfYnl0ZWFfdG9fYm1zKFBHX0dFVEFS R19CWVRFQV9QUCgwKSk7CisKKwlpZiAoIVBHX0FSR0lTTlVMTCgxKSkKKwkJYm1zMiA9IGRlY29k ZV9ieXRlYV90b19ibXMoUEdfR0VUQVJHX0JZVEVBX1BQKDEpKTsKKworCS8qIElNUE9SVEFOVDog Ym1zX2FkZF9tZW1iZXJzIG1vZGlmaWVzL2ZyZWVzIHRoZSBmaXJzdCBhcmd1bWVudCAqLworCXJl c3VsdF9ibXMgPSBibXNfYWRkX21lbWJlcnMoYm1zMSwgYm1zMik7CisJLyogYm1zMSBpcyBub3cg aW52YWxpZCwgZG9uJ3QgZnJlZSBpdCAqLworCisJaWYgKGJtczIpCisJCWJtc19mcmVlKGJtczIp OworCisJaWYgKHJlc3VsdF9ibXMgPT0gTlVMTCkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCXJl c3VsdCA9IGVuY29kZV9ibXNfdG9fYnl0ZWEocmVzdWx0X2Jtcyk7CisJYm1zX2ZyZWUocmVzdWx0 X2Jtcyk7CisKKwlQR19SRVRVUk5fQllURUFfUChyZXN1bHQpOworfQorCitEYXR1bQordGVzdF9i bXNfZGVsX21lbWJlcihQR19GVU5DVElPTl9BUkdTKQoreworCUJpdG1hcHNldCAgKmJtcyA9IE5V TEw7CisJaW50MzIJCW1lbWJlcjsKKwlieXRlYQkgICAqcmVzdWx0OworCisJaWYgKFBHX0FSR0lT TlVMTCgxKSkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCWlmICghUEdfQVJHSVNOVUxMKDApKQor CQlibXMgPSBkZWNvZGVfYnl0ZWFfdG9fYm1zKFBHX0dFVEFSR19CWVRFQV9QUCgwKSk7CisKKwlt ZW1iZXIgPSBQR19HRVRBUkdfSU5UMzIoMSk7CisJYm1zID0gYm1zX2RlbF9tZW1iZXIoYm1zLCBt ZW1iZXIpOworCisJaWYgKGJtcyA9PSBOVUxMIHx8IGJtc19pc19lbXB0eShibXMpKQorCXsKKwkJ aWYgKGJtcykKKwkJCWJtc19mcmVlKGJtcyk7CisJCVBHX1JFVFVSTl9OVUxMKCk7CisJfQorCisJ cmVzdWx0ID0gZW5jb2RlX2Jtc190b19ieXRlYShibXMpOworCWJtc19mcmVlKGJtcyk7CisKKwlQ R19SRVRVUk5fQllURUFfUChyZXN1bHQpOworfQorCitEYXR1bQordGVzdF9ibXNfaXNfbWVtYmVy KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJQml0bWFwc2V0ICAqYm1zID0gTlVMTDsKKwlpbnQzMgkJ bWVtYmVyOworCWJvb2wJCXJlc3VsdDsKKworCWlmIChQR19BUkdJU05VTEwoMSkpCisJCVBHX1JF VFVSTl9CT09MKGZhbHNlKTsKKworCWlmICghUEdfQVJHSVNOVUxMKDApKQorCQlibXMgPSBkZWNv ZGVfYnl0ZWFfdG9fYm1zKFBHX0dFVEFSR19CWVRFQV9QUCgwKSk7CisKKwltZW1iZXIgPSBQR19H RVRBUkdfSU5UMzIoMSk7CisJcmVzdWx0ID0gYm1zX2lzX21lbWJlcihtZW1iZXIsIGJtcyk7CisK KwlpZiAoYm1zKQorCQlibXNfZnJlZShibXMpOworCisJUEdfUkVUVVJOX0JPT0wocmVzdWx0KTsK K30KKworRGF0dW0KK3Rlc3RfYm1zX251bV9tZW1iZXJzKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJ Qml0bWFwc2V0ICAqYm1zID0gTlVMTDsKKwlpbnQJCQlyZXN1bHQgPSAwOworCisJaWYgKCFQR19B UkdJU05VTEwoMCkpCisJCWJtcyA9IGRlY29kZV9ieXRlYV90b19ibXMoUEdfR0VUQVJHX0JZVEVB X1BQKDApKTsKKworCXJlc3VsdCA9IGJtc19udW1fbWVtYmVycyhibXMpOworCisJaWYgKGJtcykK KwkJYm1zX2ZyZWUoYm1zKTsKKworCVBHX1JFVFVSTl9JTlQzMihyZXN1bHQpOworfQorCitEYXR1 bQordGVzdF9ibXNfbWFrZV9zaW5nbGV0b24oUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlpbnQzMgkJ bWVtYmVyOworCUJpdG1hcHNldCAgKmJtczsKKwlieXRlYQkgICAqcmVzdWx0OworCisJaWYgKFBH X0FSR0lTTlVMTCgwKSkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCW1lbWJlciA9IFBHX0dFVEFS R19JTlQzMigwKTsKKwlibXMgPSBibXNfbWFrZV9zaW5nbGV0b24obWVtYmVyKTsKKworCXJlc3Vs dCA9IGVuY29kZV9ibXNfdG9fYnl0ZWEoYm1zKTsKKwlibXNfZnJlZShibXMpOworCisJUEdfUkVU VVJOX0JZVEVBX1AocmVzdWx0KTsKK30KKworRGF0dW0KK3Rlc3RfYm1zX2NvcHkoUEdfRlVOQ1RJ T05fQVJHUykKK3sKKwlieXRlYQkgICAqYm1zX2RhdGE7CisJQml0bWFwc2V0ICAqYm1zID0gTlVM TDsKKwlCaXRtYXBzZXQgICpjb3B5X2JtczsKKwlieXRlYQkgICAqcmVzdWx0OworCisJaWYgKFBH X0FSR0lTTlVMTCgwKSkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCWJtc19kYXRhID0gUEdfR0VU QVJHX0JZVEVBX1BQKDApOworCWJtcyA9IGRlY29kZV9ieXRlYV90b19ibXMoYm1zX2RhdGEpOwor CWNvcHlfYm1zID0gYm1zX2NvcHkoYm1zKTsKKwlyZXN1bHQgPSBlbmNvZGVfYm1zX3RvX2J5dGVh KGNvcHlfYm1zKTsKKworCWlmIChibXMpCisJCWJtc19mcmVlKGJtcyk7CisJaWYgKGNvcHlfYm1z KQorCQlibXNfZnJlZShjb3B5X2Jtcyk7CisKKwlQR19SRVRVUk5fQllURUFfUChyZXN1bHQpOwor fQorCitEYXR1bQordGVzdF9ibXNfZXF1YWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlCaXRtYXBz ZXQgICpibXMxID0gTlVMTCwKKwkJCSAgICpibXMyID0gTlVMTDsKKwlib29sCQlyZXN1bHQ7CisK KwlpZiAoIVBHX0FSR0lTTlVMTCgwKSkKKwkJYm1zMSA9IGRlY29kZV9ieXRlYV90b19ibXMoUEdf R0VUQVJHX0JZVEVBX1BQKDApKTsKKworCWlmICghUEdfQVJHSVNOVUxMKDEpKQorCQlibXMyID0g ZGVjb2RlX2J5dGVhX3RvX2JtcyhQR19HRVRBUkdfQllURUFfUFAoMSkpOworCisJcmVzdWx0ID0g Ym1zX2VxdWFsKGJtczEsIGJtczIpOworCisJaWYgKGJtczEpCisJCWJtc19mcmVlKGJtczEpOwor CWlmIChibXMyKQorCQlibXNfZnJlZShibXMyKTsKKworCVBHX1JFVFVSTl9CT09MKHJlc3VsdCk7 Cit9CisKK0RhdHVtCit0ZXN0X2Jtc191bmlvbihQR19GVU5DVElPTl9BUkdTKQoreworCUJpdG1h cHNldCAgKmJtczEgPSBOVUxMLAorCQkJICAgKmJtczIgPSBOVUxMOworCUJpdG1hcHNldCAgKnJl c3VsdF9ibXM7CisJYnl0ZWEJICAgKnJlc3VsdDsKKworCWlmICghUEdfQVJHSVNOVUxMKDApKQor CQlibXMxID0gZGVjb2RlX2J5dGVhX3RvX2JtcyhQR19HRVRBUkdfQllURUFfUFAoMCkpOworCisJ aWYgKCFQR19BUkdJU05VTEwoMSkpCisJCWJtczIgPSBkZWNvZGVfYnl0ZWFfdG9fYm1zKFBHX0dF VEFSR19CWVRFQV9QUCgxKSk7CisKKwlyZXN1bHRfYm1zID0gYm1zX3VuaW9uKGJtczEsIGJtczIp OworCisJaWYgKGJtczEpCisJCWJtc19mcmVlKGJtczEpOworCWlmIChibXMyKQorCQlibXNfZnJl ZShibXMyKTsKKworCWlmIChyZXN1bHRfYm1zID09IE5VTEwpCisJCVBHX1JFVFVSTl9OVUxMKCk7 CisKKwlyZXN1bHQgPSBlbmNvZGVfYm1zX3RvX2J5dGVhKHJlc3VsdF9ibXMpOworCWJtc19mcmVl KHJlc3VsdF9ibXMpOworCisJUEdfUkVUVVJOX0JZVEVBX1AocmVzdWx0KTsKK30KKworRGF0dW0K K3Rlc3RfYm1zX21lbWJlcnNoaXAoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlCaXRtYXBzZXQgICpi bXMgPSBOVUxMOworCUJNU19NZW1iZXJzaGlwIHJlc3VsdDsKKworCWlmIChQR19BUkdJU05VTEwo MCkpCisJCVBHX1JFVFVSTl9JTlQzMihCTVNfRU1QVFlfU0VUKTsKKworCWJtcyA9IGRlY29kZV9i eXRlYV90b19ibXMoUEdfR0VUQVJHX0JZVEVBX1BQKDApKTsKKwlyZXN1bHQgPSBibXNfbWVtYmVy c2hpcChibXMpOworCisJaWYgKGJtcykKKwkJYm1zX2ZyZWUoYm1zKTsKKworCVBHX1JFVFVSTl9J TlQzMigoaW50MzIpIHJlc3VsdCk7Cit9CisKK0RhdHVtCit0ZXN0X2Jtc19uZXh0X21lbWJlcihQ R19GVU5DVElPTl9BUkdTKQoreworCUJpdG1hcHNldCAgKmJtcyA9IE5VTEw7CisJaW50MzIJCXBy ZXZtZW1iZXI7CisJaW50CQkJcmVzdWx0OworCisJaWYgKFBHX0FSR0lTTlVMTCgwKSB8fCBQR19B UkdJU05VTEwoMSkpCisJCVBHX1JFVFVSTl9JTlQzMigtMik7CisKKwlibXMgPSBkZWNvZGVfYnl0 ZWFfdG9fYm1zKFBHX0dFVEFSR19CWVRFQV9QUCgwKSk7CisJcHJldm1lbWJlciA9IFBHX0dFVEFS R19JTlQzMigxKTsKKwlyZXN1bHQgPSBibXNfbmV4dF9tZW1iZXIoYm1zLCBwcmV2bWVtYmVyKTsK KworCWlmIChibXMpCisJCWJtc19mcmVlKGJtcyk7CisKKwlQR19SRVRVUk5fSU5UMzIocmVzdWx0 KTsKK30KKworRGF0dW0KK3Rlc3RfYm1zX2Zyb21fYXJyYXkoUEdfRlVOQ1RJT05fQVJHUykKK3sK KwlBcnJheVR5cGUgICphcnJheTsKKwlpbnQJCSAgICptZW1iZXJzOworCWludAkJCW5tZW1iZXJz OworCUJpdG1hcHNldCAgKmJtcyA9IE5VTEw7CisJYnl0ZWEJICAgKnJlc3VsdDsKKwlpbnQJCQlp OworCisJaWYgKFBHX0FSR0lTTlVMTCgwKSkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCWFycmF5 ID0gUEdfR0VUQVJHX0FSUkFZVFlQRV9QKDApOworCisJLyogQ2hlY2sgZWxlbWVudCB0eXBlIGZp cnN0ICovCisJaWYgKEFSUl9FTEVNVFlQRShhcnJheSkgIT0gSU5UNE9JRCkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0FSUkFZX1NVQlNDUklQVF9FUlJPUiksCisJCQkJ IGVycm1zZygiaW50ZWdlciBhcnJheSBleHBlY3RlZCIpKSk7CisKKwkvKiBIYW5kbGUgZW1wdHkg YXJyYXlzIC0gQVJSX05ESU0gY2FuIGJlIDAgZm9yIGVtcHR5IGFycmF5cyAqLworCWlmIChBUlJf TkRJTShhcnJheSkgPT0gMCkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCS8qIE5vdyBjaGVjayBk aW1lbnNpb25zICovCisJaWYgKEFSUl9ORElNKGFycmF5KSAhPSAxKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfQVJSQVlfU1VCU0NSSVBUX0VSUk9SKSwKKwkJCQkgZXJy bXNnKCJpbnRlZ2VyIGFycmF5IGV4cGVjdGVkIikpKTsKKworCW5tZW1iZXJzID0gQVJSX0RJTVMo YXJyYXkpWzBdOworCisJLyogRG91YmxlLWNoZWNrIGZvciBlbXB0eSAqLworCWlmIChubWVtYmVy cyA9PSAwKQorCQlQR19SRVRVUk5fTlVMTCgpOworCisJaWYgKEFSUl9IQVNOVUxMKGFycmF5KSkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0FSUkFZX1NVQlNDUklQVF9F UlJPUiksCisJCQkJIGVycm1zZygiaW50ZWdlciBhcnJheSBleHBlY3RlZCIpKSk7CisKKwltZW1i ZXJzID0gKGludCAqKSBBUlJfREFUQV9QVFIoYXJyYXkpOworCisJZm9yIChpID0gMDsgaSA8IG5t ZW1iZXJzOyBpKyspCisJCWJtcyA9IGJtc19hZGRfbWVtYmVyKGJtcywgbWVtYmVyc1tpXSk7CisK KwlyZXN1bHQgPSBlbmNvZGVfYm1zX3RvX2J5dGVhKGJtcyk7CisJYm1zX2ZyZWUoYm1zKTsKKwor CVBHX1JFVFVSTl9CWVRFQV9QKHJlc3VsdCk7Cit9CisKK0RhdHVtCit0ZXN0X2Jtc190b19hcnJh eShQR19GVU5DVElPTl9BUkdTKQoreworCWJ5dGVhCSAgICpibXNfZGF0YTsKKwlCaXRtYXBzZXQg ICpibXMgPSBOVUxMOworCUFycmF5VHlwZSAgKnJlc3VsdDsKKwlEYXR1bQkgICAqZGF0dW1zOwor CWludAkJCW5tZW1iZXJzOworCWludAkJCW1lbWJlciA9IC0xOworCWludAkJCWkgPSAwOworCisJ aWYgKFBHX0FSR0lTTlVMTCgwKSkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCWJtc19kYXRhID0g UEdfR0VUQVJHX0JZVEVBX1BQKDApOworCWJtcyA9IGRlY29kZV9ieXRlYV90b19ibXMoYm1zX2Rh dGEpOworCisJaWYgKGJtcyA9PSBOVUxMIHx8IGJtc19pc19lbXB0eShibXMpKQorCXsKKwkJaWYg KGJtcykKKwkJCWJtc19mcmVlKGJtcyk7CisJCVBHX1JFVFVSTl9OVUxMKCk7CisJfQorCisJbm1l bWJlcnMgPSBibXNfbnVtX21lbWJlcnMoYm1zKTsKKwlkYXR1bXMgPSAoRGF0dW0gKikgcGFsbG9j KG5tZW1iZXJzICogc2l6ZW9mKERhdHVtKSk7CisKKwl3aGlsZSAoKG1lbWJlciA9IGJtc19uZXh0 X21lbWJlcihibXMsIG1lbWJlcikpID49IDApCisJCWRhdHVtc1tpKytdID0gSW50MzJHZXREYXR1 bShtZW1iZXIpOworCisJYm1zX2ZyZWUoYm1zKTsKKworCXJlc3VsdCA9IGNvbnN0cnVjdF9hcnJh eShkYXR1bXMsIG5tZW1iZXJzLAorCQkJCQkJCSBJTlQ0T0lELCBzaXplb2YoaW50MzIpLCB0cnVl LCAnaScpOworCisJcGZyZWUoZGF0dW1zKTsKKwlQR19SRVRVUk5fQVJSQVlUWVBFX1AocmVzdWx0 KTsKK30KKworRGF0dW0KK3Rlc3RfYm1zX2ludGVyc2VjdChQR19GVU5DVElPTl9BUkdTKQorewor CUJpdG1hcHNldCAgKmJtczEgPSBOVUxMLAorCQkJICAgKmJtczIgPSBOVUxMOworCUJpdG1hcHNl dCAgKnJlc3VsdF9ibXM7CisJYnl0ZWEJICAgKnJlc3VsdDsKKworCWlmICghUEdfQVJHSVNOVUxM KDApKQorCQlibXMxID0gZGVjb2RlX2J5dGVhX3RvX2JtcyhQR19HRVRBUkdfQllURUFfUFAoMCkp OworCisJaWYgKCFQR19BUkdJU05VTEwoMSkpCisJCWJtczIgPSBkZWNvZGVfYnl0ZWFfdG9fYm1z KFBHX0dFVEFSR19CWVRFQV9QUCgxKSk7CisKKwlyZXN1bHRfYm1zID0gYm1zX2ludGVyc2VjdChi bXMxLCBibXMyKTsKKworCWlmIChibXMxKQorCQlibXNfZnJlZShibXMxKTsKKwlpZiAoYm1zMikK KwkJYm1zX2ZyZWUoYm1zMik7CisKKwlpZiAocmVzdWx0X2JtcyA9PSBOVUxMKQorCQlQR19SRVRV Uk5fTlVMTCgpOworCisJcmVzdWx0ID0gZW5jb2RlX2Jtc190b19ieXRlYShyZXN1bHRfYm1zKTsK KwlibXNfZnJlZShyZXN1bHRfYm1zKTsKKworCVBHX1JFVFVSTl9CWVRFQV9QKHJlc3VsdCk7Cit9 CisKK0RhdHVtCit0ZXN0X2Jtc19kaWZmZXJlbmNlKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJQml0 bWFwc2V0ICAqYm1zMSA9IE5VTEwsCisJCQkgICAqYm1zMiA9IE5VTEw7CisJQml0bWFwc2V0ICAq cmVzdWx0X2JtczsKKwlieXRlYQkgICAqcmVzdWx0OworCisJaWYgKCFQR19BUkdJU05VTEwoMCkp CisJCWJtczEgPSBkZWNvZGVfYnl0ZWFfdG9fYm1zKFBHX0dFVEFSR19CWVRFQV9QUCgwKSk7CisK KwlpZiAoIVBHX0FSR0lTTlVMTCgxKSkKKwkJYm1zMiA9IGRlY29kZV9ieXRlYV90b19ibXMoUEdf R0VUQVJHX0JZVEVBX1BQKDEpKTsKKworCXJlc3VsdF9ibXMgPSBibXNfZGlmZmVyZW5jZShibXMx LCBibXMyKTsKKworCWlmIChibXMxKQorCQlibXNfZnJlZShibXMxKTsKKwlpZiAoYm1zMikKKwkJ Ym1zX2ZyZWUoYm1zMik7CisKKwlpZiAocmVzdWx0X2JtcyA9PSBOVUxMKQorCQlQR19SRVRVUk5f TlVMTCgpOworCisJcmVzdWx0ID0gZW5jb2RlX2Jtc190b19ieXRlYShyZXN1bHRfYm1zKTsKKwli bXNfZnJlZShyZXN1bHRfYm1zKTsKKworCVBHX1JFVFVSTl9CWVRFQV9QKHJlc3VsdCk7Cit9CisK K0RhdHVtCit0ZXN0X2Jtc19jb21wYXJlKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJQml0bWFwc2V0 ICAqYm1zMSA9IE5VTEwsCisJCQkgICAqYm1zMiA9IE5VTEw7CisJaW50CQkJcmVzdWx0OworCisJ aWYgKCFQR19BUkdJU05VTEwoMCkpCisJCWJtczEgPSBkZWNvZGVfYnl0ZWFfdG9fYm1zKFBHX0dF VEFSR19CWVRFQV9QUCgwKSk7CisKKwlpZiAoIVBHX0FSR0lTTlVMTCgxKSkKKwkJYm1zMiA9IGRl Y29kZV9ieXRlYV90b19ibXMoUEdfR0VUQVJHX0JZVEVBX1BQKDEpKTsKKworCXJlc3VsdCA9IGJt c19jb21wYXJlKGJtczEsIGJtczIpOworCisJaWYgKGJtczEpCisJCWJtc19mcmVlKGJtczEpOwor CWlmIChibXMyKQorCQlibXNfZnJlZShibXMyKTsKKworCVBHX1JFVFVSTl9JTlQzMihyZXN1bHQp OworfQorCitEYXR1bQordGVzdF9ibXNfaXNfZW1wdHkoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlC aXRtYXBzZXQgICpibXMgPSBOVUxMOworCWJvb2wJCXJlc3VsdDsKKworCWlmICghUEdfQVJHSVNO VUxMKDApKQorCQlibXMgPSBkZWNvZGVfYnl0ZWFfdG9fYm1zKFBHX0dFVEFSR19CWVRFQV9QUCgw KSk7CisKKwlyZXN1bHQgPSBibXNfaXNfZW1wdHkoYm1zKTsKKworCWlmIChibXMpCisJCWJtc19m cmVlKGJtcyk7CisKKwlQR19SRVRVUk5fQk9PTChyZXN1bHQpOworfQorCitEYXR1bQordGVzdF9i bXNfaXNfc3Vic2V0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJQml0bWFwc2V0ICAqYm1zMSA9IE5V TEwsCisJCQkgICAqYm1zMiA9IE5VTEw7CisJYm9vbAkJcmVzdWx0OworCisJaWYgKCFQR19BUkdJ U05VTEwoMCkpCisJCWJtczEgPSBkZWNvZGVfYnl0ZWFfdG9fYm1zKFBHX0dFVEFSR19CWVRFQV9Q UCgwKSk7CisKKwlpZiAoIVBHX0FSR0lTTlVMTCgxKSkKKwkJYm1zMiA9IGRlY29kZV9ieXRlYV90 b19ibXMoUEdfR0VUQVJHX0JZVEVBX1BQKDEpKTsKKworCXJlc3VsdCA9IGJtc19pc19zdWJzZXQo Ym1zMSwgYm1zMik7CisKKwlpZiAoYm1zMSkKKwkJYm1zX2ZyZWUoYm1zMSk7CisJaWYgKGJtczIp CisJCWJtc19mcmVlKGJtczIpOworCisJUEdfUkVUVVJOX0JPT0wocmVzdWx0KTsKK30KKworRGF0 dW0KK3Rlc3RfYm1zX3N1YnNldF9jb21wYXJlKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJQml0bWFw c2V0ICAqYm1zMSA9IE5VTEwsCisJCQkgICAqYm1zMiA9IE5VTEw7CisJQk1TX0NvbXBhcmlzb24g cmVzdWx0OworCisJaWYgKCFQR19BUkdJU05VTEwoMCkpCisJCWJtczEgPSBkZWNvZGVfYnl0ZWFf dG9fYm1zKFBHX0dFVEFSR19CWVRFQV9QUCgwKSk7CisKKwlpZiAoIVBHX0FSR0lTTlVMTCgxKSkK KwkJYm1zMiA9IGRlY29kZV9ieXRlYV90b19ibXMoUEdfR0VUQVJHX0JZVEVBX1BQKDEpKTsKKwor CXJlc3VsdCA9IGJtc19zdWJzZXRfY29tcGFyZShibXMxLCBibXMyKTsKKworCWlmIChibXMxKQor CQlibXNfZnJlZShibXMxKTsKKwlpZiAoYm1zMikKKwkJYm1zX2ZyZWUoYm1zMik7CisKKwlQR19S RVRVUk5fSU5UMzIoKGludDMyKSByZXN1bHQpOworfQorCitEYXR1bQordGVzdF9ibXNfc2luZ2xl dG9uX21lbWJlcihQR19GVU5DVElPTl9BUkdTKQoreworCUJpdG1hcHNldCAgKmJtcyA9IE5VTEw7 CisJaW50CQkJcmVzdWx0OworCisJaWYgKCFQR19BUkdJU05VTEwoMCkpCisJCWJtcyA9IGRlY29k ZV9ieXRlYV90b19ibXMoUEdfR0VUQVJHX0JZVEVBX1BQKDApKTsKKworCXJlc3VsdCA9IGJtc19z aW5nbGV0b25fbWVtYmVyKGJtcyk7CisKKwlpZiAoYm1zKQorCQlibXNfZnJlZShibXMpOworCisJ UEdfUkVUVVJOX0lOVDMyKHJlc3VsdCk7Cit9CisKK0RhdHVtCit0ZXN0X2Jtc19nZXRfc2luZ2xl dG9uX21lbWJlcihQR19GVU5DVElPTl9BUkdTKQoreworCUJpdG1hcHNldCAgKmJtcyA9IE5VTEw7 CisJaW50MzIJCWRlZmF1bHRfbWVtYmVyID0gUEdfR0VUQVJHX0lOVDMyKDEpOworCWludAkJCW1l bWJlcjsKKwlib29sCQlzdWNjZXNzOworCisJaWYgKFBHX0FSR0lTTlVMTCgwKSkKKwkJUEdfUkVU VVJOX0lOVDMyKGRlZmF1bHRfbWVtYmVyKTsKKworCWJtcyA9IGRlY29kZV9ieXRlYV90b19ibXMo UEdfR0VUQVJHX0JZVEVBX1BQKDApKTsKKworCS8qCisJICogYm1zX2dldF9zaW5nbGV0b25fbWVt YmVyIHJldHVybnMgYm9vbCBhbmQgc3RvcmVzIHJlc3VsdCBpbiBtZW1iZXIKKwkgKiBwb2ludGVy CisJICovCisJc3VjY2VzcyA9IGJtc19nZXRfc2luZ2xldG9uX21lbWJlcihibXMsICZtZW1iZXIp OworCWJtc19mcmVlKGJtcyk7CisKKwlpZiAoc3VjY2VzcykKKwkJUEdfUkVUVVJOX0lOVDMyKG1l bWJlcik7CisJZWxzZQorCQlQR19SRVRVUk5fSU5UMzIoZGVmYXVsdF9tZW1iZXIpOworfQorCitE YXR1bQordGVzdF9ibXNfcHJldl9tZW1iZXIoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlieXRlYQkg ICAqYm1zX2RhdGE7CisJQml0bWFwc2V0ICAqYm1zID0gTlVMTDsKKwlpbnQzMgkJcHJldm1lbWJl cjsKKwlpbnQJCQlyZXN1bHQ7CisKKwlpZiAoUEdfQVJHSVNOVUxMKDApKQorCQlQR19SRVRVUk5f SU5UMzIoLTIpOworCisJYm1zX2RhdGEgPSBQR19HRVRBUkdfQllURUFfUFAoMCk7CisJcHJldm1l bWJlciA9IFBHX0dFVEFSR19JTlQzMigxKTsKKworCWlmIChWQVJTSVpFX0FOWV9FWEhEUihibXNf ZGF0YSkgPT0gMCkKKwkJUEdfUkVUVVJOX0lOVDMyKC0yKTsKKworCWJtcyA9IGRlY29kZV9ieXRl YV90b19ibXMoYm1zX2RhdGEpOworCXJlc3VsdCA9IGJtc19wcmV2X21lbWJlcihibXMsIHByZXZt ZW1iZXIpOworCWJtc19mcmVlKGJtcyk7CisKKwlQR19SRVRVUk5fSU5UMzIocmVzdWx0KTsKK30K KworRGF0dW0KK3Rlc3RfYm1zX292ZXJsYXAoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlCaXRtYXBz ZXQgICpibXMxID0gTlVMTCwKKwkJCSAgICpibXMyID0gTlVMTDsKKwlib29sCQlyZXN1bHQ7CisK KwlpZiAoIVBHX0FSR0lTTlVMTCgwKSkKKwkJYm1zMSA9IGRlY29kZV9ieXRlYV90b19ibXMoUEdf R0VUQVJHX0JZVEVBX1BQKDApKTsKKworCWlmICghUEdfQVJHSVNOVUxMKDEpKQorCQlibXMyID0g ZGVjb2RlX2J5dGVhX3RvX2JtcyhQR19HRVRBUkdfQllURUFfUFAoMSkpOworCisJcmVzdWx0ID0g Ym1zX292ZXJsYXAoYm1zMSwgYm1zMik7CisKKwlpZiAoYm1zMSkKKwkJYm1zX2ZyZWUoYm1zMSk7 CisJaWYgKGJtczIpCisJCWJtc19mcmVlKGJtczIpOworCisJUEdfUkVUVVJOX0JPT0wocmVzdWx0 KTsKK30KKworRGF0dW0KK3Rlc3RfYm1zX292ZXJsYXBfbGlzdChQR19GVU5DVElPTl9BUkdTKQor eworCUJpdG1hcHNldCAgKmJtcyA9IE5VTEw7CisJQXJyYXlUeXBlICAqYXJyYXk7CisJTGlzdAkg ICAqYml0bWFwc2V0X2xpc3QgPSBOSUw7CisJTGlzdENlbGwgICAqbGM7CisJYm9vbAkJcmVzdWx0 OworCURhdHVtCSAgICplbGVtX2RhdHVtczsKKwlib29sCSAgICplbGVtX251bGxzOworCWludAkJ CWVsZW1fY291bnQ7CisJaW50CQkJaTsKKworCS8qIEhhbmRsZSBmaXJzdCBhcmd1bWVudCAodGhl IGJpdG1hcHNldCkgKi8KKwlpZiAoUEdfQVJHSVNOVUxMKDApKQorCQlQR19SRVRVUk5fQk9PTChm YWxzZSk7CisKKwlibXMgPSBkZWNvZGVfYnl0ZWFfdG9fYm1zKFBHX0dFVEFSR19CWVRFQV9QUCgw KSk7CisKKwkvKiBIYW5kbGUgc2Vjb25kIGFyZ3VtZW50IChhcnJheSBvZiBiaXRtYXBzZXRzKSAq LworCWlmIChQR19BUkdJU05VTEwoMSkpCisJeworCQlpZiAoYm1zKQorCQkJYm1zX2ZyZWUoYm1z KTsKKwkJUEdfUkVUVVJOX0JPT0woZmFsc2UpOworCX0KKworCWFycmF5ID0gUEdfR0VUQVJHX0FS UkFZVFlQRV9QKDEpOworCisJLyogVmFsaWRhdGUgYXJyYXkgKi8KKwlpZiAoQVJSX05ESU0oYXJy YXkpICE9IDEpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9BUlJBWV9T VUJTQ1JJUFRfRVJST1IpLAorCQkJCSBlcnJtc2coIm9uZS1kaW1lbnNpb25hbCBhcnJheSBleHBl Y3RlZCIpKSk7CisKKwlpZiAoQVJSX0VMRU1UWVBFKGFycmF5KSAhPSBCWVRFQU9JRCkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJ CQkgZXJybXNnKCJieXRlYSBhcnJheSBleHBlY3RlZCIpKSk7CisKKwkvKiBEZWNvbnN0cnVjdCB0 aGUgYXJyYXkgKi8KKwlkZWNvbnN0cnVjdF9hcnJheShhcnJheSwKKwkJCQkJICBCWVRFQU9JRCwg LTEsIGZhbHNlLCAnaScsCisJCQkJCSAgJmVsZW1fZGF0dW1zLCAmZWxlbV9udWxscywgJmVsZW1f Y291bnQpOworCisJLyogQ29udmVydCBlYWNoIGJ5dGVhIGVsZW1lbnQgdG8gYSBCaXRtYXBzZXQg YW5kIGFkZCB0byBsaXN0ICovCisJZm9yIChpID0gMDsgaSA8IGVsZW1fY291bnQ7IGkrKykKKwl7 CisJCUJpdG1hcHNldCAgKmxpc3RfYm1zID0gTlVMTDsKKworCQlpZiAoIWVsZW1fbnVsbHNbaV0p CisJCXsKKwkJCWJ5dGVhCSAgICplbGVtX2J5dGVhID0gRGF0dW1HZXRCeXRlYVAoZWxlbV9kYXR1 bXNbaV0pOworCisJCQlsaXN0X2JtcyA9IGRlY29kZV9ieXRlYV90b19ibXMoZWxlbV9ieXRlYSk7 CisJCX0KKworCQkvKiBBZGQgdG8gbGlzdCAoZXZlbiBpZiBOVUxMKSAqLworCQliaXRtYXBzZXRf bGlzdCA9IGxhcHBlbmQoYml0bWFwc2V0X2xpc3QsIGxpc3RfYm1zKTsKKwl9CisKKwkvKiBDYWxs IHRoZSBhY3R1YWwgYm1zX292ZXJsYXBfbGlzdCBmdW5jdGlvbiAqLworCXJlc3VsdCA9IGJtc19v dmVybGFwX2xpc3QoYm1zLCBiaXRtYXBzZXRfbGlzdCk7CisKKwkvKiBDbGVhbiB1cCAqLworCWlm IChibXMpCisJCWJtc19mcmVlKGJtcyk7CisKKwkvKiBGcmVlIGFsbCBiaXRtYXBzZXRzIGluIHRo ZSBsaXN0ICovCisJZm9yZWFjaChsYywgYml0bWFwc2V0X2xpc3QpCisJeworCQlCaXRtYXBzZXQg ICpsaXN0X2JtcyA9IChCaXRtYXBzZXQgKikgbGZpcnN0KGxjKTsKKworCQlpZiAobGlzdF9ibXMp CisJCQlibXNfZnJlZShsaXN0X2Jtcyk7CisJfQorCWxpc3RfZnJlZShiaXRtYXBzZXRfbGlzdCk7 CisKKwkvKiBGcmVlIGFycmF5IGRlY29uc3RydWN0aW9uIHJlc3VsdHMgKi8KKwlwZnJlZShlbGVt X2RhdHVtcyk7CisJcGZyZWUoZWxlbV9udWxscyk7CisKKwlQR19SRVRVUk5fQk9PTChyZXN1bHQp OworfQorCitEYXR1bQordGVzdF9ibXNfbm9uZW1wdHlfZGlmZmVyZW5jZShQR19GVU5DVElPTl9B UkdTKQoreworCUJpdG1hcHNldCAgKmJtczEgPSBOVUxMLAorCQkJICAgKmJtczIgPSBOVUxMOwor CWJvb2wJCXJlc3VsdDsKKworCWlmICghUEdfQVJHSVNOVUxMKDApKQorCQlibXMxID0gZGVjb2Rl X2J5dGVhX3RvX2JtcyhQR19HRVRBUkdfQllURUFfUFAoMCkpOworCisJaWYgKCFQR19BUkdJU05V TEwoMSkpCisJCWJtczIgPSBkZWNvZGVfYnl0ZWFfdG9fYm1zKFBHX0dFVEFSR19CWVRFQV9QUCgx KSk7CisKKwlyZXN1bHQgPSBibXNfbm9uZW1wdHlfZGlmZmVyZW5jZShibXMxLCBibXMyKTsKKwor CWlmIChibXMxKQorCQlibXNfZnJlZShibXMxKTsKKwlpZiAoYm1zMikKKwkJYm1zX2ZyZWUoYm1z Mik7CisKKwlQR19SRVRVUk5fQk9PTChyZXN1bHQpOworfQorCitEYXR1bQordGVzdF9ibXNfbWVt YmVyX2luZGV4KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJYnl0ZWEJICAgKmJtc19kYXRhOworCUJp dG1hcHNldCAgKmJtcyA9IE5VTEw7CisJaW50MzIJCW1lbWJlcjsKKwlpbnQJCQlyZXN1bHQ7CisK KwlpZiAoUEdfQVJHSVNOVUxMKDApKQorCQlQR19SRVRVUk5fSU5UMzIoLTEpOworCisJYm1zX2Rh dGEgPSBQR19HRVRBUkdfQllURUFfUFAoMCk7CisJbWVtYmVyID0gUEdfR0VUQVJHX0lOVDMyKDEp OworCisJaWYgKFZBUlNJWkVfQU5ZX0VYSERSKGJtc19kYXRhKSA9PSAwKQorCQlQR19SRVRVUk5f SU5UMzIoLTEpOworCisJYm1zID0gZGVjb2RlX2J5dGVhX3RvX2JtcyhibXNfZGF0YSk7CisKKwly ZXN1bHQgPSBibXNfbWVtYmVyX2luZGV4KGJtcywgbWVtYmVyKTsKKwlibXNfZnJlZShibXMpOwor CisJUEdfUkVUVVJOX0lOVDMyKHJlc3VsdCk7Cit9CisKK0RhdHVtCit0ZXN0X2Jtc19hZGRfcmFu Z2UoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlCaXRtYXBzZXQgICpibXMgPSBOVUxMOworCWludDMy CQlsb3dlciwKKwkJCQl1cHBlcjsKKwlieXRlYQkgICAqcmVzdWx0OworCisJaWYgKFBHX0FSR0lT TlVMTCgxKSB8fCBQR19BUkdJU05VTEwoMikpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwlpZiAo IVBHX0FSR0lTTlVMTCgwKSkKKwkJYm1zID0gZGVjb2RlX2J5dGVhX3RvX2JtcyhQR19HRVRBUkdf QllURUFfUFAoMCkpOworCisJbG93ZXIgPSBQR19HRVRBUkdfSU5UMzIoMSk7CisJdXBwZXIgPSBQ R19HRVRBUkdfSU5UMzIoMik7CisKKwkvKiBDaGVjayBmb3IgaW52YWxpZCByYW5nZSAqLworCWlm ICh1cHBlciA8IGxvd2VyKQorCXsKKwkJaWYgKGJtcykKKwkJCWJtc19mcmVlKGJtcyk7CisJCVBH X1JFVFVSTl9OVUxMKCk7CisJfQorCisJYm1zID0gYm1zX2FkZF9yYW5nZShibXMsIGxvd2VyLCB1 cHBlcik7CisKKwlyZXN1bHQgPSBlbmNvZGVfYm1zX3RvX2J5dGVhKGJtcyk7CisJaWYgKGJtcykK KwkJYm1zX2ZyZWUoYm1zKTsKKworCVBHX1JFVFVSTl9CWVRFQV9QKHJlc3VsdCk7Cit9CisKK0Rh dHVtCit0ZXN0X2Jtc19yZXBsYWNlX21lbWJlcnMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlCaXRt YXBzZXQgICpibXMxID0gTlVMTCwKKwkJCSAgICpibXMyID0gTlVMTDsKKwlCaXRtYXBzZXQgICpy ZXN1bHRfYm1zOworCWJ5dGVhCSAgICpyZXN1bHQ7CisKKwlpZiAoIVBHX0FSR0lTTlVMTCgwKSkK KwkJYm1zMSA9IGRlY29kZV9ieXRlYV90b19ibXMoUEdfR0VUQVJHX0JZVEVBX1BQKDApKTsKKwor CWlmICghUEdfQVJHSVNOVUxMKDEpKQorCQlibXMyID0gZGVjb2RlX2J5dGVhX3RvX2JtcyhQR19H RVRBUkdfQllURUFfUFAoMSkpOworCisJLyogSU1QT1JUQU5UOiBibXNfcmVwbGFjZV9tZW1iZXJz IG1vZGlmaWVzL2ZyZWVzIHRoZSBmaXJzdCBhcmd1bWVudCAqLworCXJlc3VsdF9ibXMgPSBibXNf cmVwbGFjZV9tZW1iZXJzKGJtczEsIGJtczIpOworCS8qIGJtczEgaXMgbm93IGludmFsaWQsIGRv bid0IGZyZWUgaXQgKi8KKworCWlmIChibXMyKQorCQlibXNfZnJlZShibXMyKTsKKworCWlmIChy ZXN1bHRfYm1zID09IE5VTEwpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwlyZXN1bHQgPSBlbmNv ZGVfYm1zX3RvX2J5dGVhKHJlc3VsdF9ibXMpOworCWJtc19mcmVlKHJlc3VsdF9ibXMpOworCisJ UEdfUkVUVVJOX0JZVEVBX1AocmVzdWx0KTsKK30KKworRGF0dW0KK3Rlc3RfYm1zX2pvaW4oUEdf RlVOQ1RJT05fQVJHUykKK3sKKwlCaXRtYXBzZXQgICpibXMxID0gTlVMTCwKKwkJCSAgICpibXMy ID0gTlVMTDsKKwlCaXRtYXBzZXQgICpyZXN1bHRfYm1zOworCWJ5dGVhCSAgICpyZXN1bHQ7CisK KwlpZiAoIVBHX0FSR0lTTlVMTCgwKSkKKwkJYm1zMSA9IGRlY29kZV9ieXRlYV90b19ibXMoUEdf R0VUQVJHX0JZVEVBX1BQKDApKTsKKworCWlmICghUEdfQVJHSVNOVUxMKDEpKQorCQlibXMyID0g ZGVjb2RlX2J5dGVhX3RvX2JtcyhQR19HRVRBUkdfQllURUFfUFAoMSkpOworCisJLyogSU1QT1JU QU5UOiBibXNfam9pbiBtb2RpZmllcy9mcmVlcyB0aGUgZmlyc3QgYXJndW1lbnQgKi8KKwlyZXN1 bHRfYm1zID0gYm1zX2pvaW4oYm1zMSwgYm1zMik7CisJLyogYm1zMSBpcyBub3cgaW52YWxpZCEg RG9uJ3QgZnJlZSBpdCAqLworCisJaWYgKGJtczIpCisJCWJtc19mcmVlKGJtczIpOworCisJaWYg KHJlc3VsdF9ibXMgPT0gTlVMTCkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCXJlc3VsdCA9IGVu Y29kZV9ibXNfdG9fYnl0ZWEocmVzdWx0X2Jtcyk7CisJYm1zX2ZyZWUocmVzdWx0X2Jtcyk7CisK KwlQR19SRVRVUk5fQllURUFfUChyZXN1bHQpOworfQorCitEYXR1bQordGVzdF9ibXNfaGFzaF92 YWx1ZShQR19GVU5DVElPTl9BUkdTKQoreworCUJpdG1hcHNldCAgKmJtcyA9IE5VTEw7CisJdWlu dDMyCQloYXNoX3Jlc3VsdDsKKworCWlmICghUEdfQVJHSVNOVUxMKDApKQorCQlibXMgPSBkZWNv ZGVfYnl0ZWFfdG9fYm1zKFBHX0dFVEFSR19CWVRFQV9QUCgwKSk7CisKKwloYXNoX3Jlc3VsdCA9 IGJtc19oYXNoX3ZhbHVlKGJtcyk7CisKKwlpZiAoYm1zKQorCQlibXNfZnJlZShibXMpOworCisJ UEdfUkVUVVJOX0lOVDMyKGhhc2hfcmVzdWx0KTsKK30KKworRGF0dW0KK3Rlc3RfYml0bWFwX2hh c2goUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlCaXRtYXBzZXQgICpibXMgPSBOVUxMOworCUJpdG1h cHNldCAgKmJtc19wdHI7CisJdWludDMyCQloYXNoX3Jlc3VsdDsKKworCWlmICghUEdfQVJHSVNO VUxMKDApKQorCQlibXMgPSBkZWNvZGVfYnl0ZWFfdG9fYm1zKFBHX0dFVEFSR19CWVRFQV9QUCgw KSk7CisKKwlibXNfcHRyID0gYm1zOworCisJLyogQ2FsbCBiaXRtYXBfaGFzaCAqLworCWhhc2hf cmVzdWx0ID0gYml0bWFwX2hhc2goJmJtc19wdHIsIHNpemVvZihCaXRtYXBzZXQgKikpOworCisJ LyogQ2xlYW4gdXAgKi8KKwlpZiAoIVBHX0FSR0lTTlVMTCgwKSAmJiBibXNfcHRyKQorCQlibXNf ZnJlZShibXNfcHRyKTsKKworCVBHX1JFVFVSTl9JTlQzMihoYXNoX3Jlc3VsdCk7Cit9CisKK0Rh dHVtCit0ZXN0X2JpdG1hcF9tYXRjaChQR19GVU5DVElPTl9BUkdTKQoreworCUJpdG1hcHNldCAg KmJtczEgPSBOVUxMLAorCQkJICAgKmJtczIgPSBOVUxMOworCUJpdG1hcHNldCAgKmJtc19wdHIx LAorCQkJICAgKmJtc19wdHIyOworCWludAkJCW1hdGNoX3Jlc3VsdDsKKworCWlmICghUEdfQVJH SVNOVUxMKDApKQorCQlibXMxID0gZGVjb2RlX2J5dGVhX3RvX2JtcyhQR19HRVRBUkdfQllURUFf UFAoMCkpOworCisJaWYgKCFQR19BUkdJU05VTEwoMSkpCisJCWJtczIgPSBkZWNvZGVfYnl0ZWFf dG9fYm1zKFBHX0dFVEFSR19CWVRFQV9QUCgxKSk7CisKKwkvKiBTZXQgdXAgcG9pbnRlcnMgdG8g dGhlIEJpdG1hcHNldHMgKi8KKwlibXNfcHRyMSA9IGJtczE7CisJYm1zX3B0cjIgPSBibXMyOwor CisJLyogQ2FsbCBiaXRtYXBfbWF0Y2ggd2l0aCBhZGRyZXNzZXMgb2YgdGhlIEJpdG1hcHNldCBw b2ludGVycyAqLworCW1hdGNoX3Jlc3VsdCA9IGJpdG1hcF9tYXRjaCgmYm1zX3B0cjEsICZibXNf cHRyMiwgc2l6ZW9mKEJpdG1hcHNldCAqKSk7CisKKwkvKiBDbGVhbiB1cCAqLworCWlmIChibXMx KQorCQlibXNfZnJlZShibXMxKTsKKwlpZiAoYm1zMikKKwkJYm1zX2ZyZWUoYm1zMik7CisKKwlQ R19SRVRVUk5fSU5UMzIobWF0Y2hfcmVzdWx0KTsKK30KKworRGF0dW0KK3Rlc3RfcmFuZG9tX29w ZXJhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlwZ19wcm5nX3N0YXRlIHN0YXRlOworCWlu dDMyCQlzZWVkOworCWludDMyCQludW1fb3BzOworCUJpdG1hcHNldCAgKmJtcyA9IE5VTEw7CisJ aW50CQkJb3AsCisJCQkJbWVtYmVyOworCWludAkJCXRvdGFsX29wcyA9IDA7CisKKwlzZWVkID0g UEdfR0VUQVJHX0lOVDMyKDApOworCW51bV9vcHMgPSBQR19HRVRBUkdfSU5UMzIoMSk7CisKKwlw Z19wcm5nX3NlZWQoJnN0YXRlLCAodWludDY0KSBzZWVkKTsKKworCWZvciAoaW50IGkgPSAwOyBp IDwgbnVtX29wczsgaSsrKQorCXsKKwkJb3AgPSBwZ19wcm5nX3VpbnQzMigmc3RhdGUpICUgMzsJ LyogMD1hZGQsIDE9ZGVsZXRlLCAyPXRlc3QgKi8KKwkJbWVtYmVyID0gcGdfcHJuZ191aW50MzIo JnN0YXRlKSAlIDEwMDA7CisKKwkJc3dpdGNoIChvcCkKKwkJeworCQkJY2FzZSAwOgkJCQkvKiBh ZGQgKi8KKwkJCQlibXMgPSBibXNfYWRkX21lbWJlcihibXMsIG1lbWJlcik7CisJCQkJdG90YWxf b3BzKys7CisJCQkJYnJlYWs7CisJCQljYXNlIDE6CQkJCS8qIGRlbGV0ZSAqLworCQkJCWlmIChi bXMgIT0gTlVMTCkKKwkJCQl7CisJCQkJCWJtcyA9IGJtc19kZWxfbWVtYmVyKGJtcywgbWVtYmVy KTsKKwkJCQkJdG90YWxfb3BzKys7CisJCQkJfQorCQkJCWJyZWFrOworCQkJY2FzZSAyOgkJCQkv KiB0ZXN0IG1lbWJlcnNoaXAgKi8KKwkJCQlpZiAoYm1zICE9IE5VTEwpCisJCQkJeworCQkJCQli bXNfaXNfbWVtYmVyKG1lbWJlciwgYm1zKTsKKwkJCQkJdG90YWxfb3BzKys7CisJCQkJfQorCQkJ CWJyZWFrOworCQl9CisJfQorCisJaWYgKGJtcykKKwkJYm1zX2ZyZWUoYm1zKTsKKworCVBHX1JF VFVSTl9JTlQzMih0b3RhbF9vcHMpOworfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1hcHNldC5jb250cm9sIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1hcHNldC5jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi44ZDAyZWM4YmYwYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvdGVzdF9iaXRtYXBzZXQuY29udHJvbApAQCAtMCww ICsxLDQgQEAKK2NvbW1lbnQgPSAnVGVzdCBjb2RlIGZvciBCaXRtYXBzZXQnCitkZWZhdWx0X3Zl cnNpb24gPSAnMS4wJworbW9kdWxlX3BhdGhuYW1lID0gJyRsaWJkaXIvdGVzdF9iaXRtYXBzZXQn CityZWxvY2F0YWJsZSA9IHRydWUKLS0gCjIuNDkuMAoK --68cacb66_684c0663_6415--