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 1uYjgM-00ALdB-LV for pgsql-hackers@arkaria.postgresql.org; Mon, 07 Jul 2025 11:06:47 +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 1uYjgK-001Hdb-0q for pgsql-hackers@arkaria.postgresql.org; Mon, 07 Jul 2025 11:06:44 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uYjgJ-001HdS-Fj for pgsql-hackers@lists.postgresql.org; Mon, 07 Jul 2025 11:06:44 +0000 Received: from mail-yw1-x112a.google.com ([2607:f8b0:4864:20::112a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uYjgF-006DTc-29 for pgsql-hackers@lists.postgresql.org; Mon, 07 Jul 2025 11:06:43 +0000 Received: by mail-yw1-x112a.google.com with SMTP id 00721157ae682-70f147b5a52so19099937b3.3 for ; Mon, 07 Jul 2025 04:06:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751886397; x=1752491197; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=0ZocH0f3iQzI7lbwal7FU8Hs99q5988W0TCz5hwPJyQ=; b=MtvSIJXtVWBdXT51fR9Oi7YjuJK6UL6fKH8MnpdXKeFjpkpQ/dpCkbEL5jH/VOsT7E eihOUiBZnhL1vs/ccTlPzOkARQVtC89WQ4LzIeFukooHjqAFb/kTiaZueJYgUeoSlqtJ Z2XyyDGaZsget2tM3otBjqlB2V2GFCjKaNYtK97+SpvtwbfSx1pl5GUtAIcRqkFXVhbR Kb9CHqqYPRanDp8F9bvWw24jioFQ96NtmBDQTNs35zhmp7bS/9vocQeSfZzZrAvl0THH iAj3pl1mk6+tLzprxWPo8Yv3BB3vQ/MNTBKRN9b3wqDnnQ+NbMbg6BPKl0sr95VNEzQe 2QBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751886397; x=1752491197; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=0ZocH0f3iQzI7lbwal7FU8Hs99q5988W0TCz5hwPJyQ=; b=EjRek9qWaz6jYsCxkTNU06UcCc2zTZDuiXebp4R1M68twKjVR7wYV8Oe+JhtFYf35C bo/knJqYsbDOiH8c0y1ouyEXFQXOHae44rmdLPQ4xQSYUYobY+GHs11Z6mK4N6P2c80w XaFcBF9ufIPeyUYlWn6ELslal9u73iRou2pNHYHMEyeiLhv6J3+f/T6mMWyzXAktZ1Wg nLJ38MokyvYZYtTE5I0+byKP9fBrZ+TmRu1S3pNw7H0F/AdOOHzAigIi678/HnkxTBxl zTExZ8X0PpueqDDTGt537is5SkkMolpL6u5HBwGfUmrjibPFXQxxnRqhGAVVZMykKvLz 5oWA== X-Gm-Message-State: AOJu0Yx9JSnieqWcu4SIN1GT6PVnrMTszExESuZAsLZGgsvoGmAl7vel rzPLWbBf9G8EwPyvesDNQ/jcQkjLeG3H41o+fz8OPgibbfKSCUrshLx82ygxOWXOvVudRybl1zu 9W/lV4VQkzlv79eE/PDgNfJfNpaXwSpg= X-Gm-Gg: ASbGncsBDj7BbWJgS7x0SfWUJbhHxJzW6I63UNnNbr3JXijhwlMXM6j8lLCi35jGsNp dW11Xf15oDGaX6tNY7Tzh8y4jqapzAxdzdEp8ZMU7bl6SUEXlHu8bacdSq4zGJgyvfNOrsTWjpY LbA8sZaRSr+QEc0CzIzx6bCC1zzRjeJ0SrYXxM5ZeSx2R9q3dezJTG5Ss= X-Google-Smtp-Source: AGHT+IEakbWFUyuHLmNJ/T2yNtJKLtAcyjSn8NP0J1dcuf7enfws+u2Nk4BB/gCmvavkiJFr3+bC2QMRP3tCVNtYVqg= X-Received: by 2002:a05:690c:30d:b0:70e:2d1a:82b8 with SMTP id 00721157ae682-71668d734cdmr152649007b3.34.1751886396837; Mon, 07 Jul 2025 04:06:36 -0700 (PDT) MIME-Version: 1.0 References: <202507061949.6tjgborub3kd@alvherre.pgsql> In-Reply-To: <202507061949.6tjgborub3kd@alvherre.pgsql> From: Arseniy Mukhin Date: Mon, 7 Jul 2025 14:06:24 +0300 X-Gm-Features: Ac12FXyS35G7JI_yGgGkOSFMUaiAoOvtLJBarj33nQlSxBlwn5pN-dljbvKzEm0 Message-ID: Subject: Re: amcheck support for BRIN indexes To: =?UTF-8?Q?=C3=81lvaro_Herrera?= Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000005f4b02063954d601" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000005f4b02063954d601 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Jul 6, 2025 at 10:49=E2=80=AFPM =C3=81lvaro Herrera wrote: > > On 2025-Jul-06, Arseniy Mukhin wrote: > > > Sorry, forget to run a full test run with the new patch version. Some > > tests were unhappy with the new unknown support function. Here the new > > version with the fix. > > Hello, I think this patch is probably a good idea. I don't think it > makes sense to introduce a bunch of code in 0003 only to rewrite it > completely in 0005. I would ask that you re-split your WITHIN_RANGE > (0004) to appear before the amcheck code, and then write the amcheck > code using that new functionality. Hi, =C3=81lvaro! Thank you for looking into this. OK, we can easily revert to the version with consistent function if needed, so let's get rid of it. > > > /* > > * Return a tuple descriptor used for on-disk storage of BRIN tuples. > > */ > > -static TupleDesc > > +TupleDesc > > brtuple_disk_tupdesc(BrinDesc *brdesc) > > I think we should give this function a better name if it's going to be > exported. How about brin_tuple_tupdesc? (in brin_tuple.h we > seem to distinguish "brin tuples" which are the stored ones, from "brin > mem tuples" which are the ones to be used in memory.) > 'brin_tuple_tupdesc' sounds good to me. Done. So here is a new version. 0001, 0002 - index structure check. 0003, 0004 - all heap indexed using WITHIN_RANGE approach. Thank you! Best regards, Arseniy Mukhin --0000000000005f4b02063954d601 Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0001-brin-refactoring.patch" Content-Disposition: attachment; filename="v7-0001-brin-refactoring.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcszh3wx0 RnJvbSA5OGMzYzcwYWVlYjQ2MjhlMTRhZDg1NmY2M2M1ZDFmYjkxZDA4ZjIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBcnNlbml5IE11a2hpbiA8YXJzZW5peS5tdWtoaW4uZGV2QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAxNiBBcHIgMjAyNSAxMToyNjo0NSArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjcgMS80XSBicmluIHJlZmFjdG9yaW5nCgpGb3IgYWRkaW5nIEJSSU4gaW5kZXggc3Vw cG9ydCBpbiBhbWNoZWNrIHdlIG5lZWQgc29tZSB0aW55IGNoYW5nZXMgaW4gQlJJTgpjb3JlIGNv ZGU6CgoqIFdlIG5lZWQgdG8gaGF2ZSB0dXBsZSBkZXNjcmlwdG9yIGZvciBvbi1kaXNrIHN0b3Jh Z2Ugb2YgQlJJTiB0dXBsZXMuCiAgSXQgaXMgYSBwdWJsaWMgZmllbGQgJ2JkX2Rpc2t0ZGVzYycg aW4gQnJpbkRlc2MsIGJ1dCB0byBhY2Nlc3MgaXQgd2UKICBuZWVkIGZ1bmN0aW9uICdicnR1cGxl X2Rpc2tfdHVwZGVzYycgd2hpY2ggaXMgaW50ZXJuYWwuIFRoaXMgY29tbWl0CiAgbWFrZXMgaXQg ZXh0ZXJuIGFuZCByZW5hbWVzIGl0IHRvICdicmluX3R1cGxlX3R1cGRlc2MnLgoKKiBGb3IgbWV0 YSBwYWdlIGNoZWNrIHdlIG5lZWQgdG8ga25vdyBwYWdlc19wZXJfcmFuZ2UgdXBwZXIgbGltaXQu IEl0J3MKICBoYXJkY29kZWQgbm93LiBUaGlzIGNvbW1pdCBtb3ZlcyBpdHMgdmFsdWUgdG8gbWFj cm9zIEJSSU5fTUFYX1BBR0VTX1BFUl9SQU5HRQogIHNvIHRoYXQgd2UgY2FuIHVzZSBpdCBpbiBh bWNoZWNrIHRvby4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3R1cGxlLmMgICB8 IDEwICsrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jIHwg IDMgKystCiBzcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbi5oICAgICAgICAgICAgICB8ICAxICsKIHNy Yy9pbmNsdWRlL2FjY2Vzcy9icmluX3R1cGxlLmggICAgICAgIHwgIDIgKysKIDQgZmlsZXMgY2hh bmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3R1cGxlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluX3R1cGxlLmMKaW5kZXggODYxZjM5N2U2ZGIuLmZjNjdhNzA4ZGRhIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3R1cGxlLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2JyaW4vYnJpbl90dXBsZS5jCkBAIC01Nyw4ICs1Nyw4IEBAIHN0YXRpYyBpbmxpbmUg dm9pZCBicmluX2RlY29uc3RydWN0X3R1cGxlKEJyaW5EZXNjICpicmRlc2MsCiAvKgogICogUmV0 dXJuIGEgdHVwbGUgZGVzY3JpcHRvciB1c2VkIGZvciBvbi1kaXNrIHN0b3JhZ2Ugb2YgQlJJTiB0 dXBsZXMuCiAgKi8KLXN0YXRpYyBUdXBsZURlc2MKLWJydHVwbGVfZGlza190dXBkZXNjKEJyaW5E ZXNjICpicmRlc2MpCitUdXBsZURlc2MKK2JyaW5fdHVwbGVfdHVwZGVzYyhCcmluRGVzYyAqYnJk ZXNjKQogewogCS8qIFdlIGNhY2hlIHRoZXNlIGluIHRoZSBCcmluRGVzYyAqLwogCWlmIChicmRl c2MtPmJkX2Rpc2t0ZGVzYyA9PSBOVUxMKQpAQCAtMjgwLDcgKzI4MCw3IEBAIGJyaW5fZm9ybV90 dXBsZShCcmluRGVzYyAqYnJkZXNjLCBCbG9ja051bWJlciBibGtubywgQnJpbk1lbVR1cGxlICp0 dXBsZSwKIAogCWxlbiA9IGhvZmYgPSBNQVhBTElHTihsZW4pOwogCi0JZGF0YV9sZW4gPSBoZWFw X2NvbXB1dGVfZGF0YV9zaXplKGJydHVwbGVfZGlza190dXBkZXNjKGJyZGVzYyksCisJZGF0YV9s ZW4gPSBoZWFwX2NvbXB1dGVfZGF0YV9zaXplKGJyaW5fdHVwbGVfdHVwZGVzYyhicmRlc2MpLAog CQkJCQkJCQkJICB2YWx1ZXMsIG51bGxzKTsKIAlsZW4gKz0gZGF0YV9sZW47CiAKQEAgLTI5OSw3 ICsyOTksNyBAQCBicmluX2Zvcm1fdHVwbGUoQnJpbkRlc2MgKmJyZGVzYywgQmxvY2tOdW1iZXIg Ymxrbm8sIEJyaW5NZW1UdXBsZSAqdHVwbGUsCiAJICogbmVlZCB0byBwYXNzIGEgdmFsaWQgbnVs bCBiaXRtYXAgc28gdGhhdCBpdCB3aWxsIGNvcnJlY3RseSBza2lwCiAJICogb3V0cHV0dGluZyBu dWxsIGF0dHJpYnV0ZXMgaW4gdGhlIGRhdGEgYXJlYS4KIAkgKi8KLQloZWFwX2ZpbGxfdHVwbGUo YnJ0dXBsZV9kaXNrX3R1cGRlc2MoYnJkZXNjKSwKKwloZWFwX2ZpbGxfdHVwbGUoYnJpbl90dXBs ZV90dXBkZXNjKGJyZGVzYyksCiAJCQkJCXZhbHVlcywKIAkJCQkJbnVsbHMsCiAJCQkJCShjaGFy ICopIHJldHR1cGxlICsgaG9mZiwKQEAgLTY4Miw3ICs2ODIsNyBAQCBicmluX2RlY29uc3RydWN0 X3R1cGxlKEJyaW5EZXNjICpicmRlc2MsCiAJICogbWF5IHJldXNlIGF0dHJpYnV0ZSBlbnRyaWVz IGZvciBtb3JlIHRoYW4gb25lIGNvbHVtbiwgd2UgY2Fubm90IGNhY2hlCiAJICogb2Zmc2V0cyBo ZXJlLgogCSAqLwotCWRpc2tkc2MgPSBicnR1cGxlX2Rpc2tfdHVwZGVzYyhicmRlc2MpOworCWRp c2tkc2MgPSBicmluX3R1cGxlX3R1cGRlc2MoYnJkZXNjKTsKIAlzdG9yZWQgPSAwOwogCW9mZiA9 IDA7CiAJZm9yIChhdHRudW0gPSAwOyBhdHRudW0gPCBicmRlc2MtPmJkX3R1cGRlc2MtPm5hdHRz OyBhdHRudW0rKykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0 aW9ucy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKaW5kZXggNTA3 NDdjMTYzOTYuLmJjNDk0ODQ3MzQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29t bW9uL3JlbG9wdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3JlbG9wdGlv bnMuYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9oZWFwdG9hc3QuaCIKICNp bmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL25idHJlZS5o IgorI2luY2x1ZGUgImFjY2Vzcy9icmluLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbG9wdGlvbnMu aCIKICNpbmNsdWRlICJhY2Nlc3Mvc3BnaXN0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3R5cGUuaCIKQEAgLTM0Myw3ICszNDQsNyBAQCBzdGF0aWMgcmVsb3B0X2ludCBpbnRSZWxP cHRzW10gPQogCQkJIk51bWJlciBvZiBwYWdlcyB0aGF0IGVhY2ggcGFnZSByYW5nZSBjb3ZlcnMg aW4gYSBCUklOIGluZGV4IiwKIAkJCVJFTE9QVF9LSU5EX0JSSU4sCiAJCQlBY2Nlc3NFeGNsdXNp dmVMb2NrCi0JCX0sIDEyOCwgMSwgMTMxMDcyCisJCX0sIDEyOCwgMSwgQlJJTl9NQVhfUEFHRVNf UEVSX1JBTkdFCiAJfSwKIAl7CiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9i cmluLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbi5oCmluZGV4IDgyMWYxZTAyODA2Li4zMzRj ZTk3M2I2NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW4uaAorKysgYi9zcmMv aW5jbHVkZS9hY2Nlc3MvYnJpbi5oCkBAIC0zNyw2ICszNyw3IEBAIHR5cGVkZWYgc3RydWN0IEJy aW5TdGF0c0RhdGEKIAogCiAjZGVmaW5lIEJSSU5fREVGQVVMVF9QQUdFU19QRVJfUkFOR0UJMTI4 CisjZGVmaW5lIEJSSU5fTUFYX1BBR0VTX1BFUl9SQU5HRQkxMzEwNzIKICNkZWZpbmUgQnJpbkdl dFBhZ2VzUGVyUmFuZ2UocmVsYXRpb24pIFwKIAkoQXNzZXJ0TWFjcm8ocmVsYXRpb24tPnJkX3Jl bC0+cmVsa2luZCA9PSBSRUxLSU5EX0lOREVYICYmIFwKIAkJCQkgcmVsYXRpb24tPnJkX3JlbC0+ cmVsYW0gPT0gQlJJTl9BTV9PSUQpLCBcCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv YnJpbl90dXBsZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5fdHVwbGUuaAppbmRleCAwMTBi YTRlYTNjMC4uMmExMmFiMDNjNDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmlu X3R1cGxlLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5fdHVwbGUuaApAQCAtMTA5LDQg KzEwOSw2IEBAIGV4dGVybiBCcmluTWVtVHVwbGUgKmJyaW5fbWVtdHVwbGVfaW5pdGlhbGl6ZShC cmluTWVtVHVwbGUgKmR0dXBsZSwKIGV4dGVybiBCcmluTWVtVHVwbGUgKmJyaW5fZGVmb3JtX3R1 cGxlKEJyaW5EZXNjICpicmRlc2MsCiAJCQkJCQkJCQkgICBCcmluVHVwbGUgKnR1cGxlLCBCcmlu TWVtVHVwbGUgKmRNZW10dXBsZSk7CiAKK2V4dGVybiBUdXBsZURlc2MgYnJpbl90dXBsZV90dXBk ZXNjKEJyaW5EZXNjICpicmRlc2MpOworCiAjZW5kaWYJCQkJCQkJLyogQlJJTl9UVVBMRV9IICov Ci0tIAoyLjQzLjAKCg== --0000000000005f4b02063954d601 Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0002-amcheck-brin_index_check-index-structure-check.patch" Content-Disposition: attachment; filename="v7-0002-amcheck-brin_index_check-index-structure-check.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcszh3x21 RnJvbSBiNzg1NWQzZjdhNWUzNWQ1ZmViOGJmNjQ0MjFmYmQ4OTNkMTY5N2M0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBcnNlbml5IE11a2hpbiA8YXJzZW5peS5tdWtoaW4uZGV2QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAxNiBKdW4gMjAyNSAxODoxMToyNyArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjcgMi80XSBhbWNoZWNrOiBicmluX2luZGV4X2NoZWNrKCkgLSBpbmRleCBzdHJ1Y3R1 cmUgY2hlY2sKCkFkZHMgYSBuZXcgZnVuY3Rpb24gYnJpbl9pbmRleF9jaGVjaygpIGZvciB2YWxp ZGF0aW5nIEJSSU4gaW5kZXhlcy4KSXQgaW5jdWRlcyBuZXh0IGNoZWNrczoKLSBtZXRhIHBhZ2Ug Y2hlY2tzCi0gcmV2bWFwIHBvaW50ZXJzIGlzIHZhbGlkIGFuZCBwb2ludHMgdG8gaW5kZXggdHVw bGVzIHdpdGggZXhwZWN0ZWQgcmFuZ2UgYmxrbm8KLSBpbmRleCB0dXBsZXMgaGF2ZSBleHBlY3Rl ZCBmb3JtYXQKLSBzb21lIHNwZWNpYWwgY2hlY2tzIGZvciBlbXB0eV9yYW5nZXMKLSBldmVyeSBp bmRleCB0dXBsZSBoYXMgY29ycmVzcG9uZGluZyByZXZtYXAgaXRlbSB0aGF0IHBvaW50cyB0byBp dCAob3B0aW9uYWwpCi0tLQogY29udHJpYi9hbWNoZWNrL01ha2VmaWxlICAgICAgICAgICAgICAg IHwgICA1ICstCiBjb250cmliL2FtY2hlY2svYW1jaGVjay0tMS41LS0xLjYuc3FsICAgfCAgMTgg KwogY29udHJpYi9hbWNoZWNrL2FtY2hlY2suY29udHJvbCAgICAgICAgIHwgICAyICstCiBjb250 cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfYnJpbi5vdXQgfCAxMzQgKysrKwogY29udHJpYi9h bWNoZWNrL21lc29uLmJ1aWxkICAgICAgICAgICAgIHwgICA0ICsKIGNvbnRyaWIvYW1jaGVjay9z cWwvY2hlY2tfYnJpbi5zcWwgICAgICB8IDEwMSArKysKIGNvbnRyaWIvYW1jaGVjay90LzAwN192 ZXJpZnlfYnJpbi5wbCAgICB8IDI5MSArKysrKysrKwogY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9i cmluLmMgICAgICAgICAgIHwgODU1ICsrKysrKysrKysrKysrKysrKysrKysrKwogOCBmaWxlcyBj aGFuZ2VkLCAxNDA3IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgY29udHJpYi9hbWNoZWNrL2FtY2hlY2stLTEuNS0tMS42LnNxbAogY3JlYXRlIG1vZGUg MTAwNjQ0IGNvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19icmluLm91dAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGNvbnRyaWIvYW1jaGVjay9zcWwvY2hlY2tfYnJpbi5zcWwKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBjb250cmliL2FtY2hlY2svdC8wMDdfdmVyaWZ5X2JyaW4ucGwKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBjb250cmliL2FtY2hlY2svdmVyaWZ5X2JyaW4uYwoKZGlmZiAtLWdpdCBhL2NvbnRy aWIvYW1jaGVjay9NYWtlZmlsZSBiL2NvbnRyaWIvYW1jaGVjay9NYWtlZmlsZQppbmRleCAxYjdh NjNjYmFhNC4uYmRmYjI3NGM4OWMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay9NYWtlZmls ZQorKysgYi9jb250cmliL2FtY2hlY2svTWFrZWZpbGUKQEAgLTYsMTEgKzYsMTIgQEAgT0JKUyA9 IFwKIAl2ZXJpZnlfY29tbW9uLm8gXAogCXZlcmlmeV9naW4ubyBcCiAJdmVyaWZ5X2hlYXBhbS5v IFwKLQl2ZXJpZnlfbmJ0cmVlLm8KKwl2ZXJpZnlfbmJ0cmVlLm8gXAorCXZlcmlmeV9icmluLm8K IAogRVhURU5TSU9OID0gYW1jaGVjawogREFUQSA9IGFtY2hlY2stLTEuMi0tMS4zLnNxbCBhbWNo ZWNrLS0xLjEtLTEuMi5zcWwgYW1jaGVjay0tMS4wLS0xLjEuc3FsIGFtY2hlY2stLTEuMC5zcWwg XAotCQlhbWNoZWNrLS0xLjMtLTEuNC5zcWwgYW1jaGVjay0tMS40LS0xLjUuc3FsCisJCWFtY2hl Y2stLTEuMy0tMS40LnNxbCBhbWNoZWNrLS0xLjQtLTEuNS5zcWwgYW1jaGVjay0tMS41LS0xLjYu c3FsCiBQR0ZJTEVERVNDID0gImFtY2hlY2sgLSBmdW5jdGlvbiBmb3IgdmVyaWZ5aW5nIHJlbGF0 aW9uIGludGVncml0eSIKIAogUkVHUkVTUyA9IGNoZWNrIGNoZWNrX2J0cmVlIGNoZWNrX2dpbiBj aGVja19oZWFwCmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svYW1jaGVjay0tMS41LS0xLjYu c3FsIGIvY29udHJpYi9hbWNoZWNrL2FtY2hlY2stLTEuNS0tMS42LnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOWVjMDQ2YmIxY2YKLS0tIC9kZXYvbnVsbAorKysg Yi9jb250cmliL2FtY2hlY2svYW1jaGVjay0tMS41LS0xLjYuc3FsCkBAIC0wLDAgKzEsMTggQEAK Ky8qIGNvbnRyaWIvYW1jaGVjay9hbWNoZWNrLS0xLjUtLTEuNi5zcWwgKi8KKworLS0gY29tcGxh aW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQgaW4gcHNxbCwgcmF0aGVyIHRoYW4gdmlhIENSRUFURSBF WFRFTlNJT04KK1xlY2hvIFVzZSAiQUxURVIgRVhURU5TSU9OIGFtY2hlY2sgVVBEQVRFIFRPICcx LjYnIiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKKworCistLQorLS0gYnJpbl9pbmRleF9jaGVj aygpCistLQorQ1JFQVRFIEZVTkNUSU9OIGJyaW5faW5kZXhfY2hlY2soaW5kZXggcmVnY2xhc3Ms CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWd1bGFyX3BhZ2VzX2NoZWNrIGJv b2xlYW4gZGVmYXVsdCBmYWxzZQorKQorICAgIFJFVFVSTlMgVk9JRAorQVMgJ01PRFVMRV9QQVRI TkFNRScsICdicmluX2luZGV4X2NoZWNrJworTEFOR1VBR0UgQyBTVFJJQ1QgUEFSQUxMRUwgUkVT VFJJQ1RFRDsKKworLS0gV2UgZG9uJ3Qgd2FudCB0aGlzIHRvIGJlIGF2YWlsYWJsZSB0byBwdWJs aWMKK1JFVk9LRSBBTEwgT04gRlVOQ1RJT04gYnJpbl9pbmRleF9jaGVjayhyZWdjbGFzcywgYm9v bGVhbikgRlJPTSBQVUJMSUM7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvY29udHJpYi9hbWNoZWNrL2FtY2hlY2suY29udHJvbCBiL2NvbnRyaWIvYW1jaGVjay9hbWNo ZWNrLmNvbnRyb2wKaW5kZXggYzhiYTZkN2M5YmMuLjJmMzI5ZWYyY2Y0IDEwMDY0NAotLS0gYS9j b250cmliL2FtY2hlY2svYW1jaGVjay5jb250cm9sCisrKyBiL2NvbnRyaWIvYW1jaGVjay9hbWNo ZWNrLmNvbnRyb2wKQEAgLTEsNSArMSw1IEBACiAjIGFtY2hlY2sgZXh0ZW5zaW9uCiBjb21tZW50 ID0gJ2Z1bmN0aW9ucyBmb3IgdmVyaWZ5aW5nIHJlbGF0aW9uIGludGVncml0eScKLWRlZmF1bHRf dmVyc2lvbiA9ICcxLjUnCitkZWZhdWx0X3ZlcnNpb24gPSAnMS42JwogbW9kdWxlX3BhdGhuYW1l ID0gJyRsaWJkaXIvYW1jaGVjaycKIHJlbG9jYXRhYmxlID0gdHJ1ZQpkaWZmIC0tZ2l0IGEvY29u dHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2JyaW4ub3V0IGIvY29udHJpYi9hbWNoZWNrL2V4 cGVjdGVkL2NoZWNrX2JyaW4ub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5lNWZjNTJlZDc0NwotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvYW1jaGVjay9leHBl Y3RlZC9jaGVja19icmluLm91dApAQCAtMCwwICsxLDEzNCBAQAorLS0gaGVscGVyIGZ1bmMKK0NS RUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OICByYW5kb21fc3RyaW5nKCBJTlQgKSBSRVRVUk5TIFRF WFQgQVMgJCQKK1NFTEVDVCBzdHJpbmdfYWdnKHN1YnN0cmluZygnMDEyMzQ1Njc4OWFiY2RlZmdo aWprbG1ub3BxcnN0dXZ3eHl6JywgY2VpbChyYW5kb20oKSAqIDM2KTo6SU5URUdFUiwgMSksICcn KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAkMSk7CiskJCBMQU5HVUFHRSBzcWw7CistLSBlbXB0 eSB0YWJsZSBpbmRleCBzaG91bGQgYmUgdmFsaWQKK0NSRUFURSBUQUJMRSBicmludGVzdCAoYSBC SUdJTlQpIFdJVEggKEZJTExGQUNUT1IgPSAxMCk7CitDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4 IE9OIGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2Jy aW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlKTsKKyBicmluX2luZGV4X2NoZWNrIAorLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIGNsZWFudXAKK0RST1AgVEFCTEUgYnJpbnRl c3Q7CistLSBtdWx0aXBsZSBhdHRyaWJ1dGVzIHRlc3QKK0NSRUFURSBUQUJMRSBicmludGVzdCAo aWQgQklHU0VSSUFMLCBhIFRFWFQpIFdJVEggKEZJTExGQUNUT1IgPSAxMCk7CitDUkVBVEUgSU5E RVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEgVEVYVF9taW5tYXhfb3Bz LCBpZCBpbnQ4X21pbm1heF9vcHMpIFdJVEggKFBBR0VTX1BFUl9SQU5HRSA9IDIpOworSU5TRVJU IElOVE8gYnJpbnRlc3QgKGEpIFNFTEVDVCByYW5kb21fc3RyaW5nKCh4ICUgMTAwKSkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwzMDAwKSB4OworLS0gY3JlYXRlIHNvbWUgZW1wdHkgcmFuZ2VzCitE RUxFVEUgRlJPTSBicmludGVzdCBXSEVSRSBpZCA+IDE1MDAgQU5EIGlkIDwgMjUwMDsKK1NFTEVD VCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSk7CisgYnJp bl9pbmRleF9jaGVjayAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSByZWJ1 aWxkIGluZGV4CitEUk9QIElOREVYIGJyaW50ZXN0X2lkeDsKK0NSRUFURSBJTkRFWCBicmludGVz dF9pZHggT04gYnJpbnRlc3QgVVNJTkcgQlJJTiAoYSBURVhUX21pbm1heF9vcHMpIFdJVEggKFBB R0VTX1BFUl9SQU5HRSA9IDIpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lk eCc6OlJFR0NMQVNTLCB0cnVlKTsKKyBicmluX2luZGV4X2NoZWNrIAorLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKKy0tIGNsZWFudXAKK0RST1AgVEFCTEUgYnJpbnRlc3Q7CistLSBt aW5fbWF4IG9wY2xhc3MKK0NSRUFURSBUQUJMRSBicmludGVzdCAoYSBCSUdJTlQpIFdJVEggKEZJ TExGQUNUT1IgPSAxMCk7CitDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVT SU5HIEJSSU4gKGEgaW50OF9taW5tYXhfb3BzKSBXSVRIIChQQUdFU19QRVJfUkFOR0UgPSAyKTsK K0lOU0VSVCBJTlRPIGJyaW50ZXN0IChhKSBTRUxFQ1QgeCBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LDEwMDAwMCkgeDsKKy0tIGNyZWF0ZSBzb21lIGVtcHR5IHJhbmdlcworREVMRVRFIEZST00gYnJp bnRlc3QgV0hFUkUgYSA+IDIwMDAwIEFORCBhIDwgNDAwMDA7CitTRUxFQ1QgYnJpbl9pbmRleF9j aGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUpOworIGJyaW5faW5kZXhfY2hlY2sg CistLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gcmVidWlsZCBpbmRleAorRFJP UCBJTkRFWCBicmludGVzdF9pZHg7CitDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50 ZXN0IFVTSU5HIEJSSU4gKGEgaW50OF9taW5tYXhfb3BzKSBXSVRIIChQQUdFU19QRVJfUkFOR0Ug PSAyKTsKK1NFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywg dHJ1ZSk7CisgYnJpbl9pbmRleF9jaGVjayAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCistLSBjbGVhbnVwCitEUk9QIFRBQkxFIGJyaW50ZXN0OworLS0gbXVsdGlfbWluX21heCBv cGNsYXNzCitDUkVBVEUgVEFCTEUgYnJpbnRlc3QgKGEgQklHSU5UKSBXSVRIIChGSUxMRkFDVE9S ID0gMTApOworQ1JFQVRFIElOREVYIGJyaW50ZXN0X2lkeCBPTiBicmludGVzdCBVU0lORyBCUklO IChhIGludDhfbWlubWF4X211bHRpX29wcykgV0lUSCAoUEFHRVNfUEVSX1JBTkdFID0gMik7CitJ TlNFUlQgSU5UTyBicmludGVzdCAoYSkgU0VMRUNUIHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwx MDAwMDApIHg7CistLSBjcmVhdGUgc29tZSBlbXB0eSByYW5nZXMKK0RFTEVURSBGUk9NIGJyaW50 ZXN0IFdIRVJFIGEgPiAyMDAwMCBBTkQgYSA8IDQwMDAwOworU0VMRUNUIGJyaW5faW5kZXhfY2hl Y2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlKTsKKyBicmluX2luZGV4X2NoZWNrIAor LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIHJlYnVpbGQgaW5kZXgKK0RST1Ag SU5ERVggYnJpbnRlc3RfaWR4OworQ1JFQVRFIElOREVYIGJyaW50ZXN0X2lkeCBPTiBicmludGVz dCBVU0lORyBCUklOIChhIGludDhfbWlubWF4X211bHRpX29wcykgV0lUSCAoUEFHRVNfUEVSX1JB TkdFID0gMik7CitTRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xB U1MsIHRydWUpOworIGJyaW5faW5kZXhfY2hlY2sgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworLS0gY2xlYW51cAorRFJPUCBUQUJMRSBicmludGVzdDsKKy0tIGJsb29tIG9wY2xh c3MKK0NSRUFURSBUQUJMRSBicmludGVzdCAoYSBCSUdJTlQpIFdJVEggKEZJTExGQUNUT1IgPSAx MCk7CitDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEg aW50OF9ibG9vbV9vcHMpIFdJVEggKFBBR0VTX1BFUl9SQU5HRSA9IDIpOworSU5TRVJUIElOVE8g YnJpbnRlc3QgKGEpIFNFTEVDVCB4IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMDAwKSB4Owor LS0gY3JlYXRlIHNvbWUgZW1wdHkgcmFuZ2VzCitERUxFVEUgRlJPTSBicmludGVzdCBXSEVSRSBh ID4gMjAwMDAgQU5EIGEgPCA0MDAwMDsKK1NFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVz dF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSk7CisgYnJpbl9pbmRleF9jaGVjayAKKy0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCistLSByZWJ1aWxkIGluZGV4CitEUk9QIElOREVYIGJyaW50 ZXN0X2lkeDsKK0NSRUFURSBJTkRFWCBicmludGVzdF9pZHggT04gYnJpbnRlc3QgVVNJTkcgQlJJ TiAoYSBpbnQ4X2Jsb29tX29wcykgV0lUSCAoUEFHRVNfUEVSX1JBTkdFID0gMik7CitTRUxFQ1Qg YnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUpOworIGJyaW5f aW5kZXhfY2hlY2sgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gY2xlYW51 cAorRFJPUCBUQUJMRSBicmludGVzdDsKKy0tIGluY2x1c2lvbiBvcGNsYXNzCitDUkVBVEUgVEFC TEUgYnJpbnRlc3QgKGlkIFNFUklBTCBQUklNQVJZIEtFWSwgYSBCT1gpOworQ1JFQVRFIElOREVY IGJyaW50ZXN0X2lkeCBPTiBicmludGVzdCBVU0lORyBCUklOIChhIEJPWF9JTkNMVVNJT05fT1BT KSBXSVRIIChQQUdFU19QRVJfUkFOR0UgPSAyKTsKK0lOU0VSVCBJTlRPIGJyaW50ZXN0IChhKQor U0VMRUNUIEJPWChwb2ludChyYW5kb20oKSAqIDEwMDAsIHJhbmRvbSgpICogMTAwMCksIHBvaW50 KHJhbmRvbSgpICogMTAwMCwgcmFuZG9tKCkgKiAxMDAwKSkKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDEwMDAwKTsKKy0tIGNyZWF0ZSBzb21lIGVtcHR5IHJhbmdlcworREVMRVRFIEZST00gYnJp bnRlc3QgV0hFUkUgaWQgPiAyMDAwIEFORCBpZCA8IDQwMDA7CitTRUxFQ1QgYnJpbl9pbmRleF9j aGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUpOworIGJyaW5faW5kZXhfY2hlY2sg CistLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gcmVidWlsZCBpbmRleAorRFJP UCBJTkRFWCBicmludGVzdF9pZHg7CitDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50 ZXN0IFVTSU5HIEJSSU4gKGEgQk9YX0lOQ0xVU0lPTl9PUFMpIFdJVEggKFBBR0VTX1BFUl9SQU5H RSA9IDIpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNT LCB0cnVlKTsKKyBicmluX2luZGV4X2NoZWNrIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKKy0tIGNsZWFudXAKK0RST1AgVEFCTEUgYnJpbnRlc3Q7CistLSBjbGVhbnVwCitEUk9Q IEZVTkNUSU9OIHJhbmRvbV9zdHJpbmc7CmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svbWVz b24uYnVpbGQgYi9jb250cmliL2FtY2hlY2svbWVzb24uYnVpbGQKaW5kZXggMWYwYzM0N2VkNTQu LmJhODE2YzJmYWYwIDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svbWVzb24uYnVpbGQKKysr IGIvY29udHJpYi9hbWNoZWNrL21lc29uLmJ1aWxkCkBAIC01LDYgKzUsNyBAQCBhbWNoZWNrX3Nv dXJjZXMgPSBmaWxlcygKICAgJ3ZlcmlmeV9naW4uYycsCiAgICd2ZXJpZnlfaGVhcGFtLmMnLAog ICAndmVyaWZ5X25idHJlZS5jJywKKyAgJ3ZlcmlmeV9icmluLmMnCiApCiAKIGlmIGhvc3Rfc3lz dGVtID09ICd3aW5kb3dzJwpAQCAtMjcsNiArMjgsNyBAQCBpbnN0YWxsX2RhdGEoCiAgICdhbWNo ZWNrLS0xLjItLTEuMy5zcWwnLAogICAnYW1jaGVjay0tMS4zLS0xLjQuc3FsJywKICAgJ2FtY2hl Y2stLTEuNC0tMS41LnNxbCcsCisgICdhbWNoZWNrLS0xLjUtLTEuNi5zcWwnLAogICBrd2FyZ3M6 IGNvbnRyaWJfZGF0YV9hcmdzLAogKQogCkBAIC00MCw2ICs0Miw3IEBAIHRlc3RzICs9IHsKICAg ICAgICdjaGVja19idHJlZScsCiAgICAgICAnY2hlY2tfZ2luJywKICAgICAgICdjaGVja19oZWFw JywKKyAgICAgICdjaGVja19icmluJwogICAgIF0sCiAgIH0sCiAgICd0YXAnOiB7CkBAIC01MCw2 ICs1Myw3IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzAwNF92ZXJpZnlfbmJ0cmVlX3VuaXF1ZS5w bCcsCiAgICAgICAndC8wMDVfcGl0ci5wbCcsCiAgICAgICAndC8wMDZfdmVyaWZ5X2dpbi5wbCcs CisgICAgICAndC8wMDdfdmVyaWZ5X2JyaW4ucGwnLAogICAgIF0sCiAgIH0sCiB9CmRpZmYgLS1n aXQgYS9jb250cmliL2FtY2hlY2svc3FsL2NoZWNrX2JyaW4uc3FsIGIvY29udHJpYi9hbWNoZWNr L3NxbC9jaGVja19icmluLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uYjM2YWYzN2ZlMDMKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL2FtY2hlY2svc3FsL2No ZWNrX2JyaW4uc3FsCkBAIC0wLDAgKzEsMTAxIEBACistLSBoZWxwZXIgZnVuYworQ1JFQVRFIE9S IFJFUExBQ0UgRlVOQ1RJT04gIHJhbmRvbV9zdHJpbmcoIElOVCApIFJFVFVSTlMgVEVYVCBBUyAk JAorU0VMRUNUIHN0cmluZ19hZ2coc3Vic3RyaW5nKCcwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5v cHFyc3R1dnd4eXonLCBjZWlsKHJhbmRvbSgpICogMzYpOjpJTlRFR0VSLCAxKSwgJycpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsICQxKTsKKyQkIExBTkdVQUdFIHNxbDsKKworCistLSBlbXB0eSB0 YWJsZSBpbmRleCBzaG91bGQgYmUgdmFsaWQKK0NSRUFURSBUQUJMRSBicmludGVzdCAoYSBCSUdJ TlQpIFdJVEggKEZJTExGQUNUT1IgPSAxMCk7CitDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9O IGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50 ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlKTsKKy0tIGNsZWFudXAKK0RST1AgVEFCTEUgYnJpbnRl c3Q7CisKKy0tIG11bHRpcGxlIGF0dHJpYnV0ZXMgdGVzdAorQ1JFQVRFIFRBQkxFIGJyaW50ZXN0 IChpZCBCSUdTRVJJQUwsIGEgVEVYVCkgV0lUSCAoRklMTEZBQ1RPUiA9IDEwKTsKK0NSRUFURSBJ TkRFWCBicmludGVzdF9pZHggT04gYnJpbnRlc3QgVVNJTkcgQlJJTiAoYSBURVhUX21pbm1heF9v cHMsIGlkIGludDhfbWlubWF4X29wcykgV0lUSCAoUEFHRVNfUEVSX1JBTkdFID0gMik7CitJTlNF UlQgSU5UTyBicmludGVzdCAoYSkgU0VMRUNUIHJhbmRvbV9zdHJpbmcoKHggJSAxMDApKSBGUk9N IGdlbmVyYXRlX3NlcmllcygxLDMwMDApIHg7CistLSBjcmVhdGUgc29tZSBlbXB0eSByYW5nZXMK K0RFTEVURSBGUk9NIGJyaW50ZXN0IFdIRVJFIGlkID4gMTUwMCBBTkQgaWQgPCAyNTAwOworU0VM RUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlKTsKKwor LS0gcmVidWlsZCBpbmRleAorRFJPUCBJTkRFWCBicmludGVzdF9pZHg7CitDUkVBVEUgSU5ERVgg YnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEgVEVYVF9taW5tYXhfb3BzKSBX SVRIIChQQUdFU19QRVJfUkFOR0UgPSAyKTsKK1NFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmlu dGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSk7CistLSBjbGVhbnVwCitEUk9QIFRBQkxFIGJyaW50 ZXN0OworCisKKworLS0gbWluX21heCBvcGNsYXNzCitDUkVBVEUgVEFCTEUgYnJpbnRlc3QgKGEg QklHSU5UKSBXSVRIIChGSUxMRkFDVE9SID0gMTApOworQ1JFQVRFIElOREVYIGJyaW50ZXN0X2lk eCBPTiBicmludGVzdCBVU0lORyBCUklOIChhIGludDhfbWlubWF4X29wcykgV0lUSCAoUEFHRVNf UEVSX1JBTkdFID0gMik7CitJTlNFUlQgSU5UTyBicmludGVzdCAoYSkgU0VMRUNUIHggRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwxMDAwMDApIHg7CistLSBjcmVhdGUgc29tZSBlbXB0eSByYW5nZXMK K0RFTEVURSBGUk9NIGJyaW50ZXN0IFdIRVJFIGEgPiAyMDAwMCBBTkQgYSA8IDQwMDAwOworU0VM RUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlKTsKKwor LS0gcmVidWlsZCBpbmRleAorRFJPUCBJTkRFWCBicmludGVzdF9pZHg7CitDUkVBVEUgSU5ERVgg YnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEgaW50OF9taW5tYXhfb3BzKSBX SVRIIChQQUdFU19QRVJfUkFOR0UgPSAyKTsKK1NFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmlu dGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSk7CistLSBjbGVhbnVwCitEUk9QIFRBQkxFIGJyaW50 ZXN0OworCisKKworLS0gbXVsdGlfbWluX21heCBvcGNsYXNzCitDUkVBVEUgVEFCTEUgYnJpbnRl c3QgKGEgQklHSU5UKSBXSVRIIChGSUxMRkFDVE9SID0gMTApOworQ1JFQVRFIElOREVYIGJyaW50 ZXN0X2lkeCBPTiBicmludGVzdCBVU0lORyBCUklOIChhIGludDhfbWlubWF4X211bHRpX29wcykg V0lUSCAoUEFHRVNfUEVSX1JBTkdFID0gMik7CitJTlNFUlQgSU5UTyBicmludGVzdCAoYSkgU0VM RUNUIHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwMDApIHg7CistLSBjcmVhdGUgc29tZSBl bXB0eSByYW5nZXMKK0RFTEVURSBGUk9NIGJyaW50ZXN0IFdIRVJFIGEgPiAyMDAwMCBBTkQgYSA8 IDQwMDAwOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNT LCB0cnVlKTsKKworLS0gcmVidWlsZCBpbmRleAorRFJPUCBJTkRFWCBicmludGVzdF9pZHg7CitD UkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEgaW50OF9t aW5tYXhfbXVsdGlfb3BzKSBXSVRIIChQQUdFU19QRVJfUkFOR0UgPSAyKTsKK1NFTEVDVCBicmlu X2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSk7CistLSBjbGVhbnVw CitEUk9QIFRBQkxFIGJyaW50ZXN0OworCisKKworLS0gYmxvb20gb3BjbGFzcworQ1JFQVRFIFRB QkxFIGJyaW50ZXN0IChhIEJJR0lOVCkgV0lUSCAoRklMTEZBQ1RPUiA9IDEwKTsKK0NSRUFURSBJ TkRFWCBicmludGVzdF9pZHggT04gYnJpbnRlc3QgVVNJTkcgQlJJTiAoYSBpbnQ4X2Jsb29tX29w cykgV0lUSCAoUEFHRVNfUEVSX1JBTkdFID0gMik7CitJTlNFUlQgSU5UTyBicmludGVzdCAoYSkg U0VMRUNUIHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwMDApIHg7CistLSBjcmVhdGUgc29t ZSBlbXB0eSByYW5nZXMKK0RFTEVURSBGUk9NIGJyaW50ZXN0IFdIRVJFIGEgPiAyMDAwMCBBTkQg YSA8IDQwMDAwOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NM QVNTLCB0cnVlKTsKKworLS0gcmVidWlsZCBpbmRleAorRFJPUCBJTkRFWCBicmludGVzdF9pZHg7 CitDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEgaW50 OF9ibG9vbV9vcHMpIFdJVEggKFBBR0VTX1BFUl9SQU5HRSA9IDIpOworU0VMRUNUIGJyaW5faW5k ZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlKTsKKy0tIGNsZWFudXAKK0RS T1AgVEFCTEUgYnJpbnRlc3Q7CisKKworLS0gaW5jbHVzaW9uIG9wY2xhc3MKK0NSRUFURSBUQUJM RSBicmludGVzdCAoaWQgU0VSSUFMIFBSSU1BUlkgS0VZLCBhIEJPWCk7CitDUkVBVEUgSU5ERVgg YnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEgQk9YX0lOQ0xVU0lPTl9PUFMp IFdJVEggKFBBR0VTX1BFUl9SQU5HRSA9IDIpOworSU5TRVJUIElOVE8gYnJpbnRlc3QgKGEpCitT RUxFQ1QgQk9YKHBvaW50KHJhbmRvbSgpICogMTAwMCwgcmFuZG9tKCkgKiAxMDAwKSwgcG9pbnQo cmFuZG9tKCkgKiAxMDAwLCByYW5kb20oKSAqIDEwMDApKQorRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMTAwMDApOworLS0gY3JlYXRlIHNvbWUgZW1wdHkgcmFuZ2VzCitERUxFVEUgRlJPTSBicmlu dGVzdCBXSEVSRSBpZCA+IDIwMDAgQU5EIGlkIDwgNDAwMDsKKworU0VMRUNUIGJyaW5faW5kZXhf Y2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlKTsKKworLS0gcmVidWlsZCBpbmRl eAorRFJPUCBJTkRFWCBicmludGVzdF9pZHg7CitDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9O IGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEgQk9YX0lOQ0xVU0lPTl9PUFMpIFdJVEggKFBBR0VTX1BF Ul9SQU5HRSA9IDIpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJF R0NMQVNTLCB0cnVlKTsKKy0tIGNsZWFudXAKK0RST1AgVEFCTEUgYnJpbnRlc3Q7CisKKworLS0g Y2xlYW51cAorRFJPUCBGVU5DVElPTiByYW5kb21fc3RyaW5nOwpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay90LzAwN192ZXJpZnlfYnJpbi5w bCBiL2NvbnRyaWIvYW1jaGVjay90LzAwN192ZXJpZnlfYnJpbi5wbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMmM2MmI3NmNjNzAKLS0tIC9kZXYvbnVsbAorKysgYi9j b250cmliL2FtY2hlY2svdC8wMDdfdmVyaWZ5X2JyaW4ucGwKQEAgLTAsMCArMSwyOTEgQEAKKyMg Q29weXJpZ2h0IChjKSAyMDIxLTIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CisKK3VzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwor Cit1c2UgVGVzdDo6TW9yZTsKKworbXkgJG5vZGU7CitteSAkYmxrc2l6ZTsKK215ICRtZXRhX3Bh Z2VfYmxrbm8gPSAwOworCisjCisjIFRlc3Qgc2V0LXVwCisjCiskbm9kZSA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygndGVzdCcpOworJG5vZGUtPmluaXQobm9fZGF0YV9jaGVja3N1 bXMgPT4gMSk7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdhdXRvdmFj dXVtPW9mZicpOworJG5vZGUtPnN0YXJ0OworJGJsa3NpemUgPSBpbnQoJG5vZGUtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAnU0hPVyBibG9ja19zaXplOycpKTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcShDUkVBVEUgRVhURU5TSU9OIGFtY2hlY2spKTsKKworIyBUZXN0cworbXkgQHRl c3RzID0gKAorICAgIHsKKyAgICAgICAgIyBpbnZhbGlkIG1ldGEgcGFnZSB0eXBlCisKKyAgICAg ICAgZmluZCAgICAgPT4gcGFjaygnUycsIDB4RjA5MSksCisgICAgICAgIHJlcGxhY2UgID0+IHBh Y2soJ1MnLCAweEFBQUEpLAorICAgICAgICBibGtubyAgICA9PiAkbWV0YV9wYWdlX2Jsa25vLAor ICAgICAgICBleHBlY3RlZCA9PiB3cmFwKCdtZXRhcGFnZSBpcyBjb3JydXB0ZWQnKQorICAgIH0s CisgICAgeworICAgICAgICAjIGludmFsaWQgbWV0YSBwYWdlIG1hZ2ljIHdvcmQKKworICAgICAg ICBmaW5kICAgICA9PiBwYWNrKCdMJywgMHhBODEwOUNGQSksCisgICAgICAgIHJlcGxhY2UgID0+ IHBhY2soJ0wnLCAweEJCMTA5Q0ZCKSwKKyAgICAgICAgYmxrbm8gICAgPT4gJG1ldGFfcGFnZV9i bGtubywKKyAgICAgICAgZXhwZWN0ZWQgPT4gd3JhcCgnbWV0YXBhZ2UgaXMgY29ycnVwdGVkJyks CisgICAgfSwKKyAgICB7CisgICAgICAgICMgaW52YWxpZCBtZXRhIHBhZ2UgaW5kZXggdmVyc2lv bgorCisgICAgICAgIGZpbmQgICAgID0+IHBhY2soJ0wqJywgMHhBODEwOUNGQSwgMSksCisgICAg ICAgIHJlcGxhY2UgID0+IHBhY2soJ0wqJywgMHhBODEwOUNGQSwgMiksCisgICAgICAgIGJsa25v ICAgID0+ICRtZXRhX3BhZ2VfYmxrbm8sCisgICAgICAgIGV4cGVjdGVkID0+IHdyYXAoJ21ldGFw YWdlIGlzIGNvcnJ1cHRlZCcpCisgICAgfSwKKyAgICB7CisgICAgICAgICMgcGFnZXNfcGVyX3Jh bmdlIGJlbG93IGxvd2VyIGxpbWl0CisKKyAgICAgICAgZmluZCAgICAgPT4gcGFjaygnTConLCAw eEE4MTA5Q0ZBLCAxLCAxMjgpLAorICAgICAgICByZXBsYWNlICA9PiBwYWNrKCdMKicsIDB4QTgx MDlDRkEsIDEsIDApLAorICAgICAgICBibGtubyAgICA9PiAkbWV0YV9wYWdlX2Jsa25vLAorICAg ICAgICBleHBlY3RlZCA9PiB3cmFwKCdtZXRhcGFnZSBpcyBjb3JydXB0ZWQnKQorICAgIH0sCisg ICAgeworICAgICAgICAjIHBhZ2VzX3Blcl9yYW5nZSBhYm92ZSB1cHBlciBsaW1pdAorCisgICAg ICAgIGZpbmQgICAgID0+IHBhY2soJ0wqJywgMHhBODEwOUNGQSwgMSwgMTI4KSwKKyAgICAgICAg cmVwbGFjZSAgPT4gcGFjaygnTConLCAweEE4MTA5Q0ZBLCAxLCAxMzEwNzMpLAorICAgICAgICBi bGtubyAgICA9PiAkbWV0YV9wYWdlX2Jsa25vLAorICAgICAgICBleHBlY3RlZCA9PiB3cmFwKCdt ZXRhcGFnZSBpcyBjb3JydXB0ZWQnKQorICAgIH0sCisgICAgeworICAgICAgICAjIGxhc3RfcmV2 bWFwX3BhZ2UgYmVsb3cgbG93ZXIgbGltaXQKKworICAgICAgICBmaW5kICAgICA9PiBwYWNrKCdM KicsIDB4QTgxMDlDRkEsIDEsIDEyOCwgMSksCisgICAgICAgIHJlcGxhY2UgID0+IHBhY2soJ0wq JywgMHhBODEwOUNGQSwgMSwgMTI4LCAwKSwKKyAgICAgICAgYmxrbm8gICAgPT4gJG1ldGFfcGFn ZV9ibGtubywKKyAgICAgICAgZXhwZWN0ZWQgPT4gd3JhcCgnbWV0YXBhZ2UgaXMgY29ycnVwdGVk JyksCisgICAgfSwKKyAgICB7CisKKyAgICAgICAgIyBsYXN0X3Jldm1hcF9wYWdlIGJleW9uZCBp bmRleCByZWxhdGlvbiBzaXplCisKKyAgICAgICAgZmluZCAgICAgPT4gcGFjaygnTConLCAweEE4 MTA5Q0ZBLCAxLCAxMjgsIDEpLAorICAgICAgICByZXBsYWNlICA9PiBwYWNrKCdMKicsIDB4QTgx MDlDRkEsIDEsIDEyOCwgMTAwKSwKKyAgICAgICAgYmxrbm8gICAgPT4gJG1ldGFfcGFnZV9ibGtu bywKKyAgICAgICAgZXhwZWN0ZWQgPT4gd3JhcCgnbWV0YXBhZ2UgaXMgY29ycnVwdGVkJyksCisg ICAgfSwKKyAgICB7CisgICAgICAgICMgaW52YWxpZCByZXZtYXAgcGFnZSB0eXBlCisKKyAgICAg ICAgZmluZCAgICAgPT4gcGFjaygnUycsIDB4RjA5MiksCisgICAgICAgIHJlcGxhY2UgID0+IHBh Y2soJ1MnLCAweEFBQUEpLAorICAgICAgICBibGtubyAgICA9PiAxLCAjIHJldm1hcCBwYWdlCisg ICAgICAgIGV4cGVjdGVkID0+IHdyYXAoJ3Jldm1hcCBwYWdlIGlzIGV4cGVjdGVkIGF0IGJsb2Nr IDEsIGxhc3QgcmV2bWFwIHBhZ2UgMScpLAorICAgIH0sCisgICAgeworICAgICAgICAjIHJldm1h cCBpdGVtIHBvaW50cyBiZXlvbmQgaW5kZXggcmVsYXRpb24gc2l6ZQorICAgICAgICAjIHJlcGxh Y2UgKDIsMSkgd2l0aCAoMTAwLDEpCisKKyAgICAgICAgZmluZCAgICAgPT4gcGFjaygnUyonLCAw LCAyLCAxKSwKKyAgICAgICAgcmVwbGFjZSAgPT4gcGFjaygnUyonLCAwLCAxMDAsIDEpLAorICAg ICAgICBibGtubyAgICA9PiAxLCAjIHJldm1hcCBwYWdlCisgICAgICAgIGV4cGVjdGVkID0+IHdy YXAoJ3Jldm1hcCBpdGVtIHBvaW50cyB0byBhIG5vbiBleGlzdGluZyBibG9jayAxMDAsICcKKyAg ICAgICAgICAgIC4gJ2luZGV4IG1heCBibG9jayAyLiBSYW5nZSBibGtubzogMCwgcmV2bWFwIGl0 ZW06ICgxLDApJykKKyAgICB9LAorICAgIHsKKyAgICAgICAgIyBpbnZhbGlkIHJlZ3VsYXIgcGFn ZSB0eXBlCisKKyAgICAgICAgZmluZCAgICAgPT4gcGFjaygnUycsIDB4RjA5MyksCisgICAgICAg IHJlcGxhY2UgID0+IHBhY2soJ1MnLCAweEFBQUEpLAorICAgICAgICBibGtubyAgICA9PiAyLCAj IHJlZ3VsYXIgcGFnZQorICAgICAgICBleHBlY3RlZCA9PiB3cmFwKCdyZXZtYXAgaXRlbSBwb2lu dHMgdG8gdGhlIHBhZ2Ugd2hpY2ggaXMgbm90IHJlZ3VsYXIgKGJsa25vOiAyKS4gJworICAgICAg ICAgICAgLiAnUmFuZ2UgYmxrbm86IDAsIHJldm1hcCBpdGVtOiAoMSwwKScpCisgICAgfSwKKyAg ICB7CisgICAgICAgICMgcmV2bWFwIGl0ZW0gcG9pbnRzIGJleW9uZCByZWd1bGFyIHBhZ2UgbWF4 IG9mZnNldAorICAgICAgICAjIHJlcGxhY2UgKDIsMSkgd2l0aCAoMiwyKQorCisgICAgICAgIGZp bmQgICAgID0+IHBhY2soJ1MqJywgMCwgMiwgMSksCisgICAgICAgIHJlcGxhY2UgID0+IHBhY2so J1MqJywgMCwgMiwgMiksCisgICAgICAgIGJsa25vICAgID0+IDEsICMgcmV2bWFwIHBhZ2UKKyAg ICAgICAgZXhwZWN0ZWQgPT4gd3JhcCgncmV2bWFwIGl0ZW0gb2Zmc2V0IG51bWJlciAyIGlzIGdy ZWF0ZXIgdGhhbiByZWd1bGFyIHBhZ2UgMiBtYXggb2Zmc2V0IDEuICcKKyAgICAgICAgICAgIC4g J1JhbmdlIGJsa25vOiAwLCByZXZtYXAgaXRlbTogKDEsMCknKQorICAgIH0sCisgICAgeworICAg ICAgICAjIGludmFsaWQgaW5kZXggdHVwbGUgcmFuZ2UgYmxrbm8KKworICAgICAgICBmaW5kICAg ICA9PiBwYWNrKCdMQ0MnLCAwLCAweEE4LCAweDAxKSwKKyAgICAgICAgcmVwbGFjZSAgPT4gcGFj aygnTENDJywgMSwgMHhBOCwgMHgwMSksCisgICAgICAgIGJsa25vICAgID0+IDIsICMgcmVndWxh ciBwYWdlCisgICAgICAgIGV4cGVjdGVkID0+IHdyYXAoJ2luZGV4IHR1cGxlIGhhcyBpbnZhbGlk IGJsa25vIDEuIFJhbmdlIGJsa25vOiAwLCByZXZtYXAgaXRlbTogKDEsMCksIGluZGV4IHR1cGxl OiAoMiwxKScpCisgICAgfSwKKyAgICB7CisgICAgICAgICMgcmFuZ2UgYmV5b25kIHRoZSB0YWJs ZSBzaXplIGFuZCBpcyBub3QgZW1wdHkKKworICAgICAgICBmaW5kICAgICA9PiBwYWNrKCdMQ0Mn LCAwLCAweEE4LCAweDAxKSwKKyAgICAgICAgcmVwbGFjZSAgPT4gcGFjaygnTENDJywgMCwgMHg4 OCwgMHgwMSksCisgICAgICAgIGJsa25vICAgID0+IDIsICMgcmVndWxhciBwYWdlCisgICAgICAg IGV4cGVjdGVkID0+IHdyYXAoJ3RoZSByYW5nZSBpcyBiZXlvbmQgdGhlIHRhYmxlIHNpemUsIGJ1 dCBpcyBub3QgbWFya2VkIGFzIGVtcHR5LCB0YWJsZSBzaXplOiAwIGJsb2Nrcy4gJworICAgICAg ICAgICAgLiAnUmFuZ2UgYmxrbm86IDAsIHJldm1hcCBpdGVtOiAoMSwwKSwgaW5kZXggdHVwbGU6 ICgyLDEpJykKKyAgICB9LAorICAgIHsKKyAgICAgICAgIyBjb3JydXB0IGluZGV4IHR1cGxlIGRh dGEgb2Zmc2V0CisgICAgICAgICMgaGVyZSAgMHgwMCwgMHgwMCwgMHgwMCBpcyBwYWRkaW5nIGFu ZCAnLicgaXMgdmFybGVuYSBsZW4gYnl0ZQorCisgICAgICAgIGZpbmQgICAgICAgPT4gcGFjaygn TENDQ0MnLCAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwKSAuICcoLiknIC4gJ2FhYWFhJywKKyAg ICAgICAgcmVwbGFjZSAgICA9PiBwYWNrKCdMQ0NDQycsIDAsIDB4MUYsIDB4MDAsIDB4MDAsIDB4 MDApIC4gJyQxJyAuICdhYWFhYScsCisgICAgICAgIGJsa25vICAgICAgPT4gMiwgIyByZWd1bGFy IHBhZ2UKKyAgICAgICAgdGFibGVfZGF0YSA9PiBzdWIgeworICAgICAgICAgICAgbXkgKCR0ZXN0 X3N0cnVjdCkgPSBAXzsKKyAgICAgICAgICAgIHJldHVybiBxcShJTlNFUlQgSU5UTyAkdGVzdF9z dHJ1Y3QtPnt0YWJsZV9uYW1lfSAoYSkgVkFMVUVTICgnYWFhYWEnKTspOworICAgICAgICB9LAor ICAgICAgICBleHBlY3RlZCAgID0+IHFyL2luZGV4IHR1cGxlIGhlYWRlciBsZW5ndGggMzEgaXMg Z3JlYXRlciB0aGFuIHR1cGxlIGxlbiAuLlwuIFxRUmFuZ2UgYmxrbm86IDAsIHJldm1hcCBpdGVt OiAoMSwwKSwgaW5kZXggdHVwbGU6ICgyLDEpXEUvCisgICAgfSwKKyAgICB7CisgICAgICAgICMg ZW1wdHkgcmFuZ2UgaW5kZXggdHVwbGUgZG9lc24ndCBoYXZlIG51bGwgYml0bWFwCisKKyAgICAg ICAgZmluZCAgICAgPT4gcGFjaygnTENDJywgMCwgMHhBOCwgMHgwMSksCisgICAgICAgIHJlcGxh Y2UgID0+IHBhY2soJ0xDQycsIDAsIDB4MjgsIDB4MDEpLAorICAgICAgICBibGtubyAgICA9PiAy LCAjIHJlZ3VsYXIgcGFnZQorICAgICAgICBleHBlY3RlZCA9PiB3cmFwKCdlbXB0eSByYW5nZSBp bmRleCB0dXBsZSBkb2VzblwndCBoYXZlIG51bGwgYml0bWFwLiAnCisgICAgICAgICAgICAuICdS YW5nZSBibGtubzogMCwgcmV2bWFwIGl0ZW06ICgxLDApLCBpbmRleCB0dXBsZTogKDIsMSknKQor ICAgIH0sCisgICAgeworICAgICAgICAjIGVtcHR5IHJhbmdlIGluZGV4IHR1cGxlIGFsbF9udWxs cyAtPiBmYWxzZQorCisgICAgICAgIGZpbmQgICAgID0+IHBhY2soJ0xDQycsIDAsIDB4QTgsIDB4 MDEpLAorICAgICAgICByZXBsYWNlICA9PiBwYWNrKCdMQ0MnLCAwLCAweEE4LCAweDAwKSwKKyAg ICAgICAgYmxrbm8gICAgPT4gMiwgIyByZWd1bGFyIHBhZ2UKKyAgICAgICAgZXhwZWN0ZWQgPT4g d3JhcCgnZW1wdHkgcmFuZ2UgaW5kZXggdHVwbGUgYXR0cmlidXRlIDAgd2l0aCBhbGxudWxscyBp cyBmYWxzZS4gJworICAgICAgICAgICAgLiAnUmFuZ2UgYmxrbm86IDAsIHJldm1hcCBpdGVtOiAo MSwwKSwgaW5kZXggdHVwbGU6ICgyLDEpJykKKyAgICB9LAorICAgIHsKKyAgICAgICAgIyBlbXB0 eSByYW5nZSBpbmRleCB0dXBsZSBoYXNfbnVsbHMgLT4gdHJ1ZQorCisgICAgICAgIGZpbmQgICAg ID0+IHBhY2soJ0xDQycsIDAsIDB4QTgsIDB4MDEpLAorICAgICAgICByZXBsYWNlICA9PiBwYWNr KCdMQ0MnLCAwLCAweEE4LCAweDAzKSwKKyAgICAgICAgYmxrbm8gICAgPT4gMiwgIyByZWd1bGFy IHBhZ2UKKyAgICAgICAgZXhwZWN0ZWQgPT4gd3JhcCgnZW1wdHkgcmFuZ2UgaW5kZXggdHVwbGUg YXR0cmlidXRlIDAgd2l0aCBoYXNudWxscyBpcyB0cnVlLiAnCisgICAgICAgICAgICAuICdSYW5n ZSBibGtubzogMCwgcmV2bWFwIGl0ZW06ICgxLDApLCBpbmRleCB0dXBsZTogKDIsMSknKQorICAg IH0sCisgICAgeworICAgICAgICAjIGludmFsaWQgaW5kZXggdHVwbGUgZGF0YQorICAgICAgICAj IHJlcGxhY2UgdmFybGVuYSBsZW4gd2l0aCBGRiAtIHNob3VsZCB3b3JrIHdpdGggYW55IGVuZGlh bm5lc3MKKworICAgICAgICBmaW5kICAgICAgID0+IHBhY2soJ0xDQ0NDJywgMCwgMHgwOCwgMHgw MCwgMHgwMCwgMHgwMCkgLiAnLicgLiAnYWFhYWEnLAorICAgICAgICByZXBsYWNlICAgID0+IHBh Y2soJ0xDQ0NDQycsIDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkYpIC4gJ2FhYWFhJywK KyAgICAgICAgYmxrbm8gICAgICA9PiAyLCAjIHJlZ3VsYXIgcGFnZQorICAgICAgICB0YWJsZV9k YXRhID0+IHN1YiB7CisgICAgICAgICAgICBteSAoJHRlc3Rfc3RydWN0KSA9IEBfOworICAgICAg ICAgICAgcmV0dXJuIHFxKElOU0VSVCBJTlRPICR0ZXN0X3N0cnVjdC0+e3RhYmxlX25hbWV9IChh KSBWQUxVRVMgKCdhYWFhYScpOyk7CisgICAgICAgIH0sCisgICAgICAgIGV4cGVjdGVkICAgPT4g cXIvYXR0cmlidXRlIDAgc3RvcmVkIHZhbHVlIDAgd2l0aCBsZW5ndGggLTEgZW5kcyBhdCBvZmZz ZXQgMTI3IGJleW9uZCB0b3RhbCB0dXBsZSBsZW5ndGggLi5cLlxRIFJhbmdlIGJsa25vOiAwLCBy ZXZtYXAgaXRlbTogKDEsMCksIGluZGV4IHR1cGxlOiAoMiwxKVxFLworICAgIH0sCisgICAgewor ICAgICAgICAjIG9ycGhhbiBpbmRleCB0dXBsZQorICAgICAgICAjIHJlcGxhY2UgdmFsaWQgcmV2 bWFwIGl0ZW0gd2l0aCAoMCwwKQorCisgICAgICAgIGZpbmQgICAgICAgPT4gcGFjaygnUyonLCAw LCAyLCAxKSwKKyAgICAgICAgcmVwbGFjZSAgICA9PiBwYWNrKCdTKicsIDAsIDAsIDApLAorICAg ICAgICBibGtubyAgICAgID0+IDEsICMgcmV2bWFwIHBhZ2UKKyAgICAgICAgdGFibGVfZGF0YSA9 PiBzdWIgeworICAgICAgICAgICAgbXkgKCR0ZXN0X3N0cnVjdCkgPSBAXzsKKyAgICAgICAgICAg IHJldHVybiBxcShJTlNFUlQgSU5UTyAkdGVzdF9zdHJ1Y3QtPnt0YWJsZV9uYW1lfSAoYSkgVkFM VUVTICgnYWFhYWEnKTspOworICAgICAgICB9LAorICAgICAgICBleHBlY3RlZCAgID0+IHdyYXAo InJldm1hcCBkb2Vzbid0IHBvaW50IHRvIGluZGV4IHR1cGxlLiBSYW5nZSBibGtubzogMCwgcmV2 bWFwIGl0ZW06ICgxLDApLCBpbmRleCB0dXBsZTogKDIsMSkiKQorICAgIH0KKyk7CisKKworIyBp bml0IHRlc3QgZGF0YQorbXkgJGkgPSAxOworZm9yZWFjaCBteSAkdGVzdF9zdHJ1Y3QgKEB0ZXN0 cykgeworCisgICAgJHRlc3Rfc3RydWN0LT57dGFibGVfbmFtZX0gPSAndCcgLiAkaSsrOworICAg ICR0ZXN0X3N0cnVjdC0+e2luZGV4X25hbWV9ID0gJHRlc3Rfc3RydWN0LT57dGFibGVfbmFtZX0g LiAnX2JyaW5faWR4JzsKKworICAgIG15ICR0ZXN0X2RhdGFfc3FsID0gJyc7CisgICAgaWYgKGV4 aXN0cyAkdGVzdF9zdHJ1Y3QtPnt0YWJsZV9kYXRhfSkgeworICAgICAgICAkdGVzdF9kYXRhX3Nx bCA9ICR0ZXN0X3N0cnVjdC0+e3RhYmxlX2RhdGF9LT4oJHRlc3Rfc3RydWN0KTsKKyAgICB9CisK KyAgICAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAorICAgICAgICBDUkVBVEUgVEFC TEUgJHRlc3Rfc3RydWN0LT57dGFibGVfbmFtZX0gKGEgVEVYVCk7CisgICAgICAgICR0ZXN0X2Rh dGFfc3FsCisgICAgICAgIENSRUFURSBJTkRFWCAkdGVzdF9zdHJ1Y3QtPntpbmRleF9uYW1lfSBP TiAkdGVzdF9zdHJ1Y3QtPnt0YWJsZV9uYW1lfSBVU0lORyBCUklOIChhKTsKKyAgICApKTsKKwor ICAgICR0ZXN0X3N0cnVjdC0+e3JlbHBhdGh9ID0gcmVsYXRpb25fZmlsZXBhdGgoJHRlc3Rfc3Ry dWN0LT57aW5kZXhfbmFtZX0pOworfQorCisjIGNvcnJ1cHQgaW5kZXgKKyRub2RlLT5zdG9wOwor Citmb3JlYWNoIG15ICR0ZXN0X3N0cnVjdCAoQHRlc3RzKSB7CisgICAgc3RyaW5nX3JlcGxhY2Vf YmxvY2soCisgICAgICAgICR0ZXN0X3N0cnVjdC0+e3JlbHBhdGh9LAorICAgICAgICAkdGVzdF9z dHJ1Y3QtPntmaW5kfSwKKyAgICAgICAgJHRlc3Rfc3RydWN0LT57cmVwbGFjZX0sCisgICAgICAg ICR0ZXN0X3N0cnVjdC0+e2Jsa25vfQorICAgICk7Cit9CisKKyMgYXNzZXJ0aW9ucworJG5vZGUt PnN0YXJ0OworCitmb3JlYWNoIG15ICR0ZXN0X3N0cnVjdCAoQHRlc3RzKSB7CisgICAgbXkgKCRy ZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywgcXEoU0VM RUNUIGJyaW5faW5kZXhfY2hlY2soJyR0ZXN0X3N0cnVjdC0+e2luZGV4X25hbWV9JywgdHJ1ZSkp KTsKKyAgICBsaWtlKCRzdGRlcnIsICR0ZXN0X3N0cnVjdC0+e2V4cGVjdGVkfSk7Cit9CisKKwor IyBIZWxwZXJzCisKKyMgUmV0dXJucyB0aGUgZmlsZXN5c3RlbSBwYXRoIGZvciB0aGUgbmFtZWQg cmVsYXRpb24uCitzdWIgcmVsYXRpb25fZmlsZXBhdGggeworICAgIG15ICgkcmVsbmFtZSkgPSBA XzsKKworICAgIG15ICRwZ2RhdGEgPSAkbm9kZS0+ZGF0YV9kaXI7CisgICAgbXkgJHJlbCA9ICRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAgICAgcXEoU0VMRUNUIHBnX3JlbGF0aW9u X2ZpbGVwYXRoKCckcmVsbmFtZScpKSk7CisgICAgZGllICJwYXRoIG5vdCBmb3VuZCBmb3IgcmVs YXRpb24gJHJlbG5hbWUiIHVubGVzcyBkZWZpbmVkICRyZWw7CisgICAgcmV0dXJuICIkcGdkYXRh LyRyZWwiOworfQorCitzdWIgc3RyaW5nX3JlcGxhY2VfYmxvY2sgeworICAgIG15ICgkZmlsZW5h bWUsICRmaW5kLCAkcmVwbGFjZSwgJGJsa25vKSA9IEBfOworCisgICAgbXkgJGZoOworICAgIG9w ZW4oJGZoLCAnKzwnLCAkZmlsZW5hbWUpIG9yIEJBSUxfT1VUKCJvcGVuIGZhaWxlZDogJCEiKTsK KyAgICBiaW5tb2RlICRmaDsKKworICAgIG15ICRvZmZzZXQgPSAkYmxrbm8gKiAkYmxrc2l6ZTsK KyAgICBteSAkYnVmZmVyOworCisgICAgc3lzc2VlaygkZmgsICRvZmZzZXQsIDApIG9yIEJBSUxf T1VUKCJzZWVrIGZhaWxlZDogJCEiKTsKKyAgICBzeXNyZWFkKCRmaCwgJGJ1ZmZlciwgJGJsa3Np emUpIG9yIEJBSUxfT1VUKCJyZWFkIGZhaWxlZDogJCEiKTsKKworICAgICRidWZmZXIgPX4gcy8k ZmluZC8nIicgLiAkcmVwbGFjZSAuICciJy9nZWU7CisKKyAgICBzeXNzZWVrKCRmaCwgJG9mZnNl dCwgMCkgb3IgQkFJTF9PVVQoInNlZWsgZmFpbGVkOiAkISIpOworICAgIHN5c3dyaXRlKCRmaCwg JGJ1ZmZlcikgb3IgQkFJTF9PVVQoIndyaXRlIGZhaWxlZDogJCEiKTsKKworICAgIGNsb3NlKCRm aCkgb3IgQkFJTF9PVVQoImNsb3NlIGZhaWxlZDogJCEiKTsKKworICAgIHJldHVybjsKK30KKwor c3ViIHdyYXAKK3sKKyAgICBteSAkaW5wdXQgPSBAXzsKKyAgICByZXR1cm4gcXIvXFEkaW5wdXRc RS8KK30KKworZG9uZV90ZXN0aW5nKCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9icmluLmMgYi9jb250cmliL2FtY2hlY2sv dmVyaWZ5X2JyaW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTkz MjdmMmY4OTUKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL2FtY2hlY2svdmVyaWZ5X2JyaW4u YwpAQCAtMCwwICsxLDg1NSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogdmVyaWZ5X2Jy aW4uYworICoJICBGdW5jdGlvbnMgdG8gY2hlY2sgcG9zdGdyZXNxbCBicmluIGluZGV4ZXMgZm9y IGNvcnJ1cHRpb24KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyNSwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKgkgIGNvbnRyaWIvYW1jaGVjay92ZXJpZnlf YnJpbi5jCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisK KyNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxl LmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvdHJhbnNh bS5oIgorI2luY2x1ZGUgImFjY2Vzcy9icmluLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5o IgorI2luY2x1ZGUgImNhdGFsb2cvcGdfYW1fZC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfb3Bl cmF0b3IuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2xtZ3Iu aCIKKyNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy9ndWMuaCIKKyNp bmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgImFjY2Vzcy9icmluX3BhZ2UuaCIK KyNpbmNsdWRlICJhY2Nlc3MvYnJpbl9yZXZtYXAuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2Fj aGUuaCIKKyNpbmNsdWRlICJ2ZXJpZnlfY29tbW9uLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRp bnMuaCIKKyNpbmNsdWRlICJ1dGlscy9hcnJheS5oIgorCisKK1BHX0ZVTkNUSU9OX0lORk9fVjEo YnJpbl9pbmRleF9jaGVjayk7CisKK3R5cGVkZWYgc3RydWN0IEJyaW5DaGVja1N0YXRlCit7CisK KwkvKiBDaGVjayBhcmd1bWVudHMgKi8KKworCWJvb2wJCXJlZ3VsYXJfcGFnZXNfY2hlY2s7CisK KwkvKiBCUklOIGNoZWNrIGNvbW1vbiBmaWVsZHMgKi8KKworCVJlbGF0aW9uCWlkeHJlbDsKKwlS ZWxhdGlvbgloZWFwcmVsOworCUJyaW5EZXNjICAgKmJkZXNjOworCWludAkJCW5hdHRzOworCUJs b2NrTnVtYmVyIHBhZ2VzUGVyUmFuZ2U7CisKKwkvKiBJbmRleCBzdHJ1Y3R1cmUgY2hlY2sgZmll bGRzICovCisKKwlCdWZmZXJBY2Nlc3NTdHJhdGVneSBjaGVja3N0cmF0ZWd5OworCUJsb2NrTnVt YmVyIGlkeG5ibG9ja3M7CisJQmxvY2tOdW1iZXIgaGVhcG5ibG9ja3M7CisJQmxvY2tOdW1iZXIg bGFzdFJldm1hcFBhZ2U7CisJLyogQ3VycmVudCByYW5nZSBibGtubyAqLworCUJsb2NrTnVtYmVy IHJhbmdlQmxrbm87CisJLyogQ3VycmVudCByZXZtYXAgaXRlbSAqLworCUJsb2NrTnVtYmVyIHJl dm1hcEJsazsKKwlCdWZmZXIJCXJldm1hcGJ1ZjsKKwlQYWdlCQlyZXZtYXBwYWdlOworCXVpbnQz MgkJcmV2bWFwaWR4OworCS8qIEN1cnJlbnQgaW5kZXggdHVwbGUgKi8KKwlCbG9ja051bWJlciBy ZWdwYWdlQmxrOworCUJ1ZmZlcgkJcmVncGFnZWJ1ZjsKKwlQYWdlCQlyZWdwYWdlOworCU9mZnNl dE51bWJlciByZWdwYWdlb2Zmc2V0OworCit9CQkJQnJpbkNoZWNrU3RhdGU7CisKK3N0YXRpYyB2 b2lkIGJyaW5fY2hlY2soUmVsYXRpb24gaWR4cmVsLCBSZWxhdGlvbiBoZWFwcmVsLCB2b2lkICpj YWxsYmFja19zdGF0ZSwgYm9vbCByZWFkb25seSk7CisKK3N0YXRpYyB2b2lkIGNoZWNrX2JyaW5f aW5kZXhfc3RydWN0dXJlKEJyaW5DaGVja1N0YXRlICogcFN0YXRlKTsKKworc3RhdGljIHZvaWQg Y2hlY2tfbWV0YShCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlKTsKKworc3RhdGljIHZvaWQgY2hlY2tf cmV2bWFwKEJyaW5DaGVja1N0YXRlICogc3RhdGUpOworCitzdGF0aWMgdm9pZCBjaGVja19yZXZt YXBfaXRlbShCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlKTsKKworc3RhdGljIHZvaWQgY2hlY2tfaW5k ZXhfdHVwbGUoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSwgQnJpblR1cGxlICp0dXBsZSwgSXRlbUlk IGxwKTsKKworc3RhdGljIHZvaWQgY2hlY2tfcmVndWxhcl9wYWdlcyhCcmluQ2hlY2tTdGF0ZSAq IHN0YXRlKTsKKworc3RhdGljIGJvb2wgcmV2bWFwX3BvaW50c190b19pbmRleF90dXBsZShCcmlu Q2hlY2tTdGF0ZSAqIHN0YXRlKTsKKworc3RhdGljIEl0ZW1JZCBQYWdlR2V0SXRlbUlkQ2FyZWZ1 bChCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlKTsKKworc3RhdGljIHZvaWQgYnJpbl9jaGVja19lcmVw b3J0KEJyaW5DaGVja1N0YXRlICogc3RhdGUsIGNvbnN0IGNoYXIgKmZtdCk7CisKK3N0YXRpYyB2 b2lkIHJldm1hcF9pdGVtX2VyZXBvcnQoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSwgY29uc3QgY2hh ciAqZm10KTsKKworc3RhdGljIHZvaWQgaW5kZXhfdHVwbGVfZXJlcG9ydChCcmluQ2hlY2tTdGF0 ZSAqIHN0YXRlLCBjb25zdCBjaGFyICpmbXQpOworCitzdGF0aWMgdm9pZCBpbmRleF90dXBsZV9v bmx5X2VyZXBvcnQoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSwgY29uc3QgY2hhciAqZm10KTsKKwor CitEYXR1bQorYnJpbl9pbmRleF9jaGVjayhQR19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJCWlu ZHJlbGlkID0gUEdfR0VUQVJHX09JRCgwKTsKKwlCcmluQ2hlY2tTdGF0ZSAqc3RhdGUgPSBwYWxs b2MwKHNpemVvZihCcmluQ2hlY2tTdGF0ZSkpOworCisJc3RhdGUtPnJlZ3VsYXJfcGFnZXNfY2hl Y2sgPSBQR19HRVRBUkdfQk9PTCgxKTsKKworCWFtY2hlY2tfbG9ja19yZWxhdGlvbl9hbmRfY2hl Y2soaW5kcmVsaWQsCisJCQkJCQkJCQlCUklOX0FNX09JRCwKKwkJCQkJCQkJCWJyaW5fY2hlY2ss CisJCQkJCQkJCQlTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2ssCisJCQkJCQkJCQlzdGF0ZSk7CisK KwlQR19SRVRVUk5fVk9JRCgpOworfQorCisvKgorICogTWFpbiBjaGVjayBmdW5jdGlvbgorICov CitzdGF0aWMgdm9pZAorYnJpbl9jaGVjayhSZWxhdGlvbiBpZHhyZWwsIFJlbGF0aW9uIGhlYXBy ZWwsIHZvaWQgKmNhbGxiYWNrX3N0YXRlLCBib29sIHJlYWRvbmx5KQoreworCUJyaW5DaGVja1N0 YXRlICpzdGF0ZSA9IChCcmluQ2hlY2tTdGF0ZSAqKSBjYWxsYmFja19zdGF0ZTsKKworCS8qIElu aXRpYWxpemUgY2hlY2sgY29tbW9uIGZpZWxkcyAqLworCXN0YXRlLT5pZHhyZWwgPSBpZHhyZWw7 CisJc3RhdGUtPmhlYXByZWwgPSBoZWFwcmVsOworCXN0YXRlLT5iZGVzYyA9IGJyaW5fYnVpbGRf ZGVzYyhpZHhyZWwpOworCXN0YXRlLT5uYXR0cyA9IHN0YXRlLT5iZGVzYy0+YmRfdHVwZGVzYy0+ bmF0dHM7CisKKworCWNoZWNrX2JyaW5faW5kZXhfc3RydWN0dXJlKHN0YXRlKTsKKworCisJYnJp bl9mcmVlX2Rlc2Moc3RhdGUtPmJkZXNjKTsKK30KKworLyoKKyAqIENoZWNrIHRoYXQgaW5kZXgg aGFzIGV4cGVjdGVkIHN0cnVjdHVyZQorICoKKyAqICBTb21lIGNoZWNrIGV4cGVjdGF0aW9uczoK KyAqIC0gd2UgaG9sZCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2ssIHNvIHJldm1hcCBjb3VsZCBu b3QgYmUgZXh0ZW5kZWQgKGkuZS4gbm8gZXZhY3VhdGlvbikgd2hpbGUgY2hlY2sgYXMgd2VsbCBh cworICogICBhbGwgcmVndWxhciBwYWdlcyBzaG91bGQgc3RheSByZWd1bGFyIGFuZCByYW5nZXMg Y291bGQgbm90IGJlIHN1bW1hcml6ZWQgYW5kIGRlc3VtbWFyaXplZC4KKyAqICAgTmV2ZXJ0aGVs ZXNzLCBjb25jdXJyZW50IHVwZGF0ZXMgY291bGQgbGVhZCB0byBuZXcgcmVndWxhciBwYWdlIGFs bG9jYXRpb25zCisgKiAgIGFuZCBtb3Zpbmcgb2YgaW5kZXggdHVwbGVzLgorICogLSBpZiByZXZt YXAgcG9pbnRlciBpcyB2YWxpZCB0aGVyZSBzaG91bGQgYmUgdmFsaWQgaW5kZXggdHVwbGUgaXQg cG9pbnRzIHRvLgorICogLSB0aGVyZSBhcmUgbm8gb3JwaGFuIGluZGV4IHR1cGxlcyAoaWYgdGhl cmUgaXMgYW4gaW5kZXggdHVwbGUsIHRoZSByZXZtYXAgaXRlbSBwb2ludHMgdG8gdGhpcyB0dXBs ZSBhbHNvIG11c3QgZXhpc3QpCisgKiAtIGl0J3MgcG9zc2libGUgdG8gZW5jb3VudGVyIHBsYWNl aG9sZGVyIHR1cGxlcyAoYXMgYSByZXN1bHQgb2YgY3Jhc2gpCisgKiAtIGl0J3MgcG9zc2libGUg dG8gZW5jb3VudGVyIG5ldyBwYWdlcyBpbnN0ZWFkIG9mIHJlZ3VsYXIgKGFzIGEgcmVzdWx0IG9m IGNyYXNoKQorICogLSBpdCdzIHBvc3NpYmxlIHRvIGVuY291bnRlciBwYWdlcyB3aXRoIGV2YWN1 YXRpb24gYml0IChhcyBhIHJlc3VsdCBvZiBjcmFzaCkKKyAqCisgKi8KK3N0YXRpYyB2b2lkCitj aGVja19icmluX2luZGV4X3N0cnVjdHVyZShCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlKQoreworCS8q IEluZGV4IHN0cnVjdHVyZSBjaGVjayBmaWVsZHMgaW5pdGlhbGl6YXRpb24gKi8KKwlzdGF0ZS0+ Y2hlY2tzdHJhdGVneSA9IEdldEFjY2Vzc1N0cmF0ZWd5KEJBU19CVUxLUkVBRCk7CisKKwljaGVj a19tZXRhKHN0YXRlKTsKKworCS8qIENoZWNrIHJldm1hcCBmaXJzdCwgYmxvY2tzOiBbMSwgbGFz dFJldm1hcFBhZ2VdICovCisJY2hlY2tfcmV2bWFwKHN0YXRlKTsKKworCS8qIENoZWNrIHJlZ3Vs YXIgcGFnZXMsIGJsb2NrczogW2xhc3RSZXZtYXBQYWdlICsgMSwgaWR4bmJsb2Nrc10gKi8KKwlj aGVja19yZWd1bGFyX3BhZ2VzKHN0YXRlKTsKK30KKworLyogTWV0YSBwYWdlIGNoZWNrIGFuZCBz YXZlIHNvbWUgZGF0YSBmb3IgdGhlIGZ1cnRoZXIgY2hlY2sgKi8KK3N0YXRpYyB2b2lkCitjaGVj a19tZXRhKEJyaW5DaGVja1N0YXRlICogc3RhdGUpCit7CisJQnVmZmVyCQltZXRhYnVmOworCVBh Z2UJCW1ldGFwYWdlOworCUJyaW5NZXRhUGFnZURhdGEgKm1ldGFkYXRhOworCisJLyogTWV0YSBw YWdlIGNoZWNrICovCisJbWV0YWJ1ZiA9IFJlYWRCdWZmZXJFeHRlbmRlZChzdGF0ZS0+aWR4cmVs LCBNQUlOX0ZPUktOVU0sIEJSSU5fTUVUQVBBR0VfQkxLTk8sIFJCTV9OT1JNQUwsCisJCQkJCQkJ CSBzdGF0ZS0+Y2hlY2tzdHJhdGVneSk7CisJTG9ja0J1ZmZlcihtZXRhYnVmLCBCVUZGRVJfTE9D S19TSEFSRSk7CisJbWV0YXBhZ2UgPSBCdWZmZXJHZXRQYWdlKG1ldGFidWYpOworCW1ldGFkYXRh ID0gKEJyaW5NZXRhUGFnZURhdGEgKikgUGFnZUdldENvbnRlbnRzKG1ldGFwYWdlKTsKKwlzdGF0 ZS0+aWR4bmJsb2NrcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3Moc3RhdGUtPmlkeHJlbCk7 CisKKworCWlmICghQlJJTl9JU19NRVRBX1BBR0UobWV0YXBhZ2UpIHx8CisJCW1ldGFkYXRhLT5i cmluTWFnaWMgIT0gQlJJTl9NRVRBX01BR0lDIHx8CisJCW1ldGFkYXRhLT5icmluVmVyc2lvbiAh PSBCUklOX0NVUlJFTlRfVkVSU0lPTiB8fAorCQltZXRhZGF0YS0+cGFnZXNQZXJSYW5nZSA8IDEg fHwgbWV0YWRhdGEtPnBhZ2VzUGVyUmFuZ2UgPiBCUklOX01BWF9QQUdFU19QRVJfUkFOR0UgfHwK KwkJbWV0YWRhdGEtPmxhc3RSZXZtYXBQYWdlIDw9IEJSSU5fTUVUQVBBR0VfQkxLTk8gfHwgbWV0 YWRhdGEtPmxhc3RSZXZtYXBQYWdlID49IHN0YXRlLT5pZHhuYmxvY2tzKQorCXsKKwkJYnJpbl9j aGVja19lcmVwb3J0KHN0YXRlLCAibWV0YXBhZ2UgaXMgY29ycnVwdGVkIik7CisJfQorCisJc3Rh dGUtPmxhc3RSZXZtYXBQYWdlID0gbWV0YWRhdGEtPmxhc3RSZXZtYXBQYWdlOworCXN0YXRlLT5w YWdlc1BlclJhbmdlID0gbWV0YWRhdGEtPnBhZ2VzUGVyUmFuZ2U7CisJVW5sb2NrUmVsZWFzZUJ1 ZmZlcihtZXRhYnVmKTsKK30KKworLyoKKyAqIFdhbGsgcmV2bWFwIHBhZ2UgYnkgcGFnZSBmcm9t IHRoZSBiZWdpbm5pbmcgYW5kIGNoZWNrIGV2ZXJ5IHJldm1hcCBpdGVtLgorICogQWxzbyBjaGVj ayB0aGF0IGFsbCBwYWdlcyB3aXRoaW4gWzEsIGxhc3RSZXZtYXBQYWdlXSBhcmUgcmV2bWFwIHBh Z2VzLgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcmV2bWFwKEJyaW5DaGVja1N0YXRlICogc3Rh dGUpCit7CisJUmVsYXRpb24JaWR4cmVsID0gc3RhdGUtPmlkeHJlbDsKKwlCbG9ja051bWJlciBs YXN0UmV2bWFwUGFnZSA9IHN0YXRlLT5sYXN0UmV2bWFwUGFnZTsKKwlSZWFkU3RyZWFtICpzdHJl YW07CisJaW50CQkJc3RyZWFtX2ZsYWdzOworCVJlYWRTdHJlYW1CbG9ja051bWJlckNCIHN0cmVh bV9jYjsKKwlCbG9ja1JhbmdlUmVhZFN0cmVhbVByaXZhdGUgc3RyZWFtX2RhdGE7CisKKwlzdGF0 ZS0+cmFuZ2VCbGtubyA9IDA7CisJc3RhdGUtPnJlZ3BhZ2VidWYgPSBJbnZhbGlkQnVmZmVyOwor CXN0YXRlLT5oZWFwbmJsb2NrcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3Moc3RhdGUtPmhl YXByZWwpOworCisKKwkvKgorCSAqIFByZXBhcmUgc3RyZWFtIGRhdGEgZm9yIHJldm1hcCB3YWxr LiBJdCBpcyBzYWZlIHRvIHVzZSBiYXRjaG1vZGUgYXMKKwkgKiBibG9ja19yYW5nZV9yZWFkX3N0 cmVhbV9jYiB0YWtlcyBubyBsb2Nrcy4KKwkgKi8KKwlzdHJlYW1fZmxhZ3MgPSBSRUFEX1NUUkVB TV9TRVFVRU5USUFMIHwgUkVBRF9TVFJFQU1fVVNFX0JBVENISU5HOworCS8qIEZpcnN0IHJldm1h cCBwYWdlIGlzIHJpZ2h0IGFmdGVyIG1ldGEgcGFnZSAqLworCXN0cmVhbV9kYXRhLmN1cnJlbnRf YmxvY2tudW0gPSBCUklOX01FVEFQQUdFX0JMS05PICsgMTsKKwlzdHJlYW1fZGF0YS5sYXN0X2V4 Y2x1c2l2ZSA9IGxhc3RSZXZtYXBQYWdlICsgMTsKKworCXN0cmVhbV9jYiA9IGJsb2NrX3Jhbmdl X3JlYWRfc3RyZWFtX2NiOworCXN0cmVhbSA9IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9uKHN0 cmVhbV9mbGFncywKKwkJCQkJCQkJCQlHZXRBY2Nlc3NTdHJhdGVneShCQVNfQlVMS1JFQUQpLAor CQkJCQkJCQkJCWlkeHJlbCwKKwkJCQkJCQkJCQlNQUlOX0ZPUktOVU0sCisJCQkJCQkJCQkJc3Ry ZWFtX2NiLAorCQkJCQkJCQkJCSZzdHJlYW1fZGF0YSwKKwkJCQkJCQkJCQkwKTsKKworCS8qIFdh bGsgZWFjaCByZXZtYXAgcGFnZSAqLworCXdoaWxlICgoc3RhdGUtPnJldm1hcGJ1ZiA9IHJlYWRf c3RyZWFtX25leHRfYnVmZmVyKHN0cmVhbSwgTlVMTCkpICE9IEludmFsaWRCdWZmZXIpCisJewor CQlzdGF0ZS0+cmV2bWFwQmxrID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoc3RhdGUtPnJldm1hcGJ1 Zik7CisJCUxvY2tCdWZmZXIoc3RhdGUtPnJldm1hcGJ1ZiwgQlVGRkVSX0xPQ0tfU0hBUkUpOwor CQlzdGF0ZS0+cmV2bWFwcGFnZSA9IEJ1ZmZlckdldFBhZ2Uoc3RhdGUtPnJldm1hcGJ1Zik7CisK KwkJLyoKKwkJICogUGFnZXMgd2l0aCBibG9jayBudW1iZXJzIGluIFsxLCBsYXN0UmV2bWFwUGFn ZV0gc2hvdWxkIGJlIHJldm1hcAorCQkgKiBwYWdlcworCQkgKi8KKwkJaWYgKCFCUklOX0lTX1JF Vk1BUF9QQUdFKHN0YXRlLT5yZXZtYXBwYWdlKSkKKwkJeworCQkJYnJpbl9jaGVja19lcmVwb3J0 KHN0YXRlLCBwc3ByaW50ZigicmV2bWFwIHBhZ2UgaXMgZXhwZWN0ZWQgYXQgYmxvY2sgJXUsIGxh c3QgcmV2bWFwIHBhZ2UgJXUiLAorCQkJCQkJCQkJCQkgICBzdGF0ZS0+cmV2bWFwQmxrLAorCQkJ CQkJCQkJCQkgICBsYXN0UmV2bWFwUGFnZSkpOworCQl9CisJCUxvY2tCdWZmZXIoc3RhdGUtPnJl dm1hcGJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKworCQkvKiBXYWxrIGFuZCBjaGVjayBhbGwg YnJpbiB0dXBsZXMgZnJvbSB0aGUgY3VycmVudCByZXZtYXAgcGFnZSAqLworCQlzdGF0ZS0+cmV2 bWFwaWR4ID0gMDsKKwkJd2hpbGUgKHN0YXRlLT5yZXZtYXBpZHggPCBSRVZNQVBfUEFHRV9NQVhJ VEVNUykKKwkJeworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkJLyogQ2hlY2sgcmV2 bWFwIGl0ZW0gKi8KKwkJCWNoZWNrX3Jldm1hcF9pdGVtKHN0YXRlKTsKKworCQkJc3RhdGUtPnJh bmdlQmxrbm8gKz0gc3RhdGUtPnBhZ2VzUGVyUmFuZ2U7CisJCQlzdGF0ZS0+cmV2bWFwaWR4Kys7 CisJCX0KKworCQllbG9nKERFQlVHMywgIkNvbXBsZXRlIHJldm1hcCBwYWdlIGNoZWNrOiAlZCIs IHN0YXRlLT5yZXZtYXBCbGspOworCisJCVJlbGVhc2VCdWZmZXIoc3RhdGUtPnJldm1hcGJ1Zik7 CisJfQorCisJcmVhZF9zdHJlYW1fZW5kKHN0cmVhbSk7CisKKwlpZiAoQnVmZmVySXNWYWxpZChz dGF0ZS0+cmVncGFnZWJ1ZikpCisJeworCQlSZWxlYXNlQnVmZmVyKHN0YXRlLT5yZWdwYWdlYnVm KTsKKwl9Cit9CisKKy8qCisgKiBDaGVjayByZXZtYXAgaXRlbS4KKyAqCisgKiBXZSBjaGVjayBy ZXZtYXAgaXRlbSBwb2ludGVyIGl0c2VsZiBhbmQgaWYgaXQgaXMgb2sgd2UgY2hlY2sgdGhlIGlu ZGV4IHR1cGxlIGl0IHBvaW50cyB0by4KKyAqCisgKiBUbyBhdm9pZCBkZWFkbG9jayB3ZSBuZWVk IHRvIHVubG9jayByZXZtYXAgcGFnZSBiZWZvcmUgbG9ja2luZyByZWd1bGFyIHBhZ2UsCisgKiBz byB3aGVuIHdlIGdldCB0aGUgbG9jayBvbiB0aGUgcmVndWxhciBwYWdlIG91ciBpbmRleCB0dXBs ZSBwb2ludGVyIG1heSBubyBsb25nZXIgYmUgcmVsZXZhbnQuCisgKiBTbyBmb3Igc29tZSBjaGVj a3MgYmVmb3JlIHJlcG9ydGluZyBhbiBlcnJvciB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IG91 ciBwb2ludGVyIGlzIHN0aWxsIHJlbGV2YW50IGFuZCBpZiBpdCdzIG5vdCAtIHJldHJ5LgorICov CitzdGF0aWMgdm9pZAorY2hlY2tfcmV2bWFwX2l0ZW0oQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSkK K3sKKwlJdGVtUG9pbnRlckRhdGEgKnJldm1hcHRpZHM7CisJUmV2bWFwQ29udGVudHMgKmNvbnRl bnRzOworCUl0ZW1Qb2ludGVyRGF0YSAqaXB0cjsKKwlJdGVtSWQJCWxwOworCUJyaW5UdXBsZSAg KnR1cDsKKwlSZWxhdGlvbglpZHhyZWwgPSBzdGF0ZS0+aWR4cmVsOworCisJLyogTG9vcCB0byBy ZXRyeSByZXZtYXAgaXRlbSBjaGVjayBpZiB0aGVyZSB3YXMgYSBjb25jdXJyZW50IHVwZGF0ZS4g Ki8KKwlmb3IgKDs7KQorCXsKKwkJTG9ja0J1ZmZlcihzdGF0ZS0+cmV2bWFwYnVmLCBCVUZGRVJf TE9DS19TSEFSRSk7CisKKwkJY29udGVudHMgPSAoUmV2bWFwQ29udGVudHMgKikgUGFnZUdldENv bnRlbnRzKEJ1ZmZlckdldFBhZ2Uoc3RhdGUtPnJldm1hcGJ1ZikpOworCQlyZXZtYXB0aWRzID0g Y29udGVudHMtPnJtX3RpZHM7CisJCS8qIFBvaW50ZXIgZm9yIHRoZSByYW5nZSB3aXRoIHN0YXJ0 IGF0IHN0YXRlLT5yYW5nZUJsa25vICovCisJCWlwdHIgPSByZXZtYXB0aWRzICsgc3RhdGUtPnJl dm1hcGlkeDsKKworCQkvKiBBdCBmaXJzdCBjaGVjayByZXZtYXAgaXRlbSBwb2ludGVyICovCisK KwkJLyoKKwkJICogVHVwbGUgcG9pbnRlciBpcyBpbnZhbGlkIG1lYW5zIHJhbmdlIGlzbid0IHN1 bW1hcml6ZWQsIGp1c3QgbW92ZQorCQkgKiBmdXJ0aGVyCisJCSAqLworCQlpZiAoIUl0ZW1Qb2lu dGVySXNWYWxpZChpcHRyKSkKKwkJeworCQkJZWxvZyhERUJVRzMsICJSYW5nZSAldSBpcyBub3Qg c3VtbWFyaXplZCIsIHN0YXRlLT5yYW5nZUJsa25vKTsKKwkJCUxvY2tCdWZmZXIoc3RhdGUtPnJl dm1hcGJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKwkJCWJyZWFrOworCQl9CisKKwkJLyoKKwkJ ICogUG9pbnRlciBpcyB2YWxpZCwgaXQgc2hvdWxkIHBvaW50cyB0byBpbmRleCB0dXBsZSBmb3Ig dGhlIHJhbmdlCisJCSAqIHdpdGggYmxrbm8gcmFuZ2VCbGtuby4gUmVtZW1iZXIgaXQgYW5kIHVu bG9jayByZXZtYXAgcGFnZSB0byBhdm9pZAorCQkgKiBkZWFkbG9jaworCQkgKi8KKwkJc3RhdGUt PnJlZ3BhZ2VCbGsgPSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKGlwdHIpOworCQlzdGF0ZS0+ cmVncGFnZW9mZnNldCA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKGlwdHIpOworCisJCUxv Y2tCdWZmZXIoc3RhdGUtPnJldm1hcGJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKworCQkvKgor CQkgKiBDaGVjayBpZiB0aGUgcmVncGFnZSBibG9jayBudW1iZXIgaXMgZ3JlYXRlciB0aGFuIHRo ZSByZWxhdGlvbgorCQkgKiBzaXplLiBUbyBhdm9pZCBmZXRjaGluZyB0aGUgbnVtYmVyIG9mIGJs b2NrcyBmb3IgZWFjaCB0dXBsZSwgdXNlCisJCSAqIGNhY2hlZCB2YWx1ZSBmaXJzdAorCQkgKi8K KwkJaWYgKHN0YXRlLT5yZWdwYWdlQmxrID49IHN0YXRlLT5pZHhuYmxvY2tzKQorCQl7CisJCQkv KgorCQkJICogUmVndWxhciBwYWdlcyBtYXkgaGF2ZSBiZWVuIGFkZGVkLCBzbyByZWZyZXNoIGlk eG5ibG9ja3MgYW5kCisJCQkgKiByZWNoZWNrCisJCQkgKi8KKwkJCXN0YXRlLT5pZHhuYmxvY2tz ID0gUmVsYXRpb25HZXROdW1iZXJPZkJsb2NrcyhpZHhyZWwpOworCQkJaWYgKHN0YXRlLT5yZWdw YWdlQmxrID49IHN0YXRlLT5pZHhuYmxvY2tzKQorCQkJeworCQkJCXJldm1hcF9pdGVtX2VyZXBv cnQoc3RhdGUsCisJCQkJCQkJCQlwc3ByaW50ZigicmV2bWFwIGl0ZW0gcG9pbnRzIHRvIGEgbm9u IGV4aXN0aW5nIGJsb2NrICV1LCBpbmRleCBtYXggYmxvY2sgJXUiLAorCQkJCQkJCQkJCQkgc3Rh dGUtPnJlZ3BhZ2VCbGssCisJCQkJCQkJCQkJCSBzdGF0ZS0+aWR4bmJsb2NrcyAtIDEpKTsKKwkJ CX0KKwkJfQorCisJCS8qCisJCSAqIFRvIGF2b2lkIHNvbWUgcGluL3VucGluIGN5Y2xlcyB3ZSBj YWNoZSBsYXN0IHVzZWQgcmVndWxhciBwYWdlLgorCQkgKiBDaGVjayBpZiB3ZSBuZWVkIGRpZmZl cmVudCByZWd1bGFyIHBhZ2UgYW5kIGZldGNoIGl0LgorCQkgKi8KKwkJaWYgKCFCdWZmZXJJc1Zh bGlkKHN0YXRlLT5yZWdwYWdlYnVmKSB8fCBCdWZmZXJHZXRCbG9ja051bWJlcihzdGF0ZS0+cmVn cGFnZWJ1ZikgIT0gc3RhdGUtPnJlZ3BhZ2VCbGspCisJCXsKKwkJCWlmIChCdWZmZXJJc1ZhbGlk KHN0YXRlLT5yZWdwYWdlYnVmKSkKKwkJCXsKKwkJCQlSZWxlYXNlQnVmZmVyKHN0YXRlLT5yZWdw YWdlYnVmKTsKKwkJCX0KKwkJCXN0YXRlLT5yZWdwYWdlYnVmID0gUmVhZEJ1ZmZlckV4dGVuZGVk KGlkeHJlbCwgTUFJTl9GT1JLTlVNLCBzdGF0ZS0+cmVncGFnZUJsaywgUkJNX05PUk1BTCwKKwkJ CQkJCQkJCQkJCSAgIHN0YXRlLT5jaGVja3N0cmF0ZWd5KTsKKwkJfQorCisJCUxvY2tCdWZmZXIo c3RhdGUtPnJlZ3BhZ2VidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKKwkJc3RhdGUtPnJlZ3BhZ2Ug PSBCdWZmZXJHZXRQYWdlKHN0YXRlLT5yZWdwYWdlYnVmKTsKKworCQkvKiBSZXZtYXAgc2hvdWxk IGFsd2F5cyBwb2ludCB0byBhIHJlZ3VsYXIgcGFnZSAqLworCQlpZiAoIUJSSU5fSVNfUkVHVUxB Ul9QQUdFKHN0YXRlLT5yZWdwYWdlKSkKKwkJeworCQkJcmV2bWFwX2l0ZW1fZXJlcG9ydChzdGF0 ZSwKKwkJCQkJCQkJcHNwcmludGYoInJldm1hcCBpdGVtIHBvaW50cyB0byB0aGUgcGFnZSB3aGlj aCBpcyBub3QgcmVndWxhciAoYmxrbm86ICV1KSIsCisJCQkJCQkJCQkJIHN0YXRlLT5yZWdwYWdl QmxrKSk7CisKKwkJfQorCisJCS8qIENoZWNrIGl0ZW0gb2Zmc2V0IGlzIHZhbGlkICovCisJCWlm IChzdGF0ZS0+cmVncGFnZW9mZnNldCA+IFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIoc3RhdGUtPnJl Z3BhZ2UpKQorCQl7CisKKwkJCS8qIElmIGNvbmN1cnJlbnQgdXBkYXRlIG1vdmVkIG91ciB0dXBs ZSB3ZSBuZWVkIHRvIHJldHJ5ICovCisJCQlpZiAoIXJldm1hcF9wb2ludHNfdG9faW5kZXhfdHVw bGUoc3RhdGUpKQorCQkJeworCQkJCUxvY2tCdWZmZXIoc3RhdGUtPnJlZ3BhZ2VidWYsIEJVRkZF Ul9MT0NLX1VOTE9DSyk7CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCXJldm1hcF9pdGVtX2Vy ZXBvcnQoc3RhdGUsCisJCQkJCQkJCXBzcHJpbnRmKCJyZXZtYXAgaXRlbSBvZmZzZXQgbnVtYmVy ICV1IGlzIGdyZWF0ZXIgdGhhbiByZWd1bGFyIHBhZ2UgJXUgbWF4IG9mZnNldCAldSIsCisJCQkJ CQkJCQkJIHN0YXRlLT5yZWdwYWdlb2Zmc2V0LAorCQkJCQkJCQkJCSBzdGF0ZS0+cmVncGFnZUJs aywKKwkJCQkJCQkJCQkgUGFnZUdldE1heE9mZnNldE51bWJlcihzdGF0ZS0+cmVncGFnZSkpKTsK KwkJfQorCisJCWVsb2coREVCVUczLCAiUHJvY2VzcyByYW5nZTogJXUsIGlwdHI6ICgldSwldSki LCBzdGF0ZS0+cmFuZ2VCbGtubywgc3RhdGUtPnJlZ3BhZ2VCbGssIHN0YXRlLT5yZWdwYWdlb2Zm c2V0KTsKKworCQkvKgorCQkgKiBSZXZtYXAgcG9pbnRlciBpcyBPSy4gSXQgcG9pbnRzIHRvIGV4 aXN0aW5nIHJlZ3VsYXIgcGFnZSwgb2Zmc2V0CisJCSAqIGFsc28gaXMgb2suIExldCdzIGNoZWNr IGluZGV4IHR1cGxlIGl0IHBvaW50cyB0by4KKwkJICovCisKKwkJbHAgPSBQYWdlR2V0SXRlbUlk Q2FyZWZ1bChzdGF0ZSk7CisKKwkJLyogUmV2bWFwIHNob3VsZCBwb2ludCB0byBOT1JNQUwgdHVw bGVzIG9ubHkgKi8KKwkJaWYgKCFJdGVtSWRJc1VzZWQobHApKQorCQl7CisKKwkJCS8qIElmIGNv bmN1cnJlbnQgdXBkYXRlIG1vdmVkIG91ciB0dXBsZSB3ZSBuZWVkIHRvIHJldHJ5ICovCisJCQlp ZiAoIXJldm1hcF9wb2ludHNfdG9faW5kZXhfdHVwbGUoc3RhdGUpKQorCQkJeworCQkJCUxvY2tC dWZmZXIoc3RhdGUtPnJlZ3BhZ2VidWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisJCQkJY29udGlu dWU7CisJCQl9CisKKwkJCWluZGV4X3R1cGxlX2VyZXBvcnQoc3RhdGUsICJyZXZtYXAgaXRlbSBw b2ludHMgdG8gdW51c2VkIGluZGV4IHR1cGxlIik7CisJCX0KKworCisJCXR1cCA9IChCcmluVHVw bGUgKikgUGFnZUdldEl0ZW0oc3RhdGUtPnJlZ3BhZ2UsIGxwKTsKKworCQkvKiBDaGVjayBpZiBy YW5nZSBibG9jayBudW1iZXIgaXMgYXMgZXhwZWN0ZWQgKi8KKwkJaWYgKHR1cC0+YnRfYmxrbm8g IT0gc3RhdGUtPnJhbmdlQmxrbm8pCisJCXsKKworCQkJLyogSWYgY29uY3VycmVudCB1cGRhdGUg bW92ZWQgb3VyIHR1cGxlIHdlIG5lZWQgdG8gcmV0cnkgKi8KKwkJCWlmICghcmV2bWFwX3BvaW50 c190b19pbmRleF90dXBsZShzdGF0ZSkpCisJCQl7CisJCQkJTG9ja0J1ZmZlcihzdGF0ZS0+cmVn cGFnZWJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJ aW5kZXhfdHVwbGVfZXJlcG9ydChzdGF0ZSwgcHNwcmludGYoImluZGV4IHR1cGxlIGhhcyBpbnZh bGlkIGJsa25vICV1IiwgdHVwLT5idF9ibGtubykpOworCQl9CisKKwkJLyoKKwkJICogSWYgdGhl IHJhbmdlIGlzIGJleW9uZCB0aGUgdGFibGUgc2l6ZSAtIHRoZSByYW5nZSBtdXN0IGJlIGVtcHR5 LgorCQkgKiBJdCdzIHZhbGlkIHNpdHVhdGlvbiBmb3IgZW1wdHkgdGFibGUgbm93LgorCQkgKi8K KwkJaWYgKHN0YXRlLT5yYW5nZUJsa25vID49IHN0YXRlLT5oZWFwbmJsb2NrcykKKwkJeworCQkJ aWYgKCFCcmluVHVwbGVJc0VtcHR5UmFuZ2UodHVwKSkKKwkJCXsKKwkJCQlpbmRleF90dXBsZV9l cmVwb3J0KHN0YXRlLAorCQkJCQkJCQkJcHNwcmludGYoInRoZSByYW5nZSBpcyBiZXlvbmQgdGhl IHRhYmxlIHNpemUsICIKKwkJCQkJCQkJCQkJICJidXQgaXMgbm90IG1hcmtlZCBhcyBlbXB0eSwg dGFibGUgc2l6ZTogJXUgYmxvY2tzIiwKKwkJCQkJCQkJCQkJIHN0YXRlLT5oZWFwbmJsb2Nrcykp OworCQkJfQorCQl9CisKKwkJLyogQ2hlY2sgaW5kZXggdHVwbGUgaXRzZWxmICovCisJCWNoZWNr X2luZGV4X3R1cGxlKHN0YXRlLCB0dXAsIGxwKTsKKworCQlMb2NrQnVmZmVyKHN0YXRlLT5yZWdw YWdlYnVmLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCQlicmVhazsKKwl9Cit9CisKKy8qCisgKiBD aGVjayB0aGF0IGluZGV4IHR1cGxlIGhhcyBleHBlY3RlZCBzdHJ1Y3R1cmUuCisgKgorICogVGhp cyBmdW5jdGlvbiBmb2xsb3dzIHRoZSBsb2dpYyBwZXJmb3JtZWQgYnkgYnJpbl9kZWZvcm1fdHVw bGUoKS4KKyAqIEFmdGVyIHRoaXMgY2hlY2sgaXMgY29tcGxldGUgd2UgYXJlIHN1cmUgdGhhdCBi cmluX2RlZm9ybV90dXBsZSBjYW4gcHJvY2VzcyBpdC4KKyAqCisgKiBJbiBjYXNlIG9mIGVtcHR5 IHJhbmdlIGNoZWNrIHRoYXQgZm9yIGFsbCBhdHRyaWJ1dGVzIGFsbG51bGxzIGFyZSB0cnVlLCBo YXNudWxscyBhcmUgZmFsc2UgYW5kCisgKiB0aGVyZSBpcyBubyBkYXRhLiBBbGwgY29yZSBvcGNs YXNzZXMgZXhwZWN0IGFsbG51bGxzIGlzIHRydWUgZm9yIGVtcHR5IHJhbmdlLgorICovCitzdGF0 aWMgdm9pZAorY2hlY2tfaW5kZXhfdHVwbGUoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSwgQnJpblR1 cGxlICp0dXBsZSwgSXRlbUlkIGxwKQoreworCisJY2hhcgkgICAqdHA7CQkJCS8qIHR1cGxlIGRh dGEgKi8KKwl1aW50MTYJCW9mZjsKKwliaXRzOAkgICAqbnVsbGJpdHM7CisJVHVwbGVEZXNjCWRp c2t0ZGVzYzsKKwlpbnQJCQlzdG9yZWQ7CisJYm9vbAkJZW1wdHlfcmFuZ2UgPSBCcmluVHVwbGVJ c0VtcHR5UmFuZ2UodHVwbGUpOworCWJvb2wJCWhhc251bGxiaXRtYXAgPSBCcmluVHVwbGVIYXNO dWxscyh0dXBsZSk7CisJdWludDgJCWhvZmYgPSBCcmluVHVwbGVEYXRhT2Zmc2V0KHR1cGxlKTsK Kwl1aW50MTYJCXR1cGxlbiA9IEl0ZW1JZEdldExlbmd0aChscCk7CisKKworCS8qIENoZWNrIHRo YXQgaGVhZGVyIGxlbmd0aCBpcyBub3QgZ3JlYXRlciB0aGFuIHR1cGxlIGxlbmd0aCAqLworCWlm IChob2ZmID4gdHVwbGVuKQorCXsKKwkJaW5kZXhfdHVwbGVfZXJlcG9ydChzdGF0ZSwgcHNwcmlu dGYoImluZGV4IHR1cGxlIGhlYWRlciBsZW5ndGggJXUgaXMgZ3JlYXRlciB0aGFuIHR1cGxlIGxl biAldSIsIGhvZmYsIHR1cGxlbikpOworCX0KKworCS8qIElmIHR1cGxlIGhhcyBudWxsIGJpdG1h cCAtIGluaXRpYWxpemUgaXQgKi8KKwlpZiAoaGFzbnVsbGJpdG1hcCkKKwl7CisJCW51bGxiaXRz ID0gKGJpdHM4ICopICgoY2hhciAqKSB0dXBsZSArIFNpemVPZkJyaW5UdXBsZSk7CisJfQorCWVs c2UKKwl7CisJCW51bGxiaXRzID0gTlVMTDsKKwl9CisKKwkvKiBFbXB0eSByYW5nZSBpbmRleCB0 dXBsZSBjaGVja3MgKi8KKwlpZiAoZW1wdHlfcmFuZ2UpCisJeworCQkvKiBFbXB0eSByYW5nZSB0 dXBsZSBzaG91bGQgaGF2ZSBudWxsIGJpdG1hcCAqLworCQlpZiAoIWhhc251bGxiaXRtYXApCisJ CXsKKwkJCWluZGV4X3R1cGxlX2VyZXBvcnQoc3RhdGUsICJlbXB0eSByYW5nZSBpbmRleCB0dXBs ZSBkb2Vzbid0IGhhdmUgbnVsbCBiaXRtYXAiKTsKKwkJfQorCisJCUFzc2VydChudWxsYml0cyAh PSBOVUxMKTsKKworCQkvKiBDaGVjayBldmVyeSBhdHRyaWJ1dGUgaGFzIGFsbG51bGxzIGlzIHRy dWUgYW5kIGhhc251bGxzIGlzIGZhbHNlICovCisJCWZvciAoaW50IGF0dGluZGV4ID0gMDsgYXR0 aW5kZXggPCBzdGF0ZS0+bmF0dHM7ICsrYXR0aW5kZXgpCisJCXsKKworCQkJLyogQXR0cmlidXRl IGFsbG51bGxzIHNob3VsZCBiZSB0cnVlIGZvciBlbXB0eSByYW5nZSAqLworCQkJaWYgKGF0dF9p c251bGwoYXR0aW5kZXgsIG51bGxiaXRzKSkKKwkJCXsKKwkJCQlpbmRleF90dXBsZV9lcmVwb3J0 KHN0YXRlLAorCQkJCQkJCQkJcHNwcmludGYoImVtcHR5IHJhbmdlIGluZGV4IHR1cGxlIGF0dHJp YnV0ZSAlZCB3aXRoIGFsbG51bGxzIGlzIGZhbHNlIiwKKwkJCQkJCQkJCQkJIGF0dGluZGV4KSk7 CisJCQl9CisKKwkJCS8qIEF0dHJpYnV0ZSBoYXNudWxscyBzaG91bGQgYmUgZmFsc2UgZm9yIGVt cHR5IHJhbmdlICovCisJCQlpZiAoIWF0dF9pc251bGwoc3RhdGUtPm5hdHRzICsgYXR0aW5kZXgs IG51bGxiaXRzKSkKKwkJCXsKKwkJCQlpbmRleF90dXBsZV9lcmVwb3J0KHN0YXRlLAorCQkJCQkJ CQkJcHNwcmludGYoImVtcHR5IHJhbmdlIGluZGV4IHR1cGxlIGF0dHJpYnV0ZSAlZCB3aXRoIGhh c251bGxzIGlzIHRydWUiLAorCQkJCQkJCQkJCQkgYXR0aW5kZXgpKTsKKwkJCX0KKwkJfQorCisJ CS8qIFdlIGFyZSBkb25lIHdpdGggZW1wdHkgcmFuZ2UgdHVwbGUgKi8KKwkJcmV0dXJuOworCX0K KworCS8qCisJICogUmFuZ2UgaXMgbWFya2VkIGFzIG5vdCBlbXB0eSBzbyB3ZSBjYW4gaGF2ZSBz b21lIGRhdGEgaW4gdGhlIHR1cGxlLgorCSAqIFdhbGsgYWxsIGF0dHJpYnV0ZXMgYW5kIGNoZWNr cyB0aGF0IGFsbCBzdG9yZWQgdmFsdWVzIGZpdCBpbnRvIHRoZQorCSAqIHR1cGxlCisJICovCisK Kwl0cCA9IChjaGFyICopIHR1cGxlICsgQnJpblR1cGxlRGF0YU9mZnNldCh0dXBsZSk7CisJc3Rv cmVkID0gMDsKKwlvZmYgPSAwOworCisJZGlza3RkZXNjID0gYnJpbl90dXBsZV90dXBkZXNjKHN0 YXRlLT5iZGVzYyk7CisKKwlmb3IgKGludCBhdHRpbmRleCA9IDA7IGF0dGluZGV4IDwgc3RhdGUt Pm5hdHRzOyArK2F0dGluZGV4KQorCXsKKwkJQnJpbk9wY0luZm8gKm9wY2xhc3MgPSBzdGF0ZS0+ YmRlc2MtPmJkX2luZm9bYXR0aW5kZXhdOworCisJCS8qCisJCSAqIGlmIGFsbG51bGxzIGlzIHNl dCB3ZSBoYXZlIG5vIGRhdGEgZm9yIHRoaXMgYXR0cmlidXRlLCBtb3ZlIHRvIHRoZQorCQkgKiBu ZXh0CisJCSAqLworCQlpZiAoaGFzbnVsbGJpdG1hcCAmJiAhYXR0X2lzbnVsbChhdHRpbmRleCwg bnVsbGJpdHMpKQorCQl7CisJCQlzdG9yZWQgKz0gb3BjbGFzcy0+b2lfbnN0b3JlZDsKKwkJCWNv bnRpbnVlOworCQl9CisKKwkJLyogV2FsayBhbGwgc3RvcmVkIHZhbHVlcyBmb3IgdGhlIGN1cnJl bnQgYXR0cmlidXRlICovCisJCWZvciAoaW50IGRhdHVtbm8gPSAwOyBkYXR1bW5vIDwgb3BjbGFz cy0+b2lfbnN0b3JlZDsgZGF0dW1ubysrKQorCQl7CisJCQlDb21wYWN0QXR0cmlidXRlICp0aGlz YXR0ID0gVHVwbGVEZXNjQ29tcGFjdEF0dHIoZGlza3RkZXNjLCBzdG9yZWQpOworCisJCQlpZiAo dGhpc2F0dC0+YXR0bGVuID09IC0xKQorCQkJeworCQkJCW9mZiA9IGF0dF9wb2ludGVyX2FsaWdu Ynkob2ZmLAorCQkJCQkJCQkJCSAgdGhpc2F0dC0+YXR0YWxpZ25ieSwKKwkJCQkJCQkJCQkgIC0x LAorCQkJCQkJCQkJCSAgdHAgKyBvZmYpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCW9mZiA9 IGF0dF9ub21pbmFsX2FsaWduYnkob2ZmLCB0aGlzYXR0LT5hdHRhbGlnbmJ5KTsKKwkJCX0KKwor CQkJLyogQ2hlY2sgdGhhdCB3ZSBhcmUgc3RpbGwgaW4gdGhlIHR1cGxlICovCisJCQlpZiAoaG9m ZiArIG9mZiA+IHR1cGxlbikKKwkJCXsKKwkJCQlpbmRleF90dXBsZV9lcmVwb3J0KHN0YXRlLAor CQkJCQkJCQkJcHNwcmludGYoImF0dHJpYnV0ZSAldSBzdG9yZWQgdmFsdWUgJXUgd2l0aCBsZW5n dGggJWQgIgorCQkJCQkJCQkJCQkgInN0YXJ0cyBhdCBvZmZzZXQgJXUgYmV5b25kIHRvdGFsIHR1 cGxlIGxlbmd0aCAldSIsCisJCQkJCQkJCQkJCSBhdHRpbmRleCwgZGF0dW1ubywgdGhpc2F0dC0+ YXR0bGVuLCBvZmYsIHR1cGxlbikpOworCQkJfQorCisJCQlvZmYgPSBhdHRfYWRkbGVuZ3RoX3Bv aW50ZXIob2ZmLCB0aGlzYXR0LT5hdHRsZW4sIHRwICsgb2ZmKTsKKworCQkJLyogQ2hlY2sgdGhh dCB3ZSBhcmUgc3RpbGwgaW4gdGhlIHR1cGxlICovCisJCQlpZiAoaG9mZiArIG9mZiA+IHR1cGxl bikKKwkJCXsKKwkJCQlpbmRleF90dXBsZV9lcmVwb3J0KHN0YXRlLAorCQkJCQkJCQkJcHNwcmlu dGYoImF0dHJpYnV0ZSAldSBzdG9yZWQgdmFsdWUgJXUgd2l0aCBsZW5ndGggJWQgIgorCQkJCQkJ CQkJCQkgImVuZHMgYXQgb2Zmc2V0ICV1IGJleW9uZCB0b3RhbCB0dXBsZSBsZW5ndGggJXUiLAor CQkJCQkJCQkJCQkgYXR0aW5kZXgsIGRhdHVtbm8sIHRoaXNhdHQtPmF0dGxlbiwgb2ZmLCB0dXBs ZW4pKTsKKwkJCX0KKwkJCXN0b3JlZCsrOworCQl9CisKKwl9CisKK30KKworLyoKKyAqIENoZWNr IGFsbCBwYWdlcyB3aXRoaW4gdGhlIHJhbmdlIFtsYXN0UmV2bWFwUGFnZSArIDEsIGluZGV4bmJs b2Nrc10gYXJlIHJlZ3VsYXIgcGFnZXMgb3IgbmV3CisgKiBhbmQgdGhlcmUgaXMgYSBwb2ludGVy IGluIHJldm1hcCB0byBlYWNoIE5PUk1BTCBpbmRleCB0dXBsZS4KKyAqLworc3RhdGljIHZvaWQK K2NoZWNrX3JlZ3VsYXJfcGFnZXMoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSkKK3sKKwlSZWFkU3Ry ZWFtICpzdHJlYW07CisJaW50CQkJc3RyZWFtX2ZsYWdzOworCVJlYWRTdHJlYW1CbG9ja051bWJl ckNCIHN0cmVhbV9jYjsKKwlCbG9ja1JhbmdlUmVhZFN0cmVhbVByaXZhdGUgc3RyZWFtX2RhdGE7 CisKKwlpZiAoIXN0YXRlLT5yZWd1bGFyX3BhZ2VzX2NoZWNrKQorCXsKKwkJcmV0dXJuOworCX0K KworCS8qIHJlc2V0IHN0YXRlICovCisJc3RhdGUtPnJldm1hcEJsayA9IEludmFsaWRCbG9ja051 bWJlcjsKKwlzdGF0ZS0+cmV2bWFwYnVmID0gSW52YWxpZEJ1ZmZlcjsKKwlzdGF0ZS0+cmV2bWFw aWR4ID0gLTE7CisJc3RhdGUtPnJlZ3BhZ2VCbGsgPSBJbnZhbGlkQmxvY2tOdW1iZXI7CisJc3Rh dGUtPnJlZ3BhZ2VidWYgPSBJbnZhbGlkQnVmZmVyOworCXN0YXRlLT5yZWdwYWdlb2Zmc2V0ID0g SW52YWxpZE9mZnNldE51bWJlcjsKKwlzdGF0ZS0+aWR4bmJsb2NrcyA9IFJlbGF0aW9uR2V0TnVt YmVyT2ZCbG9ja3Moc3RhdGUtPmlkeHJlbCk7CisKKworCS8qCisJICogUHJlcGFyZSBzdHJlYW0g ZGF0YSBmb3IgcmVndWxhciBwYWdlcyB3YWxrLiBJdCBpcyBzYWZlIHRvIHVzZSBiYXRjaG1vZGUK KwkgKiBhcyBibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiB0YWtlcyBubyBsb2Nrcy4KKwkgKi8K KwlzdHJlYW1fZmxhZ3MgPSBSRUFEX1NUUkVBTV9TRVFVRU5USUFMIHwgUkVBRF9TVFJFQU1fVVNF X0JBVENISU5HIHwgUkVBRF9TVFJFQU1fRlVMTDsKKwkvKiBGaXJzdCByZWd1bGFyIHBhZ2UgaXMg cmlnaHQgYWZ0ZXIgdGhlIGxhc3QgcmV2bWFwIHBhZ2UgKi8KKwlzdHJlYW1fZGF0YS5jdXJyZW50 X2Jsb2NrbnVtID0gc3RhdGUtPmxhc3RSZXZtYXBQYWdlICsgMTsKKwlzdHJlYW1fZGF0YS5sYXN0 X2V4Y2x1c2l2ZSA9IHN0YXRlLT5pZHhuYmxvY2tzOworCisJc3RyZWFtX2NiID0gYmxvY2tfcmFu Z2VfcmVhZF9zdHJlYW1fY2I7CisJc3RyZWFtID0gcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24o c3RyZWFtX2ZsYWdzLAorCQkJCQkJCQkJCUdldEFjY2Vzc1N0cmF0ZWd5KEJBU19CVUxLUkVBRCks CisJCQkJCQkJCQkJc3RhdGUtPmlkeHJlbCwKKwkJCQkJCQkJCQlNQUlOX0ZPUktOVU0sCisJCQkJ CQkJCQkJc3RyZWFtX2NiLAorCQkJCQkJCQkJCSZzdHJlYW1fZGF0YSwKKwkJCQkJCQkJCQkwKTsK KworCXdoaWxlICgoc3RhdGUtPnJlZ3BhZ2VidWYgPSByZWFkX3N0cmVhbV9uZXh0X2J1ZmZlcihz dHJlYW0sIE5VTEwpKSAhPSBJbnZhbGlkQnVmZmVyKQorCXsKKwkJT2Zmc2V0TnVtYmVyIG1heG9m ZjsKKworCQlzdGF0ZS0+cmVncGFnZUJsayA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHN0YXRlLT5y ZWdwYWdlYnVmKTsKKwkJTG9ja0J1ZmZlcihzdGF0ZS0+cmVncGFnZWJ1ZiwgQlVGRkVSX0xPQ0tf U0hBUkUpOworCQlzdGF0ZS0+cmVncGFnZSA9IEJ1ZmZlckdldFBhZ2Uoc3RhdGUtPnJlZ3BhZ2Vi dWYpOworCisJCS8qIFNraXAgbmV3IHBhZ2VzICovCisJCWlmIChQYWdlSXNOZXcoc3RhdGUtPnJl Z3BhZ2UpKQorCQl7CisJCQlVbmxvY2tSZWxlYXNlQnVmZmVyKHN0YXRlLT5yZWdwYWdlYnVmKTsK KwkJCWNvbnRpbnVlOworCQl9CisKKwkJaWYgKCFCUklOX0lTX1JFR1VMQVJfUEFHRShzdGF0ZS0+ cmVncGFnZSkpCisJCXsKKwkJCWJyaW5fY2hlY2tfZXJlcG9ydChzdGF0ZSwgcHNwcmludGYoImV4 cGVjdGVkIG5ldyBvciByZWd1bGFyIHBhZ2UgYXQgYmxvY2sgJXUiLCBzdGF0ZS0+cmVncGFnZUJs aykpOworCQl9CisKKwkJLyogQ2hlY2sgdGhhdCBhbGwgTk9STUFMIGluZGV4IHR1cGxlcyB3aXRo aW4gdGhlIHBhZ2UgYXJlIG5vdCBvcnBoYW5zICovCisJCW1heG9mZiA9IFBhZ2VHZXRNYXhPZmZz ZXROdW1iZXIoc3RhdGUtPnJlZ3BhZ2UpOworCQlmb3IgKHN0YXRlLT5yZWdwYWdlb2Zmc2V0ID0g Rmlyc3RPZmZzZXROdW1iZXI7IHN0YXRlLT5yZWdwYWdlb2Zmc2V0IDw9IG1heG9mZjsgc3RhdGUt PnJlZ3BhZ2VvZmZzZXQrKykKKwkJeworCQkJSXRlbUlkCQlscDsKKwkJCUJyaW5UdXBsZSAgKnR1 cDsKKwkJCUJsb2NrTnVtYmVyIHJldm1hcEJsazsKKworCQkJbHAgPSBQYWdlR2V0SXRlbUlkQ2Fy ZWZ1bChzdGF0ZSk7CisKKwkJCWlmIChJdGVtSWRJc1VzZWQobHApKQorCQkJeworCQkJCXR1cCA9 IChCcmluVHVwbGUgKikgUGFnZUdldEl0ZW0oc3RhdGUtPnJlZ3BhZ2UsIGxwKTsKKworCQkJCS8q IEdldCByZXZtYXAgYmxvY2sgbnVtYmVyIGZvciBpbmRleCB0dXBsZSBibGtubyAqLworCQkJCXJl dm1hcEJsayA9ICgodHVwLT5idF9ibGtubyAvIHN0YXRlLT5wYWdlc1BlclJhbmdlKSAvIFJFVk1B UF9QQUdFX01BWElURU1TKSArIDE7CisJCQkJaWYgKHJldm1hcEJsayA+IHN0YXRlLT5sYXN0UmV2 bWFwUGFnZSkKKwkJCQl7CisJCQkJCWluZGV4X3R1cGxlX29ubHlfZXJlcG9ydChzdGF0ZSwgcHNw cmludGYoIm5vIHJldm1hcCBwYWdlIGZvciB0aGUgaW5kZXggdHVwbGUgd2l0aCBibGtubyAldSIs CisJCQkJCQkJCQkJCQkJCQkgdHVwLT5idF9ibGtubykpOworCQkJCX0KKworCQkJCS8qIEZldGNo IGFub3RoZXIgcmV2bWFwIHBhZ2UgaWYgbmVlZGVkICovCisJCQkJaWYgKHN0YXRlLT5yZXZtYXBC bGsgIT0gcmV2bWFwQmxrKQorCQkJCXsKKwkJCQkJaWYgKEJsb2NrTnVtYmVySXNWYWxpZChzdGF0 ZS0+cmV2bWFwQmxrKSkKKwkJCQkJeworCQkJCQkJUmVsZWFzZUJ1ZmZlcihzdGF0ZS0+cmV2bWFw YnVmKTsKKwkJCQkJfQorCQkJCQlzdGF0ZS0+cmV2bWFwQmxrID0gcmV2bWFwQmxrOworCQkJCQlz dGF0ZS0+cmV2bWFwYnVmID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHN0YXRlLT5pZHhyZWwsIE1BSU5f Rk9SS05VTSwgc3RhdGUtPnJldm1hcEJsaywgUkJNX05PUk1BTCwKKwkJCQkJCQkJCQkJCQkJICBz dGF0ZS0+Y2hlY2tzdHJhdGVneSk7CisJCQkJfQorCisJCQkJc3RhdGUtPnJldm1hcGlkeCA9ICh0 dXAtPmJ0X2Jsa25vIC8gc3RhdGUtPnBhZ2VzUGVyUmFuZ2UpICUgUkVWTUFQX1BBR0VfTUFYSVRF TVM7CisJCQkJc3RhdGUtPnJhbmdlQmxrbm8gPSB0dXAtPmJ0X2Jsa25vOworCisJCQkJLyogY2hl Y2sgdGhhdCByZXZtYXAgaXRlbSBwb2ludHMgdG8gaW5kZXggdHVwbGUgKi8KKwkJCQlpZiAoIXJl dm1hcF9wb2ludHNfdG9faW5kZXhfdHVwbGUoc3RhdGUpKQorCQkJCXsKKwkJCQkJaW5kZXhfdHVw bGVfZXJlcG9ydChzdGF0ZSwgcHNwcmludGYoInJldm1hcCBkb2Vzbid0IHBvaW50IHRvIGluZGV4 IHR1cGxlIikpOworCQkJCX0KKworCQkJfQorCQl9CisKKwkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihz dGF0ZS0+cmVncGFnZWJ1Zik7CisJfQorCisJcmVhZF9zdHJlYW1fZW5kKHN0cmVhbSk7CisKKwlp ZiAoc3RhdGUtPnJldm1hcGJ1ZiAhPSBJbnZhbGlkQnVmZmVyKQorCXsKKwkJUmVsZWFzZUJ1ZmZl cihzdGF0ZS0+cmV2bWFwYnVmKTsKKwl9Cit9CisKKy8qCisgKiBDaGVjayBpZiB0aGUgcmV2bWFw IGl0ZW0gcG9pbnRzIHRvIHRoZSBpbmRleCB0dXBsZSAocmVncGFnZUJsaywgcmVncGFnZW9mZnNl dCkuCisgKiBXZSBoYXZlIGxvY2tlZCByZWcgcGFnZSwgYW5kIGxvY2sgcmV2bWFwIHBhZ2UgaGVy ZS4KKyAqIEl0J3MgYSB2YWxpZCBsb2NrIG9yZGVyaW5nLCBzbyBubyBkZWFkbG9jayBpcyBwb3Nz aWJsZS4KKyAqLworc3RhdGljIGJvb2wKK3Jldm1hcF9wb2ludHNfdG9faW5kZXhfdHVwbGUoQnJp bkNoZWNrU3RhdGUgKiBzdGF0ZSkKK3sKKwlJdGVtUG9pbnRlckRhdGEgKnJldm1hcHRpZHM7CisJ UmV2bWFwQ29udGVudHMgKmNvbnRlbnRzOworCUl0ZW1Qb2ludGVyRGF0YSAqdGlkOworCWJvb2wJ CXBvaW50czsKKworCUxvY2tCdWZmZXIoc3RhdGUtPnJldm1hcGJ1ZiwgQlVGRkVSX0xPQ0tfU0hB UkUpOworCWNvbnRlbnRzID0gKFJldm1hcENvbnRlbnRzICopIFBhZ2VHZXRDb250ZW50cyhCdWZm ZXJHZXRQYWdlKHN0YXRlLT5yZXZtYXBidWYpKTsKKwlyZXZtYXB0aWRzID0gY29udGVudHMtPnJt X3RpZHM7CisJdGlkID0gcmV2bWFwdGlkcyArIHN0YXRlLT5yZXZtYXBpZHg7CisKKwlwb2ludHMg PSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyTm9DaGVjayh0aWQpID09IHN0YXRlLT5yZWdwYWdl QmxrICYmCisJCUl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyTm9DaGVjayh0aWQpID09IHN0YXRl LT5yZWdwYWdlb2Zmc2V0OworCisJTG9ja0J1ZmZlcihzdGF0ZS0+cmV2bWFwYnVmLCBCVUZGRVJf TE9DS19VTkxPQ0spOworCXJldHVybiBwb2ludHM7Cit9CisKKy8qCisgKiBQYWdlR2V0SXRlbUlk KCkgd3JhcHBlciB0aGF0IHZhbGlkYXRlcyByZXR1cm5lZCBsaW5lIHBvaW50ZXIuCisgKgorICog aXRlbUlkIGluIGJyaW4gaW5kZXggY291bGQgYmUgVU5VU0VEIG9yIE5PUk1BTC4KKyAqLworc3Rh dGljIEl0ZW1JZAorUGFnZUdldEl0ZW1JZENhcmVmdWwoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSkK K3sKKwlQYWdlCQlwYWdlID0gc3RhdGUtPnJlZ3BhZ2U7CisJT2Zmc2V0TnVtYmVyIG9mZnNldCA9 IHN0YXRlLT5yZWdwYWdlb2Zmc2V0OworCUl0ZW1JZAkJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChw YWdlLCBvZmZzZXQpOworCisJaWYgKEl0ZW1JZEdldE9mZnNldChpdGVtaWQpICsgSXRlbUlkR2V0 TGVuZ3RoKGl0ZW1pZCkgPgorCQlCTENLU1ogLSBNQVhBTElHTihzaXplb2YoQnJpblNwZWNpYWxT cGFjZSkpKQorCQlpbmRleF90dXBsZV9lcmVwb3J0KHN0YXRlLAorCQkJCQkJCXBzcHJpbnRmKCJs aW5lIHBvaW50ZXIgcG9pbnRzIHBhc3QgZW5kIG9mIHR1cGxlIHNwYWNlIGluIGluZGV4LiAiCisJ CQkJCQkJCQkgImxwX29mZj0ldSwgbHBfbGVuPSV1IGxwX2ZsYWdzPSV1IiwKKwkJCQkJCQkJCSBJ dGVtSWRHZXRPZmZzZXQoaXRlbWlkKSwKKwkJCQkJCQkJCSBJdGVtSWRHZXRMZW5ndGgoaXRlbWlk KSwKKwkJCQkJCQkJCSBJdGVtSWRHZXRGbGFncyhpdGVtaWQpCisJCQkJCQkJCQkgKQorCQkJKTsK KworCS8qIFZlcmlmeSB0aGF0IGxpbmUgcG9pbnRlciBpcyBMUF9OT1JNQUwgb3IgTFBfVU5VU0VE ICovCisJaWYgKCEoKEl0ZW1JZElzTm9ybWFsKGl0ZW1pZCkgJiYgSXRlbUlkSGFzU3RvcmFnZShp dGVtaWQpKSB8fAorCQkgICghSXRlbUlkSXNVc2VkKGl0ZW1pZCkgJiYgIUl0ZW1JZEhhc1N0b3Jh Z2UoaXRlbWlkKSkpKQorCXsKKwkJaW5kZXhfdHVwbGVfZXJlcG9ydChzdGF0ZSwKKwkJCQkJCQlw c3ByaW50ZigiaW52YWxpZCBsaW5lIHBvaW50ZXIgc3RvcmFnZSBpbiBpbmRleC4gIgorCQkJCQkJ CQkJICJscF9vZmY9JXUsIGxwX2xlbj0ldSBscF9mbGFncz0ldSIsCisJCQkJCQkJCQkgSXRlbUlk R2V0T2Zmc2V0KGl0ZW1pZCksCisJCQkJCQkJCQkgSXRlbUlkR2V0TGVuZ3RoKGl0ZW1pZCksCisJ CQkJCQkJCQkgSXRlbUlkR2V0RmxhZ3MoaXRlbWlkKQorCQkJCQkJCQkJICkpOworCX0KKworCXJl dHVybiBpdGVtaWQ7Cit9CisKKworLyogUmVwb3J0IHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgaW5m byAqLworc3RhdGljIHZvaWQKK2JyaW5fY2hlY2tfZXJlcG9ydChCcmluQ2hlY2tTdGF0ZSAqIHN0 YXRlLCBjb25zdCBjaGFyICpmbXQpCit7CisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVS UkNPREVfSU5ERVhfQ09SUlVQVEVEKSwKKwkJCSBlcnJtc2coIkluZGV4ICVzIGlzIGNvcnJ1cHRl ZCAtICVzIiwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoc3RhdGUtPmlkeHJlbCksIGZtdCkpKTsK K30KKworLyogUmVwb3J0IHdpdGggcmFuZ2UgYmxrbm8sIHJldm1hcCBpdGVtIGluZm8sIGluZGV4 IHR1cGxlIGluZm8gKi8KK3ZvaWQKK2luZGV4X3R1cGxlX2VyZXBvcnQoQnJpbkNoZWNrU3RhdGUg KiBzdGF0ZSwgY29uc3QgY2hhciAqZm10KQoreworCUFzc2VydChzdGF0ZS0+cmFuZ2VCbGtubyAh PSBJbnZhbGlkQmxvY2tOdW1iZXIpOworCUFzc2VydChzdGF0ZS0+cmV2bWFwQmxrICE9IEludmFs aWRCbG9ja051bWJlcik7CisJQXNzZXJ0KHN0YXRlLT5yZXZtYXBpZHggPj0gMCAmJiBzdGF0ZS0+ cmV2bWFwaWR4IDwgUkVWTUFQX1BBR0VfTUFYSVRFTVMpOworCUFzc2VydChzdGF0ZS0+cmVncGFn ZUJsayAhPSBJbnZhbGlkQmxvY2tOdW1iZXIpOworCUFzc2VydChzdGF0ZS0+cmVncGFnZW9mZnNl dCAhPSBJbnZhbGlkT2Zmc2V0TnVtYmVyKTsKKworCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29k ZShFUlJDT0RFX0lOREVYX0NPUlJVUFRFRCksCisJCQkgZXJybXNnKCJJbmRleCAlcyBpcyBjb3Jy dXB0ZWQgLSAlcy4gUmFuZ2UgYmxrbm86ICV1LCByZXZtYXAgaXRlbTogKCV1LCV1KSwgaW5kZXgg dHVwbGU6ICgldSwldSkiLAorCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShzdGF0ZS0+aWR4 cmVsKSwKKwkJCQkJZm10LAorCQkJCQlzdGF0ZS0+cmFuZ2VCbGtubywKKwkJCQkJc3RhdGUtPnJl dm1hcEJsaywKKwkJCQkJc3RhdGUtPnJldm1hcGlkeCwKKwkJCQkJc3RhdGUtPnJlZ3BhZ2VCbGss CisJCQkJCXN0YXRlLT5yZWdwYWdlb2Zmc2V0KSkpOworfQorCisvKiBSZXBvcnQgd2l0aCBpbmRl eCB0dXBsZSBpbmZvICovCit2b2lkCitpbmRleF90dXBsZV9vbmx5X2VyZXBvcnQoQnJpbkNoZWNr U3RhdGUgKiBzdGF0ZSwgY29uc3QgY2hhciAqZm10KQoreworCUFzc2VydChzdGF0ZS0+cmVncGFn ZUJsayAhPSBJbnZhbGlkQmxvY2tOdW1iZXIpOworCUFzc2VydChzdGF0ZS0+cmVncGFnZW9mZnNl dCAhPSBJbnZhbGlkT2Zmc2V0TnVtYmVyKTsKKworCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29k ZShFUlJDT0RFX0lOREVYX0NPUlJVUFRFRCksCisJCQkgZXJybXNnKCJJbmRleCAlcyBpcyBjb3Jy dXB0ZWQgLSAlcy4gSW5kZXggdHVwbGU6ICgldSwldSkiLAorCQkJCQlSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShzdGF0ZS0+aWR4cmVsKSwKKwkJCQkJZm10LAorCQkJCQlzdGF0ZS0+cmVncGFnZUJs aywKKwkJCQkJc3RhdGUtPnJlZ3BhZ2VvZmZzZXQpKSk7Cit9CisKKy8qIFJlcG9ydCB3aXRoIHJh bmdlIGJsa25vLCByZXZtYXAgaXRlbSBpbmZvICovCit2b2lkCityZXZtYXBfaXRlbV9lcmVwb3J0 KEJyaW5DaGVja1N0YXRlICogc3RhdGUsIGNvbnN0IGNoYXIgKmZtdCkKK3sKKwlBc3NlcnQoc3Rh dGUtPnJhbmdlQmxrbm8gIT0gSW52YWxpZEJsb2NrTnVtYmVyKTsKKwlBc3NlcnQoc3RhdGUtPnJl dm1hcEJsayAhPSBJbnZhbGlkQmxvY2tOdW1iZXIpOworCUFzc2VydChzdGF0ZS0+cmV2bWFwaWR4 ID49IDAgJiYgc3RhdGUtPnJldm1hcGlkeCA8IFJFVk1BUF9QQUdFX01BWElURU1TKTsKKworCWVy ZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX0lOREVYX0NPUlJVUFRFRCksCisJCQkg ZXJybXNnKCJJbmRleCAlcyBpcyBjb3JydXB0ZWQgLSAlcy4gUmFuZ2UgYmxrbm86ICV1LCByZXZt YXAgaXRlbTogKCV1LCV1KS4iLAorCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShzdGF0ZS0+ aWR4cmVsKSwKKwkJCQkJZm10LAorCQkJCQlzdGF0ZS0+cmFuZ2VCbGtubywKKwkJCQkJc3RhdGUt PnJldm1hcEJsaywKKwkJCQkJc3RhdGUtPnJldm1hcGlkeCkpKTsKK30KLS0gCjIuNDMuMAoK --0000000000005f4b02063954d601 Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0003-Adds-new-BRIN-support-function-withinRange.patch" Content-Disposition: attachment; filename="v7-0003-Adds-new-BRIN-support-function-withinRange.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcszh3x32 RnJvbSAzYTk5OTNhZDQxOTgxMTg3YWRhYjJhOGVmNjQ3MWNhNDIyZjRhZmYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBcnNlbml5IE11a2hpbiA8YXJzZW5peS5tdWtoaW4uZGV2QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCA1IEp1bCAyMDI1IDIzOjEwOjU1ICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2NyAzLzRdIEFkZHMgbmV3IEJSSU4gc3VwcG9ydCBmdW5jdGlvbiAnd2l0aGluUmFuZ2Un CgpUaGVyZSBpcyBubyBzdHJhaWdodGZvcndhcmQgd2F5IHRvIHNheSBpZiBzb21lIGluZGV4ZWQg dmFsdWUgaXMgY292ZXJlZApieSB0aGUgcmFuZ2UgdmFsdWUgb3Igbm90LiBUaGUgbmV3IHN1cHBv cnQgZnVuY3Rpb24gcHJvdmlkZXMgc3VjaCBhCmZ1bmN0aW9uYWxpdHkuIENvbW1pdCBhZGRzIGlt cGxlbWVudGF0aW9ucyBmb3IgYWxsIGNvcmUgQlJJTgpvcGNsYXNzZXM6IG1pbm1heCwgbWlubWF4 X211bHRpLCBibG9vbSwgaW5jbHVzaW9uLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW5fYmxvb20uYyAgICAgICAgfCAgNDQgKysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJp bl9pbmNsdXNpb24uYyAgICB8ICA2OCArKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW5fbWlubWF4LmMgICAgICAgfCAgNTcgKysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluX21pbm1heF9tdWx0aS5jIHwgMTM2ICsrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L2JyaW4vYnJpbl92YWxpZGF0ZS5jICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvYnJp bl9pbnRlcm5hbC5oICAgICAgICAgIHwgIDEzICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Ft cHJvYy5kYXQgICAgICAgICAgIHwgMjE2ICsrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgIHwgIDE2ICsrCiA4IGZpbGVzIGNoYW5n ZWQsIDUxMCBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX2Jsb29tLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluX2Jsb29tLmMKaW5kZXggODJiNDI1Y2UzN2QuLjRmYTVlMzlmMGFjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX2Jsb29tLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2JyaW4vYnJpbl9ibG9vbS5jCkBAIC01ODQsNiArNTg0LDUwIEBAIGJyaW5fYmxvb21f YWRkX3ZhbHVlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX0JPT0wodXBkYXRlZCk7CiB9 CiAKKworLyoKKyAqIElmIHRoZSBwYXNzZWQgdmFsdWUgaXMgb3V0c2lkZSB0aGUgbWlubWF4X211 bHRpIHJhbmdlIHJldHVybiBmYWxzZS4KKyAqIE90aGVyd2lzZSwgcmV0dXJuIHRydWUuCisgKi8K K0RhdHVtCiticmluX2Jsb29tX3dpdGhpbl9yYW5nZShQR19GVU5DVElPTl9BUkdTKQoreworCUJy aW5EZXNjICAgKmJkZXNjID0gKEJyaW5EZXNjICopIFBHX0dFVEFSR19QT0lOVEVSKDApOworCUJy aW5WYWx1ZXMgKmNvbHVtbiA9IChCcmluVmFsdWVzICopIFBHX0dFVEFSR19QT0lOVEVSKDEpOwor CURhdHVtCQl2YWwgPSBQR19HRVRBUkdfREFUVU0oMik7CisJYm9vbAkJaXNudWxsIFBHX1VTRURf Rk9SX0FTU0VSVFNfT05MWSA9IFBHX0dFVEFSR19EQVRVTSgzKTsKKwlPaWQJCQljb2xsb2lkID0g UEdfR0VUX0NPTExBVElPTigpOworCUZtZ3JJbmZvICAgKmhhc2hGbjsKKwl1aW50MzIJCWhhc2hW YWx1ZTsKKwlib29sCQljb250YWluczsKKwlBdHRyTnVtYmVyCWF0dG5vOworCUJsb29tRmlsdGVy ICpmaWx0ZXI7CisKKwlBc3NlcnQoIWlzbnVsbCk7CisKKwlhdHRubyA9IGNvbHVtbi0+YnZfYXR0 bm87CisKKwkvKiBUaGUgcmFuZ2UgaXMgZW1wdHksIHJldHVybiBmYWxzZSAqLworCWlmIChjb2x1 bW4tPmJ2X2FsbG51bGxzKQorCXsKKwkJUEdfUkVUVVJOX0JPT0woZmFsc2UpOworCX0KKworCWZp bHRlciA9IChCbG9vbUZpbHRlciAqKSBQR19ERVRPQVNUX0RBVFVNKGNvbHVtbi0+YnZfdmFsdWVz WzBdKTsKKworCS8qCisJICogQ29tcHV0ZSB0aGUgaGFzaCBvZiB0aGUgbmV3IHZhbHVlLCB1c2lu ZyB0aGUgc3VwcGxpZWQgaGFzaCBmdW5jdGlvbiwKKwkgKiBhbmQgdGhlbiBjaGVjayBpZiBibG9v bSBmaWx0ZXIgY29udGFpbnMgdGhlIHZhbHVlLgorCSAqLworCWhhc2hGbiA9IGJsb29tX2dldF9w cm9jaW5mbyhiZGVzYywgYXR0bm8sIFBST0NOVU1fSEFTSCk7CisKKwloYXNoVmFsdWUgPSBEYXR1 bUdldFVJbnQzMihGdW5jdGlvbkNhbGwxQ29sbChoYXNoRm4sIGNvbGxvaWQsIHZhbCkpOworCisJ Y29udGFpbnMgPSBibG9vbV9jb250YWluc192YWx1ZShmaWx0ZXIsIGhhc2hWYWx1ZSk7CisKKwlQ R19SRVRVUk5fQk9PTChjb250YWlucyk7Cit9CisKIC8qCiAgKiBHaXZlbiBhbiBpbmRleCB0dXBs ZSBjb3JyZXNwb25kaW5nIHRvIGEgY2VydGFpbiBwYWdlIHJhbmdlIGFuZCBhIHNjYW4ga2V5LAog ICogcmV0dXJuIHdoZXRoZXIgdGhlIHNjYW4ga2V5IGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgaW5k ZXggdHVwbGUncyBibG9vbQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJp bl9pbmNsdXNpb24uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5faW5jbHVzaW9uLmMK aW5kZXggYjg2Y2E1NzQ0YTMuLjBiNjlkYTNkZTkxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvYnJpbi9icmluX2luY2x1c2lvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmlu L2JyaW5faW5jbHVzaW9uLmMKQEAgLTIzNyw2ICsyMzcsNzQgQEAgYnJpbl9pbmNsdXNpb25fYWRk X3ZhbHVlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX0JPT0wodHJ1ZSk7CiB9CiAKKy8q CisgKiBJZiB0aGUgcGFzc2VkIHZhbHVlIGlzIG91dHNpZGUgdGhlIGluY2x1c2lvbiByYW5nZSBy ZXR1cm4gZmFsc2UuCisgKiBPdGhlcndpc2UsIHJldHVybiB0cnVlLgorICovCitEYXR1bQorYnJp bl9pbmNsdXNpb25fd2l0aGluX3JhbmdlKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJQnJpbkRlc2Mg ICAqYmRlc2MgPSAoQnJpbkRlc2MgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisJQnJpblZhbHVl cyAqY29sdW1uID0gKEJyaW5WYWx1ZXMgKikgUEdfR0VUQVJHX1BPSU5URVIoMSk7CisJRGF0dW0J CW5ld3ZhbCA9IFBHX0dFVEFSR19EQVRVTSgyKTsKKwlib29sCQlpc251bGwgUEdfVVNFRF9GT1Jf QVNTRVJUU19PTkxZID0gUEdfR0VUQVJHX0JPT0woMyk7CisJT2lkCQkJY29sbG9pZCA9IFBHX0dF VF9DT0xMQVRJT04oKTsKKwlGbWdySW5mbyAgICpmaW5mbzsKKwlib29sCQl3aXRoaW5fcmFuZ2U7 CisJQXR0ck51bWJlcglhdHRubzsKKworCUFzc2VydCghaXNudWxsKTsKKworCWF0dG5vID0gY29s dW1uLT5idl9hdHRubzsKKworCS8qIFRoZSByYW5nZSBpcyBlbXB0eSwgcmV0dXJuIGZhbHNlICov CisJaWYgKGNvbHVtbi0+YnZfYWxsbnVsbHMpCisJeworCQlQR19SRVRVUk5fQk9PTChmYWxzZSk7 CisJfQorCisJLyoKKwkgKiBDb25zaXN0ZW50IGZ1bmN0aW9uIHJldHVybnMgVFJVRSBmb3IgYW55 IHZhbHVlIGlmIHRoZSByYW5nZSBjb250YWlucworCSAqIHVubWVyZ2VhYmxlIHZhbHVlcy4gV2Ug Zm9sbG93IHRoZSBzYW1lIGxvZ2ljIGhlcmUuCisJICovCisJaWYgKERhdHVtR2V0Qm9vbChjb2x1 bW4tPmJ2X3ZhbHVlc1tJTkNMVVNJT05fVU5NRVJHRUFCTEVdKSkKKwkJUEdfUkVUVVJOX0JPT0wo dHJ1ZSk7CisKKwkvKgorCSAqIElmIHRoZSBvcGNsYXNzIHN1cHBvcnRzIHRoZSBjb25jZXB0IG9m IGVtcHR5IHZhbHVlcywgdGVzdCB0aGUgcGFzc2VkCisJICogdmFsdWUgZm9yIGVtcHRpbmVzcwor CSAqLworCWZpbmZvID0gaW5jbHVzaW9uX2dldF9wcm9jaW5mbyhiZGVzYywgYXR0bm8sIFBST0NO VU1fRU1QVFksIHRydWUpOworCWlmIChmaW5mbyAhPSBOVUxMICYmIERhdHVtR2V0Qm9vbChGdW5j dGlvbkNhbGwxQ29sbChmaW5mbywgY29sbG9pZCwgbmV3dmFsKSkpCisJeworCQkvKiBWYWx1ZSBp cyBlbXB0eSBidXQgdGhlIHJhbmdlIGRvZXNuJ3QgY29udGFpbiBlbXB0eSBlbGVtZW50ICovCisJ CWlmICghRGF0dW1HZXRCb29sKGNvbHVtbi0+YnZfdmFsdWVzW0lOQ0xVU0lPTl9DT05UQUlOU19F TVBUWV0pKQorCQl7CisJCQlQR19SRVRVUk5fQk9PTChmYWxzZSk7CisJCX0KKworCQkvKiBWYWx1 ZSBpcyBlbXB0eSBhbmQgdGhlIHJhbmdlIGNvbnRhaW5zIGVtcHR5IGVsZW1lbnQgKi8KKwkJUEdf UkVUVVJOX0JPT0wodHJ1ZSk7CisJfQorCisJLyogVXNlIGNvbnRhaW5zIGZ1bmN0aW9uIHRvIGNo ZWNrIGlmIHRoZSByYW5nZSBjb250YWlucyB0aGUgdmFsdWUgKi8KKwlmaW5mbyA9IGluY2x1c2lv bl9nZXRfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBQUk9DTlVNX0NPTlRBSU5TLCB0cnVlKTsKKwor CS8qIENvbnRhaW5zIGZ1bmN0aW9uIGlzIG9wdGlvbmFsLCBidXQgdGhpcyBpbXBsZW1lbnRhdGlv biBuZWVkcyBpdCAqLworCWlmIChmaW5mbyA9PSBOVUxMKQorCXsKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9GVU5DVElPTiksCisJCQkJIGVycm1zZygi VGhlIG9wZXJhdG9yIGNsYXNzIGlzIG1pc3Npbmcgc3VwcG9ydCBmdW5jdGlvbiAlZCBmb3IgY29s dW1uICVkLiIsCisJCQkJCQlQUk9DTlVNX0NPTlRBSU5TLCBhdHRubykpKTsKKwl9CisKKwl3aXRo aW5fcmFuZ2UgPSBEYXR1bUdldEJvb2woRnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGxvaWQs CisJCQkJCQkJCQkJCQkgIGNvbHVtbi0+YnZfdmFsdWVzW0lOQ0xVU0lPTl9VTklPTl0sCisJCQkJ CQkJCQkJCQkgIG5ld3ZhbCkpOworCVBHX1JFVFVSTl9CT09MKHdpdGhpbl9yYW5nZSk7Cit9CisK IC8qCiAgKiBCUklOIGluY2x1c2lvbiBjb25zaXN0ZW50IGZ1bmN0aW9uCiAgKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9icmluL2JyaW5fbWlubWF4LmMKaW5kZXggZDIxYWIzYTY2OGMuLjM3YTVkZDEwM2RlIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMKQEAgLTEyNCw2ICsxMjQsNjMgQEAg YnJpbl9taW5tYXhfYWRkX3ZhbHVlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX0JPT0wo dXBkYXRlZCk7CiB9CiAKKy8qCisgKiBJZiB0aGUgcGFzc2VkIHZhbHVlIGlzIG91dHNpZGUgdGhl IG1pbi9tYXggcmFuZ2UgcmV0dXJuIGZhbHNlLgorICogT3RoZXJ3aXNlLCByZXR1cm4gdHJ1ZS4K KyAqLworRGF0dW0KK2JyaW5fbWlubWF4X3dpdGhpbl9yYW5nZShQR19GVU5DVElPTl9BUkdTKQor eworCUJyaW5EZXNjICAgKmJkZXNjID0gKEJyaW5EZXNjICopIFBHX0dFVEFSR19QT0lOVEVSKDAp OworCUJyaW5WYWx1ZXMgKmNvbHVtbiA9IChCcmluVmFsdWVzICopIFBHX0dFVEFSR19QT0lOVEVS KDEpOworCURhdHVtCQl2YWwgPSBQR19HRVRBUkdfREFUVU0oMik7CisJYm9vbAkJaXNudWxsIFBH X1VTRURfRk9SX0FTU0VSVFNfT05MWSA9IFBHX0dFVEFSR19EQVRVTSgzKTsKKwlPaWQJCQljb2xs b2lkID0gUEdfR0VUX0NPTExBVElPTigpOworCUZtZ3JJbmZvICAgKmNtcEZuOworCURhdHVtCQlj b21wYXI7CisJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0cjsKKwlBdHRyTnVtYmVyCWF0dG5vOworCisJ QXNzZXJ0KCFpc251bGwpOworCisJYXR0bm8gPSBjb2x1bW4tPmJ2X2F0dG5vOworCWF0dHIgPSBU dXBsZURlc2NBdHRyKGJkZXNjLT5iZF90dXBkZXNjLCBhdHRubyAtIDEpOworCisJLyogVGhlIHJh bmdlIGlzIGVtcHR5LCByZXR1cm4gZmFsc2UgKi8KKwlpZiAoY29sdW1uLT5idl9hbGxudWxscykK Kwl7CisJCVBHX1JFVFVSTl9CT09MKGZhbHNlKTsKKwl9CisKKwkvKiBDaGVjayBpZiB0aGUgdmFs dWVzIGlzIGxlc3MgdGhhbiB0aGUgcmFuZ2UgbWluaW11bS4gKi8KKworCWNtcEZuID0gbWlubWF4 X2dldF9zdHJhdGVneV9wcm9jaW5mbyhiZGVzYywgYXR0bm8sIGF0dHItPmF0dHR5cGlkLAorCQkJ CQkJCQkJCSBCVExlc3NTdHJhdGVneU51bWJlcik7CisKKwljb21wYXIgPSBGdW5jdGlvbkNhbGwy Q29sbChjbXBGbiwgY29sbG9pZCwgdmFsLCBjb2x1bW4tPmJ2X3ZhbHVlc1swXSk7CisJaWYgKERh dHVtR2V0Qm9vbChjb21wYXIpKQorCXsKKwkJUEdfUkVUVVJOX0JPT0woZmFsc2UpOworCX0KKwor CS8qIENoZWNrIGlmIHRoZSB2YWx1ZXMgaXMgZ3JlYXRlciB0aGFuIHRoZSByYW5nZSBtYXhpbXVt LiAqLworCisJY21wRm4gPSBtaW5tYXhfZ2V0X3N0cmF0ZWd5X3Byb2NpbmZvKGJkZXNjLCBhdHRu bywgYXR0ci0+YXR0dHlwaWQsCisJCQkJCQkJCQkJIEJUR3JlYXRlclN0cmF0ZWd5TnVtYmVyKTsK KworCWNvbXBhciA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGNtcEZuLCBjb2xsb2lkLCB2YWwsIGNvbHVt bi0+YnZfdmFsdWVzWzFdKTsKKwlpZiAoRGF0dW1HZXRCb29sKGNvbXBhcikpCisJeworCQlQR19S RVRVUk5fQk9PTChmYWxzZSk7CisJfQorCisJLyoKKwkgKiBUaGUgdmFsdWUgaXMgZ3JlYXRlciB0 aGFuIC8gZXF1YWxzIHRoZSBtaW5pbXVtIGFuZCBpcyBsZXNzIHRoYW4gLworCSAqIGVxdWFscyB0 aGUgbWF4aW11bSBzbyBpdCdzIHdpdGhpbiB0aGUgcmFuZ2UKKwkgKi8KKwlQR19SRVRVUk5fQk9P TCh0cnVlKTsKK30KKwogLyoKICAqIEdpdmVuIGFuIGluZGV4IHR1cGxlIGNvcnJlc3BvbmRpbmcg dG8gYSBjZXJ0YWluIHBhZ2UgcmFuZ2UgYW5kIGEgc2NhbiBrZXksCiAgKiByZXR1cm4gd2hldGhl ciB0aGUgc2NhbiBrZXkgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBpbmRleCB0dXBsZSdzIG1pbi9t YXgKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4X211bHRp LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heF9tdWx0aS5jCmluZGV4IDBk MTUwN2EyYTM2Li4yMTQxYzQ3YmM3MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2Jy aW4vYnJpbl9taW5tYXhfbXVsdGkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu X21pbm1heF9tdWx0aS5jCkBAIC0yNzAsNiArMjcwLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgY29tcGFy ZV9jb250ZXh0CiBzdGF0aWMgaW50CWNvbXBhcmVfdmFsdWVzKGNvbnN0IHZvaWQgKmEsIGNvbnN0 IHZvaWQgKmIsIHZvaWQgKmFyZyk7CiAKIAorc3RhdGljIFJhbmdlcyAqZGVzZXJpYWxpemVfcmFu Z2VfdmFsdWUoQnJpbkRlc2MgKmJkZXNjLCBCcmluVmFsdWVzICpjb2x1bW4sIE9pZCBjb2xsb2lk LCBjb25zdCBGb3JtRGF0YV9wZ19hdHRyaWJ1dGUgKmF0dHIsCisJCQkJCQkJCQkgICBBdHRyTnVt YmVyIGF0dG5vKTsKKwogI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKIC8qCiAgKiBDaGVjayB0 aGF0IHRoZSBvcmRlciBvZiB0aGUgYXJyYXkgdmFsdWVzIGlzIGNvcnJlY3QsIHVzaW5nIHRoZSBj bXAKQEAgLTI0MjEsNyArMjQyNCw2IEBAIGJyaW5fbWlubWF4X211bHRpX2FkZF92YWx1ZShQR19G VU5DVElPTl9BUkdTKQogCUZvcm1fcGdfYXR0cmlidXRlIGF0dHI7CiAJQXR0ck51bWJlcglhdHRu bzsKIAlSYW5nZXMJICAgKnJhbmdlczsKLQlTZXJpYWxpemVkUmFuZ2VzICpzZXJpYWxpemVkID0g TlVMTDsKIAogCUFzc2VydCghaXNudWxsKTsKIApAQCAtMjQ4OSw1NSArMjQ5MSwxMTkgQEAgYnJp bl9taW5tYXhfbXVsdGlfYWRkX3ZhbHVlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJfQogCWVsc2UgaWYg KCFyYW5nZXMpCiAJewotCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJcmFuZ2VzID0gZGVzZXJp YWxpemVfcmFuZ2VfdmFsdWUoYmRlc2MsIGNvbHVtbiwgY29sbG9pZCwgYXR0ciwgYXR0bm8pOwor CX0KIAotCQlpbnQJCQltYXh2YWx1ZXM7Ci0JCUJsb2NrTnVtYmVyIHBhZ2VzUGVyUmFuZ2UgPSBC cmluR2V0UGFnZXNQZXJSYW5nZShiZGVzYy0+YmRfaW5kZXgpOworCS8qCisJICogVHJ5IHRvIGFk ZCB0aGUgbmV3IHZhbHVlIHRvIHRoZSByYW5nZS4gV2UgbmVlZCB0byB1cGRhdGUgdGhlIG1vZGlm aWVkCisJICogZmxhZywgc28gdGhhdCB3ZSBzZXJpYWxpemUgdGhlIHVwZGF0ZWQgc3VtbWFyeSBs YXRlci4KKwkgKi8KKwltb2RpZmllZCB8PSByYW5nZV9hZGRfdmFsdWUoYmRlc2MsIGNvbGxvaWQs IGF0dG5vLCBhdHRyLCByYW5nZXMsIG5ld3ZhbCk7CiAKLQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKGNvbHVtbi0+YnZfY29udGV4dCk7CiAKLQkJc2VyaWFsaXplZCA9IChTZXJpYWxp emVkUmFuZ2VzICopIFBHX0RFVE9BU1RfREFUVU0oY29sdW1uLT5idl92YWx1ZXNbMF0pOworCVBH X1JFVFVSTl9CT09MKG1vZGlmaWVkKTsKK30KIAotCQkvKgotCQkgKiBEZXRlcm1pbmUgdGhlIGlu c2VydCBidWZmZXIgc2l6ZSAtIHdlIHVzZSAxMHggdGhlIHRhcmdldCwgY2FwcGVkIHRvCi0JCSAq IHRoZSBtYXhpbXVtIG51bWJlciBvZiB2YWx1ZXMgaW4gdGhlIGhlYXAgcmFuZ2UuIFRoaXMgaXMg bW9yZSB0aGFuCi0JCSAqIGVub3VnaCwgY29uc2lkZXJpbmcgdGhlIGFjdHVhbCBudW1iZXIgb2Yg cm93cyBwZXIgcGFnZSBpcyBsaWtlbHkKLQkJICogbXVjaCBsb3dlciwgYnV0IG1laC4KLQkJICov Ci0JCW1heHZhbHVlcyA9IE1pbihzZXJpYWxpemVkLT5tYXh2YWx1ZXMgKiBNSU5NQVhfQlVGRkVS X0ZBQ1RPUiwKLQkJCQkJCU1heEhlYXBUdXBsZXNQZXJQYWdlICogcGFnZXNQZXJSYW5nZSk7CiAK LQkJLyogYnV0IGFsd2F5cyBhdCBsZWFzdCB0aGUgb3JpZ2luYWwgdmFsdWUgKi8KLQkJbWF4dmFs dWVzID0gTWF4KG1heHZhbHVlcywgc2VyaWFsaXplZC0+bWF4dmFsdWVzKTsKKy8qCisgKiBEZXNl cmlhbGl6ZSByYW5nZSB2YWx1ZSBhbmQgc2F2ZSBpdCBpbiBiZGVzYy0+YnZfbWVtX3ZhbHVlIGZv ciBmdXR1cmUgdXNlCisgKi8KK1JhbmdlcyAqCitkZXNlcmlhbGl6ZV9yYW5nZV92YWx1ZShCcmlu RGVzYyAqYmRlc2MsIEJyaW5WYWx1ZXMgKmNvbHVtbiwgT2lkIGNvbGxvaWQsIGNvbnN0IEZvcm1E YXRhX3BnX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCQkJCUF0dHJOdW1iZXIgYXR0bm8pCit7CisJTWVt b3J5Q29udGV4dCBvbGRjdHg7CisJU2VyaWFsaXplZFJhbmdlcyAqc2VyaWFsaXplZCA9IE5VTEw7 CisJUmFuZ2VzCSAgICpyYW5nZXM7CiAKLQkJLyogYWx3YXlzIGNhcCBieSBNSU4vTUFYICovCi0J CW1heHZhbHVlcyA9IE1heChtYXh2YWx1ZXMsIE1JTk1BWF9CVUZGRVJfTUlOKTsKLQkJbWF4dmFs dWVzID0gTWluKG1heHZhbHVlcywgTUlOTUFYX0JVRkZFUl9NQVgpOworCWludAkJCW1heHZhbHVl czsKKwlCbG9ja051bWJlciBwYWdlc1BlclJhbmdlID0gQnJpbkdldFBhZ2VzUGVyUmFuZ2UoYmRl c2MtPmJkX2luZGV4KTsKIAotCQlyYW5nZXMgPSBicmluX3JhbmdlX2Rlc2VyaWFsaXplKG1heHZh bHVlcywgc2VyaWFsaXplZCk7CisJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGNvbHVt bi0+YnZfY29udGV4dCk7CiAKLQkJcmFuZ2VzLT5hdHRubyA9IGF0dG5vOwotCQlyYW5nZXMtPmNv bGxvaWQgPSBjb2xsb2lkOwotCQlyYW5nZXMtPnR5cGlkID0gYXR0ci0+YXR0dHlwaWQ7CisJc2Vy aWFsaXplZCA9IChTZXJpYWxpemVkUmFuZ2VzICopIFBHX0RFVE9BU1RfREFUVU0oY29sdW1uLT5i dl92YWx1ZXNbMF0pOwogCi0JCS8qIHdlJ2xsIGNlcnRhaW5seSBuZWVkIHRoZSBjb21wYXJhdG9y LCBzbyBqdXN0IGxvb2sgaXQgdXAgbm93ICovCi0JCXJhbmdlcy0+Y21wID0gbWlubWF4X211bHRp X2dldF9zdHJhdGVneV9wcm9jaW5mbyhiZGVzYywgYXR0bm8sIGF0dHItPmF0dHR5cGlkLAotCQkJ CQkJCQkJCQkJCQkgQlRMZXNzU3RyYXRlZ3lOdW1iZXIpOworCS8qCisJICogRGV0ZXJtaW5lIHRo ZSBpbnNlcnQgYnVmZmVyIHNpemUgLSB3ZSB1c2UgMTB4IHRoZSB0YXJnZXQsIGNhcHBlZCB0byB0 aGUKKwkgKiBtYXhpbXVtIG51bWJlciBvZiB2YWx1ZXMgaW4gdGhlIGhlYXAgcmFuZ2UuIFRoaXMg aXMgbW9yZSB0aGFuIGVub3VnaCwKKwkgKiBjb25zaWRlcmluZyB0aGUgYWN0dWFsIG51bWJlciBv ZiByb3dzIHBlciBwYWdlIGlzIGxpa2VseSBtdWNoIGxvd2VyLAorCSAqIGJ1dCBtZWguCisJICov CisJbWF4dmFsdWVzID0gTWluKHNlcmlhbGl6ZWQtPm1heHZhbHVlcyAqIE1JTk1BWF9CVUZGRVJf RkFDVE9SLAorCQkJCQlNYXhIZWFwVHVwbGVzUGVyUGFnZSAqIHBhZ2VzUGVyUmFuZ2UpOwogCi0J CWNvbHVtbi0+YnZfbWVtX3ZhbHVlID0gUG9pbnRlckdldERhdHVtKHJhbmdlcyk7Ci0JCWNvbHVt bi0+YnZfc2VyaWFsaXplID0gYnJpbl9taW5tYXhfbXVsdGlfc2VyaWFsaXplOworCS8qIGJ1dCBh bHdheXMgYXQgbGVhc3QgdGhlIG9yaWdpbmFsIHZhbHVlICovCisJbWF4dmFsdWVzID0gTWF4KG1h eHZhbHVlcywgc2VyaWFsaXplZC0+bWF4dmFsdWVzKTsKIAotCQlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkY3R4KTsKKwkvKiBhbHdheXMgY2FwIGJ5IE1JTi9NQVggKi8KKwltYXh2YWx1ZXMgPSBN YXgobWF4dmFsdWVzLCBNSU5NQVhfQlVGRkVSX01JTik7CisJbWF4dmFsdWVzID0gTWluKG1heHZh bHVlcywgTUlOTUFYX0JVRkZFUl9NQVgpOworCisJcmFuZ2VzID0gYnJpbl9yYW5nZV9kZXNlcmlh bGl6ZShtYXh2YWx1ZXMsIHNlcmlhbGl6ZWQpOworCisJcmFuZ2VzLT5hdHRubyA9IGF0dG5vOwor CXJhbmdlcy0+Y29sbG9pZCA9IGNvbGxvaWQ7CisJcmFuZ2VzLT50eXBpZCA9IGF0dHItPmF0dHR5 cGlkOworCisJLyogd2UnbGwgY2VydGFpbmx5IG5lZWQgdGhlIGNvbXBhcmF0b3IsIHNvIGp1c3Qg bG9vayBpdCB1cCBub3cgKi8KKwlyYW5nZXMtPmNtcCA9IG1pbm1heF9tdWx0aV9nZXRfc3RyYXRl Z3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBhdHRyLT5hdHR0eXBpZCwKKwkJCQkJCQkJCQkJCQkg QlRMZXNzU3RyYXRlZ3lOdW1iZXIpOworCisJY29sdW1uLT5idl9tZW1fdmFsdWUgPSBQb2ludGVy R2V0RGF0dW0ocmFuZ2VzKTsKKwljb2x1bW4tPmJ2X3NlcmlhbGl6ZSA9IGJyaW5fbWlubWF4X211 bHRpX3NlcmlhbGl6ZTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCisJcmV0 dXJuIHJhbmdlczsKK30KKworLyoKKyAqIElmIHRoZSBwYXNzZWQgdmFsdWUgaXMgb3V0c2lkZSB0 aGUgbWlubWF4X211bHRpIHJhbmdlIHJldHVybiBmYWxzZS4KKyAqIE90aGVyd2lzZSwgcmV0dXJu IHRydWUuCisgKi8KK0RhdHVtCiticmluX21pbm1heF9tdWx0aV93aXRoaW5fcmFuZ2UoUEdfRlVO Q1RJT05fQVJHUykKK3sKKwlCcmluRGVzYyAgICpiZGVzYyA9IChCcmluRGVzYyAqKSBQR19HRVRB UkdfUE9JTlRFUigwKTsKKwlCcmluVmFsdWVzICpjb2x1bW4gPSAoQnJpblZhbHVlcyAqKSBQR19H RVRBUkdfUE9JTlRFUigxKTsKKwlEYXR1bQkJdmFsID0gUEdfR0VUQVJHX0RBVFVNKDIpOworCWJv b2wJCWlzbnVsbCBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFkgPSBQR19HRVRBUkdfREFUVU0oMyk7 CisJT2lkCQkJY29sbG9pZCA9IFBHX0dFVF9DT0xMQVRJT04oKTsKKwlib29sCQljb250YWlucyA9 IGZhbHNlOworCUZvcm1fcGdfYXR0cmlidXRlIGF0dHI7CisJQXR0ck51bWJlcglhdHRubzsKKwlS YW5nZXMJICAgKnJhbmdlczsKKwlGbWdySW5mbyAgICpjbXBGbjsKKworCUFzc2VydCghaXNudWxs KTsKKworCWF0dG5vID0gY29sdW1uLT5idl9hdHRubzsKKwlhdHRyID0gVHVwbGVEZXNjQXR0cihi ZGVzYy0+YmRfdHVwZGVzYywgYXR0bm8gLSAxKTsKKworCS8qIHVzZSB0aGUgYWxyZWFkeSBkZXNl cmlhbGl6ZWQgdmFsdWUsIGlmIHBvc3NpYmxlICovCisJcmFuZ2VzID0gKFJhbmdlcyAqKSBEYXR1 bUdldFBvaW50ZXIoY29sdW1uLT5idl9tZW1fdmFsdWUpOworCisJLyogVGhlIHJhbmdlIGlzIGVt cHR5LCByZXR1cm4gZmFsc2UgKi8KKwlpZiAoY29sdW1uLT5idl9hbGxudWxscykKKwl7CisJCVBH X1JFVFVSTl9CT09MKGZhbHNlKTsKKwl9CisJZWxzZSBpZiAoIXJhbmdlcykKKwl7CisJCXJhbmdl cyA9IGRlc2VyaWFsaXplX3JhbmdlX3ZhbHVlKGJkZXNjLCBjb2x1bW4sIGNvbGxvaWQsIGF0dHIs IGF0dG5vKTsKIAl9CiAKLQkvKgotCSAqIFRyeSB0byBhZGQgdGhlIG5ldyB2YWx1ZSB0byB0aGUg cmFuZ2UuIFdlIG5lZWQgdG8gdXBkYXRlIHRoZSBtb2RpZmllZAotCSAqIGZsYWcsIHNvIHRoYXQg d2Ugc2VyaWFsaXplIHRoZSB1cGRhdGVkIHN1bW1hcnkgbGF0ZXIuCi0JICovCi0JbW9kaWZpZWQg fD0gcmFuZ2VfYWRkX3ZhbHVlKGJkZXNjLCBjb2xsb2lkLCBhdHRubywgYXR0ciwgcmFuZ2VzLCBu ZXd2YWwpOworCS8qIHdlJ2xsIGNlcnRhaW5seSBuZWVkIHRoZSBjb21wYXJhdG9yLCBzbyBqdXN0 IGxvb2sgaXQgdXAgbm93ICovCisJY21wRm4gPSBtaW5tYXhfbXVsdGlfZ2V0X3N0cmF0ZWd5X3By b2NpbmZvKGJkZXNjLCBhdHRubywgYXR0ci0+YXR0dHlwaWQsCisJCQkJCQkJCQkJCSAgIEJUTGVz c1N0cmF0ZWd5TnVtYmVyKTsKIAorCS8qIGNvbXByZWhlbnNpdmUgY2hlY2tzIG9mIHRoZSBpbnB1 dCByYW5nZXMgKi8KKwlBc3NlcnRDaGVja1JhbmdlcyhyYW5nZXMsIGNtcEZuLCBjb2xsb2lkKTsK IAotCVBHX1JFVFVSTl9CT09MKG1vZGlmaWVkKTsKKwkvKiBVc2UgJ2Z1bGwgPSB0cnVlJyBoZXJl LCBhcyB3ZSBkb24ndCB3YW50IGFueSBmYWxzZSBuZWdhdGl2ZXMgKi8KKwljb250YWlucyA9IHJh bmdlX2NvbnRhaW5zX3ZhbHVlKGJkZXNjLCBjb2xsb2lkLCBhdHRubywgYXR0ciwgcmFuZ2VzLCB2 YWwsIHRydWUpOworCisJUEdfUkVUVVJOX0JPT0woY29udGFpbnMpOwogfQogCiAvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl92YWxpZGF0ZS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2JyaW4vYnJpbl92YWxpZGF0ZS5jCmluZGV4IDkxNWI4NjI4YjQ2Li4yYzU5ZDdl Y2NhNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl92YWxpZGF0ZS5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fdmFsaWRhdGUuYwpAQCAtODQsNiAr ODQsNyBAQCBicmludmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpCiAJCQkJCQkJCQkJCTEsIDEsIElO VEVSTkFMT0lEKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgQlJJTl9QUk9DTlVNX0FERFZBTFVFOgor CQkJY2FzZSBCUklOX1BST0NOVU1fV0lUSElOUkFOR0U6CiAJCQkJb2sgPSBjaGVja19hbXByb2Nf c2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIEJPT0xPSUQsIHRydWUsCiAJCQkJCQkJCQkJCTQs IDQsIElOVEVSTkFMT0lELCBJTlRFUk5BTE9JRCwKIAkJCQkJCQkJCQkJSU5URVJOQUxPSUQsIElO VEVSTkFMT0lEKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluX2ludGVybmFs LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl9pbnRlcm5hbC5oCmluZGV4IGQwOTNhMGJmMTMw Li41ZGY4Nzc2MWNmMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5faW50ZXJu YWwuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl9pbnRlcm5hbC5oCkBAIC02NywxMiAr NjcsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQnJpbkRlc2MKICAqIG9wY2xhc3NlcyBjYW4gZGVmaW5l IG1vcmUgZnVuY3Rpb24gc3VwcG9ydCBudW1iZXJzLCB3aGljaCBtdXN0IGZhbGwgaW50bwogICog QlJJTl9GSVJTVF9PUFRJT05BTF9QUk9DTlVNIC4uIEJSSU5fTEFTVF9PUFRJT05BTF9QUk9DTlVN LgogICovCi0jZGVmaW5lIEJSSU5fUFJPQ05VTV9PUENJTkZPCQkxCi0jZGVmaW5lIEJSSU5fUFJP Q05VTV9BRERWQUxVRQkJMgotI2RlZmluZSBCUklOX1BST0NOVU1fQ09OU0lTVEVOVAkJMwotI2Rl ZmluZSBCUklOX1BST0NOVU1fVU5JT04JCQk0Ci0jZGVmaW5lIEJSSU5fTUFOREFUT1JZX05QUk9D UwkJNAotI2RlZmluZSBCUklOX1BST0NOVU1fT1BUSU9OUyAJCTUJLyogb3B0aW9uYWwgKi8KKyNk ZWZpbmUgQlJJTl9QUk9DTlVNX09QQ0lORk8JCSAgICAxCisjZGVmaW5lIEJSSU5fUFJPQ05VTV9B RERWQUxVRQkJICAgIDIKKyNkZWZpbmUgQlJJTl9QUk9DTlVNX0NPTlNJU1RFTlQJCSAgICAzCisj ZGVmaW5lIEJSSU5fUFJPQ05VTV9VTklPTgkJCSAgICA0CisjZGVmaW5lIEJSSU5fTUFOREFUT1JZ X05QUk9DUwkJICAgIDQKKyNkZWZpbmUgQlJJTl9QUk9DTlVNX09QVElPTlMgCQkgICAgNQkvKiBv cHRpb25hbCAqLworI2RlZmluZSBCUklOX1BST0NOVU1fV0lUSElOUkFOR0UgCQk2CS8qIG9wdGlv bmFsICovCiAvKiBwcm9jZWR1cmUgbnVtYmVycyB1cCB0byAxMCBhcmUgcmVzZXJ2ZWQgZm9yIEJS SU4gZnV0dXJlIGV4cGFuc2lvbiAqLwogI2RlZmluZSBCUklOX0ZJUlNUX09QVElPTkFMX1BST0NO VU0gMTEKICNkZWZpbmUgQlJJTl9MQVNUX09QVElPTkFMX1BST0NOVU0JMTUKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfYW1wcm9jLmRhdAppbmRleCBlMzQ3NzUwMGJhYS4uYzM5NDdiYmM0MTAgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2FtcHJvYy5kYXQKQEAgLTg0Nyw2ICs4NDcsOSBAQAogICBhbXByb2MgPT4gJ2JyaW5f bWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9ieXRlYV9taW5t YXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2J5dGVhJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdieXRlYScsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24n IH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9ieXRlYV9taW5tYXhfb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ2J5dGVhJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdieXRlYScsIGFtcHJvY251 bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfd2l0aGluX3JhbmdlJyB9LAogCiAj IGJsb29tIGJ5dGVhCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9ieXRlYV9ibG9vbV9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAnYnl0ZWEnLApAQCAtODYzLDYgKzg2Niw5IEBACiB7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi9ieXRlYV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYnl0ZWEn LAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2J5dGVhJywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1w cm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9i eXRlYV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYnl0ZWEnLAorICBhbXByb2NyaWdo dHR5cGUgPT4gJ2J5dGVhJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Js b29tX3dpdGhpbl9yYW5nZScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2J5dGVhX2Jsb29t X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdieXRlYScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn Ynl0ZWEnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdoYXNoYnl0ZWEnIH0sCiAKQEAg LTg3OCw2ICs4ODQsOSBAQAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0s CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9jaGFyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAnY2hhcicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnY2hhcicsIGFtcHJvY251bSA9PiAn NCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi9jaGFyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnY2hhcicsCisgIGFtcHJv Y3JpZ2h0dHlwZSA9PiAnY2hhcicsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJp bl9taW5tYXhfd2l0aGluX3JhbmdlJyB9LAogCiAjIGJsb29tICJjaGFyIgogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vY2hhcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnY2hhcicsCkBA IC04OTIsNiArOTAxLDkgQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdjaGFyJywgYW1wcm9jbnVt ID0+ICc0JywgYW1wcm9jID0+ICdicmluX2Jsb29tX3VuaW9uJyB9LAogeyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vY2hhcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnY2hhcicsCiAgIGFt cHJvY3JpZ2h0dHlwZSA9PiAnY2hhcicsIGFtcHJvY251bSA9PiAnNScsIGFtcHJvYyA9PiAnYnJp bl9ibG9vbV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vY2hhcl9ibG9vbV9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnY2hhcicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnY2hh cicsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV93aXRoaW5fcmFu Z2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9jaGFyX2Jsb29tX29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICdjaGFyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdjaGFyJywgYW1wcm9jbnVt ID0+ICcxMScsIGFtcHJvYyA9PiAnaGFzaGNoYXInIH0sCiAKQEAgLTkwNyw2ICs5MTksOSBAQAog ICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi9uYW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbmFtZScsCiAgIGFt cHJvY3JpZ2h0dHlwZSA9PiAnbmFtZScsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJp bl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uYW1lX21pbm1heF9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbmFtZScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbmFt ZScsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfd2l0aGluX3Jh bmdlJyB9LAogCiAjIGJsb29tIG5hbWUKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL25hbWVfYmxv b21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ25hbWUnLApAQCAtOTIxLDYgKzkzNiw5IEBACiAg IGFtcHJvY3JpZ2h0dHlwZSA9PiAnbmFtZScsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAn YnJpbl9ibG9vbV91bmlvbicgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL25hbWVfYmxvb21f b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ25hbWUnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ25h bWUnLCBhbXByb2NudW0gPT4gJzUnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21fb3B0aW9ucycgfSwK K3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL25hbWVfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUg PT4gJ25hbWUnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ25hbWUnLCBhbXByb2NudW0gPT4gJzYn LAorICBhbXByb2MgPT4gJ2JyaW5fYmxvb21fd2l0aGluX3JhbmdlJyB9LAogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vbmFtZV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbmFtZScsCiAg IGFtcHJvY3JpZ2h0dHlwZSA9PiAnbmFtZScsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4g J2hhc2huYW1lJyB9LAogCkBAIC05MzYsNiArOTU0LDkgQEAKICAgYW1wcm9jID0+ICdicmluX21p bm1heF9jb25zaXN0ZW50JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5t YXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDgnLAogICBhbXByb2NyaWdodHR5cGUgPT4g J2ludDgnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9 LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ2ludDgnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDgnLCBhbXByb2NudW0g PT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3dpdGhpbl9yYW5nZScgfSwKIAogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUg PT4gJ2ludDInLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDInLCBhbXByb2NudW0gPT4gJzEn LApAQCAtOTQ4LDYgKzk2OSw5IEBACiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfY29uc2lzdGVu dCcgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlubWF4X29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICdpbnQyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQyJywgYW1wcm9j bnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFt aWx5ID0+ICdicmluL2ludGVnZXJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQy JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQyJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1w cm9jID0+ICdicmluX21pbm1heF93aXRoaW5fcmFuZ2UnIH0sCiAKIHsgYW1wcm9jZmFtaWx5ID0+ ICdicmluL2ludGVnZXJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQ0JywKICAg YW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ0JywgYW1wcm9jbnVtID0+ICcxJywKQEAgLTk2MCw2ICs5 ODQsOSBAQAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn aW50NCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50NCcsIGFtcHJvY251bSA9PiAnNCcsIGFt cHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9p bnRlZ2VyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50NCcsCisgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAnaW50NCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfd2l0aGluX3JhbmdlJyB9LAogCiAjIG1pbm1heCBtdWx0aSBpbnRlZ2VyOiBpbnQyLCBp bnQ0LCBpbnQ4CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9tdWx0aV9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50MicsCkBAIC05NzcsNiArMTAwNCw5IEBACiB7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnaW50MicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50MicsIGFtcHJvY251bSA9 PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1w cm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdpbnQyJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQyJywgYW1wcm9jbnVtID0+ ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV93aXRoaW5fcmFuZ2UnIH0sCiB7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAnaW50MicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50MicsIGFtcHJvY251 bSA9PiAnMTEnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX2Rpc3RhbmNlX2ludDIn IH0sCkBAIC05OTYsNiArMTAyNiw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2Vy X21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50NCcsCiAgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAnaW50NCcsIGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJf bWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQ0JywKKyAgYW1wcm9jcmln aHR0eXBlID0+ICdpbnQ0JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21p bm1heF9tdWx0aV93aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRl Z2VyX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50NCcsCiAgIGFtcHJv Y3JpZ2h0dHlwZSA9PiAnaW50NCcsIGFtcHJvY251bSA9PiAnMTEnLAogICBhbXByb2MgPT4gJ2Jy aW5fbWlubWF4X211bHRpX2Rpc3RhbmNlX2ludDQnIH0sCkBAIC0xMDE1LDYgKzEwNDgsOSBAQAog eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2ludDgnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDgnLCBhbXByb2Nu dW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlvbnMnIH0sCit7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAnaW50OCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50OCcsIGFtcHJvY251 bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfd2l0aGluX3JhbmdlJyB9 LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfbXVsdGlfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2ludDgnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDgnLCBhbXBy b2NudW0gPT4gJzExJywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV9p bnQ4JyB9LApAQCAtMTAzMiw2ICsxMDY4LDkgQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ4 JywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX2Jsb29tX3VuaW9uJyB9LAogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAnaW50OCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50OCcsIGFtcHJvY251bSA9PiAnNScs IGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vaW50ZWdlcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50OCcsCisgIGFtcHJv Y3JpZ2h0dHlwZSA9PiAnaW50OCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJp bl9ibG9vbV93aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2Vy X2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQ4JywKICAgYW1wcm9jcmlnaHR0eXBl ID0+ICdpbnQ4JywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnaGFzaGludDgnIH0sCiAK QEAgLTEwNDcsNiArMTA4Niw5IEBACiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50MicsIGFtcHJv Y251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV91bmlvbicgfSwKIHsgYW1wcm9jZmFt aWx5ID0+ICdicmluL2ludGVnZXJfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDIn LAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDInLCBhbXByb2NudW0gPT4gJzUnLCBhbXByb2Mg PT4gJ2JyaW5fYmxvb21fb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVn ZXJfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDInLAorICBhbXByb2NyaWdodHR5 cGUgPT4gJ2ludDInLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fYmxvb21f d2l0aGluX3JhbmdlJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9ibG9vbV9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50MicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50 MicsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2hhc2hpbnQyJyB9LAogCkBAIC0xMDYy LDYgKzExMDQsOSBAQAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDQnLCBhbXByb2NudW0gPT4g JzQnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21fdW5pb24nIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi9pbnRlZ2VyX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQ0JywKICAgYW1w cm9jcmlnaHR0eXBlID0+ICdpbnQ0JywgYW1wcm9jbnVtID0+ICc1JywgYW1wcm9jID0+ICdicmlu X2Jsb29tX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX2Jsb29t X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQ0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdp bnQ0JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3dpdGhpbl9y YW5nZScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfYmxvb21fb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2ludDQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDQnLCBhbXBy b2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdoYXNoaW50NCcgfSwKIApAQCAtMTA3Nyw2ICsxMTIy LDkgQEAKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9jb25zaXN0ZW50JyB9LAogeyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vdGV4dF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RleHQn LAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RleHQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGV4dF9t aW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RleHQnLAorICBhbXByb2NyaWdodHR5cGUg PT4gJ3RleHQnLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3dp dGhpbl9yYW5nZScgfSwKIAogIyBibG9vbSB0ZXh0CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90 ZXh0X2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0ZXh0JywKQEAgLTEwOTEsNiArMTEz OSw5IEBACiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGV4dCcsIGFtcHJvY251bSA9PiAnNCcsIGFt cHJvYyA9PiAnYnJpbl9ibG9vbV91bmlvbicgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3Rl eHRfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RleHQnLAogICBhbXByb2NyaWdodHR5 cGUgPT4gJ3RleHQnLCBhbXByb2NudW0gPT4gJzUnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21fb3B0 aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RleHRfYmxvb21fb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ3RleHQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3RleHQnLCBhbXByb2Nu dW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fYmxvb21fd2l0aGluX3JhbmdlJyB9LAogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vdGV4dF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn dGV4dCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGV4dCcsIGFtcHJvY251bSA9PiAnMTEnLCBh bXByb2MgPT4gJ2hhc2h0ZXh0JyB9LAogCkBAIC0xMTA1LDYgKzExNTYsOSBAQAogICBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9v aWRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdvaWQnLAogICBhbXByb2NyaWdodHR5 cGUgPT4gJ29pZCcsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5p b24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9vaWRfbWlubWF4X29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICdvaWQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ29pZCcsIGFtcHJvY251bSA9 PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfd2l0aGluX3JhbmdlJyB9LAogCiAjIG1p bm1heCBtdWx0aSBvaWQKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL29pZF9taW5tYXhfbXVsdGlf b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ29pZCcsCkBAIC0xMTIyLDYgKzExNzYsOSBAQAogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vb2lkX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAnb2lkJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdvaWQnLCBhbXByb2NudW0gPT4gJzUn LAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlvbnMnIH0sCit7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi9vaWRfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdv aWQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ29pZCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFt cHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfd2l0aGluX3JhbmdlJyB9LAogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vb2lkX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnb2lk JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdvaWQnLCBhbXByb2NudW0gPT4gJzExJywKICAgYW1w cm9jID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV9pbnQ0JyB9LApAQCAtMTEzOSw2ICsx MTk2LDkgQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdvaWQnLCBhbXByb2NudW0gPT4gJzQnLCBh bXByb2MgPT4gJ2JyaW5fYmxvb21fdW5pb24nIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9v aWRfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ29pZCcsCiAgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnb2lkJywgYW1wcm9jbnVtID0+ICc1JywgYW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlv bnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9vaWRfYmxvb21fb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ29pZCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnb2lkJywgYW1wcm9jbnVtID0+ ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3dpdGhpbl9yYW5nZScgfSwKIHsgYW1wcm9j ZmFtaWx5ID0+ICdicmluL29pZF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnb2lkJywK ICAgYW1wcm9jcmlnaHR0eXBlID0+ICdvaWQnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ ICdoYXNob2lkJyB9LAogCkBAIC0xMTUzLDYgKzEyMTMsOSBAQAogICBhbXByb2MgPT4gJ2JyaW5f bWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aWRfbWlubWF4 X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aWQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3Rp ZCcsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aWRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICd0aWQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpZCcsIGFtcHJvY251bSA9PiAnNicsCisg IGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfd2l0aGluX3JhbmdlJyB9LAogCiAjIGJsb29tIHRpZAog eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGlkX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICd0aWQnLApAQCAtMTE2Nyw2ICsxMjMwLDkgQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aWQn LCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21fdW5pb24nIH0sCiB7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi90aWRfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3Rp ZCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGlkJywgYW1wcm9jbnVtID0+ICc1JywgYW1wcm9j ID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aWRf Ymxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpZCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAndGlkJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3dpdGhp bl9yYW5nZScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpZF9ibG9vbV9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAndGlkJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aWQnLCBhbXByb2Nu dW0gPT4gJzExJywgYW1wcm9jID0+ICdoYXNodGlkJyB9LAogCkBAIC0xMTg2LDYgKzEyNTIsOSBA QAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGlkX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAndGlkJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aWQnLCBhbXByb2NudW0g PT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlvbnMnIH0sCit7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi90aWRfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICd0aWQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpZCcsIGFtcHJvY251bSA9PiAnNics CisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfd2l0aGluX3JhbmdlJyB9LAogeyBhbXBy b2NmYW1pbHkgPT4gJ2JyaW4vdGlkX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAndGlkJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aWQnLCBhbXByb2NudW0gPT4gJzExJywK ICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV90aWQnIH0sCkBAIC0xMjAz LDYgKzEyNzIsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfbWlubWF4X29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0 NCcsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0s Cit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ2Zsb2F0NCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZmxvYXQ0JywgYW1wcm9jbnVt ID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF93aXRoaW5fcmFuZ2UnIH0sCiAKIHsg YW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAnZmxvYXQ4JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDgnLCBhbXByb2NudW0gPT4g JzEnLApAQCAtMTIxNiw2ICsxMjg4LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0 X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxvYXQ4JywKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICdmbG9hdDgnLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlu bWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfbWlubWF4X29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDgnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0 OCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfd2l0aGluX3Jh bmdlJyB9LAogCiAjIG1pbm1heCBtdWx0aSBmbG9hdAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v ZmxvYXRfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDQnLApAQCAt MTIzMyw2ICsxMzA4LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0X21pbm1heF9t dWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxvYXQ0JywKICAgYW1wcm9jcmlnaHR0eXBl ID0+ICdmbG9hdDQnLCBhbXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4 X211bHRpX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9taW5tYXhf bXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2Zsb2F0NCcsCisgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnZmxvYXQ0JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1h eF9tdWx0aV93aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9t aW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2Zsb2F0NCcsCiAgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAnZmxvYXQ0JywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJp bl9taW5tYXhfbXVsdGlfZGlzdGFuY2VfZmxvYXQ0JyB9LApAQCAtMTI1Miw2ICsxMzMwLDkgQEAK IHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0X21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAnZmxvYXQ4JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDgnLCBhbXBy b2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlvbnMnIH0s Cit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2Zsb2F0OCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZmxvYXQ4JywgYW1w cm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV93aXRoaW5fcmFu Z2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9taW5tYXhfbXVsdGlfb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ2Zsb2F0OCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZmxvYXQ4 JywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfZGlz dGFuY2VfZmxvYXQ4JyB9LApAQCAtMTI3MSw2ICsxMzUyLDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ ICdicmluL2Zsb2F0X2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDQnLAogICBh bXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0NCcsIGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9 PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRf Ymxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2Zsb2F0NCcsCisgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnZmxvYXQ0JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29t X3dpdGhpbl9yYW5nZScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0X2Jsb29tX29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zs b2F0NCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2hhc2hmbG9hdDQnIH0sCiAKQEAg LTEyODgsNiArMTM3Miw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9ibG9vbV9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxvYXQ4JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdm bG9hdDgnLCBhbXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fYmxvb21fb3B0aW9u cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0X2Jsb29tX29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICdmbG9hdDgnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0OCcsIGFtcHJv Y251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV93aXRoaW5fcmFuZ2UnIH0sCiB7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAnZmxvYXQ4JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDgnLCBhbXByb2NudW0gPT4g JzExJywgYW1wcm9jID0+ICdoYXNoZmxvYXQ4JyB9LAogCkBAIC0xMzA0LDYgKzEzOTEsOSBAQAog eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ21hY2FkZHInLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ21hY2FkZHInLCBhbXByb2Nu dW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vbWFjYWRkcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ21h Y2FkZHInLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ21hY2FkZHInLCBhbXByb2NudW0gPT4gJzYn LAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3dpdGhpbl9yYW5nZScgfSwKIAogIyBtaW5tYXgg bXVsdGkgbWFjYWRkcgogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcl9taW5tYXhfbXVs dGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHInLApAQCAtMTMyMSw2ICsxNDExLDkg QEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL21hY2FkZHJfbWlubWF4X211bHRpX29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdtYWNhZGRy JywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9vcHRp b25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcl9taW5tYXhfbXVsdGlfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHInLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ21h Y2FkZHInLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRp X3dpdGhpbl9yYW5nZScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL21hY2FkZHJfbWlubWF4 X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyJywKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICdtYWNhZGRyJywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfbXVsdGlfZGlzdGFuY2VfbWFjYWRkcicgfSwKQEAgLTEzNDEsNiArMTQzNCw5IEBACiB7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9tYWNhZGRyX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdtYWNhZGRyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdtYWNhZGRyJywgYW1wcm9jbnVt ID0+ICc1JywKICAgYW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0sCit7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi9tYWNhZGRyX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNh ZGRyJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdtYWNhZGRyJywgYW1wcm9jbnVtID0+ICc2JywK KyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3dpdGhpbl9yYW5nZScgfSwKIHsgYW1wcm9jZmFtaWx5 ID0+ICdicmluL21hY2FkZHJfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHIn LAogICBhbXByb2NyaWdodHR5cGUgPT4gJ21hY2FkZHInLCBhbXByb2NudW0gPT4gJzExJywgYW1w cm9jID0+ICdoYXNobWFjYWRkcicgfSwKIApAQCAtMTM1Nyw2ICsxNDUzLDkgQEAKIHsgYW1wcm9j ZmFtaWx5ID0+ICdicmluL21hY2FkZHI4X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn bWFjYWRkcjgnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ21hY2FkZHI4JywgYW1wcm9jbnVtID0+ ICc0JywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5 ID0+ICdicmluL21hY2FkZHI4X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbWFjYWRk cjgnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ21hY2FkZHI4JywgYW1wcm9jbnVtID0+ICc2JywK KyAgYW1wcm9jID0+ICdicmluX21pbm1heF93aXRoaW5fcmFuZ2UnIH0sCiAKICMgbWlubWF4IG11 bHRpIG1hY2FkZHI4CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9tYWNhZGRyOF9taW5tYXhfbXVs dGlfb3BzJywKQEAgLTEzNzQsNiArMTQ3Myw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9t YWNhZGRyOF9taW5tYXhfbXVsdGlfb3BzJywKICAgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHI4 JywgYW1wcm9jcmlnaHR0eXBlID0+ICdtYWNhZGRyOCcsIGFtcHJvY251bSA9PiAnNScsCiAgIGFt cHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ ICdicmluL21hY2FkZHI4X21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbWFj YWRkcjgnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ21hY2FkZHI4JywgYW1wcm9jbnVtID0+ICc2 JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV93aXRoaW5fcmFuZ2UnIH0sCiB7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi9tYWNhZGRyOF9taW5tYXhfbXVsdGlfb3BzJywKICAgYW1wcm9j bGVmdHR5cGUgPT4gJ21hY2FkZHI4JywgYW1wcm9jcmlnaHR0eXBlID0+ICdtYWNhZGRyOCcsCiAg IGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX2Rpc3RhbmNl X21hY2FkZHI4JyB9LApAQCAtMTM5NCw2ICsxNDk2LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdi cmluL21hY2FkZHI4X2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyOCcsCiAg IGFtcHJvY3JpZ2h0dHlwZSA9PiAnbWFjYWRkcjgnLCBhbXByb2NudW0gPT4gJzUnLAogICBhbXBy b2MgPT4gJ2JyaW5fYmxvb21fb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL21h Y2FkZHI4X2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyOCcsCisgIGFtcHJv Y3JpZ2h0dHlwZSA9PiAnbWFjYWRkcjgnLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4g J2JyaW5fYmxvb21fd2l0aGluX3JhbmdlJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFj YWRkcjhfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHI4JywKICAgYW1wcm9j cmlnaHR0eXBlID0+ICdtYWNhZGRyOCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2hh c2htYWNhZGRyOCcgfSwKIApAQCAtMTQwOSw2ICsxNTE0LDkgQEAKICAgYW1wcm9jID0+ICdicmlu X21pbm1heF9jb25zaXN0ZW50JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmV0d29ya19t aW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2luZXQnLAogICBhbXByb2NyaWdodHR5cGUg PT4gJ2luZXQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9u JyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmV0d29ya19taW5tYXhfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2luZXQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2Nu dW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3dpdGhpbl9yYW5nZScgfSwKIAog IyBtaW5tYXggbXVsdGkgaW5ldAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmV0d29ya19taW5t YXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2luZXQnLApAQCAtMTQyNiw2ICsxNTM0 LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL25ldHdvcmtfbWlubWF4X211bHRpX29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbmV0Jywg YW1wcm9jbnVtID0+ICc1JywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9vcHRpb25z JyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmV0d29ya19taW5tYXhfbXVsdGlfb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ2luZXQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBh bXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX3dpdGhpbl9y YW5nZScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL25ldHdvcmtfbWlubWF4X211bHRpX29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbmV0 JywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfZGlz dGFuY2VfaW5ldCcgfSwKQEAgLTE0NDMsNiArMTU1NCw5IEBACiAgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAnaW5ldCcsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV91bmlvbicg fSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL25ldHdvcmtfYmxvb21fb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ2luZXQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0g PT4gJzUnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21fb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5 ID0+ICdicmluL25ldHdvcmtfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2luZXQnLAor ICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2Mg PT4gJ2JyaW5fYmxvb21fd2l0aGluX3JhbmdlJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v bmV0d29ya19ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW5ldCcsCiAgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAnaW5ldCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2hhc2hpbmV0 JyB9LAogCkBAIC0xNDU5LDYgKzE1NzMsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmV0 d29ya19pbmNsdXNpb25fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2luZXQnLAogICBhbXByb2Ny aWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5f aW5jbHVzaW9uX3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmV0d29ya19pbmNs dXNpb25fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2luZXQnLAorICBhbXByb2NyaWdodHR5cGUg PT4gJ2luZXQnLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5faW5jbHVzaW9u X3dpdGhpbl9yYW5nZScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL25ldHdvcmtfaW5jbHVz aW9uX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdpbmV0JywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnaW5ldF9tZXJnZScgfSwKIHsg YW1wcm9jZmFtaWx5ID0+ICdicmluL25ldHdvcmtfaW5jbHVzaW9uX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdpbmV0JywKQEAgLTE0NzksNiArMTU5Niw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi9icGNoYXJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdicGNoYXInLAogICBh bXByb2NyaWdodHR5cGUgPT4gJ2JwY2hhcicsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFtcHJvYyA9 PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9icGNoYXJf bWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdicGNoYXInLAorICBhbXByb2NyaWdodHR5 cGUgPT4gJ2JwY2hhcicsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5t YXhfd2l0aGluX3JhbmdlJyB9LAogCiAjIGJsb29tIGNoYXJhY3RlcgogeyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vYnBjaGFyX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdicGNoYXInLApA QCAtMTQ5NSw2ICsxNjE1LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2JwY2hhcl9ibG9v bV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYnBjaGFyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdicGNoYXInLCBhbXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fYmxvb21fb3B0 aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2JwY2hhcl9ibG9vbV9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAnYnBjaGFyJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdicGNoYXInLCBh bXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fYmxvb21fd2l0aGluX3JhbmdlJyB9 LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYnBjaGFyX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdicGNoYXInLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2JwY2hhcicsIGFtcHJvY251 bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2hhc2hicGNoYXInIH0sCiAKQEAgLTE1MTAsNiArMTYzMyw5 IEBACiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfY29uc2lzdGVudCcgfSwKIHsgYW1wcm9jZmFt aWx5ID0+ICdicmluL3RpbWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lJywK ICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWVfbWlu bWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ ICd0aW1lJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF93aXRo aW5fcmFuZ2UnIH0sCiAKICMgbWlubWF4IG11bHRpIHRpbWUgd2l0aG91dCB0aW1lIHpvbmUKIHsg YW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWVfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICd0aW1lJywKQEAgLTE1MjcsNiArMTY1Myw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi90aW1lX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZScsCiAg IGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZScsIGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9 PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmlu L3RpbWVfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lJywKKyAgYW1w cm9jcmlnaHR0eXBlID0+ICd0aW1lJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdi cmluX21pbm1heF9tdWx0aV93aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi90aW1lX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZScsCiAgIGFt cHJvY3JpZ2h0dHlwZSA9PiAndGltZScsIGFtcHJvY251bSA9PiAnMTEnLAogICBhbXByb2MgPT4g J2JyaW5fbWlubWF4X211bHRpX2Rpc3RhbmNlX3RpbWUnIH0sCkBAIC0xNTQ0LDYgKzE2NzMsOSBA QAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWUnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2Mg PT4gJ2JyaW5fYmxvb21fdW5pb24nIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1lX2Js b29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICd0aW1lJywgYW1wcm9jbnVtID0+ICc1JywgYW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMn IH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1lX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICd0aW1lJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lJywgYW1wcm9jbnVtID0+ ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3dpdGhpbl9yYW5nZScgfSwKIHsgYW1wcm9j ZmFtaWx5ID0+ICdicmluL3RpbWVfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWUn LAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWUnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9j ID0+ICd0aW1lX2hhc2gnIH0sCiAKQEAgLTE1NjAsNiArMTY5Miw5IEBACiB7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWVz dGFtcCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXN0YW1wJywgYW1wcm9jbnVtID0+ICc0 JywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ ICdicmluL2RhdGV0aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1w JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lc3RhbXAnLCBhbXByb2NudW0gPT4gJzYnLAor ICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3dpdGhpbl9yYW5nZScgfSwKIAogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1l c3RhbXB0eicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXN0YW1wdHonLCBhbXByb2NudW0g PT4gJzEnLApAQCAtMTU3Myw2ICsxNzA4LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Rh dGV0aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wdHonLAogICBh bXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1w cm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Rh dGV0aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wdHonLAorICBh bXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1w cm9jID0+ICdicmluX21pbm1heF93aXRoaW5fcmFuZ2UnIH0sCiAKIHsgYW1wcm9jZmFtaWx5ID0+ ICdicmluL2RhdGV0aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZGF0ZScsCiAg IGFtcHJvY3JpZ2h0dHlwZSA9PiAnZGF0ZScsIGFtcHJvY251bSA9PiAnMScsCkBAIC0xNTg1LDYg KzE3MjMsOSBAQAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUg PT4gJ2RhdGUnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2RhdGUnLCBhbXByb2NudW0gPT4gJzQn LCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vZGF0ZXRpbWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdkYXRlJywKKyAgYW1w cm9jcmlnaHR0eXBlID0+ICdkYXRlJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdi cmluX21pbm1heF93aXRoaW5fcmFuZ2UnIH0sCiAKICMgbWlubWF4IG11bHRpIGRhdGV0aW1lIChk YXRlLCB0aW1lc3RhbXAsIHRpbWVzdGFtcHR6KQogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0 ZXRpbWVfbWlubWF4X211bHRpX29wcycsCkBAIC0xNjAyLDYgKzE3NDMsOSBAQAogeyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X211bHRpX29wcycsCiAgIGFtcHJvY2xlZnR0 eXBlID0+ICd0aW1lc3RhbXAnLCBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcCcsCiAgIGFt cHJvY251bSA9PiAnNScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycgfSwK K3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9tdWx0aV9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lc3Rh bXAnLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX3dp dGhpbl9yYW5nZScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9t dWx0aV9vcHMnLAogICBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wJywgYW1wcm9jcmlnaHR0 eXBlID0+ICd0aW1lc3RhbXAnLAogICBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmlu X21pbm1heF9tdWx0aV9kaXN0YW5jZV90aW1lc3RhbXAnIH0sCkBAIC0xNjIxLDYgKzE3NjUsOSBA QAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X211bHRpX29wcycsCiAg IGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lc3RhbXB0eicsIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGlt ZXN0YW1wdHonLAogICBhbXByb2NudW0gPT4gJzUnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211 bHRpX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhf bXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywKKyAgYW1wcm9jcmln aHR0eXBlID0+ICd0aW1lc3RhbXB0eicsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAn YnJpbl9taW5tYXhfbXVsdGlfd2l0aGluX3JhbmdlJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vZGF0ZXRpbWVfbWlubWF4X211bHRpX29wcycsCiAgIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1l c3RhbXB0eicsIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXN0YW1wdHonLAogICBhbXByb2NudW0g PT4gJzExJywgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV90aW1lc3RhbXAn IH0sCkBAIC0xNjQwLDYgKzE3ODcsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRp bWVfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdkYXRlJywKICAgYW1wcm9j cmlnaHR0eXBlID0+ICdkYXRlJywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1wcm9jID0+ICdicmlu X21pbm1heF9tdWx0aV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRp bWVfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdkYXRlJywKKyAgYW1wcm9j cmlnaHR0eXBlID0+ICdkYXRlJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmlu X21pbm1heF9tdWx0aV93aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9k YXRldGltZV9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2RhdGUnLAogICBh bXByb2NyaWdodHR5cGUgPT4gJ2RhdGUnLCBhbXByb2NudW0gPT4gJzExJywKICAgYW1wcm9jID0+ ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV9kYXRlJyB9LApAQCAtMTY2MCw2ICsxODEwLDkg QEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX2Jsb29tX29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICd0aW1lc3RhbXAnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcCcs IGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAor eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ3RpbWVzdGFtcCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXN0YW1wJywgYW1w cm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3dpdGhpbl9yYW5nZScgfSwK IHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICd0aW1lc3RhbXAnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcCcsIGFt cHJvY251bSA9PiAnMTEnLAogICBhbXByb2MgPT4gJ3RpbWVzdGFtcF9oYXNoJyB9LApAQCAtMTY3 OSw2ICsxODMyLDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX2Jsb29tX29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lc3RhbXB0eicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAndGltZXN0YW1wdHonLCBhbXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fYmxv b21fb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX2Jsb29tX29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lc3RhbXB0eicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAndGltZXN0YW1wdHonLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fYmxv b21fd2l0aGluX3JhbmdlJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfYmxv b21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICd0aW1lc3RhbXB0eicsIGFtcHJvY251bSA9PiAnMTEnLAogICBhbXByb2MgPT4gJ3Rp bWVzdGFtcF9oYXNoJyB9LApAQCAtMTY5NSw2ICsxODUxLDkgQEAKICAgYW1wcm9jcmlnaHR0eXBl ID0+ICdkYXRlJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX2Jsb29tX3VuaW9u JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfYmxvb21fb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2RhdGUnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2RhdGUnLCBhbXByb2Nu dW0gPT4gJzUnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21fb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFt aWx5ID0+ICdicmluL2RhdGV0aW1lX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdkYXRl JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdkYXRlJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1w cm9jID0+ICdicmluX2Jsb29tX3dpdGhpbl9yYW5nZScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdi cmluL2RhdGV0aW1lX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdkYXRlJywKICAgYW1w cm9jcmlnaHR0eXBlID0+ICdkYXRlJywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnaGFz aGludDQnIH0sCiAKQEAgLTE3MTEsNiArMTg3MCw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi9pbnRlcnZhbF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludGVydmFsJywKICAg YW1wcm9jcmlnaHR0eXBlID0+ICdpbnRlcnZhbCcsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFtcHJv YyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRl cnZhbF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludGVydmFsJywKKyAgYW1wcm9j cmlnaHR0eXBlID0+ICdpbnRlcnZhbCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAn YnJpbl9taW5tYXhfd2l0aGluX3JhbmdlJyB9LAogCiAjIG1pbm1heCBtdWx0aSBpbnRlcnZhbAog eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZXJ2YWxfbWlubWF4X211bHRpX29wcycsCkBAIC0x NzI4LDYgKzE4OTAsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZXJ2YWxfbWlubWF4 X211bHRpX29wcycsCiAgIGFtcHJvY2xlZnR0eXBlID0+ICdpbnRlcnZhbCcsIGFtcHJvY3JpZ2h0 dHlwZSA9PiAnaW50ZXJ2YWwnLCBhbXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5f bWlubWF4X211bHRpX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlcnZh bF9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludGVydmFsJywKKyAgYW1w cm9jcmlnaHR0eXBlID0+ICdpbnRlcnZhbCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9 PiAnYnJpbl9taW5tYXhfbXVsdGlfd2l0aGluX3JhbmdlJyB9LAogeyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vaW50ZXJ2YWxfbWlubWF4X211bHRpX29wcycsCiAgIGFtcHJvY2xlZnR0eXBlID0+ICdp bnRlcnZhbCcsIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50ZXJ2YWwnLAogICBhbXByb2NudW0gPT4g JzExJywgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV9pbnRlcnZhbCcgfSwK QEAgLTE3NDgsNiArMTkxMyw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlcnZhbF9i bG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50ZXJ2YWwnLAogICBhbXByb2NyaWdodHR5 cGUgPT4gJ2ludGVydmFsJywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1wcm9jID0+ICdicmluX2Js b29tX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlcnZhbF9ibG9vbV9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50ZXJ2YWwnLAorICBhbXByb2NyaWdodHR5cGUgPT4g J2ludGVydmFsJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3dp dGhpbl9yYW5nZScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVydmFsX2Jsb29tX29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnRlcnZhbCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn aW50ZXJ2YWwnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdpbnRlcnZhbF9oYXNoJyB9 LAogCkBAIC0xNzY0LDYgKzE5MzIsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGltZXR6 X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXR6JywKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICd0aW1ldHonLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlu bWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGltZXR6X21pbm1heF9vcHMn LCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXR6JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1l dHonLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3dpdGhpbl9y YW5nZScgfSwKIAogIyBtaW5tYXggbXVsdGkgdGltZSB3aXRoIHRpbWUgem9uZQogeyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vdGltZXR6X21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAndGltZXR6JywKQEAgLTE3ODEsNiArMTk1Miw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi90aW1ldHpfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1ldHonLAog ICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWV0eicsIGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJv YyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdi cmluL3RpbWV0el9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWV0eics CisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXR6JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1w cm9jID0+ICdicmluX21pbm1heF9tdWx0aV93aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi90aW1ldHpfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0 aW1ldHonLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWV0eicsIGFtcHJvY251bSA9PiAnMTEn LAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX2Rpc3RhbmNlX3RpbWV0eicgfSwKQEAg LTE4MDAsNiArMTk3NCw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1ldHpfYmxvb21f b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWV0eicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn dGltZXR6JywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlv bnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1ldHpfYmxvb21fb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ3RpbWV0eicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXR6JywgYW1w cm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3dpdGhpbl9yYW5nZScgfSwK IHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWV0el9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAndGltZXR6JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1ldHonLCBhbXByb2NudW0g PT4gJzExJywgYW1wcm9jID0+ICd0aW1ldHpfaGFzaCcgfSwKIApAQCAtMTgxNCw2ICsxOTkxLDkg QEAKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9jb25zaXN0ZW50JyB9LAogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vYml0X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYml0JywKICAg YW1wcm9jcmlnaHR0eXBlID0+ICdiaXQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2Jy aW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYml0X21pbm1heF9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYml0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdiaXQn LCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3dpdGhpbl9yYW5n ZScgfSwKIAogIyBtaW5tYXggYml0IHZhcnlpbmcKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3Zh cmJpdF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3ZhcmJpdCcsCkBAIC0xODI4LDYg KzIwMDgsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdmFyYml0X21pbm1heF9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAndmFyYml0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd2YXJiaXQn LCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAor eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdmFyYml0X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAndmFyYml0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd2YXJiaXQnLCBhbXByb2NudW0g PT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3dpdGhpbl9yYW5nZScgfSwKIAogIyBt aW5tYXggbnVtZXJpYwogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbnVtZXJpY19taW5tYXhfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ251bWVyaWMnLApAQCAtMTg0Miw2ICsyMDI1LDkgQEAKIHsg YW1wcm9jZmFtaWx5ID0+ICdicmluL251bWVyaWNfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdudW1lcmljJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdudW1lcmljJywgYW1wcm9jbnVt ID0+ICc0JywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFt aWx5ID0+ICdicmluL251bWVyaWNfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdudW1l cmljJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdudW1lcmljJywgYW1wcm9jbnVtID0+ICc2JywK KyAgYW1wcm9jID0+ICdicmluX21pbm1heF93aXRoaW5fcmFuZ2UnIH0sCiAKICMgbWlubWF4IG11 bHRpIG51bWVyaWMKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL251bWVyaWNfbWlubWF4X211bHRp X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdudW1lcmljJywKQEAgLTE4NTksNiArMjA0NSw5IEBA CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9udW1lcmljX21pbm1heF9tdWx0aV9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAnbnVtZXJpYycsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbnVtZXJpYycs IGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9u cycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL251bWVyaWNfbWlubWF4X211bHRpX29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICdudW1lcmljJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdudW1l cmljJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV93 aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9udW1lcmljX21pbm1heF9t dWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbnVtZXJpYycsCiAgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnbnVtZXJpYycsIGFtcHJvY251bSA9PiAnMTEnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlu bWF4X211bHRpX2Rpc3RhbmNlX251bWVyaWMnIH0sCkBAIC0xODc5LDYgKzIwNjgsOSBAQAogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vbnVtZXJpY19ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAnbnVtZXJpYycsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbnVtZXJpYycsIGFtcHJvY251bSA9 PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vbnVtZXJpY19ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbnVtZXJp YycsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbnVtZXJpYycsIGFtcHJvY251bSA9PiAnNicsCisg IGFtcHJvYyA9PiAnYnJpbl9ibG9vbV93aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi9udW1lcmljX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdudW1lcmljJywK ICAgYW1wcm9jcmlnaHR0eXBlID0+ICdudW1lcmljJywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJv YyA9PiAnaGFzaF9udW1lcmljJyB9LAogCkBAIC0xODk0LDYgKzIwODYsOSBAQAogICBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi91 dWlkX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndXVpZCcsCiAgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAndXVpZCcsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhf dW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi91dWlkX21pbm1heF9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAndXVpZCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndXVpZCcsIGFtcHJv Y251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfd2l0aGluX3JhbmdlJyB9LAog CiAjIG1pbm1heCBtdWx0aSB1dWlkCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi91dWlkX21pbm1h eF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndXVpZCcsCkBAIC0xOTExLDYgKzIxMDYs OSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdXVpZF9taW5tYXhfbXVsdGlfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ3V1aWQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3V1aWQnLCBhbXBy b2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlvbnMnIH0s Cit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi91dWlkX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAndXVpZCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndXVpZCcsIGFtcHJvY251 bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfd2l0aGluX3JhbmdlJyB9 LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdXVpZF9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ3V1aWQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3V1aWQnLCBhbXByb2Nu dW0gPT4gJzExJywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV91dWlk JyB9LApAQCAtMTkyOCw2ICsyMTI2LDkgQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd1dWlkJywg YW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX2Jsb29tX3VuaW9uJyB9LAogeyBhbXBy b2NmYW1pbHkgPT4gJ2JyaW4vdXVpZF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndXVp ZCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndXVpZCcsIGFtcHJvY251bSA9PiAnNScsIGFtcHJv YyA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdXVp ZF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndXVpZCcsCisgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAndXVpZCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV93 aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi91dWlkX2Jsb29tX29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICd1dWlkJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd1dWlkJywg YW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAndXVpZF9oYXNoJyB9LAogCkBAIC0xOTQ0LDYg KzIxNDUsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vcmFuZ2VfaW5jbHVzaW9uX29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICdhbnlyYW5nZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYW55 cmFuZ2UnLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5faW5jbHVzaW9uX3Vu aW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vcmFuZ2VfaW5jbHVzaW9uX29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICdhbnlyYW5nZScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYW55cmFu Z2UnLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5faW5jbHVzaW9uX3dpdGhp bl9yYW5nZScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3JhbmdlX2luY2x1c2lvbl9vcHMn LCBhbXByb2NsZWZ0dHlwZSA9PiAnYW55cmFuZ2UnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2Fu eXJhbmdlJywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAncmFuZ2VfbWVyZ2UoYW55 cmFuZ2UsYW55cmFuZ2UpJyB9LApAQCAtMTk2Nyw2ICsyMTcxLDkgQEAKIHsgYW1wcm9jZmFtaWx5 ID0+ICdicmluL3BnX2xzbl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3BnX2xzbics CiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAncGdfbHNuJywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1w cm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3Bn X2xzbl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3BnX2xzbicsCisgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAncGdfbHNuJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmlu X21pbm1heF93aXRoaW5fcmFuZ2UnIH0sCiAKICMgbWlubWF4IG11bHRpIHBnX2xzbgogeyBhbXBy b2NmYW1pbHkgPT4gJ2JyaW4vcGdfbHNuX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAncGdfbHNuJywKQEAgLTE5ODQsNiArMjE5MSw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi9wZ19sc25fbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdwZ19sc24n LAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3BnX2xzbicsIGFtcHJvY251bSA9PiAnNScsCiAgIGFt cHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ ICdicmluL3BnX2xzbl9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3BnX2xz bicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAncGdfbHNuJywgYW1wcm9jbnVtID0+ICc2JywKKyAg YW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV93aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi9wZ19sc25fbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICdwZ19sc24nLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3BnX2xzbicsIGFtcHJvY251bSA9PiAn MTEnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX2Rpc3RhbmNlX3BnX2xzbicgfSwK QEAgLTIwMDMsNiArMjIxMyw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9wZ19sc25fYmxv b21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3BnX2xzbicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAncGdfbHNuJywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1wcm9jID0+ICdicmluX2Jsb29tX29w dGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9wZ19sc25fYmxvb21fb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ3BnX2xzbicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAncGdfbHNuJywg YW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3dpdGhpbl9yYW5nZScg fSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3BnX2xzbl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAncGdfbHNuJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdwZ19sc24nLCBhbXByb2Nu dW0gPT4gJzExJywgYW1wcm9jID0+ICdwZ19sc25faGFzaCcgfSwKIApAQCAtMjAxOSw2ICsyMjMy LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2JveF9pbmNsdXNpb25fb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2JveCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYm94JywgYW1wcm9jbnVt ID0+ICc0JywKICAgYW1wcm9jID0+ICdicmluX2luY2x1c2lvbl91bmlvbicgfSwKK3sgYW1wcm9j ZmFtaWx5ID0+ICdicmluL2JveF9pbmNsdXNpb25fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2Jv eCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYm94JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1w cm9jID0+ICdicmluX2luY2x1c2lvbl93aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi9ib3hfaW5jbHVzaW9uX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdib3gnLAogICBh bXByb2NyaWdodHR5cGUgPT4gJ2JveCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2Jv dW5kX2JveCcgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2JveF9pbmNsdXNpb25fb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ2JveCcsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCBkNDY1 MDk0N2M2My4uZmIxZmExNTgxYjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtODkwNCw2 ICs4OTA0LDEwIEBACiB7IG9pZCA9PiAnMzM4NicsIGRlc2NyID0+ICdCUklOIG1pbm1heCBzdXBw b3J0JywKICAgcHJvbmFtZSA9PiAnYnJpbl9taW5tYXhfdW5pb24nLCBwcm9yZXR0eXBlID0+ICdi b29sJywKICAgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsIGludGVybmFsIGludGVybmFsJywgcHJv c3JjID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgb2lkID0+ICc5NjM3JywgZGVzY3IgPT4g J0JSSU4gbWlubWF4IHN1cHBvcnQnLAorICBwcm9uYW1lID0+ICdicmluX21pbm1heF93aXRoaW5f cmFuZ2UnLCBwcm9yZXR0eXBlID0+ICdib29sJywKKyAgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFs IGludGVybmFsIGludGVybmFsIGludGVybmFsJywKKyAgcHJvc3JjID0+ICdicmluX21pbm1heF93 aXRoaW5fcmFuZ2UnIH0sCiAKICMgQlJJTiBtaW5tYXggbXVsdGkKIHsgb2lkID0+ICc0NjE2Jywg ZGVzY3IgPT4gJ0JSSU4gbXVsdGkgbWlubWF4IHN1cHBvcnQnLApAQCAtODkyNSw2ICs4OTI5LDEw IEBACiAgIHByb25hbWUgPT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlvbnMnLCBwcm9pc3N0cmlj dCA9PiAnZicsCiAgIHByb3JldHR5cGUgPT4gJ3ZvaWQnLCBwcm9hcmd0eXBlcyA9PiAnaW50ZXJu YWwnLAogICBwcm9zcmMgPT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlvbnMnIH0sCit7IG9pZCA9 PiAnOTYzOCcsIGRlc2NyID0+ICdCUklOIG11bHRpIG1pbm1heCBzdXBwb3J0JywKKyAgcHJvbmFt ZSA9PiAnYnJpbl9taW5tYXhfbXVsdGlfd2l0aGluX3JhbmdlJywgcHJvcmV0dHlwZSA9PiAnYm9v bCcsCisgIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCBpbnRlcm5hbCBpbnRlcm5hbCBpbnRlcm5h bCcsCisgIHByb3NyYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfd2l0aGluX3JhbmdlJyB9LAogCiB7 IG9pZCA9PiAnNDYyMScsIGRlc2NyID0+ICdCUklOIG11bHRpIG1pbm1heCBpbnQyIGRpc3RhbmNl JywKICAgcHJvbmFtZSA9PiAnYnJpbl9taW5tYXhfbXVsdGlfZGlzdGFuY2VfaW50MicsIHByb3Jl dHR5cGUgPT4gJ2Zsb2F0OCcsCkBAIC05MDExLDYgKzkwMTksMTAgQEAKICAgcHJvbmFtZSA9PiAn YnJpbl9pbmNsdXNpb25fdW5pb24nLCBwcm9yZXR0eXBlID0+ICdib29sJywKICAgcHJvYXJndHlw ZXMgPT4gJ2ludGVybmFsIGludGVybmFsIGludGVybmFsJywKICAgcHJvc3JjID0+ICdicmluX2lu Y2x1c2lvbl91bmlvbicgfSwKK3sgb2lkID0+ICc5NjM5JywgZGVzY3IgPT4gJ0JSSU4gaW5jbHVz aW9uIHN1cHBvcnQnLAorICBwcm9uYW1lID0+ICdicmluX2luY2x1c2lvbl93aXRoaW5fcmFuZ2Un LCBwcm9yZXR0eXBlID0+ICdib29sJywKKyAgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsIGludGVy bmFsIGludGVybmFsIGludGVybmFsJywKKyAgcHJvc3JjID0+ICdicmluX2luY2x1c2lvbl93aXRo aW5fcmFuZ2UnIH0sCiAKICMgQlJJTiBibG9vbQogeyBvaWQgPT4gJzQ1OTEnLCBkZXNjciA9PiAn QlJJTiBibG9vbSBzdXBwb3J0JywKQEAgLTkwMzAsNiArOTA0MiwxMCBAQAogeyBvaWQgPT4gJzQ1 OTUnLCBkZXNjciA9PiAnQlJJTiBibG9vbSBzdXBwb3J0JywKICAgcHJvbmFtZSA9PiAnYnJpbl9i bG9vbV9vcHRpb25zJywgcHJvaXNzdHJpY3QgPT4gJ2YnLCBwcm9yZXR0eXBlID0+ICd2b2lkJywK ICAgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsJywgcHJvc3JjID0+ICdicmluX2Jsb29tX29wdGlv bnMnIH0sCit7IG9pZCA9PiAnOTY0MCcsIGRlc2NyID0+ICdCUklOIGJsb29tIHN1cHBvcnQnLAor ICBwcm9uYW1lID0+ICdicmluX2Jsb29tX3dpdGhpbl9yYW5nZScsIHByb3JldHR5cGUgPT4gJ2Jv b2wnLAorICBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwgaW50ZXJuYWwgaW50ZXJuYWwgaW50ZXJu YWwnLAorICBwcm9zcmMgPT4gJ2JyaW5fYmxvb21fd2l0aGluX3JhbmdlJyB9LAogCiAjIHVzZXJs b2NrIHJlcGxhY2VtZW50cwogeyBvaWQgPT4gJzI4ODAnLCBkZXNjciA9PiAnb2J0YWluIGV4Y2x1 c2l2ZSBhZHZpc29yeSBsb2NrJywKLS0gCjIuNDMuMAoK --0000000000005f4b02063954d601 Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0004-amcheck-brin_index_check-heap-all-indexed.patch" Content-Disposition: attachment; filename="v7-0004-amcheck-brin_index_check-heap-all-indexed.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcszh3x43 RnJvbSA3NDRmNmI0YjFkMzE3Yjc3Y2NhZGFlMGVlZmU4YTA4MDY1ZjQ4ZDRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBcnNlbml5IE11a2hpbiA8YXJzZW5peS5tdWtoaW4uZGV2QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAxNiBKdW4gMjAyNSAxODo0MTozNCArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjcgNC80XSBhbWNoZWNrOiBicmluX2luZGV4X2NoZWNrKCkgLSBoZWFwIGFsbCBpbmRl eGVkCgpUaGlzIGNvbW1pdCBleHRlbmRzIGZ1bmN0aW9uYWxpdHkgb2YgYnJpbl9pbmRleF9jaGVj aygpIHdpdGgKJ2hlYXAgYWxsIGluZGV4ZWQnIGNoZWNrOiB3ZSB2YWxpZGF0ZSBldmVyeSBpbmRl eCByYW5nZSB0dXBsZQphZ2FpbnN0IGV2ZXJ5IGhlYXAgdHVwbGUgd2l0aGluIHRoZSByYW5nZSB1 c2luZyB3aXRoaW5SYW5nZSBmdW5jdGlvbi4KQWxzbywgd2UgY2hlY2sgdGhhdCBmaWVsZHMgJ2hh c19udWxscycsICdhbGxfbnVsbHMnIGFuZAonZW1wdHlfcmFuZ2UnIGFyZSBjb25zaXN0ZW50IHdp dGggdGhlIHJhbmdlIGhlYXAgZGF0YS4gSXQncyB0aGUgbW9zdApleHBlbnNpdmUgcGFydCBvZiB0 aGUgYnJpbl9pbmRleF9jaGVjaygpLCBzbyBpdCdzIG9wdGlvbmFsLgotLS0KIGNvbnRyaWIvYW1j aGVjay9hbWNoZWNrLS0xLjUtLTEuNi5zcWwgICB8ICAgNSArLQogY29udHJpYi9hbWNoZWNrL2V4 cGVjdGVkL2NoZWNrX2JyaW4ub3V0IHwgIDIyICstCiBjb250cmliL2FtY2hlY2svc3FsL2NoZWNr X2JyaW4uc3FsICAgICAgfCAgMjIgKy0KIGNvbnRyaWIvYW1jaGVjay90LzAwN192ZXJpZnlfYnJp bi5wbCAgICB8ICA1MSArKystCiBjb250cmliL2FtY2hlY2svdmVyaWZ5X2JyaW4uYyAgICAgICAg ICAgfCAzMTMgKysrKysrKysrKysrKysrKysrKysrKystCiA1IGZpbGVzIGNoYW5nZWQsIDM3NyBp bnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hl Y2svYW1jaGVjay0tMS41LS0xLjYuc3FsIGIvY29udHJpYi9hbWNoZWNrL2FtY2hlY2stLTEuNS0t MS42LnNxbAppbmRleCA5ZWMwNDZiYjFjZi4uZDRmNDQ0OTViYmEgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvYW1jaGVjay9hbWNoZWNrLS0xLjUtLTEuNi5zcWwKKysrIGIvY29udHJpYi9hbWNoZWNrL2Ft Y2hlY2stLTEuNS0tMS42LnNxbApAQCAtOCwxMSArOCwxMiBAQAogLS0gYnJpbl9pbmRleF9jaGVj aygpCiAtLQogQ1JFQVRFIEZVTkNUSU9OIGJyaW5faW5kZXhfY2hlY2soaW5kZXggcmVnY2xhc3Ms Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWd1bGFyX3BhZ2VzX2NoZWNrIGJv b2xlYW4gZGVmYXVsdCBmYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVn dWxhcnBhZ2VzY2hlY2sgYm9vbGVhbiBkZWZhdWx0IGZhbHNlLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaGVhcGFsbGluZGV4ZWQgYm9vbGVhbiBkZWZhdWx0IGZhbHNlCiApCiAg ICAgUkVUVVJOUyBWT0lECiBBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ2JyaW5faW5kZXhfY2hlY2sn CiBMQU5HVUFHRSBDIFNUUklDVCBQQVJBTExFTCBSRVNUUklDVEVEOwogCiAtLSBXZSBkb24ndCB3 YW50IHRoaXMgdG8gYmUgYXZhaWxhYmxlIHRvIHB1YmxpYwotUkVWT0tFIEFMTCBPTiBGVU5DVElP TiBicmluX2luZGV4X2NoZWNrKHJlZ2NsYXNzLCBib29sZWFuKSBGUk9NIFBVQkxJQzsKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitSRVZPS0UgQUxMIE9OIEZVTkNUSU9OIGJyaW5faW5kZXhf Y2hlY2socmVnY2xhc3MsIGJvb2xlYW4sIGJvb2xlYW4pIEZST00gUFVCTElDOwpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9j aGVja19icmluLm91dCBiL2NvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19icmluLm91dApp bmRleCBlNWZjNTJlZDc0Ny4uZDg4OThmNDdmYmUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVj ay9leHBlY3RlZC9jaGVja19icmluLm91dAorKysgYi9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQv Y2hlY2tfYnJpbi5vdXQKQEAgLTUsNyArNSw3IEBAICQkIExBTkdVQUdFIHNxbDsKIC0tIGVtcHR5 IHRhYmxlIGluZGV4IHNob3VsZCBiZSB2YWxpZAogQ1JFQVRFIFRBQkxFIGJyaW50ZXN0IChhIEJJ R0lOVCkgV0lUSCAoRklMTEZBQ1RPUiA9IDEwKTsKIENSRUFURSBJTkRFWCBicmludGVzdF9pZHgg T04gYnJpbnRlc3QgVVNJTkcgQlJJTiAoYSk7Ci1TRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJp bnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2Jy aW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlLCB0cnVlKTsKICBicmluX2luZGV4X2NoZWNrIAog LS0tLS0tLS0tLS0tLS0tLS0tCiAgCkBAIC0xOSw3ICsxOSw3IEBAIENSRUFURSBJTkRFWCBicmlu dGVzdF9pZHggT04gYnJpbnRlc3QgVVNJTkcgQlJJTiAoYSBURVhUX21pbm1heF9vcHMsIGlkIGlu dDhfbWluCiBJTlNFUlQgSU5UTyBicmludGVzdCAoYSkgU0VMRUNUIHJhbmRvbV9zdHJpbmcoKHgg JSAxMDApKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDMwMDApIHg7CiAtLSBjcmVhdGUgc29tZSBl bXB0eSByYW5nZXMKIERFTEVURSBGUk9NIGJyaW50ZXN0IFdIRVJFIGlkID4gMTUwMCBBTkQgaWQg PCAyNTAwOwotU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNT LCB0cnVlKTsKK1NFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFT UywgdHJ1ZSwgdHJ1ZSk7CiAgYnJpbl9pbmRleF9jaGVjayAKIC0tLS0tLS0tLS0tLS0tLS0tLQog IApAQCAtMjgsNyArMjgsNyBAQCBTRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4 Jzo6UkVHQ0xBU1MsIHRydWUpOwogLS0gcmVidWlsZCBpbmRleAogRFJPUCBJTkRFWCBicmludGVz dF9pZHg7CiBDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5HIEJSSU4g KGEgVEVYVF9taW5tYXhfb3BzKSBXSVRIIChQQUdFU19QRVJfUkFOR0UgPSAyKTsKLVNFTEVDVCBi cmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSk7CitTRUxFQ1Qg YnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUsIHRydWUpOwog IGJyaW5faW5kZXhfY2hlY2sgCiAtLS0tLS0tLS0tLS0tLS0tLS0KICAKQEAgLTQyLDcgKzQyLDcg QEAgQ1JFQVRFIElOREVYIGJyaW50ZXN0X2lkeCBPTiBicmludGVzdCBVU0lORyBCUklOIChhIGlu dDhfbWlubWF4X29wcykgV0lUSCAoUEFHRVMKIElOU0VSVCBJTlRPIGJyaW50ZXN0IChhKSBTRUxF Q1QgeCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMDAwMCkgeDsKIC0tIGNyZWF0ZSBzb21lIGVt cHR5IHJhbmdlcwogREVMRVRFIEZST00gYnJpbnRlc3QgV0hFUkUgYSA+IDIwMDAwIEFORCBhIDwg NDAwMDA7Ci1TRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1Ms IHRydWUpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNT LCB0cnVlLCB0cnVlKTsKICBicmluX2luZGV4X2NoZWNrIAogLS0tLS0tLS0tLS0tLS0tLS0tCiAg CkBAIC01MSw3ICs1MSw3IEBAIFNFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgn OjpSRUdDTEFTUywgdHJ1ZSk7CiAtLSByZWJ1aWxkIGluZGV4CiBEUk9QIElOREVYIGJyaW50ZXN0 X2lkeDsKIENSRUFURSBJTkRFWCBicmludGVzdF9pZHggT04gYnJpbnRlc3QgVVNJTkcgQlJJTiAo YSBpbnQ4X21pbm1heF9vcHMpIFdJVEggKFBBR0VTX1BFUl9SQU5HRSA9IDIpOwotU0VMRUNUIGJy aW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlKTsKK1NFTEVDVCBi cmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSwgdHJ1ZSk7CiAg YnJpbl9pbmRleF9jaGVjayAKIC0tLS0tLS0tLS0tLS0tLS0tLQogIApAQCAtNjUsNyArNjUsNyBA QCBDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEgaW50 OF9taW5tYXhfbXVsdGlfb3BzKSBXSVRICiBJTlNFUlQgSU5UTyBicmludGVzdCAoYSkgU0VMRUNU IHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwMDApIHg7CiAtLSBjcmVhdGUgc29tZSBlbXB0 eSByYW5nZXMKIERFTEVURSBGUk9NIGJyaW50ZXN0IFdIRVJFIGEgPiAyMDAwMCBBTkQgYSA8IDQw MDAwOwotU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0 cnVlKTsKK1NFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywg dHJ1ZSwgdHJ1ZSk7CiAgYnJpbl9pbmRleF9jaGVjayAKIC0tLS0tLS0tLS0tLS0tLS0tLQogIApA QCAtNzQsNyArNzQsNyBAQCBTRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6 UkVHQ0xBU1MsIHRydWUpOwogLS0gcmVidWlsZCBpbmRleAogRFJPUCBJTkRFWCBicmludGVzdF9p ZHg7CiBDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEg aW50OF9taW5tYXhfbXVsdGlfb3BzKSBXSVRIIChQQUdFU19QRVJfUkFOR0UgPSAyKTsKLVNFTEVD VCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSk7CitTRUxF Q1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUsIHRydWUp OwogIGJyaW5faW5kZXhfY2hlY2sgCiAtLS0tLS0tLS0tLS0tLS0tLS0KICAKQEAgLTg4LDcgKzg4 LDcgQEAgQ1JFQVRFIElOREVYIGJyaW50ZXN0X2lkeCBPTiBicmludGVzdCBVU0lORyBCUklOIChh IGludDhfYmxvb21fb3BzKSBXSVRIIChQQUdFU18KIElOU0VSVCBJTlRPIGJyaW50ZXN0IChhKSBT RUxFQ1QgeCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMDAwMCkgeDsKIC0tIGNyZWF0ZSBzb21l IGVtcHR5IHJhbmdlcwogREVMRVRFIEZST00gYnJpbnRlc3QgV0hFUkUgYSA+IDIwMDAwIEFORCBh IDwgNDAwMDA7Ci1TRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xB U1MsIHRydWUpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NM QVNTLCB0cnVlLCB0cnVlKTsKICBicmluX2luZGV4X2NoZWNrIAogLS0tLS0tLS0tLS0tLS0tLS0t CiAgCkBAIC05Nyw3ICs5Nyw3IEBAIFNFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9p ZHgnOjpSRUdDTEFTUywgdHJ1ZSk7CiAtLSByZWJ1aWxkIGluZGV4CiBEUk9QIElOREVYIGJyaW50 ZXN0X2lkeDsKIENSRUFURSBJTkRFWCBicmludGVzdF9pZHggT04gYnJpbnRlc3QgVVNJTkcgQlJJ TiAoYSBpbnQ4X2Jsb29tX29wcykgV0lUSCAoUEFHRVNfUEVSX1JBTkdFID0gMik7Ci1TRUxFQ1Qg YnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUpOworU0VMRUNU IGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlLCB0cnVlKTsK ICBicmluX2luZGV4X2NoZWNrIAogLS0tLS0tLS0tLS0tLS0tLS0tCiAgCkBAIC0xMTMsNyArMTEz LDcgQEAgU0VMRUNUIEJPWChwb2ludChyYW5kb20oKSAqIDEwMDAsIHJhbmRvbSgpICogMTAwMCks IHBvaW50KHJhbmRvbSgpICogMTAwMCwgcmFuZG8KIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEw MDAwKTsKIC0tIGNyZWF0ZSBzb21lIGVtcHR5IHJhbmdlcwogREVMRVRFIEZST00gYnJpbnRlc3Qg V0hFUkUgaWQgPiAyMDAwIEFORCBpZCA8IDQwMDA7Ci1TRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygn YnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2so J2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlLCB0cnVlKTsKICBicmluX2luZGV4X2NoZWNr IAogLS0tLS0tLS0tLS0tLS0tLS0tCiAgCkBAIC0xMjIsNyArMTIyLDcgQEAgU0VMRUNUIGJyaW5f aW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlKTsKIC0tIHJlYnVpbGQg aW5kZXgKIERST1AgSU5ERVggYnJpbnRlc3RfaWR4OwogQ1JFQVRFIElOREVYIGJyaW50ZXN0X2lk eCBPTiBicmludGVzdCBVU0lORyBCUklOIChhIEJPWF9JTkNMVVNJT05fT1BTKSBXSVRIIChQQUdF U19QRVJfUkFOR0UgPSAyKTsKLVNFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgn OjpSRUdDTEFTUywgdHJ1ZSk7CitTRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4 Jzo6UkVHQ0xBU1MsIHRydWUsIHRydWUpOwogIGJyaW5faW5kZXhfY2hlY2sgCiAtLS0tLS0tLS0t LS0tLS0tLS0KICAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay9zcWwvY2hlY2tfYnJpbi5z cWwgYi9jb250cmliL2FtY2hlY2svc3FsL2NoZWNrX2JyaW4uc3FsCmluZGV4IGIzNmFmMzdmZTAz Li5iNDEzNzc5OWM1NyAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL3NxbC9jaGVja19icmlu LnNxbAorKysgYi9jb250cmliL2FtY2hlY2svc3FsL2NoZWNrX2JyaW4uc3FsCkBAIC03LDcgKzcs NyBAQCAkJCBMQU5HVUFHRSBzcWw7CiAtLSBlbXB0eSB0YWJsZSBpbmRleCBzaG91bGQgYmUgdmFs aWQKIENSRUFURSBUQUJMRSBicmludGVzdCAoYSBCSUdJTlQpIFdJVEggKEZJTExGQUNUT1IgPSAx MCk7CiBDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEp OwotU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVl KTsKK1NFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1 ZSwgdHJ1ZSk7CiAtLSBjbGVhbnVwCiBEUk9QIFRBQkxFIGJyaW50ZXN0OwogCkBAIC0xNywxMiAr MTcsMTIgQEAgQ1JFQVRFIElOREVYIGJyaW50ZXN0X2lkeCBPTiBicmludGVzdCBVU0lORyBCUklO IChhIFRFWFRfbWlubWF4X29wcywgaWQgaW50OF9taW4KIElOU0VSVCBJTlRPIGJyaW50ZXN0IChh KSBTRUxFQ1QgcmFuZG9tX3N0cmluZygoeCAlIDEwMCkpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs MzAwMCkgeDsKIC0tIGNyZWF0ZSBzb21lIGVtcHR5IHJhbmdlcwogREVMRVRFIEZST00gYnJpbnRl c3QgV0hFUkUgaWQgPiAxNTAwIEFORCBpZCA8IDI1MDA7Ci1TRUxFQ1QgYnJpbl9pbmRleF9jaGVj aygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUpOworU0VMRUNUIGJyaW5faW5kZXhfY2hl Y2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlLCB0cnVlKTsKIAogLS0gcmVidWlsZCBp bmRleAogRFJPUCBJTkRFWCBicmludGVzdF9pZHg7CiBDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4 IE9OIGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEgVEVYVF9taW5tYXhfb3BzKSBXSVRIIChQQUdFU19Q RVJfUkFOR0UgPSAyKTsKLVNFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpS RUdDTEFTUywgdHJ1ZSk7CitTRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6 UkVHQ0xBU1MsIHRydWUsIHRydWUpOwogLS0gY2xlYW51cAogRFJPUCBUQUJMRSBicmludGVzdDsK IApAQCAtMzQsMTIgKzM0LDEyIEBAIENSRUFURSBJTkRFWCBicmludGVzdF9pZHggT04gYnJpbnRl c3QgVVNJTkcgQlJJTiAoYSBpbnQ4X21pbm1heF9vcHMpIFdJVEggKFBBR0VTCiBJTlNFUlQgSU5U TyBicmludGVzdCAoYSkgU0VMRUNUIHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwMDApIHg7 CiAtLSBjcmVhdGUgc29tZSBlbXB0eSByYW5nZXMKIERFTEVURSBGUk9NIGJyaW50ZXN0IFdIRVJF IGEgPiAyMDAwMCBBTkQgYSA8IDQwMDAwOwotU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50 ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlKTsKK1NFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmlu dGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSwgdHJ1ZSk7CiAKIC0tIHJlYnVpbGQgaW5kZXgKIERS T1AgSU5ERVggYnJpbnRlc3RfaWR4OwogQ1JFQVRFIElOREVYIGJyaW50ZXN0X2lkeCBPTiBicmlu dGVzdCBVU0lORyBCUklOIChhIGludDhfbWlubWF4X29wcykgV0lUSCAoUEFHRVNfUEVSX1JBTkdF ID0gMik7Ci1TRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1Ms IHRydWUpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNT LCB0cnVlLCB0cnVlKTsKIC0tIGNsZWFudXAKIERST1AgVEFCTEUgYnJpbnRlc3Q7CiAKQEAgLTUx LDEyICs1MSwxMiBAQCBDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5H IEJSSU4gKGEgaW50OF9taW5tYXhfbXVsdGlfb3BzKSBXSVRICiBJTlNFUlQgSU5UTyBicmludGVz dCAoYSkgU0VMRUNUIHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwMDApIHg7CiAtLSBjcmVh dGUgc29tZSBlbXB0eSByYW5nZXMKIERFTEVURSBGUk9NIGJyaW50ZXN0IFdIRVJFIGEgPiAyMDAw MCBBTkQgYSA8IDQwMDAwOwotU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6 OlJFR0NMQVNTLCB0cnVlKTsKK1NFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgn OjpSRUdDTEFTUywgdHJ1ZSwgdHJ1ZSk7CiAKIC0tIHJlYnVpbGQgaW5kZXgKIERST1AgSU5ERVgg YnJpbnRlc3RfaWR4OwogQ1JFQVRFIElOREVYIGJyaW50ZXN0X2lkeCBPTiBicmludGVzdCBVU0lO RyBCUklOIChhIGludDhfbWlubWF4X211bHRpX29wcykgV0lUSCAoUEFHRVNfUEVSX1JBTkdFID0g Mik7Ci1TRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRy dWUpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0 cnVlLCB0cnVlKTsKIC0tIGNsZWFudXAKIERST1AgVEFCTEUgYnJpbnRlc3Q7CiAKQEAgLTY4LDEy ICs2OCwxMiBAQCBDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5HIEJS SU4gKGEgaW50OF9ibG9vbV9vcHMpIFdJVEggKFBBR0VTXwogSU5TRVJUIElOVE8gYnJpbnRlc3Qg KGEpIFNFTEVDVCB4IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwMDAwKSB4OwogLS0gY3JlYXRl IHNvbWUgZW1wdHkgcmFuZ2VzCiBERUxFVEUgRlJPTSBicmludGVzdCBXSEVSRSBhID4gMjAwMDAg QU5EIGEgPCA0MDAwMDsKLVNFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpS RUdDTEFTUywgdHJ1ZSk7CitTRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6 UkVHQ0xBU1MsIHRydWUsIHRydWUpOwogCiAtLSByZWJ1aWxkIGluZGV4CiBEUk9QIElOREVYIGJy aW50ZXN0X2lkeDsKIENSRUFURSBJTkRFWCBicmludGVzdF9pZHggT04gYnJpbnRlc3QgVVNJTkcg QlJJTiAoYSBpbnQ4X2Jsb29tX29wcykgV0lUSCAoUEFHRVNfUEVSX1JBTkdFID0gMik7Ci1TRUxF Q1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUpOworU0VM RUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlLCB0cnVl KTsKIC0tIGNsZWFudXAKIERST1AgVEFCTEUgYnJpbnRlc3Q7CiAKQEAgLTg3LDEyICs4NywxMiBA QCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwMCk7CiAtLSBjcmVhdGUgc29tZSBlbXB0eSBy YW5nZXMKIERFTEVURSBGUk9NIGJyaW50ZXN0IFdIRVJFIGlkID4gMjAwMCBBTkQgaWQgPCA0MDAw OwogCi1TRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRy dWUpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0 cnVlLCB0cnVlKTsKIAogLS0gcmVidWlsZCBpbmRleAogRFJPUCBJTkRFWCBicmludGVzdF9pZHg7 CiBDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEgQk9Y X0lOQ0xVU0lPTl9PUFMpIFdJVEggKFBBR0VTX1BFUl9SQU5HRSA9IDIpOwotU0VMRUNUIGJyaW5f aW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlKTsKK1NFTEVDVCBicmlu X2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSwgdHJ1ZSk7CiAtLSBj bGVhbnVwCiBEUk9QIFRBQkxFIGJyaW50ZXN0OwogCmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hl Y2svdC8wMDdfdmVyaWZ5X2JyaW4ucGwgYi9jb250cmliL2FtY2hlY2svdC8wMDdfdmVyaWZ5X2Jy aW4ucGwKaW5kZXggMmM2MmI3NmNjNzAuLjUxYmZlZDdlMjczIDEwMDY0NAotLS0gYS9jb250cmli L2FtY2hlY2svdC8wMDdfdmVyaWZ5X2JyaW4ucGwKKysrIGIvY29udHJpYi9hbWNoZWNrL3QvMDA3 X3ZlcmlmeV9icmluLnBsCkBAIC0yMDAsNiArMjAwLDU1IEBAIG15IEB0ZXN0cyA9ICgKICAgICAg ICAgICAgIHJldHVybiBxcShJTlNFUlQgSU5UTyAkdGVzdF9zdHJ1Y3QtPnt0YWJsZV9uYW1lfSAo YSkgVkFMVUVTICgnYWFhYWEnKTspOwogICAgICAgICB9LAogICAgICAgICBleHBlY3RlZCAgID0+ IHdyYXAoInJldm1hcCBkb2Vzbid0IHBvaW50IHRvIGluZGV4IHR1cGxlLiBSYW5nZSBibGtubzog MCwgcmV2bWFwIGl0ZW06ICgxLDApLCBpbmRleCB0dXBsZTogKDIsMSkiKQorICAgIH0sCisgICAg eworICAgICAgICAjIHJhbmdlIGlzIG1hcmtlZCBhcyBlbXB0eV9yYW5nZSwgYnV0IGhlYXAgaGFz IHNvbWUgZGF0YSBmb3IgdGhlIHJhbmdlCisKKyAgICAgICAgZmluZCAgICAgPT4gcGFjaygnTEND JywgMCwgMHg4OCwgMHgwMyksCisgICAgICAgIHJlcGxhY2UgID0+IHBhY2soJ0xDQycsIDAsIDB4 QTgsIDB4MDEpLAorICAgICAgICBibGtubyAgICAgID0+IDIsICMgcmVndWxhciBwYWdlCisgICAg ICAgIHRhYmxlX2RhdGEgPT4gc3ViIHsKKyAgICAgICAgICAgIG15ICgkdGVzdF9zdHJ1Y3QpID0g QF87CisgICAgICAgICAgICByZXR1cm4gcXEoSU5TRVJUIElOVE8gJHRlc3Rfc3RydWN0LT57dGFi bGVfbmFtZX0gKGEpIFZBTFVFUyAobnVsbCk7KTsKKyAgICAgICAgfSwKKyAgICAgICAgZXhwZWN0 ZWQgICA9PiB3cmFwKCdyYW5nZSBpcyBtYXJrZWQgYXMgZW1wdHkgYnV0IGNvbnRhaW5zIHF1YWxp ZmllZCBsaXZlIHR1cGxlcy4gUmFuZ2UgYmxrbm86IDAsIGhlYXAgdGlkICgwLDEpJykKKyAgICB9 LAorICAgIHsKKyAgICAgICAgIyByYW5nZSBoYXNudWxscyAmIGFsbG51bGxzIGFyZSBmYWxzZSwg YnV0IGhlYXAgY29udGFpbnMgbnVsbCB2YWx1ZXMgZm9yIHRoZSByYW5nZQorCisgICAgICAgIGZp bmQgICAgID0+IHBhY2soJ0xDQycsIDAsIDB4ODgsIDB4MDIpLAorICAgICAgICByZXBsYWNlICA9 PiBwYWNrKCdMQ0MnLCAwLCAweDg4LCAweDAwKSwKKyAgICAgICAgYmxrbm8gICAgICA9PiAyLCAj IHJlZ3VsYXIgcGFnZQorICAgICAgICB0YWJsZV9kYXRhID0+IHN1YiB7CisgICAgICAgICAgICBt eSAoJHRlc3Rfc3RydWN0KSA9IEBfOworICAgICAgICAgICAgcmV0dXJuIHFxKElOU0VSVCBJTlRP ICR0ZXN0X3N0cnVjdC0+e3RhYmxlX25hbWV9IChhKSBWQUxVRVMgKG51bGwpLCAoJ2FhYWFhJyk7 KTsKKyAgICAgICAgfSwKKyAgICAgICAgZXhwZWN0ZWQgICA9PiB3cmFwKCdyYW5nZSBoYXNudWxs cyBhbmQgYWxsbnVsbHMgYXJlIGZhbHNlLCBidXQgY29udGFpbnMgYSBudWxsIHZhbHVlLiBSYW5n ZSBibGtubzogMCwgaGVhcCB0aWQgKDAsMSknKQorICAgIH0sCisgICAgeworICAgICAgICAjIHJh bmdlIGFsbG51bGxzIGlzIHRydWUsIGJ1dCBoZWFwIGNvbnRhaW5zIG5vbi1udWxsIHZhbHVlcyBm b3IgdGhlIHJhbmdlCisKKyAgICAgICAgZmluZCAgICAgPT4gcGFjaygnTENDJywgMCwgMHg4OCwg MHgwMiksCisgICAgICAgIHJlcGxhY2UgID0+IHBhY2soJ0xDQycsIDAsIDB4ODgsIDB4MDEpLAor ICAgICAgICBibGtubyAgICAgID0+IDIsICMgcmVndWxhciBwYWdlCisgICAgICAgIHRhYmxlX2Rh dGEgPT4gc3ViIHsKKyAgICAgICAgICAgIG15ICgkdGVzdF9zdHJ1Y3QpID0gQF87CisgICAgICAg ICAgICByZXR1cm4gcXEoSU5TRVJUIElOVE8gJHRlc3Rfc3RydWN0LT57dGFibGVfbmFtZX0gKGEp IFZBTFVFUyAobnVsbCksICgnYWFhYWEnKTspOworICAgICAgICB9LAorICAgICAgICBleHBlY3Rl ZCAgID0+IHdyYXAoJ3JhbmdlIGFsbG51bGxzIGlzIHRydWUsIGJ1dCBjb250YWlucyBub25udWxs IHZhbHVlLiBSYW5nZSBibGtubzogMCwgaGVhcCB0aWQgKDAsMiknKQorICAgIH0sCisgICAgewor ICAgICAgICAjIGNvbnNpc3RlbnQgZnVuY3Rpb24gcmV0dXJuIEZBTFNFIGZvciB0aGUgdmFsaWQg aGVhcCB2YWx1ZQorICAgICAgICAjIHJlcGxhY2UgImNjY2NjIiB3aXRoICJiYmJiYiIgc28gdGhh dCBtaW5fbWF4IGluZGV4IHdhcyB0b28gbmFycm93CisKKyAgICAgICAgZmluZCAgICAgICA9PiAn Y2NjY2MnLAorICAgICAgICByZXBsYWNlICAgID0+ICdiYmJiYicsCisgICAgICAgIGJsa25vICAg ICAgPT4gMiwgIyByZWd1bGFyIHBhZ2UKKyAgICAgICAgdGFibGVfZGF0YSA9PiBzdWIgeworICAg ICAgICAgICAgbXkgKCR0ZXN0X3N0cnVjdCkgPSBAXzsKKyAgICAgICAgICAgIHJldHVybiBxcShJ TlNFUlQgSU5UTyAkdGVzdF9zdHJ1Y3QtPnt0YWJsZV9uYW1lfSAoYSkgVkFMVUVTICgnYWFhYWEn KSwgKCdjY2NjYycpOyk7CisgICAgICAgIH0sCisgICAgICAgIGV4cGVjdGVkICAgPT4gd3JhcCgn aGVhcCB0dXBsZSBpbmNvbnNpc3RlbnQgd2l0aCBpbmRleC4gUmFuZ2UgYmxrbm86IDAsIGhlYXAg dGlkICgwLDIpJykKICAgICB9CiApOwogCkBAIC0yNDEsNyArMjkwLDcgQEAgZm9yZWFjaCBteSAk dGVzdF9zdHJ1Y3QgKEB0ZXN0cykgewogJG5vZGUtPnN0YXJ0OwogCiBmb3JlYWNoIG15ICR0ZXN0 X3N0cnVjdCAoQHRlc3RzKSB7Ci0gICAgbXkgKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0g JG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywgcXEoU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJyR0ZXN0 X3N0cnVjdC0+e2luZGV4X25hbWV9JywgdHJ1ZSkpKTsKKyAgICBteSAoJHJlc3VsdCwgJHN0ZG91 dCwgJHN0ZGVycikgPSAkbm9kZS0+cHNxbCgncG9zdGdyZXMnLCBxcShTRUxFQ1QgYnJpbl9pbmRl eF9jaGVjaygnJHRlc3Rfc3RydWN0LT57aW5kZXhfbmFtZX0nLCB0cnVlLCB0cnVlKSkpOwogICAg IGxpa2UoJHN0ZGVyciwgJHRlc3Rfc3RydWN0LT57ZXhwZWN0ZWR9KTsKIH0KIApkaWZmIC0tZ2l0 IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9icmluLmMgYi9jb250cmliL2FtY2hlY2svdmVyaWZ5 X2JyaW4uYwppbmRleCBlOTMyN2YyZjg5NS4uYTQ0NmEyMTAwMzAgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvYW1jaGVjay92ZXJpZnlfYnJpbi5jCisrKyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfYnJp bi5jCkBAIC0zOCw3ICszOCw4IEBAIHR5cGVkZWYgc3RydWN0IEJyaW5DaGVja1N0YXRlCiAKIAkv KiBDaGVjayBhcmd1bWVudHMgKi8KIAotCWJvb2wJCXJlZ3VsYXJfcGFnZXNfY2hlY2s7CisJYm9v bAkJcmVndWxhcnBhZ2VzY2hlY2s7CisJYm9vbAkJaGVhcGFsbGluZGV4ZWQ7CiAKIAkvKiBCUklO IGNoZWNrIGNvbW1vbiBmaWVsZHMgKi8KIApAQCAtNjcsNiArNjgsMjUgQEAgdHlwZWRlZiBzdHJ1 Y3QgQnJpbkNoZWNrU3RhdGUKIAlQYWdlCQlyZWdwYWdlOwogCU9mZnNldE51bWJlciByZWdwYWdl b2Zmc2V0OwogCisJLyogSGVhcCBhbGwgaW5kZXhlZCBjaGVjayBmaWVsZHMgKi8KKworCUJyaW5S ZXZtYXAgKnJldm1hcDsKKwlCdWZmZXIJCWJ1ZjsKKwlGbWdySW5mbyAgICp3aXRoaW5SYW5nZUZu OworCWRvdWJsZQkJcmFuZ2VfY250OworCS8qIGZpcnN0IGJsb2NrIG9mIHRoZSBuZXh0IHJhbmdl ICovCisJQmxvY2tOdW1iZXIgbmV4dHJhbmdlQmxrOworCisJLyoKKwkgKiBjaGVja2FibGVfcmFu Z2Ugc2hvd3MgaWYgY3VycmVudCByYW5nZSBjb3VsZCBiZSBjaGVja2VkIGFuZCBkdHVwCisJICog Y29udGFpbnMgdmFsaWQgaW5kZXggdHVwbGUgZm9yIHRoZSByYW5nZS4gSXQgY291bGQgYmUgZmFs c2UgaWYgdGhlCisJICogY3VycmVudCByYW5nZSBpcyBub3Qgc3VtbWFyaXplZCwgb3IgaXQncyBw bGFjZWhvbGRlciwgb3IgaXQncyBqdXN0IGEKKwkgKiBiZWdpbm5pbmcgb2YgdGhlIGNoZWNrCisJ ICovCisJYm9vbAkJY2hlY2thYmxlX3JhbmdlOworCUJyaW5NZW1UdXBsZSAqZHR1cDsKKwlNZW1v cnlDb250ZXh0IHJhbmdlQ3R4OworCU1lbW9yeUNvbnRleHQgaGVhcHR1cGxlQ3R4OwogfQkJCUJy aW5DaGVja1N0YXRlOwogCiBzdGF0aWMgdm9pZCBicmluX2NoZWNrKFJlbGF0aW9uIGlkeHJlbCwg UmVsYXRpb24gaGVhcHJlbCwgdm9pZCAqY2FsbGJhY2tfc3RhdGUsIGJvb2wgcmVhZG9ubHkpOwpA QCAtODcsNiArMTA3LDE3IEBAIHN0YXRpYyBib29sIHJldm1hcF9wb2ludHNfdG9faW5kZXhfdHVw bGUoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSk7CiAKIHN0YXRpYyBJdGVtSWQgUGFnZUdldEl0ZW1J ZENhcmVmdWwoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSk7CiAKK3N0YXRpYyB2b2lkIGNoZWNrX2hl YXBfYWxsX2luZGV4ZWQoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSk7CisKK3N0YXRpYyB2b2lkIGJy aW5fY2hlY2tfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgsCisJCQkJCQkJCUl0ZW1Qb2ludGVyIHRp ZCwKKwkJCQkJCQkJRGF0dW0gKnZhbHVlcywKKwkJCQkJCQkJYm9vbCAqaXNudWxsLAorCQkJCQkJ CQlib29sIHR1cGxlSXNBbGl2ZSwKKwkJCQkJCQkJdm9pZCAqYnJzdGF0ZSk7CisKK3N0YXRpYyB2 b2lkIGNoZWNrX2hlYXBfdHVwbGUoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSwgY29uc3QgRGF0dW0g KnZhbHVlcywgY29uc3QgYm9vbCAqbnVsbHMsIEl0ZW1Qb2ludGVyIHRpZCk7CisKIHN0YXRpYyB2 b2lkIGJyaW5fY2hlY2tfZXJlcG9ydChCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlLCBjb25zdCBjaGFy ICpmbXQpOwogCiBzdGF0aWMgdm9pZCByZXZtYXBfaXRlbV9lcmVwb3J0KEJyaW5DaGVja1N0YXRl ICogc3RhdGUsIGNvbnN0IGNoYXIgKmZtdCk7CkBAIC05NSw2ICsxMjYsNyBAQCBzdGF0aWMgdm9p ZCBpbmRleF90dXBsZV9lcmVwb3J0KEJyaW5DaGVja1N0YXRlICogc3RhdGUsIGNvbnN0IGNoYXIg KmZtdCk7CiAKIHN0YXRpYyB2b2lkIGluZGV4X3R1cGxlX29ubHlfZXJlcG9ydChCcmluQ2hlY2tT dGF0ZSAqIHN0YXRlLCBjb25zdCBjaGFyICpmbXQpOwogCitzdGF0aWMgdm9pZCBhbGxfY29uc2lz dF9lcmVwb3J0KGNvbnN0IEJyaW5DaGVja1N0YXRlICogc3RhdGUsIGNvbnN0IEl0ZW1Qb2ludGVy RGF0YSAqdGlkLCBjb25zdCBjaGFyICptZXNzYWdlKTsKIAogRGF0dW0KIGJyaW5faW5kZXhfY2hl Y2soUEdfRlVOQ1RJT05fQVJHUykKQEAgLTEwMiw3ICsxMzQsOCBAQCBicmluX2luZGV4X2NoZWNr KFBHX0ZVTkNUSU9OX0FSR1MpCiAJT2lkCQkJaW5kcmVsaWQgPSBQR19HRVRBUkdfT0lEKDApOwog CUJyaW5DaGVja1N0YXRlICpzdGF0ZSA9IHBhbGxvYzAoc2l6ZW9mKEJyaW5DaGVja1N0YXRlKSk7 CiAKLQlzdGF0ZS0+cmVndWxhcl9wYWdlc19jaGVjayA9IFBHX0dFVEFSR19CT09MKDEpOworCXN0 YXRlLT5yZWd1bGFycGFnZXNjaGVjayA9IFBHX0dFVEFSR19CT09MKDEpOworCXN0YXRlLT5oZWFw YWxsaW5kZXhlZCA9IFBHX0dFVEFSR19CT09MKDIpOwogCiAJYW1jaGVja19sb2NrX3JlbGF0aW9u X2FuZF9jaGVjayhpbmRyZWxpZCwKIAkJCQkJCQkJCUJSSU5fQU1fT0lELApAQCAtMTI3LDkgKzE2 MCwxMiBAQCBicmluX2NoZWNrKFJlbGF0aW9uIGlkeHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgdm9p ZCAqY2FsbGJhY2tfc3RhdGUsIGJvb2wgcmVhZG9ubAogCXN0YXRlLT5iZGVzYyA9IGJyaW5fYnVp bGRfZGVzYyhpZHhyZWwpOwogCXN0YXRlLT5uYXR0cyA9IHN0YXRlLT5iZGVzYy0+YmRfdHVwZGVz Yy0+bmF0dHM7CiAKLQogCWNoZWNrX2JyaW5faW5kZXhfc3RydWN0dXJlKHN0YXRlKTsKIAorCWlm IChzdGF0ZS0+aGVhcGFsbGluZGV4ZWQpCisJeworCQljaGVja19oZWFwX2FsbF9pbmRleGVkKHN0 YXRlKTsKKwl9CiAKIAlicmluX2ZyZWVfZGVzYyhzdGF0ZS0+YmRlc2MpOwogfQpAQCAtMTYwLDgg KzE5NiwxMyBAQCBjaGVja19icmluX2luZGV4X3N0cnVjdHVyZShCcmluQ2hlY2tTdGF0ZSAqIHN0 YXRlKQogCS8qIENoZWNrIHJldm1hcCBmaXJzdCwgYmxvY2tzOiBbMSwgbGFzdFJldm1hcFBhZ2Vd ICovCiAJY2hlY2tfcmV2bWFwKHN0YXRlKTsKIAotCS8qIENoZWNrIHJlZ3VsYXIgcGFnZXMsIGJs b2NrczogW2xhc3RSZXZtYXBQYWdlICsgMSwgaWR4bmJsb2Nrc10gKi8KLQljaGVja19yZWd1bGFy X3BhZ2VzKHN0YXRlKTsKKworCWlmIChzdGF0ZS0+cmVndWxhcnBhZ2VzY2hlY2spCisJeworCQkv KiBDaGVjayByZWd1bGFyIHBhZ2VzLCBibG9ja3M6IFtsYXN0UmV2bWFwUGFnZSArIDEsIGlkeG5i bG9ja3NdICovCisJCWNoZWNrX3JlZ3VsYXJfcGFnZXMoc3RhdGUpOworCX0KKwogfQogCiAvKiBN ZXRhIHBhZ2UgY2hlY2sgYW5kIHNhdmUgc29tZSBkYXRhIGZvciB0aGUgZnVydGhlciBjaGVjayAq LwpAQCAtNjE0LDExICs2NTUsNiBAQCBjaGVja19yZWd1bGFyX3BhZ2VzKEJyaW5DaGVja1N0YXRl ICogc3RhdGUpCiAJUmVhZFN0cmVhbUJsb2NrTnVtYmVyQ0Igc3RyZWFtX2NiOwogCUJsb2NrUmFu Z2VSZWFkU3RyZWFtUHJpdmF0ZSBzdHJlYW1fZGF0YTsKIAotCWlmICghc3RhdGUtPnJlZ3VsYXJf cGFnZXNfY2hlY2spCi0JewotCQlyZXR1cm47Ci0JfQotCiAJLyogcmVzZXQgc3RhdGUgKi8KIAlz dGF0ZS0+cmV2bWFwQmxrID0gSW52YWxpZEJsb2NrTnVtYmVyOwogCXN0YXRlLT5yZXZtYXBidWYg PSBJbnZhbGlkQnVmZmVyOwpAQCAtNjI4LDcgKzY2NCw2IEBAIGNoZWNrX3JlZ3VsYXJfcGFnZXMo QnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSkKIAlzdGF0ZS0+cmVncGFnZW9mZnNldCA9IEludmFsaWRP ZmZzZXROdW1iZXI7CiAJc3RhdGUtPmlkeG5ibG9ja3MgPSBSZWxhdGlvbkdldE51bWJlck9mQmxv Y2tzKHN0YXRlLT5pZHhyZWwpOwogCi0KIAkvKgogCSAqIFByZXBhcmUgc3RyZWFtIGRhdGEgZm9y IHJlZ3VsYXIgcGFnZXMgd2Fsay4gSXQgaXMgc2FmZSB0byB1c2UgYmF0Y2htb2RlCiAJICogYXMg YmxvY2tfcmFuZ2VfcmVhZF9zdHJlYW1fY2IgdGFrZXMgbm8gbG9ja3MuCkBAIC03ODgsNiArODIz LDI0NiBAQCBQYWdlR2V0SXRlbUlkQ2FyZWZ1bChCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlKQogCXJl dHVybiBpdGVtaWQ7CiB9CiAKKy8qCisgKiBDaGVjayB0aGF0IGV2ZXJ5IGhlYXAgdHVwbGUgYXJl IGNvbnNpc3RlbnQgd2l0aCB0aGUgaW5kZXguCisgKgorICogV2UgdXNlIHdpdGhpblJhbmdlIGZ1 bmN0aW9uIGZvciBldmVyeSBub25udWxsIHZhbHVlIChpbiBjYXNlCisgKiBvZiBpb19yZWd1bGFy X251bGxzID0gZmFsc2Ugd2UgdXNlIHdpdGhpblJhbmdlIGZ1bmN0aW9uIGZvciBudWxsIHZhbHVl cyB0b28pLgorICoKKyAqIEFsc28sIHdlIGNoZWNrIHRoYXQgZmllbGRzICdlbXB0eV9yYW5nZScs ICdhbGxfbnVsbHMnIGFuZCAnaGFzX251bGxzJworICogYXJlIG5vdCB0b28gIm5hcnJvdyIgZm9y IGVhY2ggcmFuZ2UsIHdoaWNoIG1lYW5zOgorICogMSkgaGFzX251bGxzID0gZmFsc2UsIGJ1dCB3 ZSBzZWUgbnVsbCB2YWx1ZSAob25seSBmb3Igb2lfcmVndWxhcl9udWxscyBpcyB0cnVlKQorICog MikgYWxsX251bGxzID0gdHJ1ZSwgYnV0IHdlIHNlZSBub25udWxsIHZhbHVlLgorICogMykgZW1w dHlfcmFuZ2UgPSB0cnVlLCBidXQgd2Ugc2VlIHR1cGxlIHdpdGhpbiB0aGUgcmFuZ2UuCisgKgor ICogV2UgdXNlIGFsbG93U3luYyA9IGZhbHNlLCBiZWNhdXNlIHRoaXMgd2F5CisgKiB3ZSBwcm9j ZXNzIGZ1bGwgcmFuZ2VzIG9uZSBieSBvbmUgZnJvbSB0aGUgZmlyc3QgcmFuZ2UuCisgKiBJdCdz IG5vdCBuZWNlc3NhcnksIGJ1dCBtYWtlcyB0aGUgY29kZSBzaW1wbGVyIGFuZCB0aGlzIHdheQor ICogd2UgbmVlZCB0byBmZXRjaCBldmVyeSBpbmRleCB0dXBsZSBvbmx5IG9uY2UuCisgKi8KK3N0 YXRpYyB2b2lkCitjaGVja19oZWFwX2FsbF9pbmRleGVkKEJyaW5DaGVja1N0YXRlICogc3RhdGUp Cit7CisJUmVsYXRpb24JaWR4cmVsID0gc3RhdGUtPmlkeHJlbDsKKwlSZWxhdGlvbgloZWFwcmVs ID0gc3RhdGUtPmhlYXByZWw7CisJZG91YmxlCQlyZWx0dXBsZXM7CisJSW5kZXhJbmZvICAqaW5k ZXhJbmZvOworCisJLyogaGVhcCBhbGwgaW5kZXhlZCBjaGVjayBmaWVsZHMgaW5pdGlhbGl6YXRp b24gKi8KKworCXN0YXRlLT5yZXZtYXAgPSBicmluUmV2bWFwSW5pdGlhbGl6ZShpZHhyZWwsICZz dGF0ZS0+cGFnZXNQZXJSYW5nZSk7CisJc3RhdGUtPmR0dXAgPSBicmluX25ld19tZW10dXBsZShz dGF0ZS0+YmRlc2MpOworCXN0YXRlLT5jaGVja2FibGVfcmFuZ2UgPSBmYWxzZTsKKwlzdGF0ZS0+ d2l0aGluUmFuZ2VGbiA9IHBhbGxvYzBfYXJyYXkoRm1nckluZm8sIHN0YXRlLT5uYXR0cyk7CisJ c3RhdGUtPnJhbmdlX2NudCA9IDA7CisJLyogbmV4dCByYW5nZSBpcyB0aGUgZmlyc3QgcmFuZ2Ug aW4gdGhlIGJlZ2lubmluZyAqLworCXN0YXRlLT5uZXh0cmFuZ2VCbGsgPSAwOworCXN0YXRlLT5y YW5nZUN0eCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJ CQkJCQkJCQkJImJyaW4gY2hlY2sgcmFuZ2UgY29udGV4dCIsCisJCQkJCQkJCQkJCUFMTE9DU0VU X0RFRkFVTFRfU0laRVMpOworCXN0YXRlLT5oZWFwdHVwbGVDdHggPSBBbGxvY1NldENvbnRleHRD cmVhdGUoQ3VycmVudE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkJCQkiYnJpbiBjaGVjayB0dXBs ZSBjb250ZXh0IiwKKwkJCQkJCQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJLyog UHJlcGFyZSB3aXRoaW5SYW5nZSBmdW5jdGlvbiBmb3IgZWFjaCBhdHRyaWJ1dGUgKi8KKwlmb3Ig KEF0dHJOdW1iZXIgYXR0bm8gPSAxOyBhdHRubyA8PSBzdGF0ZS0+bmF0dHM7IGF0dG5vKyspCisJ eworCQlpZiAoUmVnUHJvY2VkdXJlSXNWYWxpZChpbmRleF9nZXRwcm9jaWQoc3RhdGUtPmlkeHJl bCwgYXR0bm8sIEJSSU5fUFJPQ05VTV9XSVRISU5SQU5HRSkpKQorCQl7CisJCQlGbWdySW5mbyAg ICpmbiA9IGluZGV4X2dldHByb2NpbmZvKGlkeHJlbCwgYXR0bm8sIEJSSU5fUFJPQ05VTV9XSVRI SU5SQU5HRSk7CisKKwkJCWZtZ3JfaW5mb19jb3B5KCZzdGF0ZS0+d2l0aGluUmFuZ2VGblthdHRu byAtIDFdLCBmbiwgQ3VycmVudE1lbW9yeUNvbnRleHQpOworCQl9CisJCWVsc2UKKwkJeworCQkJ LyoKKwkJCSAqIElmIHRoZXJlIGlzIG5vIHdpdGhpblJhbmdlIGZ1bmN0aW9uIGZvciB0aGUgYXR0 cmlidXRlLCBub3RpY2UKKwkJCSAqIHVzZXIgYWJvdXQgaXQuIFdlIGNvbnRpbnVlIGhlYXAgYWxs IGluZGV4ZWQgY2hlY2sgZXZlbiBmb3IKKwkJCSAqIGluZGV4ZXMgd2l0aCBqdXN0IG9uZSBhdHRy aWJ1dGUgYXMgZXZlbiB3aXRob3V0IHN1cHBvcnQKKwkJCSAqIGZ1bmN0aW9uIHNvbWUgZXJyb3Jz IGNvdWxkIGJlIGRldGVjdGVkLgorCQkJICovCisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJZXJy bXNnKCJNaXNzaW5nIHN1cHBvcnQgZnVuY3Rpb24gJWQgZm9yIGF0dHJpYnV0ZSAlZCBvZiBpbmRl eCBcIiVzXCIuICIKKwkJCQkJCSAgICJTa2lwIGhlYXAgYWxsIGluZGV4ZWQgY2hlY2sgZm9yIHRo aXMgYXR0cmlidXRlLiIsCisJCQkJCQkgICBCUklOX1BST0NOVU1fV0lUSElOUkFOR0UsCisJCQkJ CQkgICBhdHRubywKKwkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHN0YXRlLT5pZHhy ZWwpCisJCQkJCQkgICApKTsKKwkJfQorCisJfQorCisJaW5kZXhJbmZvID0gQnVpbGRJbmRleElu Zm8oaWR4cmVsKTsKKworCS8qCisJICogVXNlIHNuYXBzaG90IHRvIGNoZWNrIG9ubHkgdGhvc2Ug dHVwbGVzIHRoYXQgYXJlIGd1YXJhbnRlZWQgdG8gYmUKKwkgKiBpbmRleGVkIGFscmVhZHkuIFVz aW5nIFNuYXBzaG90QW55IHdvdWxkIG1ha2UgaXQgbW9yZSBkaWZmaWN1bHQgdG8gc2F5CisJICog aWYgdGhlcmUgaXMgYSBjb3JydXB0aW9uIG9yIGNoZWNrZWQgdHVwbGUganVzdCBoYXZlbid0IGJl ZW4gaW5kZXhlZAorCSAqIHlldC4KKwkgKi8KKwlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSB0 cnVlOworCXJlbHR1cGxlcyA9IHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oaGVhcHJlbCwgaWR4cmVs LCBpbmRleEluZm8sIGZhbHNlLCB0cnVlLAorCQkJCQkJCQkJICAgYnJpbl9jaGVja19jYWxsYmFj aywgKHZvaWQgKikgc3RhdGUsIE5VTEwpOworCisJZWxvZyhERUJVRzMsICJyYW5nZXMgd2VyZSBj aGVja2VkOiAlZiIsIHN0YXRlLT5yYW5nZV9jbnQpOworCWVsb2coREVCVUczLCAic2NhbiB0b3Rh bCB0dXBsZXM6ICVmIiwgcmVsdHVwbGVzKTsKKworCWlmIChzdGF0ZS0+YnVmICE9IEludmFsaWRC dWZmZXIpCisJCVJlbGVhc2VCdWZmZXIoc3RhdGUtPmJ1Zik7CisKKwlicmluUmV2bWFwVGVybWlu YXRlKHN0YXRlLT5yZXZtYXApOworCU1lbW9yeUNvbnRleHREZWxldGUoc3RhdGUtPnJhbmdlQ3R4 KTsKKwlNZW1vcnlDb250ZXh0RGVsZXRlKHN0YXRlLT5oZWFwdHVwbGVDdHgpOworfQorCisvKgor ICogV2Ugd2FsayBmcm9tIHRoZSBmaXJzdCByYW5nZSAoYmxrbm8gPSAwKSB0byB0aGUgbGFzdCBh cyB0aGUgc2NhbiBwcm9jZWVkLgorICogRm9yIGV2ZXJ5IGhlYXAgdHVwbGUgd2UgY2hlY2sgaWYg d2UgYXJlIGRvbmUgd2l0aCB0aGUgY3VycmVudCByYW5nZSwgYW5kIHdlIG5lZWQgdG8gbW92ZSBm dXJ0aGVyCisgKiB0byB0aGUgY3VycmVudCBoZWFwIHR1cGxlJ3MgcmFuZ2UuIFdoaWxlIG1vdmlu ZyB0byB0aGUgbmV4dCByYW5nZSB3ZSBjaGVjayB0aGF0IGl0J3Mgbm90IGVtcHR5IChiZWNhdXNl CisgKiB3ZSBoYXZlIGF0IGxlYXN0IG9uZSB0dXBsZSBmb3IgdGhpcyByYW5nZSkuCisgKiBFdmVy eSBoZWFwIHR1cGxlIGFyZSBjaGVja2VkIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgcmFuZ2Ug aXQgYmVsb25ncyB0by4KKyAqIEluIGNhc2Ugb2YgdW5zdW1tYXJpemVkIHJhbmdlcyBhbmQgcGxh Y2Vob2xkZXJzIHdlIHNraXAgYWxsIGNoZWNrcy4KKyAqCisgKiBXaGlsZSBtb3ZpbmcsIHdlIG1h eSBqdW1wIG92ZXIgc29tZSByYW5nZXMsCisgKiBidXQgaXQncyBva2F5IGJlY2F1c2Ugd2Ugd291 bGQgbm90IGJlIGFibGUgdG8gY2hlY2sgdGhlbSBhbnl3YXkuCisgKiBXZSBhbHNvIGNhbid0IHNh eSB3aGV0aGVyIHNraXBwZWQgcmFuZ2VzIHNob3VsZCBiZSBtYXJrZWQgYXMgZW1wdHkgb3Igbm90 LAorICogc2luY2UgaXQncyBwb3NzaWJsZSB0aGF0IHRoZXJlIHdlcmUgc29tZSB0dXBsZXMgYmVm b3JlIHRoYXQgYXJlIG5vdyBkZWxldGVkLgorICoKKyAqLworc3RhdGljIHZvaWQKK2JyaW5fY2hl Y2tfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgsIEl0ZW1Qb2ludGVyIHRpZCwgRGF0dW0gKnZhbHVl cywgYm9vbCAqaXNudWxsLCBib29sIHR1cGxlSXNBbGl2ZSwgdm9pZCAqYnJzdGF0ZSkKK3sKKwlC cmluQ2hlY2tTdGF0ZSAqc3RhdGU7CisJQmxvY2tOdW1iZXIgaGVhcGJsazsKKworCXN0YXRlID0g KEJyaW5DaGVja1N0YXRlICopIGJyc3RhdGU7CisJaGVhcGJsayA9IEl0ZW1Qb2ludGVyR2V0Qmxv Y2tOdW1iZXIodGlkKTsKKworCS8qIElmIHdlIHdlbnQgYmV5b25kIHRoZSBjdXJyZW50IHJhbmdl IGxldCdzIGZldGNoIG5ldyByYW5nZSAqLworCWlmIChoZWFwYmxrID49IHN0YXRlLT5uZXh0cmFu Z2VCbGspCisJeworCQlCcmluVHVwbGUgICp0dXA7CisJCUJyaW5UdXBsZSAgKnR1cGNvcHkgPSBO VUxMOworCQlNZW1vcnlDb250ZXh0IG9sZEN0eDsKKwkJT2Zmc2V0TnVtYmVyIG9mZjsKKwkJU2l6 ZQkJc2l6ZTsKKwkJU2l6ZQkJYnR1cHN6ID0gMDsKKworCQlNZW1vcnlDb250ZXh0UmVzZXQoc3Rh dGUtPnJhbmdlQ3R4KTsKKwkJb2xkQ3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHN0YXRlLT5y YW5nZUN0eCk7CisKKwkJc3RhdGUtPnJhbmdlX2NudCsrOworCisJCS8qIE1vdmUgdG8gdGhlIHJh bmdlIHRoYXQgY29udGFpbnMgY3VycmVudCBoZWFwIHR1cGxlICovCisJCXR1cCA9IGJyaW5HZXRU dXBsZUZvckhlYXBCbG9jayhzdGF0ZS0+cmV2bWFwLCBoZWFwYmxrLCAmc3RhdGUtPmJ1ZiwKKwkJ CQkJCQkJCSAgICZvZmYsICZzaXplLCBCVUZGRVJfTE9DS19TSEFSRSk7CisKKwkJaWYgKHR1cCkK KwkJeworCQkJdHVwY29weSA9IGJyaW5fY29weV90dXBsZSh0dXAsIHNpemUsIHR1cGNvcHksICZi dHVwc3opOworCQkJTG9ja0J1ZmZlcihzdGF0ZS0+YnVmLCBCVUZGRVJfTE9DS19VTkxPQ0spOwor CQkJc3RhdGUtPmR0dXAgPSBicmluX2RlZm9ybV90dXBsZShzdGF0ZS0+YmRlc2MsIHR1cGNvcHks IHN0YXRlLT5kdHVwKTsKKworCQkJLyogV2UgY2FuJ3QgY2hlY2sgcGxhY2Vob2xkZXIgcmFuZ2Vz ICovCisJCQlzdGF0ZS0+Y2hlY2thYmxlX3JhbmdlID0gIXN0YXRlLT5kdHVwLT5idF9wbGFjZWhv bGRlcjsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIFdlIGNhbid0IGNoZWNrIHVuc3VtbWFyaXpl ZCByYW5nZXMuICovCisJCQlzdGF0ZS0+Y2hlY2thYmxlX3JhbmdlID0gZmFsc2U7CisJCX0KKwor CQkvKgorCQkgKiBVcGRhdGUgbmV4dHJhbmdlQmxrIHNvIHdlIGtub3cgd2hlbiB3ZSBhcmUgZG9u ZSB3aXRoIHRoZSBjdXJyZW50CisJCSAqIHJhbmdlCisJCSAqLworCQlzdGF0ZS0+bmV4dHJhbmdl QmxrID0gKGhlYXBibGsgLyBzdGF0ZS0+cGFnZXNQZXJSYW5nZSArIDEpICogc3RhdGUtPnBhZ2Vz UGVyUmFuZ2U7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0eCk7CisKKwkJLyogUmFu Z2UgbXVzdCBub3QgYmUgZW1wdHkgKi8KKwkJaWYgKHN0YXRlLT5jaGVja2FibGVfcmFuZ2UgJiYg c3RhdGUtPmR0dXAtPmJ0X2VtcHR5X3JhbmdlKQorCQl7CisJCQlhbGxfY29uc2lzdF9lcmVwb3J0 KHN0YXRlLCB0aWQsICJyYW5nZSBpcyBtYXJrZWQgYXMgZW1wdHkgYnV0IGNvbnRhaW5zIHF1YWxp ZmllZCBsaXZlIHR1cGxlcyIpOworCQl9CisKKwl9CisKKwkvKiBDaGVjayB0dXBsZSBpcyBjb25z aXN0ZW50IHdpdGggdGhlIGluZGV4ICovCisJaWYgKHN0YXRlLT5jaGVja2FibGVfcmFuZ2UpCisJ eworCQljaGVja19oZWFwX3R1cGxlKHN0YXRlLCB2YWx1ZXMsIGlzbnVsbCwgdGlkKTsKKwl9CisK K30KKworLyoKKyAqIFdlIGNoZWNrIGhhc251bGxzIGZsYWdzIGZvciBudWxsIHZhbHVlcyBhbmQg b2lfcmVndWxhcl9udWxscyA9IHRydWUsCisgKiBjaGVjayBhbGxudWxscyBpcyBmYWxzZSBmb3Ig YWxsIG5vbm51bGwgdmFsdWVzIG5vdCBtYXR0ZXIgb2lfcmVndWxhcl9udWxscyBpcyB0cnVlIG9y IG5vdCwKKyAqIFdlIHVzZSB3aXRoaW5SYW5nZUZuIGZvciBhbGwgbm9ubnVsbCB2YWx1ZXMgYW5k IG51bGwgdmFsdWVzIGlmIGlvX3JlZ3VsYXJfbnVsbHMgPSBmYWxzZS4KKyAqLworc3RhdGljIHZv aWQKK2NoZWNrX2hlYXBfdHVwbGUoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSwgY29uc3QgRGF0dW0g KnZhbHVlcywgY29uc3QgYm9vbCAqbnVsbHMsIEl0ZW1Qb2ludGVyIHRpZCkKK3sKKwlpbnQJCQlh dHRpbmRleDsKKwlCcmluTWVtVHVwbGUgKmR0dXAgPSBzdGF0ZS0+ZHR1cDsKKwlCcmluRGVzYyAg ICpiZGVzYyA9IHN0YXRlLT5iZGVzYzsKKwlNZW1vcnlDb250ZXh0IG9sZEN0eDsKKworCUFzc2Vy dChzdGF0ZS0+Y2hlY2thYmxlX3JhbmdlKTsKKworCU1lbW9yeUNvbnRleHRSZXNldChzdGF0ZS0+ aGVhcHR1cGxlQ3R4KTsKKwlvbGRDdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oc3RhdGUtPmhl YXB0dXBsZUN0eCk7CisKKwkvKiBjaGVjayBldmVyeSBpbmRleCBhdHRyaWJ1dGUgKi8KKwlmb3Ig KGF0dGluZGV4ID0gMDsgYXR0aW5kZXggPCBzdGF0ZS0+bmF0dHM7IGF0dGluZGV4KyspCisJewor CQlCcmluVmFsdWVzICpidmFsOworCQlEYXR1bQkJd2l0aGluUmFuZ2VGblJlc3VsdDsKKwkJYm9v bAkJd2l0aGluUmFuZ2U7CisJCWJvb2wJCW9pX3JlZ3VsYXJfbnVsbHMgPSBiZGVzYy0+YmRfaW5m b1thdHRpbmRleF0tPm9pX3JlZ3VsYXJfbnVsbHM7CisKKwkJYnZhbCA9ICZkdHVwLT5idF9jb2x1 bW5zW2F0dGluZGV4XTsKKworCQkvKgorCQkgKiBVc2UgaGFzbnVsbHMgZmxhZyBmb3Igb2lfcmVn dWxhcl9udWxscyBpcyB0cnVlLiBPdGhlcndpc2UsIGRlbGVnYXRlCisJCSAqIGNoZWNrIHRvIHdp dGhpblJhbmdlRm4KKwkJICovCisJCWlmIChudWxsc1thdHRpbmRleF0gJiYgb2lfcmVndWxhcl9u dWxscykKKwkJeworCQkJLyogV2UgaGF2ZSBudWxsIHZhbHVlLCBzbyBoYXNudWxscyBvciBhbGxu dWxscyBtdXN0IGJlIHRydWUgKi8KKwkJCWlmICghKGJ2YWwtPmJ2X2hhc251bGxzIHx8IGJ2YWwt PmJ2X2FsbG51bGxzKSkKKwkJCXsKKwkJCQlhbGxfY29uc2lzdF9lcmVwb3J0KHN0YXRlLCB0aWQs ICJyYW5nZSBoYXNudWxscyBhbmQgYWxsbnVsbHMgYXJlIGZhbHNlLCBidXQgY29udGFpbnMgYSBu dWxsIHZhbHVlIik7CisJCQl9CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qIElmIHdlIGhhdmUg YSBub25udWxsIHZhbHVlIGFsbG51bGxzIHNob3VsZCBiZSBmYWxzZSAqLworCQlpZiAoIW51bGxz W2F0dGluZGV4XSAmJiBidmFsLT5idl9hbGxudWxscykKKwkJeworCQkJYWxsX2NvbnNpc3RfZXJl cG9ydChzdGF0ZSwgdGlkLCAicmFuZ2UgYWxsbnVsbHMgaXMgdHJ1ZSwgYnV0IGNvbnRhaW5zIG5v bm51bGwgdmFsdWUiKTsKKwkJfQorCisJCS8qIElmIG9pX3JlZ3VsYXJfbnVsbHMgPSB0cnVlIHdl IHNob3VsZCBuZXZlciBnZXQgdGhlcmUgd2l0aCBudWxsICovCisJCUFzc2VydCghb2lfcmVndWxh cl9udWxscyB8fCAhbnVsbHNbYXR0aW5kZXhdKTsKKworCQl3aXRoaW5SYW5nZUZuUmVzdWx0ID0g RnVuY3Rpb25DYWxsNENvbGwoJnN0YXRlLT53aXRoaW5SYW5nZUZuW2F0dGluZGV4XSwKKwkJCQkJ CQkJCQkJCXN0YXRlLT5pZHhyZWwtPnJkX2luZGNvbGxhdGlvblthdHRpbmRleF0sCisJCQkJCQkJ CQkJCQlQb2ludGVyR2V0RGF0dW0oYmRlc2MpLAorCQkJCQkJCQkJCQkJUG9pbnRlckdldERhdHVt KGJ2YWwpLAorCQkJCQkJCQkJCQkJdmFsdWVzW2F0dGluZGV4XSwKKwkJCQkJCQkJCQkJCW51bGxz W2F0dGluZGV4XSk7CisKKwkJd2l0aGluUmFuZ2UgPSBEYXR1bUdldEJvb2wod2l0aGluUmFuZ2VG blJlc3VsdCk7CisJCWlmICghd2l0aGluUmFuZ2UpCisJCXsKKwkJCWFsbF9jb25zaXN0X2VyZXBv cnQoc3RhdGUsIHRpZCwgImhlYXAgdHVwbGUgaW5jb25zaXN0ZW50IHdpdGggaW5kZXgiKTsKKwkJ fQorCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDdHgpOworfQogCiAvKiBSZXBvcnQg d2l0aG91dCBhbnkgYWRkaXRpb25hbCBpbmZvICovCiBzdGF0aWMgdm9pZApAQCAtODUzLDMgKzEx MjgsMTkgQEAgcmV2bWFwX2l0ZW1fZXJlcG9ydChCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlLCBjb25z dCBjaGFyICpmbXQpCiAJCQkJCXN0YXRlLT5yZXZtYXBCbGssCiAJCQkJCXN0YXRlLT5yZXZtYXBp ZHgpKSk7CiB9CisKKy8qIFJlcG9ydCB3aXRoIHJhbmdlIGJsa25vLCBoZWFwIHR1cGxlIGluZm8g Ki8KK3N0YXRpYyB2b2lkCithbGxfY29uc2lzdF9lcmVwb3J0KGNvbnN0IEJyaW5DaGVja1N0YXRl ICogc3RhdGUsIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLCBjb25zdCBjaGFyICptZXNzYWdl KQoreworCUFzc2VydChzdGF0ZS0+cmFuZ2VCbGtubyAhPSBJbnZhbGlkQmxvY2tOdW1iZXIpOwor CisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfSU5ERVhfQ09SUlVQVEVEKSwK KwkJCSBlcnJtc2coIkluZGV4ICVzIGlzIG5vdCBjb25zaXN0ZW50IHdpdGggdGhlIGhlYXAgLSAl cy4gUmFuZ2UgYmxrbm86ICV1LCBoZWFwIHRpZCAoJXUsJXUpIiwKKwkJCQkJUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUoc3RhdGUtPmlkeHJlbCksCisJCQkJCW1lc3NhZ2UsCisJCQkJCXN0YXRlLT5k dHVwLT5idF9ibGtubywKKwkJCQkJSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcih0aWQpLAorCQkJ CQlJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcih0aWQpKSkpOworfQotLSAKMi40My4wCgo= --0000000000005f4b02063954d601--