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 1uY9MZ-001rUa-I9 for pgsql-hackers@arkaria.postgresql.org; Sat, 05 Jul 2025 20:19:56 +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 1uY9MW-009uZC-QA for pgsql-hackers@arkaria.postgresql.org; Sat, 05 Jul 2025 20:19:53 +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 1uY9MW-009uZ1-8y for pgsql-hackers@lists.postgresql.org; Sat, 05 Jul 2025 20:19:53 +0000 Received: from mail-yw1-x1132.google.com ([2607:f8b0:4864:20::1132]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uY9MS-005wiN-1c for pgsql-hackers@lists.postgresql.org; Sat, 05 Jul 2025 20:19:52 +0000 Received: by mail-yw1-x1132.google.com with SMTP id 00721157ae682-70e5e6ab7b8so17289287b3.1 for ; Sat, 05 Jul 2025 13:19:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751746786; x=1752351586; darn=lists.postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=O33NBY+mF2B3wZGnBkFWZ9zoJc3ZRtpzeu7yQZJH4MQ=; b=k+C1NWkAMoDgBslN/+J0KaS/bGHTCnbPItJ9mC3KpDDc2iqrA7pTLSSJ4flg51a0Hh U9Nwb+ESJVmRd3P5gTmrwprUMvzP+sqQ9gqUDQPEuYLJcgZT0fWfPl3U1z4prqyOC6Sy esOtrHIhsbuse3arowfoH6JVuBIFLfmnkgUVdYVmwLUBDDWS7iv+Ss2SQbutwH8UV7pw aa4UFylNKR3a2opeE/RNnMnKzLqKieCW0y/TE7AAEi60RfNE3WNj2uIwAmgIzyCy/1w3 +RMaw9epus+/NKm2HzRmMVF1ZJI9R4yDbjqB1lzDcXux0WXJTYlao4iAajZ0Onlu1rN3 8Hyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751746786; x=1752351586; h=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=O33NBY+mF2B3wZGnBkFWZ9zoJc3ZRtpzeu7yQZJH4MQ=; b=ibub17XLW8ZUeeV9qS3jvZEbN++Lmwqm5bLZrj9GxwoFSansXaaIDNXlqBW10bdP7c MihGH6aWT00PRRuYFWUlVmj5qvuIdCTWw/yfmtFPOLIOAWjU9Y3MVLV1TnGReX2rh92x rhjDet0LllmoAZGUIjvgJv/MdcErt6D4f+EH9nQhkY62tNkcQF98n0iawJmmyoVI7ere NgfA7XKCFeeV3KHfmiFnCkpfYMOkIwgIyD6JazHMlND5l+9IHf98UTy3jUcopWklWdLH XGZXU9TzV0ytP9OPtBXEWWZTx9xGdzAqRE4FjxUAUL+lD7f0XrbDO67LnPaeHHcyyTgV 2X2A== X-Gm-Message-State: AOJu0YxtIaVFTQHrxFVnjfSaMrgZ0+cIF6jBWCaKe6fGrgJ+uVK/w2J5 dBM+eIZT+/lNX2aSD445neZg+j/yDNJ2Xz76O8J7SvgHytjbEUbXFr/Uh1Y/Yy+eq6SuhhK+RY2 FNhkfjelFZ1ANK3uoZVxNO4PPl5vZY0v6o1maM5o= X-Gm-Gg: ASbGncvhq5PpH0f9jNUngF7YodcLbOVY7WmYEl2Bxl5BhYEN9HwFdbEZHZOKv6sDbjm znzM/XLGYj1A1gJ7Ha9ZXmXF0apXSrSxSOR2pA4GXeFNtHQ5E7WsrBK8Fg+6+xQ3cs5D5ejZkeP VbAqQvHhJMBAbcb8JSxy2yjNiIdhc8UCJ2VwIwN/rXzZEF X-Google-Smtp-Source: AGHT+IF4xh29mwR1HcImIG7mNjoXqKVOTzGmiOZ/vffr1B7pt2rZ4+se/yCd70yCB1I6az9KujJGXXVT2G979VXqF70= X-Received: by 2002:a05:690c:6911:b0:713:ff41:37f1 with SMTP id 00721157ae682-7176ccea174mr39854817b3.29.1751746786171; Sat, 05 Jul 2025 13:19:46 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Arseniy Mukhin Date: Sat, 5 Jul 2025 23:19:35 +0300 X-Gm-Features: Ac12FXwYJBsY7GGYhBCkKdmFxpfslOh1Ln9pgeACMjb7BBwOXcO1fP4j8vecd7Q Message-ID: Subject: Re: amcheck support for BRIN indexes To: PostgreSQL Hackers , "Andrey M. Borodin" Content-Type: multipart/mixed; boundary="000000000000ed5c510639345447" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ed5c510639345447 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi! On Wed, Jun 18, 2025 at 11:33=E2=80=AFAM Arseniy Mukhin wrote: > ... > On Mon, Jun 16, 2025 at 8:11=E2=80=AFPM Andrey Borodin wrote: > ... > > If it's not very difficult - it would be great to use read_stream infra= structure. See btvacuumscan() in nbtree.c calling read_stream_begin_relatio= n() for example. We cannot use it in logical scans in B-tree\GiST\GIN, but = maybe BRIN can take some advantage of this new shiny technology. > > Thanks, I will look into it. You are right, it was not very difficult to replace index sequential scans with read_streams. Hope I picked correct stream_flag values. Thank you! On Sun, Jun 22, 2025 at 12:55=E2=80=AFAM Arseniy Mukhin wrote: > ... > 1) We can use the addValue() function. It returns FALSE if range data > was not changed (in other words range data already covers heap tuple > data that we pass to the function). It's very easy to do, we can use > heap tuples directly. But the problem I see here is that addValue() > can return TRUE even if heap tuple data have been already covered by > the range, but range data itself changed for some reason (some new > algorithm were applied for instance). So I think we can have some > false positives that we can do nothing about. > And yes, it's not an option really. It turned out that minmax_multi can return true from addValue() even if it already contains the value. So we can drop this option. > ... > 3) The approach that seems to me the most clear and straightforward: > to add new optional function to BRIN opclass API. The function that > would say if passed value is covered with the current range data. it's > exactly what we want to know, so we can use heap data directly here. > Something like that: > > bool withinRange(BrinDesc *bdesc, BrinValues *column, Datum val, bool isn= ull) > > It could be an optional function that will be implemented for all core > BRIN opclasses. So if somebody wants to use it for some custom opclass > they will need to implement it too, but it's not required. I > understand that adding something to the index opclass API requires > very strong arguments. So the argument here is that it will let to do > brin check very robust (without possible false positives as in the > first approach) and easy to use (no additional parameters in the check > function). Also, the withinRange() function could be written in such a > way that it would be more efficient for our task than addValue() or > consistent(). I decided to give it a try and implement such a support function. It was not very difficult since all necessary logic already exists in addValue() and consistent() functions for all core operator classes. The main doubt about this approach: we add something to the core just to use it in the contrib module. But the logic of this method is very common with what we already have there and probably it is not possible to implement it outside of the core, because you need all opclass internals etc. So there is a new version. I renamed 'heap all consistent' -> 'heap all indexed', as btree amcheck calls it. I think there is not much point in using another name here. There are two new files: 0004 - adds new BRIN support function (withinRange). 0005 - migrate 'heap all indexed' from using consistent function to new withinRange function. Patch 0003 still has the old 'heap all indexed' implementation that uses a consistent function (2nd approach). So If you want to have 'heap all indexed' using a consistent function - don't apply 0004 and 0005 patches. Best regards, Arseniy Mukhin --000000000000ed5c510639345447 Content-Type: text/x-patch; charset="US-ASCII"; name="v5-0002-amcheck-brin_index_check-index-structure-check.patch" Content-Disposition: attachment; filename="v5-0002-amcheck-brin_index_check-index-structure-check.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcqopnhj1 RnJvbSAwNjhiN2QxNjBjM2RmZjQ5NjUzZjhkMWRiN2JkZjBkZWNjZmQ3YjZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBcnNlbml5IE11a2hpbiA8YXJzZW5peS5tdWtoaW4uZGV2QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAxNiBKdW4gMjAyNSAxODoxMToyNyArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjUgMi81XSBhbWNoZWNrOiBicmluX2luZGV4X2NoZWNrKCkgLSBpbmRleCBzdHJ1Y3R1 cmUgY2hlY2sKCkFkZHMgYSBuZXcgZnVuY3Rpb24gYnJpbl9pbmRleF9jaGVjaygpIGZvciB2YWxp ZGF0aW5nIEJSSU4gaW5kZXhlcy4KSXQgaW5jdWRlcyBuZXh0IGNoZWNrczoKLSBtZXRhIHBhZ2Ug Y2hlY2tzCi0gcmV2bWFwIHBvaW50ZXJzIGlzIHZhbGlkIGFuZCBwb2ludHMgdG8gaW5kZXggdHVw bGVzIHdpdGggZXhwZWN0ZWQgcmFuZ2UgYmxrbm8KLSBpbmRleCB0dXBsZXMgaGF2ZSBleHBlY3Rl ZCBmb3JtYXQKLSBzb21lIHNwZWNpYWwgY2hlY2tzIGZvciBlbXB0eV9yYW5nZXMKLSBldmVyeSBp bmRleCB0dXBsZSBoYXMgY29ycmVzcG9uZGluZyByZXZtYXAgaXRlbSB0aGF0IHBvaW50cyB0byBp dCAob3B0aW9uYWwpCi0tLQogY29udHJpYi9hbWNoZWNrL01ha2VmaWxlICAgICAgICAgICAgICAg IHwgICA1ICstCiBjb250cmliL2FtY2hlY2svYW1jaGVjay0tMS41LS0xLjYuc3FsICAgfCAgMTgg KwogY29udHJpYi9hbWNoZWNrL2FtY2hlY2suY29udHJvbCAgICAgICAgIHwgICAyICstCiBjb250 cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfYnJpbi5vdXQgfCAxMzQgKysrKwogY29udHJpYi9h bWNoZWNrL21lc29uLmJ1aWxkICAgICAgICAgICAgIHwgICA0ICsKIGNvbnRyaWIvYW1jaGVjay9z cWwvY2hlY2tfYnJpbi5zcWwgICAgICB8IDEwMiArKysKIGNvbnRyaWIvYW1jaGVjay90LzAwN192 ZXJpZnlfYnJpbi5wbCAgICB8IDI5MSArKysrKysrKwogY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9i cmluLmMgICAgICAgICAgIHwgODU1ICsrKysrKysrKysrKysrKysrKysrKysrKwogOCBmaWxlcyBj aGFuZ2VkLCAxNDA4IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx 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 MDAwLi5iZWJjYTkzZDMyZgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvYW1jaGVjay9leHBl Y3RlZC9jaGVja19icmluLm91dApAQCAtMCwwICsxLDEzNCBAQAorLS0gaGVscGVyIGZ1bmMKK0NS RUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OICByYW5kb21fc3RyaW5nKCBJTlQgKSBSRVRVUk5TIFRF WFQgQVMgJCQKK1NFTEVDVCBzdHJpbmdfYWdnKHN1YnN0cmluZygnMDEyMzQ1Njc4OWFiY2RlZmdo aWprbG1ub3BxcnN0dXZ3eHl6JywgY2VpbChyYW5kb20oKSAqIDM2KTo6SU5URUdFUiwgMSksICcn KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAkMSk7CiskJCBMQU5HVUFHRSBzcWw7CistLSBlbXB0 eSB0YWJsZSBpbmRleCBzaG91bGQgYmUgdmFsaWQKK0NSRUFURSBUQUJMRSBicmludGVzdCAoYSBC SUdJTlQpIFdJVEggKEZJTExGQUNUT1IgPSAxMCk7CitDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4 IE9OIGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2Jy aW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlKTsKKyBicmluX2luZGV4X2NoZWNrIAorLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIGNsZWFudXAKK0RST1AgVEFCTEUgYnJpbnRl c3Q7CistLSBtdWx0aSBhdHRyaWJ1dGVzIHdpdGggdmFybGVuYSBhdHRyaWJ1dGUgdGVzdAorQ1JF QVRFIFRBQkxFIGJyaW50ZXN0IChpZCBCSUdTRVJJQUwsIGEgVEVYVCkgV0lUSCAoRklMTEZBQ1RP UiA9IDEwKTsKK0NSRUFURSBJTkRFWCBicmludGVzdF9pZHggT04gYnJpbnRlc3QgVVNJTkcgQlJJ TiAoYSBURVhUX21pbm1heF9vcHMsIGlkIGludDhfbWlubWF4X29wcykgV0lUSCAoUEFHRVNfUEVS X1JBTkdFID0gMik7CitJTlNFUlQgSU5UTyBicmludGVzdCAoYSkgU0VMRUNUIHJhbmRvbV9zdHJp bmcoKHggJSAxMDApKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDUwMDApIHg7CistLSBjcmVhdGUg c29tZSBlbXB0eSByYW5nZXMKK0RFTEVURSBGUk9NIGJyaW50ZXN0IFdIRVJFIGlkID4gMjAwMCBB TkQgaWQgPCA0MDAwOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJF R0NMQVNTKTsKKyBicmluX2luZGV4X2NoZWNrIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKKy0tIHJlYnVpbGQgaW5kZXgKK0RST1AgSU5ERVggYnJpbnRlc3RfaWR4OworQ1JFQVRF IElOREVYIGJyaW50ZXN0X2lkeCBPTiBicmludGVzdCBVU0lORyBCUklOIChhIFRFWFRfbWlubWF4 X29wcykgV0lUSCAoUEFHRVNfUEVSX1JBTkdFID0gMik7CitTRUxFQ1QgYnJpbl9pbmRleF9jaGVj aygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MpOworIGJyaW5faW5kZXhfY2hlY2sgCistLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gY2xlYW51cAorRFJPUCBUQUJMRSBicmludGVz dDsKKy0tIG1pbl9tYXggb3BjbGFzcworQ1JFQVRFIFRBQkxFIGJyaW50ZXN0IChhIEJJR0lOVCkg V0lUSCAoRklMTEZBQ1RPUiA9IDEwKTsKK0NSRUFURSBJTkRFWCBicmludGVzdF9pZHggT04gYnJp bnRlc3QgVVNJTkcgQlJJTiAoYSBpbnQ4X21pbm1heF9vcHMpIFdJVEggKFBBR0VTX1BFUl9SQU5H RSA9IDIpOworSU5TRVJUIElOVE8gYnJpbnRlc3QgKGEpIFNFTEVDVCB4IEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsMTAwMDAwKSB4OworLS0gY3JlYXRlIHNvbWUgZW1wdHkgcmFuZ2VzCitERUxFVEUg RlJPTSBicmludGVzdCBXSEVSRSBhID4gMjAwMDAgQU5EIGEgPCA0MDAwMDsKK1NFTEVDVCBicmlu X2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSk7CisgYnJpbl9pbmRl eF9jaGVjayAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSByZWJ1aWxkIGlu ZGV4CitEUk9QIElOREVYIGJyaW50ZXN0X2lkeDsKK0NSRUFURSBJTkRFWCBicmludGVzdF9pZHgg T04gYnJpbnRlc3QgVVNJTkcgQlJJTiAoYSBpbnQ4X21pbm1heF9vcHMpIFdJVEggKFBBR0VTX1BF Ul9SQU5HRSA9IDIpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJF R0NMQVNTLCB0cnVlKTsKKyBicmluX2luZGV4X2NoZWNrIAorLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKKy0tIGNsZWFudXAKK0RST1AgVEFCTEUgYnJpbnRlc3Q7CistLSBtdWx0aV9t aW5fbWF4IG9wY2xhc3MKK0NSRUFURSBUQUJMRSBicmludGVzdCAoYSBCSUdJTlQpIFdJVEggKEZJ TExGQUNUT1IgPSAxMCk7CitDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVT SU5HIEJSSU4gKGEgaW50OF9taW5tYXhfbXVsdGlfb3BzKSBXSVRIIChQQUdFU19QRVJfUkFOR0Ug PSAyKTsKK0lOU0VSVCBJTlRPIGJyaW50ZXN0IChhKSBTRUxFQ1QgeCBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLDEwMDAwMCkgeDsKKy0tIGNyZWF0ZSBzb21lIGVtcHR5IHJhbmdlcworREVMRVRFIEZS T00gYnJpbnRlc3QgV0hFUkUgYSA+IDIwMDAwIEFORCBhIDwgNDAwMDA7CitTRUxFQ1QgYnJpbl9p bmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUpOworIGJyaW5faW5kZXhf Y2hlY2sgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gcmVidWlsZCBpbmRl eAorRFJPUCBJTkRFWCBicmludGVzdF9pZHg7CitDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9O IGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEgaW50OF9taW5tYXhfbXVsdGlfb3BzKSBXSVRIIChQQUdF U19QRVJfUkFOR0UgPSAyKTsKK1NFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgn OjpSRUdDTEFTUywgdHJ1ZSk7CisgYnJpbl9pbmRleF9jaGVjayAKKy0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCistLSBjbGVhbnVwCitEUk9QIFRBQkxFIGJyaW50ZXN0OworLS0gYmxv b20gb3BjbGFzcworQ1JFQVRFIFRBQkxFIGJyaW50ZXN0IChhIEJJR0lOVCkgV0lUSCAoRklMTEZB Q1RPUiA9IDEwKTsKK0NSRUFURSBJTkRFWCBicmludGVzdF9pZHggT04gYnJpbnRlc3QgVVNJTkcg QlJJTiAoYSBpbnQ4X2Jsb29tX29wcykgV0lUSCAoUEFHRVNfUEVSX1JBTkdFID0gMik7CitJTlNF UlQgSU5UTyBicmludGVzdCAoYSkgU0VMRUNUIHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAw MDApIHg7CistLSBjcmVhdGUgc29tZSBlbXB0eSByYW5nZXMKK0RFTEVURSBGUk9NIGJyaW50ZXN0 IFdIRVJFIGEgPiAyMDAwMCBBTkQgYSA8IDQwMDAwOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2so J2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlKTsKKyBicmluX2luZGV4X2NoZWNrIAorLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIHJlYnVpbGQgaW5kZXgKK0RST1AgSU5E RVggYnJpbnRlc3RfaWR4OworQ1JFQVRFIElOREVYIGJyaW50ZXN0X2lkeCBPTiBicmludGVzdCBV U0lORyBCUklOIChhIGludDhfYmxvb21fb3BzKSBXSVRIIChQQUdFU19QRVJfUkFOR0UgPSAyKTsK K1NFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSk7 CisgYnJpbl9pbmRleF9jaGVjayAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCist LSBjbGVhbnVwCitEUk9QIFRBQkxFIGJyaW50ZXN0OworLS0gaW5jbHVzaW9uIG9wY2xhc3MKK0NS RUFURSBUQUJMRSBicmludGVzdCAoaWQgU0VSSUFMIFBSSU1BUlkgS0VZLCBhIEJPWCk7CitDUkVB VEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEgQk9YX0lOQ0xV U0lPTl9PUFMpIFdJVEggKFBBR0VTX1BFUl9SQU5HRSA9IDIpOworSU5TRVJUIElOVE8gYnJpbnRl c3QgKGEpCitTRUxFQ1QgQk9YKHBvaW50KHJhbmRvbSgpICogMTAwMCwgcmFuZG9tKCkgKiAxMDAw KSwgcG9pbnQocmFuZG9tKCkgKiAxMDAwLCByYW5kb20oKSAqIDEwMDApKQorRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgMTAwMDApOworLS0gY3JlYXRlIHNvbWUgZW1wdHkgcmFuZ2VzCitERUxFVEUg RlJPTSBicmludGVzdCBXSEVSRSBpZCA+IDIwMDAgQU5EIGlkIDwgNDAwMDsKK1NFTEVDVCBicmlu X2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSk7CisgYnJpbl9pbmRl eF9jaGVjayAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSByZWJ1aWxkIGlu ZGV4CitEUk9QIElOREVYIGJyaW50ZXN0X2lkeDsKK0NSRUFURSBJTkRFWCBicmludGVzdF9pZHgg T04gYnJpbnRlc3QgVVNJTkcgQlJJTiAoYSBCT1hfSU5DTFVTSU9OX09QUykgV0lUSCAoUEFHRVNf UEVSX1JBTkdFID0gMik7CitTRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6 UkVHQ0xBU1MsIHRydWUpOworIGJyaW5faW5kZXhfY2hlY2sgCistLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworLS0gY2xlYW51cAorRFJPUCBUQUJMRSBicmludGVzdDsKKy0tIGNsZWFu dXAKK0RST1AgRlVOQ1RJT04gcmFuZG9tX3N0cmluZzsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1j aGVjay9tZXNvbi5idWlsZCBiL2NvbnRyaWIvYW1jaGVjay9tZXNvbi5idWlsZAppbmRleCAxZjBj MzQ3ZWQ1NC4uYmE4MTZjMmZhZjAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay9tZXNvbi5i dWlsZAorKysgYi9jb250cmliL2FtY2hlY2svbWVzb24uYnVpbGQKQEAgLTUsNiArNSw3IEBAIGFt Y2hlY2tfc291cmNlcyA9IGZpbGVzKAogICAndmVyaWZ5X2dpbi5jJywKICAgJ3ZlcmlmeV9oZWFw YW0uYycsCiAgICd2ZXJpZnlfbmJ0cmVlLmMnLAorICAndmVyaWZ5X2JyaW4uYycKICkKIAogaWYg aG9zdF9zeXN0ZW0gPT0gJ3dpbmRvd3MnCkBAIC0yNyw2ICsyOCw3IEBAIGluc3RhbGxfZGF0YSgK ICAgJ2FtY2hlY2stLTEuMi0tMS4zLnNxbCcsCiAgICdhbWNoZWNrLS0xLjMtLTEuNC5zcWwnLAog ICAnYW1jaGVjay0tMS40LS0xLjUuc3FsJywKKyAgJ2FtY2hlY2stLTEuNS0tMS42LnNxbCcsCiAg IGt3YXJnczogY29udHJpYl9kYXRhX2FyZ3MsCiApCiAKQEAgLTQwLDYgKzQyLDcgQEAgdGVzdHMg Kz0gewogICAgICAgJ2NoZWNrX2J0cmVlJywKICAgICAgICdjaGVja19naW4nLAogICAgICAgJ2No ZWNrX2hlYXAnLAorICAgICAgJ2NoZWNrX2JyaW4nCiAgICAgXSwKICAgfSwKICAgJ3RhcCc6IHsK QEAgLTUwLDYgKzUzLDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDA0X3ZlcmlmeV9uYnRyZWVf dW5pcXVlLnBsJywKICAgICAgICd0LzAwNV9waXRyLnBsJywKICAgICAgICd0LzAwNl92ZXJpZnlf Z2luLnBsJywKKyAgICAgICd0LzAwN192ZXJpZnlfYnJpbi5wbCcsCiAgICAgXSwKICAgfSwKIH0K ZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay9zcWwvY2hlY2tfYnJpbi5zcWwgYi9jb250cmli L2FtY2hlY2svc3FsL2NoZWNrX2JyaW4uc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi4wYTVlMjZlYThmNQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvYW1jaGVj ay9zcWwvY2hlY2tfYnJpbi5zcWwKQEAgLTAsMCArMSwxMDIgQEAKKy0tIGhlbHBlciBmdW5jCitD UkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiAgcmFuZG9tX3N0cmluZyggSU5UICkgUkVUVVJOUyBU RVhUIEFTICQkCitTRUxFQ1Qgc3RyaW5nX2FnZyhzdWJzdHJpbmcoJzAxMjM0NTY3ODlhYmNkZWZn aGlqa2xtbm9wcXJzdHV2d3h5eicsIGNlaWwocmFuZG9tKCkgKiAzNik6OklOVEVHRVIsIDEpLCAn JykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgJDEpOworJCQgTEFOR1VBR0Ugc3FsOworCisKKy0t IGVtcHR5IHRhYmxlIGluZGV4IHNob3VsZCBiZSB2YWxpZAorQ1JFQVRFIFRBQkxFIGJyaW50ZXN0 IChhIEJJR0lOVCkgV0lUSCAoRklMTEZBQ1RPUiA9IDEwKTsKK0NSRUFURSBJTkRFWCBicmludGVz dF9pZHggT04gYnJpbnRlc3QgVVNJTkcgQlJJTiAoYSk7CitTRUxFQ1QgYnJpbl9pbmRleF9jaGVj aygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUpOworLS0gY2xlYW51cAorRFJPUCBUQUJM RSBicmludGVzdDsKKworCistLSBtdWx0aSBhdHRyaWJ1dGVzIHdpdGggdmFybGVuYSBhdHRyaWJ1 dGUgdGVzdAorQ1JFQVRFIFRBQkxFIGJyaW50ZXN0IChpZCBCSUdTRVJJQUwsIGEgVEVYVCkgV0lU SCAoRklMTEZBQ1RPUiA9IDEwKTsKK0NSRUFURSBJTkRFWCBicmludGVzdF9pZHggT04gYnJpbnRl c3QgVVNJTkcgQlJJTiAoYSBURVhUX21pbm1heF9vcHMsIGlkIGludDhfbWlubWF4X29wcykgV0lU SCAoUEFHRVNfUEVSX1JBTkdFID0gMik7CitJTlNFUlQgSU5UTyBicmludGVzdCAoYSkgU0VMRUNU IHJhbmRvbV9zdHJpbmcoKHggJSAxMDApKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDUwMDApIHg7 CistLSBjcmVhdGUgc29tZSBlbXB0eSByYW5nZXMKK0RFTEVURSBGUk9NIGJyaW50ZXN0IFdIRVJF IGlkID4gMjAwMCBBTkQgaWQgPCA0MDAwOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50 ZXN0X2lkeCc6OlJFR0NMQVNTKTsKKworLS0gcmVidWlsZCBpbmRleAorRFJPUCBJTkRFWCBicmlu dGVzdF9pZHg7CitDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5HIEJS SU4gKGEgVEVYVF9taW5tYXhfb3BzKSBXSVRIIChQQUdFU19QRVJfUkFOR0UgPSAyKTsKK1NFTEVD VCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUyk7CistLSBjbGVhbnVw CitEUk9QIFRBQkxFIGJyaW50ZXN0OworCisKKworLS0gbWluX21heCBvcGNsYXNzCitDUkVBVEUg VEFCTEUgYnJpbnRlc3QgKGEgQklHSU5UKSBXSVRIIChGSUxMRkFDVE9SID0gMTApOworQ1JFQVRF IElOREVYIGJyaW50ZXN0X2lkeCBPTiBicmludGVzdCBVU0lORyBCUklOIChhIGludDhfbWlubWF4 X29wcykgV0lUSCAoUEFHRVNfUEVSX1JBTkdFID0gMik7CitJTlNFUlQgSU5UTyBicmludGVzdCAo YSkgU0VMRUNUIHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwMDApIHg7CistLSBjcmVhdGUg c29tZSBlbXB0eSByYW5nZXMKK0RFTEVURSBGUk9NIGJyaW50ZXN0IFdIRVJFIGEgPiAyMDAwMCBB TkQgYSA8IDQwMDAwOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJF R0NMQVNTLCB0cnVlKTsKKworLS0gcmVidWlsZCBpbmRleAorRFJPUCBJTkRFWCBicmludGVzdF9p ZHg7CitDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEg aW50OF9taW5tYXhfb3BzKSBXSVRIIChQQUdFU19QRVJfUkFOR0UgPSAyKTsKK1NFTEVDVCBicmlu X2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSk7CistLSBjbGVhbnVw CitEUk9QIFRBQkxFIGJyaW50ZXN0OworCisKKworLS0gbXVsdGlfbWluX21heCBvcGNsYXNzCitD UkVBVEUgVEFCTEUgYnJpbnRlc3QgKGEgQklHSU5UKSBXSVRIIChGSUxMRkFDVE9SID0gMTApOwor Q1JFQVRFIElOREVYIGJyaW50ZXN0X2lkeCBPTiBicmludGVzdCBVU0lORyBCUklOIChhIGludDhf bWlubWF4X211bHRpX29wcykgV0lUSCAoUEFHRVNfUEVSX1JBTkdFID0gMik7CitJTlNFUlQgSU5U TyBicmludGVzdCAoYSkgU0VMRUNUIHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwMDApIHg7 CistLSBjcmVhdGUgc29tZSBlbXB0eSByYW5nZXMKK0RFTEVURSBGUk9NIGJyaW50ZXN0IFdIRVJF IGEgPiAyMDAwMCBBTkQgYSA8IDQwMDAwOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50 ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlKTsKKworLS0gcmVidWlsZCBpbmRleAorRFJPUCBJTkRF WCBicmludGVzdF9pZHg7CitDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVT SU5HIEJSSU4gKGEgaW50OF9taW5tYXhfbXVsdGlfb3BzKSBXSVRIIChQQUdFU19QRVJfUkFOR0Ug PSAyKTsKK1NFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywg dHJ1ZSk7CistLSBjbGVhbnVwCitEUk9QIFRBQkxFIGJyaW50ZXN0OworCisKKworLS0gYmxvb20g b3BjbGFzcworQ1JFQVRFIFRBQkxFIGJyaW50ZXN0IChhIEJJR0lOVCkgV0lUSCAoRklMTEZBQ1RP UiA9IDEwKTsKK0NSRUFURSBJTkRFWCBicmludGVzdF9pZHggT04gYnJpbnRlc3QgVVNJTkcgQlJJ TiAoYSBpbnQ4X2Jsb29tX29wcykgV0lUSCAoUEFHRVNfUEVSX1JBTkdFID0gMik7CitJTlNFUlQg SU5UTyBicmludGVzdCAoYSkgU0VMRUNUIHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwMDAp IHg7CistLSBjcmVhdGUgc29tZSBlbXB0eSByYW5nZXMKK0RFTEVURSBGUk9NIGJyaW50ZXN0IFdI RVJFIGEgPiAyMDAwMCBBTkQgYSA8IDQwMDAwOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2Jy aW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlKTsKKworLS0gcmVidWlsZCBpbmRleAorRFJPUCBJ TkRFWCBicmludGVzdF9pZHg7CitDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0 IFVTSU5HIEJSSU4gKGEgaW50OF9ibG9vbV9vcHMpIFdJVEggKFBBR0VTX1BFUl9SQU5HRSA9IDIp OworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVl KTsKKy0tIGNsZWFudXAKK0RST1AgVEFCTEUgYnJpbnRlc3Q7CisKKworLS0gaW5jbHVzaW9uIG9w Y2xhc3MKK0NSRUFURSBUQUJMRSBicmludGVzdCAoaWQgU0VSSUFMIFBSSU1BUlkgS0VZLCBhIEJP WCk7CitDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEg Qk9YX0lOQ0xVU0lPTl9PUFMpIFdJVEggKFBBR0VTX1BFUl9SQU5HRSA9IDIpOworSU5TRVJUIElO VE8gYnJpbnRlc3QgKGEpCitTRUxFQ1QgQk9YKHBvaW50KHJhbmRvbSgpICogMTAwMCwgcmFuZG9t KCkgKiAxMDAwKSwgcG9pbnQocmFuZG9tKCkgKiAxMDAwLCByYW5kb20oKSAqIDEwMDApKQorRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMDApOworLS0gY3JlYXRlIHNvbWUgZW1wdHkgcmFuZ2Vz CitERUxFVEUgRlJPTSBicmludGVzdCBXSEVSRSBpZCA+IDIwMDAgQU5EIGlkIDwgNDAwMDsKKwor U0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlKTsK KworLS0gcmVidWlsZCBpbmRleAorRFJPUCBJTkRFWCBicmludGVzdF9pZHg7CitDUkVBVEUgSU5E RVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEgQk9YX0lOQ0xVU0lPTl9P UFMpIFdJVEggKFBBR0VTX1BFUl9SQU5HRSA9IDIpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2so J2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlKTsKKy0tIGNsZWFudXAKK0RST1AgVEFCTEUg YnJpbnRlc3Q7CisKKworLS0gY2xlYW51cAorRFJPUCBGVU5DVElPTiByYW5kb21fc3RyaW5nOwpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay90 LzAwN192ZXJpZnlfYnJpbi5wbCBiL2NvbnRyaWIvYW1jaGVjay90LzAwN192ZXJpZnlfYnJpbi5w bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMmM2MmI3NmNjNzAKLS0t IC9kZXYvbnVsbAorKysgYi9jb250cmliL2FtY2hlY2svdC8wMDdfdmVyaWZ5X2JyaW4ucGwKQEAg LTAsMCArMSwyOTEgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDIxLTIwMjUsIFBvc3RncmVTUUwgR2xv YmFsIERldmVsb3BtZW50IEdyb3VwCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwg PT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVT UUw6OlRlc3Q6OlV0aWxzOworCit1c2UgVGVzdDo6TW9yZTsKKworbXkgJG5vZGU7CitteSAkYmxr c2l6ZTsKK215ICRtZXRhX3BhZ2VfYmxrbm8gPSAwOworCisjCisjIFRlc3Qgc2V0LXVwCisjCisk bm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygndGVzdCcpOworJG5vZGUtPmlu aXQobm9fZGF0YV9jaGVja3N1bXMgPT4gMSk7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsICdhdXRvdmFjdXVtPW9mZicpOworJG5vZGUtPnN0YXJ0OworJGJsa3NpemUgPSBp bnQoJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnU0hPVyBibG9ja19zaXplOycpKTsKKyRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgRVhURU5TSU9OIGFtY2hlY2spKTsK KworIyBUZXN0cworbXkgQHRlc3RzID0gKAorICAgIHsKKyAgICAgICAgIyBpbnZhbGlkIG1ldGEg cGFnZSB0eXBlCisKKyAgICAgICAgZmluZCAgICAgPT4gcGFjaygnUycsIDB4RjA5MSksCisgICAg ICAgIHJlcGxhY2UgID0+IHBhY2soJ1MnLCAweEFBQUEpLAorICAgICAgICBibGtubyAgICA9PiAk bWV0YV9wYWdlX2Jsa25vLAorICAgICAgICBleHBlY3RlZCA9PiB3cmFwKCdtZXRhcGFnZSBpcyBj b3JydXB0ZWQnKQorICAgIH0sCisgICAgeworICAgICAgICAjIGludmFsaWQgbWV0YSBwYWdlIG1h Z2ljIHdvcmQKKworICAgICAgICBmaW5kICAgICA9PiBwYWNrKCdMJywgMHhBODEwOUNGQSksCisg ICAgICAgIHJlcGxhY2UgID0+IHBhY2soJ0wnLCAweEJCMTA5Q0ZCKSwKKyAgICAgICAgYmxrbm8g ICAgPT4gJG1ldGFfcGFnZV9ibGtubywKKyAgICAgICAgZXhwZWN0ZWQgPT4gd3JhcCgnbWV0YXBh Z2UgaXMgY29ycnVwdGVkJyksCisgICAgfSwKKyAgICB7CisgICAgICAgICMgaW52YWxpZCBtZXRh IHBhZ2UgaW5kZXggdmVyc2lvbgorCisgICAgICAgIGZpbmQgICAgID0+IHBhY2soJ0wqJywgMHhB ODEwOUNGQSwgMSksCisgICAgICAgIHJlcGxhY2UgID0+IHBhY2soJ0wqJywgMHhBODEwOUNGQSwg MiksCisgICAgICAgIGJsa25vICAgID0+ICRtZXRhX3BhZ2VfYmxrbm8sCisgICAgICAgIGV4cGVj dGVkID0+IHdyYXAoJ21ldGFwYWdlIGlzIGNvcnJ1cHRlZCcpCisgICAgfSwKKyAgICB7CisgICAg ICAgICMgcGFnZXNfcGVyX3JhbmdlIGJlbG93IGxvd2VyIGxpbWl0CisKKyAgICAgICAgZmluZCAg ICAgPT4gcGFjaygnTConLCAweEE4MTA5Q0ZBLCAxLCAxMjgpLAorICAgICAgICByZXBsYWNlICA9 PiBwYWNrKCdMKicsIDB4QTgxMDlDRkEsIDEsIDApLAorICAgICAgICBibGtubyAgICA9PiAkbWV0 YV9wYWdlX2Jsa25vLAorICAgICAgICBleHBlY3RlZCA9PiB3cmFwKCdtZXRhcGFnZSBpcyBjb3Jy dXB0ZWQnKQorICAgIH0sCisgICAgeworICAgICAgICAjIHBhZ2VzX3Blcl9yYW5nZSBhYm92ZSB1 cHBlciBsaW1pdAorCisgICAgICAgIGZpbmQgICAgID0+IHBhY2soJ0wqJywgMHhBODEwOUNGQSwg MSwgMTI4KSwKKyAgICAgICAgcmVwbGFjZSAgPT4gcGFjaygnTConLCAweEE4MTA5Q0ZBLCAxLCAx MzEwNzMpLAorICAgICAgICBibGtubyAgICA9PiAkbWV0YV9wYWdlX2Jsa25vLAorICAgICAgICBl eHBlY3RlZCA9PiB3cmFwKCdtZXRhcGFnZSBpcyBjb3JydXB0ZWQnKQorICAgIH0sCisgICAgewor ICAgICAgICAjIGxhc3RfcmV2bWFwX3BhZ2UgYmVsb3cgbG93ZXIgbGltaXQKKworICAgICAgICBm aW5kICAgICA9PiBwYWNrKCdMKicsIDB4QTgxMDlDRkEsIDEsIDEyOCwgMSksCisgICAgICAgIHJl cGxhY2UgID0+IHBhY2soJ0wqJywgMHhBODEwOUNGQSwgMSwgMTI4LCAwKSwKKyAgICAgICAgYmxr bm8gICAgPT4gJG1ldGFfcGFnZV9ibGtubywKKyAgICAgICAgZXhwZWN0ZWQgPT4gd3JhcCgnbWV0 YXBhZ2UgaXMgY29ycnVwdGVkJyksCisgICAgfSwKKyAgICB7CisKKyAgICAgICAgIyBsYXN0X3Jl dm1hcF9wYWdlIGJleW9uZCBpbmRleCByZWxhdGlvbiBzaXplCisKKyAgICAgICAgZmluZCAgICAg PT4gcGFjaygnTConLCAweEE4MTA5Q0ZBLCAxLCAxMjgsIDEpLAorICAgICAgICByZXBsYWNlICA9 PiBwYWNrKCdMKicsIDB4QTgxMDlDRkEsIDEsIDEyOCwgMTAwKSwKKyAgICAgICAgYmxrbm8gICAg PT4gJG1ldGFfcGFnZV9ibGtubywKKyAgICAgICAgZXhwZWN0ZWQgPT4gd3JhcCgnbWV0YXBhZ2Ug aXMgY29ycnVwdGVkJyksCisgICAgfSwKKyAgICB7CisgICAgICAgICMgaW52YWxpZCByZXZtYXAg cGFnZSB0eXBlCisKKyAgICAgICAgZmluZCAgICAgPT4gcGFjaygnUycsIDB4RjA5MiksCisgICAg ICAgIHJlcGxhY2UgID0+IHBhY2soJ1MnLCAweEFBQUEpLAorICAgICAgICBibGtubyAgICA9PiAx LCAjIHJldm1hcCBwYWdlCisgICAgICAgIGV4cGVjdGVkID0+IHdyYXAoJ3Jldm1hcCBwYWdlIGlz IGV4cGVjdGVkIGF0IGJsb2NrIDEsIGxhc3QgcmV2bWFwIHBhZ2UgMScpLAorICAgIH0sCisgICAg eworICAgICAgICAjIHJldm1hcCBpdGVtIHBvaW50cyBiZXlvbmQgaW5kZXggcmVsYXRpb24gc2l6 ZQorICAgICAgICAjIHJlcGxhY2UgKDIsMSkgd2l0aCAoMTAwLDEpCisKKyAgICAgICAgZmluZCAg ICAgPT4gcGFjaygnUyonLCAwLCAyLCAxKSwKKyAgICAgICAgcmVwbGFjZSAgPT4gcGFjaygnUyon LCAwLCAxMDAsIDEpLAorICAgICAgICBibGtubyAgICA9PiAxLCAjIHJldm1hcCBwYWdlCisgICAg ICAgIGV4cGVjdGVkID0+IHdyYXAoJ3Jldm1hcCBpdGVtIHBvaW50cyB0byBhIG5vbiBleGlzdGlu ZyBibG9jayAxMDAsICcKKyAgICAgICAgICAgIC4gJ2luZGV4IG1heCBibG9jayAyLiBSYW5nZSBi bGtubzogMCwgcmV2bWFwIGl0ZW06ICgxLDApJykKKyAgICB9LAorICAgIHsKKyAgICAgICAgIyBp bnZhbGlkIHJlZ3VsYXIgcGFnZSB0eXBlCisKKyAgICAgICAgZmluZCAgICAgPT4gcGFjaygnUycs IDB4RjA5MyksCisgICAgICAgIHJlcGxhY2UgID0+IHBhY2soJ1MnLCAweEFBQUEpLAorICAgICAg ICBibGtubyAgICA9PiAyLCAjIHJlZ3VsYXIgcGFnZQorICAgICAgICBleHBlY3RlZCA9PiB3cmFw KCdyZXZtYXAgaXRlbSBwb2ludHMgdG8gdGhlIHBhZ2Ugd2hpY2ggaXMgbm90IHJlZ3VsYXIgKGJs a25vOiAyKS4gJworICAgICAgICAgICAgLiAnUmFuZ2UgYmxrbm86IDAsIHJldm1hcCBpdGVtOiAo MSwwKScpCisgICAgfSwKKyAgICB7CisgICAgICAgICMgcmV2bWFwIGl0ZW0gcG9pbnRzIGJleW9u ZCByZWd1bGFyIHBhZ2UgbWF4IG9mZnNldAorICAgICAgICAjIHJlcGxhY2UgKDIsMSkgd2l0aCAo MiwyKQorCisgICAgICAgIGZpbmQgICAgID0+IHBhY2soJ1MqJywgMCwgMiwgMSksCisgICAgICAg IHJlcGxhY2UgID0+IHBhY2soJ1MqJywgMCwgMiwgMiksCisgICAgICAgIGJsa25vICAgID0+IDEs ICMgcmV2bWFwIHBhZ2UKKyAgICAgICAgZXhwZWN0ZWQgPT4gd3JhcCgncmV2bWFwIGl0ZW0gb2Zm c2V0IG51bWJlciAyIGlzIGdyZWF0ZXIgdGhhbiByZWd1bGFyIHBhZ2UgMiBtYXggb2Zmc2V0IDEu ICcKKyAgICAgICAgICAgIC4gJ1JhbmdlIGJsa25vOiAwLCByZXZtYXAgaXRlbTogKDEsMCknKQor ICAgIH0sCisgICAgeworICAgICAgICAjIGludmFsaWQgaW5kZXggdHVwbGUgcmFuZ2UgYmxrbm8K KworICAgICAgICBmaW5kICAgICA9PiBwYWNrKCdMQ0MnLCAwLCAweEE4LCAweDAxKSwKKyAgICAg ICAgcmVwbGFjZSAgPT4gcGFjaygnTENDJywgMSwgMHhBOCwgMHgwMSksCisgICAgICAgIGJsa25v ICAgID0+IDIsICMgcmVndWxhciBwYWdlCisgICAgICAgIGV4cGVjdGVkID0+IHdyYXAoJ2luZGV4 IHR1cGxlIGhhcyBpbnZhbGlkIGJsa25vIDEuIFJhbmdlIGJsa25vOiAwLCByZXZtYXAgaXRlbTog KDEsMCksIGluZGV4IHR1cGxlOiAoMiwxKScpCisgICAgfSwKKyAgICB7CisgICAgICAgICMgcmFu Z2UgYmV5b25kIHRoZSB0YWJsZSBzaXplIGFuZCBpcyBub3QgZW1wdHkKKworICAgICAgICBmaW5k ICAgICA9PiBwYWNrKCdMQ0MnLCAwLCAweEE4LCAweDAxKSwKKyAgICAgICAgcmVwbGFjZSAgPT4g cGFjaygnTENDJywgMCwgMHg4OCwgMHgwMSksCisgICAgICAgIGJsa25vICAgID0+IDIsICMgcmVn dWxhciBwYWdlCisgICAgICAgIGV4cGVjdGVkID0+IHdyYXAoJ3RoZSByYW5nZSBpcyBiZXlvbmQg dGhlIHRhYmxlIHNpemUsIGJ1dCBpcyBub3QgbWFya2VkIGFzIGVtcHR5LCB0YWJsZSBzaXplOiAw IGJsb2Nrcy4gJworICAgICAgICAgICAgLiAnUmFuZ2UgYmxrbm86IDAsIHJldm1hcCBpdGVtOiAo MSwwKSwgaW5kZXggdHVwbGU6ICgyLDEpJykKKyAgICB9LAorICAgIHsKKyAgICAgICAgIyBjb3Jy dXB0IGluZGV4IHR1cGxlIGRhdGEgb2Zmc2V0CisgICAgICAgICMgaGVyZSAgMHgwMCwgMHgwMCwg MHgwMCBpcyBwYWRkaW5nIGFuZCAnLicgaXMgdmFybGVuYSBsZW4gYnl0ZQorCisgICAgICAgIGZp bmQgICAgICAgPT4gcGFjaygnTENDQ0MnLCAwLCAweDA4LCAweDAwLCAweDAwLCAweDAwKSAuICco LiknIC4gJ2FhYWFhJywKKyAgICAgICAgcmVwbGFjZSAgICA9PiBwYWNrKCdMQ0NDQycsIDAsIDB4 MUYsIDB4MDAsIDB4MDAsIDB4MDApIC4gJyQxJyAuICdhYWFhYScsCisgICAgICAgIGJsa25vICAg ICAgPT4gMiwgIyByZWd1bGFyIHBhZ2UKKyAgICAgICAgdGFibGVfZGF0YSA9PiBzdWIgeworICAg ICAgICAgICAgbXkgKCR0ZXN0X3N0cnVjdCkgPSBAXzsKKyAgICAgICAgICAgIHJldHVybiBxcShJ TlNFUlQgSU5UTyAkdGVzdF9zdHJ1Y3QtPnt0YWJsZV9uYW1lfSAoYSkgVkFMVUVTICgnYWFhYWEn KTspOworICAgICAgICB9LAorICAgICAgICBleHBlY3RlZCAgID0+IHFyL2luZGV4IHR1cGxlIGhl YWRlciBsZW5ndGggMzEgaXMgZ3JlYXRlciB0aGFuIHR1cGxlIGxlbiAuLlwuIFxRUmFuZ2UgYmxr bm86IDAsIHJldm1hcCBpdGVtOiAoMSwwKSwgaW5kZXggdHVwbGU6ICgyLDEpXEUvCisgICAgfSwK KyAgICB7CisgICAgICAgICMgZW1wdHkgcmFuZ2UgaW5kZXggdHVwbGUgZG9lc24ndCBoYXZlIG51 bGwgYml0bWFwCisKKyAgICAgICAgZmluZCAgICAgPT4gcGFjaygnTENDJywgMCwgMHhBOCwgMHgw MSksCisgICAgICAgIHJlcGxhY2UgID0+IHBhY2soJ0xDQycsIDAsIDB4MjgsIDB4MDEpLAorICAg ICAgICBibGtubyAgICA9PiAyLCAjIHJlZ3VsYXIgcGFnZQorICAgICAgICBleHBlY3RlZCA9PiB3 cmFwKCdlbXB0eSByYW5nZSBpbmRleCB0dXBsZSBkb2VzblwndCBoYXZlIG51bGwgYml0bWFwLiAn CisgICAgICAgICAgICAuICdSYW5nZSBibGtubzogMCwgcmV2bWFwIGl0ZW06ICgxLDApLCBpbmRl eCB0dXBsZTogKDIsMSknKQorICAgIH0sCisgICAgeworICAgICAgICAjIGVtcHR5IHJhbmdlIGlu ZGV4IHR1cGxlIGFsbF9udWxscyAtPiBmYWxzZQorCisgICAgICAgIGZpbmQgICAgID0+IHBhY2so J0xDQycsIDAsIDB4QTgsIDB4MDEpLAorICAgICAgICByZXBsYWNlICA9PiBwYWNrKCdMQ0MnLCAw LCAweEE4LCAweDAwKSwKKyAgICAgICAgYmxrbm8gICAgPT4gMiwgIyByZWd1bGFyIHBhZ2UKKyAg ICAgICAgZXhwZWN0ZWQgPT4gd3JhcCgnZW1wdHkgcmFuZ2UgaW5kZXggdHVwbGUgYXR0cmlidXRl IDAgd2l0aCBhbGxudWxscyBpcyBmYWxzZS4gJworICAgICAgICAgICAgLiAnUmFuZ2UgYmxrbm86 IDAsIHJldm1hcCBpdGVtOiAoMSwwKSwgaW5kZXggdHVwbGU6ICgyLDEpJykKKyAgICB9LAorICAg IHsKKyAgICAgICAgIyBlbXB0eSByYW5nZSBpbmRleCB0dXBsZSBoYXNfbnVsbHMgLT4gdHJ1ZQor CisgICAgICAgIGZpbmQgICAgID0+IHBhY2soJ0xDQycsIDAsIDB4QTgsIDB4MDEpLAorICAgICAg ICByZXBsYWNlICA9PiBwYWNrKCdMQ0MnLCAwLCAweEE4LCAweDAzKSwKKyAgICAgICAgYmxrbm8g ICAgPT4gMiwgIyByZWd1bGFyIHBhZ2UKKyAgICAgICAgZXhwZWN0ZWQgPT4gd3JhcCgnZW1wdHkg cmFuZ2UgaW5kZXggdHVwbGUgYXR0cmlidXRlIDAgd2l0aCBoYXNudWxscyBpcyB0cnVlLiAnCisg ICAgICAgICAgICAuICdSYW5nZSBibGtubzogMCwgcmV2bWFwIGl0ZW06ICgxLDApLCBpbmRleCB0 dXBsZTogKDIsMSknKQorICAgIH0sCisgICAgeworICAgICAgICAjIGludmFsaWQgaW5kZXggdHVw bGUgZGF0YQorICAgICAgICAjIHJlcGxhY2UgdmFybGVuYSBsZW4gd2l0aCBGRiAtIHNob3VsZCB3 b3JrIHdpdGggYW55IGVuZGlhbm5lc3MKKworICAgICAgICBmaW5kICAgICAgID0+IHBhY2soJ0xD Q0NDJywgMCwgMHgwOCwgMHgwMCwgMHgwMCwgMHgwMCkgLiAnLicgLiAnYWFhYWEnLAorICAgICAg ICByZXBsYWNlICAgID0+IHBhY2soJ0xDQ0NDQycsIDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4MDAs IDB4RkYpIC4gJ2FhYWFhJywKKyAgICAgICAgYmxrbm8gICAgICA9PiAyLCAjIHJlZ3VsYXIgcGFn ZQorICAgICAgICB0YWJsZV9kYXRhID0+IHN1YiB7CisgICAgICAgICAgICBteSAoJHRlc3Rfc3Ry dWN0KSA9IEBfOworICAgICAgICAgICAgcmV0dXJuIHFxKElOU0VSVCBJTlRPICR0ZXN0X3N0cnVj dC0+e3RhYmxlX25hbWV9IChhKSBWQUxVRVMgKCdhYWFhYScpOyk7CisgICAgICAgIH0sCisgICAg ICAgIGV4cGVjdGVkICAgPT4gcXIvYXR0cmlidXRlIDAgc3RvcmVkIHZhbHVlIDAgd2l0aCBsZW5n dGggLTEgZW5kcyBhdCBvZmZzZXQgMTI3IGJleW9uZCB0b3RhbCB0dXBsZSBsZW5ndGggLi5cLlxR IFJhbmdlIGJsa25vOiAwLCByZXZtYXAgaXRlbTogKDEsMCksIGluZGV4IHR1cGxlOiAoMiwxKVxF LworICAgIH0sCisgICAgeworICAgICAgICAjIG9ycGhhbiBpbmRleCB0dXBsZQorICAgICAgICAj IHJlcGxhY2UgdmFsaWQgcmV2bWFwIGl0ZW0gd2l0aCAoMCwwKQorCisgICAgICAgIGZpbmQgICAg ICAgPT4gcGFjaygnUyonLCAwLCAyLCAxKSwKKyAgICAgICAgcmVwbGFjZSAgICA9PiBwYWNrKCdT KicsIDAsIDAsIDApLAorICAgICAgICBibGtubyAgICAgID0+IDEsICMgcmV2bWFwIHBhZ2UKKyAg ICAgICAgdGFibGVfZGF0YSA9PiBzdWIgeworICAgICAgICAgICAgbXkgKCR0ZXN0X3N0cnVjdCkg PSBAXzsKKyAgICAgICAgICAgIHJldHVybiBxcShJTlNFUlQgSU5UTyAkdGVzdF9zdHJ1Y3QtPnt0 YWJsZV9uYW1lfSAoYSkgVkFMVUVTICgnYWFhYWEnKTspOworICAgICAgICB9LAorICAgICAgICBl eHBlY3RlZCAgID0+IHdyYXAoInJldm1hcCBkb2Vzbid0IHBvaW50IHRvIGluZGV4IHR1cGxlLiBS YW5nZSBibGtubzogMCwgcmV2bWFwIGl0ZW06ICgxLDApLCBpbmRleCB0dXBsZTogKDIsMSkiKQor ICAgIH0KKyk7CisKKworIyBpbml0IHRlc3QgZGF0YQorbXkgJGkgPSAxOworZm9yZWFjaCBteSAk dGVzdF9zdHJ1Y3QgKEB0ZXN0cykgeworCisgICAgJHRlc3Rfc3RydWN0LT57dGFibGVfbmFtZX0g PSAndCcgLiAkaSsrOworICAgICR0ZXN0X3N0cnVjdC0+e2luZGV4X25hbWV9ID0gJHRlc3Rfc3Ry dWN0LT57dGFibGVfbmFtZX0gLiAnX2JyaW5faWR4JzsKKworICAgIG15ICR0ZXN0X2RhdGFfc3Fs ID0gJyc7CisgICAgaWYgKGV4aXN0cyAkdGVzdF9zdHJ1Y3QtPnt0YWJsZV9kYXRhfSkgeworICAg ICAgICAkdGVzdF9kYXRhX3NxbCA9ICR0ZXN0X3N0cnVjdC0+e3RhYmxlX2RhdGF9LT4oJHRlc3Rf c3RydWN0KTsKKyAgICB9CisKKyAgICAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAor ICAgICAgICBDUkVBVEUgVEFCTEUgJHRlc3Rfc3RydWN0LT57dGFibGVfbmFtZX0gKGEgVEVYVCk7 CisgICAgICAgICR0ZXN0X2RhdGFfc3FsCisgICAgICAgIENSRUFURSBJTkRFWCAkdGVzdF9zdHJ1 Y3QtPntpbmRleF9uYW1lfSBPTiAkdGVzdF9zdHJ1Y3QtPnt0YWJsZV9uYW1lfSBVU0lORyBCUklO IChhKTsKKyAgICApKTsKKworICAgICR0ZXN0X3N0cnVjdC0+e3JlbHBhdGh9ID0gcmVsYXRpb25f ZmlsZXBhdGgoJHRlc3Rfc3RydWN0LT57aW5kZXhfbmFtZX0pOworfQorCisjIGNvcnJ1cHQgaW5k ZXgKKyRub2RlLT5zdG9wOworCitmb3JlYWNoIG15ICR0ZXN0X3N0cnVjdCAoQHRlc3RzKSB7Cisg ICAgc3RyaW5nX3JlcGxhY2VfYmxvY2soCisgICAgICAgICR0ZXN0X3N0cnVjdC0+e3JlbHBhdGh9 LAorICAgICAgICAkdGVzdF9zdHJ1Y3QtPntmaW5kfSwKKyAgICAgICAgJHRlc3Rfc3RydWN0LT57 cmVwbGFjZX0sCisgICAgICAgICR0ZXN0X3N0cnVjdC0+e2Jsa25vfQorICAgICk7Cit9CisKKyMg YXNzZXJ0aW9ucworJG5vZGUtPnN0YXJ0OworCitmb3JlYWNoIG15ICR0ZXN0X3N0cnVjdCAoQHRl c3RzKSB7CisgICAgbXkgKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGUtPnBzcWwo J3Bvc3RncmVzJywgcXEoU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJyR0ZXN0X3N0cnVjdC0+e2lu ZGV4X25hbWV9JywgdHJ1ZSkpKTsKKyAgICBsaWtlKCRzdGRlcnIsICR0ZXN0X3N0cnVjdC0+e2V4 cGVjdGVkfSk7Cit9CisKKworIyBIZWxwZXJzCisKKyMgUmV0dXJucyB0aGUgZmlsZXN5c3RlbSBw YXRoIGZvciB0aGUgbmFtZWQgcmVsYXRpb24uCitzdWIgcmVsYXRpb25fZmlsZXBhdGggeworICAg IG15ICgkcmVsbmFtZSkgPSBAXzsKKworICAgIG15ICRwZ2RhdGEgPSAkbm9kZS0+ZGF0YV9kaXI7 CisgICAgbXkgJHJlbCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAgICAgcXEo U0VMRUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCckcmVsbmFtZScpKSk7CisgICAgZGllICJwYXRo IG5vdCBmb3VuZCBmb3IgcmVsYXRpb24gJHJlbG5hbWUiIHVubGVzcyBkZWZpbmVkICRyZWw7Cisg ICAgcmV0dXJuICIkcGdkYXRhLyRyZWwiOworfQorCitzdWIgc3RyaW5nX3JlcGxhY2VfYmxvY2sg eworICAgIG15ICgkZmlsZW5hbWUsICRmaW5kLCAkcmVwbGFjZSwgJGJsa25vKSA9IEBfOworCisg ICAgbXkgJGZoOworICAgIG9wZW4oJGZoLCAnKzwnLCAkZmlsZW5hbWUpIG9yIEJBSUxfT1VUKCJv cGVuIGZhaWxlZDogJCEiKTsKKyAgICBiaW5tb2RlICRmaDsKKworICAgIG15ICRvZmZzZXQgPSAk Ymxrbm8gKiAkYmxrc2l6ZTsKKyAgICBteSAkYnVmZmVyOworCisgICAgc3lzc2VlaygkZmgsICRv ZmZzZXQsIDApIG9yIEJBSUxfT1VUKCJzZWVrIGZhaWxlZDogJCEiKTsKKyAgICBzeXNyZWFkKCRm aCwgJGJ1ZmZlciwgJGJsa3NpemUpIG9yIEJBSUxfT1VUKCJyZWFkIGZhaWxlZDogJCEiKTsKKwor ICAgICRidWZmZXIgPX4gcy8kZmluZC8nIicgLiAkcmVwbGFjZSAuICciJy9nZWU7CisKKyAgICBz eXNzZWVrKCRmaCwgJG9mZnNldCwgMCkgb3IgQkFJTF9PVVQoInNlZWsgZmFpbGVkOiAkISIpOwor ICAgIHN5c3dyaXRlKCRmaCwgJGJ1ZmZlcikgb3IgQkFJTF9PVVQoIndyaXRlIGZhaWxlZDogJCEi KTsKKworICAgIGNsb3NlKCRmaCkgb3IgQkFJTF9PVVQoImNsb3NlIGZhaWxlZDogJCEiKTsKKwor ICAgIHJldHVybjsKK30KKworc3ViIHdyYXAKK3sKKyAgICBteSAkaW5wdXQgPSBAXzsKKyAgICBy ZXR1cm4gcXIvXFEkaW5wdXRcRS8KK30KKworZG9uZV90ZXN0aW5nKCk7ClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9icmluLmMg Yi9jb250cmliL2FtY2hlY2svdmVyaWZ5X2JyaW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uMDRlNjUzMTQ3OTYKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL2Ft Y2hlY2svdmVyaWZ5X2JyaW4uYwpAQCAtMCwwICsxLDg1NSBAQAorLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgorICogdmVyaWZ5X2JyaW4uYworICoJICBGdW5jdGlvbnMgdG8gY2hlY2sgcG9zdGdyZXNx bCBicmluIGluZGV4ZXMgZm9yIGNvcnJ1cHRpb24KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYt MjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKgkgIGNvbnRy aWIvYW1jaGVjay92ZXJpZnlfYnJpbi5jCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1 ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisjaW5j bHVkZSAiYWNjZXNzL3RhYmxlLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKKyNpbmNs dWRlICJhY2Nlc3MvdHJhbnNhbS5oIgorI2luY2x1ZGUgImFjY2Vzcy9icmluLmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9pbmRleC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfYW1fZC5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3IuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNs dWRlICJzdG9yYWdlL2xtZ3IuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKKyNpbmNsdWRl ICJ1dGlscy9ndWMuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgImFj Y2Vzcy9icmluX3BhZ2UuaCIKKyNpbmNsdWRlICJhY2Nlc3MvYnJpbl9yZXZtYXAuaCIKKyNpbmNs dWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ2ZXJpZnlfY29tbW9uLmgiCisjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9hcnJheS5oIgorCisKK1BH X0ZVTkNUSU9OX0lORk9fVjEoYnJpbl9pbmRleF9jaGVjayk7CisKK3R5cGVkZWYgc3RydWN0IEJy aW5DaGVja1N0YXRlCit7CisKKwkvKiBDaGVjayBhcmd1bWVudHMgKi8KKworCWJvb2wJCXJlZ3Vs YXJfcGFnZXNfY2hlY2s7CisKKwkvKiBCUklOIGNoZWNrIGNvbW1vbiBmaWVsZHMgKi8KKworCVJl bGF0aW9uCWlkeHJlbDsKKwlSZWxhdGlvbgloZWFwcmVsOworCUJyaW5EZXNjICAgKmJkZXNjOwor CWludAkJCW5hdHRzOworCUJsb2NrTnVtYmVyIHBhZ2VzUGVyUmFuZ2U7CisKKwkvKiBJbmRleCBz dHJ1Y3R1cmUgY2hlY2sgZmllbGRzICovCisKKwlCdWZmZXJBY2Nlc3NTdHJhdGVneSBjaGVja3N0 cmF0ZWd5OworCUJsb2NrTnVtYmVyIGlkeG5ibG9ja3M7CisJQmxvY2tOdW1iZXIgaGVhcG5ibG9j a3M7CisJQmxvY2tOdW1iZXIgbGFzdFJldm1hcFBhZ2U7CisJLyogQ3VycmVudCByYW5nZSBibGtu byAqLworCUJsb2NrTnVtYmVyIHJhbmdlQmxrbm87CisJLyogQ3VycmVudCByZXZtYXAgaXRlbSAq LworCUJsb2NrTnVtYmVyIHJldm1hcEJsazsKKwlCdWZmZXIJCXJldm1hcGJ1ZjsKKwlQYWdlCQly ZXZtYXBwYWdlOworCXVpbnQzMgkJcmV2bWFwaWR4OworCS8qIEN1cnJlbnQgaW5kZXggdHVwbGUg Ki8KKwlCbG9ja051bWJlciByZWdwYWdlQmxrOworCUJ1ZmZlcgkJcmVncGFnZWJ1ZjsKKwlQYWdl CQlyZWdwYWdlOworCU9mZnNldE51bWJlciByZWdwYWdlb2Zmc2V0OworCit9CQkJQnJpbkNoZWNr U3RhdGU7CisKK3N0YXRpYyB2b2lkIGJyaW5fY2hlY2soUmVsYXRpb24gaWR4cmVsLCBSZWxhdGlv biBoZWFwcmVsLCB2b2lkICpjYWxsYmFja19zdGF0ZSwgYm9vbCByZWFkb25seSk7CisKK3N0YXRp YyB2b2lkIGNoZWNrX2JyaW5faW5kZXhfc3RydWN0dXJlKEJyaW5DaGVja1N0YXRlICogcFN0YXRl KTsKKworc3RhdGljIHZvaWQgY2hlY2tfbWV0YShCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlKTsKKwor c3RhdGljIHZvaWQgY2hlY2tfcmV2bWFwKEJyaW5DaGVja1N0YXRlICogc3RhdGUpOworCitzdGF0 aWMgdm9pZCBjaGVja19yZXZtYXBfaXRlbShCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlKTsKKworc3Rh dGljIHZvaWQgY2hlY2tfaW5kZXhfdHVwbGUoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSwgQnJpblR1 cGxlICp0dXBsZSwgSXRlbUlkIGxwKTsKKworc3RhdGljIHZvaWQgY2hlY2tfcmVndWxhcl9wYWdl cyhCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlKTsKKworc3RhdGljIGJvb2wgcmV2bWFwX3BvaW50c190 b19pbmRleF90dXBsZShCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlKTsKKworc3RhdGljIEl0ZW1JZCBQ YWdlR2V0SXRlbUlkQ2FyZWZ1bChCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlKTsKKworc3RhdGljIHZv aWQgYnJpbl9jaGVja19lcmVwb3J0KEJyaW5DaGVja1N0YXRlICogc3RhdGUsIGNvbnN0IGNoYXIg KmZtdCk7CisKK3N0YXRpYyB2b2lkIHJldm1hcF9pdGVtX2VyZXBvcnQoQnJpbkNoZWNrU3RhdGUg KiBzdGF0ZSwgY29uc3QgY2hhciAqZm10KTsKKworc3RhdGljIHZvaWQgaW5kZXhfdHVwbGVfZXJl cG9ydChCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlLCBjb25zdCBjaGFyICpmbXQpOworCitzdGF0aWMg dm9pZCBpbmRleF90dXBsZV9vbmx5X2VyZXBvcnQoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSwgY29u c3QgY2hhciAqZm10KTsKKworCitEYXR1bQorYnJpbl9pbmRleF9jaGVjayhQR19GVU5DVElPTl9B UkdTKQoreworCU9pZAkJCWluZHJlbGlkID0gUEdfR0VUQVJHX09JRCgwKTsKKwlCcmluQ2hlY2tT dGF0ZSAqc3RhdGUgPSBwYWxsb2MwKHNpemVvZihCcmluQ2hlY2tTdGF0ZSkpOworCisJc3RhdGUt PnJlZ3VsYXJfcGFnZXNfY2hlY2sgPSBQR19HRVRBUkdfQk9PTCgxKTsKKworCWFtY2hlY2tfbG9j a19yZWxhdGlvbl9hbmRfY2hlY2soaW5kcmVsaWQsCisJCQkJCQkJCQlCUklOX0FNX09JRCwKKwkJ CQkJCQkJCWJyaW5fY2hlY2ssCisJCQkJCQkJCQlTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2ssCisJ CQkJCQkJCQlzdGF0ZSk7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQorCisvKgorICogTWFpbiBj aGVjayBmdW5jdGlvbgorICovCitzdGF0aWMgdm9pZAorYnJpbl9jaGVjayhSZWxhdGlvbiBpZHhy ZWwsIFJlbGF0aW9uIGhlYXByZWwsIHZvaWQgKmNhbGxiYWNrX3N0YXRlLCBib29sIHJlYWRvbmx5 KQoreworCUJyaW5DaGVja1N0YXRlICpzdGF0ZSA9IChCcmluQ2hlY2tTdGF0ZSAqKSBjYWxsYmFj a19zdGF0ZTsKKworCS8qIEluaXRpYWxpemUgY2hlY2sgY29tbW9uIGZpZWxkcyAqLworCXN0YXRl LT5pZHhyZWwgPSBpZHhyZWw7CisJc3RhdGUtPmhlYXByZWwgPSBoZWFwcmVsOworCXN0YXRlLT5i ZGVzYyA9IGJyaW5fYnVpbGRfZGVzYyhpZHhyZWwpOworCXN0YXRlLT5uYXR0cyA9IHN0YXRlLT5i ZGVzYy0+YmRfdHVwZGVzYy0+bmF0dHM7CisKKworCWNoZWNrX2JyaW5faW5kZXhfc3RydWN0dXJl KHN0YXRlKTsKKworCisJYnJpbl9mcmVlX2Rlc2Moc3RhdGUtPmJkZXNjKTsKK30KKworLyoKKyAq IENoZWNrIHRoYXQgaW5kZXggaGFzIGV4cGVjdGVkIHN0cnVjdHVyZQorICoKKyAqICBTb21lIGNo ZWNrIGV4cGVjdGF0aW9uczoKKyAqIC0gd2UgaG9sZCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2ss IHNvIHJldm1hcCBjb3VsZCBub3QgYmUgZXh0ZW5kZWQgKGkuZS4gbm8gZXZhY3VhdGlvbikgd2hp bGUgY2hlY2sgYXMgd2VsbCBhcworICogICBhbGwgcmVndWxhciBwYWdlcyBzaG91bGQgc3RheSBy ZWd1bGFyIGFuZCByYW5nZXMgY291bGQgbm90IGJlIHN1bW1hcml6ZWQgYW5kIGRlc3VtbWFyaXpl ZC4KKyAqICAgTmV2ZXJ0aGVsZXNzLCBjb25jdXJyZW50IHVwZGF0ZXMgY291bGQgbGVhZCB0byBu ZXcgcmVndWxhciBwYWdlIGFsbG9jYXRpb25zCisgKiAgIGFuZCBtb3Zpbmcgb2YgaW5kZXggdHVw bGVzLgorICogLSBpZiByZXZtYXAgcG9pbnRlciBpcyB2YWxpZCB0aGVyZSBzaG91bGQgYmUgdmFs aWQgaW5kZXggdHVwbGUgaXQgcG9pbnRzIHRvLgorICogLSB0aGVyZSBhcmUgbm8gb3JwaGFuIGlu ZGV4IHR1cGxlcyAoaWYgdGhlcmUgaXMgYW4gaW5kZXggdHVwbGUsIHRoZSByZXZtYXAgaXRlbSBw b2ludHMgdG8gdGhpcyB0dXBsZSBhbHNvIG11c3QgZXhpc3QpCisgKiAtIGl0J3MgcG9zc2libGUg dG8gZW5jb3VudGVyIHBsYWNlaG9sZGVyIHR1cGxlcyAoYXMgYSByZXN1bHQgb2YgY3Jhc2gpCisg KiAtIGl0J3MgcG9zc2libGUgdG8gZW5jb3VudGVyIG5ldyBwYWdlcyBpbnN0ZWFkIG9mIHJlZ3Vs YXIgKGFzIGEgcmVzdWx0IG9mIGNyYXNoKQorICogLSBpdCdzIHBvc3NpYmxlIHRvIGVuY291bnRl ciBwYWdlcyB3aXRoIGV2YWN1YXRpb24gYml0IChhcyBhIHJlc3VsdCBvZiBjcmFzaCkKKyAqCisg Ki8KK3N0YXRpYyB2b2lkCitjaGVja19icmluX2luZGV4X3N0cnVjdHVyZShCcmluQ2hlY2tTdGF0 ZSAqIHN0YXRlKQoreworCS8qIEluZGV4IHN0cnVjdHVyZSBjaGVjayBmaWVsZHMgaW5pdGlhbGl6 YXRpb24gKi8KKwlzdGF0ZS0+Y2hlY2tzdHJhdGVneSA9IEdldEFjY2Vzc1N0cmF0ZWd5KEJBU19C VUxLUkVBRCk7CisKKwljaGVja19tZXRhKHN0YXRlKTsKKworCS8qIENoZWNrIHJldm1hcCBmaXJz dCwgYmxvY2tzOiBbMSwgbGFzdFJldm1hcFBhZ2VdICovCisJY2hlY2tfcmV2bWFwKHN0YXRlKTsK KworCS8qIENoZWNrIHJlZ3VsYXIgcGFnZXMsIGJsb2NrczogW2xhc3RSZXZtYXBQYWdlICsgMSwg aWR4bmJsb2Nrc10gKi8KKwljaGVja19yZWd1bGFyX3BhZ2VzKHN0YXRlKTsKK30KKworLyogTWV0 YSBwYWdlIGNoZWNrIGFuZCBzYXZlIHNvbWUgZGF0YSBmb3IgdGhlIGZ1cnRoZXIgY2hlY2sgKi8K K3N0YXRpYyB2b2lkCitjaGVja19tZXRhKEJyaW5DaGVja1N0YXRlICogc3RhdGUpCit7CisJQnVm ZmVyCQltZXRhYnVmOworCVBhZ2UJCW1ldGFwYWdlOworCUJyaW5NZXRhUGFnZURhdGEgKm1ldGFk YXRhOworCisJLyogTWV0YSBwYWdlIGNoZWNrICovCisJbWV0YWJ1ZiA9IFJlYWRCdWZmZXJFeHRl bmRlZChzdGF0ZS0+aWR4cmVsLCBNQUlOX0ZPUktOVU0sIEJSSU5fTUVUQVBBR0VfQkxLTk8sIFJC TV9OT1JNQUwsCisJCQkJCQkJCSBzdGF0ZS0+Y2hlY2tzdHJhdGVneSk7CisJTG9ja0J1ZmZlciht ZXRhYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7CisJbWV0YXBhZ2UgPSBCdWZmZXJHZXRQYWdlKG1l dGFidWYpOworCW1ldGFkYXRhID0gKEJyaW5NZXRhUGFnZURhdGEgKikgUGFnZUdldENvbnRlbnRz KG1ldGFwYWdlKTsKKwlzdGF0ZS0+aWR4bmJsb2NrcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZCbG9j a3Moc3RhdGUtPmlkeHJlbCk7CisKKworCWlmICghQlJJTl9JU19NRVRBX1BBR0UobWV0YXBhZ2Up IHx8CisJCW1ldGFkYXRhLT5icmluTWFnaWMgIT0gQlJJTl9NRVRBX01BR0lDIHx8CisJCW1ldGFk YXRhLT5icmluVmVyc2lvbiAhPSBCUklOX0NVUlJFTlRfVkVSU0lPTiB8fAorCQltZXRhZGF0YS0+ cGFnZXNQZXJSYW5nZSA8IDEgfHwgbWV0YWRhdGEtPnBhZ2VzUGVyUmFuZ2UgPiBCUklOX01BWF9Q QUdFU19QRVJfUkFOR0UgfHwKKwkJbWV0YWRhdGEtPmxhc3RSZXZtYXBQYWdlIDw9IEJSSU5fTUVU QVBBR0VfQkxLTk8gfHwgbWV0YWRhdGEtPmxhc3RSZXZtYXBQYWdlID49IHN0YXRlLT5pZHhuYmxv Y2tzKQorCXsKKwkJYnJpbl9jaGVja19lcmVwb3J0KHN0YXRlLCAibWV0YXBhZ2UgaXMgY29ycnVw dGVkIik7CisJfQorCisJc3RhdGUtPmxhc3RSZXZtYXBQYWdlID0gbWV0YWRhdGEtPmxhc3RSZXZt YXBQYWdlOworCXN0YXRlLT5wYWdlc1BlclJhbmdlID0gbWV0YWRhdGEtPnBhZ2VzUGVyUmFuZ2U7 CisJVW5sb2NrUmVsZWFzZUJ1ZmZlcihtZXRhYnVmKTsKK30KKworLyoKKyAqIFdhbGsgcmV2bWFw IHBhZ2UgYnkgcGFnZSBmcm9tIHRoZSBiZWdpbm5pbmcgYW5kIGNoZWNrIGV2ZXJ5IHJldm1hcCBp dGVtLgorICogQWxzbyBjaGVjayB0aGF0IGFsbCBwYWdlcyB3aXRoaW4gWzEsIGxhc3RSZXZtYXBQ YWdlXSBhcmUgcmV2bWFwIHBhZ2VzLgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcmV2bWFwKEJy aW5DaGVja1N0YXRlICogc3RhdGUpCit7CisJUmVsYXRpb24JaWR4cmVsID0gc3RhdGUtPmlkeHJl bDsKKwlCbG9ja051bWJlciBsYXN0UmV2bWFwUGFnZSA9IHN0YXRlLT5sYXN0UmV2bWFwUGFnZTsK KwlSZWFkU3RyZWFtICpzdHJlYW07CisJaW50CQkJc3RyZWFtX2ZsYWdzOworCVJlYWRTdHJlYW1C bG9ja051bWJlckNCIHN0cmVhbV9jYjsKKwlCbG9ja1JhbmdlUmVhZFN0cmVhbVByaXZhdGUgc3Ry ZWFtX2RhdGE7CisKKwlzdGF0ZS0+cmFuZ2VCbGtubyA9IDA7CisJc3RhdGUtPnJlZ3BhZ2VidWYg PSBJbnZhbGlkQnVmZmVyOworCXN0YXRlLT5oZWFwbmJsb2NrcyA9IFJlbGF0aW9uR2V0TnVtYmVy T2ZCbG9ja3Moc3RhdGUtPmhlYXByZWwpOworCisKKwkvKgorCSAqIFByZXBhcmUgc3RyZWFtIGRh dGEgZm9yIHJldm1hcCB3YWxrLiBJdCBpcyBzYWZlIHRvIHVzZSBiYXRjaG1vZGUgYXMKKwkgKiBi bG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiB0YWtlcyBubyBsb2Nrcy4KKwkgKi8KKwlzdHJlYW1f ZmxhZ3MgPSBSRUFEX1NUUkVBTV9TRVFVRU5USUFMIHwgUkVBRF9TVFJFQU1fVVNFX0JBVENISU5H OworCS8qIEZpcnN0IHJldm1hcCBwYWdlIGlzIHJpZ2h0IGFmdGVyIG1ldGEgcGFnZSAqLworCXN0 cmVhbV9kYXRhLmN1cnJlbnRfYmxvY2tudW0gPSBCUklOX01FVEFQQUdFX0JMS05PICsgMTsKKwlz dHJlYW1fZGF0YS5sYXN0X2V4Y2x1c2l2ZSA9IGxhc3RSZXZtYXBQYWdlICsgMTsKKworCXN0cmVh bV9jYiA9IGJsb2NrX3JhbmdlX3JlYWRfc3RyZWFtX2NiOworCXN0cmVhbSA9IHJlYWRfc3RyZWFt X2JlZ2luX3JlbGF0aW9uKHN0cmVhbV9mbGFncywKKwkJCQkJCQkJCQlHZXRBY2Nlc3NTdHJhdGVn eShCQVNfQlVMS1JFQUQpLAorCQkJCQkJCQkJCWlkeHJlbCwKKwkJCQkJCQkJCQlNQUlOX0ZPUktO VU0sCisJCQkJCQkJCQkJc3RyZWFtX2NiLAorCQkJCQkJCQkJCSZzdHJlYW1fZGF0YSwKKwkJCQkJ CQkJCQkwKTsKKworCS8qIFdhbGsgZWFjaCByZXZtYXAgcGFnZSAqLworCXdoaWxlICgoc3RhdGUt PnJldm1hcGJ1ZiA9IHJlYWRfc3RyZWFtX25leHRfYnVmZmVyKHN0cmVhbSwgTlVMTCkpICE9IElu dmFsaWRCdWZmZXIpCisJeworCQlzdGF0ZS0+cmV2bWFwQmxrID0gQnVmZmVyR2V0QmxvY2tOdW1i ZXIoc3RhdGUtPnJldm1hcGJ1Zik7CisJCUxvY2tCdWZmZXIoc3RhdGUtPnJldm1hcGJ1ZiwgQlVG RkVSX0xPQ0tfU0hBUkUpOworCQlzdGF0ZS0+cmV2bWFwcGFnZSA9IEJ1ZmZlckdldFBhZ2Uoc3Rh dGUtPnJldm1hcGJ1Zik7CisKKwkJLyoKKwkJICogUGFnZXMgd2l0aCBibG9jayBudW1iZXJzIGlu IFsxLCBsYXN0UmV2bWFwUGFnZV0gc2hvdWxkIGJlIHJldm1hcAorCQkgKiBwYWdlcworCQkgKi8K KwkJaWYgKCFCUklOX0lTX1JFVk1BUF9QQUdFKHN0YXRlLT5yZXZtYXBwYWdlKSkKKwkJeworCQkJ YnJpbl9jaGVja19lcmVwb3J0KHN0YXRlLCBwc3ByaW50ZigicmV2bWFwIHBhZ2UgaXMgZXhwZWN0 ZWQgYXQgYmxvY2sgJXUsIGxhc3QgcmV2bWFwIHBhZ2UgJXUiLAorCQkJCQkJCQkJCQkgICBzdGF0 ZS0+cmV2bWFwQmxrLAorCQkJCQkJCQkJCQkgICBsYXN0UmV2bWFwUGFnZSkpOworCQl9CisJCUxv Y2tCdWZmZXIoc3RhdGUtPnJldm1hcGJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKworCQkvKiBX YWxrIGFuZCBjaGVjayBhbGwgYnJpbiB0dXBsZXMgZnJvbSB0aGUgY3VycmVudCByZXZtYXAgcGFn ZSAqLworCQlzdGF0ZS0+cmV2bWFwaWR4ID0gMDsKKwkJd2hpbGUgKHN0YXRlLT5yZXZtYXBpZHgg PCBSRVZNQVBfUEFHRV9NQVhJVEVNUykKKwkJeworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK KworCQkJLyogQ2hlY2sgcmV2bWFwIGl0ZW0gKi8KKwkJCWNoZWNrX3Jldm1hcF9pdGVtKHN0YXRl KTsKKworCQkJc3RhdGUtPnJhbmdlQmxrbm8gKz0gc3RhdGUtPnBhZ2VzUGVyUmFuZ2U7CisJCQlz dGF0ZS0+cmV2bWFwaWR4Kys7CisJCX0KKworCQllbG9nKERFQlVHMywgIkNvbXBsZXRlIHJldm1h cCBwYWdlIGNoZWNrOiAlZCIsIHN0YXRlLT5yZXZtYXBCbGspOworCisJCVJlbGVhc2VCdWZmZXIo c3RhdGUtPnJldm1hcGJ1Zik7CisJfQorCisJcmVhZF9zdHJlYW1fZW5kKHN0cmVhbSk7CisKKwlp ZiAoQnVmZmVySXNWYWxpZChzdGF0ZS0+cmVncGFnZWJ1ZikpCisJeworCQlSZWxlYXNlQnVmZmVy KHN0YXRlLT5yZWdwYWdlYnVmKTsKKwl9Cit9CisKKy8qCisgKiBDaGVjayByZXZtYXAgaXRlbS4K KyAqCisgKiBXZSBjaGVjayByZXZtYXAgaXRlbSBwb2ludGVyIGl0c2VsZiBhbmQgaWYgaXQgaXMg b2sgd2UgY2hlY2sgdGhlIGluZGV4IHR1cGxlIGl0IHBvaW50cyB0by4KKyAqCisgKiBUbyBhdm9p ZCBkZWFkbG9jayB3ZSBuZWVkIHRvIHVubG9jayByZXZtYXAgcGFnZSBiZWZvcmUgbG9ja2luZyBy ZWd1bGFyIHBhZ2UsCisgKiBzbyB3aGVuIHdlIGdldCB0aGUgbG9jayBvbiB0aGUgcmVndWxhciBw YWdlIG91ciBpbmRleCB0dXBsZSBwb2ludGVyIG1heSBubyBsb25nZXIgYmUgcmVsZXZhbnQuCisg KiBTbyBmb3Igc29tZSBjaGVja3MgYmVmb3JlIHJlcG9ydGluZyBhbiBlcnJvciB3ZSBuZWVkIHRv IG1ha2Ugc3VyZSB0aGF0IG91ciBwb2ludGVyIGlzIHN0aWxsIHJlbGV2YW50IGFuZCBpZiBpdCdz IG5vdCAtIHJldHJ5LgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcmV2bWFwX2l0ZW0oQnJpbkNo ZWNrU3RhdGUgKiBzdGF0ZSkKK3sKKwlJdGVtUG9pbnRlckRhdGEgKnJldm1hcHRpZHM7CisJUmV2 bWFwQ29udGVudHMgKmNvbnRlbnRzOworCUl0ZW1Qb2ludGVyRGF0YSAqaXB0cjsKKwlJdGVtSWQJ CWxwOworCUJyaW5UdXBsZSAgKnR1cDsKKwlSZWxhdGlvbglpZHhyZWwgPSBzdGF0ZS0+aWR4cmVs OworCisJLyogTG9vcCB0byByZXRyeSByZXZtYXAgaXRlbSBjaGVjayBpZiB0aGVyZSB3YXMgYSBj b25jdXJyZW50IHVwZGF0ZS4gKi8KKwlmb3IgKDs7KQorCXsKKwkJTG9ja0J1ZmZlcihzdGF0ZS0+ cmV2bWFwYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7CisKKwkJY29udGVudHMgPSAoUmV2bWFwQ29u dGVudHMgKikgUGFnZUdldENvbnRlbnRzKEJ1ZmZlckdldFBhZ2Uoc3RhdGUtPnJldm1hcGJ1Zikp OworCQlyZXZtYXB0aWRzID0gY29udGVudHMtPnJtX3RpZHM7CisJCS8qIFBvaW50ZXIgZm9yIHRo ZSByYW5nZSB3aXRoIHN0YXJ0IGF0IHN0YXRlLT5yYW5nZUJsa25vICovCisJCWlwdHIgPSByZXZt YXB0aWRzICsgc3RhdGUtPnJldm1hcGlkeDsKKworCQkvKiBBdCBmaXJzdCBjaGVjayByZXZtYXAg aXRlbSBwb2ludGVyICovCisKKwkJLyoKKwkJICogVHVwbGUgcG9pbnRlciBpcyBpbnZhbGlkIG1l YW5zIHJhbmdlIGlzbid0IHN1bW1hcml6ZWQsIGp1c3QgbW92ZQorCQkgKiBmdXJ0aGVyCisJCSAq LworCQlpZiAoIUl0ZW1Qb2ludGVySXNWYWxpZChpcHRyKSkKKwkJeworCQkJZWxvZyhERUJVRzMs ICJSYW5nZSAldSBpcyBub3Qgc3VtbWFyaXplZCIsIHN0YXRlLT5yYW5nZUJsa25vKTsKKwkJCUxv Y2tCdWZmZXIoc3RhdGUtPnJldm1hcGJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKwkJCWJyZWFr OworCQl9CisKKwkJLyoKKwkJICogUG9pbnRlciBpcyB2YWxpZCwgaXQgc2hvdWxkIHBvaW50cyB0 byBpbmRleCB0dXBsZSBmb3IgdGhlIHJhbmdlCisJCSAqIHdpdGggYmxrbm8gcmFuZ2VCbGtuby4g UmVtZW1iZXIgaXQgYW5kIHVubG9jayByZXZtYXAgcGFnZSB0byBhdm9pZAorCQkgKiBkZWFkbG9j aworCQkgKi8KKwkJc3RhdGUtPnJlZ3BhZ2VCbGsgPSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVy KGlwdHIpOworCQlzdGF0ZS0+cmVncGFnZW9mZnNldCA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVt YmVyKGlwdHIpOworCisJCUxvY2tCdWZmZXIoc3RhdGUtPnJldm1hcGJ1ZiwgQlVGRkVSX0xPQ0tf VU5MT0NLKTsKKworCQkvKgorCQkgKiBDaGVjayBpZiB0aGUgcmVncGFnZSBibG9jayBudW1iZXIg aXMgZ3JlYXRlciB0aGFuIHRoZSByZWxhdGlvbgorCQkgKiBzaXplLiBUbyBhdm9pZCBmZXRjaGlu ZyB0aGUgbnVtYmVyIG9mIGJsb2NrcyBmb3IgZWFjaCB0dXBsZSwgdXNlCisJCSAqIGNhY2hlZCB2 YWx1ZSBmaXJzdAorCQkgKi8KKwkJaWYgKHN0YXRlLT5yZWdwYWdlQmxrID49IHN0YXRlLT5pZHhu YmxvY2tzKQorCQl7CisJCQkvKgorCQkJICogUmVndWxhciBwYWdlcyBtYXkgaGF2ZSBiZWVuIGFk ZGVkLCBzbyByZWZyZXNoIGlkeG5ibG9ja3MgYW5kCisJCQkgKiByZWNoZWNrCisJCQkgKi8KKwkJ CXN0YXRlLT5pZHhuYmxvY2tzID0gUmVsYXRpb25HZXROdW1iZXJPZkJsb2NrcyhpZHhyZWwpOwor CQkJaWYgKHN0YXRlLT5yZWdwYWdlQmxrID49IHN0YXRlLT5pZHhuYmxvY2tzKQorCQkJeworCQkJ CXJldm1hcF9pdGVtX2VyZXBvcnQoc3RhdGUsCisJCQkJCQkJCQlwc3ByaW50ZigicmV2bWFwIGl0 ZW0gcG9pbnRzIHRvIGEgbm9uIGV4aXN0aW5nIGJsb2NrICV1LCBpbmRleCBtYXggYmxvY2sgJXUi LAorCQkJCQkJCQkJCQkgc3RhdGUtPnJlZ3BhZ2VCbGssCisJCQkJCQkJCQkJCSBzdGF0ZS0+aWR4 bmJsb2NrcyAtIDEpKTsKKwkJCX0KKwkJfQorCisJCS8qCisJCSAqIFRvIGF2b2lkIHNvbWUgcGlu L3VucGluIGN5Y2xlcyB3ZSBjYWNoZSBsYXN0IHVzZWQgcmVndWxhciBwYWdlLgorCQkgKiBDaGVj ayBpZiB3ZSBuZWVkIGRpZmZlcmVudCByZWd1bGFyIHBhZ2UgYW5kIGZldGNoIGl0LgorCQkgKi8K KwkJaWYgKCFCdWZmZXJJc1ZhbGlkKHN0YXRlLT5yZWdwYWdlYnVmKSB8fCBCdWZmZXJHZXRCbG9j a051bWJlcihzdGF0ZS0+cmVncGFnZWJ1ZikgIT0gc3RhdGUtPnJlZ3BhZ2VCbGspCisJCXsKKwkJ CWlmIChCdWZmZXJJc1ZhbGlkKHN0YXRlLT5yZWdwYWdlYnVmKSkKKwkJCXsKKwkJCQlSZWxlYXNl QnVmZmVyKHN0YXRlLT5yZWdwYWdlYnVmKTsKKwkJCX0KKwkJCXN0YXRlLT5yZWdwYWdlYnVmID0g UmVhZEJ1ZmZlckV4dGVuZGVkKGlkeHJlbCwgTUFJTl9GT1JLTlVNLCBzdGF0ZS0+cmVncGFnZUJs aywgUkJNX05PUk1BTCwKKwkJCQkJCQkJCQkJCSAgIHN0YXRlLT5jaGVja3N0cmF0ZWd5KTsKKwkJ fQorCisJCUxvY2tCdWZmZXIoc3RhdGUtPnJlZ3BhZ2VidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsK KwkJc3RhdGUtPnJlZ3BhZ2UgPSBCdWZmZXJHZXRQYWdlKHN0YXRlLT5yZWdwYWdlYnVmKTsKKwor CQkvKiBSZXZtYXAgc2hvdWxkIGFsd2F5cyBwb2ludCB0byBhIHJlZ3VsYXIgcGFnZSAqLworCQlp ZiAoIUJSSU5fSVNfUkVHVUxBUl9QQUdFKHN0YXRlLT5yZWdwYWdlKSkKKwkJeworCQkJcmV2bWFw X2l0ZW1fZXJlcG9ydChzdGF0ZSwKKwkJCQkJCQkJcHNwcmludGYoInJldm1hcCBpdGVtIHBvaW50 cyB0byB0aGUgcGFnZSB3aGljaCBpcyBub3QgcmVndWxhciAoYmxrbm86ICV1KSIsCisJCQkJCQkJ CQkJIHN0YXRlLT5yZWdwYWdlQmxrKSk7CisKKwkJfQorCisJCS8qIENoZWNrIGl0ZW0gb2Zmc2V0 IGlzIHZhbGlkICovCisJCWlmIChzdGF0ZS0+cmVncGFnZW9mZnNldCA+IFBhZ2VHZXRNYXhPZmZz ZXROdW1iZXIoc3RhdGUtPnJlZ3BhZ2UpKQorCQl7CisKKwkJCS8qIElmIGNvbmN1cnJlbnQgdXBk YXRlIG1vdmVkIG91ciB0dXBsZSB3ZSBuZWVkIHRvIHJldHJ5ICovCisJCQlpZiAoIXJldm1hcF9w b2ludHNfdG9faW5kZXhfdHVwbGUoc3RhdGUpKQorCQkJeworCQkJCUxvY2tCdWZmZXIoc3RhdGUt PnJlZ3BhZ2VidWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisJCQkJY29udGludWU7CisJCQl9CisK KwkJCXJldm1hcF9pdGVtX2VyZXBvcnQoc3RhdGUsCisJCQkJCQkJCXBzcHJpbnRmKCJyZXZtYXAg aXRlbSBvZmZzZXQgbnVtYmVyICV1IGlzIGdyZWF0ZXIgdGhhbiByZWd1bGFyIHBhZ2UgJXUgbWF4 IG9mZnNldCAldSIsCisJCQkJCQkJCQkJIHN0YXRlLT5yZWdwYWdlb2Zmc2V0LAorCQkJCQkJCQkJ CSBzdGF0ZS0+cmVncGFnZUJsaywKKwkJCQkJCQkJCQkgUGFnZUdldE1heE9mZnNldE51bWJlcihz dGF0ZS0+cmVncGFnZSkpKTsKKwkJfQorCisJCWVsb2coREVCVUczLCAiUHJvY2VzcyByYW5nZTog JXUsIGlwdHI6ICgldSwldSkiLCBzdGF0ZS0+cmFuZ2VCbGtubywgc3RhdGUtPnJlZ3BhZ2VCbGss IHN0YXRlLT5yZWdwYWdlb2Zmc2V0KTsKKworCQkvKgorCQkgKiBSZXZtYXAgcG9pbnRlciBpcyBP Sy4gSXQgcG9pbnRzIHRvIGV4aXN0aW5nIHJlZ3VsYXIgcGFnZSwgb2Zmc2V0CisJCSAqIGFsc28g aXMgb2suIExldCdzIGNoZWNrIGluZGV4IHR1cGxlIGl0IHBvaW50cyB0by4KKwkJICovCisKKwkJ bHAgPSBQYWdlR2V0SXRlbUlkQ2FyZWZ1bChzdGF0ZSk7CisKKwkJLyogUmV2bWFwIHNob3VsZCBw b2ludCB0byBOT1JNQUwgdHVwbGVzIG9ubHkgKi8KKwkJaWYgKCFJdGVtSWRJc1VzZWQobHApKQor CQl7CisKKwkJCS8qIElmIGNvbmN1cnJlbnQgdXBkYXRlIG1vdmVkIG91ciB0dXBsZSB3ZSBuZWVk IHRvIHJldHJ5ICovCisJCQlpZiAoIXJldm1hcF9wb2ludHNfdG9faW5kZXhfdHVwbGUoc3RhdGUp KQorCQkJeworCQkJCUxvY2tCdWZmZXIoc3RhdGUtPnJlZ3BhZ2VidWYsIEJVRkZFUl9MT0NLX1VO TE9DSyk7CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCWluZGV4X3R1cGxlX2VyZXBvcnQoc3Rh dGUsICJyZXZtYXAgaXRlbSBwb2ludHMgdG8gdW51c2VkIGluZGV4IHR1cGxlIik7CisJCX0KKwor CisJCXR1cCA9IChCcmluVHVwbGUgKikgUGFnZUdldEl0ZW0oc3RhdGUtPnJlZ3BhZ2UsIGxwKTsK KworCQkvKiBDaGVjayBpZiByYW5nZSBibG9jayBudW1iZXIgaXMgYXMgZXhwZWN0ZWQgKi8KKwkJ aWYgKHR1cC0+YnRfYmxrbm8gIT0gc3RhdGUtPnJhbmdlQmxrbm8pCisJCXsKKworCQkJLyogSWYg Y29uY3VycmVudCB1cGRhdGUgbW92ZWQgb3VyIHR1cGxlIHdlIG5lZWQgdG8gcmV0cnkgKi8KKwkJ CWlmICghcmV2bWFwX3BvaW50c190b19pbmRleF90dXBsZShzdGF0ZSkpCisJCQl7CisJCQkJTG9j a0J1ZmZlcihzdGF0ZS0+cmVncGFnZWJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKwkJCQljb250 aW51ZTsKKwkJCX0KKworCQkJaW5kZXhfdHVwbGVfZXJlcG9ydChzdGF0ZSwgcHNwcmludGYoImlu ZGV4IHR1cGxlIGhhcyBpbnZhbGlkIGJsa25vICV1IiwgdHVwLT5idF9ibGtubykpOworCQl9CisK KwkJLyoKKwkJICogSWYgdGhlIHJhbmdlIGlzIGJleW9uZCB0aGUgdGFibGUgc2l6ZSAtIHRoZSBy YW5nZSBtdXN0IGJlIGVtcHR5LgorCQkgKiBJdCdzIHZhbGlkIHNpdHVhdGlvbiBmb3IgZW1wdHkg dGFibGUgbm93LgorCQkgKi8KKwkJaWYgKHN0YXRlLT5yYW5nZUJsa25vID49IHN0YXRlLT5oZWFw bmJsb2NrcykKKwkJeworCQkJaWYgKCFCcmluVHVwbGVJc0VtcHR5UmFuZ2UodHVwKSkKKwkJCXsK KwkJCQlpbmRleF90dXBsZV9lcmVwb3J0KHN0YXRlLAorCQkJCQkJCQkJcHNwcmludGYoInRoZSBy YW5nZSBpcyBiZXlvbmQgdGhlIHRhYmxlIHNpemUsICIKKwkJCQkJCQkJCQkJICJidXQgaXMgbm90 IG1hcmtlZCBhcyBlbXB0eSwgdGFibGUgc2l6ZTogJXUgYmxvY2tzIiwKKwkJCQkJCQkJCQkJIHN0 YXRlLT5oZWFwbmJsb2NrcykpOworCQkJfQorCQl9CisKKwkJLyogQ2hlY2sgaW5kZXggdHVwbGUg aXRzZWxmICovCisJCWNoZWNrX2luZGV4X3R1cGxlKHN0YXRlLCB0dXAsIGxwKTsKKworCQlMb2Nr QnVmZmVyKHN0YXRlLT5yZWdwYWdlYnVmLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCQlicmVhazsK Kwl9Cit9CisKKy8qCisgKiBDaGVjayB0aGF0IGluZGV4IHR1cGxlIGhhcyBleHBlY3RlZCBzdHJ1 Y3R1cmUuCisgKgorICogVGhpcyBmdW5jdGlvbiBmb2xsb3dzIHRoZSBsb2dpYyBwZXJmb3JtZWQg YnkgYnJpbl9kZWZvcm1fdHVwbGUoKS4KKyAqIEFmdGVyIHRoaXMgY2hlY2sgaXMgY29tcGxldGUg d2UgYXJlIHN1cmUgdGhhdCBicmluX2RlZm9ybV90dXBsZSBjYW4gcHJvY2VzcyBpdC4KKyAqCisg KiBJbiBjYXNlIG9mIGVtcHR5IHJhbmdlIGNoZWNrIHRoYXQgZm9yIGFsbCBhdHRyaWJ1dGVzIGFs bG51bGxzIGFyZSB0cnVlLCBoYXNudWxscyBhcmUgZmFsc2UgYW5kCisgKiB0aGVyZSBpcyBubyBk YXRhLiBBbGwgY29yZSBvcGNsYXNzZXMgZXhwZWN0IGFsbG51bGxzIGlzIHRydWUgZm9yIGVtcHR5 IHJhbmdlLgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfaW5kZXhfdHVwbGUoQnJpbkNoZWNrU3Rh dGUgKiBzdGF0ZSwgQnJpblR1cGxlICp0dXBsZSwgSXRlbUlkIGxwKQoreworCisJY2hhcgkgICAq dHA7CQkJCS8qIHR1cGxlIGRhdGEgKi8KKwl1aW50MTYJCW9mZjsKKwliaXRzOAkgICAqbnVsbGJp dHM7CisJVHVwbGVEZXNjCWRpc2t0ZGVzYzsKKwlpbnQJCQlzdG9yZWQ7CisJYm9vbAkJZW1wdHlf cmFuZ2UgPSBCcmluVHVwbGVJc0VtcHR5UmFuZ2UodHVwbGUpOworCWJvb2wJCWhhc251bGxiaXRt YXAgPSBCcmluVHVwbGVIYXNOdWxscyh0dXBsZSk7CisJdWludDgJCWhvZmYgPSBCcmluVHVwbGVE YXRhT2Zmc2V0KHR1cGxlKTsKKwl1aW50MTYJCXR1cGxlbiA9IEl0ZW1JZEdldExlbmd0aChscCk7 CisKKworCS8qIENoZWNrIHRoYXQgaGVhZGVyIGxlbmd0aCBpcyBub3QgZ3JlYXRlciB0aGFuIHR1 cGxlIGxlbmd0aCAqLworCWlmIChob2ZmID4gdHVwbGVuKQorCXsKKwkJaW5kZXhfdHVwbGVfZXJl cG9ydChzdGF0ZSwgcHNwcmludGYoImluZGV4IHR1cGxlIGhlYWRlciBsZW5ndGggJXUgaXMgZ3Jl YXRlciB0aGFuIHR1cGxlIGxlbiAldSIsIGhvZmYsIHR1cGxlbikpOworCX0KKworCS8qIElmIHR1 cGxlIGhhcyBudWxsIGJpdG1hcCAtIGluaXRpYWxpemUgaXQgKi8KKwlpZiAoaGFzbnVsbGJpdG1h cCkKKwl7CisJCW51bGxiaXRzID0gKGJpdHM4ICopICgoY2hhciAqKSB0dXBsZSArIFNpemVPZkJy aW5UdXBsZSk7CisJfQorCWVsc2UKKwl7CisJCW51bGxiaXRzID0gTlVMTDsKKwl9CisKKwkvKiBF bXB0eSByYW5nZSBpbmRleCB0dXBsZSBjaGVja3MgKi8KKwlpZiAoZW1wdHlfcmFuZ2UpCisJewor CQkvKiBFbXB0eSByYW5nZSB0dXBsZSBzaG91bGQgaGF2ZSBudWxsIGJpdG1hcCAqLworCQlpZiAo IWhhc251bGxiaXRtYXApCisJCXsKKwkJCWluZGV4X3R1cGxlX2VyZXBvcnQoc3RhdGUsICJlbXB0 eSByYW5nZSBpbmRleCB0dXBsZSBkb2Vzbid0IGhhdmUgbnVsbCBiaXRtYXAiKTsKKwkJfQorCisJ CUFzc2VydChudWxsYml0cyAhPSBOVUxMKTsKKworCQkvKiBDaGVjayBldmVyeSBhdHRyaWJ1dGUg aGFzIGFsbG51bGxzIGlzIHRydWUgYW5kIGhhc251bGxzIGlzIGZhbHNlICovCisJCWZvciAoaW50 IGF0dGluZGV4ID0gMDsgYXR0aW5kZXggPCBzdGF0ZS0+bmF0dHM7ICsrYXR0aW5kZXgpCisJCXsK KworCQkJLyogQXR0cmlidXRlIGFsbG51bGxzIHNob3VsZCBiZSB0cnVlIGZvciBlbXB0eSByYW5n ZSAqLworCQkJaWYgKGF0dF9pc251bGwoYXR0aW5kZXgsIG51bGxiaXRzKSkKKwkJCXsKKwkJCQlp bmRleF90dXBsZV9lcmVwb3J0KHN0YXRlLAorCQkJCQkJCQkJcHNwcmludGYoImVtcHR5IHJhbmdl IGluZGV4IHR1cGxlIGF0dHJpYnV0ZSAlZCB3aXRoIGFsbG51bGxzIGlzIGZhbHNlIiwKKwkJCQkJ CQkJCQkJIGF0dGluZGV4KSk7CisJCQl9CisKKwkJCS8qIEF0dHJpYnV0ZSBoYXNudWxscyBzaG91 bGQgYmUgZmFsc2UgZm9yIGVtcHR5IHJhbmdlICovCisJCQlpZiAoIWF0dF9pc251bGwoc3RhdGUt Pm5hdHRzICsgYXR0aW5kZXgsIG51bGxiaXRzKSkKKwkJCXsKKwkJCQlpbmRleF90dXBsZV9lcmVw b3J0KHN0YXRlLAorCQkJCQkJCQkJcHNwcmludGYoImVtcHR5IHJhbmdlIGluZGV4IHR1cGxlIGF0 dHJpYnV0ZSAlZCB3aXRoIGhhc251bGxzIGlzIHRydWUiLAorCQkJCQkJCQkJCQkgYXR0aW5kZXgp KTsKKwkJCX0KKwkJfQorCisJCS8qIFdlIGFyZSBkb25lIHdpdGggZW1wdHkgcmFuZ2UgdHVwbGUg Ki8KKwkJcmV0dXJuOworCX0KKworCS8qCisJICogUmFuZ2UgaXMgbWFya2VkIGFzIG5vdCBlbXB0 eSBzbyB3ZSBjYW4gaGF2ZSBzb21lIGRhdGEgaW4gdGhlIHR1cGxlLgorCSAqIFdhbGsgYWxsIGF0 dHJpYnV0ZXMgYW5kIGNoZWNrcyB0aGF0IGFsbCBzdG9yZWQgdmFsdWVzIGZpdCBpbnRvIHRoZQor CSAqIHR1cGxlCisJICovCisKKwl0cCA9IChjaGFyICopIHR1cGxlICsgQnJpblR1cGxlRGF0YU9m ZnNldCh0dXBsZSk7CisJc3RvcmVkID0gMDsKKwlvZmYgPSAwOworCisJZGlza3RkZXNjID0gYnJ0 dXBsZV9kaXNrX3R1cGRlc2Moc3RhdGUtPmJkZXNjKTsKKworCWZvciAoaW50IGF0dGluZGV4ID0g MDsgYXR0aW5kZXggPCBzdGF0ZS0+bmF0dHM7ICsrYXR0aW5kZXgpCisJeworCQlCcmluT3BjSW5m byAqb3BjbGFzcyA9IHN0YXRlLT5iZGVzYy0+YmRfaW5mb1thdHRpbmRleF07CisKKwkJLyoKKwkJ ICogaWYgYWxsbnVsbHMgaXMgc2V0IHdlIGhhdmUgbm8gZGF0YSBmb3IgdGhpcyBhdHRyaWJ1dGUs IG1vdmUgdG8gdGhlCisJCSAqIG5leHQKKwkJICovCisJCWlmIChoYXNudWxsYml0bWFwICYmICFh dHRfaXNudWxsKGF0dGluZGV4LCBudWxsYml0cykpCisJCXsKKwkJCXN0b3JlZCArPSBvcGNsYXNz LT5vaV9uc3RvcmVkOworCQkJY29udGludWU7CisJCX0KKworCQkvKiBXYWxrIGFsbCBzdG9yZWQg dmFsdWVzIGZvciB0aGUgY3VycmVudCBhdHRyaWJ1dGUgKi8KKwkJZm9yIChpbnQgZGF0dW1ubyA9 IDA7IGRhdHVtbm8gPCBvcGNsYXNzLT5vaV9uc3RvcmVkOyBkYXR1bW5vKyspCisJCXsKKwkJCUNv bXBhY3RBdHRyaWJ1dGUgKnRoaXNhdHQgPSBUdXBsZURlc2NDb21wYWN0QXR0cihkaXNrdGRlc2Ms IHN0b3JlZCk7CisKKwkJCWlmICh0aGlzYXR0LT5hdHRsZW4gPT0gLTEpCisJCQl7CisJCQkJb2Zm ID0gYXR0X3BvaW50ZXJfYWxpZ25ieShvZmYsCisJCQkJCQkJCQkJICB0aGlzYXR0LT5hdHRhbGln bmJ5LAorCQkJCQkJCQkJCSAgLTEsCisJCQkJCQkJCQkJICB0cCArIG9mZik7CisJCQl9CisJCQll bHNlCisJCQl7CisJCQkJb2ZmID0gYXR0X25vbWluYWxfYWxpZ25ieShvZmYsIHRoaXNhdHQtPmF0 dGFsaWduYnkpOworCQkJfQorCisJCQkvKiBDaGVjayB0aGF0IHdlIGFyZSBzdGlsbCBpbiB0aGUg dHVwbGUgKi8KKwkJCWlmIChob2ZmICsgb2ZmID4gdHVwbGVuKQorCQkJeworCQkJCWluZGV4X3R1 cGxlX2VyZXBvcnQoc3RhdGUsCisJCQkJCQkJCQlwc3ByaW50ZigiYXR0cmlidXRlICV1IHN0b3Jl ZCB2YWx1ZSAldSB3aXRoIGxlbmd0aCAlZCAiCisJCQkJCQkJCQkJCSAic3RhcnRzIGF0IG9mZnNl dCAldSBiZXlvbmQgdG90YWwgdHVwbGUgbGVuZ3RoICV1IiwKKwkJCQkJCQkJCQkJIGF0dGluZGV4 LCBkYXR1bW5vLCB0aGlzYXR0LT5hdHRsZW4sIG9mZiwgdHVwbGVuKSk7CisJCQl9CisKKwkJCW9m ZiA9IGF0dF9hZGRsZW5ndGhfcG9pbnRlcihvZmYsIHRoaXNhdHQtPmF0dGxlbiwgdHAgKyBvZmYp OworCisJCQkvKiBDaGVjayB0aGF0IHdlIGFyZSBzdGlsbCBpbiB0aGUgdHVwbGUgKi8KKwkJCWlm IChob2ZmICsgb2ZmID4gdHVwbGVuKQorCQkJeworCQkJCWluZGV4X3R1cGxlX2VyZXBvcnQoc3Rh dGUsCisJCQkJCQkJCQlwc3ByaW50ZigiYXR0cmlidXRlICV1IHN0b3JlZCB2YWx1ZSAldSB3aXRo IGxlbmd0aCAlZCAiCisJCQkJCQkJCQkJCSAiZW5kcyBhdCBvZmZzZXQgJXUgYmV5b25kIHRvdGFs IHR1cGxlIGxlbmd0aCAldSIsCisJCQkJCQkJCQkJCSBhdHRpbmRleCwgZGF0dW1ubywgdGhpc2F0 dC0+YXR0bGVuLCBvZmYsIHR1cGxlbikpOworCQkJfQorCQkJc3RvcmVkKys7CisJCX0KKworCX0K KworfQorCisvKgorICogQ2hlY2sgYWxsIHBhZ2VzIHdpdGhpbiB0aGUgcmFuZ2UgW2xhc3RSZXZt YXBQYWdlICsgMSwgaW5kZXhuYmxvY2tzXSBhcmUgcmVndWxhciBwYWdlcyBvciBuZXcKKyAqIGFu ZCB0aGVyZSBpcyBhIHBvaW50ZXIgaW4gcmV2bWFwIHRvIGVhY2ggTk9STUFMIGluZGV4IHR1cGxl LgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcmVndWxhcl9wYWdlcyhCcmluQ2hlY2tTdGF0ZSAq IHN0YXRlKQoreworCVJlYWRTdHJlYW0gKnN0cmVhbTsKKwlpbnQJCQlzdHJlYW1fZmxhZ3M7CisJ UmVhZFN0cmVhbUJsb2NrTnVtYmVyQ0Igc3RyZWFtX2NiOworCUJsb2NrUmFuZ2VSZWFkU3RyZWFt UHJpdmF0ZSBzdHJlYW1fZGF0YTsKKworCWlmICghc3RhdGUtPnJlZ3VsYXJfcGFnZXNfY2hlY2sp CisJeworCQlyZXR1cm47CisJfQorCisJLyogcmVzZXQgc3RhdGUgKi8KKwlzdGF0ZS0+cmV2bWFw QmxrID0gSW52YWxpZEJsb2NrTnVtYmVyOworCXN0YXRlLT5yZXZtYXBidWYgPSBJbnZhbGlkQnVm ZmVyOworCXN0YXRlLT5yZXZtYXBpZHggPSAtMTsKKwlzdGF0ZS0+cmVncGFnZUJsayA9IEludmFs aWRCbG9ja051bWJlcjsKKwlzdGF0ZS0+cmVncGFnZWJ1ZiA9IEludmFsaWRCdWZmZXI7CisJc3Rh dGUtPnJlZ3BhZ2VvZmZzZXQgPSBJbnZhbGlkT2Zmc2V0TnVtYmVyOworCXN0YXRlLT5pZHhuYmxv Y2tzID0gUmVsYXRpb25HZXROdW1iZXJPZkJsb2NrcyhzdGF0ZS0+aWR4cmVsKTsKKworCisJLyoK KwkgKiBQcmVwYXJlIHN0cmVhbSBkYXRhIGZvciByZWd1bGFyIHBhZ2VzIHdhbGsuIEl0IGlzIHNh ZmUgdG8gdXNlIGJhdGNobW9kZQorCSAqIGFzIGJsb2NrX3JhbmdlX3JlYWRfc3RyZWFtX2NiIHRh a2VzIG5vIGxvY2tzLgorCSAqLworCXN0cmVhbV9mbGFncyA9IFJFQURfU1RSRUFNX1NFUVVFTlRJ QUwgfCBSRUFEX1NUUkVBTV9VU0VfQkFUQ0hJTkcgfCBSRUFEX1NUUkVBTV9GVUxMOworCS8qIEZp cnN0IHJlZ3VsYXIgcGFnZSBpcyByaWdodCBhZnRlciB0aGUgbGFzdCByZXZtYXAgcGFnZSAqLwor CXN0cmVhbV9kYXRhLmN1cnJlbnRfYmxvY2tudW0gPSBzdGF0ZS0+bGFzdFJldm1hcFBhZ2UgKyAx OworCXN0cmVhbV9kYXRhLmxhc3RfZXhjbHVzaXZlID0gc3RhdGUtPmlkeG5ibG9ja3M7CisKKwlz dHJlYW1fY2IgPSBibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYjsKKwlzdHJlYW0gPSByZWFkX3N0 cmVhbV9iZWdpbl9yZWxhdGlvbihzdHJlYW1fZmxhZ3MsCisJCQkJCQkJCQkJR2V0QWNjZXNzU3Ry YXRlZ3koQkFTX0JVTEtSRUFEKSwKKwkJCQkJCQkJCQlzdGF0ZS0+aWR4cmVsLAorCQkJCQkJCQkJ CU1BSU5fRk9SS05VTSwKKwkJCQkJCQkJCQlzdHJlYW1fY2IsCisJCQkJCQkJCQkJJnN0cmVhbV9k YXRhLAorCQkJCQkJCQkJCTApOworCisJd2hpbGUgKChzdGF0ZS0+cmVncGFnZWJ1ZiA9IHJlYWRf c3RyZWFtX25leHRfYnVmZmVyKHN0cmVhbSwgTlVMTCkpICE9IEludmFsaWRCdWZmZXIpCisJewor CQlPZmZzZXROdW1iZXIgbWF4b2ZmOworCisJCXN0YXRlLT5yZWdwYWdlQmxrID0gQnVmZmVyR2V0 QmxvY2tOdW1iZXIoc3RhdGUtPnJlZ3BhZ2VidWYpOworCQlMb2NrQnVmZmVyKHN0YXRlLT5yZWdw YWdlYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7CisJCXN0YXRlLT5yZWdwYWdlID0gQnVmZmVyR2V0 UGFnZShzdGF0ZS0+cmVncGFnZWJ1Zik7CisKKwkJLyogU2tpcCBuZXcgcGFnZXMgKi8KKwkJaWYg KFBhZ2VJc05ldyhzdGF0ZS0+cmVncGFnZSkpCisJCXsKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIo c3RhdGUtPnJlZ3BhZ2VidWYpOworCQkJY29udGludWU7CisJCX0KKworCQlpZiAoIUJSSU5fSVNf UkVHVUxBUl9QQUdFKHN0YXRlLT5yZWdwYWdlKSkKKwkJeworCQkJYnJpbl9jaGVja19lcmVwb3J0 KHN0YXRlLCBwc3ByaW50ZigiZXhwZWN0ZWQgbmV3IG9yIHJlZ3VsYXIgcGFnZSBhdCBibG9jayAl dSIsIHN0YXRlLT5yZWdwYWdlQmxrKSk7CisJCX0KKworCQkvKiBDaGVjayB0aGF0IGFsbCBOT1JN QUwgaW5kZXggdHVwbGVzIHdpdGhpbiB0aGUgcGFnZSBhcmUgbm90IG9ycGhhbnMgKi8KKwkJbWF4 b2ZmID0gUGFnZUdldE1heE9mZnNldE51bWJlcihzdGF0ZS0+cmVncGFnZSk7CisJCWZvciAoc3Rh dGUtPnJlZ3BhZ2VvZmZzZXQgPSBGaXJzdE9mZnNldE51bWJlcjsgc3RhdGUtPnJlZ3BhZ2VvZmZz ZXQgPD0gbWF4b2ZmOyBzdGF0ZS0+cmVncGFnZW9mZnNldCsrKQorCQl7CisJCQlJdGVtSWQJCWxw OworCQkJQnJpblR1cGxlICAqdHVwOworCQkJQmxvY2tOdW1iZXIgcmV2bWFwQmxrOworCisJCQls cCA9IFBhZ2VHZXRJdGVtSWRDYXJlZnVsKHN0YXRlKTsKKworCQkJaWYgKEl0ZW1JZElzVXNlZChs cCkpCisJCQl7CisJCQkJdHVwID0gKEJyaW5UdXBsZSAqKSBQYWdlR2V0SXRlbShzdGF0ZS0+cmVn cGFnZSwgbHApOworCisJCQkJLyogR2V0IHJldm1hcCBibG9jayBudW1iZXIgZm9yIGluZGV4IHR1 cGxlIGJsa25vICovCisJCQkJcmV2bWFwQmxrID0gKCh0dXAtPmJ0X2Jsa25vIC8gc3RhdGUtPnBh Z2VzUGVyUmFuZ2UpIC8gUkVWTUFQX1BBR0VfTUFYSVRFTVMpICsgMTsKKwkJCQlpZiAocmV2bWFw QmxrID4gc3RhdGUtPmxhc3RSZXZtYXBQYWdlKQorCQkJCXsKKwkJCQkJaW5kZXhfdHVwbGVfb25s eV9lcmVwb3J0KHN0YXRlLCBwc3ByaW50Zigibm8gcmV2bWFwIHBhZ2UgZm9yIHRoZSBpbmRleCB0 dXBsZSB3aXRoIGJsa25vICV1IiwKKwkJCQkJCQkJCQkJCQkJCSB0dXAtPmJ0X2Jsa25vKSk7CisJ CQkJfQorCisJCQkJLyogRmV0Y2ggYW5vdGhlciByZXZtYXAgcGFnZSBpZiBuZWVkZWQgKi8KKwkJ CQlpZiAoc3RhdGUtPnJldm1hcEJsayAhPSByZXZtYXBCbGspCisJCQkJeworCQkJCQlpZiAoQmxv Y2tOdW1iZXJJc1ZhbGlkKHN0YXRlLT5yZXZtYXBCbGspKQorCQkJCQl7CisJCQkJCQlSZWxlYXNl QnVmZmVyKHN0YXRlLT5yZXZtYXBidWYpOworCQkJCQl9CisJCQkJCXN0YXRlLT5yZXZtYXBCbGsg PSByZXZtYXBCbGs7CisJCQkJCXN0YXRlLT5yZXZtYXBidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQo c3RhdGUtPmlkeHJlbCwgTUFJTl9GT1JLTlVNLCBzdGF0ZS0+cmV2bWFwQmxrLCBSQk1fTk9STUFM LAorCQkJCQkJCQkJCQkJCQkgIHN0YXRlLT5jaGVja3N0cmF0ZWd5KTsKKwkJCQl9CisKKwkJCQlz dGF0ZS0+cmV2bWFwaWR4ID0gKHR1cC0+YnRfYmxrbm8gLyBzdGF0ZS0+cGFnZXNQZXJSYW5nZSkg JSBSRVZNQVBfUEFHRV9NQVhJVEVNUzsKKwkJCQlzdGF0ZS0+cmFuZ2VCbGtubyA9IHR1cC0+YnRf Ymxrbm87CisKKwkJCQkvKiBjaGVjayB0aGF0IHJldm1hcCBpdGVtIHBvaW50cyB0byBpbmRleCB0 dXBsZSAqLworCQkJCWlmICghcmV2bWFwX3BvaW50c190b19pbmRleF90dXBsZShzdGF0ZSkpCisJ CQkJeworCQkJCQlpbmRleF90dXBsZV9lcmVwb3J0KHN0YXRlLCBwc3ByaW50ZigicmV2bWFwIGRv ZXNuJ3QgcG9pbnQgdG8gaW5kZXggdHVwbGUiKSk7CisJCQkJfQorCisJCQl9CisJCX0KKworCQlV bmxvY2tSZWxlYXNlQnVmZmVyKHN0YXRlLT5yZWdwYWdlYnVmKTsKKwl9CisKKwlyZWFkX3N0cmVh bV9lbmQoc3RyZWFtKTsKKworCWlmIChzdGF0ZS0+cmV2bWFwYnVmICE9IEludmFsaWRCdWZmZXIp CisJeworCQlSZWxlYXNlQnVmZmVyKHN0YXRlLT5yZXZtYXBidWYpOworCX0KK30KKworLyoKKyAq IENoZWNrIGlmIHRoZSByZXZtYXAgaXRlbSBwb2ludHMgdG8gdGhlIGluZGV4IHR1cGxlIChyZWdw YWdlQmxrLCByZWdwYWdlb2Zmc2V0KS4KKyAqIFdlIGhhdmUgbG9ja2VkIHJlZyBwYWdlLCBhbmQg bG9jayByZXZtYXAgcGFnZSBoZXJlLgorICogSXQncyBhIHZhbGlkIGxvY2sgb3JkZXJpbmcsIHNv IG5vIGRlYWRsb2NrIGlzIHBvc3NpYmxlLgorICovCitzdGF0aWMgYm9vbAorcmV2bWFwX3BvaW50 c190b19pbmRleF90dXBsZShCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlKQoreworCUl0ZW1Qb2ludGVy RGF0YSAqcmV2bWFwdGlkczsKKwlSZXZtYXBDb250ZW50cyAqY29udGVudHM7CisJSXRlbVBvaW50 ZXJEYXRhICp0aWQ7CisJYm9vbAkJcG9pbnRzOworCisJTG9ja0J1ZmZlcihzdGF0ZS0+cmV2bWFw YnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7CisJY29udGVudHMgPSAoUmV2bWFwQ29udGVudHMgKikg UGFnZUdldENvbnRlbnRzKEJ1ZmZlckdldFBhZ2Uoc3RhdGUtPnJldm1hcGJ1ZikpOworCXJldm1h cHRpZHMgPSBjb250ZW50cy0+cm1fdGlkczsKKwl0aWQgPSByZXZtYXB0aWRzICsgc3RhdGUtPnJl dm1hcGlkeDsKKworCXBvaW50cyA9IEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXJOb0NoZWNrKHRp ZCkgPT0gc3RhdGUtPnJlZ3BhZ2VCbGsgJiYKKwkJSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXJO b0NoZWNrKHRpZCkgPT0gc3RhdGUtPnJlZ3BhZ2VvZmZzZXQ7CisKKwlMb2NrQnVmZmVyKHN0YXRl LT5yZXZtYXBidWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisJcmV0dXJuIHBvaW50czsKK30KKwor LyoKKyAqIFBhZ2VHZXRJdGVtSWQoKSB3cmFwcGVyIHRoYXQgdmFsaWRhdGVzIHJldHVybmVkIGxp bmUgcG9pbnRlci4KKyAqCisgKiBpdGVtSWQgaW4gYnJpbiBpbmRleCBjb3VsZCBiZSBVTlVTRUQg b3IgTk9STUFMLgorICovCitzdGF0aWMgSXRlbUlkCitQYWdlR2V0SXRlbUlkQ2FyZWZ1bChCcmlu Q2hlY2tTdGF0ZSAqIHN0YXRlKQoreworCVBhZ2UJCXBhZ2UgPSBzdGF0ZS0+cmVncGFnZTsKKwlP ZmZzZXROdW1iZXIgb2Zmc2V0ID0gc3RhdGUtPnJlZ3BhZ2VvZmZzZXQ7CisJSXRlbUlkCQlpdGVt aWQgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIG9mZnNldCk7CisKKwlpZiAoSXRlbUlkR2V0T2Zmc2V0 KGl0ZW1pZCkgKyBJdGVtSWRHZXRMZW5ndGgoaXRlbWlkKSA+CisJCUJMQ0tTWiAtIE1BWEFMSUdO KHNpemVvZihCcmluU3BlY2lhbFNwYWNlKSkpCisJCWluZGV4X3R1cGxlX2VyZXBvcnQoc3RhdGUs CisJCQkJCQkJcHNwcmludGYoImxpbmUgcG9pbnRlciBwb2ludHMgcGFzdCBlbmQgb2YgdHVwbGUg c3BhY2UgaW4gaW5kZXguICIKKwkJCQkJCQkJCSAibHBfb2ZmPSV1LCBscF9sZW49JXUgbHBfZmxh Z3M9JXUiLAorCQkJCQkJCQkJIEl0ZW1JZEdldE9mZnNldChpdGVtaWQpLAorCQkJCQkJCQkJIEl0 ZW1JZEdldExlbmd0aChpdGVtaWQpLAorCQkJCQkJCQkJIEl0ZW1JZEdldEZsYWdzKGl0ZW1pZCkK KwkJCQkJCQkJCSApCisJCQkpOworCisJLyogVmVyaWZ5IHRoYXQgbGluZSBwb2ludGVyIGlzIExQ X05PUk1BTCBvciBMUF9VTlVTRUQgKi8KKwlpZiAoISgoSXRlbUlkSXNOb3JtYWwoaXRlbWlkKSAm JiBJdGVtSWRIYXNTdG9yYWdlKGl0ZW1pZCkpIHx8CisJCSAgKCFJdGVtSWRJc1VzZWQoaXRlbWlk KSAmJiAhSXRlbUlkSGFzU3RvcmFnZShpdGVtaWQpKSkpCisJeworCQlpbmRleF90dXBsZV9lcmVw b3J0KHN0YXRlLAorCQkJCQkJCXBzcHJpbnRmKCJpbnZhbGlkIGxpbmUgcG9pbnRlciBzdG9yYWdl IGluIGluZGV4LiAiCisJCQkJCQkJCQkgImxwX29mZj0ldSwgbHBfbGVuPSV1IGxwX2ZsYWdzPSV1 IiwKKwkJCQkJCQkJCSBJdGVtSWRHZXRPZmZzZXQoaXRlbWlkKSwKKwkJCQkJCQkJCSBJdGVtSWRH ZXRMZW5ndGgoaXRlbWlkKSwKKwkJCQkJCQkJCSBJdGVtSWRHZXRGbGFncyhpdGVtaWQpCisJCQkJ CQkJCQkgKSk7CisJfQorCisJcmV0dXJuIGl0ZW1pZDsKK30KKworCisvKiBSZXBvcnQgd2l0aG91 dCBhbnkgYWRkaXRpb25hbCBpbmZvICovCitzdGF0aWMgdm9pZAorYnJpbl9jaGVja19lcmVwb3J0 KEJyaW5DaGVja1N0YXRlICogc3RhdGUsIGNvbnN0IGNoYXIgKmZtdCkKK3sKKwllcmVwb3J0KEVS Uk9SLAorCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFWF9DT1JSVVBURUQpLAorCQkJIGVycm1zZygi SW5kZXggJXMgaXMgY29ycnVwdGVkIC0gJXMiLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShzdGF0 ZS0+aWR4cmVsKSwgZm10KSkpOworfQorCisvKiBSZXBvcnQgd2l0aCByYW5nZSBibGtubywgcmV2 bWFwIGl0ZW0gaW5mbywgaW5kZXggdHVwbGUgaW5mbyAqLwordm9pZAoraW5kZXhfdHVwbGVfZXJl cG9ydChCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlLCBjb25zdCBjaGFyICpmbXQpCit7CisJQXNzZXJ0 KHN0YXRlLT5yYW5nZUJsa25vICE9IEludmFsaWRCbG9ja051bWJlcik7CisJQXNzZXJ0KHN0YXRl LT5yZXZtYXBCbGsgIT0gSW52YWxpZEJsb2NrTnVtYmVyKTsKKwlBc3NlcnQoc3RhdGUtPnJldm1h cGlkeCA+PSAwICYmIHN0YXRlLT5yZXZtYXBpZHggPCBSRVZNQVBfUEFHRV9NQVhJVEVNUyk7CisJ QXNzZXJ0KHN0YXRlLT5yZWdwYWdlQmxrICE9IEludmFsaWRCbG9ja051bWJlcik7CisJQXNzZXJ0 KHN0YXRlLT5yZWdwYWdlb2Zmc2V0ICE9IEludmFsaWRPZmZzZXROdW1iZXIpOworCisJZXJlcG9y dChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfSU5ERVhfQ09SUlVQVEVEKSwKKwkJCSBlcnJt c2coIkluZGV4ICVzIGlzIGNvcnJ1cHRlZCAtICVzLiBSYW5nZSBibGtubzogJXUsIHJldm1hcCBp dGVtOiAoJXUsJXUpLCBpbmRleCB0dXBsZTogKCV1LCV1KSIsCisJCQkJCVJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHN0YXRlLT5pZHhyZWwpLAorCQkJCQlmbXQsCisJCQkJCXN0YXRlLT5yYW5nZUJs a25vLAorCQkJCQlzdGF0ZS0+cmV2bWFwQmxrLAorCQkJCQlzdGF0ZS0+cmV2bWFwaWR4LAorCQkJ CQlzdGF0ZS0+cmVncGFnZUJsaywKKwkJCQkJc3RhdGUtPnJlZ3BhZ2VvZmZzZXQpKSk7Cit9CisK Ky8qIFJlcG9ydCB3aXRoIGluZGV4IHR1cGxlIGluZm8gKi8KK3ZvaWQKK2luZGV4X3R1cGxlX29u bHlfZXJlcG9ydChCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlLCBjb25zdCBjaGFyICpmbXQpCit7CisJ QXNzZXJ0KHN0YXRlLT5yZWdwYWdlQmxrICE9IEludmFsaWRCbG9ja051bWJlcik7CisJQXNzZXJ0 KHN0YXRlLT5yZWdwYWdlb2Zmc2V0ICE9IEludmFsaWRPZmZzZXROdW1iZXIpOworCisJZXJlcG9y dChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfSU5ERVhfQ09SUlVQVEVEKSwKKwkJCSBlcnJt c2coIkluZGV4ICVzIGlzIGNvcnJ1cHRlZCAtICVzLiBJbmRleCB0dXBsZTogKCV1LCV1KSIsCisJ CQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHN0YXRlLT5pZHhyZWwpLAorCQkJCQlmbXQsCisJ CQkJCXN0YXRlLT5yZWdwYWdlQmxrLAorCQkJCQlzdGF0ZS0+cmVncGFnZW9mZnNldCkpKTsKK30K KworLyogUmVwb3J0IHdpdGggcmFuZ2UgYmxrbm8sIHJldm1hcCBpdGVtIGluZm8gKi8KK3ZvaWQK K3Jldm1hcF9pdGVtX2VyZXBvcnQoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSwgY29uc3QgY2hhciAq Zm10KQoreworCUFzc2VydChzdGF0ZS0+cmFuZ2VCbGtubyAhPSBJbnZhbGlkQmxvY2tOdW1iZXIp OworCUFzc2VydChzdGF0ZS0+cmV2bWFwQmxrICE9IEludmFsaWRCbG9ja051bWJlcik7CisJQXNz ZXJ0KHN0YXRlLT5yZXZtYXBpZHggPj0gMCAmJiBzdGF0ZS0+cmV2bWFwaWR4IDwgUkVWTUFQX1BB R0VfTUFYSVRFTVMpOworCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfSU5E RVhfQ09SUlVQVEVEKSwKKwkJCSBlcnJtc2coIkluZGV4ICVzIGlzIGNvcnJ1cHRlZCAtICVzLiBS YW5nZSBibGtubzogJXUsIHJldm1hcCBpdGVtOiAoJXUsJXUpLiIsCisJCQkJCVJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKHN0YXRlLT5pZHhyZWwpLAorCQkJCQlmbXQsCisJCQkJCXN0YXRlLT5yYW5n ZUJsa25vLAorCQkJCQlzdGF0ZS0+cmV2bWFwQmxrLAorCQkJCQlzdGF0ZS0+cmV2bWFwaWR4KSkp OworfQotLSAKMi40My4wCgo= --000000000000ed5c510639345447 Content-Type: text/x-patch; charset="US-ASCII"; name="v5-0005-using-withinRange-function-for-heap-all-indexed-c.patch" Content-Disposition: attachment; filename="v5-0005-using-withinRange-function-for-heap-all-indexed-c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcqopnhp4 RnJvbSA2NmM1ZmY1MDk5OTA3M2E2NjkxY2Q2YTZlNDQ1NjE0NmMyYmQ4ZjI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBcnNlbml5IE11a2hpbiA8YXJzZW5peS5tdWtoaW4uZGV2QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCA1IEp1bCAyMDI1IDIzOjEyOjI4ICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2NSA1LzVdIHVzaW5nIHdpdGhpblJhbmdlIGZ1bmN0aW9uIGZvciBoZWFwIGFsbCBpbmRl eGVkIGNoZWNrCgotLS0KIGNvbnRyaWIvYW1jaGVjay9hbWNoZWNrLS0xLjUtLTEuNi5zcWwgICB8 ICAgNSArLQogY29udHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2JyaW4ub3V0IHwgICA0ICst CiBjb250cmliL2FtY2hlY2svc3FsL2NoZWNrX2JyaW4uc3FsICAgICAgfCAgIDQgKy0KIGNvbnRy aWIvYW1jaGVjay92ZXJpZnlfYnJpbi5jICAgICAgICAgICB8IDI5MiArKysrKy0tLS0tLS0tLS0t LS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygrKSwgMjQ4IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay9hbWNoZWNrLS0xLjUtLTEuNi5zcWwg Yi9jb250cmliL2FtY2hlY2svYW1jaGVjay0tMS41LS0xLjYuc3FsCmluZGV4IDYzMzdlMDY1YmIx Li5kNGY0NDQ5NWJiYSAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL2FtY2hlY2stLTEuNS0t MS42LnNxbAorKysgYi9jb250cmliL2FtY2hlY2svYW1jaGVjay0tMS41LS0xLjYuc3FsCkBAIC05 LDEyICs5LDExIEBACiAtLQogQ1JFQVRFIEZVTkNUSU9OIGJyaW5faW5kZXhfY2hlY2soaW5kZXgg cmVnY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWd1bGFycGFnZXNj aGVjayBib29sZWFuIGRlZmF1bHQgZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBoZWFwYWxsaW5kZXhlZCBib29sZWFuIGRlZmF1bHQgZmFsc2UsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zaXN0ZW50X29wZXJhdG9yX25hbWVzIHRleHRbXSBkZWZh dWx0ICd7fScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYXBhbGxpbmRleGVk IGJvb2xlYW4gZGVmYXVsdCBmYWxzZQogKQogICAgIFJFVFVSTlMgVk9JRAogQVMgJ01PRFVMRV9Q QVRITkFNRScsICdicmluX2luZGV4X2NoZWNrJwogTEFOR1VBR0UgQyBTVFJJQ1QgUEFSQUxMRUwg UkVTVFJJQ1RFRDsKIAogLS0gV2UgZG9uJ3Qgd2FudCB0aGlzIHRvIGJlIGF2YWlsYWJsZSB0byBw dWJsaWMKLVJFVk9LRSBBTEwgT04gRlVOQ1RJT04gYnJpbl9pbmRleF9jaGVjayhyZWdjbGFzcywg Ym9vbGVhbiwgYm9vbGVhbiwgdGV4dFtdKSBGUk9NIFBVQkxJQzsKXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCitSRVZPS0UgQUxMIE9OIEZVTkNUSU9OIGJyaW5faW5kZXhfY2hlY2socmVnY2xh c3MsIGJvb2xlYW4sIGJvb2xlYW4pIEZST00gUFVCTElDOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19icmluLm91 dCBiL2NvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19icmluLm91dAppbmRleCAwYWE5MGRh ZmEyMC4uMDUwNjc4NThhYTkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9j aGVja19icmluLm91dAorKysgYi9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfYnJpbi5v dXQKQEAgLTExMyw3ICsxMTMsNyBAQCBTRUxFQ1QgQk9YKHBvaW50KHJhbmRvbSgpICogMTAwMCwg cmFuZG9tKCkgKiAxMDAwKSwgcG9pbnQocmFuZG9tKCkgKiAxMDAwLCByYW5kbwogRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMTAwMDApOwogLS0gY3JlYXRlIHNvbWUgZW1wdHkgcmFuZ2VzCiBERUxF VEUgRlJPTSBicmludGVzdCBXSEVSRSBpZCA+IDIwMDAgQU5EIGlkIDwgNDAwMDsKLVNFTEVDVCBi cmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSwgdHJ1ZSwgJ3si QD4ifScpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNT LCB0cnVlLCB0cnVlKTsKICBicmluX2luZGV4X2NoZWNrIAogLS0tLS0tLS0tLS0tLS0tLS0tCiAg CkBAIC0xMjIsNyArMTIyLDcgQEAgU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lk eCc6OlJFR0NMQVNTLCB0cnVlLCB0cnVlLCAneyJAPiJ9Jyk7CiAtLSByZWJ1aWxkIGluZGV4CiBE Uk9QIElOREVYIGJyaW50ZXN0X2lkeDsKIENSRUFURSBJTkRFWCBicmludGVzdF9pZHggT04gYnJp bnRlc3QgVVNJTkcgQlJJTiAoYSBCT1hfSU5DTFVTSU9OX09QUykgV0lUSCAoUEFHRVNfUEVSX1JB TkdFID0gMik7Ci1TRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xB U1MsIHRydWUsIHRydWUsICd7IkA+In0nKTsKK1NFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmlu dGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSwgdHJ1ZSk7CiAgYnJpbl9pbmRleF9jaGVjayAKIC0t LS0tLS0tLS0tLS0tLS0tLQogIApkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3NxbC9jaGVj a19icmluLnNxbCBiL2NvbnRyaWIvYW1jaGVjay9zcWwvY2hlY2tfYnJpbi5zcWwKaW5kZXggMGY1 ODU2N2Y3NmYuLjc5OTNlZTBmNGQ5IDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svc3FsL2No ZWNrX2JyaW4uc3FsCisrKyBiL2NvbnRyaWIvYW1jaGVjay9zcWwvY2hlY2tfYnJpbi5zcWwKQEAg LTg4LDEyICs4OCwxMiBAQCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwMCk7CiAtLSBjcmVh dGUgc29tZSBlbXB0eSByYW5nZXMKIERFTEVURSBGUk9NIGJyaW50ZXN0IFdIRVJFIGlkID4gMjAw MCBBTkQgaWQgPCA0MDAwOwogCi1TRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4 Jzo6UkVHQ0xBU1MsIHRydWUsIHRydWUsICd7IkA+In0nKTsKK1NFTEVDVCBicmluX2luZGV4X2No ZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSwgdHJ1ZSk7CiAKIC0tIHJlYnVpbGQg aW5kZXgKIERST1AgSU5ERVggYnJpbnRlc3RfaWR4OwogQ1JFQVRFIElOREVYIGJyaW50ZXN0X2lk eCBPTiBicmludGVzdCBVU0lORyBCUklOIChhIEJPWF9JTkNMVVNJT05fT1BTKSBXSVRIIChQQUdF U19QRVJfUkFOR0UgPSAyKTsKLVNFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgn OjpSRUdDTEFTUywgdHJ1ZSwgdHJ1ZSwgJ3siQD4ifScpOworU0VMRUNUIGJyaW5faW5kZXhfY2hl Y2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlLCB0cnVlKTsKIC0tIGNsZWFudXAKIERS T1AgVEFCTEUgYnJpbnRlc3Q7CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlf YnJpbi5jIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9icmluLmMKaW5kZXggMDFhNjliNjE2Y2Mu LmE2MDQ5OTk3OGIzIDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X2JyaW4uYwor KysgYi9jb250cmliL2FtY2hlY2svdmVyaWZ5X2JyaW4uYwpAQCAtNDAsNyArNDAsNiBAQCB0eXBl ZGVmIHN0cnVjdCBCcmluQ2hlY2tTdGF0ZQogCiAJYm9vbAkJcmVndWxhcnBhZ2VzY2hlY2s7CiAJ Ym9vbAkJaGVhcGFsbGluZGV4ZWQ7Ci0JQXJyYXlUeXBlICAqY29uc2lzdGVudF9vcGVyX25hbWVz OwogCiAJLyogQlJJTiBjaGVjayBjb21tb24gZmllbGRzICovCiAKQEAgLTcxLDE0ICs3MCw5IEBA IHR5cGVkZWYgc3RydWN0IEJyaW5DaGVja1N0YXRlCiAKIAkvKiBIZWFwIGFsbCBpbmRleGVkIGNo ZWNrIGZpZWxkcyAqLwogCi0JU3RyaW5nCSAgKipvcGVyYXRvck5hbWVzOwogCUJyaW5SZXZtYXAg KnJldm1hcDsKIAlCdWZmZXIJCWJ1ZjsKLQlGbWdySW5mbyAgICpjb25zaXN0ZW50Rm47Ci0JLyog U2NhbiBrZXlzIGZvciByZWd1bGFyIHZhbHVlcyAqLwotCVNjYW5LZXkgICAgKm5vbm51bGxfc2s7 Ci0JLyogU2NhbiBrZXlzIGZvciBudWxsIHZhbHVlcyAqLwotCVNjYW5LZXkgICAgKmlzbnVsbF9z azsKKwlGbWdySW5mbyAgICp3aXRoaW5SYW5nZUZuOwogCWRvdWJsZQkJcmFuZ2VfY250OwogCS8q IGZpcnN0IGJsb2NrIG9mIHRoZSBuZXh0IHJhbmdlICovCiAJQmxvY2tOdW1iZXIgbmV4dHJhbmdl QmxrOwpAQCAtMTE1LDggKzEwOSw2IEBAIHN0YXRpYyBJdGVtSWQgUGFnZUdldEl0ZW1JZENhcmVm dWwoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSk7CiAKIHN0YXRpYyB2b2lkIGNoZWNrX2hlYXBfYWxs X2luZGV4ZWQoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSk7CiAKLXN0YXRpYyB2b2lkIGNoZWNrX2Fu ZF9wcmVwYXJlX29wZXJhdG9yX25hbWVzKEJyaW5DaGVja1N0YXRlICogc3RhdGUpOwotCiBzdGF0 aWMgdm9pZCBicmluX2NoZWNrX2NhbGxiYWNrKFJlbGF0aW9uIGluZGV4LAogCQkJCQkJCQlJdGVt UG9pbnRlciB0aWQsCiAJCQkJCQkJCURhdHVtICp2YWx1ZXMsCkBAIC0xMjYsMTAgKzExOCw2IEBA IHN0YXRpYyB2b2lkIGJyaW5fY2hlY2tfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgsCiAKIHN0YXRp YyB2b2lkIGNoZWNrX2hlYXBfdHVwbGUoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSwgY29uc3QgRGF0 dW0gKnZhbHVlcywgY29uc3QgYm9vbCAqbnVsbHMsIEl0ZW1Qb2ludGVyIHRpZCk7CiAKLXN0YXRp YyBTY2FuS2V5IHByZXBhcmVfbm9ubnVsbF9zY2FuX2tleShjb25zdCBCcmluQ2hlY2tTdGF0ZSAq IHN0YXRlLCBBdHRyTnVtYmVyIGF0dG5vKTsKLQotc3RhdGljIFNjYW5LZXkgcHJlcGFyZV9pc251 bGxfc2Nhbl9rZXkoQXR0ck51bWJlciBhdHRubyk7Ci0KIHN0YXRpYyB2b2lkIGJyaW5fY2hlY2tf ZXJlcG9ydChCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlLCBjb25zdCBjaGFyICpmbXQpOwogCiBzdGF0 aWMgdm9pZCByZXZtYXBfaXRlbV9lcmVwb3J0KEJyaW5DaGVja1N0YXRlICogc3RhdGUsIGNvbnN0 IGNoYXIgKmZtdCk7CkBAIC0xNDgsNyArMTM2LDYgQEAgYnJpbl9pbmRleF9jaGVjayhQR19GVU5D VElPTl9BUkdTKQogCiAJc3RhdGUtPnJlZ3VsYXJwYWdlc2NoZWNrID0gUEdfR0VUQVJHX0JPT0wo MSk7CiAJc3RhdGUtPmhlYXBhbGxpbmRleGVkID0gUEdfR0VUQVJHX0JPT0woMik7Ci0Jc3RhdGUt PmNvbnNpc3RlbnRfb3Blcl9uYW1lcyA9IFBHX0dFVEFSR19BUlJBWVRZUEVfUCgzKTsKIAogCWFt Y2hlY2tfbG9ja19yZWxhdGlvbl9hbmRfY2hlY2soaW5kcmVsaWQsCiAJCQkJCQkJCQlCUklOX0FN X09JRCwKQEAgLTE3MywxNSArMTYwLDYgQEAgYnJpbl9jaGVjayhSZWxhdGlvbiBpZHhyZWwsIFJl bGF0aW9uIGhlYXByZWwsIHZvaWQgKmNhbGxiYWNrX3N0YXRlLCBib29sIHJlYWRvbmwKIAlzdGF0 ZS0+YmRlc2MgPSBicmluX2J1aWxkX2Rlc2MoaWR4cmVsKTsKIAlzdGF0ZS0+bmF0dHMgPSBzdGF0 ZS0+YmRlc2MtPmJkX3R1cGRlc2MtPm5hdHRzOwogCi0JLyoKLQkgKiBXZSBrbm93IGhvdyBtYW55 IGF0dHJpYnV0ZXMgaW5kZXggaGFzLCBzbyBsZXQncyBwcm9jZXNzIG9wZXJhdG9yIG5hbWVzCi0J ICogYXJyYXkKLQkgKi8KLQlpZiAoc3RhdGUtPmhlYXBhbGxpbmRleGVkKQotCXsKLQkJY2hlY2tf YW5kX3ByZXBhcmVfb3BlcmF0b3JfbmFtZXMoc3RhdGUpOwotCX0KLQogCWNoZWNrX2JyaW5faW5k ZXhfc3RydWN0dXJlKHN0YXRlKTsKIAogCWlmIChzdGF0ZS0+aGVhcGFsbGluZGV4ZWQpCkBAIC04 NDgsOCArODI2LDggQEAgUGFnZUdldEl0ZW1JZENhcmVmdWwoQnJpbkNoZWNrU3RhdGUgKiBzdGF0 ZSkKIC8qCiAgKiBDaGVjayB0aGF0IGV2ZXJ5IGhlYXAgdHVwbGUgYXJlIGNvbnNpc3RlbnQgd2l0 aCB0aGUgaW5kZXguCiAgKgotICogSGVyZSB3ZSBnZW5lcmF0ZSBTY2FuS2V5IGZvciBldmVyeSBo ZWFwIHR1cGxlIGFuZCB0ZXN0IGl0IGFnYWluc3QKLSAqIGFwcHJvcHJpYXRlIHJhbmdlIHVzaW5n IGNvbnNpc3RlbnRGbiAoZm9yIFNjYW5LZXkgZ2VuZXJhdGlvbiBsb2dpYyBsb29rICdwcmVwYXJl X25vbm51bGxfc2Nhbl9rZXknKQorICogV2UgdXNlIHdpdGhpblJhbmdlIGZ1bmN0aW9uIGZvciBl dmVyeSBub25udWxsIHZhbHVlIChpbiBjYXNlCisgKiBvZiBpb19yZWd1bGFyX251bGxzID0gZmFs c2Ugd2UgdXNlIHdpdGhpblJhbmdlIGZ1bmN0aW9uIGZvciBudWxsIHZhbHVlcyB0b28pLgogICoK ICAqIEFsc28sIHdlIGNoZWNrIHRoYXQgZmllbGRzICdlbXB0eV9yYW5nZScsICdhbGxfbnVsbHMn IGFuZCAnaGFzX251bGxzJwogICogYXJlIG5vdCB0b28gIm5hcnJvdyIgZm9yIGVhY2ggcmFuZ2Us IHdoaWNoIG1lYW5zOgpAQCAtODc1LDEyICs4NTMsMTAgQEAgY2hlY2tfaGVhcF9hbGxfaW5kZXhl ZChCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlKQogCXN0YXRlLT5yZXZtYXAgPSBicmluUmV2bWFwSW5p dGlhbGl6ZShpZHhyZWwsICZzdGF0ZS0+cGFnZXNQZXJSYW5nZSk7CiAJc3RhdGUtPmR0dXAgPSBi cmluX25ld19tZW10dXBsZShzdGF0ZS0+YmRlc2MpOwogCXN0YXRlLT5jaGVja2FibGVfcmFuZ2Ug PSBmYWxzZTsKLQlzdGF0ZS0+Y29uc2lzdGVudEZuID0gcGFsbG9jMF9hcnJheShGbWdySW5mbywg c3RhdGUtPm5hdHRzKTsKKwlzdGF0ZS0+d2l0aGluUmFuZ2VGbiA9IHBhbGxvYzBfYXJyYXkoRm1n ckluZm8sIHN0YXRlLT5uYXR0cyk7CiAJc3RhdGUtPnJhbmdlX2NudCA9IDA7CiAJLyogbmV4dCBy YW5nZSBpcyB0aGUgZmlyc3QgcmFuZ2UgaW4gdGhlIGJlZ2lubmluZyAqLwogCXN0YXRlLT5uZXh0 cmFuZ2VCbGsgPSAwOwotCXN0YXRlLT5ub25udWxsX3NrID0gcGFsbG9jMF9hcnJheShTY2FuS2V5 LCBzdGF0ZS0+bmF0dHMpOwotCXN0YXRlLT5pc251bGxfc2sgPSBwYWxsb2MwX2FycmF5KFNjYW5L ZXksIHN0YXRlLT5uYXR0cyk7CiAJc3RhdGUtPnJhbmdlQ3R4ID0gQWxsb2NTZXRDb250ZXh0Q3Jl YXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAogCQkJCQkJCQkJCQkiYnJpbiBjaGVjayByYW5nZSBj b250ZXh0IiwKIAkJCQkJCQkJCQkJQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CkBAIC04ODgsMTkg Kzg2NCwzMiBAQCBjaGVja19oZWFwX2FsbF9pbmRleGVkKEJyaW5DaGVja1N0YXRlICogc3RhdGUp CiAJCQkJCQkJCQkJCQkiYnJpbiBjaGVjayB0dXBsZSBjb250ZXh0IiwKIAkJCQkJCQkJCQkJCUFM TE9DU0VUX0RFRkFVTFRfU0laRVMpOwogCi0JLyoKLQkgKiBQcmVwYXJlICJub24tbnVsbCIgYW5k ICJpc19udWxsIiBzY2FuIGtleXMgYW5kIGNvbnNpc3RlbnQgZm4gZm9yIGVhY2gKLQkgKiBhdHRy aWJ1dGUKLQkgKi8KKwkvKiBQcmVwYXJlIHdpdGhpblJhbmdlIGZ1bmN0aW9uIGZvciBlYWNoIGF0 dHJpYnV0ZSAqLwogCWZvciAoQXR0ck51bWJlciBhdHRubyA9IDE7IGF0dG5vIDw9IHN0YXRlLT5u YXR0czsgYXR0bm8rKykKIAl7Ci0JCUZtZ3JJbmZvICAgKnRtcDsKKwkJaWYgKFJlZ1Byb2NlZHVy ZUlzVmFsaWQoaW5kZXhfZ2V0cHJvY2lkKHN0YXRlLT5pZHhyZWwsIGF0dG5vLCBCUklOX1BST0NO VU1fV0lUSElOUkFOR0UpKSkKKwkJeworCQkJRm1nckluZm8gICAqZm4gPSBpbmRleF9nZXRwcm9j aW5mbyhpZHhyZWwsIGF0dG5vLCBCUklOX1BST0NOVU1fV0lUSElOUkFOR0UpOwogCi0JCXRtcCA9 IGluZGV4X2dldHByb2NpbmZvKGlkeHJlbCwgYXR0bm8sIEJSSU5fUFJPQ05VTV9DT05TSVNURU5U KTsKLQkJZm1ncl9pbmZvX2NvcHkoJnN0YXRlLT5jb25zaXN0ZW50Rm5bYXR0bm8gLSAxXSwgdG1w LCBDdXJyZW50TWVtb3J5Q29udGV4dCk7CisJCQlmbWdyX2luZm9fY29weSgmc3RhdGUtPndpdGhp blJhbmdlRm5bYXR0bm8gLSAxXSwgZm4sIEN1cnJlbnRNZW1vcnlDb250ZXh0KTsKKwkJfQorCQll bHNlCisJCXsKKwkJCS8qCisJCQkgKiBJZiB0aGVyZSBpcyBubyB3aXRoaW5SYW5nZSBmdW5jdGlv biBmb3IgdGhlIGF0dHJpYnV0ZSwgbm90aWNlCisJCQkgKiB1c2VyIGFib3V0IGl0LiBXZSBjb250 aW51ZSBoZWFwIGFsbCBpbmRleGVkIGNoZWNrIGV2ZW4gZm9yCisJCQkgKiBpbmRleGVzIHdpdGgg anVzdCBvbmUgYXR0cmlidXRlIGFzIGV2ZW4gd2l0aG91dCBzdXBwb3J0CisJCQkgKiBmdW5jdGlv biBzb21lIGVycm9ycyBjb3VsZCBiZSBkZXRlY3RlZC4KKwkJCSAqLworCQkJZXJlcG9ydChOT1RJ Q0UsCisJCQkJCWVycm1zZygiTWlzc2luZyBzdXBwb3J0IGZ1bmN0aW9uICVkIGZvciBhdHRyaWJ1 dGUgJWQgb2YgaW5kZXggXCIlc1wiLiAiCisJCQkJCQkgICAiU2tpcCBoZWFwIGFsbCBpbmRleGVk IGNoZWNrIGZvciB0aGlzIGF0dHJpYnV0ZS4iLAorCQkJCQkJICAgQlJJTl9QUk9DTlVNX1dJVEhJ TlJBTkdFLAorCQkJCQkJICAgYXR0bm8sCisJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShzdGF0ZS0+aWR4cmVsKQorCQkJCQkJICAgKSk7CisJCX0KIAotCQlzdGF0ZS0+bm9ubnVsbF9z a1thdHRubyAtIDFdID0gcHJlcGFyZV9ub25udWxsX3NjYW5fa2V5KHN0YXRlLCBhdHRubyk7Ci0J CXN0YXRlLT5pc251bGxfc2tbYXR0bm8gLSAxXSA9IHByZXBhcmVfaXNudWxsX3NjYW5fa2V5KGF0 dG5vKTsKIAl9CiAKIAlpbmRleEluZm8gPSBCdWlsZEluZGV4SW5mbyhpZHhyZWwpOwpAQCAtOTI2 LDE1MiArOTE1LDYgQEAgY2hlY2tfaGVhcF9hbGxfaW5kZXhlZChCcmluQ2hlY2tTdGF0ZSAqIHN0 YXRlKQogCU1lbW9yeUNvbnRleHREZWxldGUoc3RhdGUtPmhlYXB0dXBsZUN0eCk7CiB9CiAKLS8q Ci0gKiBDaGVjayBvcGVyYXRvciBuYW1lcyBhcnJheSBpbnB1dCBwYXJhbWV0ZXIgYW5kIGNvbnZl cnQgaXQgdG8gYXJyYXkgb2Ygc3RyaW5ncwotICogRW1wdHkgaW5wdXQgYXJyYXkgbWVhbnMgd2Ug dXNlICI9IiBvcGVyYXRvciBmb3IgZXZlcnkgYXR0cmlidXRlCi0gKi8KLXN0YXRpYyB2b2lkCi1j aGVja19hbmRfcHJlcGFyZV9vcGVyYXRvcl9uYW1lcyhCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlKQot ewotCU9pZAkJCWVsZW1lbnRfdHlwZSA9IEFSUl9FTEVNVFlQRShzdGF0ZS0+Y29uc2lzdGVudF9v cGVyX25hbWVzKTsKLQlpbnQxNgkJdHlwbGVuOwotCWJvb2wJCXR5cGJ5dmFsOwotCWNoYXIJCXR5 cGFsaWduOwotCURhdHVtCSAgICp2YWx1ZXM7Ci0JYm9vbAkgICAqZWxlbV9udWxsczsKLQlpbnQJ CQludW1fZWxlbXM7Ci0KLQlzdGF0ZS0+b3BlcmF0b3JOYW1lcyA9IHBhbGxvYyhzaXplb2YoU3Ry aW5nKSAqIHN0YXRlLT5uYXR0cyk7Ci0KLQlnZXRfdHlwbGVuYnl2YWxhbGlnbihlbGVtZW50X3R5 cGUsICZ0eXBsZW4sICZ0eXBieXZhbCwgJnR5cGFsaWduKTsKLQlkZWNvbnN0cnVjdF9hcnJheShz dGF0ZS0+Y29uc2lzdGVudF9vcGVyX25hbWVzLCBlbGVtZW50X3R5cGUsIHR5cGxlbiwgdHlwYnl2 YWwsIHR5cGFsaWduLAotCQkJCQkgICZ2YWx1ZXMsICZlbGVtX251bGxzLCAmbnVtX2VsZW1zKTsK LQotCS8qIElmIHdlIGhhdmUgc29tZSBpbnB1dCBjaGVjayBpdCBhbmQgY29udmVydCB0byBTdHJp bmcqKiAqLwotCWlmIChudW1fZWxlbXMgIT0gMCkKLQl7Ci0JCWlmIChudW1fZWxlbXMgIT0gc3Rh dGUtPm5hdHRzKQotCQl7Ci0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKLQkJCQkJIGVycm1zZygiT3BlcmF0b3IgbmFtZXMg YXJyYXkgbGVuZ3RoICV1LCBidXQgaW5kZXggaGFzICV1IGF0dHJpYnV0ZXMiLAotCQkJCQkJCW51 bV9lbGVtcywgc3RhdGUtPm5hdHRzKSkpOwotCQl9Ci0KLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBu dW1fZWxlbXM7IGkrKykKLQkJewotCQkJaWYgKGVsZW1fbnVsbHNbaV0pCi0JCQl7Ci0JCQkJZXJl cG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFM VUUpLAotCQkJCQkJIGVycm1zZygiT3BlcmF0b3IgbmFtZXMgYXJyYXkgY29udGFpbnMgTlVMTCIp KSk7Ci0JCQl9Ci0JCQlzdGF0ZS0+b3BlcmF0b3JOYW1lc1tpXSA9IG1ha2VTdHJpbmcoVGV4dERh dHVtR2V0Q1N0cmluZyh2YWx1ZXNbaV0pKTsKLQkJfQotCX0KLQllbHNlCi0JewotCQkvKiBJZiB0 aGVyZSBpcyBubyBpbnB1dCBqdXN0IHVzZSAiPSIgb3BlcmF0b3IgZm9yIGFsbCBhdHRyaWJ1dGVz ICovCi0JCWZvciAoaW50IGkgPSAwOyBpIDwgc3RhdGUtPm5hdHRzOyBpKyspCi0JCXsKLQkJCXN0 YXRlLT5vcGVyYXRvck5hbWVzW2ldID0gbWFrZVN0cmluZygiPSIpOwotCQl9Ci0JfQotfQotCi0v KgotICogUHJlcGFyZSBTY2FuS2V5IGZvciBpbmRleCBhdHRyaWJ1dGUuCi0gKgotICogQ29uc2lz dGVudEZuIHJlcXVpcmVzIFNjYW5LZXksIHNvIHdlIG5lZWQgdG8gZ2VuZXJhdGUgU2NhbktleSBm b3IgZXZlcnkKLSAqIGF0dHJpYnV0ZSBzb21laG93LiBXZSB3YW50IFNjYW5LZXkgdGhhdCB3b3Vs ZCByZXN1bHQgaW4gVFJVRSBmb3IgZXZlcnkgaGVhcAotICogdHVwbGUgd2l0aGluIHRoZSByYW5n ZSB3aGVuIHdlIHVzZSBpdHMgaW5kZXhlZCB2YWx1ZSBhcyBza19hcmd1bWVudC4KLSAqIFRvIGdl bmVyYXRlIHN1Y2ggYSBTY2FuS2V5IHdlIG5lZWQgdG8gZGVmaW5lIHRoZSByaWdodCBvcGVyYW5k IHR5cGUgYW5kIHRoZSBzdHJhdGVneSBudW1iZXIuCi0gKiBSaWdodCBvcGVyYW5kIHR5cGUgaXMg YSB0eXBlIG9mIGRhdGEgdGhhdCBpbmRleCBpcyBidWlsdCBvbiwgc28gaXQncyAnb3BjaW50eXBl Jy4KLSAqIFRoZXJlIGlzIG5vIHN0cmF0ZWd5IG51bWJlciB0aGF0IHdlIGNhbiBhbHdheXMgdXNl LAotICogYmVjYXVzZSBldmVyeSBvcGNsYXNzIGRlZmluZXMgaXRzIG93biBzZXQgb2Ygb3BlcmF0 b3JzIGl0IHN1cHBvcnRzIGFuZCBzdHJhdGVneSBudW1iZXIKLSAqIGZvciB0aGUgc2FtZSBvcGVy YXRvciBjYW4gZGlmZmVyIGZyb20gb3BjbGFzcyB0byBvcGNsYXNzLgotICogU28gdG8gZ2V0IHN0 cmF0ZWd5IG51bWJlciB3ZSBsb29rIHVwIGFuIG9wZXJhdG9yIHRoYXQgZ2l2ZXMgdXMgZGVzaXJl ZCBiZWhhdmlvcgotICogYW5kIHdoaWNoIGJvdGggb3BlcmFuZCB0eXBlcyBhcmUgJ29wY2ludHlw ZScgYW5kIHRoZW4gcmV0cmlldmUgdGhlIHN0cmF0ZWd5IG51bWJlciBmb3IgaXQuCi0gKiBNb3N0 IG9mIHRoZSB0aW1lIHdlIGNhbiB1c2UgJz0nLiBXZSBsZXQgdXNlciBkZWZpbmUgb3BlcmF0b3Ig bmFtZSBpbiBjYXNlIG9wY2xhc3MgZG9lc24ndAotICogc3VwcG9ydCAnPScgb3BlcmF0b3IuIEFs c28sIGlmIHN1Y2ggb3BlcmF0b3IgZG9lc24ndCBleGlzdCwgd2UgY2FuJ3QgcHJvY2VlZCB3aXRo IHRoZSBjaGVjay4KLSAqCi0gKiBHZW5lcmF0ZWQgb25jZSwgYW5kIHdpbGwgYmUgcmV1c2VkIGZv ciBhbGwgaGVhcCB0dXBsZXMuCi0gKiBBcmd1bWVudCBmaWVsZCB3aWxsIGJlIGZpbGxlZCBmb3Ig ZXZlcnkgaGVhcCB0dXBsZSBiZWZvcmUKLSAqIGNvbnNpc3RlbnQgZnVuY3Rpb24gaW52b2NhdGlv biwgc28gbGVhdmUgaXQgTlVMTCBmb3IgYSB3aGlsZS4KLSAqCi0gKi8KLXN0YXRpYyBTY2FuS2V5 Ci1wcmVwYXJlX25vbm51bGxfc2Nhbl9rZXkoY29uc3QgQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSwg QXR0ck51bWJlciBhdHRubykKLXsKLQlTY2FuS2V5CQlzY2FuS2V5OwotCU9pZAkJCW9wT2lkOwot CU9pZAkJCW9wRmFtaWx5T2lkOwotCWJvb2wJCWRlZmluZWQ7Ci0JU3RyYXRlZ3lOdW1iZXIgc3Ry YXRlZ3k7Ci0JUmVnUHJvY2VkdXJlIG9wUmVnUHJvYzsKLQlMaXN0CSAgICpvcGVyTmFtZUxpc3Q7 Ci0JaW50CQkJYXR0aW5kZXggPSBhdHRubyAtIDE7Ci0JRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9 IFR1cGxlRGVzY0F0dHIoc3RhdGUtPmJkZXNjLT5iZF90dXBkZXNjLCBhdHRpbmRleCk7Ci0JT2lk CQkJdHlwZSA9IHN0YXRlLT5pZHhyZWwtPnJkX29wY2ludHlwZVthdHRpbmRleF07Ci0JU3RyaW5n CSAgICpvcG5hbWUgPSBzdGF0ZS0+b3BlcmF0b3JOYW1lc1thdHRubyAtIDFdOwotCi0Jb3BGYW1p bHlPaWQgPSBzdGF0ZS0+aWR4cmVsLT5yZF9vcGZhbWlseVthdHRpbmRleF07Ci0Jb3Blck5hbWVM aXN0ID0gbGlzdF9tYWtlMShvcG5hbWUpOwotCW9wT2lkID0gT3BlcmF0b3JMb29rdXAob3Blck5h bWVMaXN0LCB0eXBlLCB0eXBlLCAmZGVmaW5lZCk7Ci0KLQlpZiAob3BPaWQgPT0gSW52YWxpZE9p ZCkKLQl7Ci0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURf RlVOQ1RJT04pLAotCQkJCSBlcnJtc2coIlRoZXJlIGlzIG5vIG9wZXJhdG9yICVzIGZvciB0eXBl ICV1IiwKLQkJCQkJCW9wbmFtZS0+c3ZhbCwgdHlwZSkpKTsKLQl9Ci0KLQlzdHJhdGVneSA9IGdl dF9vcF9vcGZhbWlseV9zdHJhdGVneShvcE9pZCwgb3BGYW1pbHlPaWQpOwotCi0JaWYgKHN0cmF0 ZWd5ID09IDApCi0JewotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfV1JP TkdfT0JKRUNUX1RZUEUpLAotCQkJCSBlcnJtc2coIm9wZXJhdG9yICVzIGlzIG5vdCBhIG1lbWJl ciBvZiBvcGVyYXRvciBmYW1pbHkgXCIlc1wiIiwKLQkJCQkJCW9wbmFtZS0+c3ZhbCwKLQkJCQkJ CWdldF9vcGZhbWlseV9uYW1lKG9wRmFtaWx5T2lkLCBmYWxzZSkpKSk7Ci0JfQotCi0Jb3BSZWdQ cm9jID0gZ2V0X29wY29kZShvcE9pZCk7Ci0Jc2NhbktleSA9IHBhbGxvYzAoc2l6ZW9mKFNjYW5L ZXlEYXRhKSk7Ci0JU2NhbktleUVudHJ5SW5pdGlhbGl6ZSgKLQkJCQkJCSAgIHNjYW5LZXksCi0J CQkJCQkgICAwLAotCQkJCQkJICAgYXR0bm8sCi0JCQkJCQkgICBzdHJhdGVneSwKLQkJCQkJCSAg IHR5cGUsCi0JCQkJCQkgICBhdHRyLT5hdHRjb2xsYXRpb24sCi0JCQkJCQkgICBvcFJlZ1Byb2Ms Ci0JCQkJCQkgICAoRGF0dW0pIE5VTEwKLQkJKTsKLQlwZnJlZShvcGVyTmFtZUxpc3QpOwotCi0J cmV0dXJuIHNjYW5LZXk7Ci19Ci0KLXN0YXRpYyBTY2FuS2V5Ci1wcmVwYXJlX2lzbnVsbF9zY2Fu X2tleShBdHRyTnVtYmVyIGF0dG5vKQotewotCVNjYW5LZXkJCXNjYW5LZXk7Ci0KLQlzY2FuS2V5 ID0gcGFsbG9jMChzaXplb2YoU2NhbktleURhdGEpKTsKLQlTY2FuS2V5RW50cnlJbml0aWFsaXpl KHNjYW5LZXksCi0JCQkJCQkgICBTS19JU05VTEwgfCBTS19TRUFSQ0hOVUxMLAotCQkJCQkJICAg YXR0bm8sCi0JCQkJCQkgICBJbnZhbGlkU3RyYXRlZ3ksCi0JCQkJCQkgICBJbnZhbGlkT2lkLAot CQkJCQkJICAgSW52YWxpZE9pZCwKLQkJCQkJCSAgIEludmFsaWRPaWQsCi0JCQkJCQkgICAoRGF0 dW0pIDApOwotCXJldHVybiBzY2FuS2V5OwotfQotCiAvKgogICogV2Ugd2FsayBmcm9tIHRoZSBm aXJzdCByYW5nZSAoYmxrbm8gPSAwKSB0byB0aGUgbGFzdCBhcyB0aGUgc2NhbiBwcm9jZWVkLgog ICogRm9yIGV2ZXJ5IGhlYXAgdHVwbGUgd2UgY2hlY2sgaWYgd2UgYXJlIGRvbmUgd2l0aCB0aGUg Y3VycmVudCByYW5nZSwgYW5kIHdlIG5lZWQgdG8gbW92ZSBmdXJ0aGVyCkBAIC0xMTU1LDEwICs5 OTgsOCBAQCBicmluX2NoZWNrX2NhbGxiYWNrKFJlbGF0aW9uIGluZGV4LCBJdGVtUG9pbnRlciB0 aWQsIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbAogCiAvKgogICogV2UgY2hlY2sgaGFzbnVs bHMgZmxhZ3MgZm9yIG51bGwgdmFsdWVzIGFuZCBvaV9yZWd1bGFyX251bGxzID0gdHJ1ZSwKLSAq IGNoZWNrIGFsbG51bGxzIGlzIGZhbHNlIGZvciBhbGwgbm9ubnVsbCB2YWx1ZXMgbm90IG1hdHRl ciBvaV9yZWd1bGFyX251bGxzIGlzIHNldCBvciBub3QsCi0gKiBGb3IgYWxsIG90aGVyIGNhc2Vz IHdlIGNhbGwgY29uc2lzdGVudEZuIHdpdGggYXBwcm9wcmlhdGUgc2NhbktleToKLSAqIC0gZm9y IG9pX3JlZ3VsYXJfbnVsbHMgPSBmYWxzZSBhbmQgbnVsbCB2YWx1ZXMgd2UgdXNlICdpc051bGwn IHNjYW5LZXksCi0gKiAtIGZvciBub25udWxsIHZhbHVlcyB3ZSB1c2UgJ25vbm51bGwnIHNjYW5L ZXkKKyAqIGNoZWNrIGFsbG51bGxzIGlzIGZhbHNlIGZvciBhbGwgbm9ubnVsbCB2YWx1ZXMgbm90 IG1hdHRlciBvaV9yZWd1bGFyX251bGxzIGlzIHRydWUgb3Igbm90LAorICogV2UgdXNlIHdpdGhp blJhbmdlRm4gZm9yIGFsbCBub25udWxsIHZhbHVlcyBhbmQgbnVsbCB2YWx1ZXMgaWYgaW9fcmVn dWxhcl9udWxscyA9IGZhbHNlLgogICovCiBzdGF0aWMgdm9pZAogY2hlY2tfaGVhcF90dXBsZShC cmluQ2hlY2tTdGF0ZSAqIHN0YXRlLCBjb25zdCBEYXR1bSAqdmFsdWVzLCBjb25zdCBib29sICpu dWxscywgSXRlbVBvaW50ZXIgdGlkKQpAQCAtMTE3Nyw3OCArMTAxOCw0NyBAQCBjaGVja19oZWFw X3R1cGxlKEJyaW5DaGVja1N0YXRlICogc3RhdGUsIGNvbnN0IERhdHVtICp2YWx1ZXMsIGNvbnN0 IGJvb2wgKm51bGxzLAogCWZvciAoYXR0aW5kZXggPSAwOyBhdHRpbmRleCA8IHN0YXRlLT5uYXR0 czsgYXR0aW5kZXgrKykKIAl7CiAJCUJyaW5WYWx1ZXMgKmJ2YWw7Ci0JCURhdHVtCQljb25zaXN0 ZW50Rm5SZXN1bHQ7Ci0JCWJvb2wJCWNvbnNpc3RlbnQ7Ci0JCVNjYW5LZXkJCXNjYW5LZXk7CisJ CURhdHVtCQl3aXRoaW5SYW5nZUZuUmVzdWx0OworCQlib29sCQl3aXRoaW5SYW5nZTsKIAkJYm9v bAkJb2lfcmVndWxhcl9udWxscyA9IGJkZXNjLT5iZF9pbmZvW2F0dGluZGV4XS0+b2lfcmVndWxh cl9udWxsczsKIAogCQlidmFsID0gJmR0dXAtPmJ0X2NvbHVtbnNbYXR0aW5kZXhdOwogCi0JCWlm IChudWxsc1thdHRpbmRleF0pCisJCS8qCisJCSAqIFVzZSBoYXNudWxscyBmbGFnIGZvciBvaV9y ZWd1bGFyX251bGxzIGlzIHRydWUuIE90aGVyd2lzZSwgZGVsZWdhdGUKKwkJICogY2hlY2sgdG8g d2l0aGluUmFuZ2VGbgorCQkgKi8KKwkJaWYgKG51bGxzW2F0dGluZGV4XSAmJiBvaV9yZWd1bGFy X251bGxzKQogCQl7Ci0JCQkvKgotCQkJICogVXNlIGhhc251bGxzIGZsYWcgZm9yIG9pX3JlZ3Vs YXJfbnVsbHMgaXMgdHJ1ZS4gT3RoZXJ3aXNlLAotCQkJICogZGVsZWdhdGUgY2hlY2sgdG8gY29u c2lzdGVudEZuCi0JCQkgKi8KLQkJCWlmIChvaV9yZWd1bGFyX251bGxzKQorCQkJLyogV2UgaGF2 ZSBudWxsIHZhbHVlLCBzbyBoYXNudWxscyBvciBhbGxudWxscyBtdXN0IGJlIHRydWUgKi8KKwkJ CWlmICghKGJ2YWwtPmJ2X2hhc251bGxzIHx8IGJ2YWwtPmJ2X2FsbG51bGxzKSkKIAkJCXsKLQkJ CQkvKiBXZSBoYXZlIG51bGwgdmFsdWUsIHNvIGhhc251bGxzIG9yIGFsbG51bGxzIG11c3QgYmUg dHJ1ZSAqLwotCQkJCWlmICghKGJ2YWwtPmJ2X2hhc251bGxzIHx8IGJ2YWwtPmJ2X2FsbG51bGxz KSkKLQkJCQl7Ci0JCQkJCWFsbF9jb25zaXN0X2VyZXBvcnQoc3RhdGUsIHRpZCwgInJhbmdlIGhh c251bGxzIGFuZCBhbGxudWxscyBhcmUgZmFsc2UsIGJ1dCBjb250YWlucyBhIG51bGwgdmFsdWUi KTsKLQkJCQl9Ci0JCQkJY29udGludWU7CisJCQkJYWxsX2NvbnNpc3RfZXJlcG9ydChzdGF0ZSwg dGlkLCAicmFuZ2UgaGFzbnVsbHMgYW5kIGFsbG51bGxzIGFyZSBmYWxzZSwgYnV0IGNvbnRhaW5z IGEgbnVsbCB2YWx1ZSIpOwogCQkJfQotCi0JCQkvKgotCQkJICogSW4gY2FzZSBvZiBudWxsIGFu ZCBvaV9yZWd1bGFyX251bGxzID0gZmFsc2Ugd2UgdXNlIGlzTnVsbAotCQkJICogc2NhbktleSBm b3IgaW52b2NhdGlvbiBvZiBjb25zaXN0ZW50Rm4KLQkJCSAqLwotCQkJc2NhbktleSA9IHN0YXRl LT5pc251bGxfc2tbYXR0aW5kZXhdOworCQkJY29udGludWU7CiAJCX0KLQkJZWxzZQotCQl7Ci0J CQkvKiBXZSBoYXZlIGEgbm9ubnVsbCB2YWx1ZSwgc28gYWxsbnVsbHMgc2hvdWxkIGJlIGZhbHNl ICovCi0JCQlpZiAoYnZhbC0+YnZfYWxsbnVsbHMpCi0JCQl7Ci0JCQkJYWxsX2NvbnNpc3RfZXJl cG9ydChzdGF0ZSwgdGlkLCAicmFuZ2UgYWxsbnVsbHMgaXMgdHJ1ZSwgYnV0IGNvbnRhaW5zIG5v bm51bGwgdmFsdWUiKTsKLQkJCX0KIAotCQkJLyogdXNlICJhdHRyID0gdmFsdWUiIHNjYW4ga2V5 IGZvciBub25udWxsIHZhbHVlcyAqLwotCQkJc2NhbktleSA9IHN0YXRlLT5ub25udWxsX3NrW2F0 dGluZGV4XTsKLQkJCXNjYW5LZXktPnNrX2FyZ3VtZW50ID0gdmFsdWVzW2F0dGluZGV4XTsKKwkJ LyogSWYgd2UgaGF2ZSBhIG5vbm51bGwgdmFsdWUgYWxsbnVsbHMgc2hvdWxkIGJlIGZhbHNlICov CisJCWlmICghbnVsbHNbYXR0aW5kZXhdICYmIGJ2YWwtPmJ2X2FsbG51bGxzKQorCQl7CisJCQlh bGxfY29uc2lzdF9lcmVwb3J0KHN0YXRlLCB0aWQsICJyYW5nZSBhbGxudWxscyBpcyB0cnVlLCBi dXQgY29udGFpbnMgbm9ubnVsbCB2YWx1ZSIpOwogCQl9CiAKIAkJLyogSWYgb2lfcmVndWxhcl9u dWxscyA9IHRydWUgd2Ugc2hvdWxkIG5ldmVyIGdldCB0aGVyZSB3aXRoIG51bGwgKi8KIAkJQXNz ZXJ0KCFvaV9yZWd1bGFyX251bGxzIHx8ICFudWxsc1thdHRpbmRleF0pOwogCi0JCWlmIChzdGF0 ZS0+Y29uc2lzdGVudEZuW2F0dGluZGV4XS5mbl9uYXJncyA+PSA0KQotCQl7Ci0JCQljb25zaXN0 ZW50Rm5SZXN1bHQgPSBGdW5jdGlvbkNhbGw0Q29sbCgmc3RhdGUtPmNvbnNpc3RlbnRGblthdHRp bmRleF0sCi0JCQkJCQkJCQkJCQkgICBzdGF0ZS0+aWR4cmVsLT5yZF9pbmRjb2xsYXRpb25bYXR0 aW5kZXhdLAotCQkJCQkJCQkJCQkJICAgUG9pbnRlckdldERhdHVtKHN0YXRlLT5iZGVzYyksCi0J CQkJCQkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0oYnZhbCksCi0JCQkJCQkJCQkJCQkgICBQb2lu dGVyR2V0RGF0dW0oJnNjYW5LZXkpLAotCQkJCQkJCQkJCQkJICAgSW50MzJHZXREYXR1bSgxKQot CQkJCSk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQljb25zaXN0ZW50Rm5SZXN1bHQgPSBGdW5jdGlv bkNhbGwzQ29sbCgmc3RhdGUtPmNvbnNpc3RlbnRGblthdHRpbmRleF0sCi0JCQkJCQkJCQkJCQkg ICBzdGF0ZS0+aWR4cmVsLT5yZF9pbmRjb2xsYXRpb25bYXR0aW5kZXhdLAotCQkJCQkJCQkJCQkJ ICAgUG9pbnRlckdldERhdHVtKHN0YXRlLT5iZGVzYyksCi0JCQkJCQkJCQkJCQkgICBQb2ludGVy R2V0RGF0dW0oYnZhbCksCi0JCQkJCQkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0oc2NhbktleSkK LQkJCQkpOwotCQl9Ci0KLQkJY29uc2lzdGVudCA9IERhdHVtR2V0Qm9vbChjb25zaXN0ZW50Rm5S ZXN1bHQpOworCQl3aXRoaW5SYW5nZUZuUmVzdWx0ID0gRnVuY3Rpb25DYWxsNENvbGwoJnN0YXRl LT53aXRoaW5SYW5nZUZuW2F0dGluZGV4XSwKKwkJCQkJCQkJCQkJCXN0YXRlLT5pZHhyZWwtPnJk X2luZGNvbGxhdGlvblthdHRpbmRleF0sCisJCQkJCQkJCQkJCQlQb2ludGVyR2V0RGF0dW0oYmRl c2MpLAorCQkJCQkJCQkJCQkJUG9pbnRlckdldERhdHVtKGJ2YWwpLAorCQkJCQkJCQkJCQkJdmFs dWVzW2F0dGluZGV4XSwKKwkJCQkJCQkJCQkJCW51bGxzW2F0dGluZGV4XSk7CiAKLQkJaWYgKCFj b25zaXN0ZW50KQorCQl3aXRoaW5SYW5nZSA9IERhdHVtR2V0Qm9vbCh3aXRoaW5SYW5nZUZuUmVz dWx0KTsKKwkJaWYgKCF3aXRoaW5SYW5nZSkKIAkJewogCQkJYWxsX2NvbnNpc3RfZXJlcG9ydChz dGF0ZSwgdGlkLCAiaGVhcCB0dXBsZSBpbmNvbnNpc3RlbnQgd2l0aCBpbmRleCIpOwogCQl9Ci0K IAl9CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3R4KTsKLS0gCjIuNDMuMAoK --000000000000ed5c510639345447 Content-Type: text/x-patch; charset="US-ASCII"; name="v5-0003-amcheck-brin_index_check-heap-all-indexed.patch" Content-Disposition: attachment; filename="v5-0003-amcheck-brin_index_check-heap-all-indexed.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcqopnhm2 RnJvbSA5ZTRiZmJkMGM0MzBjZTA5OThkMGI3MzFiZjI3NTZhZjkxZjgwNjU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBcnNlbml5IE11a2hpbiA8YXJzZW5peS5tdWtoaW4uZGV2QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAxNiBKdW4gMjAyNSAxODo0MTozNCArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjUgMy81XSBhbWNoZWNrOiBicmluX2luZGV4X2NoZWNrKCkgLSBoZWFwIGFsbCBpbmRl eGVkCgpUaGlzIGNvbW1pdCBleHRlbmRzIGZ1bmN0aW9uYWxpdHkgb2YgYnJpbl9pbmRleF9jaGVj aygpIHdpdGgKaGVhcF9hbGxfY29uc2lzdGVudCBjaGVjazogd2UgdmFsaWRhdGUgZXZlcnkgaW5k ZXggcmFuZ2UgdHVwbGUKYWdhaW5zdCBldmVyeSBoZWFwIHR1cGxlIHdpdGhpbiB0aGUgcmFuZ2Ug dXNpbmcgY29uc2lzdGVudEZuLgpBbHNvLCB3ZSBjaGVjayBoZXJlIHRoYXQgZmllbGRzICdoYXNf bnVsbHMnLCAnYWxsX251bGxzJyBhbmQKJ2VtcHR5X3JhbmdlJyBhcmUgY29uc2lzdGVudCB3aXRo IHRoZSByYW5nZSBoZWFwIGRhdGEuIEl0J3MgdGhlIG1vc3QKZXhwZW5zaXZlIHBhcnQgb2YgdGhl IGJyaW5faW5kZXhfY2hlY2soKSwgc28gaXQncyBvcHRpb25hbC4KLS0tCiBjb250cmliL2FtY2hl Y2svYW1jaGVjay0tMS41LS0xLjYuc3FsICAgfCAgIDYgKy0KIGNvbnRyaWIvYW1jaGVjay9leHBl Y3RlZC9jaGVja19icmluLm91dCB8ICAxOCArLQogY29udHJpYi9hbWNoZWNrL3NxbC9jaGVja19i cmluLnNxbCAgICAgIHwgIDE4ICstCiBjb250cmliL2FtY2hlY2svdC8wMDdfdmVyaWZ5X2JyaW4u cGwgICAgfCAgNTEgKystCiBjb250cmliL2FtY2hlY2svdmVyaWZ5X2JyaW4uYyAgICAgICAgICAg fCA1MDEgKysrKysrKysrKysrKysrKysrKysrKystCiA1IGZpbGVzIGNoYW5nZWQsIDU2MyBpbnNl cnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2sv YW1jaGVjay0tMS41LS0xLjYuc3FsIGIvY29udHJpYi9hbWNoZWNrL2FtY2hlY2stLTEuNS0tMS42 LnNxbAppbmRleCA5ZWMwNDZiYjFjZi4uNjMzN2UwNjViYjEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv YW1jaGVjay9hbWNoZWNrLS0xLjUtLTEuNi5zcWwKKysrIGIvY29udHJpYi9hbWNoZWNrL2FtY2hl Y2stLTEuNS0tMS42LnNxbApAQCAtOCwxMSArOCwxMyBAQAogLS0gYnJpbl9pbmRleF9jaGVjaygp CiAtLQogQ1JFQVRFIEZVTkNUSU9OIGJyaW5faW5kZXhfY2hlY2soaW5kZXggcmVnY2xhc3MsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWd1bGFyX3BhZ2VzX2NoZWNrIGJvb2xl YW4gZGVmYXVsdCBmYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVndWxh cnBhZ2VzY2hlY2sgYm9vbGVhbiBkZWZhdWx0IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaGVhcGFsbGluZGV4ZWQgYm9vbGVhbiBkZWZhdWx0IGZhbHNlLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc2lzdGVudF9vcGVyYXRvcl9uYW1lcyB0ZXh0 W10gZGVmYXVsdCAne30nCiApCiAgICAgUkVUVVJOUyBWT0lECiBBUyAnTU9EVUxFX1BBVEhOQU1F JywgJ2JyaW5faW5kZXhfY2hlY2snCiBMQU5HVUFHRSBDIFNUUklDVCBQQVJBTExFTCBSRVNUUklD VEVEOwogCiAtLSBXZSBkb24ndCB3YW50IHRoaXMgdG8gYmUgYXZhaWxhYmxlIHRvIHB1YmxpYwot UkVWT0tFIEFMTCBPTiBGVU5DVElPTiBicmluX2luZGV4X2NoZWNrKHJlZ2NsYXNzLCBib29sZWFu KSBGUk9NIFBVQkxJQzsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitSRVZPS0UgQUxMIE9O IEZVTkNUSU9OIGJyaW5faW5kZXhfY2hlY2socmVnY2xhc3MsIGJvb2xlYW4sIGJvb2xlYW4sIHRl eHRbXSkgRlJPTSBQVUJMSUM7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvY29udHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2JyaW4ub3V0IGIvY29udHJpYi9hbWNo ZWNrL2V4cGVjdGVkL2NoZWNrX2JyaW4ub3V0CmluZGV4IGJlYmNhOTNkMzJmLi4wYWE5MGRhZmEy MCAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2JyaW4ub3V0Cisr KyBiL2NvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19icmluLm91dApAQCAtNSw3ICs1LDcg QEAgJCQgTEFOR1VBR0Ugc3FsOwogLS0gZW1wdHkgdGFibGUgaW5kZXggc2hvdWxkIGJlIHZhbGlk CiBDUkVBVEUgVEFCTEUgYnJpbnRlc3QgKGEgQklHSU5UKSBXSVRIIChGSUxMRkFDVE9SID0gMTAp OwogQ1JFQVRFIElOREVYIGJyaW50ZXN0X2lkeCBPTiBicmludGVzdCBVU0lORyBCUklOIChhKTsK LVNFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSk7 CitTRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUs IHRydWUpOwogIGJyaW5faW5kZXhfY2hlY2sgCiAtLS0tLS0tLS0tLS0tLS0tLS0KICAKQEAgLTQy LDcgKzQyLDcgQEAgQ1JFQVRFIElOREVYIGJyaW50ZXN0X2lkeCBPTiBicmludGVzdCBVU0lORyBC UklOIChhIGludDhfbWlubWF4X29wcykgV0lUSCAoUEFHRVMKIElOU0VSVCBJTlRPIGJyaW50ZXN0 IChhKSBTRUxFQ1QgeCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMDAwMCkgeDsKIC0tIGNyZWF0 ZSBzb21lIGVtcHR5IHJhbmdlcwogREVMRVRFIEZST00gYnJpbnRlc3QgV0hFUkUgYSA+IDIwMDAw IEFORCBhIDwgNDAwMDA7Ci1TRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6 UkVHQ0xBU1MsIHRydWUpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6 OlJFR0NMQVNTLCB0cnVlLCB0cnVlKTsKICBicmluX2luZGV4X2NoZWNrIAogLS0tLS0tLS0tLS0t LS0tLS0tCiAgCkBAIC01MSw3ICs1MSw3IEBAIFNFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmlu dGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSk7CiAtLSByZWJ1aWxkIGluZGV4CiBEUk9QIElOREVY IGJyaW50ZXN0X2lkeDsKIENSRUFURSBJTkRFWCBicmludGVzdF9pZHggT04gYnJpbnRlc3QgVVNJ TkcgQlJJTiAoYSBpbnQ4X21pbm1heF9vcHMpIFdJVEggKFBBR0VTX1BFUl9SQU5HRSA9IDIpOwot U0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlKTsK K1NFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSwg dHJ1ZSk7CiAgYnJpbl9pbmRleF9jaGVjayAKIC0tLS0tLS0tLS0tLS0tLS0tLQogIApAQCAtNjUs NyArNjUsNyBAQCBDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5HIEJS SU4gKGEgaW50OF9taW5tYXhfbXVsdGlfb3BzKSBXSVRICiBJTlNFUlQgSU5UTyBicmludGVzdCAo YSkgU0VMRUNUIHggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwMDApIHg7CiAtLSBjcmVhdGUg c29tZSBlbXB0eSByYW5nZXMKIERFTEVURSBGUk9NIGJyaW50ZXN0IFdIRVJFIGEgPiAyMDAwMCBB TkQgYSA8IDQwMDAwOwotU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJF R0NMQVNTLCB0cnVlKTsKK1NFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpS RUdDTEFTUywgdHJ1ZSwgdHJ1ZSk7CiAgYnJpbl9pbmRleF9jaGVjayAKIC0tLS0tLS0tLS0tLS0t LS0tLQogIApAQCAtNzQsNyArNzQsNyBAQCBTRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRl c3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUpOwogLS0gcmVidWlsZCBpbmRleAogRFJPUCBJTkRFWCBi cmludGVzdF9pZHg7CiBDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5H IEJSSU4gKGEgaW50OF9taW5tYXhfbXVsdGlfb3BzKSBXSVRIIChQQUdFU19QRVJfUkFOR0UgPSAy KTsKLVNFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1 ZSk7CitTRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRy dWUsIHRydWUpOwogIGJyaW5faW5kZXhfY2hlY2sgCiAtLS0tLS0tLS0tLS0tLS0tLS0KICAKQEAg LTg4LDcgKzg4LDcgQEAgQ1JFQVRFIElOREVYIGJyaW50ZXN0X2lkeCBPTiBicmludGVzdCBVU0lO RyBCUklOIChhIGludDhfYmxvb21fb3BzKSBXSVRIIChQQUdFU18KIElOU0VSVCBJTlRPIGJyaW50 ZXN0IChhKSBTRUxFQ1QgeCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMDAwMCkgeDsKIC0tIGNy ZWF0ZSBzb21lIGVtcHR5IHJhbmdlcwogREVMRVRFIEZST00gYnJpbnRlc3QgV0hFUkUgYSA+IDIw MDAwIEFORCBhIDwgNDAwMDA7Ci1TRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4 Jzo6UkVHQ0xBU1MsIHRydWUpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lk eCc6OlJFR0NMQVNTLCB0cnVlLCB0cnVlKTsKICBicmluX2luZGV4X2NoZWNrIAogLS0tLS0tLS0t LS0tLS0tLS0tCiAgCkBAIC05Nyw3ICs5Nyw3IEBAIFNFTEVDVCBicmluX2luZGV4X2NoZWNrKCdi cmludGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSk7CiAtLSByZWJ1aWxkIGluZGV4CiBEUk9QIElO REVYIGJyaW50ZXN0X2lkeDsKIENSRUFURSBJTkRFWCBicmludGVzdF9pZHggT04gYnJpbnRlc3Qg VVNJTkcgQlJJTiAoYSBpbnQ4X2Jsb29tX29wcykgV0lUSCAoUEFHRVNfUEVSX1JBTkdFID0gMik7 Ci1TRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUp OworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVl LCB0cnVlKTsKICBicmluX2luZGV4X2NoZWNrIAogLS0tLS0tLS0tLS0tLS0tLS0tCiAgCkBAIC0x MTMsNyArMTEzLDcgQEAgU0VMRUNUIEJPWChwb2ludChyYW5kb20oKSAqIDEwMDAsIHJhbmRvbSgp ICogMTAwMCksIHBvaW50KHJhbmRvbSgpICogMTAwMCwgcmFuZG8KIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDEwMDAwKTsKIC0tIGNyZWF0ZSBzb21lIGVtcHR5IHJhbmdlcwogREVMRVRFIEZST00g YnJpbnRlc3QgV0hFUkUgaWQgPiAyMDAwIEFORCBpZCA8IDQwMDA7Ci1TRUxFQ1QgYnJpbl9pbmRl eF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUpOworU0VMRUNUIGJyaW5faW5k ZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlLCB0cnVlLCAneyJAPiJ9Jyk7 CiAgYnJpbl9pbmRleF9jaGVjayAKIC0tLS0tLS0tLS0tLS0tLS0tLQogIApAQCAtMTIyLDcgKzEy Miw3IEBAIFNFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywg dHJ1ZSk7CiAtLSByZWJ1aWxkIGluZGV4CiBEUk9QIElOREVYIGJyaW50ZXN0X2lkeDsKIENSRUFU RSBJTkRFWCBicmludGVzdF9pZHggT04gYnJpbnRlc3QgVVNJTkcgQlJJTiAoYSBCT1hfSU5DTFVT SU9OX09QUykgV0lUSCAoUEFHRVNfUEVSX1JBTkdFID0gMik7Ci1TRUxFQ1QgYnJpbl9pbmRleF9j aGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUpOworU0VMRUNUIGJyaW5faW5kZXhf Y2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlLCB0cnVlLCAneyJAPiJ9Jyk7CiAg YnJpbl9pbmRleF9jaGVjayAKIC0tLS0tLS0tLS0tLS0tLS0tLQogIApkaWZmIC0tZ2l0IGEvY29u dHJpYi9hbWNoZWNrL3NxbC9jaGVja19icmluLnNxbCBiL2NvbnRyaWIvYW1jaGVjay9zcWwvY2hl Y2tfYnJpbi5zcWwKaW5kZXggMGE1ZTI2ZWE4ZjUuLjBmNTg1NjdmNzZmIDEwMDY0NAotLS0gYS9j b250cmliL2FtY2hlY2svc3FsL2NoZWNrX2JyaW4uc3FsCisrKyBiL2NvbnRyaWIvYW1jaGVjay9z cWwvY2hlY2tfYnJpbi5zcWwKQEAgLTcsNyArNyw3IEBAICQkIExBTkdVQUdFIHNxbDsKIC0tIGVt cHR5IHRhYmxlIGluZGV4IHNob3VsZCBiZSB2YWxpZAogQ1JFQVRFIFRBQkxFIGJyaW50ZXN0IChh IEJJR0lOVCkgV0lUSCAoRklMTEZBQ1RPUiA9IDEwKTsKIENSRUFURSBJTkRFWCBicmludGVzdF9p ZHggT04gYnJpbnRlc3QgVVNJTkcgQlJJTiAoYSk7Ci1TRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygn YnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2so J2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlLCB0cnVlKTsKIC0tIGNsZWFudXAKIERST1Ag VEFCTEUgYnJpbnRlc3Q7CiAKQEAgLTM1LDEyICszNSwxMiBAQCBDUkVBVEUgSU5ERVggYnJpbnRl c3RfaWR4IE9OIGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEgaW50OF9taW5tYXhfb3BzKSBXSVRIIChQ QUdFUwogSU5TRVJUIElOVE8gYnJpbnRlc3QgKGEpIFNFTEVDVCB4IEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsMTAwMDAwKSB4OwogLS0gY3JlYXRlIHNvbWUgZW1wdHkgcmFuZ2VzCiBERUxFVEUgRlJP TSBicmludGVzdCBXSEVSRSBhID4gMjAwMDAgQU5EIGEgPCA0MDAwMDsKLVNFTEVDVCBicmluX2lu ZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSk7CitTRUxFQ1QgYnJpbl9p bmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUsIHRydWUpOwogCiAtLSBy ZWJ1aWxkIGluZGV4CiBEUk9QIElOREVYIGJyaW50ZXN0X2lkeDsKIENSRUFURSBJTkRFWCBicmlu dGVzdF9pZHggT04gYnJpbnRlc3QgVVNJTkcgQlJJTiAoYSBpbnQ4X21pbm1heF9vcHMpIFdJVEgg KFBBR0VTX1BFUl9SQU5HRSA9IDIpOwotU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0 X2lkeCc6OlJFR0NMQVNTLCB0cnVlKTsKK1NFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVz dF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSwgdHJ1ZSk7CiAtLSBjbGVhbnVwCiBEUk9QIFRBQkxFIGJy aW50ZXN0OwogCkBAIC01MiwxMiArNTIsMTIgQEAgQ1JFQVRFIElOREVYIGJyaW50ZXN0X2lkeCBP TiBicmludGVzdCBVU0lORyBCUklOIChhIGludDhfbWlubWF4X211bHRpX29wcykgV0lUSAogSU5T RVJUIElOVE8gYnJpbnRlc3QgKGEpIFNFTEVDVCB4IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAw MDAwKSB4OwogLS0gY3JlYXRlIHNvbWUgZW1wdHkgcmFuZ2VzCiBERUxFVEUgRlJPTSBicmludGVz dCBXSEVSRSBhID4gMjAwMDAgQU5EIGEgPCA0MDAwMDsKLVNFTEVDVCBicmluX2luZGV4X2NoZWNr KCdicmludGVzdF9pZHgnOjpSRUdDTEFTUywgdHJ1ZSk7CitTRUxFQ1QgYnJpbl9pbmRleF9jaGVj aygnYnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUsIHRydWUpOwogCiAtLSByZWJ1aWxkIGlu ZGV4CiBEUk9QIElOREVYIGJyaW50ZXN0X2lkeDsKIENSRUFURSBJTkRFWCBicmludGVzdF9pZHgg T04gYnJpbnRlc3QgVVNJTkcgQlJJTiAoYSBpbnQ4X21pbm1heF9tdWx0aV9vcHMpIFdJVEggKFBB R0VTX1BFUl9SQU5HRSA9IDIpOwotU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lk eCc6OlJFR0NMQVNTLCB0cnVlKTsKK1NFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9p ZHgnOjpSRUdDTEFTUywgdHJ1ZSwgdHJ1ZSk7CiAtLSBjbGVhbnVwCiBEUk9QIFRBQkxFIGJyaW50 ZXN0OwogCkBAIC02OSwxMiArNjksMTIgQEAgQ1JFQVRFIElOREVYIGJyaW50ZXN0X2lkeCBPTiBi cmludGVzdCBVU0lORyBCUklOIChhIGludDhfYmxvb21fb3BzKSBXSVRIIChQQUdFU18KIElOU0VS VCBJTlRPIGJyaW50ZXN0IChhKSBTRUxFQ1QgeCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMDAw MCkgeDsKIC0tIGNyZWF0ZSBzb21lIGVtcHR5IHJhbmdlcwogREVMRVRFIEZST00gYnJpbnRlc3Qg V0hFUkUgYSA+IDIwMDAwIEFORCBhIDwgNDAwMDA7Ci1TRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygn YnJpbnRlc3RfaWR4Jzo6UkVHQ0xBU1MsIHRydWUpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2so J2JyaW50ZXN0X2lkeCc6OlJFR0NMQVNTLCB0cnVlLCB0cnVlKTsKIAogLS0gcmVidWlsZCBpbmRl eAogRFJPUCBJTkRFWCBicmludGVzdF9pZHg7CiBDUkVBVEUgSU5ERVggYnJpbnRlc3RfaWR4IE9O IGJyaW50ZXN0IFVTSU5HIEJSSU4gKGEgaW50OF9ibG9vbV9vcHMpIFdJVEggKFBBR0VTX1BFUl9S QU5HRSA9IDIpOwotU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJFR0NM QVNTLCB0cnVlKTsKK1NFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9pZHgnOjpSRUdD TEFTUywgdHJ1ZSwgdHJ1ZSk7CiAtLSBjbGVhbnVwCiBEUk9QIFRBQkxFIGJyaW50ZXN0OwogCkBA IC04OCwxMiArODgsMTIgQEAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMDApOwogLS0gY3Jl YXRlIHNvbWUgZW1wdHkgcmFuZ2VzCiBERUxFVEUgRlJPTSBicmludGVzdCBXSEVSRSBpZCA+IDIw MDAgQU5EIGlkIDwgNDAwMDsKIAotU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lk eCc6OlJFR0NMQVNTLCB0cnVlKTsKK1NFTEVDVCBicmluX2luZGV4X2NoZWNrKCdicmludGVzdF9p ZHgnOjpSRUdDTEFTUywgdHJ1ZSwgdHJ1ZSwgJ3siQD4ifScpOwogCiAtLSByZWJ1aWxkIGluZGV4 CiBEUk9QIElOREVYIGJyaW50ZXN0X2lkeDsKIENSRUFURSBJTkRFWCBicmludGVzdF9pZHggT04g YnJpbnRlc3QgVVNJTkcgQlJJTiAoYSBCT1hfSU5DTFVTSU9OX09QUykgV0lUSCAoUEFHRVNfUEVS X1JBTkdFID0gMik7Ci1TRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnYnJpbnRlc3RfaWR4Jzo6UkVH Q0xBU1MsIHRydWUpOworU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJ2JyaW50ZXN0X2lkeCc6OlJF R0NMQVNTLCB0cnVlLCB0cnVlLCAneyJAPiJ9Jyk7CiAtLSBjbGVhbnVwCiBEUk9QIFRBQkxFIGJy aW50ZXN0OwogCmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svdC8wMDdfdmVyaWZ5X2JyaW4u cGwgYi9jb250cmliL2FtY2hlY2svdC8wMDdfdmVyaWZ5X2JyaW4ucGwKaW5kZXggMmM2MmI3NmNj NzAuLjUxYmZlZDdlMjczIDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svdC8wMDdfdmVyaWZ5 X2JyaW4ucGwKKysrIGIvY29udHJpYi9hbWNoZWNrL3QvMDA3X3ZlcmlmeV9icmluLnBsCkBAIC0y MDAsNiArMjAwLDU1IEBAIG15IEB0ZXN0cyA9ICgKICAgICAgICAgICAgIHJldHVybiBxcShJTlNF UlQgSU5UTyAkdGVzdF9zdHJ1Y3QtPnt0YWJsZV9uYW1lfSAoYSkgVkFMVUVTICgnYWFhYWEnKTsp OwogICAgICAgICB9LAogICAgICAgICBleHBlY3RlZCAgID0+IHdyYXAoInJldm1hcCBkb2Vzbid0 IHBvaW50IHRvIGluZGV4IHR1cGxlLiBSYW5nZSBibGtubzogMCwgcmV2bWFwIGl0ZW06ICgxLDAp LCBpbmRleCB0dXBsZTogKDIsMSkiKQorICAgIH0sCisgICAgeworICAgICAgICAjIHJhbmdlIGlz IG1hcmtlZCBhcyBlbXB0eV9yYW5nZSwgYnV0IGhlYXAgaGFzIHNvbWUgZGF0YSBmb3IgdGhlIHJh bmdlCisKKyAgICAgICAgZmluZCAgICAgPT4gcGFjaygnTENDJywgMCwgMHg4OCwgMHgwMyksCisg ICAgICAgIHJlcGxhY2UgID0+IHBhY2soJ0xDQycsIDAsIDB4QTgsIDB4MDEpLAorICAgICAgICBi bGtubyAgICAgID0+IDIsICMgcmVndWxhciBwYWdlCisgICAgICAgIHRhYmxlX2RhdGEgPT4gc3Vi IHsKKyAgICAgICAgICAgIG15ICgkdGVzdF9zdHJ1Y3QpID0gQF87CisgICAgICAgICAgICByZXR1 cm4gcXEoSU5TRVJUIElOVE8gJHRlc3Rfc3RydWN0LT57dGFibGVfbmFtZX0gKGEpIFZBTFVFUyAo bnVsbCk7KTsKKyAgICAgICAgfSwKKyAgICAgICAgZXhwZWN0ZWQgICA9PiB3cmFwKCdyYW5nZSBp cyBtYXJrZWQgYXMgZW1wdHkgYnV0IGNvbnRhaW5zIHF1YWxpZmllZCBsaXZlIHR1cGxlcy4gUmFu Z2UgYmxrbm86IDAsIGhlYXAgdGlkICgwLDEpJykKKyAgICB9LAorICAgIHsKKyAgICAgICAgIyBy YW5nZSBoYXNudWxscyAmIGFsbG51bGxzIGFyZSBmYWxzZSwgYnV0IGhlYXAgY29udGFpbnMgbnVs bCB2YWx1ZXMgZm9yIHRoZSByYW5nZQorCisgICAgICAgIGZpbmQgICAgID0+IHBhY2soJ0xDQycs IDAsIDB4ODgsIDB4MDIpLAorICAgICAgICByZXBsYWNlICA9PiBwYWNrKCdMQ0MnLCAwLCAweDg4 LCAweDAwKSwKKyAgICAgICAgYmxrbm8gICAgICA9PiAyLCAjIHJlZ3VsYXIgcGFnZQorICAgICAg ICB0YWJsZV9kYXRhID0+IHN1YiB7CisgICAgICAgICAgICBteSAoJHRlc3Rfc3RydWN0KSA9IEBf OworICAgICAgICAgICAgcmV0dXJuIHFxKElOU0VSVCBJTlRPICR0ZXN0X3N0cnVjdC0+e3RhYmxl X25hbWV9IChhKSBWQUxVRVMgKG51bGwpLCAoJ2FhYWFhJyk7KTsKKyAgICAgICAgfSwKKyAgICAg ICAgZXhwZWN0ZWQgICA9PiB3cmFwKCdyYW5nZSBoYXNudWxscyBhbmQgYWxsbnVsbHMgYXJlIGZh bHNlLCBidXQgY29udGFpbnMgYSBudWxsIHZhbHVlLiBSYW5nZSBibGtubzogMCwgaGVhcCB0aWQg KDAsMSknKQorICAgIH0sCisgICAgeworICAgICAgICAjIHJhbmdlIGFsbG51bGxzIGlzIHRydWUs IGJ1dCBoZWFwIGNvbnRhaW5zIG5vbi1udWxsIHZhbHVlcyBmb3IgdGhlIHJhbmdlCisKKyAgICAg ICAgZmluZCAgICAgPT4gcGFjaygnTENDJywgMCwgMHg4OCwgMHgwMiksCisgICAgICAgIHJlcGxh Y2UgID0+IHBhY2soJ0xDQycsIDAsIDB4ODgsIDB4MDEpLAorICAgICAgICBibGtubyAgICAgID0+ IDIsICMgcmVndWxhciBwYWdlCisgICAgICAgIHRhYmxlX2RhdGEgPT4gc3ViIHsKKyAgICAgICAg ICAgIG15ICgkdGVzdF9zdHJ1Y3QpID0gQF87CisgICAgICAgICAgICByZXR1cm4gcXEoSU5TRVJU IElOVE8gJHRlc3Rfc3RydWN0LT57dGFibGVfbmFtZX0gKGEpIFZBTFVFUyAobnVsbCksICgnYWFh YWEnKTspOworICAgICAgICB9LAorICAgICAgICBleHBlY3RlZCAgID0+IHdyYXAoJ3JhbmdlIGFs bG51bGxzIGlzIHRydWUsIGJ1dCBjb250YWlucyBub25udWxsIHZhbHVlLiBSYW5nZSBibGtubzog MCwgaGVhcCB0aWQgKDAsMiknKQorICAgIH0sCisgICAgeworICAgICAgICAjIGNvbnNpc3RlbnQg ZnVuY3Rpb24gcmV0dXJuIEZBTFNFIGZvciB0aGUgdmFsaWQgaGVhcCB2YWx1ZQorICAgICAgICAj IHJlcGxhY2UgImNjY2NjIiB3aXRoICJiYmJiYiIgc28gdGhhdCBtaW5fbWF4IGluZGV4IHdhcyB0 b28gbmFycm93CisKKyAgICAgICAgZmluZCAgICAgICA9PiAnY2NjY2MnLAorICAgICAgICByZXBs YWNlICAgID0+ICdiYmJiYicsCisgICAgICAgIGJsa25vICAgICAgPT4gMiwgIyByZWd1bGFyIHBh Z2UKKyAgICAgICAgdGFibGVfZGF0YSA9PiBzdWIgeworICAgICAgICAgICAgbXkgKCR0ZXN0X3N0 cnVjdCkgPSBAXzsKKyAgICAgICAgICAgIHJldHVybiBxcShJTlNFUlQgSU5UTyAkdGVzdF9zdHJ1 Y3QtPnt0YWJsZV9uYW1lfSAoYSkgVkFMVUVTICgnYWFhYWEnKSwgKCdjY2NjYycpOyk7CisgICAg ICAgIH0sCisgICAgICAgIGV4cGVjdGVkICAgPT4gd3JhcCgnaGVhcCB0dXBsZSBpbmNvbnNpc3Rl bnQgd2l0aCBpbmRleC4gUmFuZ2UgYmxrbm86IDAsIGhlYXAgdGlkICgwLDIpJykKICAgICB9CiAp OwogCkBAIC0yNDEsNyArMjkwLDcgQEAgZm9yZWFjaCBteSAkdGVzdF9zdHJ1Y3QgKEB0ZXN0cykg ewogJG5vZGUtPnN0YXJ0OwogCiBmb3JlYWNoIG15ICR0ZXN0X3N0cnVjdCAoQHRlc3RzKSB7Ci0g ICAgbXkgKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGUtPnBzcWwoJ3Bvc3RncmVz JywgcXEoU0VMRUNUIGJyaW5faW5kZXhfY2hlY2soJyR0ZXN0X3N0cnVjdC0+e2luZGV4X25hbWV9 JywgdHJ1ZSkpKTsKKyAgICBteSAoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkbm9kZS0+ cHNxbCgncG9zdGdyZXMnLCBxcShTRUxFQ1QgYnJpbl9pbmRleF9jaGVjaygnJHRlc3Rfc3RydWN0 LT57aW5kZXhfbmFtZX0nLCB0cnVlLCB0cnVlKSkpOwogICAgIGxpa2UoJHN0ZGVyciwgJHRlc3Rf c3RydWN0LT57ZXhwZWN0ZWR9KTsKIH0KIApkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3Zl cmlmeV9icmluLmMgYi9jb250cmliL2FtY2hlY2svdmVyaWZ5X2JyaW4uYwppbmRleCAwNGU2NTMx NDc5Ni4uMDFhNjliNjE2Y2MgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfYnJp bi5jCisrKyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfYnJpbi5jCkBAIC0zOCw3ICszOCw5IEBA IHR5cGVkZWYgc3RydWN0IEJyaW5DaGVja1N0YXRlCiAKIAkvKiBDaGVjayBhcmd1bWVudHMgKi8K IAotCWJvb2wJCXJlZ3VsYXJfcGFnZXNfY2hlY2s7CisJYm9vbAkJcmVndWxhcnBhZ2VzY2hlY2s7 CisJYm9vbAkJaGVhcGFsbGluZGV4ZWQ7CisJQXJyYXlUeXBlICAqY29uc2lzdGVudF9vcGVyX25h bWVzOwogCiAJLyogQlJJTiBjaGVjayBjb21tb24gZmllbGRzICovCiAKQEAgLTY3LDYgKzY5LDMw IEBAIHR5cGVkZWYgc3RydWN0IEJyaW5DaGVja1N0YXRlCiAJUGFnZQkJcmVncGFnZTsKIAlPZmZz ZXROdW1iZXIgcmVncGFnZW9mZnNldDsKIAorCS8qIEhlYXAgYWxsIGluZGV4ZWQgY2hlY2sgZmll bGRzICovCisKKwlTdHJpbmcJICAqKm9wZXJhdG9yTmFtZXM7CisJQnJpblJldm1hcCAqcmV2bWFw OworCUJ1ZmZlcgkJYnVmOworCUZtZ3JJbmZvICAgKmNvbnNpc3RlbnRGbjsKKwkvKiBTY2FuIGtl eXMgZm9yIHJlZ3VsYXIgdmFsdWVzICovCisJU2NhbktleSAgICAqbm9ubnVsbF9zazsKKwkvKiBT Y2FuIGtleXMgZm9yIG51bGwgdmFsdWVzICovCisJU2NhbktleSAgICAqaXNudWxsX3NrOworCWRv dWJsZQkJcmFuZ2VfY250OworCS8qIGZpcnN0IGJsb2NrIG9mIHRoZSBuZXh0IHJhbmdlICovCisJ QmxvY2tOdW1iZXIgbmV4dHJhbmdlQmxrOworCisJLyoKKwkgKiBjaGVja2FibGVfcmFuZ2Ugc2hv d3MgaWYgY3VycmVudCByYW5nZSBjb3VsZCBiZSBjaGVja2VkIGFuZCBkdHVwCisJICogY29udGFp bnMgdmFsaWQgaW5kZXggdHVwbGUgZm9yIHRoZSByYW5nZS4gSXQgY291bGQgYmUgZmFsc2UgaWYg dGhlCisJICogY3VycmVudCByYW5nZSBpcyBub3Qgc3VtbWFyaXplZCwgb3IgaXQncyBwbGFjZWhv bGRlciwgb3IgaXQncyBqdXN0IGEKKwkgKiBiZWdpbm5pbmcgb2YgdGhlIGNoZWNrCisJICovCisJ Ym9vbAkJY2hlY2thYmxlX3JhbmdlOworCUJyaW5NZW1UdXBsZSAqZHR1cDsKKwlNZW1vcnlDb250 ZXh0IHJhbmdlQ3R4OworCU1lbW9yeUNvbnRleHQgaGVhcHR1cGxlQ3R4OwogfQkJCUJyaW5DaGVj a1N0YXRlOwogCiBzdGF0aWMgdm9pZCBicmluX2NoZWNrKFJlbGF0aW9uIGlkeHJlbCwgUmVsYXRp b24gaGVhcHJlbCwgdm9pZCAqY2FsbGJhY2tfc3RhdGUsIGJvb2wgcmVhZG9ubHkpOwpAQCAtODcs NiArMTEzLDIzIEBAIHN0YXRpYyBib29sIHJldm1hcF9wb2ludHNfdG9faW5kZXhfdHVwbGUoQnJp bkNoZWNrU3RhdGUgKiBzdGF0ZSk7CiAKIHN0YXRpYyBJdGVtSWQgUGFnZUdldEl0ZW1JZENhcmVm dWwoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSk7CiAKK3N0YXRpYyB2b2lkIGNoZWNrX2hlYXBfYWxs X2luZGV4ZWQoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSk7CisKK3N0YXRpYyB2b2lkIGNoZWNrX2Fu ZF9wcmVwYXJlX29wZXJhdG9yX25hbWVzKEJyaW5DaGVja1N0YXRlICogc3RhdGUpOworCitzdGF0 aWMgdm9pZCBicmluX2NoZWNrX2NhbGxiYWNrKFJlbGF0aW9uIGluZGV4LAorCQkJCQkJCQlJdGVt UG9pbnRlciB0aWQsCisJCQkJCQkJCURhdHVtICp2YWx1ZXMsCisJCQkJCQkJCWJvb2wgKmlzbnVs bCwKKwkJCQkJCQkJYm9vbCB0dXBsZUlzQWxpdmUsCisJCQkJCQkJCXZvaWQgKmJyc3RhdGUpOwor CitzdGF0aWMgdm9pZCBjaGVja19oZWFwX3R1cGxlKEJyaW5DaGVja1N0YXRlICogc3RhdGUsIGNv bnN0IERhdHVtICp2YWx1ZXMsIGNvbnN0IGJvb2wgKm51bGxzLCBJdGVtUG9pbnRlciB0aWQpOwor CitzdGF0aWMgU2NhbktleSBwcmVwYXJlX25vbm51bGxfc2Nhbl9rZXkoY29uc3QgQnJpbkNoZWNr U3RhdGUgKiBzdGF0ZSwgQXR0ck51bWJlciBhdHRubyk7CisKK3N0YXRpYyBTY2FuS2V5IHByZXBh cmVfaXNudWxsX3NjYW5fa2V5KEF0dHJOdW1iZXIgYXR0bm8pOworCiBzdGF0aWMgdm9pZCBicmlu X2NoZWNrX2VyZXBvcnQoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSwgY29uc3QgY2hhciAqZm10KTsK IAogc3RhdGljIHZvaWQgcmV2bWFwX2l0ZW1fZXJlcG9ydChCcmluQ2hlY2tTdGF0ZSAqIHN0YXRl LCBjb25zdCBjaGFyICpmbXQpOwpAQCAtOTUsNiArMTM4LDcgQEAgc3RhdGljIHZvaWQgaW5kZXhf dHVwbGVfZXJlcG9ydChCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlLCBjb25zdCBjaGFyICpmbXQpOwog CiBzdGF0aWMgdm9pZCBpbmRleF90dXBsZV9vbmx5X2VyZXBvcnQoQnJpbkNoZWNrU3RhdGUgKiBz dGF0ZSwgY29uc3QgY2hhciAqZm10KTsKIAorc3RhdGljIHZvaWQgYWxsX2NvbnNpc3RfZXJlcG9y dChjb25zdCBCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnRp ZCwgY29uc3QgY2hhciAqbWVzc2FnZSk7CiAKIERhdHVtCiBicmluX2luZGV4X2NoZWNrKFBHX0ZV TkNUSU9OX0FSR1MpCkBAIC0xMDIsNyArMTQ2LDkgQEAgYnJpbl9pbmRleF9jaGVjayhQR19GVU5D VElPTl9BUkdTKQogCU9pZAkJCWluZHJlbGlkID0gUEdfR0VUQVJHX09JRCgwKTsKIAlCcmluQ2hl Y2tTdGF0ZSAqc3RhdGUgPSBwYWxsb2MwKHNpemVvZihCcmluQ2hlY2tTdGF0ZSkpOwogCi0Jc3Rh dGUtPnJlZ3VsYXJfcGFnZXNfY2hlY2sgPSBQR19HRVRBUkdfQk9PTCgxKTsKKwlzdGF0ZS0+cmVn dWxhcnBhZ2VzY2hlY2sgPSBQR19HRVRBUkdfQk9PTCgxKTsKKwlzdGF0ZS0+aGVhcGFsbGluZGV4 ZWQgPSBQR19HRVRBUkdfQk9PTCgyKTsKKwlzdGF0ZS0+Y29uc2lzdGVudF9vcGVyX25hbWVzID0g UEdfR0VUQVJHX0FSUkFZVFlQRV9QKDMpOwogCiAJYW1jaGVja19sb2NrX3JlbGF0aW9uX2FuZF9j aGVjayhpbmRyZWxpZCwKIAkJCQkJCQkJCUJSSU5fQU1fT0lELApAQCAtMTI3LDkgKzE3MywyMSBA QCBicmluX2NoZWNrKFJlbGF0aW9uIGlkeHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgdm9pZCAqY2Fs bGJhY2tfc3RhdGUsIGJvb2wgcmVhZG9ubAogCXN0YXRlLT5iZGVzYyA9IGJyaW5fYnVpbGRfZGVz YyhpZHhyZWwpOwogCXN0YXRlLT5uYXR0cyA9IHN0YXRlLT5iZGVzYy0+YmRfdHVwZGVzYy0+bmF0 dHM7CiAKKwkvKgorCSAqIFdlIGtub3cgaG93IG1hbnkgYXR0cmlidXRlcyBpbmRleCBoYXMsIHNv IGxldCdzIHByb2Nlc3Mgb3BlcmF0b3IgbmFtZXMKKwkgKiBhcnJheQorCSAqLworCWlmIChzdGF0 ZS0+aGVhcGFsbGluZGV4ZWQpCisJeworCQljaGVja19hbmRfcHJlcGFyZV9vcGVyYXRvcl9uYW1l cyhzdGF0ZSk7CisJfQogCiAJY2hlY2tfYnJpbl9pbmRleF9zdHJ1Y3R1cmUoc3RhdGUpOwogCisJ aWYgKHN0YXRlLT5oZWFwYWxsaW5kZXhlZCkKKwl7CisJCWNoZWNrX2hlYXBfYWxsX2luZGV4ZWQo c3RhdGUpOworCX0KIAogCWJyaW5fZnJlZV9kZXNjKHN0YXRlLT5iZGVzYyk7CiB9CkBAIC0xNjAs OCArMjE4LDEzIEBAIGNoZWNrX2JyaW5faW5kZXhfc3RydWN0dXJlKEJyaW5DaGVja1N0YXRlICog c3RhdGUpCiAJLyogQ2hlY2sgcmV2bWFwIGZpcnN0LCBibG9ja3M6IFsxLCBsYXN0UmV2bWFwUGFn ZV0gKi8KIAljaGVja19yZXZtYXAoc3RhdGUpOwogCi0JLyogQ2hlY2sgcmVndWxhciBwYWdlcywg YmxvY2tzOiBbbGFzdFJldm1hcFBhZ2UgKyAxLCBpZHhuYmxvY2tzXSAqLwotCWNoZWNrX3JlZ3Vs YXJfcGFnZXMoc3RhdGUpOworCisJaWYgKHN0YXRlLT5yZWd1bGFycGFnZXNjaGVjaykKKwl7CisJ CS8qIENoZWNrIHJlZ3VsYXIgcGFnZXMsIGJsb2NrczogW2xhc3RSZXZtYXBQYWdlICsgMSwgaWR4 bmJsb2Nrc10gKi8KKwkJY2hlY2tfcmVndWxhcl9wYWdlcyhzdGF0ZSk7CisJfQorCiB9CiAKIC8q IE1ldGEgcGFnZSBjaGVjayBhbmQgc2F2ZSBzb21lIGRhdGEgZm9yIHRoZSBmdXJ0aGVyIGNoZWNr ICovCkBAIC02MTQsMTEgKzY3Nyw2IEBAIGNoZWNrX3JlZ3VsYXJfcGFnZXMoQnJpbkNoZWNrU3Rh dGUgKiBzdGF0ZSkKIAlSZWFkU3RyZWFtQmxvY2tOdW1iZXJDQiBzdHJlYW1fY2I7CiAJQmxvY2tS YW5nZVJlYWRTdHJlYW1Qcml2YXRlIHN0cmVhbV9kYXRhOwogCi0JaWYgKCFzdGF0ZS0+cmVndWxh cl9wYWdlc19jaGVjaykKLQl7Ci0JCXJldHVybjsKLQl9Ci0KIAkvKiByZXNldCBzdGF0ZSAqLwog CXN0YXRlLT5yZXZtYXBCbGsgPSBJbnZhbGlkQmxvY2tOdW1iZXI7CiAJc3RhdGUtPnJldm1hcGJ1 ZiA9IEludmFsaWRCdWZmZXI7CkBAIC02MjgsNyArNjg2LDYgQEAgY2hlY2tfcmVndWxhcl9wYWdl cyhCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlKQogCXN0YXRlLT5yZWdwYWdlb2Zmc2V0ID0gSW52YWxp ZE9mZnNldE51bWJlcjsKIAlzdGF0ZS0+aWR4bmJsb2NrcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZC bG9ja3Moc3RhdGUtPmlkeHJlbCk7CiAKLQogCS8qCiAJICogUHJlcGFyZSBzdHJlYW0gZGF0YSBm b3IgcmVndWxhciBwYWdlcyB3YWxrLiBJdCBpcyBzYWZlIHRvIHVzZSBiYXRjaG1vZGUKIAkgKiBh cyBibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiB0YWtlcyBubyBsb2Nrcy4KQEAgLTc4OCw2ICs4 NDUsNDE0IEBAIFBhZ2VHZXRJdGVtSWRDYXJlZnVsKEJyaW5DaGVja1N0YXRlICogc3RhdGUpCiAJ cmV0dXJuIGl0ZW1pZDsKIH0KIAorLyoKKyAqIENoZWNrIHRoYXQgZXZlcnkgaGVhcCB0dXBsZSBh cmUgY29uc2lzdGVudCB3aXRoIHRoZSBpbmRleC4KKyAqCisgKiBIZXJlIHdlIGdlbmVyYXRlIFNj YW5LZXkgZm9yIGV2ZXJ5IGhlYXAgdHVwbGUgYW5kIHRlc3QgaXQgYWdhaW5zdAorICogYXBwcm9w cmlhdGUgcmFuZ2UgdXNpbmcgY29uc2lzdGVudEZuIChmb3IgU2NhbktleSBnZW5lcmF0aW9uIGxv Z2ljIGxvb2sgJ3ByZXBhcmVfbm9ubnVsbF9zY2FuX2tleScpCisgKgorICogQWxzbywgd2UgY2hl Y2sgdGhhdCBmaWVsZHMgJ2VtcHR5X3JhbmdlJywgJ2FsbF9udWxscycgYW5kICdoYXNfbnVsbHMn CisgKiBhcmUgbm90IHRvbyAibmFycm93IiBmb3IgZWFjaCByYW5nZSwgd2hpY2ggbWVhbnM6Cisg KiAxKSBoYXNfbnVsbHMgPSBmYWxzZSwgYnV0IHdlIHNlZSBudWxsIHZhbHVlIChvbmx5IGZvciBv aV9yZWd1bGFyX251bGxzIGlzIHRydWUpCisgKiAyKSBhbGxfbnVsbHMgPSB0cnVlLCBidXQgd2Ug c2VlIG5vbm51bGwgdmFsdWUuCisgKiAzKSBlbXB0eV9yYW5nZSA9IHRydWUsIGJ1dCB3ZSBzZWUg dHVwbGUgd2l0aGluIHRoZSByYW5nZS4KKyAqCisgKiBXZSB1c2UgYWxsb3dTeW5jID0gZmFsc2Us IGJlY2F1c2UgdGhpcyB3YXkKKyAqIHdlIHByb2Nlc3MgZnVsbCByYW5nZXMgb25lIGJ5IG9uZSBm cm9tIHRoZSBmaXJzdCByYW5nZS4KKyAqIEl0J3Mgbm90IG5lY2Vzc2FyeSwgYnV0IG1ha2VzIHRo ZSBjb2RlIHNpbXBsZXIgYW5kIHRoaXMgd2F5CisgKiB3ZSBuZWVkIHRvIGZldGNoIGV2ZXJ5IGlu ZGV4IHR1cGxlIG9ubHkgb25jZS4KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX2hlYXBfYWxsX2lu ZGV4ZWQoQnJpbkNoZWNrU3RhdGUgKiBzdGF0ZSkKK3sKKwlSZWxhdGlvbglpZHhyZWwgPSBzdGF0 ZS0+aWR4cmVsOworCVJlbGF0aW9uCWhlYXByZWwgPSBzdGF0ZS0+aGVhcHJlbDsKKwlkb3VibGUJ CXJlbHR1cGxlczsKKwlJbmRleEluZm8gICppbmRleEluZm87CisKKwkvKiBoZWFwIGFsbCBpbmRl eGVkIGNoZWNrIGZpZWxkcyBpbml0aWFsaXphdGlvbiAqLworCisJc3RhdGUtPnJldm1hcCA9IGJy aW5SZXZtYXBJbml0aWFsaXplKGlkeHJlbCwgJnN0YXRlLT5wYWdlc1BlclJhbmdlKTsKKwlzdGF0 ZS0+ZHR1cCA9IGJyaW5fbmV3X21lbXR1cGxlKHN0YXRlLT5iZGVzYyk7CisJc3RhdGUtPmNoZWNr YWJsZV9yYW5nZSA9IGZhbHNlOworCXN0YXRlLT5jb25zaXN0ZW50Rm4gPSBwYWxsb2MwX2FycmF5 KEZtZ3JJbmZvLCBzdGF0ZS0+bmF0dHMpOworCXN0YXRlLT5yYW5nZV9jbnQgPSAwOworCS8qIG5l eHQgcmFuZ2UgaXMgdGhlIGZpcnN0IHJhbmdlIGluIHRoZSBiZWdpbm5pbmcgKi8KKwlzdGF0ZS0+ bmV4dHJhbmdlQmxrID0gMDsKKwlzdGF0ZS0+bm9ubnVsbF9zayA9IHBhbGxvYzBfYXJyYXkoU2Nh bktleSwgc3RhdGUtPm5hdHRzKTsKKwlzdGF0ZS0+aXNudWxsX3NrID0gcGFsbG9jMF9hcnJheShT Y2FuS2V5LCBzdGF0ZS0+bmF0dHMpOworCXN0YXRlLT5yYW5nZUN0eCA9IEFsbG9jU2V0Q29udGV4 dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJCQkJImJyaW4gY2hlY2sgcmFu Z2UgY29udGV4dCIsCisJCQkJCQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCXN0YXRl LT5oZWFwdHVwbGVDdHggPSBBbGxvY1NldENvbnRleHRDcmVhdGUoQ3VycmVudE1lbW9yeUNvbnRl eHQsCisJCQkJCQkJCQkJCQkiYnJpbiBjaGVjayB0dXBsZSBjb250ZXh0IiwKKwkJCQkJCQkJCQkJ CUFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJLyoKKwkgKiBQcmVwYXJlICJub24tbnVsbCIg YW5kICJpc19udWxsIiBzY2FuIGtleXMgYW5kIGNvbnNpc3RlbnQgZm4gZm9yIGVhY2gKKwkgKiBh dHRyaWJ1dGUKKwkgKi8KKwlmb3IgKEF0dHJOdW1iZXIgYXR0bm8gPSAxOyBhdHRubyA8PSBzdGF0 ZS0+bmF0dHM7IGF0dG5vKyspCisJeworCQlGbWdySW5mbyAgICp0bXA7CisKKwkJdG1wID0gaW5k ZXhfZ2V0cHJvY2luZm8oaWR4cmVsLCBhdHRubywgQlJJTl9QUk9DTlVNX0NPTlNJU1RFTlQpOwor CQlmbWdyX2luZm9fY29weSgmc3RhdGUtPmNvbnNpc3RlbnRGblthdHRubyAtIDFdLCB0bXAsIEN1 cnJlbnRNZW1vcnlDb250ZXh0KTsKKworCQlzdGF0ZS0+bm9ubnVsbF9za1thdHRubyAtIDFdID0g cHJlcGFyZV9ub25udWxsX3NjYW5fa2V5KHN0YXRlLCBhdHRubyk7CisJCXN0YXRlLT5pc251bGxf c2tbYXR0bm8gLSAxXSA9IHByZXBhcmVfaXNudWxsX3NjYW5fa2V5KGF0dG5vKTsKKwl9CisKKwlp bmRleEluZm8gPSBCdWlsZEluZGV4SW5mbyhpZHhyZWwpOworCisJLyoKKwkgKiBVc2Ugc25hcHNo b3QgdG8gY2hlY2sgb25seSB0aG9zZSB0dXBsZXMgdGhhdCBhcmUgZ3VhcmFudGVlZCB0byBiZQor CSAqIGluZGV4ZWQgYWxyZWFkeS4gVXNpbmcgU25hcHNob3RBbnkgd291bGQgbWFrZSBpdCBtb3Jl IGRpZmZpY3VsdCB0byBzYXkKKwkgKiBpZiB0aGVyZSBpcyBhIGNvcnJ1cHRpb24gb3IgY2hlY2tl ZCB0dXBsZSBqdXN0IGhhdmVuJ3QgYmVlbiBpbmRleGVkCisJICogeWV0LgorCSAqLworCWluZGV4 SW5mby0+aWlfQ29uY3VycmVudCA9IHRydWU7CisJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVp bGRfc2NhbihoZWFwcmVsLCBpZHhyZWwsIGluZGV4SW5mbywgZmFsc2UsIHRydWUsCisJCQkJCQkJ CQkgICBicmluX2NoZWNrX2NhbGxiYWNrLCAodm9pZCAqKSBzdGF0ZSwgTlVMTCk7CisKKwllbG9n KERFQlVHMywgInJhbmdlcyB3ZXJlIGNoZWNrZWQ6ICVmIiwgc3RhdGUtPnJhbmdlX2NudCk7CisJ ZWxvZyhERUJVRzMsICJzY2FuIHRvdGFsIHR1cGxlczogJWYiLCByZWx0dXBsZXMpOworCisJaWYg KHN0YXRlLT5idWYgIT0gSW52YWxpZEJ1ZmZlcikKKwkJUmVsZWFzZUJ1ZmZlcihzdGF0ZS0+YnVm KTsKKworCWJyaW5SZXZtYXBUZXJtaW5hdGUoc3RhdGUtPnJldm1hcCk7CisJTWVtb3J5Q29udGV4 dERlbGV0ZShzdGF0ZS0+cmFuZ2VDdHgpOworCU1lbW9yeUNvbnRleHREZWxldGUoc3RhdGUtPmhl YXB0dXBsZUN0eCk7Cit9CisKKy8qCisgKiBDaGVjayBvcGVyYXRvciBuYW1lcyBhcnJheSBpbnB1 dCBwYXJhbWV0ZXIgYW5kIGNvbnZlcnQgaXQgdG8gYXJyYXkgb2Ygc3RyaW5ncworICogRW1wdHkg aW5wdXQgYXJyYXkgbWVhbnMgd2UgdXNlICI9IiBvcGVyYXRvciBmb3IgZXZlcnkgYXR0cmlidXRl CisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19hbmRfcHJlcGFyZV9vcGVyYXRvcl9uYW1lcyhCcmlu Q2hlY2tTdGF0ZSAqIHN0YXRlKQoreworCU9pZAkJCWVsZW1lbnRfdHlwZSA9IEFSUl9FTEVNVFlQ RShzdGF0ZS0+Y29uc2lzdGVudF9vcGVyX25hbWVzKTsKKwlpbnQxNgkJdHlwbGVuOworCWJvb2wJ CXR5cGJ5dmFsOworCWNoYXIJCXR5cGFsaWduOworCURhdHVtCSAgICp2YWx1ZXM7CisJYm9vbAkg ICAqZWxlbV9udWxsczsKKwlpbnQJCQludW1fZWxlbXM7CisKKwlzdGF0ZS0+b3BlcmF0b3JOYW1l cyA9IHBhbGxvYyhzaXplb2YoU3RyaW5nKSAqIHN0YXRlLT5uYXR0cyk7CisKKwlnZXRfdHlwbGVu Ynl2YWxhbGlnbihlbGVtZW50X3R5cGUsICZ0eXBsZW4sICZ0eXBieXZhbCwgJnR5cGFsaWduKTsK KwlkZWNvbnN0cnVjdF9hcnJheShzdGF0ZS0+Y29uc2lzdGVudF9vcGVyX25hbWVzLCBlbGVtZW50 X3R5cGUsIHR5cGxlbiwgdHlwYnl2YWwsIHR5cGFsaWduLAorCQkJCQkgICZ2YWx1ZXMsICZlbGVt X251bGxzLCAmbnVtX2VsZW1zKTsKKworCS8qIElmIHdlIGhhdmUgc29tZSBpbnB1dCBjaGVjayBp dCBhbmQgY29udmVydCB0byBTdHJpbmcqKiAqLworCWlmIChudW1fZWxlbXMgIT0gMCkKKwl7CisJ CWlmIChudW1fZWxlbXMgIT0gc3RhdGUtPm5hdHRzKQorCQl7CisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVy cm1zZygiT3BlcmF0b3IgbmFtZXMgYXJyYXkgbGVuZ3RoICV1LCBidXQgaW5kZXggaGFzICV1IGF0 dHJpYnV0ZXMiLAorCQkJCQkJCW51bV9lbGVtcywgc3RhdGUtPm5hdHRzKSkpOworCQl9CisKKwkJ Zm9yIChpbnQgaSA9IDA7IGkgPCBudW1fZWxlbXM7IGkrKykKKwkJeworCQkJaWYgKGVsZW1fbnVs bHNbaV0pCisJCQl7CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJIGVycm1zZygiT3BlcmF0b3IgbmFtZXMg YXJyYXkgY29udGFpbnMgTlVMTCIpKSk7CisJCQl9CisJCQlzdGF0ZS0+b3BlcmF0b3JOYW1lc1tp XSA9IG1ha2VTdHJpbmcoVGV4dERhdHVtR2V0Q1N0cmluZyh2YWx1ZXNbaV0pKTsKKwkJfQorCX0K KwllbHNlCisJeworCQkvKiBJZiB0aGVyZSBpcyBubyBpbnB1dCBqdXN0IHVzZSAiPSIgb3BlcmF0 b3IgZm9yIGFsbCBhdHRyaWJ1dGVzICovCisJCWZvciAoaW50IGkgPSAwOyBpIDwgc3RhdGUtPm5h dHRzOyBpKyspCisJCXsKKwkJCXN0YXRlLT5vcGVyYXRvck5hbWVzW2ldID0gbWFrZVN0cmluZygi PSIpOworCQl9CisJfQorfQorCisvKgorICogUHJlcGFyZSBTY2FuS2V5IGZvciBpbmRleCBhdHRy aWJ1dGUuCisgKgorICogQ29uc2lzdGVudEZuIHJlcXVpcmVzIFNjYW5LZXksIHNvIHdlIG5lZWQg dG8gZ2VuZXJhdGUgU2NhbktleSBmb3IgZXZlcnkKKyAqIGF0dHJpYnV0ZSBzb21laG93LiBXZSB3 YW50IFNjYW5LZXkgdGhhdCB3b3VsZCByZXN1bHQgaW4gVFJVRSBmb3IgZXZlcnkgaGVhcAorICog dHVwbGUgd2l0aGluIHRoZSByYW5nZSB3aGVuIHdlIHVzZSBpdHMgaW5kZXhlZCB2YWx1ZSBhcyBz a19hcmd1bWVudC4KKyAqIFRvIGdlbmVyYXRlIHN1Y2ggYSBTY2FuS2V5IHdlIG5lZWQgdG8gZGVm aW5lIHRoZSByaWdodCBvcGVyYW5kIHR5cGUgYW5kIHRoZSBzdHJhdGVneSBudW1iZXIuCisgKiBS aWdodCBvcGVyYW5kIHR5cGUgaXMgYSB0eXBlIG9mIGRhdGEgdGhhdCBpbmRleCBpcyBidWlsdCBv biwgc28gaXQncyAnb3BjaW50eXBlJy4KKyAqIFRoZXJlIGlzIG5vIHN0cmF0ZWd5IG51bWJlciB0 aGF0IHdlIGNhbiBhbHdheXMgdXNlLAorICogYmVjYXVzZSBldmVyeSBvcGNsYXNzIGRlZmluZXMg aXRzIG93biBzZXQgb2Ygb3BlcmF0b3JzIGl0IHN1cHBvcnRzIGFuZCBzdHJhdGVneSBudW1iZXIK KyAqIGZvciB0aGUgc2FtZSBvcGVyYXRvciBjYW4gZGlmZmVyIGZyb20gb3BjbGFzcyB0byBvcGNs YXNzLgorICogU28gdG8gZ2V0IHN0cmF0ZWd5IG51bWJlciB3ZSBsb29rIHVwIGFuIG9wZXJhdG9y IHRoYXQgZ2l2ZXMgdXMgZGVzaXJlZCBiZWhhdmlvcgorICogYW5kIHdoaWNoIGJvdGggb3BlcmFu ZCB0eXBlcyBhcmUgJ29wY2ludHlwZScgYW5kIHRoZW4gcmV0cmlldmUgdGhlIHN0cmF0ZWd5IG51 bWJlciBmb3IgaXQuCisgKiBNb3N0IG9mIHRoZSB0aW1lIHdlIGNhbiB1c2UgJz0nLiBXZSBsZXQg dXNlciBkZWZpbmUgb3BlcmF0b3IgbmFtZSBpbiBjYXNlIG9wY2xhc3MgZG9lc24ndAorICogc3Vw cG9ydCAnPScgb3BlcmF0b3IuIEFsc28sIGlmIHN1Y2ggb3BlcmF0b3IgZG9lc24ndCBleGlzdCwg d2UgY2FuJ3QgcHJvY2VlZCB3aXRoIHRoZSBjaGVjay4KKyAqCisgKiBHZW5lcmF0ZWQgb25jZSwg YW5kIHdpbGwgYmUgcmV1c2VkIGZvciBhbGwgaGVhcCB0dXBsZXMuCisgKiBBcmd1bWVudCBmaWVs ZCB3aWxsIGJlIGZpbGxlZCBmb3IgZXZlcnkgaGVhcCB0dXBsZSBiZWZvcmUKKyAqIGNvbnNpc3Rl bnQgZnVuY3Rpb24gaW52b2NhdGlvbiwgc28gbGVhdmUgaXQgTlVMTCBmb3IgYSB3aGlsZS4KKyAq CisgKi8KK3N0YXRpYyBTY2FuS2V5CitwcmVwYXJlX25vbm51bGxfc2Nhbl9rZXkoY29uc3QgQnJp bkNoZWNrU3RhdGUgKiBzdGF0ZSwgQXR0ck51bWJlciBhdHRubykKK3sKKwlTY2FuS2V5CQlzY2Fu S2V5OworCU9pZAkJCW9wT2lkOworCU9pZAkJCW9wRmFtaWx5T2lkOworCWJvb2wJCWRlZmluZWQ7 CisJU3RyYXRlZ3lOdW1iZXIgc3RyYXRlZ3k7CisJUmVnUHJvY2VkdXJlIG9wUmVnUHJvYzsKKwlM aXN0CSAgICpvcGVyTmFtZUxpc3Q7CisJaW50CQkJYXR0aW5kZXggPSBhdHRubyAtIDE7CisJRm9y bV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIoc3RhdGUtPmJkZXNjLT5iZF90dXBk ZXNjLCBhdHRpbmRleCk7CisJT2lkCQkJdHlwZSA9IHN0YXRlLT5pZHhyZWwtPnJkX29wY2ludHlw ZVthdHRpbmRleF07CisJU3RyaW5nCSAgICpvcG5hbWUgPSBzdGF0ZS0+b3BlcmF0b3JOYW1lc1th dHRubyAtIDFdOworCisJb3BGYW1pbHlPaWQgPSBzdGF0ZS0+aWR4cmVsLT5yZF9vcGZhbWlseVth dHRpbmRleF07CisJb3Blck5hbWVMaXN0ID0gbGlzdF9tYWtlMShvcG5hbWUpOworCW9wT2lkID0g T3BlcmF0b3JMb29rdXAob3Blck5hbWVMaXN0LCB0eXBlLCB0eXBlLCAmZGVmaW5lZCk7CisKKwlp ZiAob3BPaWQgPT0gSW52YWxpZE9pZCkKKwl7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9VTkRFRklORURfRlVOQ1RJT04pLAorCQkJCSBlcnJtc2coIlRoZXJlIGlzIG5v IG9wZXJhdG9yICVzIGZvciB0eXBlICV1IiwKKwkJCQkJCW9wbmFtZS0+c3ZhbCwgdHlwZSkpKTsK Kwl9CisKKwlzdHJhdGVneSA9IGdldF9vcF9vcGZhbWlseV9zdHJhdGVneShvcE9pZCwgb3BGYW1p bHlPaWQpOworCisJaWYgKHN0cmF0ZWd5ID09IDApCisJeworCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coIm9wZXJh dG9yICVzIGlzIG5vdCBhIG1lbWJlciBvZiBvcGVyYXRvciBmYW1pbHkgXCIlc1wiIiwKKwkJCQkJ CW9wbmFtZS0+c3ZhbCwKKwkJCQkJCWdldF9vcGZhbWlseV9uYW1lKG9wRmFtaWx5T2lkLCBmYWxz ZSkpKSk7CisJfQorCisJb3BSZWdQcm9jID0gZ2V0X29wY29kZShvcE9pZCk7CisJc2NhbktleSA9 IHBhbGxvYzAoc2l6ZW9mKFNjYW5LZXlEYXRhKSk7CisJU2NhbktleUVudHJ5SW5pdGlhbGl6ZSgK KwkJCQkJCSAgIHNjYW5LZXksCisJCQkJCQkgICAwLAorCQkJCQkJICAgYXR0bm8sCisJCQkJCQkg ICBzdHJhdGVneSwKKwkJCQkJCSAgIHR5cGUsCisJCQkJCQkgICBhdHRyLT5hdHRjb2xsYXRpb24s CisJCQkJCQkgICBvcFJlZ1Byb2MsCisJCQkJCQkgICAoRGF0dW0pIE5VTEwKKwkJKTsKKwlwZnJl ZShvcGVyTmFtZUxpc3QpOworCisJcmV0dXJuIHNjYW5LZXk7Cit9CisKK3N0YXRpYyBTY2FuS2V5 CitwcmVwYXJlX2lzbnVsbF9zY2FuX2tleShBdHRyTnVtYmVyIGF0dG5vKQoreworCVNjYW5LZXkJ CXNjYW5LZXk7CisKKwlzY2FuS2V5ID0gcGFsbG9jMChzaXplb2YoU2NhbktleURhdGEpKTsKKwlT Y2FuS2V5RW50cnlJbml0aWFsaXplKHNjYW5LZXksCisJCQkJCQkgICBTS19JU05VTEwgfCBTS19T RUFSQ0hOVUxMLAorCQkJCQkJICAgYXR0bm8sCisJCQkJCQkgICBJbnZhbGlkU3RyYXRlZ3ksCisJ CQkJCQkgICBJbnZhbGlkT2lkLAorCQkJCQkJICAgSW52YWxpZE9pZCwKKwkJCQkJCSAgIEludmFs aWRPaWQsCisJCQkJCQkgICAoRGF0dW0pIDApOworCXJldHVybiBzY2FuS2V5OworfQorCisvKgor 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 YWxsIG5vbm51bGwgdmFsdWVzIG5vdCBtYXR0ZXIgb2lfcmVndWxhcl9udWxscyBpcyBzZXQgb3Ig bm90LAorICogRm9yIGFsbCBvdGhlciBjYXNlcyB3ZSBjYWxsIGNvbnNpc3RlbnRGbiB3aXRoIGFw cHJvcHJpYXRlIHNjYW5LZXk6CisgKiAtIGZvciBvaV9yZWd1bGFyX251bGxzID0gZmFsc2UgYW5k IG51bGwgdmFsdWVzIHdlIHVzZSAnaXNOdWxsJyBzY2FuS2V5LAorICogLSBmb3Igbm9ubnVsbCB2 YWx1ZXMgd2UgdXNlICdub25udWxsJyBzY2FuS2V5CisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19o ZWFwX3R1cGxlKEJyaW5DaGVja1N0YXRlICogc3RhdGUsIGNvbnN0IERhdHVtICp2YWx1ZXMsIGNv bnN0IGJvb2wgKm51bGxzLCBJdGVtUG9pbnRlciB0aWQpCit7CisJaW50CQkJYXR0aW5kZXg7CisJ QnJpbk1lbVR1cGxlICpkdHVwID0gc3RhdGUtPmR0dXA7CisJQnJpbkRlc2MgICAqYmRlc2MgPSBz dGF0ZS0+YmRlc2M7CisJTWVtb3J5Q29udGV4dCBvbGRDdHg7CisKKwlBc3NlcnQoc3RhdGUtPmNo ZWNrYWJsZV9yYW5nZSk7CisKKwlNZW1vcnlDb250ZXh0UmVzZXQoc3RhdGUtPmhlYXB0dXBsZUN0 eCk7CisJb2xkQ3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHN0YXRlLT5oZWFwdHVwbGVDdHgp OworCisJLyogY2hlY2sgZXZlcnkgaW5kZXggYXR0cmlidXRlICovCisJZm9yIChhdHRpbmRleCA9 IDA7IGF0dGluZGV4IDwgc3RhdGUtPm5hdHRzOyBhdHRpbmRleCsrKQorCXsKKwkJQnJpblZhbHVl cyAqYnZhbDsKKwkJRGF0dW0JCWNvbnNpc3RlbnRGblJlc3VsdDsKKwkJYm9vbAkJY29uc2lzdGVu dDsKKwkJU2NhbktleQkJc2NhbktleTsKKwkJYm9vbAkJb2lfcmVndWxhcl9udWxscyA9IGJkZXNj LT5iZF9pbmZvW2F0dGluZGV4XS0+b2lfcmVndWxhcl9udWxsczsKKworCQlidmFsID0gJmR0dXAt PmJ0X2NvbHVtbnNbYXR0aW5kZXhdOworCisJCWlmIChudWxsc1thdHRpbmRleF0pCisJCXsKKwkJ CS8qCisJCQkgKiBVc2UgaGFzbnVsbHMgZmxhZyBmb3Igb2lfcmVndWxhcl9udWxscyBpcyB0cnVl LiBPdGhlcndpc2UsCisJCQkgKiBkZWxlZ2F0ZSBjaGVjayB0byBjb25zaXN0ZW50Rm4KKwkJCSAq LworCQkJaWYgKG9pX3JlZ3VsYXJfbnVsbHMpCisJCQl7CisJCQkJLyogV2UgaGF2ZSBudWxsIHZh bHVlLCBzbyBoYXNudWxscyBvciBhbGxudWxscyBtdXN0IGJlIHRydWUgKi8KKwkJCQlpZiAoIShi dmFsLT5idl9oYXNudWxscyB8fCBidmFsLT5idl9hbGxudWxscykpCisJCQkJeworCQkJCQlhbGxf Y29uc2lzdF9lcmVwb3J0KHN0YXRlLCB0aWQsICJyYW5nZSBoYXNudWxscyBhbmQgYWxsbnVsbHMg YXJlIGZhbHNlLCBidXQgY29udGFpbnMgYSBudWxsIHZhbHVlIik7CisJCQkJfQorCQkJCWNvbnRp bnVlOworCQkJfQorCisJCQkvKgorCQkJICogSW4gY2FzZSBvZiBudWxsIGFuZCBvaV9yZWd1bGFy X251bGxzID0gZmFsc2Ugd2UgdXNlIGlzTnVsbAorCQkJICogc2NhbktleSBmb3IgaW52b2NhdGlv biBvZiBjb25zaXN0ZW50Rm4KKwkJCSAqLworCQkJc2NhbktleSA9IHN0YXRlLT5pc251bGxfc2tb YXR0aW5kZXhdOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogV2UgaGF2ZSBhIG5vbm51bGwgdmFs dWUsIHNvIGFsbG51bGxzIHNob3VsZCBiZSBmYWxzZSAqLworCQkJaWYgKGJ2YWwtPmJ2X2FsbG51 bGxzKQorCQkJeworCQkJCWFsbF9jb25zaXN0X2VyZXBvcnQoc3RhdGUsIHRpZCwgInJhbmdlIGFs bG51bGxzIGlzIHRydWUsIGJ1dCBjb250YWlucyBub25udWxsIHZhbHVlIik7CisJCQl9CisKKwkJ CS8qIHVzZSAiYXR0ciA9IHZhbHVlIiBzY2FuIGtleSBmb3Igbm9ubnVsbCB2YWx1ZXMgKi8KKwkJ CXNjYW5LZXkgPSBzdGF0ZS0+bm9ubnVsbF9za1thdHRpbmRleF07CisJCQlzY2FuS2V5LT5za19h cmd1bWVudCA9IHZhbHVlc1thdHRpbmRleF07CisJCX0KKworCQkvKiBJZiBvaV9yZWd1bGFyX251 bGxzID0gdHJ1ZSB3ZSBzaG91bGQgbmV2ZXIgZ2V0IHRoZXJlIHdpdGggbnVsbCAqLworCQlBc3Nl cnQoIW9pX3JlZ3VsYXJfbnVsbHMgfHwgIW51bGxzW2F0dGluZGV4XSk7CisKKwkJaWYgKHN0YXRl LT5jb25zaXN0ZW50Rm5bYXR0aW5kZXhdLmZuX25hcmdzID49IDQpCisJCXsKKwkJCWNvbnNpc3Rl bnRGblJlc3VsdCA9IEZ1bmN0aW9uQ2FsbDRDb2xsKCZzdGF0ZS0+Y29uc2lzdGVudEZuW2F0dGlu ZGV4XSwKKwkJCQkJCQkJCQkJCSAgIHN0YXRlLT5pZHhyZWwtPnJkX2luZGNvbGxhdGlvblthdHRp bmRleF0sCisJCQkJCQkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0oc3RhdGUtPmJkZXNjKSwKKwkJ CQkJCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShidmFsKSwKKwkJCQkJCQkJCQkJCSAgIFBvaW50 ZXJHZXREYXR1bSgmc2NhbktleSksCisJCQkJCQkJCQkJCQkgICBJbnQzMkdldERhdHVtKDEpCisJ CQkJKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWNvbnNpc3RlbnRGblJlc3VsdCA9IEZ1bmN0aW9u Q2FsbDNDb2xsKCZzdGF0ZS0+Y29uc2lzdGVudEZuW2F0dGluZGV4XSwKKwkJCQkJCQkJCQkJCSAg IHN0YXRlLT5pZHhyZWwtPnJkX2luZGNvbGxhdGlvblthdHRpbmRleF0sCisJCQkJCQkJCQkJCQkg ICBQb2ludGVyR2V0RGF0dW0oc3RhdGUtPmJkZXNjKSwKKwkJCQkJCQkJCQkJCSAgIFBvaW50ZXJH ZXREYXR1bShidmFsKSwKKwkJCQkJCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShzY2FuS2V5KQor CQkJCSk7CisJCX0KKworCQljb25zaXN0ZW50ID0gRGF0dW1HZXRCb29sKGNvbnNpc3RlbnRGblJl c3VsdCk7CisKKwkJaWYgKCFjb25zaXN0ZW50KQorCQl7CisJCQlhbGxfY29uc2lzdF9lcmVwb3J0 KHN0YXRlLCB0aWQsICJoZWFwIHR1cGxlIGluY29uc2lzdGVudCB3aXRoIGluZGV4Iik7CisJCX0K KworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDdHgpOworfQogCiAvKiBSZXBvcnQg d2l0aG91dCBhbnkgYWRkaXRpb25hbCBpbmZvICovCiBzdGF0aWMgdm9pZApAQCAtODUzLDMgKzEz MTgsMTkgQEAgcmV2bWFwX2l0ZW1fZXJlcG9ydChCcmluQ2hlY2tTdGF0ZSAqIHN0YXRlLCBjb25z dCBjaGFyICpmbXQpCiAJCQkJCXN0YXRlLT5yZXZtYXBCbGssCiAJCQkJCXN0YXRlLT5yZXZtYXBp ZHgpKSk7CiB9CisKKy8qIFJlcG9ydCB3aXRoIHJhbmdlIGJsa25vLCBoZWFwIHR1cGxlIGluZm8g Ki8KK3N0YXRpYyB2b2lkCithbGxfY29uc2lzdF9lcmVwb3J0KGNvbnN0IEJyaW5DaGVja1N0YXRl ICogc3RhdGUsIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLCBjb25zdCBjaGFyICptZXNzYWdl KQoreworCUFzc2VydChzdGF0ZS0+cmFuZ2VCbGtubyAhPSBJbnZhbGlkQmxvY2tOdW1iZXIpOwor CisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfSU5ERVhfQ09SUlVQVEVEKSwK KwkJCSBlcnJtc2coIkluZGV4ICVzIGlzIG5vdCBjb25zaXN0ZW50IHdpdGggdGhlIGhlYXAgLSAl cy4gUmFuZ2UgYmxrbm86ICV1LCBoZWFwIHRpZCAoJXUsJXUpIiwKKwkJCQkJUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUoc3RhdGUtPmlkeHJlbCksCisJCQkJCW1lc3NhZ2UsCisJCQkJCXN0YXRlLT5k dHVwLT5idF9ibGtubywKKwkJCQkJSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcih0aWQpLAorCQkJ CQlJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcih0aWQpKSkpOworfQotLSAKMi40My4wCgo= --000000000000ed5c510639345447 Content-Type: text/x-patch; charset="US-ASCII"; name="v5-0001-brin-refactoring.patch" Content-Disposition: attachment; filename="v5-0001-brin-refactoring.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcqopnhb0 RnJvbSBjM2ZjNmUzNjY1ZjY0Nzc4NWNkMTM3YTZmNjA4ZTZlOTc5Y2I1MzdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBcnNlbml5IE11a2hpbiA8YXJzZW5peS5tdWtoaW4uZGV2QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAxNiBBcHIgMjAyNSAxMToyNjo0NSArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjUgMS81XSBicmluIHJlZmFjdG9yaW5nCgpGb3IgYWRkaW5nIEJSSU4gaW5kZXggc3Vw cG9ydCBpbiBhbWNoZWNrIHdlIG5lZWQgc29tZSB0aW55IGNoYW5nZXMgaW4gQlJJTgpjb3JlIGNv ZGU6CgoqIFdlIG5lZWQgdG8gaGF2ZSB0dXBsZSBkZXNjcmlwdG9yIGZvciBvbi1kaXNrIHN0b3Jh Z2Ugb2YgQlJJTiB0dXBsZXMuCiAgSXQgaXMgYSBwdWJsaWMgZmllbGQgJ2JkX2Rpc2t0ZGVzYycg aW4gQnJpbkRlc2MsIGJ1dCB0byBhY2Nlc3MgaXQgd2UKICBuZWVkIGZ1bmN0aW9uICdicnR1cGxl X2Rpc2tfdHVwZGVzYycgd2hpY2ggaXMgaW50ZXJuYWwuIFRoaXMgY29tbWl0CiAgbWFrZXMgaXQg ZXh0ZXJuLgoKKiBGb3IgbWV0YSBwYWdlIGNoZWNrIHdlIG5lZWQgdG8ga25vdyBwYWdlc19wZXJf cmFuZ2UgdXBwZXIgbGltaXQuIEl0J3MKICBoYXJkY29kZWQgbm93LiBUaGlzIGNvbW1pdCBtb3Zl cyBpdHMgdmFsdWUgdG8gbWFjcm9zIEJSSU5fTUFYX1BBR0VTX1BFUl9SQU5HRQogIHNvIHRoYXQg d2UgY2FuIHVzZSBpdCBpbiBhbWNoZWNrIHRvby4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluX3R1cGxlLmMgICB8IDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0 aW9ucy5jIHwgMyArKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9icmluLmggICAgICAgICAgICAgIHwg MSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl90dXBsZS5oICAgICAgICB8IDIgKysKIDQgZmls ZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fdHVwbGUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW5fdHVwbGUuYwppbmRleCA4NjFmMzk3ZTZkYi4uNGQxZDhkOWFkZGQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fdHVwbGUuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvYnJpbi9icmluX3R1cGxlLmMKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIGlu bGluZSB2b2lkIGJyaW5fZGVjb25zdHJ1Y3RfdHVwbGUoQnJpbkRlc2MgKmJyZGVzYywKIC8qCiAg KiBSZXR1cm4gYSB0dXBsZSBkZXNjcmlwdG9yIHVzZWQgZm9yIG9uLWRpc2sgc3RvcmFnZSBvZiBC UklOIHR1cGxlcy4KICAqLwotc3RhdGljIFR1cGxlRGVzYworVHVwbGVEZXNjCiBicnR1cGxlX2Rp c2tfdHVwZGVzYyhCcmluRGVzYyAqYnJkZXNjKQogewogCS8qIFdlIGNhY2hlIHRoZXNlIGluIHRo ZSBCcmluRGVzYyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9yZWxv cHRpb25zLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3JlbG9wdGlvbnMuYwppbmRleCA1 MDc0N2MxNjM5Ni4uYmM0OTQ4NDczNDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vcmVsb3B0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0 aW9ucy5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL2hlYXB0b2FzdC5oIgog I2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVl LmgiCisjaW5jbHVkZSAiYWNjZXNzL2JyaW4uaCIKICNpbmNsdWRlICJhY2Nlc3MvcmVsb3B0aW9u cy5oIgogI2luY2x1ZGUgImFjY2Vzcy9zcGdpc3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfdHlwZS5oIgpAQCAtMzQzLDcgKzM0NCw3IEBAIHN0YXRpYyByZWxvcHRfaW50IGludFJl bE9wdHNbXSA9CiAJCQkiTnVtYmVyIG9mIHBhZ2VzIHRoYXQgZWFjaCBwYWdlIHJhbmdlIGNvdmVy cyBpbiBhIEJSSU4gaW5kZXgiLAogCQkJUkVMT1BUX0tJTkRfQlJJTiwKIAkJCUFjY2Vzc0V4Y2x1 c2l2ZUxvY2sKLQkJfSwgMTI4LCAxLCAxMzEwNzIKKwkJfSwgMTI4LCAxLCBCUklOX01BWF9QQUdF U19QRVJfUkFOR0UKIAl9LAogCXsKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNz L2JyaW4uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluLmgKaW5kZXggODIxZjFlMDI4MDYuLjMz NGNlOTczYjY3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbi5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9icmluLmgKQEAgLTM3LDYgKzM3LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg QnJpblN0YXRzRGF0YQogCiAKICNkZWZpbmUgQlJJTl9ERUZBVUxUX1BBR0VTX1BFUl9SQU5HRQkx MjgKKyNkZWZpbmUgQlJJTl9NQVhfUEFHRVNfUEVSX1JBTkdFCTEzMTA3MgogI2RlZmluZSBCcmlu R2V0UGFnZXNQZXJSYW5nZShyZWxhdGlvbikgXAogCShBc3NlcnRNYWNybyhyZWxhdGlvbi0+cmRf cmVsLT5yZWxraW5kID09IFJFTEtJTkRfSU5ERVggJiYgXAogCQkJCSByZWxhdGlvbi0+cmRfcmVs LT5yZWxhbSA9PSBCUklOX0FNX09JRCksIFwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9icmluX3R1cGxlLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl90dXBsZS5oCmluZGV4IDAx MGJhNGVhM2MwLi45NDcyY2E2MzhkZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2Jy aW5fdHVwbGUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl90dXBsZS5oCkBAIC0xMDks NCArMTA5LDYgQEAgZXh0ZXJuIEJyaW5NZW1UdXBsZSAqYnJpbl9tZW10dXBsZV9pbml0aWFsaXpl KEJyaW5NZW1UdXBsZSAqZHR1cGxlLAogZXh0ZXJuIEJyaW5NZW1UdXBsZSAqYnJpbl9kZWZvcm1f dHVwbGUoQnJpbkRlc2MgKmJyZGVzYywKIAkJCQkJCQkJCSAgIEJyaW5UdXBsZSAqdHVwbGUsIEJy aW5NZW1UdXBsZSAqZE1lbXR1cGxlKTsKIAorZXh0ZXJuIFR1cGxlRGVzYyBicnR1cGxlX2Rpc2tf dHVwZGVzYyhCcmluRGVzYyAqYnJkZXNjKTsKKwogI2VuZGlmCQkJCQkJCS8qIEJSSU5fVFVQTEVf SCAqLwotLSAKMi40My4wCgo= --000000000000ed5c510639345447 Content-Type: text/x-patch; charset="US-ASCII"; name="v5-0004-Adds-new-BRIN-support-function-withinRange.patch" Content-Disposition: attachment; filename="v5-0004-Adds-new-BRIN-support-function-withinRange.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcqopnho3 RnJvbSBiMjYxZTAzZjcwOWRlMTAxNjc4MzQ2MGM0NjI4MTUxMzY1ZDUyYzg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBcnNlbml5IE11a2hpbiA8YXJzZW5peS5tdWtoaW4uZGV2QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCA1IEp1bCAyMDI1IDIzOjEwOjU1ICswMzAwClN1YmplY3Q6IFtQ QVRDSCB2NSA0LzVdIEFkZHMgbmV3IEJSSU4gc3VwcG9ydCBmdW5jdGlvbiAnd2l0aGluUmFuZ2Un CgpUaGVyZSBpcyBubyBzdHJhaWdodGZvcndhcmQgd2F5IHRvIHNheSBpZiBzb21lIGluZGV4ZWQg dmFsdWUgaXMgY292ZXJlZApieSB0aGUgcmFuZ2UgdmFsdWUgb3Igbm90LiBUaGUgbmV3IHN1cHBv cnQgZnVuY3Rpb24gcHJvdmlkZXMgc3VjaCBhCmZ1bmN0aW9uYWxpdHkuIENvbW1pdCBhZGRzIGlt cGxlbWVudGF0aW9ucyBmb3IgYWxsIGNvcmUgQlJJTgpvcGNsYXNzZXM6IG1pbm1heCwgbWlubWF4 X211bHRpLCBibG9vbSwgaW5jbHVzaW9uLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW5fYmxvb20uYyAgICAgICAgfCAgNDQgKysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJp bl9pbmNsdXNpb24uYyAgICB8ICA2OCArKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW5fbWlubWF4LmMgICAgICAgfCAgNTcgKysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluX21pbm1heF9tdWx0aS5jIHwgMTM2ICsrKysrKysrLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNz L2JyaW5faW50ZXJuYWwuaCAgICAgICAgICB8ICAxMyArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19hbXByb2MuZGF0ICAgICAgICAgICB8IDIxNiArKysrKysrKysrKysrKysrKysrKwogc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICB8ICAxNiArKwogNyBmaWxlcyBj aGFuZ2VkLCA1MDkgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9ibG9vbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2JyaW4vYnJpbl9ibG9vbS5jCmluZGV4IDgyYjQyNWNlMzdkLi40ZmE1ZTM5ZjBhYyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9ibG9vbS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9icmluL2JyaW5fYmxvb20uYwpAQCAtNTg0LDYgKzU4NCw1MCBAQCBicmluX2Js b29tX2FkZF92YWx1ZShQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9CT09MKHVwZGF0ZWQp OwogfQogCisKKy8qCisgKiBJZiB0aGUgcGFzc2VkIHZhbHVlIGlzIG91dHNpZGUgdGhlIG1pbm1h eF9tdWx0aSByYW5nZSByZXR1cm4gZmFsc2UuCisgKiBPdGhlcndpc2UsIHJldHVybiB0cnVlLgor ICovCitEYXR1bQorYnJpbl9ibG9vbV93aXRoaW5fcmFuZ2UoUEdfRlVOQ1RJT05fQVJHUykKK3sK KwlCcmluRGVzYyAgICpiZGVzYyA9IChCcmluRGVzYyAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsK KwlCcmluVmFsdWVzICpjb2x1bW4gPSAoQnJpblZhbHVlcyAqKSBQR19HRVRBUkdfUE9JTlRFUigx KTsKKwlEYXR1bQkJdmFsID0gUEdfR0VUQVJHX0RBVFVNKDIpOworCWJvb2wJCWlzbnVsbCBQR19V U0VEX0ZPUl9BU1NFUlRTX09OTFkgPSBQR19HRVRBUkdfREFUVU0oMyk7CisJT2lkCQkJY29sbG9p ZCA9IFBHX0dFVF9DT0xMQVRJT04oKTsKKwlGbWdySW5mbyAgICpoYXNoRm47CisJdWludDMyCQlo YXNoVmFsdWU7CisJYm9vbAkJY29udGFpbnM7CisJQXR0ck51bWJlcglhdHRubzsKKwlCbG9vbUZp bHRlciAqZmlsdGVyOworCisJQXNzZXJ0KCFpc251bGwpOworCisJYXR0bm8gPSBjb2x1bW4tPmJ2 X2F0dG5vOworCisJLyogVGhlIHJhbmdlIGlzIGVtcHR5LCByZXR1cm4gZmFsc2UgKi8KKwlpZiAo Y29sdW1uLT5idl9hbGxudWxscykKKwl7CisJCVBHX1JFVFVSTl9CT09MKGZhbHNlKTsKKwl9CisK KwlmaWx0ZXIgPSAoQmxvb21GaWx0ZXIgKikgUEdfREVUT0FTVF9EQVRVTShjb2x1bW4tPmJ2X3Zh bHVlc1swXSk7CisKKwkvKgorCSAqIENvbXB1dGUgdGhlIGhhc2ggb2YgdGhlIG5ldyB2YWx1ZSwg dXNpbmcgdGhlIHN1cHBsaWVkIGhhc2ggZnVuY3Rpb24sCisJICogYW5kIHRoZW4gY2hlY2sgaWYg Ymxvb20gZmlsdGVyIGNvbnRhaW5zIHRoZSB2YWx1ZS4KKwkgKi8KKwloYXNoRm4gPSBibG9vbV9n ZXRfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBQUk9DTlVNX0hBU0gpOworCisJaGFzaFZhbHVlID0g RGF0dW1HZXRVSW50MzIoRnVuY3Rpb25DYWxsMUNvbGwoaGFzaEZuLCBjb2xsb2lkLCB2YWwpKTsK KworCWNvbnRhaW5zID0gYmxvb21fY29udGFpbnNfdmFsdWUoZmlsdGVyLCBoYXNoVmFsdWUpOwor CisJUEdfUkVUVVJOX0JPT0woY29udGFpbnMpOworfQorCiAvKgogICogR2l2ZW4gYW4gaW5kZXgg dHVwbGUgY29ycmVzcG9uZGluZyB0byBhIGNlcnRhaW4gcGFnZSByYW5nZSBhbmQgYSBzY2FuIGtl eSwKICAqIHJldHVybiB3aGV0aGVyIHRoZSBzY2FuIGtleSBpcyBjb25zaXN0ZW50IHdpdGggdGhl IGluZGV4IHR1cGxlJ3MgYmxvb20KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmlu L2JyaW5faW5jbHVzaW9uLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX2luY2x1c2lv bi5jCmluZGV4IGI4NmNhNTc0NGEzLi4wYjY5ZGEzZGU5MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2JyaW4vYnJpbl9pbmNsdXNpb24uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv YnJpbi9icmluX2luY2x1c2lvbi5jCkBAIC0yMzcsNiArMjM3LDc0IEBAIGJyaW5faW5jbHVzaW9u X2FkZF92YWx1ZShQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9CT09MKHRydWUpOwogfQog CisvKgorICogSWYgdGhlIHBhc3NlZCB2YWx1ZSBpcyBvdXRzaWRlIHRoZSBpbmNsdXNpb24gcmFu Z2UgcmV0dXJuIGZhbHNlLgorICogT3RoZXJ3aXNlLCByZXR1cm4gdHJ1ZS4KKyAqLworRGF0dW0K K2JyaW5faW5jbHVzaW9uX3dpdGhpbl9yYW5nZShQR19GVU5DVElPTl9BUkdTKQoreworCUJyaW5E ZXNjICAgKmJkZXNjID0gKEJyaW5EZXNjICopIFBHX0dFVEFSR19QT0lOVEVSKDApOworCUJyaW5W YWx1ZXMgKmNvbHVtbiA9IChCcmluVmFsdWVzICopIFBHX0dFVEFSR19QT0lOVEVSKDEpOworCURh dHVtCQluZXd2YWwgPSBQR19HRVRBUkdfREFUVU0oMik7CisJYm9vbAkJaXNudWxsIFBHX1VTRURf Rk9SX0FTU0VSVFNfT05MWSA9IFBHX0dFVEFSR19CT09MKDMpOworCU9pZAkJCWNvbGxvaWQgPSBQ R19HRVRfQ09MTEFUSU9OKCk7CisJRm1nckluZm8gICAqZmluZm87CisJYm9vbAkJd2l0aGluX3Jh bmdlOworCUF0dHJOdW1iZXIJYXR0bm87CisKKwlBc3NlcnQoIWlzbnVsbCk7CisKKwlhdHRubyA9 IGNvbHVtbi0+YnZfYXR0bm87CisKKwkvKiBUaGUgcmFuZ2UgaXMgZW1wdHksIHJldHVybiBmYWxz ZSAqLworCWlmIChjb2x1bW4tPmJ2X2FsbG51bGxzKQorCXsKKwkJUEdfUkVUVVJOX0JPT0woZmFs c2UpOworCX0KKworCS8qCisJICogQ29uc2lzdGVudCBmdW5jdGlvbiByZXR1cm5zIFRSVUUgZm9y IGFueSB2YWx1ZSBpZiB0aGUgcmFuZ2UgY29udGFpbnMKKwkgKiB1bm1lcmdlYWJsZSB2YWx1ZXMu IFdlIGZvbGxvdyB0aGUgc2FtZSBsb2dpYyBoZXJlLgorCSAqLworCWlmIChEYXR1bUdldEJvb2wo Y29sdW1uLT5idl92YWx1ZXNbSU5DTFVTSU9OX1VOTUVSR0VBQkxFXSkpCisJCVBHX1JFVFVSTl9C T09MKHRydWUpOworCisJLyoKKwkgKiBJZiB0aGUgb3BjbGFzcyBzdXBwb3J0cyB0aGUgY29uY2Vw dCBvZiBlbXB0eSB2YWx1ZXMsIHRlc3QgdGhlIHBhc3NlZAorCSAqIHZhbHVlIGZvciBlbXB0aW5l c3MKKwkgKi8KKwlmaW5mbyA9IGluY2x1c2lvbl9nZXRfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBQ Uk9DTlVNX0VNUFRZLCB0cnVlKTsKKwlpZiAoZmluZm8gIT0gTlVMTCAmJiBEYXR1bUdldEJvb2wo RnVuY3Rpb25DYWxsMUNvbGwoZmluZm8sIGNvbGxvaWQsIG5ld3ZhbCkpKQorCXsKKwkJLyogVmFs dWUgaXMgZW1wdHkgYnV0IHRoZSByYW5nZSBkb2Vzbid0IGNvbnRhaW4gZW1wdHkgZWxlbWVudCAq LworCQlpZiAoIURhdHVtR2V0Qm9vbChjb2x1bW4tPmJ2X3ZhbHVlc1tJTkNMVVNJT05fQ09OVEFJ TlNfRU1QVFldKSkKKwkJeworCQkJUEdfUkVUVVJOX0JPT0woZmFsc2UpOworCQl9CisKKwkJLyog VmFsdWUgaXMgZW1wdHkgYW5kIHRoZSByYW5nZSBjb250YWlucyBlbXB0eSBlbGVtZW50ICovCisJ CVBHX1JFVFVSTl9CT09MKHRydWUpOworCX0KKworCS8qIFVzZSBjb250YWlucyBmdW5jdGlvbiB0 byBjaGVjayBpZiB0aGUgcmFuZ2UgY29udGFpbnMgdGhlIHZhbHVlICovCisJZmluZm8gPSBpbmNs dXNpb25fZ2V0X3Byb2NpbmZvKGJkZXNjLCBhdHRubywgUFJPQ05VTV9DT05UQUlOUywgdHJ1ZSk7 CisKKwkvKiBDb250YWlucyBmdW5jdGlvbiBpcyBvcHRpb25hbCwgYnV0IHRoaXMgaW1wbGVtZW50 YXRpb24gbmVlZHMgaXQgKi8KKwlpZiAoZmluZm8gPT0gTlVMTCkKKwl7CisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfRlVOQ1RJT04pLAorCQkJCSBlcnJt c2coIlRoZSBvcGVyYXRvciBjbGFzcyBpcyBtaXNzaW5nIHN1cHBvcnQgZnVuY3Rpb24gJWQgZm9y IGNvbHVtbiAlZC4iLAorCQkJCQkJUFJPQ05VTV9DT05UQUlOUywgYXR0bm8pKSk7CisJfQorCisJ d2l0aGluX3JhbmdlID0gRGF0dW1HZXRCb29sKEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZvLCBjb2xs b2lkLAorCQkJCQkJCQkJCQkJICBjb2x1bW4tPmJ2X3ZhbHVlc1tJTkNMVVNJT05fVU5JT05dLAor CQkJCQkJCQkJCQkJICBuZXd2YWwpKTsKKwlQR19SRVRVUk5fQk9PTCh3aXRoaW5fcmFuZ2UpOwor fQorCiAvKgogICogQlJJTiBpbmNsdXNpb24gY29uc2lzdGVudCBmdW5jdGlvbgogICoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heC5jCmluZGV4IGQyMWFiM2E2NjhjLi4zN2E1ZGQxMDNk ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heC5jCkBAIC0xMjQsNiArMTI0LDYz IEBAIGJyaW5fbWlubWF4X2FkZF92YWx1ZShQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9C T09MKHVwZGF0ZWQpOwogfQogCisvKgorICogSWYgdGhlIHBhc3NlZCB2YWx1ZSBpcyBvdXRzaWRl IHRoZSBtaW4vbWF4IHJhbmdlIHJldHVybiBmYWxzZS4KKyAqIE90aGVyd2lzZSwgcmV0dXJuIHRy dWUuCisgKi8KK0RhdHVtCiticmluX21pbm1heF93aXRoaW5fcmFuZ2UoUEdfRlVOQ1RJT05fQVJH UykKK3sKKwlCcmluRGVzYyAgICpiZGVzYyA9IChCcmluRGVzYyAqKSBQR19HRVRBUkdfUE9JTlRF UigwKTsKKwlCcmluVmFsdWVzICpjb2x1bW4gPSAoQnJpblZhbHVlcyAqKSBQR19HRVRBUkdfUE9J TlRFUigxKTsKKwlEYXR1bQkJdmFsID0gUEdfR0VUQVJHX0RBVFVNKDIpOworCWJvb2wJCWlzbnVs bCBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFkgPSBQR19HRVRBUkdfREFUVU0oMyk7CisJT2lkCQkJ Y29sbG9pZCA9IFBHX0dFVF9DT0xMQVRJT04oKTsKKwlGbWdySW5mbyAgICpjbXBGbjsKKwlEYXR1 bQkJY29tcGFyOworCUZvcm1fcGdfYXR0cmlidXRlIGF0dHI7CisJQXR0ck51bWJlcglhdHRubzsK KworCUFzc2VydCghaXNudWxsKTsKKworCWF0dG5vID0gY29sdW1uLT5idl9hdHRubzsKKwlhdHRy ID0gVHVwbGVEZXNjQXR0cihiZGVzYy0+YmRfdHVwZGVzYywgYXR0bm8gLSAxKTsKKworCS8qIFRo ZSByYW5nZSBpcyBlbXB0eSwgcmV0dXJuIGZhbHNlICovCisJaWYgKGNvbHVtbi0+YnZfYWxsbnVs bHMpCisJeworCQlQR19SRVRVUk5fQk9PTChmYWxzZSk7CisJfQorCisJLyogQ2hlY2sgaWYgdGhl IHZhbHVlcyBpcyBsZXNzIHRoYW4gdGhlIHJhbmdlIG1pbmltdW0uICovCisKKwljbXBGbiA9IG1p bm1heF9nZXRfc3RyYXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBhdHRyLT5hdHR0eXBpZCwK KwkJCQkJCQkJCQkgQlRMZXNzU3RyYXRlZ3lOdW1iZXIpOworCisJY29tcGFyID0gRnVuY3Rpb25D YWxsMkNvbGwoY21wRm4sIGNvbGxvaWQsIHZhbCwgY29sdW1uLT5idl92YWx1ZXNbMF0pOworCWlm IChEYXR1bUdldEJvb2woY29tcGFyKSkKKwl7CisJCVBHX1JFVFVSTl9CT09MKGZhbHNlKTsKKwl9 CisKKwkvKiBDaGVjayBpZiB0aGUgdmFsdWVzIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcmFuZ2UgbWF4 aW11bS4gKi8KKworCWNtcEZuID0gbWlubWF4X2dldF9zdHJhdGVneV9wcm9jaW5mbyhiZGVzYywg YXR0bm8sIGF0dHItPmF0dHR5cGlkLAorCQkJCQkJCQkJCSBCVEdyZWF0ZXJTdHJhdGVneU51bWJl cik7CisKKwljb21wYXIgPSBGdW5jdGlvbkNhbGwyQ29sbChjbXBGbiwgY29sbG9pZCwgdmFsLCBj b2x1bW4tPmJ2X3ZhbHVlc1sxXSk7CisJaWYgKERhdHVtR2V0Qm9vbChjb21wYXIpKQorCXsKKwkJ UEdfUkVUVVJOX0JPT0woZmFsc2UpOworCX0KKworCS8qCisJICogVGhlIHZhbHVlIGlzIGdyZWF0 ZXIgdGhhbiAvIGVxdWFscyB0aGUgbWluaW11bSBhbmQgaXMgbGVzcyB0aGFuIC8KKwkgKiBlcXVh bHMgdGhlIG1heGltdW0gc28gaXQncyB3aXRoaW4gdGhlIHJhbmdlCisJICovCisJUEdfUkVUVVJO X0JPT0wodHJ1ZSk7Cit9CisKIC8qCiAgKiBHaXZlbiBhbiBpbmRleCB0dXBsZSBjb3JyZXNwb25k aW5nIHRvIGEgY2VydGFpbiBwYWdlIHJhbmdlIGFuZCBhIHNjYW4ga2V5LAogICogcmV0dXJuIHdo ZXRoZXIgdGhlIHNjYW4ga2V5IGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgaW5kZXggdHVwbGUncyBt aW4vbWF4CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heF9t dWx0aS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXhfbXVsdGkuYwppbmRl eCAwZDE1MDdhMmEzNi4uMjE0MWM0N2JjNzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW5fbWlubWF4X211bHRpLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4v YnJpbl9taW5tYXhfbXVsdGkuYwpAQCAtMjcwLDYgKzI3MCw5IEBAIHR5cGVkZWYgc3RydWN0IGNv bXBhcmVfY29udGV4dAogc3RhdGljIGludAljb21wYXJlX3ZhbHVlcyhjb25zdCB2b2lkICphLCBj b25zdCB2b2lkICpiLCB2b2lkICphcmcpOwogCiAKK3N0YXRpYyBSYW5nZXMgKmRlc2VyaWFsaXpl X3JhbmdlX3ZhbHVlKEJyaW5EZXNjICpiZGVzYywgQnJpblZhbHVlcyAqY29sdW1uLCBPaWQgY29s bG9pZCwgY29uc3QgRm9ybURhdGFfcGdfYXR0cmlidXRlICphdHRyLAorCQkJCQkJCQkJICAgQXR0 ck51bWJlciBhdHRubyk7CisKICNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCiAvKgogICogQ2hl Y2sgdGhhdCB0aGUgb3JkZXIgb2YgdGhlIGFycmF5IHZhbHVlcyBpcyBjb3JyZWN0LCB1c2luZyB0 aGUgY21wCkBAIC0yNDIxLDcgKzI0MjQsNiBAQCBicmluX21pbm1heF9tdWx0aV9hZGRfdmFsdWUo UEdfRlVOQ1RJT05fQVJHUykKIAlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyOwogCUF0dHJOdW1iZXIJ YXR0bm87CiAJUmFuZ2VzCSAgICpyYW5nZXM7Ci0JU2VyaWFsaXplZFJhbmdlcyAqc2VyaWFsaXpl ZCA9IE5VTEw7CiAKIAlBc3NlcnQoIWlzbnVsbCk7CiAKQEAgLTI0ODksNTUgKzI0OTEsMTE5IEBA IGJyaW5fbWlubWF4X211bHRpX2FkZF92YWx1ZShQR19GVU5DVElPTl9BUkdTKQogCX0KIAllbHNl IGlmICghcmFuZ2VzKQogCXsKLQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCXJhbmdlcyA9IGRl c2VyaWFsaXplX3JhbmdlX3ZhbHVlKGJkZXNjLCBjb2x1bW4sIGNvbGxvaWQsIGF0dHIsIGF0dG5v KTsKKwl9CiAKLQkJaW50CQkJbWF4dmFsdWVzOwotCQlCbG9ja051bWJlciBwYWdlc1BlclJhbmdl ID0gQnJpbkdldFBhZ2VzUGVyUmFuZ2UoYmRlc2MtPmJkX2luZGV4KTsKKwkvKgorCSAqIFRyeSB0 byBhZGQgdGhlIG5ldyB2YWx1ZSB0byB0aGUgcmFuZ2UuIFdlIG5lZWQgdG8gdXBkYXRlIHRoZSBt b2RpZmllZAorCSAqIGZsYWcsIHNvIHRoYXQgd2Ugc2VyaWFsaXplIHRoZSB1cGRhdGVkIHN1bW1h cnkgbGF0ZXIuCisJICovCisJbW9kaWZpZWQgfD0gcmFuZ2VfYWRkX3ZhbHVlKGJkZXNjLCBjb2xs b2lkLCBhdHRubywgYXR0ciwgcmFuZ2VzLCBuZXd2YWwpOwogCi0JCW9sZGN0eCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyhjb2x1bW4tPmJ2X2NvbnRleHQpOwogCi0JCXNlcmlhbGl6ZWQgPSAoU2Vy aWFsaXplZFJhbmdlcyAqKSBQR19ERVRPQVNUX0RBVFVNKGNvbHVtbi0+YnZfdmFsdWVzWzBdKTsK KwlQR19SRVRVUk5fQk9PTChtb2RpZmllZCk7Cit9CiAKLQkJLyoKLQkJICogRGV0ZXJtaW5lIHRo ZSBpbnNlcnQgYnVmZmVyIHNpemUgLSB3ZSB1c2UgMTB4IHRoZSB0YXJnZXQsIGNhcHBlZCB0bwot CQkgKiB0aGUgbWF4aW11bSBudW1iZXIgb2YgdmFsdWVzIGluIHRoZSBoZWFwIHJhbmdlLiBUaGlz IGlzIG1vcmUgdGhhbgotCQkgKiBlbm91Z2gsIGNvbnNpZGVyaW5nIHRoZSBhY3R1YWwgbnVtYmVy IG9mIHJvd3MgcGVyIHBhZ2UgaXMgbGlrZWx5Ci0JCSAqIG11Y2ggbG93ZXIsIGJ1dCBtZWguCi0J CSAqLwotCQltYXh2YWx1ZXMgPSBNaW4oc2VyaWFsaXplZC0+bWF4dmFsdWVzICogTUlOTUFYX0JV RkZFUl9GQUNUT1IsCi0JCQkJCQlNYXhIZWFwVHVwbGVzUGVyUGFnZSAqIHBhZ2VzUGVyUmFuZ2Up OwogCi0JCS8qIGJ1dCBhbHdheXMgYXQgbGVhc3QgdGhlIG9yaWdpbmFsIHZhbHVlICovCi0JCW1h eHZhbHVlcyA9IE1heChtYXh2YWx1ZXMsIHNlcmlhbGl6ZWQtPm1heHZhbHVlcyk7CisvKgorICog RGVzZXJpYWxpemUgcmFuZ2UgdmFsdWUgYW5kIHNhdmUgaXQgaW4gYmRlc2MtPmJ2X21lbV92YWx1 ZSBmb3IgZnV0dXJlIHVzZQorICovCitSYW5nZXMgKgorZGVzZXJpYWxpemVfcmFuZ2VfdmFsdWUo QnJpbkRlc2MgKmJkZXNjLCBCcmluVmFsdWVzICpjb2x1bW4sIE9pZCBjb2xsb2lkLCBjb25zdCBG b3JtRGF0YV9wZ19hdHRyaWJ1dGUgKmF0dHIsCisJCQkJCQlBdHRyTnVtYmVyIGF0dG5vKQorewor CU1lbW9yeUNvbnRleHQgb2xkY3R4OworCVNlcmlhbGl6ZWRSYW5nZXMgKnNlcmlhbGl6ZWQgPSBO VUxMOworCVJhbmdlcwkgICAqcmFuZ2VzOwogCi0JCS8qIGFsd2F5cyBjYXAgYnkgTUlOL01BWCAq LwotCQltYXh2YWx1ZXMgPSBNYXgobWF4dmFsdWVzLCBNSU5NQVhfQlVGRkVSX01JTik7Ci0JCW1h eHZhbHVlcyA9IE1pbihtYXh2YWx1ZXMsIE1JTk1BWF9CVUZGRVJfTUFYKTsKKwlpbnQJCQltYXh2 YWx1ZXM7CisJQmxvY2tOdW1iZXIgcGFnZXNQZXJSYW5nZSA9IEJyaW5HZXRQYWdlc1BlclJhbmdl KGJkZXNjLT5iZF9pbmRleCk7CiAKLQkJcmFuZ2VzID0gYnJpbl9yYW5nZV9kZXNlcmlhbGl6ZSht YXh2YWx1ZXMsIHNlcmlhbGl6ZWQpOworCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhj b2x1bW4tPmJ2X2NvbnRleHQpOwogCi0JCXJhbmdlcy0+YXR0bm8gPSBhdHRubzsKLQkJcmFuZ2Vz LT5jb2xsb2lkID0gY29sbG9pZDsKLQkJcmFuZ2VzLT50eXBpZCA9IGF0dHItPmF0dHR5cGlkOwor CXNlcmlhbGl6ZWQgPSAoU2VyaWFsaXplZFJhbmdlcyAqKSBQR19ERVRPQVNUX0RBVFVNKGNvbHVt bi0+YnZfdmFsdWVzWzBdKTsKIAotCQkvKiB3ZSdsbCBjZXJ0YWlubHkgbmVlZCB0aGUgY29tcGFy YXRvciwgc28ganVzdCBsb29rIGl0IHVwIG5vdyAqLwotCQlyYW5nZXMtPmNtcCA9IG1pbm1heF9t dWx0aV9nZXRfc3RyYXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBhdHRyLT5hdHR0eXBpZCwK LQkJCQkJCQkJCQkJCQkJIEJUTGVzc1N0cmF0ZWd5TnVtYmVyKTsKKwkvKgorCSAqIERldGVybWlu ZSB0aGUgaW5zZXJ0IGJ1ZmZlciBzaXplIC0gd2UgdXNlIDEweCB0aGUgdGFyZ2V0LCBjYXBwZWQg dG8gdGhlCisJICogbWF4aW11bSBudW1iZXIgb2YgdmFsdWVzIGluIHRoZSBoZWFwIHJhbmdlLiBU aGlzIGlzIG1vcmUgdGhhbiBlbm91Z2gsCisJICogY29uc2lkZXJpbmcgdGhlIGFjdHVhbCBudW1i ZXIgb2Ygcm93cyBwZXIgcGFnZSBpcyBsaWtlbHkgbXVjaCBsb3dlciwKKwkgKiBidXQgbWVoLgor CSAqLworCW1heHZhbHVlcyA9IE1pbihzZXJpYWxpemVkLT5tYXh2YWx1ZXMgKiBNSU5NQVhfQlVG RkVSX0ZBQ1RPUiwKKwkJCQkJTWF4SGVhcFR1cGxlc1BlclBhZ2UgKiBwYWdlc1BlclJhbmdlKTsK IAotCQljb2x1bW4tPmJ2X21lbV92YWx1ZSA9IFBvaW50ZXJHZXREYXR1bShyYW5nZXMpOwotCQlj b2x1bW4tPmJ2X3NlcmlhbGl6ZSA9IGJyaW5fbWlubWF4X211bHRpX3NlcmlhbGl6ZTsKKwkvKiBi dXQgYWx3YXlzIGF0IGxlYXN0IHRoZSBvcmlnaW5hbCB2YWx1ZSAqLworCW1heHZhbHVlcyA9IE1h eChtYXh2YWx1ZXMsIHNlcmlhbGl6ZWQtPm1heHZhbHVlcyk7CiAKLQkJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGN0eCk7CisJLyogYWx3YXlzIGNhcCBieSBNSU4vTUFYICovCisJbWF4dmFsdWVz ID0gTWF4KG1heHZhbHVlcywgTUlOTUFYX0JVRkZFUl9NSU4pOworCW1heHZhbHVlcyA9IE1pbiht YXh2YWx1ZXMsIE1JTk1BWF9CVUZGRVJfTUFYKTsKKworCXJhbmdlcyA9IGJyaW5fcmFuZ2VfZGVz ZXJpYWxpemUobWF4dmFsdWVzLCBzZXJpYWxpemVkKTsKKworCXJhbmdlcy0+YXR0bm8gPSBhdHRu bzsKKwlyYW5nZXMtPmNvbGxvaWQgPSBjb2xsb2lkOworCXJhbmdlcy0+dHlwaWQgPSBhdHRyLT5h dHR0eXBpZDsKKworCS8qIHdlJ2xsIGNlcnRhaW5seSBuZWVkIHRoZSBjb21wYXJhdG9yLCBzbyBq dXN0IGxvb2sgaXQgdXAgbm93ICovCisJcmFuZ2VzLT5jbXAgPSBtaW5tYXhfbXVsdGlfZ2V0X3N0 cmF0ZWd5X3Byb2NpbmZvKGJkZXNjLCBhdHRubywgYXR0ci0+YXR0dHlwaWQsCisJCQkJCQkJCQkJ CQkJIEJUTGVzc1N0cmF0ZWd5TnVtYmVyKTsKKworCWNvbHVtbi0+YnZfbWVtX3ZhbHVlID0gUG9p bnRlckdldERhdHVtKHJhbmdlcyk7CisJY29sdW1uLT5idl9zZXJpYWxpemUgPSBicmluX21pbm1h eF9tdWx0aV9zZXJpYWxpemU7CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwor CXJldHVybiByYW5nZXM7Cit9CisKKy8qCisgKiBJZiB0aGUgcGFzc2VkIHZhbHVlIGlzIG91dHNp ZGUgdGhlIG1pbm1heF9tdWx0aSByYW5nZSByZXR1cm4gZmFsc2UuCisgKiBPdGhlcndpc2UsIHJl dHVybiB0cnVlLgorICovCitEYXR1bQorYnJpbl9taW5tYXhfbXVsdGlfd2l0aGluX3JhbmdlKFBH X0ZVTkNUSU9OX0FSR1MpCit7CisJQnJpbkRlc2MgICAqYmRlc2MgPSAoQnJpbkRlc2MgKikgUEdf R0VUQVJHX1BPSU5URVIoMCk7CisJQnJpblZhbHVlcyAqY29sdW1uID0gKEJyaW5WYWx1ZXMgKikg UEdfR0VUQVJHX1BPSU5URVIoMSk7CisJRGF0dW0JCXZhbCA9IFBHX0dFVEFSR19EQVRVTSgyKTsK Kwlib29sCQlpc251bGwgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZID0gUEdfR0VUQVJHX0RBVFVN KDMpOworCU9pZAkJCWNvbGxvaWQgPSBQR19HRVRfQ09MTEFUSU9OKCk7CisJYm9vbAkJY29udGFp bnMgPSBmYWxzZTsKKwlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyOworCUF0dHJOdW1iZXIJYXR0bm87 CisJUmFuZ2VzCSAgICpyYW5nZXM7CisJRm1nckluZm8gICAqY21wRm47CisKKwlBc3NlcnQoIWlz bnVsbCk7CisKKwlhdHRubyA9IGNvbHVtbi0+YnZfYXR0bm87CisJYXR0ciA9IFR1cGxlRGVzY0F0 dHIoYmRlc2MtPmJkX3R1cGRlc2MsIGF0dG5vIC0gMSk7CisKKwkvKiB1c2UgdGhlIGFscmVhZHkg ZGVzZXJpYWxpemVkIHZhbHVlLCBpZiBwb3NzaWJsZSAqLworCXJhbmdlcyA9IChSYW5nZXMgKikg RGF0dW1HZXRQb2ludGVyKGNvbHVtbi0+YnZfbWVtX3ZhbHVlKTsKKworCS8qIFRoZSByYW5nZSBp cyBlbXB0eSwgcmV0dXJuIGZhbHNlICovCisJaWYgKGNvbHVtbi0+YnZfYWxsbnVsbHMpCisJewor CQlQR19SRVRVUk5fQk9PTChmYWxzZSk7CisJfQorCWVsc2UgaWYgKCFyYW5nZXMpCisJeworCQly YW5nZXMgPSBkZXNlcmlhbGl6ZV9yYW5nZV92YWx1ZShiZGVzYywgY29sdW1uLCBjb2xsb2lkLCBh dHRyLCBhdHRubyk7CiAJfQogCi0JLyoKLQkgKiBUcnkgdG8gYWRkIHRoZSBuZXcgdmFsdWUgdG8g dGhlIHJhbmdlLiBXZSBuZWVkIHRvIHVwZGF0ZSB0aGUgbW9kaWZpZWQKLQkgKiBmbGFnLCBzbyB0 aGF0IHdlIHNlcmlhbGl6ZSB0aGUgdXBkYXRlZCBzdW1tYXJ5IGxhdGVyLgotCSAqLwotCW1vZGlm aWVkIHw9IHJhbmdlX2FkZF92YWx1ZShiZGVzYywgY29sbG9pZCwgYXR0bm8sIGF0dHIsIHJhbmdl cywgbmV3dmFsKTsKKwkvKiB3ZSdsbCBjZXJ0YWlubHkgbmVlZCB0aGUgY29tcGFyYXRvciwgc28g anVzdCBsb29rIGl0IHVwIG5vdyAqLworCWNtcEZuID0gbWlubWF4X211bHRpX2dldF9zdHJhdGVn eV9wcm9jaW5mbyhiZGVzYywgYXR0bm8sIGF0dHItPmF0dHR5cGlkLAorCQkJCQkJCQkJCQkgICBC VExlc3NTdHJhdGVneU51bWJlcik7CiAKKwkvKiBjb21wcmVoZW5zaXZlIGNoZWNrcyBvZiB0aGUg aW5wdXQgcmFuZ2VzICovCisJQXNzZXJ0Q2hlY2tSYW5nZXMocmFuZ2VzLCBjbXBGbiwgY29sbG9p ZCk7CiAKLQlQR19SRVRVUk5fQk9PTChtb2RpZmllZCk7CisJLyogVXNlICdmdWxsID0gdHJ1ZScg aGVyZSwgYXMgd2UgZG9uJ3Qgd2FudCBhbnkgZmFsc2UgbmVnYXRpdmVzICovCisJY29udGFpbnMg PSByYW5nZV9jb250YWluc192YWx1ZShiZGVzYywgY29sbG9pZCwgYXR0bm8sIGF0dHIsIHJhbmdl cywgdmFsLCB0cnVlKTsKKworCVBHX1JFVFVSTl9CT09MKGNvbnRhaW5zKTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluX2ludGVybmFsLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvYnJpbl9pbnRlcm5hbC5oCmluZGV4IGQwOTNhMGJmMTMwLi41ZGY4Nzc2MWNmMSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5faW50ZXJuYWwuaAorKysgYi9zcmMv aW5jbHVkZS9hY2Nlc3MvYnJpbl9pbnRlcm5hbC5oCkBAIC02NywxMiArNjcsMTMgQEAgdHlwZWRl ZiBzdHJ1Y3QgQnJpbkRlc2MKICAqIG9wY2xhc3NlcyBjYW4gZGVmaW5lIG1vcmUgZnVuY3Rpb24g c3VwcG9ydCBudW1iZXJzLCB3aGljaCBtdXN0IGZhbGwgaW50bwogICogQlJJTl9GSVJTVF9PUFRJ T05BTF9QUk9DTlVNIC4uIEJSSU5fTEFTVF9PUFRJT05BTF9QUk9DTlVNLgogICovCi0jZGVmaW5l IEJSSU5fUFJPQ05VTV9PUENJTkZPCQkxCi0jZGVmaW5lIEJSSU5fUFJPQ05VTV9BRERWQUxVRQkJ MgotI2RlZmluZSBCUklOX1BST0NOVU1fQ09OU0lTVEVOVAkJMwotI2RlZmluZSBCUklOX1BST0NO VU1fVU5JT04JCQk0Ci0jZGVmaW5lIEJSSU5fTUFOREFUT1JZX05QUk9DUwkJNAotI2RlZmluZSBC UklOX1BST0NOVU1fT1BUSU9OUyAJCTUJLyogb3B0aW9uYWwgKi8KKyNkZWZpbmUgQlJJTl9QUk9D TlVNX09QQ0lORk8JCSAgICAxCisjZGVmaW5lIEJSSU5fUFJPQ05VTV9BRERWQUxVRQkJICAgIDIK KyNkZWZpbmUgQlJJTl9QUk9DTlVNX0NPTlNJU1RFTlQJCSAgICAzCisjZGVmaW5lIEJSSU5fUFJP Q05VTV9VTklPTgkJCSAgICA0CisjZGVmaW5lIEJSSU5fTUFOREFUT1JZX05QUk9DUwkJICAgIDQK KyNkZWZpbmUgQlJJTl9QUk9DTlVNX09QVElPTlMgCQkgICAgNQkvKiBvcHRpb25hbCAqLworI2Rl ZmluZSBCUklOX1BST0NOVU1fV0lUSElOUkFOR0UgCQk2CS8qIG9wdGlvbmFsICovCiAvKiBwcm9j ZWR1cmUgbnVtYmVycyB1cCB0byAxMCBhcmUgcmVzZXJ2ZWQgZm9yIEJSSU4gZnV0dXJlIGV4cGFu c2lvbiAqLwogI2RlZmluZSBCUklOX0ZJUlNUX09QVElPTkFMX1BST0NOVU0gMTEKICNkZWZpbmUg QlJJTl9MQVNUX09QVElPTkFMX1BST0NOVU0JMTUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfYW1wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdApp bmRleCBlMzQ3NzUwMGJhYS4uYzM5NDdiYmM0MTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfYW1wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5k YXQKQEAgLTg0Nyw2ICs4NDcsOSBAQAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X2NvbnNpc3Rl bnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9ieXRlYV9taW5tYXhfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2J5dGVhJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdieXRlYScsIGFtcHJv Y251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi9ieXRlYV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2J5dGVh JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdieXRlYScsIGFtcHJvY251bSA9PiAnNicsCisgIGFt cHJvYyA9PiAnYnJpbl9taW5tYXhfd2l0aGluX3JhbmdlJyB9LAogCiAjIGJsb29tIGJ5dGVhCiB7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9ieXRlYV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAnYnl0ZWEnLApAQCAtODYzLDYgKzg2Niw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9i eXRlYV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYnl0ZWEnLAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ2J5dGVhJywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1wcm9jID0+ICdicmluX2Js b29tX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9ieXRlYV9ibG9vbV9vcHMn LCBhbXByb2NsZWZ0dHlwZSA9PiAnYnl0ZWEnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2J5dGVh JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3dpdGhpbl9yYW5n ZScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2J5dGVhX2Jsb29tX29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICdieXRlYScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYnl0ZWEnLCBhbXByb2Nu dW0gPT4gJzExJywgYW1wcm9jID0+ICdoYXNoYnl0ZWEnIH0sCiAKQEAgLTg3OCw2ICs4ODQsOSBA QAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi9jaGFyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnY2hhcicsCiAg IGFtcHJvY3JpZ2h0dHlwZSA9PiAnY2hhcicsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAn YnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9jaGFyX21pbm1h eF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnY2hhcicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn Y2hhcicsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfd2l0aGlu X3JhbmdlJyB9LAogCiAjIGJsb29tICJjaGFyIgogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vY2hh cl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnY2hhcicsCkBAIC04OTIsNiArOTAxLDkg QEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdjaGFyJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9j ID0+ICdicmluX2Jsb29tX3VuaW9uJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vY2hhcl9i bG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnY2hhcicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAnY2hhcicsIGFtcHJvY251bSA9PiAnNScsIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9vcHRpb25z JyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vY2hhcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnY2hhcicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnY2hhcicsIGFtcHJvY251bSA9 PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV93aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi9jaGFyX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdjaGFy JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdjaGFyJywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJv YyA9PiAnaGFzaGNoYXInIH0sCiAKQEAgLTkwNyw2ICs5MTksOSBAQAogICBhbXByb2MgPT4gJ2Jy aW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uYW1lX21p bm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbmFtZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAnbmFtZScsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24n IH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uYW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnbmFtZScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbmFtZScsIGFtcHJvY251bSA9 PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfd2l0aGluX3JhbmdlJyB9LAogCiAjIGJs b29tIG5hbWUKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL25hbWVfYmxvb21fb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ25hbWUnLApAQCAtOTIxLDYgKzkzNiw5IEBACiAgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnbmFtZScsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV91bmlv bicgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL25hbWVfYmxvb21fb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ25hbWUnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ25hbWUnLCBhbXByb2NudW0g PT4gJzUnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21fb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5 ID0+ICdicmluL25hbWVfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ25hbWUnLAorICBh bXByb2NyaWdodHR5cGUgPT4gJ25hbWUnLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4g J2JyaW5fYmxvb21fd2l0aGluX3JhbmdlJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmFt ZV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbmFtZScsCiAgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnbmFtZScsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2hhc2huYW1lJyB9LAog CkBAIC05MzYsNiArOTU0LDkgQEAKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9jb25zaXN0ZW50 JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2ludDgnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDgnLCBhbXByb2Nu dW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDgn LAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDgnLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXBy b2MgPT4gJ2JyaW5fbWlubWF4X3dpdGhpbl9yYW5nZScgfSwKIAogeyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vaW50ZWdlcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDInLAogICBh bXByb2NyaWdodHR5cGUgPT4gJ2ludDInLCBhbXByb2NudW0gPT4gJzEnLApAQCAtOTQ4LDYgKzk2 OSw5IEBACiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfY29uc2lzdGVudCcgfSwKIHsgYW1wcm9j ZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdp bnQyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQyJywgYW1wcm9jbnVtID0+ICc0JywgYW1w cm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2lu dGVnZXJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQyJywKKyAgYW1wcm9jcmln aHR0eXBlID0+ICdpbnQyJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21p bm1heF93aXRoaW5fcmFuZ2UnIH0sCiAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJf bWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQ0JywKICAgYW1wcm9jcmlnaHR0eXBl ID0+ICdpbnQ0JywgYW1wcm9jbnVtID0+ICcxJywKQEAgLTk2MCw2ICs5ODQsOSBAQAogICBhbXBy b2MgPT4gJ2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi9pbnRlZ2VyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50NCcsCiAgIGFtcHJv Y3JpZ2h0dHlwZSA9PiAnaW50NCcsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50NCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50 NCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfd2l0aGluX3Jh bmdlJyB9LAogCiAjIG1pbm1heCBtdWx0aSBpbnRlZ2VyOiBpbnQyLCBpbnQ0LCBpbnQ4CiB7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnaW50MicsCkBAIC05NzcsNiArMTAwNCw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi9pbnRlZ2VyX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50Mics CiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50MicsIGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJv YyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdi cmluL2ludGVnZXJfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQyJywK KyAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQyJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9j ID0+ICdicmluX21pbm1heF9tdWx0aV93aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50 MicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50MicsIGFtcHJvY251bSA9PiAnMTEnLAogICBh bXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX2Rpc3RhbmNlX2ludDInIH0sCkBAIC05OTYsNiAr MTAyNiw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9tdWx0aV9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50NCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50 NCcsIGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0 aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlubWF4X211bHRpX29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQ0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ0 JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV93aXRo aW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9tdWx0 aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50NCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn aW50NCcsIGFtcHJvY251bSA9PiAnMTEnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRp X2Rpc3RhbmNlX2ludDQnIH0sCkBAIC0xMDE1LDYgKzEwNDgsOSBAQAogeyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2lu dDgnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDgnLCBhbXByb2NudW0gPT4gJzUnLAogICBh bXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50 OCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50OCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFt cHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfd2l0aGluX3JhbmdlJyB9LAogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4g J2ludDgnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDgnLCBhbXByb2NudW0gPT4gJzExJywK ICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV9pbnQ4JyB9LApAQCAtMTAz Miw2ICsxMDY4LDkgQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ4JywgYW1wcm9jbnVtID0+ ICc0JywgYW1wcm9jID0+ICdicmluX2Jsb29tX3VuaW9uJyB9LAogeyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vaW50ZWdlcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50OCcsCiAgIGFt cHJvY3JpZ2h0dHlwZSA9PiAnaW50OCcsIGFtcHJvY251bSA9PiAnNScsIGFtcHJvYyA9PiAnYnJp bl9ibG9vbV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9ibG9v bV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50OCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn aW50OCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV93aXRoaW5f cmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX2Jsb29tX29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICdpbnQ4JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ4JywgYW1w cm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnaGFzaGludDgnIH0sCiAKQEAgLTEwNDcsNiArMTA4 Niw5IEBACiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50MicsIGFtcHJvY251bSA9PiAnNCcsIGFt cHJvYyA9PiAnYnJpbl9ibG9vbV91bmlvbicgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2lu dGVnZXJfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDInLAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ2ludDInLCBhbXByb2NudW0gPT4gJzUnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21f b3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfYmxvb21fb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ2ludDInLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDInLCBh bXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fYmxvb21fd2l0aGluX3JhbmdlJyB9 LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnaW50MicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50MicsIGFtcHJvY251bSA9 PiAnMTEnLCBhbXByb2MgPT4gJ2hhc2hpbnQyJyB9LAogCkBAIC0xMDYyLDYgKzExMDQsOSBAQAog ICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4g J2JyaW5fYmxvb21fdW5pb24nIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX2Js b29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQ0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdpbnQ0JywgYW1wcm9jbnVtID0+ICc1JywgYW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMn IH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX2Jsb29tX29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICdpbnQ0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ0JywgYW1wcm9jbnVt ID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3dpdGhpbl9yYW5nZScgfSwKIHsgYW1w cm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4g J2ludDQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDQnLCBhbXByb2NudW0gPT4gJzExJywg YW1wcm9jID0+ICdoYXNoaW50NCcgfSwKIApAQCAtMTA3Nyw2ICsxMTIyLDkgQEAKICAgYW1wcm9j ID0+ICdicmluX21pbm1heF9jb25zaXN0ZW50JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v dGV4dF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RleHQnLAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ3RleHQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4 X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGV4dF9taW5tYXhfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ3RleHQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3RleHQnLCBhbXBy b2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3dpdGhpbl9yYW5nZScgfSwK IAogIyBibG9vbSB0ZXh0CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90ZXh0X2Jsb29tX29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICd0ZXh0JywKQEAgLTEwOTEsNiArMTEzOSw5IEBACiAgIGFtcHJv Y3JpZ2h0dHlwZSA9PiAndGV4dCcsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9i bG9vbV91bmlvbicgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RleHRfYmxvb21fb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ3RleHQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RleHQnLCBh bXByb2NudW0gPT4gJzUnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21fb3B0aW9ucycgfSwKK3sgYW1w cm9jZmFtaWx5ID0+ICdicmluL3RleHRfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3Rl eHQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3RleHQnLCBhbXByb2NudW0gPT4gJzYnLAorICBh bXByb2MgPT4gJ2JyaW5fYmxvb21fd2l0aGluX3JhbmdlJyB9LAogeyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vdGV4dF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGV4dCcsCiAgIGFtcHJv Y3JpZ2h0dHlwZSA9PiAndGV4dCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2hhc2h0 ZXh0JyB9LAogCkBAIC0xMTA1LDYgKzExNTYsOSBAQAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4 X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9vaWRfbWlubWF4X29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICdvaWQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ29pZCcsIGFt cHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi9vaWRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdvaWQn LAorICBhbXByb2NyaWdodHR5cGUgPT4gJ29pZCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJv YyA9PiAnYnJpbl9taW5tYXhfd2l0aGluX3JhbmdlJyB9LAogCiAjIG1pbm1heCBtdWx0aSBvaWQK IHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL29pZF9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ29pZCcsCkBAIC0xMTIyLDYgKzExNzYsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vb2lkX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnb2lkJywKICAg YW1wcm9jcmlnaHR0eXBlID0+ICdvaWQnLCBhbXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4g J2JyaW5fbWlubWF4X211bHRpX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9v aWRfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdvaWQnLAorICBhbXByb2Ny aWdodHR5cGUgPT4gJ29pZCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfbXVsdGlfd2l0aGluX3JhbmdlJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vb2lk X21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnb2lkJywKICAgYW1wcm9jcmln aHR0eXBlID0+ICdvaWQnLCBhbXByb2NudW0gPT4gJzExJywKICAgYW1wcm9jID0+ICdicmluX21p bm1heF9tdWx0aV9kaXN0YW5jZV9pbnQ0JyB9LApAQCAtMTEzOSw2ICsxMTk2LDkgQEAKICAgYW1w cm9jcmlnaHR0eXBlID0+ICdvaWQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5f Ymxvb21fdW5pb24nIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9vaWRfYmxvb21fb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ29pZCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnb2lkJywgYW1w cm9jbnVtID0+ICc1JywgYW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0sCit7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi9vaWRfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ29pZCcs CisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnb2lkJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9j ID0+ICdicmluX2Jsb29tX3dpdGhpbl9yYW5nZScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmlu L29pZF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnb2lkJywKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICdvaWQnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdoYXNob2lkJyB9LAog CkBAIC0xMTUzLDYgKzEyMTMsOSBAQAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X2NvbnNpc3Rl bnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aWRfbWlubWF4X29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICd0aWQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpZCcsIGFtcHJvY251bSA9 PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi90aWRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aWQnLAorICBhbXBy b2NyaWdodHR5cGUgPT4gJ3RpZCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJp bl9taW5tYXhfd2l0aGluX3JhbmdlJyB9LAogCiAjIGJsb29tIHRpZAogeyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vdGlkX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aWQnLApAQCAtMTE2 Nyw2ICsxMjMwLDkgQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aWQnLCBhbXByb2NudW0gPT4g JzQnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21fdW5pb24nIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi90aWRfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpZCcsCiAgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAndGlkJywgYW1wcm9jbnVtID0+ICc1JywgYW1wcm9jID0+ICdicmluX2Jsb29t X29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aWRfYmxvb21fb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ3RpZCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGlkJywgYW1wcm9j bnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3dpdGhpbl9yYW5nZScgfSwKIHsg YW1wcm9jZmFtaWx5ID0+ICdicmluL3RpZF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn dGlkJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aWQnLCBhbXByb2NudW0gPT4gJzExJywgYW1w cm9jID0+ICdoYXNodGlkJyB9LAogCkBAIC0xMTg2LDYgKzEyNTIsOSBAQAogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vdGlkX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGlk JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aWQnLCBhbXByb2NudW0gPT4gJzUnLAogICBhbXBy b2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi90aWRfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aWQnLAorICBh bXByb2NyaWdodHR5cGUgPT4gJ3RpZCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAn YnJpbl9taW5tYXhfbXVsdGlfd2l0aGluX3JhbmdlJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vdGlkX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGlkJywKICAgYW1w cm9jcmlnaHR0eXBlID0+ICd0aWQnLCBhbXByb2NudW0gPT4gJzExJywKICAgYW1wcm9jID0+ICdi cmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV90aWQnIH0sCkBAIC0xMjAzLDYgKzEyNzIsOSBAQAog eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdmbG9hdDQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0NCcsIGFtcHJvY251bSA9 PiAnNCcsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi9mbG9hdF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2Zsb2F0NCcs CisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZmxvYXQ0JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1w cm9jID0+ICdicmluX21pbm1heF93aXRoaW5fcmFuZ2UnIH0sCiAKIHsgYW1wcm9jZmFtaWx5ID0+ ICdicmluL2Zsb2F0X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxvYXQ4JywKICAg YW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDgnLCBhbXByb2NudW0gPT4gJzEnLApAQCAtMTIxNiw2 ICsxMjg4LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0X21pbm1heF9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAnZmxvYXQ4JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDgn LCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAor eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdmbG9hdDgnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0OCcsIGFtcHJvY251bSA9 PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfd2l0aGluX3JhbmdlJyB9LAogCiAjIG1p bm1heCBtdWx0aSBmbG9hdAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfbWlubWF4X211 bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDQnLApAQCAtMTIzMyw2ICsxMzA4LDkg QEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0X21pbm1heF9tdWx0aV9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAnZmxvYXQ0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDQnLCBh bXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlvbnMn IH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9taW5tYXhfbXVsdGlfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2Zsb2F0NCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZmxvYXQ0Jywg YW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV93aXRoaW5f cmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9taW5tYXhfbXVsdGlfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ2Zsb2F0NCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZmxv YXQ0JywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlf ZGlzdGFuY2VfZmxvYXQ0JyB9LApAQCAtMTI1Miw2ICsxMzMwLDkgQEAKIHsgYW1wcm9jZmFtaWx5 ID0+ICdicmluL2Zsb2F0X21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxv YXQ4JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDgnLCBhbXByb2NudW0gPT4gJzUnLAog ICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi9mbG9hdF9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2Zs b2F0OCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZmxvYXQ4JywgYW1wcm9jbnVtID0+ICc2JywK KyAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV93aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUg PT4gJ2Zsb2F0OCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZmxvYXQ4JywgYW1wcm9jbnVtID0+ ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfZGlzdGFuY2VfZmxvYXQ4JyB9 LApAQCAtMTI3MSw2ICsxMzUyLDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0X2Js b29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDQnLAogICBhbXByb2NyaWdodHR5cGUg PT4gJ2Zsb2F0NCcsIGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9v cHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfYmxvb21fb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2Zsb2F0NCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZmxvYXQ0Jywg YW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3dpdGhpbl9yYW5nZScg fSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0X2Jsb29tX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdmbG9hdDQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0NCcsIGFtcHJvY251 bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2hhc2hmbG9hdDQnIH0sCiAKQEAgLTEyODgsNiArMTM3Miw5 IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnZmxvYXQ4JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDgnLCBhbXByb2Nu dW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fYmxvb21fb3B0aW9ucycgfSwKK3sgYW1wcm9j ZmFtaWx5ID0+ICdicmluL2Zsb2F0X2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9h dDgnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0OCcsIGFtcHJvY251bSA9PiAnNicsCisg IGFtcHJvYyA9PiAnYnJpbl9ibG9vbV93aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi9mbG9hdF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxvYXQ4JywKICAg YW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDgnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ ICdoYXNoZmxvYXQ4JyB9LAogCkBAIC0xMzA0LDYgKzEzOTEsOSBAQAogeyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vbWFjYWRkcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHIn LAogICBhbXByb2NyaWdodHR5cGUgPT4gJ21hY2FkZHInLCBhbXByb2NudW0gPT4gJzQnLAogICBh bXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v bWFjYWRkcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHInLAorICBhbXBy b2NyaWdodHR5cGUgPT4gJ21hY2FkZHInLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4g J2JyaW5fbWlubWF4X3dpdGhpbl9yYW5nZScgfSwKIAogIyBtaW5tYXggbXVsdGkgbWFjYWRkcgog eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcl9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ21hY2FkZHInLApAQCAtMTMyMSw2ICsxNDExLDkgQEAKIHsgYW1wcm9jZmFt aWx5ID0+ICdicmluL21hY2FkZHJfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICdtYWNhZGRyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdtYWNhZGRyJywgYW1wcm9jbnVtID0+ ICc1JywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9vcHRpb25zJyB9LAoreyBhbXBy b2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcl9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ21hY2FkZHInLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ21hY2FkZHInLCBhbXByb2Nu dW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX3dpdGhpbl9yYW5nZScg fSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL21hY2FkZHJfbWlubWF4X211bHRpX29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdtYWNhZGRy JywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfZGlz dGFuY2VfbWFjYWRkcicgfSwKQEAgLTEzNDEsNiArMTQzNCw5IEBACiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi9tYWNhZGRyX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyJywK ICAgYW1wcm9jcmlnaHR0eXBlID0+ICdtYWNhZGRyJywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1w cm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9t YWNhZGRyX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyJywKKyAgYW1wcm9j cmlnaHR0eXBlID0+ICdtYWNhZGRyJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdi cmluX2Jsb29tX3dpdGhpbl9yYW5nZScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL21hY2Fk ZHJfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHInLAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ21hY2FkZHInLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdoYXNobWFj YWRkcicgfSwKIApAQCAtMTM1Nyw2ICsxNDUzLDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmlu L21hY2FkZHI4X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbWFjYWRkcjgnLAogICBh bXByb2NyaWdodHR5cGUgPT4gJ21hY2FkZHI4JywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9j ID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL21hY2Fk ZHI4X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbWFjYWRkcjgnLAorICBhbXByb2Ny aWdodHR5cGUgPT4gJ21hY2FkZHI4JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdi cmluX21pbm1heF93aXRoaW5fcmFuZ2UnIH0sCiAKICMgbWlubWF4IG11bHRpIG1hY2FkZHI4CiB7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9tYWNhZGRyOF9taW5tYXhfbXVsdGlfb3BzJywKQEAgLTEz NzQsNiArMTQ3Myw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9tYWNhZGRyOF9taW5tYXhf bXVsdGlfb3BzJywKICAgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHI4JywgYW1wcm9jcmlnaHR0 eXBlID0+ICdtYWNhZGRyOCcsIGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL21hY2FkZHI4 X21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbWFjYWRkcjgnLAorICBhbXBy b2NyaWdodHR5cGUgPT4gJ21hY2FkZHI4JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ ICdicmluX21pbm1heF9tdWx0aV93aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi9tYWNhZGRyOF9taW5tYXhfbXVsdGlfb3BzJywKICAgYW1wcm9jbGVmdHR5cGUgPT4gJ21h Y2FkZHI4JywgYW1wcm9jcmlnaHR0eXBlID0+ICdtYWNhZGRyOCcsCiAgIGFtcHJvY251bSA9PiAn MTEnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX2Rpc3RhbmNlX21hY2FkZHI4JyB9LApA QCAtMTM5NCw2ICsxNDk2LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL21hY2FkZHI4X2Js b29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyOCcsCiAgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnbWFjYWRkcjgnLCBhbXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fYmxv b21fb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL21hY2FkZHI4X2Jsb29tX29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyOCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn bWFjYWRkcjgnLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fYmxvb21fd2l0 aGluX3JhbmdlJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcjhfYmxvb21fb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHI4JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdt YWNhZGRyOCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2hhc2htYWNhZGRyOCcgfSwK IApAQCAtMTQwOSw2ICsxNTE0LDkgQEAKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9jb25zaXN0 ZW50JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmV0d29ya19taW5tYXhfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2luZXQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXBy b2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vbmV0d29ya19taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2lu ZXQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0gPT4gJzYnLAorICBh bXByb2MgPT4gJ2JyaW5fbWlubWF4X3dpdGhpbl9yYW5nZScgfSwKIAogIyBtaW5tYXggbXVsdGkg aW5ldAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmV0d29ya19taW5tYXhfbXVsdGlfb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ2luZXQnLApAQCAtMTQyNiw2ICsxNTM0LDkgQEAKIHsgYW1wcm9j ZmFtaWx5ID0+ICdicmluL25ldHdvcmtfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdpbmV0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbmV0JywgYW1wcm9jbnVtID0+ICc1 JywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9vcHRpb25zJyB9LAoreyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vbmV0d29ya19taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUg PT4gJ2luZXQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0gPT4gJzYn LAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX3dpdGhpbl9yYW5nZScgfSwKIHsgYW1w cm9jZmFtaWx5ID0+ICdicmluL25ldHdvcmtfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdpbmV0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbmV0JywgYW1wcm9jbnVtID0+ ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfZGlzdGFuY2VfaW5ldCcgfSwK QEAgLTE0NDMsNiArMTU1NCw5IEBACiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW5ldCcsIGFtcHJv Y251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV91bmlvbicgfSwKIHsgYW1wcm9jZmFt aWx5ID0+ICdicmluL25ldHdvcmtfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2luZXQn LAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0gPT4gJzUnLCBhbXByb2Mg PT4gJ2JyaW5fYmxvb21fb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL25ldHdv cmtfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2luZXQnLAorICBhbXByb2NyaWdodHR5 cGUgPT4gJ2luZXQnLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fYmxvb21f d2l0aGluX3JhbmdlJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmV0d29ya19ibG9vbV9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW5ldCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW5l dCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2hhc2hpbmV0JyB9LAogCkBAIC0xNDU5 LDYgKzE1NzMsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmV0d29ya19pbmNsdXNpb25f b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2luZXQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2lu ZXQnLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5faW5jbHVzaW9uX3VuaW9u JyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmV0d29ya19pbmNsdXNpb25fb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2luZXQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXBy b2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5faW5jbHVzaW9uX3dpdGhpbl9yYW5nZScg fSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL25ldHdvcmtfaW5jbHVzaW9uX29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICdpbmV0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbmV0JywgYW1wcm9j bnVtID0+ICcxMScsIGFtcHJvYyA9PiAnaW5ldF9tZXJnZScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ ICdicmluL25ldHdvcmtfaW5jbHVzaW9uX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywK QEAgLTE0NzksNiArMTU5Niw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9icGNoYXJfbWlu bWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdicGNoYXInLAogICBhbXByb2NyaWdodHR5cGUg PT4gJ2JwY2hhcicsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhf dW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9icGNoYXJfbWlubWF4X29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICdicGNoYXInLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2JwY2hhcics IGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfd2l0aGluX3Jhbmdl JyB9LAogCiAjIGJsb29tIGNoYXJhY3RlcgogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYnBjaGFy X2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdicGNoYXInLApAQCAtMTQ5NSw2ICsxNjE1 LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2JwY2hhcl9ibG9vbV9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAnYnBjaGFyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdicGNoYXInLCBhbXBy b2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fYmxvb21fb3B0aW9ucycgfSwKK3sgYW1w cm9jZmFtaWx5ID0+ICdicmluL2JwY2hhcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn YnBjaGFyJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdicGNoYXInLCBhbXByb2NudW0gPT4gJzYn LAorICBhbXByb2MgPT4gJ2JyaW5fYmxvb21fd2l0aGluX3JhbmdlJyB9LAogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vYnBjaGFyX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdicGNoYXIn LAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2JwY2hhcicsIGFtcHJvY251bSA9PiAnMTEnLCBhbXBy b2MgPT4gJ2hhc2hicGNoYXInIH0sCiAKQEAgLTE1MTAsNiArMTYzMyw5IEBACiAgIGFtcHJvYyA9 PiAnYnJpbl9taW5tYXhfY29uc2lzdGVudCcgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3Rp bWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lJywKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICd0aW1lJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91 bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWVfbWlubWF4X29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICd0aW1lJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lJywgYW1wcm9j bnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF93aXRoaW5fcmFuZ2UnIH0sCiAK ICMgbWlubWF4IG11bHRpIHRpbWUgd2l0aG91dCB0aW1lIHpvbmUKIHsgYW1wcm9jZmFtaWx5ID0+ ICdicmluL3RpbWVfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lJywK QEAgLTE1MjcsNiArMTY1Myw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1lX21pbm1h eF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZScsCiAgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAndGltZScsIGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhf bXVsdGlfb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWVfbWlubWF4X211 bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ ICd0aW1lJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0 aV93aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1lX21pbm1heF9t dWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAndGltZScsIGFtcHJvY251bSA9PiAnMTEnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211 bHRpX2Rpc3RhbmNlX3RpbWUnIH0sCkBAIC0xNTQ0LDYgKzE2NzMsOSBAQAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ3RpbWUnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21f dW5pb24nIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1lX2Jsb29tX29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICd0aW1lJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lJywgYW1wcm9j bnVtID0+ICc1JywgYW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0sCit7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi90aW1lX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lJywK KyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9j ID0+ICdicmluX2Jsb29tX3dpdGhpbl9yYW5nZScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmlu L3RpbWVfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWUnLAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ3RpbWUnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICd0aW1lX2hhc2gn IH0sCiAKQEAgLTE1NjAsNiArMTY5Miw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRl dGltZV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFtcCcsCiAgIGFtcHJv Y3JpZ2h0dHlwZSA9PiAndGltZXN0YW1wJywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9jID0+ ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1l X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wJywKKyAgYW1wcm9jcmln aHR0eXBlID0+ICd0aW1lc3RhbXAnLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2Jy aW5fbWlubWF4X3dpdGhpbl9yYW5nZScgfSwKIAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0 ZXRpbWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lc3RhbXB0eicsCiAgIGFt cHJvY3JpZ2h0dHlwZSA9PiAndGltZXN0YW1wdHonLCBhbXByb2NudW0gPT4gJzEnLApAQCAtMTU3 Myw2ICsxNzA4LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wdHonLAogICBhbXByb2NyaWdodHR5cGUg PT4gJ3RpbWVzdGFtcHR6JywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9jID0+ICdicmluX21p bm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wdHonLAorICBhbXByb2NyaWdodHR5cGUg PT4gJ3RpbWVzdGFtcHR6JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21p bm1heF93aXRoaW5fcmFuZ2UnIH0sCiAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1l X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZGF0ZScsCiAgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnZGF0ZScsIGFtcHJvY251bSA9PiAnMScsCkBAIC0xNTg1LDYgKzE3MjMsOSBAQAogICBh bXByb2MgPT4gJ2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi9kYXRldGltZV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2RhdGUnLAogICBh bXByb2NyaWdodHR5cGUgPT4gJ2RhdGUnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2Jy aW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlu bWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdkYXRlJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ ICdkYXRlJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF93aXRo aW5fcmFuZ2UnIH0sCiAKICMgbWlubWF4IG11bHRpIGRhdGV0aW1lIChkYXRlLCB0aW1lc3RhbXAs IHRpbWVzdGFtcHR6KQogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X211 bHRpX29wcycsCkBAIC0xNjAyLDYgKzE3NDMsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v ZGF0ZXRpbWVfbWlubWF4X211bHRpX29wcycsCiAgIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lc3Rh bXAnLCBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcCcsCiAgIGFtcHJvY251bSA9PiAnNScs IGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5 ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn dGltZXN0YW1wJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lc3RhbXAnLCBhbXByb2NudW0g PT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX3dpdGhpbl9yYW5nZScgfSwK IHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9tdWx0aV9vcHMnLAogICBh bXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wJywgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lc3Rh bXAnLAogICBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9k aXN0YW5jZV90aW1lc3RhbXAnIH0sCkBAIC0xNjIxLDYgKzE3NjUsOSBAQAogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X211bHRpX29wcycsCiAgIGFtcHJvY2xlZnR0eXBl ID0+ICd0aW1lc3RhbXB0eicsIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXN0YW1wdHonLAogICBh bXByb2NudW0gPT4gJzUnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlvbnMnIH0s Cit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhfbXVsdGlfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1l c3RhbXB0eicsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVs dGlfd2l0aGluX3JhbmdlJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlu bWF4X211bHRpX29wcycsCiAgIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lc3RhbXB0eicsIGFtcHJv Y3JpZ2h0dHlwZSA9PiAndGltZXN0YW1wdHonLAogICBhbXByb2NudW0gPT4gJzExJywgYW1wcm9j ID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV90aW1lc3RhbXAnIH0sCkBAIC0xNjQwLDYg KzE3ODcsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X211bHRp X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdkYXRlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdk YXRlJywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9v cHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X211bHRp X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdkYXRlJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdk YXRlJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV93 aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhf bXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2RhdGUnLAogICBhbXByb2NyaWdodHR5cGUg PT4gJ2RhdGUnLCBhbXByb2NudW0gPT4gJzExJywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9t dWx0aV9kaXN0YW5jZV9kYXRlJyB9LApAQCAtMTY2MCw2ICsxODEwLDkgQEAKIHsgYW1wcm9jZmFt aWx5ID0+ICdicmluL2RhdGV0aW1lX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1l c3RhbXAnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcCcsIGFtcHJvY251bSA9PiAn NScsCiAgIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vZGF0ZXRpbWVfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFt cCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXN0YW1wJywgYW1wcm9jbnVtID0+ICc2JywK KyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3dpdGhpbl9yYW5nZScgfSwKIHsgYW1wcm9jZmFtaWx5 ID0+ICdicmluL2RhdGV0aW1lX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lc3Rh bXAnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcCcsIGFtcHJvY251bSA9PiAnMTEn LAogICBhbXByb2MgPT4gJ3RpbWVzdGFtcF9oYXNoJyB9LApAQCAtMTY3OSw2ICsxODMyLDkgQEAK IHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICd0aW1lc3RhbXB0eicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXN0YW1wdHon LCBhbXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fYmxvb21fb3B0aW9ucycgfSwK K3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICd0aW1lc3RhbXB0eicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXN0YW1wdHon LCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fYmxvb21fd2l0aGluX3Jhbmdl JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfYmxvb21fb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lc3Rh bXB0eicsIGFtcHJvY251bSA9PiAnMTEnLAogICBhbXByb2MgPT4gJ3RpbWVzdGFtcF9oYXNoJyB9 LApAQCAtMTY5NSw2ICsxODUxLDkgQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdkYXRlJywgYW1w cm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX2Jsb29tX3VuaW9uJyB9LAogeyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2Rh dGUnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2RhdGUnLCBhbXByb2NudW0gPT4gJzUnLCBhbXBy b2MgPT4gJ2JyaW5fYmxvb21fb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Rh dGV0aW1lX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdkYXRlJywKKyAgYW1wcm9jcmln aHR0eXBlID0+ICdkYXRlJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Js b29tX3dpdGhpbl9yYW5nZScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX2Js b29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdkYXRlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdkYXRlJywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnaGFzaGludDQnIH0sCiAKQEAg LTE3MTEsNiArMTg3MCw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlcnZhbF9taW5t YXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludGVydmFsJywKICAgYW1wcm9jcmlnaHR0eXBl ID0+ICdpbnRlcnZhbCcsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5t YXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlcnZhbF9taW5tYXhfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludGVydmFsJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdp bnRlcnZhbCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfd2l0 aGluX3JhbmdlJyB9LAogCiAjIG1pbm1heCBtdWx0aSBpbnRlcnZhbAogeyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vaW50ZXJ2YWxfbWlubWF4X211bHRpX29wcycsCkBAIC0xNzI4LDYgKzE4OTAsOSBA QAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZXJ2YWxfbWlubWF4X211bHRpX29wcycsCiAg IGFtcHJvY2xlZnR0eXBlID0+ICdpbnRlcnZhbCcsIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50ZXJ2 YWwnLCBhbXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX29w dGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlcnZhbF9taW5tYXhfbXVsdGlf b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludGVydmFsJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ ICdpbnRlcnZhbCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhf bXVsdGlfd2l0aGluX3JhbmdlJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZXJ2YWxf bWlubWF4X211bHRpX29wcycsCiAgIGFtcHJvY2xlZnR0eXBlID0+ICdpbnRlcnZhbCcsIGFtcHJv Y3JpZ2h0dHlwZSA9PiAnaW50ZXJ2YWwnLAogICBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV9pbnRlcnZhbCcgfSwKQEAgLTE3NDgsNiArMTkx Myw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlcnZhbF9ibG9vbV9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAnaW50ZXJ2YWwnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludGVydmFs JywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0s Cit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlcnZhbF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnaW50ZXJ2YWwnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludGVydmFsJywgYW1w cm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3dpdGhpbl9yYW5nZScgfSwK IHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVydmFsX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdpbnRlcnZhbCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50ZXJ2YWwnLCBhbXBy b2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdpbnRlcnZhbF9oYXNoJyB9LAogCkBAIC0xNzY0LDYg KzE5MzIsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGltZXR6X21pbm1heF9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAndGltZXR6JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1ldHon LCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAor eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGltZXR6X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAndGltZXR6JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1ldHonLCBhbXByb2NudW0g PT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3dpdGhpbl9yYW5nZScgfSwKIAogIyBt aW5tYXggbXVsdGkgdGltZSB3aXRoIHRpbWUgem9uZQogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4v dGltZXR6X21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXR6JywKQEAg LTE3ODEsNiArMTk1Miw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1ldHpfbWlubWF4 X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1ldHonLAogICBhbXByb2NyaWdodHR5 cGUgPT4gJ3RpbWV0eicsIGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5t YXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWV0el9taW5t YXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWV0eicsCisgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAndGltZXR6JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21p bm1heF9tdWx0aV93aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1l dHpfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1ldHonLAogICBhbXBy b2NyaWdodHR5cGUgPT4gJ3RpbWV0eicsIGFtcHJvY251bSA9PiAnMTEnLAogICBhbXByb2MgPT4g J2JyaW5fbWlubWF4X211bHRpX2Rpc3RhbmNlX3RpbWV0eicgfSwKQEAgLTE4MDAsNiArMTk3NCw5 IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1ldHpfYmxvb21fb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ3RpbWV0eicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXR6JywgYW1wcm9j bnVtID0+ICc1JywKICAgYW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0sCit7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi90aW1ldHpfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3Rp bWV0eicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXR6JywgYW1wcm9jbnVtID0+ICc2JywK KyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3dpdGhpbl9yYW5nZScgfSwKIHsgYW1wcm9jZmFtaWx5 ID0+ICdicmluL3RpbWV0el9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXR6JywK ICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1ldHonLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9j ID0+ICd0aW1ldHpfaGFzaCcgfSwKIApAQCAtMTgxNCw2ICsxOTkxLDkgQEAKICAgYW1wcm9jID0+ ICdicmluX21pbm1heF9jb25zaXN0ZW50JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYml0 X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYml0JywKICAgYW1wcm9jcmlnaHR0eXBl ID0+ICdiaXQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9u JyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYml0X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnYml0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdiaXQnLCBhbXByb2NudW0gPT4g JzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3dpdGhpbl9yYW5nZScgfSwKIAogIyBtaW5t YXggYml0IHZhcnlpbmcKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3ZhcmJpdF9taW5tYXhfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ3ZhcmJpdCcsCkBAIC0xODI4LDYgKzIwMDgsOSBAQAogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vdmFyYml0X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAndmFyYml0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd2YXJiaXQnLCBhbXByb2NudW0gPT4g JzQnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vdmFyYml0X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndmFyYml0JywK KyAgYW1wcm9jcmlnaHR0eXBlID0+ICd2YXJiaXQnLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXBy b2MgPT4gJ2JyaW5fbWlubWF4X3dpdGhpbl9yYW5nZScgfSwKIAogIyBtaW5tYXggbnVtZXJpYwog eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbnVtZXJpY19taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ251bWVyaWMnLApAQCAtMTg0Miw2ICsyMDI1LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ ICdicmluL251bWVyaWNfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdudW1lcmljJywK ICAgYW1wcm9jcmlnaHR0eXBlID0+ICdudW1lcmljJywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1w cm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL251 bWVyaWNfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdudW1lcmljJywKKyAgYW1wcm9j cmlnaHR0eXBlID0+ICdudW1lcmljJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdi cmluX21pbm1heF93aXRoaW5fcmFuZ2UnIH0sCiAKICMgbWlubWF4IG11bHRpIG51bWVyaWMKIHsg YW1wcm9jZmFtaWx5ID0+ICdicmluL251bWVyaWNfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICdudW1lcmljJywKQEAgLTE4NTksNiArMjA0NSw5IEBACiB7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi9udW1lcmljX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn bnVtZXJpYycsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbnVtZXJpYycsIGFtcHJvY251bSA9PiAn NScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1wcm9j ZmFtaWx5ID0+ICdicmluL251bWVyaWNfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdudW1lcmljJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdudW1lcmljJywgYW1wcm9jbnVt ID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV93aXRoaW5fcmFuZ2UnIH0s CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9udW1lcmljX21pbm1heF9tdWx0aV9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAnbnVtZXJpYycsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbnVtZXJpYycs IGFtcHJvY251bSA9PiAnMTEnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX2Rpc3Rh bmNlX251bWVyaWMnIH0sCkBAIC0xODc5LDYgKzIwNjgsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vbnVtZXJpY19ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbnVtZXJpYycsCiAg IGFtcHJvY3JpZ2h0dHlwZSA9PiAnbnVtZXJpYycsIGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJv YyA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbnVt ZXJpY19ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbnVtZXJpYycsCisgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAnbnVtZXJpYycsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJp bl9ibG9vbV93aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9udW1lcmlj X2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdudW1lcmljJywKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICdudW1lcmljJywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnaGFzaF9udW1l cmljJyB9LAogCkBAIC0xODk0LDYgKzIwODYsOSBAQAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4 X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi91dWlkX21pbm1heF9vcHMn LCBhbXByb2NsZWZ0dHlwZSA9PiAndXVpZCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndXVpZCcs IGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi91dWlkX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn dXVpZCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndXVpZCcsIGFtcHJvY251bSA9PiAnNicsCisg IGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfd2l0aGluX3JhbmdlJyB9LAogCiAjIG1pbm1heCBtdWx0 aSB1dWlkCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi91dWlkX21pbm1heF9tdWx0aV9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAndXVpZCcsCkBAIC0xOTExLDYgKzIxMDYsOSBAQAogeyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vdXVpZF9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4g J3V1aWQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3V1aWQnLCBhbXByb2NudW0gPT4gJzUnLAog ICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi91dWlkX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndXVp ZCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndXVpZCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFt cHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfd2l0aGluX3JhbmdlJyB9LAogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vdXVpZF9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3V1 aWQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3V1aWQnLCBhbXByb2NudW0gPT4gJzExJywKICAg YW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV91dWlkJyB9LApAQCAtMTkyOCw2 ICsyMTI2LDkgQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd1dWlkJywgYW1wcm9jbnVtID0+ICc0 JywgYW1wcm9jID0+ICdicmluX2Jsb29tX3VuaW9uJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vdXVpZF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndXVpZCcsCiAgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAndXVpZCcsIGFtcHJvY251bSA9PiAnNScsIGFtcHJvYyA9PiAnYnJpbl9ibG9v bV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdXVpZF9ibG9vbV9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAndXVpZCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndXVpZCcsIGFt cHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV93aXRoaW5fcmFuZ2UnIH0s CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi91dWlkX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICd1dWlkJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd1dWlkJywgYW1wcm9jbnVtID0+ICcx MScsIGFtcHJvYyA9PiAndXVpZF9oYXNoJyB9LAogCkBAIC0xOTQ0LDYgKzIxNDUsOSBAQAogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vcmFuZ2VfaW5jbHVzaW9uX29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdhbnlyYW5nZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYW55cmFuZ2UnLCBhbXByb2Nu dW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5faW5jbHVzaW9uX3VuaW9uJyB9LAoreyBhbXBy b2NmYW1pbHkgPT4gJ2JyaW4vcmFuZ2VfaW5jbHVzaW9uX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICdhbnlyYW5nZScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYW55cmFuZ2UnLCBhbXByb2NudW0g PT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5faW5jbHVzaW9uX3dpdGhpbl9yYW5nZScgfSwKIHsg YW1wcm9jZmFtaWx5ID0+ICdicmluL3JhbmdlX2luY2x1c2lvbl9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAnYW55cmFuZ2UnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2FueXJhbmdlJywgYW1wcm9j bnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAncmFuZ2VfbWVyZ2UoYW55cmFuZ2UsYW55cmFuZ2Up JyB9LApAQCAtMTk2Nyw2ICsyMTcxLDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3BnX2xz bl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3BnX2xzbicsCiAgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAncGdfbHNuJywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9jID0+ICdicmluX21p bm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3BnX2xzbl9taW5tYXhfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ3BnX2xzbicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAncGdf bHNuJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF93aXRoaW5f cmFuZ2UnIH0sCiAKICMgbWlubWF4IG11bHRpIHBnX2xzbgogeyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vcGdfbHNuX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAncGdfbHNuJywK QEAgLTE5ODQsNiArMjE5MSw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9wZ19sc25fbWlu bWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdwZ19sc24nLAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ3BnX2xzbicsIGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3BnX2xzbl9t aW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3BnX2xzbicsCisgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAncGdfbHNuJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmlu X21pbm1heF9tdWx0aV93aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9w Z19sc25fbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdwZ19sc24nLAogICBh bXByb2NyaWdodHR5cGUgPT4gJ3BnX2xzbicsIGFtcHJvY251bSA9PiAnMTEnLAogICBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X211bHRpX2Rpc3RhbmNlX3BnX2xzbicgfSwKQEAgLTIwMDMsNiArMjIx Myw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9wZ19sc25fYmxvb21fb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ3BnX2xzbicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAncGdfbHNuJywgYW1w cm9jbnVtID0+ICc1JywKICAgYW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0sCit7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi9wZ19sc25fYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4g J3BnX2xzbicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAncGdfbHNuJywgYW1wcm9jbnVtID0+ICc2 JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3dpdGhpbl9yYW5nZScgfSwKIHsgYW1wcm9jZmFt aWx5ID0+ICdicmluL3BnX2xzbl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAncGdfbHNu JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdwZ19sc24nLCBhbXByb2NudW0gPT4gJzExJywgYW1w cm9jID0+ICdwZ19sc25faGFzaCcgfSwKIApAQCAtMjAxOSw2ICsyMjMyLDkgQEAKIHsgYW1wcm9j ZmFtaWx5ID0+ICdicmluL2JveF9pbmNsdXNpb25fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2Jv eCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYm94JywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1w cm9jID0+ICdicmluX2luY2x1c2lvbl91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmlu L2JveF9pbmNsdXNpb25fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2JveCcsCisgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAnYm94JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2lu Y2x1c2lvbl93aXRoaW5fcmFuZ2UnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9ib3hfaW5j bHVzaW9uX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdib3gnLAogICBhbXByb2NyaWdodHR5cGUg PT4gJ2JveCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2JvdW5kX2JveCcgfSwKIHsg YW1wcm9jZmFtaWx5ID0+ICdicmluL2JveF9pbmNsdXNpb25fb3BzJywgYW1wcm9jbGVmdHR5cGUg PT4gJ2JveCcsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCBkNDY1MDk0N2M2My4uZmIxZmEx NTgxYjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtODkwNCw2ICs4OTA0LDEwIEBACiB7 IG9pZCA9PiAnMzM4NicsIGRlc2NyID0+ICdCUklOIG1pbm1heCBzdXBwb3J0JywKICAgcHJvbmFt ZSA9PiAnYnJpbl9taW5tYXhfdW5pb24nLCBwcm9yZXR0eXBlID0+ICdib29sJywKICAgcHJvYXJn dHlwZXMgPT4gJ2ludGVybmFsIGludGVybmFsIGludGVybmFsJywgcHJvc3JjID0+ICdicmluX21p bm1heF91bmlvbicgfSwKK3sgb2lkID0+ICc5NjM3JywgZGVzY3IgPT4gJ0JSSU4gbWlubWF4IHN1 cHBvcnQnLAorICBwcm9uYW1lID0+ICdicmluX21pbm1heF93aXRoaW5fcmFuZ2UnLCBwcm9yZXR0 eXBlID0+ICdib29sJywKKyAgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsIGludGVybmFsIGludGVy bmFsIGludGVybmFsJywKKyAgcHJvc3JjID0+ICdicmluX21pbm1heF93aXRoaW5fcmFuZ2UnIH0s CiAKICMgQlJJTiBtaW5tYXggbXVsdGkKIHsgb2lkID0+ICc0NjE2JywgZGVzY3IgPT4gJ0JSSU4g bXVsdGkgbWlubWF4IHN1cHBvcnQnLApAQCAtODkyNSw2ICs4OTI5LDEwIEBACiAgIHByb25hbWUg PT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlvbnMnLCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHBy b3JldHR5cGUgPT4gJ3ZvaWQnLCBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwnLAogICBwcm9zcmMg PT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlvbnMnIH0sCit7IG9pZCA9PiAnOTYzOCcsIGRlc2Ny ID0+ICdCUklOIG11bHRpIG1pbm1heCBzdXBwb3J0JywKKyAgcHJvbmFtZSA9PiAnYnJpbl9taW5t YXhfbXVsdGlfd2l0aGluX3JhbmdlJywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsCisgIHByb2FyZ3R5 cGVzID0+ICdpbnRlcm5hbCBpbnRlcm5hbCBpbnRlcm5hbCBpbnRlcm5hbCcsCisgIHByb3NyYyA9 PiAnYnJpbl9taW5tYXhfbXVsdGlfd2l0aGluX3JhbmdlJyB9LAogCiB7IG9pZCA9PiAnNDYyMScs IGRlc2NyID0+ICdCUklOIG11bHRpIG1pbm1heCBpbnQyIGRpc3RhbmNlJywKICAgcHJvbmFtZSA9 PiAnYnJpbl9taW5tYXhfbXVsdGlfZGlzdGFuY2VfaW50MicsIHByb3JldHR5cGUgPT4gJ2Zsb2F0 OCcsCkBAIC05MDExLDYgKzkwMTksMTAgQEAKICAgcHJvbmFtZSA9PiAnYnJpbl9pbmNsdXNpb25f dW5pb24nLCBwcm9yZXR0eXBlID0+ICdib29sJywKICAgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFs IGludGVybmFsIGludGVybmFsJywKICAgcHJvc3JjID0+ICdicmluX2luY2x1c2lvbl91bmlvbicg fSwKK3sgb2lkID0+ICc5NjM5JywgZGVzY3IgPT4gJ0JSSU4gaW5jbHVzaW9uIHN1cHBvcnQnLAor ICBwcm9uYW1lID0+ICdicmluX2luY2x1c2lvbl93aXRoaW5fcmFuZ2UnLCBwcm9yZXR0eXBlID0+ ICdib29sJywKKyAgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsIGludGVybmFsIGludGVybmFsIGlu dGVybmFsJywKKyAgcHJvc3JjID0+ICdicmluX2luY2x1c2lvbl93aXRoaW5fcmFuZ2UnIH0sCiAK ICMgQlJJTiBibG9vbQogeyBvaWQgPT4gJzQ1OTEnLCBkZXNjciA9PiAnQlJJTiBibG9vbSBzdXBw b3J0JywKQEAgLTkwMzAsNiArOTA0MiwxMCBAQAogeyBvaWQgPT4gJzQ1OTUnLCBkZXNjciA9PiAn QlJJTiBibG9vbSBzdXBwb3J0JywKICAgcHJvbmFtZSA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJywg cHJvaXNzdHJpY3QgPT4gJ2YnLCBwcm9yZXR0eXBlID0+ICd2b2lkJywKICAgcHJvYXJndHlwZXMg PT4gJ2ludGVybmFsJywgcHJvc3JjID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0sCit7IG9pZCA9 PiAnOTY0MCcsIGRlc2NyID0+ICdCUklOIGJsb29tIHN1cHBvcnQnLAorICBwcm9uYW1lID0+ICdi cmluX2Jsb29tX3dpdGhpbl9yYW5nZScsIHByb3JldHR5cGUgPT4gJ2Jvb2wnLAorICBwcm9hcmd0 eXBlcyA9PiAnaW50ZXJuYWwgaW50ZXJuYWwgaW50ZXJuYWwgaW50ZXJuYWwnLAorICBwcm9zcmMg PT4gJ2JyaW5fYmxvb21fd2l0aGluX3JhbmdlJyB9LAogCiAjIHVzZXJsb2NrIHJlcGxhY2VtZW50 cwogeyBvaWQgPT4gJzI4ODAnLCBkZXNjciA9PiAnb2J0YWluIGV4Y2x1c2l2ZSBhZHZpc29yeSBs b2NrJywKLS0gCjIuNDMuMAoK --000000000000ed5c510639345447--