Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lzjjc-0008Oi-Jd for pgsql-hackers@arkaria.postgresql.org; Sat, 03 Jul 2021 17:47:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lzjja-0004Ui-3V for pgsql-hackers@arkaria.postgresql.org; Sat, 03 Jul 2021 17:47:18 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lzjjY-0004TQ-C8 for pgsql-hackers@lists.postgresql.org; Sat, 03 Jul 2021 17:47:17 +0000 Received: from mail-ua1-x92e.google.com ([2607:f8b0:4864:20::92e]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1lzjjQ-00032q-Ar for pgsql-hackers@lists.postgresql.org; Sat, 03 Jul 2021 17:47:14 +0000 Received: by mail-ua1-x92e.google.com with SMTP id r9so5221884ual.7 for ; Sat, 03 Jul 2021 10:47:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=HuseMTgtNRaQ3h4Tf4RnMKx1u2C/N0+ELx/HPdx5W2g=; b=SngFQP4Q/dPT+uKmfP06OM4WTPwxJ0nQS9tE6+uDwNGYJ4mCOe+/d6M7/pwCbI7WkO yH43g4RfBdOMBg1aX0W6UbEDzER/FWaLeV7nMHH/CVxo0BAJUFiUWDaHW3l9fSqvM7hX gr2U0h2Bs/Om0Fxj2/+eTGHcGruqVdSQnaZ1IQV6YHN15itfXN8QW6lUGMsck1HwjPvK AMjmVHKe5H6JpP5JtwAOnC3fg/6yVYDesszjfv1gNqk3zsGRiEljY7rYiqn7l6b/03Ie 396k7Cr58GiN7dXEg7ycz3tL8j1fdOS6z4+y3bOoRdtj996KkQQwINHlJtosB4hsxkiG jyWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=HuseMTgtNRaQ3h4Tf4RnMKx1u2C/N0+ELx/HPdx5W2g=; b=eL+swflkOaQorH9ei0QZ88f/OBHUSeg+n8VJnkMxa1HBVkE+bhIj+vmblRCQSCOFE0 +nRN28/0MG4pGBbJZER6+3DJIoJGtkDDlhC/wUrH/96mZygLfNL/t5jaPbvO0Hf74bec E65YhZoBiwKkU30kmIuVXdGVoHFzTDhnCZ1swiPdBNQx2C8vWCgl9Kt4TGpyMotgTCZh ldI4Ycr0Noh34c+4zox/i18yK3KcQVVDN25jFZ+EDpxbfnisPmrGvyAx/8R/D8P1x+1s 9T88aJHgWrrtJhesO3x7oYreoaUPctl35ABmZLa/iExCVZzrIexoeKEc1grj2F+ltFRu /CeA== X-Gm-Message-State: AOAM532VwiLDief7lyxlDOXJAEUNK1by/JZLNn/LpAPVY5WskvainrnY bgAtyIi5xevpA2LK7xEWEW0UormCzn7Vv/8je1KRbmoc6WOv4w== X-Google-Smtp-Source: ABdhPJyj6s6XNkx7iAqcG75pmMSu+ti5KJqc0xb8ty4R0k9uJGvB/gKAb4mebzX3lWah2nxICQxPO96pVXfi17m0vuE= X-Received: by 2002:a9f:3f81:: with SMTP id k1mr5913448uaj.7.1625334426974; Sat, 03 Jul 2021 10:47:06 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Paul A Jungwirth Date: Sat, 3 Jul 2021 10:46:55 -0700 Message-ID: Subject: Re: SQL:2011 application time To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000029ba9305c63ba927" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000029ba9305c63ba927 Content-Type: text/plain; charset="UTF-8" On Fri, Jul 2, 2021 at 2:39 PM Paul A Jungwirth wrote: > > On Wed, Jun 30, 2021 at 10:39 AM Paul A Jungwirth > wrote: > > Here is a set of patches to add SQL:2011 application-time support (aka > > valid-time). > > Here is a small fix to prevent `FOR PORTION OF valid_at FROM MAXVALUE > TO foo` or `FROM foo TO MINVALUE`. I rebased on latest master too. Here is a patch set that cleans up the catalog docs for pg_period. The columns have changed since that was written, and also we use a different sgml structure on those pages now. Note pg_period still contains a couple essentially-unused columns, perislocal and perinhcount. Those are intended for supporting table inheritance, so I've left them in. Paul --00000000000029ba9305c63ba927 Content-Type: application/octet-stream; name="v6-0001-Add-PERIODs.patch" Content-Disposition: attachment; filename="v6-0001-Add-PERIODs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kqo20y3f0 RnJvbSBkOThjZGQxNDdiODkzMThkZTk1Yjk0NzIyNmJhYWEzM2JjNzMxYzA2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWluYXRlZGNv bXB1dGluZy5jb20+CkRhdGU6IFNhdCwgOSBKYW4gMjAyMSAyMTo1OTo0MyAtMDgwMApTdWJqZWN0 OiBbUEFUQ0ggdjYgMS80XSBBZGQgUEVSSU9EcwoKLSBBZGRlZCBwYXJzaW5nIGZvciBTUUw6MjAx MSBzeW50YXggdG8gZGVmaW5lIGFuIGFwcGxpY2F0aW9uLXRpbWUgUEVSSU9EIG9uIGEKICB0YWJs ZSAoaW4gYm90aCBDUkVBVEUgVEFCTEUgYW5kIEFMVEVSIFRBQkxFKS4gTWFrZSBzdXJlIHdlIGNy ZWF0ZSB0aGUgUEVSSU9ECiAgYWZ0ZXIgY29sdW1ucyBhcmUga25vd24gKHNpbmNlIFBFUklPRHMg Y2FuIHJlZmVyIHRvIHRoZW0pIGJ1dCBiZWZvcmUKICBjb25zdHJhaW50cyBhcmUgaGFuZGxlZCAo c2luY2UgUEVSSU9EcyBjYW4gYXBwZWFyIGluIHRoZW0pLgotIEFkZGVkIEFMVEVSIFRBQkxFIERS T1Agc3VwcG9ydCBmb3IgUEVSSU9Ecy4KLSBDcmVhdGVkIHBvc3RncmVzLnBnX3BlcmlvZCB0YWJs ZS4KLSBDcmVhdGVkIGluZm9ybWF0aW9uX3NjaGVtYS5wZXJpb2RzIHZpZXcuCi0gQWRkZWQgcGdf ZHVtcCBzdXBwb3J0LgotIEFkZGVkIHRlc3RzIGFuZCBkb2N1bWVudGF0aW9uLgotIEF1dG9tYXRp Y2FsbHkgZGVmaW5lIGEgY29uc3RyYWludCBmb3IgZWFjaCBQRVJJT0QgcmVxdWlyaW5nIHRoZSBz dGFydCBjb2x1bW4KICB0byBiZSBsZXNzIHRoYW4gdGhlIGVuZCBjb2x1bW4uCi0gV2hlbiBjcmVh dGluZyBhIFBFUklPRCwgY2hvb3NlIGFuIGFwcHJvcHJpYXRlIHJhbmdlIHR5cGUgd2UgY2FuIHVz ZSB0bwogIGltcGxlbWVudCBQRVJJT0QtcmVsYXRlZCBvcGVyYXRpb25zLiBZb3UgY2FuIGNob29z ZSBvbmUgZXhwbGljaXRseSBpZiB0aGVyZQogIGlzIGFtYmlndWl0eSAoZHVlIHRvIG11bHRpcGxl IHJhbmdlIHR5cGVzIGNyZWF0ZWQgb3ZlciB0aGUgc2FtZSBiYXNlIHR5cGUpLgotLS0KIGRvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICB8IDEzMiArKysrKwogZG9jL3Ny Yy9zZ21sL2RkbC5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgIDU4ICsrKwogZG9jL3NyYy9z Z21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sICAgICAgIHwgIDYzICsrKwogZG9jL3NyYy9zZ21s L3JlZi9hbHRlcl90YWJsZS5zZ21sICAgICAgICAgIHwgIDI1ICsKIGRvYy9zcmMvc2dtbC9yZWYv Y29tbWVudC5zZ21sICAgICAgICAgICAgICB8ICAgMiArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV90YWJsZS5zZ21sICAgICAgICAgfCAgMzkgKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZp bGUgICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYyAg ICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jICAg ICAgICAgICB8ICAgOSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyAgICAgICAgICAgICAg ICAgfCAgNjcgKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwg fCAgMjQgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jICAgICAgICB8ICA3 MyArKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMgICAgICAgICAgICB8IDEwNiAr KysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQgICAgICAgfCAgIDIgKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv YmFja2VuZC9jb21tYW5kcy9jb21tZW50LmMgICAgICAgICAgICAgfCAgMTAgKwogc3JjL2JhY2tl bmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL3NlY2xhYmVsLmMgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYyAgICAgICAgICAgfCA1NDIgKysrKysrKysrKysrKysrKysrKystCiBzcmMv YmFja2VuZC9jb21tYW5kcy92aWV3LmMgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNr ZW5kL25vZGVzL2NvcHlmdW5jcy5jICAgICAgICAgICAgICB8ICAxOSArCiBzcmMvYmFja2VuZC9u b2Rlcy9lcXVhbGZ1bmNzLmMgICAgICAgICAgICAgfCAgMTcgKwogc3JjL2JhY2tlbmQvbm9kZXMv bm9kZUZ1bmNzLmMgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL25vZGVzL291dGZ1 bmNzLmMgICAgICAgICAgICAgICB8ICA0NSArKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAg ICAgICAgICAgICAgICAgIHwgIDQ3ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNt ZC5jICAgICAgICAgfCAxNTUgKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2Fj aGUuYyAgICAgICAgfCAgODcgKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUu YyAgICAgICAgIHwgIDM0ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMg ICAgICAgfCAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAg IHwgMTUzICsrKysrLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAg IHwgIDE1ICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYyAgICAgICAgICAgICB8ICAg NyArCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgfCAgMzQgKysK IHNyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oICAgICAgICAgICB8ICAgMSArCiBzcmMv aW5jbHVkZS9jYXRhbG9nL2hlYXAuaCAgICAgICAgICAgICAgICAgfCAgIDQgKwogc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19pbmRleC5oICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3BlcmlvZC5oICAgICAgICAgICAgfCAgNTUgKysrCiBzcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3JhbmdlLmggICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMv dGFibGVjbWRzLmggICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5o ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o ICAgICAgICAgICAgIHwgIDMxICstCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3V0aWxjbWQuaCAgICAg ICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oICAgICAgICAgICAgICB8 ICAgMyArCiBzcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oICAgICAgICAgICAgICAgfCAgIDMg Kwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wZXJpb2RzLm91dCAgICAgIHwgIDc5ICsrKwog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zYW5pdHlfY2hlY2sub3V0IHwgICAzICsKIHNyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcGVyaW9kcy5zcWwgICAgICAgICAgIHwgIDYyICsrKwogNDkgZmlsZXMgY2hh bmdlZCwgMjAwMCBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGVyaW9kcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9j YXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggZjUxN2E3ZDRh Zi4uMTA2OTNhYzhkZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTIyNSw2ICsyMjUsMTEgQEAKICAgICAg IDxlbnRyeT5pbmZvcm1hdGlvbiBhYm91dCBwYXJ0aXRpb24ga2V5IG9mIHRhYmxlczwvZW50cnk+ CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpbmsgbGlua2VuZD0i Y2F0YWxvZy1wZy1wZXJpb2QiPjxzdHJ1Y3RuYW1lPnBnX3BlcmlvZDwvc3RydWN0bmFtZT48L2xp bms+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5wZXJpb2RzPC9lbnRyeT4KKyAgICAgPC9yb3c+CisK ICAgICAgPHJvdz4KICAgICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXBvbGlj eSI+PHN0cnVjdG5hbWU+cGdfcG9saWN5PC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5PgogICAg ICAgPGVudHJ5PnJvdy1zZWN1cml0eSBwb2xpY2llczwvZW50cnk+CkBAIC01NTIwLDYgKzU1MjUs MTMzIEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7 PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICAgYXJlIHNpbXBsZSByZWZlcmVu Y2VzLgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgorCisgICAgPC90Ym9keT4K KyAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorIDwvc2VjdDE+CisKKworIDxzZWN0MSBpZD0iY2F0 YWxvZy1wZy1wZXJpb2QiPgorICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfcGVyaW9kPC9zdHJ1Y3Ru YW1lPjwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJjYXRhbG9nLXBnLXBlcmlvZCI+Cisg ICA8cHJpbWFyeT5wZ19wZXJpb2Q8L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJh PgorICAgVGhlIGNhdGFsb2cgPHN0cnVjdG5hbWU+cGdfcGVyaW9kPC9zdHJ1Y3RuYW1lPiBzdG9y ZXMKKyAgIGluZm9ybWF0aW9uIGFib3V0IHN5c3RlbSBhbmQgYXBwbGljYXRpb24gdGltZSBwZXJp b2RzLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBQZXJpb2RzIGFyZSBkZXNjcmliZWQgaW4g PHhyZWYgbGlua2VuZD0iZGRsLXBlcmlvZHMiLz4uCisgIDwvcGFyYT4KKworICA8dGFibGU+Cisg ICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfcGVyaW9kPC9zdHJ1Y3RuYW1lPiBDb2x1bW5zPC90aXRs ZT4KKworICAgPHRncm91cCBjb2xzPSIxIj4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2Rl ZmluaXRpb24iPgorICAgICAgIENvbHVtbiBUeXBlCisgICAgICA8L3BhcmE+CisgICAgICA8cGFy YT4KKyAgICAgICBEZXNjcmlwdGlvbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93 PgorICAgIDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgorICAgICAgIDxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+ CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBSb3cgaWRlbnRpZmllcgorICAg ICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJuYW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4 dDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFBlcmlvZCBuYW1l CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBlcnJlbGlkPC9zdHJ1Y3RmaWVsZD4gPHR5 cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ct cGctY2xhc3MiPjxzdHJ1Y3RuYW1lPnBnX2NsYXNzPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVj dGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+Cisg ICAgICAgVGhlIHRhYmxlIHRoaXMgcGVyaW9kIGJlbG9uZ3MgdG8KKyAgICAgIDwvcGFyYT48L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFs b2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8 c3RydWN0ZmllbGQ+cGVyc3RhcnQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQyPC90eXBlPgorICAg ICAgIChyZWZlcmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctYXR0cmlidXRlIj48c3Ry dWN0bmFtZT5wZ19hdHRyaWJ1dGU8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+YXR0 bnVtPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBU aGUgbnVtYmVyIG9mIHRoZSBzdGFydCBjb2x1bW4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAg ICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVf ZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0Zmll bGQ+cGVyZW5kPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50MjwvdHlwZT4KKyAgICAgICAocmVmZXJl bmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF0dHJpYnV0ZSI+PHN0cnVjdG5hbWU+cGdf YXR0cmlidXRlPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPmF0dG51bTwvc3RydWN0 ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIG51bWJlciBv ZiB0aGUgZW5kIGNvbHVtbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisg ICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJybmd0eXBl PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5r IGxpbmtlbmQ9ImNhdGFsb2ctcGctdHlwZSI+PHN0cnVjdG5hbWU+cGdfdHlwZTwvc3RydWN0bmFt ZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4K KyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBPSUQgb2YgdGhlIHJhbmdlIHR5cGUgYXNzb2NpYXRl ZCB3aXRoIHRoaXMgcGVyaW9kCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisK KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBlcmNvbnN0 cmFpbnQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMg PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1jb25zdHJhaW50Ij48c3RydWN0bmFtZT5wZ19jb25z dHJhaW50PC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+ KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIE9JRCBvZiB0aGUgcGVy aW9kJ3MgPGxpdGVyYWw+Q0hFQ0s8L2xpdGVyYWw+IGNvbnN0cmFpbnQKKyAgICAgIDwvcGFyYT48 L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNh dGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAg ICA8c3RydWN0ZmllbGQ+cGVyaXNsb2NhbDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+ CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIHBlcmlvZCBpcyBkZWZp bmVkIGxvY2FsbHkgZm9yIHRoZSByZWxhdGlvbi4gIE5vdGUgdGhhdCBhIHBlcmlvZCBjYW4KKyAg ICAgICBiZSBsb2NhbGx5IGRlZmluZWQgYW5kIGluaGVyaXRlZCBzaW11bHRhbmVvdXNseS4KKyAg ICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0 aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGVyaW5oY291bnQ8L3N0cnVjdGZpZWxkPiA8dHlw ZT5pbnQ0PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIG51 bWJlciBvZiBkaXJlY3QgaW5oZXJpdGFuY2UgYW5jZXN0b3JzIHRoaXMgcGVyaW9kIGhhcy4gIEEg cGVyaW9kCisgICAgICAgd2l0aCBhIG5vbnplcm8gbnVtYmVyIG9mIGFuY2VzdG9ycyBjYW5ub3Qg YmUgZHJvcHBlZC4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgIDwv dGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9kZGwuc2dtbCBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbAppbmRleCA0OTg2NTQ4NzZmLi42OTky YzMwZGQyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2RkbC5zZ21sCkBAIC0xMTQwLDYgKzExNDAsNjQgQEAgQ1JFQVRFIFRBQkxFIGNpcmNsZXMg KAogICA8L3NlY3QyPgogIDwvc2VjdDE+CiAKKyA8c2VjdDEgaWQ9ImRkbC1wZXJpb2RzIj4KKyAg PHRpdGxlPlBlcmlvZHM8L3RpdGxlPgorCisgIDxwYXJhPgorICAgUGVyaW9kcyBhcmUgZGVmaW5p dGlvbnMgb24gYSB0YWJsZSB0aGF0IGFzc29jaWF0ZSBhIHBlcmlvZCBuYW1lIHdpdGggYSBzdGFy dAorICAgY29sdW1uIGFuZCBhbiBlbmQgY29sdW1uLiAgQm90aCBjb2x1bW5zIG11c3QgYmUgb2Yg ZXhhY3RseSB0aGUgc2FtZSB0eXBlCisgICAoaW5jbHVkaW5nIGNvbGxhdGlvbiksIGhhdmUgYSBi dHJlZSBvcGVyYXRvciBjbGFzcywgYW5kIHRoZSBzdGFydCBjb2x1bW4KKyAgIHZhbHVlIG11c3Qg YmUgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBlbmQgY29sdW1uIHZhbHVlLgorICA8L3BhcmE+CisK KyAgPHBhcmE+CisgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIHBlcmlvZHM6IGFwcGxpY2F0aW9u IGFuZCBzeXN0ZW0uICBTeXN0ZW0gcGVyaW9kcyBhcmUKKyAgIGRpc3Rpbmd1aXNoZWQgYnkgdGhl aXIgbmFtZSB3aGljaCBtdXN0IGJlIDxsaXRlcmFsPlNZU1RFTV9USU1FPC9saXRlcmFsPi4gIEFu eQorICAgb3RoZXIgbmFtZSBpcyBhbiBhcHBsaWNhdGlvbiBwZXJpb2QuCisgIDwvcGFyYT4KKwor ICA8c2VjdDIgaWQ9ImRkbC1wZXJpb2RzLWFwcGxpY2F0aW9uLXBlcmlvZHMiPgorICA8dGl0bGU+ QXBwbGljYXRpb24gUGVyaW9kczwvdGl0bGU+CisKKyAgIDxpbmRleHRlcm0+CisgICAgPHByaW1h cnk+cGVyaW9kPC9wcmltYXJ5PgorICAgIDxzZWNvbmRhcnk+YXBwbGljYXRpb248L3NlY29uZGFy eT4KKyAgIDwvaW5kZXh0ZXJtPgorCisgICA8cGFyYT4KKyAgICBBcHBsaWNhdGlvbiBwZXJpb2Rz IGFyZSBkZWZpbmVkIG9uIGEgdGFibGUgdXNpbmcgdGhlIGZvbGxvd2luZyBzeW50YXg6CisgICA8 L3BhcmE+CisKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBUQUJMRSBiaWxsaW5nX2FkZHJlc3Nl cyAoCisgIGN1c3RvbWVyX2lkIGludGVnZXIsCisgIGFkZHJlc3NfaWQgaW50ZWdlciwKKyAgdmFs aWRfZnJvbSBkYXRlLAorICB2YWxpZF90byBkYXRlLAorICA8ZW1waGFzaXM+UEVSSU9EIEZPUiB2 YWxpZGl0eSAodmFsaWRfZnJvbSwgdmFsaWRfdG8pPC9lbXBoYXNpcz4KKyk7Cis8L3Byb2dyYW1s aXN0aW5nPgorCisgICA8cGFyYT4KKyAgICBBcHBsaWNhdGlvbiBwZXJpb2RzIGNhbiBiZSB1c2Vk IHRvIGRlZmluZSB0ZW1wb3JhbCBwcmltYXJ5IGFuZCBmb3JlaWduIGtleXMuCisgICAgQW55IHRh YmxlIHdpdGggYSB0ZW1wb3JhbCBwcmltYXJ5IGtleSBpcyBhIHRlbXBvcmFsIHRhYmxlIGFuZCBz dXBwb3J0cyB0ZW1wb3JhbCB1cGRhdGUgYW5kIGRlbGV0ZSBjb21tYW5kcy4KKyAgIDwvcGFyYT4K KyAgPC9zZWN0Mj4KKworICA8c2VjdDIgaWQ9ImRkbC1wZXJpb2RzLXN5c3RlbS1wZXJpb2RzIj4K KyAgIDx0aXRsZT5TeXN0ZW0gUGVyaW9kczwvdGl0bGU+CisKKyAgIDxpbmRleHRlcm0+CisgICAg PHByaW1hcnk+cGVyaW9kPC9wcmltYXJ5PgorICAgIDxzZWNvbmRhcnk+c3lzdGVtPC9zZWNvbmRh cnk+CisgICA8L2luZGV4dGVybT4KKworICAgPHBhcmE+CisgICAgUGVyaW9kcyBmb3IgPGxpdGVy YWw+U1lTVEVNX1RJTUU8L2xpdGVyYWw+IGFyZSBjdXJyZW50bHkgbm90IGltcGxlbWVudGVkLgor ICAgPC9wYXJhPgorICA8L3NlY3QyPgorIDwvc2VjdDE+CisKICA8c2VjdDEgaWQ9ImRkbC1zeXN0 ZW0tY29sdW1ucyI+CiAgIDx0aXRsZT5TeXN0ZW0gQ29sdW1uczwvdGl0bGU+CiAKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbCBiL2RvYy9zcmMvc2dtbC9p bmZvcm1hdGlvbl9zY2hlbWEuc2dtbAppbmRleCA0MTAwMTk4MjUyLi5mMGUzMWI4NTU5IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1hLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sCkBAIC00MTcwLDYgKzQxNzAsNjkgQEAgT1JE RVIgQlkgYy5vcmRpbmFsX3Bvc2l0aW9uOwogICA8L3RhYmxlPgogIDwvc2VjdDE+CiAKKyA8c2Vj dDEgaWQ9ImluZm9zY2hlbWEtcGVyaW9kcyI+CisgIDx0aXRsZT48bGl0ZXJhbD5wZXJpb2RzPC9s aXRlcmFsPjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUaGUgdmlldyA8bGl0ZXJhbD5wYXJhbWV0 ZXJzPC9saXRlcmFsPiBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAgIHBlcmlvZHMg b2YgYWxsIHRhYmxlcyBpbiB0aGUgY3VycmVudCBkYXRhYmFzZS4gIFRoZSBzdGFydCBhbmQgZW5k IGNvbHVtbgorICAgbmFtZXMgYXJlIG9ubHkgc2hvd24gaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMg YWNjZXNzIHRvIHRoZW0gKGJ5IHdheSBvZiBiZWluZworICAgdGhlIG93bmVyIG9yIGhhdmluZyBz b21lIHByaXZpbGVnZSkuCisgIDwvcGFyYT4KKworICA8dGFibGU+CisgICA8dGl0bGU+PGxpdGVy YWw+cGVyaW9kczwvbGl0ZXJhbD4gQ29sdW1uczwvdGl0bGU+CisKKyAgIDx0Z3JvdXAgY29scz0i MyI+CisgICAgPHRoZWFkPgorICAgICA8cm93PgorICAgICAgPGVudHJ5Pk5hbWU8L2VudHJ5Pgor ICAgICAgPGVudHJ5PkRhdGEgVHlwZTwvZW50cnk+CisgICAgICA8ZW50cnk+RGVzY3JpcHRpb248 L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3RoZWFkPgorCisgICAgPHRib2R5PgorICAgICA8 cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPnRhYmxlX2NhdGFsb2c8L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2VudHJ5PgorICAg ICAgPGVudHJ5Pk5hbWUgb2YgdGhlIGRhdGFiYXNlIGNvbnRhaW5pbmcgdGhlIHBlcmlvZCAoYWx3 YXlzIHRoZSBjdXJyZW50IGRhdGFiYXNlKTwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxy b3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+dGFibGVfc2NoZW1hPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICA8ZW50cnk+PHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAg IDxlbnRyeT5OYW1lIG9mIHRoZSBzY2hlbWEgY29udGFpbmluZyB0aGUgcGVyaW9kPC9lbnRyeT4K KyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD50YWJsZV9u YW1lPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+c3FsX2lkZW50aWZpZXI8 L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9mIHRoZSB0YWJsZSBjb250YWluaW5n IHRoZSBwZXJpb2Q8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5PjxsaXRlcmFsPnBlcmlvZF9uYW1lPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+ PHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9m IHRoZSBwZXJpb2Q8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5PjxsaXRlcmFsPnN0YXJ0X2NvbHVtbl9uYW1lPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8 ZW50cnk+PHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5O YW1lIG9mIHRoZSBzdGFydCBjb2x1bW4gZm9yIHRoZSBwZXJpb2Q8L2VudHJ5PgorICAgICA8L3Jv dz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPmVuZF9jb2x1bW5fbmFtZTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBl PjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFtZSBvZiB0aGUgZW5kIGNvbHVtbiBmb3IgdGhlIHBl cmlvZDwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGJvZHk+CisgICA8L3Rncm91cD4KKyAg PC90YWJsZT4KKyA8L3NlY3QxPgorCiAgPHNlY3QxIGlkPSJpbmZvc2NoZW1hLXJlZmVyZW50aWFs LWNvbnN0cmFpbnRzIj4KICAgPHRpdGxlPjxsaXRlcmFsPnJlZmVyZW50aWFsX2NvbnN0cmFpbnRz PC9saXRlcmFsPjwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJf dGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAppbmRleCBjNWU1 ZTg0ZTA2Li4zODU5NzNjOTNhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3Rh YmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCkBAIC02MCw2 ICs2MCw4IEBAIEFMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIEFMVEVSIENPTlNUUkFJTlQgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+IFsg REVGRVJSQUJMRSB8IE5PVCBERUZFUlJBQkxFIF0gWyBJTklUSUFMTFkgREVGRVJSRUQgfCBJTklU SUFMTFkgSU1NRURJQVRFIF0KICAgICBWQUxJREFURSBDT05TVFJBSU5UIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2VhYmxlPgogICAgIERST1Ag Q09OU1RSQUlOVCBbIElGIEVYSVNUUyBdICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT4gWyBSRVNUUklDVCB8IENBU0NBREUgXQorICAg IEFERCBQRVJJT0QgRk9SIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfbmFt ZTwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN0YXJ0X2Nv bHVtbjwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZW5kX2Nv bHVtbjwvcmVwbGFjZWFibGU+ICkgWyBXSVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnBlcmlvZF9vcHRpb248L3JlcGxhY2VhYmxlPiA9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQorICAgIERST1AgUEVSSU9E IEZPUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2Vh YmxlPiBbIFJFU1RSSUNUIHwgQ0FTQ0FERSBdCiAgICAgRElTQUJMRSBUUklHR0VSIFsgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRyaWdnZXJfbmFtZTwvcmVwbGFjZWFibGU+IHwgQUxM IHwgVVNFUiBdCiAgICAgRU5BQkxFIFRSSUdHRVIgWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dHJpZ2dlcl9uYW1lPC9yZXBsYWNlYWJsZT4gfCBBTEwgfCBVU0VSIF0KICAgICBFTkFC TEUgUkVQTElDQSBUUklHR0VSIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmlnZ2Vy X25hbWU8L3JlcGxhY2VhYmxlPgpAQCAtNTU1LDYgKzU1NywyOSBAQCBXSVRIICggTU9EVUxVUyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJs ZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxp c3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5BREQgUEVSSU9EIEZPUjwvbGl0ZXJhbD48L3Rl cm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBhZGRzIGEg bmV3IHBlcmlvZCB0byBhIHRhYmxlIHVzaW5nIHRoZSBzYW1lIHN5bnRheCBhcworICAgICAgPHhy ZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXRhYmxlIi8+LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJt PjxsaXRlcmFsPkRST1AgUEVSSU9EIEZPUjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVt PgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBkcm9wcyB0aGUgc3BlY2lmaWVkIHBlcmlv ZCBvbiBhIHRhYmxlLiAgVGhlIHN0YXJ0IGFuZCBlbmQKKyAgICAgIGNvbHVtbnMgd2lsbCBub3Qg YmUgZHJvcHBlZCBieSB0aGlzIGNvbW1hbmQgYnV0IHRoZQorICAgICAgPGxpdGVyYWw+Q0hFQ0s8 L2xpdGVyYWw+IGNvbnN0cmFpbnQgd2lsbCBiZS4gIFlvdSB3aWxsIG5lZWQgdG8gc2F5CisgICAg ICA8bGl0ZXJhbD5DQVNDQURFPC9saXRlcmFsPiBpZiBhbnl0aGluZyBvdXRzaWRlIHRoZSB0YWJs ZSBkZXBlbmRzIG9uIHRoZQorICAgICAgY29sdW1uLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJt PjxsaXRlcmFsPkRJU0FCTEU8L2xpdGVyYWw+LzxsaXRlcmFsPkVOQUJMRSBbIFJFUExJQ0EgfCBB TFdBWVMgXSBUUklHR0VSPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NvbW1lbnQuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY29t bWVudC5zZ21sCmluZGV4IGUwN2ZjNDdmZDMuLjJmZmZhOTkyODkgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvY29tbWVudC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5z Z21sCkBAIC00NCw2ICs0NCw3IEBAIENPTU1FTlQgT04KICAgT1BFUkFUT1IgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm9wZXJhdG9yX25hbWU8L3JlcGxhY2VhYmxlPiAoPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxlZnRfdHlwZTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cmlnaHRfdHlwZTwvcmVwbGFjZWFibGU+KSB8CiAgIE9QRVJB VE9SIENMQVNTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vYmplY3RfbmFtZTwvcmVw bGFjZWFibGU+IFVTSU5HIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9tZXRo b2Q8L3JlcGxhY2VhYmxlPiB8CiAgIE9QRVJBVE9SIEZBTUlMWSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+b2JqZWN0X25hbWU8L3JlcGxhY2VhYmxlPiBVU0lORyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+aW5kZXhfbWV0aG9kPC9yZXBsYWNlYWJsZT4gfAorICBQRVJJT0Qg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlbGF0aW9uX25hbWU8L3JlcGxhY2VhYmxl Pi48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxl PiB8CiAgIFBPTElDWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cG9saWN5X25hbWU8 L3JlcGxhY2VhYmxlPiBPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFt ZTwvcmVwbGFjZWFibGU+IHwKICAgWyBQUk9DRURVUkFMIF0gTEFOR1VBR0UgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1lPC9yZXBsYWNlYWJsZT4gfAogICBQUk9DRURV UkUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnByb2NlZHVyZV9uYW1lPC9yZXBsYWNl YWJsZT4gWyAoIFsgWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YXJnbW9kZTwvcmVw bGFjZWFibGU+IF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YXJnbmFtZTwvcmVw bGFjZWFibGU+IF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFyZ3R5cGU8L3JlcGxh Y2VhYmxlPiBbLCAuLi5dIF0gKSBdIHwKQEAgLTMyNyw2ICszMjgsNyBAQCBDT01NRU5UIE9OIE9Q RVJBVE9SIF4gKHRleHQsIHRleHQpIElTICdQZXJmb3JtcyBpbnRlcnNlY3Rpb24gb2YgdHdvIHRl eHRzJzsKIENPTU1FTlQgT04gT1BFUkFUT1IgLSAoTk9ORSwgaW50ZWdlcikgSVMgJ1VuYXJ5IG1p bnVzJzsKIENPTU1FTlQgT04gT1BFUkFUT1IgQ0xBU1MgaW50NG9wcyBVU0lORyBidHJlZSBJUyAn NCBieXRlIGludGVnZXIgb3BlcmF0b3JzIGZvciBidHJlZXMnOwogQ09NTUVOVCBPTiBPUEVSQVRP UiBGQU1JTFkgaW50ZWdlcl9vcHMgVVNJTkcgYnRyZWUgSVMgJ2FsbCBpbnRlZ2VyIG9wZXJhdG9y cyBmb3IgYnRyZWVzJzsKK0NPTU1FTlQgT04gUEVSSU9EIG15X3RhYmxlLm15X2NvbHVtbiBJUyAn U2FsZXMgcHJvbW90aW9uIHZhbGlkaXR5JzsKIENPTU1FTlQgT04gUE9MSUNZIG15X3BvbGljeSBP TiBteXRhYmxlIElTICdGaWx0ZXIgcm93cyBieSB1c2Vycyc7CiBDT01NRU5UIE9OIFBST0NFRFVS RSBteV9wcm9jIChpbnRlZ2VyLCBpbnRlZ2VyKSBJUyAnUnVucyBhIHJlcG9ydCc7CiBDT01NRU5U IE9OIFBVQkxJQ0FUSU9OIGFsbHRhYmxlcyBJUyAnUHVibGlzaGVzIGFsbCBvcGVyYXRpb25zIG9u IGFsbCB0YWJsZXMnOwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKaW5kZXggMTVhZWQyZjI1 MS4uNmYxZjlmNGJiNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCkBAIC0yMyw2ICsy Myw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogPHN5bm9wc2lzPgogQ1JFQVRFIFsgWyBH TE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBb IElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFt ZTwvcmVwbGFjZWFibGU+ICggWwogICB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5j b2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5k YXRhX3R5cGU8L3JlcGxhY2VhYmxlPiBbIENPTVBSRVNTSU9OIDxyZXBsYWNlYWJsZT5jb21wcmVz c2lvbl9tZXRob2Q8L3JlcGxhY2VhYmxlPiBdIFsgQ09MTEFURSA8cmVwbGFjZWFibGU+Y29sbGF0 aW9uPC9yZXBsYWNlYWJsZT4gXSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1 bW5fY29uc3RyYWludDwvcmVwbGFjZWFibGU+IFsgLi4uIF0gXQorICAgIHwgPHJlcGxhY2VhYmxl PnBlcmlvZF9kZWZpbml0aW9uPC9yZXBsYWNlYWJsZT4KICAgICB8IDxyZXBsYWNlYWJsZT50YWJs ZV9jb25zdHJhaW50PC9yZXBsYWNlYWJsZT4KICAgICB8IExJS0UgPHJlcGxhY2VhYmxlPnNvdXJj ZV90YWJsZTwvcmVwbGFjZWFibGU+IFsgPHJlcGxhY2VhYmxlPmxpa2Vfb3B0aW9uPC9yZXBsYWNl YWJsZT4gLi4uIF0gfQogICAgIFssIC4uLiBdCkBAIC0zNyw2ICszOCw3IEBAIENSRUFURSBbIFsg R0xPQkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFSWSB8IFRFTVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUg WyBJRiBOT1QgRVhJCiBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBU RU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBPRiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHlwZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoCiAgIHsg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4g WyBXSVRIIE9QVElPTlMgXSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f Y29uc3RyYWludDwvcmVwbGFjZWFibGU+IFsgLi4uIF0gXQorICAgIHwgPHJlcGxhY2VhYmxlPnBl cmlvZF9kZWZpbml0aW9uPC9yZXBsYWNlYWJsZT4KICAgICB8IDxyZXBsYWNlYWJsZT50YWJsZV9j b25zdHJhaW50PC9yZXBsYWNlYWJsZT4gfQogICAgIFssIC4uLiBdCiApIF0KQEAgLTQ5LDYgKzUx LDcgQEAgQ1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwg VU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBFWEkKIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwg XSB7IFRFTVBPUkFSWSB8IFRFTVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJU1RT IF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxl PgogICAgIFBBUlRJVElPTiBPRiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFyZW50 X3RhYmxlPC9yZXBsYWNlYWJsZT4gWyAoCiAgIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWyBXSVRIIE9QVElPTlMgXSBbIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fY29uc3RyYWludDwvcmVwbGFjZWFibGU+IFsg Li4uIF0gXQorICAgIHwgPHJlcGxhY2VhYmxlPnBlcmlvZF9kZWZpbml0aW9uPC9yZXBsYWNlYWJs ZT4KICAgICB8IDxyZXBsYWNlYWJsZT50YWJsZV9jb25zdHJhaW50PC9yZXBsYWNlYWJsZT4gfQog ICAgIFssIC4uLiBdCiApIF0geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9CkBAIC03 Myw2ICs3NiwxMSBAQCBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBU RU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSQogICAgIFsgT04gREVMRVRFIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxhY2Vh YmxlPiBdIFsgT04gVVBEQVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVu dGlhbF9hY3Rpb248L3JlcGxhY2VhYmxlPiBdIH0KIFsgREVGRVJSQUJMRSB8IE5PVCBERUZFUlJB QkxFIF0gWyBJTklUSUFMTFkgREVGRVJSRUQgfCBJTklUSUFMTFkgSU1NRURJQVRFIF0KIAorPHBo cmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9kZWZpbml0aW9u PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CisKK1BFUklPRCBGT1IgeyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiB8IFNZU1RFTV9USU1F IH0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2Vh YmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNl YWJsZT4gKQorWyBXSVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9v cHRpb248L3JlcGxhY2VhYmxlPiA9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1 ZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQorCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dGFibGVfY29uc3RyYWludDwvcmVwbGFjZWFibGU+IGlzOjwvcGhy YXNlPgogCiBbIENPTlNUUkFJTlQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbnN0 cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+IF0KQEAgLTEzNSw2ICsxNDMsMTQgQEAgV0lUSCAoIE1P RFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVw bGFjZWFibGU+LCBSRU0KICAgIG5hbWUgYXMgYW55IGV4aXN0aW5nIGRhdGEgdHlwZSBpbiB0aGUg c2FtZSBzY2hlbWEuCiAgIDwvcGFyYT4KIAorICA8cGFyYT4KKyAgIFBlcmlvZHMgbXkgYmUgZGVm aW5lZCBvbiB0YWJsZXMsIHNwZWNpZnlpbmcgdGhhdCB0d28gZXhpc3RpbmcgY29sdW1ucworICAg cmVwcmVzZW50IHN0YXJ0IGFuZCBlbmQgdmFsdWVzIGZvciB0aGUgcGVyaW9kLiAgUGVyaW9kcyBt YXkgaGF2ZSBhbnkgbmFtZQorICAgdGhhdCBkb2Vzbid0IGNvbmZsaWN0IHdpdGggYSBjb2x1bW4g bmFtZSwgYnV0IHRoZSBuYW1lCisgICA8bGl0ZXJhbD5TWVNURU1fVElNRTwvbGl0ZXJhbD4gaXMg c3BlY2lhbCwgdXNlZCBmb3IgdmVyc2lvbmluZyB0YWJsZXMuCisgICBTeXN0ZW0gcGVyaW9kcyBh cmUgbm90IHlldCBpbXBsZW1lbnRlZC4gIFNlZSA8eHJlZiBsaW5rZW5kPSJkZGwtcGVyaW9kcyIv PiBmb3IgbW9yZSBkZXRhaWxzLgorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBUaGUgb3B0aW9u YWwgY29uc3RyYWludCBjbGF1c2VzIHNwZWNpZnkgY29uc3RyYWludHMgKHRlc3RzKSB0aGF0CiAg ICBuZXcgb3IgdXBkYXRlZCByb3dzIG11c3Qgc2F0aXNmeSBmb3IgYW4gaW5zZXJ0IG9yIHVwZGF0 ZSBvcGVyYXRpb24KQEAgLTc0OSw2ICs3NjUsMjkgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0K ICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+ CisgICAgPHRlcm0+PGxpdGVyYWw+UEVSSU9EIEZPUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiApIFsgV0lUSCAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2Rfb3B0aW9uPC9yZXBsYWNlYWJsZT4gPSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF08 L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBBIHBl cmlvZCBkZWZpbml0aW9uIGdpdmVzIHNlbWFudGljIG1lYW5pbmcgdG8gdHdvIGV4aXN0aW5nIGNv bHVtbnMgb2YKKyAgICAgIHRoZSB0YWJsZS4gIEl0IGRlZmluZXMgYSAic3RhcnQgY29sdW1uIiBh bmQgYW4gImVuZCBjb2x1bW4iIHdoZXJlIHRoZQorICAgICAgc3RhcnQgdmFsdWUgaXMgc3RyaWN0 bHkgbGVzcyB0aGFuIHRoZSBlbmQgdmFsdWUuICBBCisgICAgICA8bGl0ZXJhbD5DSEVDSzwvbGl0 ZXJhbD4gY29uc3RyYWludCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdG8gZW5mb3JjZQorICAg ICAgdGhpcy4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgQm90aCBjb2x1bW5z IG11c3QgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIHR5cGUgYW5kIG11c3QgaGF2ZSBhIHJhbmdlIHR5 cGUKKyAgICAgIGRlZmluZWQgZnJvbSB0aGVpciBiYXNlIHR5cGUuICBJZiB0aGVyZSBhcmUgc2V2 ZXJhbCByYW5nZSB0eXBlcyBmb3IgdGhhdAorICAgICAgYmFzZSB0eXBlLCB5b3UgbXVzdCBzcGVj aWZ5IHdoaWNoIG9uZSB5b3Ugd2FudCBieSB1c2luZyB0aGUKKyAgICAgIDxsaXRlcmFsPnJhbmdl dHlwZTwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9vcHRp b248L3JlcGxhY2VhYmxlPi4KKyAgICAgIEFueSBiYXNlIHR5cGUgaXMgYWxsb3dlZCwgYXMgbG9u ZyBhcyBpdCBoYXMgYSByYW5nZSB0eXBlLCBhbHRob3VnaCBpdCBpcworICAgICAgZXhwZWN0ZWQg dGhhdCBtb3N0IHBlcmlvZHMgd2lsbCB1c2UgdGVtcG9yYWwgdHlwZXMgbGlrZSA8bGl0ZXJhbD50 aW1lc3RhbXB0ejwvbGl0ZXJhbD4KKyAgICAgIG9yIDxsaXRlcmFsPmRhdGU8L2xpdGVyYWw+Lgor ICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8 dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFsPkNPTlNUUkFJTlQgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+PC9saXRlcmFs PjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQppbmRleCA2OWY5ZGQ1MWE3 Li5hMGU4ODhmZWVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCisr KyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUKQEAgLTM2LDYgKzM2LDcgQEAgT0JKUyA9 IFwKIAlwZ19sYXJnZW9iamVjdC5vIFwKIAlwZ19uYW1lc3BhY2UubyBcCiAJcGdfb3BlcmF0b3Iu byBcCisJcGdfcGVyaW9kLm8gXAogCXBnX3Byb2MubyBcCiAJcGdfcHVibGljYXRpb24ubyBcCiAJ cGdfcmFuZ2UubyBcCkBAIC02Niw3ICs2Nyw3IEBAIENBVEFMT0dfSEVBREVSUyA6PSBcCiAJcGdf Zm9yZWlnbl9kYXRhX3dyYXBwZXIuaCBwZ19mb3JlaWduX3NlcnZlci5oIHBnX3VzZXJfbWFwcGlu Zy5oIFwKIAlwZ19mb3JlaWduX3RhYmxlLmggcGdfcG9saWN5LmggcGdfcmVwbGljYXRpb25fb3Jp Z2luLmggXAogCXBnX2RlZmF1bHRfYWNsLmggcGdfaW5pdF9wcml2cy5oIHBnX3NlY2xhYmVsLmgg cGdfc2hzZWNsYWJlbC5oIFwKLQlwZ19jb2xsYXRpb24uaCBwZ19wYXJ0aXRpb25lZF90YWJsZS5o IHBnX3JhbmdlLmggcGdfdHJhbnNmb3JtLmggXAorCXBnX2NvbGxhdGlvbi5oIHBnX3BhcnRpdGlv bmVkX3RhYmxlLmggcGdfcGVyaW9kLmggcGdfcmFuZ2UuaCBwZ190cmFuc2Zvcm0uaCBcCiAJcGdf c2VxdWVuY2UuaCBwZ19wdWJsaWNhdGlvbi5oIHBnX3B1YmxpY2F0aW9uX3JlbC5oIHBnX3N1YnNj cmlwdGlvbi5oIFwKIAlwZ19zdWJzY3JpcHRpb25fcmVsLmgKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9hY2xjaGsuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMKaW5k ZXggNTMzOTI0MTRmMS4uOGY2ZDQ1MzE1OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9hY2xjaGsuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCkBAIC0zNDMyLDYg KzM0MzIsNyBAQCBhY2xjaGVja19lcnJvcihBY2xSZXN1bHQgYWNsZXJyLCBPYmplY3RUeXBlIG9i anR5cGUsCiAJCQkJCWNhc2UgT0JKRUNUX0RFRkFVTFQ6CiAJCQkJCWNhc2UgT0JKRUNUX0RFRkFD TDoKIAkJCQkJY2FzZSBPQkpFQ1RfRE9NQ09OU1RSQUlOVDoKKwkJCQkJY2FzZSBPQkpFQ1RfUEVS SU9EOgogCQkJCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9SRUw6CiAJCQkJCWNhc2UgT0JKRUNU X1JPTEU6CiAJCQkJCWNhc2UgT0JKRUNUX1JVTEU6CkBAIC0zNTcxLDYgKzM1NzIsNyBAQCBhY2xj aGVja19lcnJvcihBY2xSZXN1bHQgYWNsZXJyLCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNh c2UgT0JKRUNUX0RFRkFVTFQ6CiAJCQkJCWNhc2UgT0JKRUNUX0RFRkFDTDoKIAkJCQkJY2FzZSBP QkpFQ1RfRE9NQ09OU1RSQUlOVDoKKwkJCQkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQkJCQljYXNl IE9CSkVDVF9QVUJMSUNBVElPTl9SRUw6CiAJCQkJCWNhc2UgT0JKRUNUX1JPTEU6CiAJCQkJCWNh c2UgT0JKRUNUX1RSQU5TRk9STToKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVw ZW5kZW5jeS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKaW5kZXggMGMzN2Zj MWQ1My4uZDE4N2FkYTBmYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRl bmN5LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKQEAgLTQ1LDYgKzQ1 LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3MuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX29wZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGZhbWlseS5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wb2xpY3kuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmgiCkBAIC0xNDksNiArMTUwLDcgQEAgc3RhdGljIGNvbnN0IE9pZCBvYmplY3RfY2xh c3Nlc1tdID0gewogCUNhc3RSZWxhdGlvbklkLAkJCQkvKiBPQ0xBU1NfQ0FTVCAqLwogCUNvbGxh dGlvblJlbGF0aW9uSWQsCQkvKiBPQ0xBU1NfQ09MTEFUSU9OICovCiAJQ29uc3RyYWludFJlbGF0 aW9uSWQsCQkvKiBPQ0xBU1NfQ09OU1RSQUlOVCAqLworCVBlcmlvZFJlbGF0aW9uSWQsCQkJLyog T0NMQVNTX1BFUklPRCAqLwogCUNvbnZlcnNpb25SZWxhdGlvbklkLAkJLyogT0NMQVNTX0NPTlZF UlNJT04gKi8KIAlBdHRyRGVmYXVsdFJlbGF0aW9uSWQsCQkvKiBPQ0xBU1NfREVGQVVMVCAqLwog CUxhbmd1YWdlUmVsYXRpb25JZCwJCQkvKiBPQ0xBU1NfTEFOR1VBR0UgKi8KQEAgLTE0MzAsNiAr MTQzMiwxMCBAQCBkb0RlbGV0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgaW50IGZs YWdzKQogCQkJUmVtb3ZlQ29uc3RyYWludEJ5SWQob2JqZWN0LT5vYmplY3RJZCk7CiAJCQlicmVh azsKIAorCQljYXNlIE9DTEFTU19QRVJJT0Q6CisJCQlSZW1vdmVQZXJpb2RCeUlkKG9iamVjdC0+ b2JqZWN0SWQpOworCQkJYnJlYWs7CisKIAkJY2FzZSBPQ0xBU1NfREVGQVVMVDoKIAkJCVJlbW92 ZUF0dHJEZWZhdWx0QnlJZChvYmplY3QtPm9iamVjdElkKTsKIAkJCWJyZWFrOwpAQCAtMjc3Myw2 ICsyNzc5LDkgQEAgZ2V0T2JqZWN0Q2xhc3MoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KQog CQljYXNlIENvbnN0cmFpbnRSZWxhdGlvbklkOgogCQkJcmV0dXJuIE9DTEFTU19DT05TVFJBSU5U OwogCisJCWNhc2UgUGVyaW9kUmVsYXRpb25JZDoKKwkJCXJldHVybiBPQ0xBU1NfUEVSSU9EOwor CiAJCWNhc2UgQ29udmVyc2lvblJlbGF0aW9uSWQ6CiAJCQlyZXR1cm4gT0NMQVNTX0NPTlZFUlNJ T047CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggMDkzNzBhOGE1YS4uNDhjNzBiNjYwNSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9o ZWFwLmMKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX25hbWVzcGFjZS5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf cGFydGl0aW9uZWRfdGFibGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb25fcmVsLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlLmgiCkBAIC0y MjAyLDYgKzIyMDMsNzIgQEAgU2V0QXR0ck1pc3NpbmcoT2lkIHJlbGlkLCBjaGFyICphdHRuYW1l LCBjaGFyICp2YWx1ZSkKIAl0YWJsZV9jbG9zZSh0YWJsZXJlbCwgQWNjZXNzRXhjbHVzaXZlTG9j ayk7CiB9CiAKKy8qCisgKiBTdG9yZSBhIHBlcmlvZCBvZiByZWxhdGlvbiByZWwuCisgKgorICog UmV0dXJucyB0aGUgT0lEIG9mIHRoZSBuZXcgcGdfcGVyaW9kIHR1cGxlLgorICovCitPaWQKK1N0 b3JlUGVyaW9kKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqcGVyaW9kbmFtZSwgQXR0ck51bWJl ciBzdGFydG51bSwKKwkJCUF0dHJOdW1iZXIgZW5kbnVtLCBPaWQgcm5ndHlwaWQsIE9pZCBjb25v aWQpCit7CisJRGF0dW0JCXZhbHVlc1tOYXR0c19wZ19wZXJpb2RdOworCWJvb2wJCW51bGxzW05h dHRzX3BnX3BlcmlvZF07CisJUmVsYXRpb24JcGdfcGVyaW9kOworCUhlYXBUdXBsZQl0dXBsZTsK KwlPaWQJCQlvaWQ7CisJTmFtZURhdGEJcGVybmFtZTsKKwlPYmplY3RBZGRyZXNzCW15c2VsZiwg cmVmZXJlbmNlZDsKKworCW5hbWVzdHJjcHkoJnBlcm5hbWUsIHBlcmlvZG5hbWUpOworCisJTWVt U2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOworCU1lbVNldChudWxscywgZmFsc2UsIHNp emVvZihudWxscykpOworCisJcGdfcGVyaW9kID0gdGFibGVfb3BlbihQZXJpb2RSZWxhdGlvbklk LCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCW9pZCA9IEdldE5ld09pZFdpdGhJbmRleChwZ19wZXJp b2QsIEF0dHJEZWZhdWx0T2lkSW5kZXhJZCwgQW51bV9wZ19wZXJpb2Rfb2lkKTsKKwl2YWx1ZXNb QW51bV9wZ19wZXJpb2Rfb2lkIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKG9pZCk7CisJdmFsdWVz W0FudW1fcGdfcGVyaW9kX3Blcm5hbWUgLSAxXSA9IE5hbWVHZXREYXR1bSgmcGVybmFtZSk7CisJ dmFsdWVzW0FudW1fcGdfcGVyaW9kX3BlcnJlbGlkIC0gMV0gPSBSZWxhdGlvbkdldFJlbGlkKHJl bCk7CisJdmFsdWVzW0FudW1fcGdfcGVyaW9kX3BlcnN0YXJ0IC0gMV0gPSBzdGFydG51bTsKKwl2 YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVyZW5kIC0gMV0gPSBlbmRudW07CisJdmFsdWVzW0FudW1f cGdfcGVyaW9kX3BlcnJuZ3R5cGUgLSAxXSA9IHJuZ3R5cGlkOworCXZhbHVlc1tBbnVtX3BnX3Bl cmlvZF9wZXJjb25zdHJhaW50IC0gMV0gPSBjb25vaWQ7CisJdmFsdWVzW0FudW1fcGdfcGVyaW9k X3BlcmlzbG9jYWwgLSAxXSA9IHRydWU7CisJdmFsdWVzW0FudW1fcGdfcGVyaW9kX3BlcmluaGNv dW50IC0gMV0gPSAwOworCisJdHVwbGUgPSBoZWFwX2Zvcm1fdHVwbGUoUmVsYXRpb25HZXREZXNj cihwZ19wZXJpb2QpLCB2YWx1ZXMsIG51bGxzKTsKKwlDYXRhbG9nVHVwbGVJbnNlcnQocGdfcGVy aW9kLCB0dXBsZSk7CisKKwlPYmplY3RBZGRyZXNzU2V0KG15c2VsZiwgUGVyaW9kUmVsYXRpb25J ZCwgb2lkKTsKKworCS8qIERyb3AgdGhlIHBlcmlvZCB3aGVuIHRoZSB0YWJsZSBpcyBkcm9wcGVk LiAqLworCU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNlZCwgUmVsYXRpb25SZWxhdGlvbklkLCBS ZWxhdGlvbkdldFJlbGlkKHJlbCkpOworCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVm ZXJlbmNlZCwgREVQRU5ERU5DWV9BVVRPKTsKKworCS8qIEZvcmJpZCBkcm9wcGluZyB0aGUgY29s dW1ucyBvZiB0aGUgcGVyaW9kLiAqLworCU9iamVjdEFkZHJlc3NTdWJTZXQocmVmZXJlbmNlZCwg UmVsYXRpb25SZWxhdGlvbklkLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIHN0YXJ0bnVtKTsKKwly ZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfTk9STUFM KTsKKwlPYmplY3RBZGRyZXNzU3ViU2V0KHJlZmVyZW5jZWQsIFJlbGF0aW9uUmVsYXRpb25JZCwg UmVsYXRpb25HZXRSZWxpZChyZWwpLCBlbmRudW0pOworCXJlY29yZERlcGVuZGVuY3lPbigmbXlz ZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9OT1JNQUwpOworCisJLyogTWFrZSBzdXJlIHdl IGRvbid0IGxvc2Ugb3VyIHJhbmdldHlwZS4gKi8KKwlPYmplY3RBZGRyZXNzU2V0KHJlZmVyZW5j ZWQsIFR5cGVSZWxhdGlvbklkLCBybmd0eXBpZCk7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNl bGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX05PUk1BTCk7CisKKwkvKgorCSAqIFRoZSBjb25z dHJhaW50IGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCwgc28gd2UgbWFyayBpdCBhcyBzdWNo LgorCSAqIChOb3RlIHRoYXQgbXlzZWxmIGFuZCByZWZlcmVuY2VkIGFyZSByZXZlcnNlZCBmb3Ig dGhpcyBvbmUuKQorCSAqLworCU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNlZCwgQ29uc3RyYWlu dFJlbGF0aW9uSWQsIGNvbm9pZCk7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZyZWZlcmVuY2VkLCAm bXlzZWxmLCBERVBFTkRFTkNZX0lOVEVSTkFMKTsKKworCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwg Um93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1cm4gb2lkOworfQorCiAvKgogICogU3RvcmUgYSBk ZWZhdWx0IGV4cHJlc3Npb24gZm9yIGNvbHVtbiBhdHRudW0gb2YgcmVsYXRpb24gcmVsLgogICoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbCBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbAppbmRleCAxMWQ5ZGQ2 MGMyLi41NzU4NzAzZjdhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0 aW9uX3NjaGVtYS5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hl bWEuc3FsCkBAIC0xMTk4LDcgKzExOTgsMjkgQEAgR1JBTlQgU0VMRUNUIE9OIHBhcmFtZXRlcnMg VE8gUFVCTElDOwogICogUEVSSU9EUyB2aWV3CiAgKi8KIAotLS0gZmVhdHVyZSBub3Qgc3VwcG9y dGVkCitDUkVBVEUgVklFVyBwZXJpb2RzIEFTCisgICAgU0VMRUNUIGN1cnJlbnRfZGF0YWJhc2Uo KTo6aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyIEFTIHRhYmxlX2NhdGFsb2csCisg ICAgICAgICAgIG5jLm5zcG5hbWU6OmluZm9ybWF0aW9uX3NjaGVtYS5zcWxfaWRlbnRpZmllciBB UyB0YWJsZV9zY2hlbWEsCisgICAgICAgICAgIGMucmVsbmFtZTo6aW5mb3JtYXRpb25fc2NoZW1h LnNxbF9pZGVudGlmaWVyIEFTIHRhYmxlX25hbWUsCisgICAgICAgICAgIHAucGVybmFtZTo6aW5m b3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyIEFTIHBlcmlvZF9uYW1lLAorICAgICAgICAg ICBDQVNFIFdIRU4gcGdfaGFzX3JvbGUoYy5yZWxvd25lciwgJ1VTQUdFJykKKyAgICAgICAgICAg ICAgICAgIE9SIGhhc19jb2x1bW5fcHJpdmlsZWdlKHNhLmF0dHJlbGlkLCBzYS5hdHRudW0sICdT RUxFQ1QsIElOU0VSVCwgVVBEQVRFLCBSRUZFUkVOQ0VTJykKKyAgICAgICAgICAgICAgICBUSEVO IHNhLmF0dG5hbWU6OmluZm9ybWF0aW9uX3NjaGVtYS5zcWxfaWRlbnRpZmllcgorICAgICAgICAg ICBFTkQgQVMgc3RhcnRfY29sdW1uX25hbWUsCisgICAgICAgICAgIENBU0UgV0hFTiBwZ19oYXNf cm9sZShjLnJlbG93bmVyLCAnVVNBR0UnKQorICAgICAgICAgICAgICAgICAgT1IgaGFzX2NvbHVt bl9wcml2aWxlZ2UoZWEuYXR0cmVsaWQsIGVhLmF0dG51bSwgJ1NFTEVDVCwgSU5TRVJULCBVUERB VEUsIFJFRkVSRU5DRVMnKQorICAgICAgICAgICAgICAgIFRIRU4gZWEuYXR0bmFtZTo6aW5mb3Jt YXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyCisgICAgICAgICAgIEVORCBBUyBlbmRfY29sdW1u X25hbWUKKyAgICBGUk9NIHBnX3BlcmlvZCBBUyBwCisgICAgSk9JTiBwZ19jbGFzcyBBUyBjIE9O IGMub2lkID0gcC5wZXJyZWxpZAorICAgIEpPSU4gcGdfbmFtZXNwYWNlIEFTIG5jIE9OIG5jLm9p ZCA9IGMucmVsbmFtZXNwYWNlCisgICAgSk9JTiBwZ19hdHRyaWJ1dGUgQVMgc2EgT04gKHNhLmF0 dHJlbGlkLCBzYS5hdHRudW0pID0gKHAucGVycmVsaWQsIHAucGVyc3RhcnQpCisgICAgSk9JTiBw Z19hdHRyaWJ1dGUgQVMgZWEgT04gKGVhLmF0dHJlbGlkLCBlYS5hdHRudW0pID0gKHAucGVycmVs aWQsIHAucGVyZW5kKQorICAgIFdIRVJFIE5PVCBwZ19pc19vdGhlcl90ZW1wX3NjaGVtYShuYy5v aWQpCisgICAgICAtLUFORCBjLnJlbGtpbmQgPSBBTlkgKEFSUkFZWydyJ10pOworICAgICAgQU5E IGMucmVsa2luZCBJTiAoJ3InLCAndicpOworCitHUkFOVCBTRUxFQ1QgT04gcGVyaW9kcyBUTyBQ VUJMSUM7CiAKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRk cmVzcy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKaW5kZXggOTg4MmU1 NDljNC4uZjI0Yzg4OGRjNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3Rh ZGRyZXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKQEAgLTQ1 LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3MuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX29wZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGZhbWlseS5oIgor I2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wb2xp Y3kuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmgiCkBAIC03MTMsNiArNzE0LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg b2JqZWN0X3R5cGVfbWFwCiAJewogCQkiZG9tYWluIGNvbnN0cmFpbnQiLCBPQkpFQ1RfRE9NQ09O U1RSQUlOVAogCX0sCisJLyogT0NMQVNTX1BFUklPRCAqLworCXsKKwkJInBlcmlvZCIsIE9CSkVD VF9QRVJJT0QKKwl9LAogCS8qIE9DTEFTU19DT05WRVJTSU9OICovCiAJewogCQkiY29udmVyc2lv biIsIE9CSkVDVF9DT05WRVJTSU9OCkBAIC05NzYsNiArOTgxLDcgQEAgZ2V0X29iamVjdF9hZGRy ZXNzKE9iamVjdFR5cGUgb2JqdHlwZSwgTm9kZSAqb2JqZWN0LAogCQkJY2FzZSBPQkpFQ1RfVFJJ R0dFUjoKIAkJCWNhc2UgT0JKRUNUX1RBQkNPTlNUUkFJTlQ6CiAJCQljYXNlIE9CSkVDVF9QT0xJ Q1k6CisJCQljYXNlIE9CSkVDVF9QRVJJT0Q6CiAJCQkJYWRkcmVzcyA9IGdldF9vYmplY3RfYWRk cmVzc19yZWxvYmplY3Qob2JqdHlwZSwgY2FzdE5vZGUoTGlzdCwgb2JqZWN0KSwKIAkJCQkJCQkJ CQkJCQkgICAmcmVsYXRpb24sIG1pc3Npbmdfb2spOwogCQkJCWJyZWFrOwpAQCAtMTQ2Nyw2ICsx NDczLDEzIEBAIGdldF9vYmplY3RfYWRkcmVzc19yZWxvYmplY3QoT2JqZWN0VHlwZSBvYmp0eXBl LCBMaXN0ICpvYmplY3QsCiAJCQkJSW52YWxpZE9pZDsKIAkJCWFkZHJlc3Mub2JqZWN0U3ViSWQg PSAwOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1BFUklPRDoKKwkJCWFkZHJlc3MuY2xhc3NJ ZCA9IFBlcmlvZFJlbGF0aW9uSWQ7CisJCQlhZGRyZXNzLm9iamVjdElkID0gcmVsYXRpb24gPwor CQkJCWdldF9yZWxhdGlvbl9wZXJpb2Rfb2lkKHJlbG9pZCwgZGVwbmFtZSwgbWlzc2luZ19vaykg OgorCQkJCUludmFsaWRPaWQ7CisJCQlhZGRyZXNzLm9iamVjdFN1YklkID0gMDsKKwkJCWJyZWFr OwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBvYmp0eXBlOiAlZCIs IChpbnQpIG9ianR5cGUpOwogCX0KQEAgLTIyNjUsNiArMjI3OCw3IEBAIHBnX2dldF9vYmplY3Rf YWRkcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCQljYXNlIE9CSkVDVF9SVUxFOgogCQljYXNlIE9C SkVDVF9UUklHR0VSOgogCQljYXNlIE9CSkVDVF9UQUJDT05TVFJBSU5UOgorCQljYXNlIE9CSkVD VF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX09QQ0xBU1M6CiAJCWNhc2UgT0JKRUNUX09QRkFNSUxZ OgogCQkJb2Jqbm9kZSA9IChOb2RlICopIG5hbWU7CkBAIC0yMzc5LDYgKzIzOTMsNyBAQCBjaGVj a19vYmplY3Rfb3duZXJzaGlwKE9pZCByb2xlaWQsIE9iamVjdFR5cGUgb2JqdHlwZSwgT2JqZWN0 QWRkcmVzcyBhZGRyZXNzLAogCQljYXNlIE9CSkVDVF9UUklHR0VSOgogCQljYXNlIE9CSkVDVF9Q T0xJQ1k6CiAJCWNhc2UgT0JKRUNUX1RBQkNPTlNUUkFJTlQ6CisJCWNhc2UgT0JKRUNUX1BFUklP RDoKIAkJCWlmICghcGdfY2xhc3Nfb3duZXJjaGVjayhSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9u KSwgcm9sZWlkKSkKIAkJCQlhY2xjaGVja19lcnJvcihBQ0xDSEVDS19OT1RfT1dORVIsIG9ianR5 cGUsCiAJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKTsKQEAgLTMw MjIsNiArMzAzNywzOCBAQCBnZXRPYmplY3REZXNjcmlwdGlvbihjb25zdCBPYmplY3RBZGRyZXNz ICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNlIE9D TEFTU19QRVJJT0Q6CisJCQl7CisJCQkJSGVhcFR1cGxlCXBlclR1cDsKKwkJCQlGb3JtX3BnX3Bl cmlvZCBwZXI7CisKKwkJCQlwZXJUdXAgPSBTZWFyY2hTeXNDYWNoZTEoUEVSSU9ET0lELAorCQkJ CQkJCQkJCSBPYmplY3RJZEdldERhdHVtKG9iamVjdC0+b2JqZWN0SWQpKTsKKwkJCQlpZiAoIUhl YXBUdXBsZUlzVmFsaWQocGVyVHVwKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBm YWlsZWQgZm9yIHBlcmlvZCAldSIsCisJCQkJCQkgb2JqZWN0LT5vYmplY3RJZCk7CisJCQkJcGVy ID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QocGVyVHVwKTsKKworCQkJCWlmIChPaWRJc1Zh bGlkKHBlci0+cGVycmVsaWQpKQorCQkJCXsKKwkJCQkJU3RyaW5nSW5mb0RhdGEgcmVsOworCisJ CQkJCWluaXRTdHJpbmdJbmZvKCZyZWwpOworCQkJCQlnZXRSZWxhdGlvbkRlc2NyaXB0aW9uKCZy ZWwsIHBlci0+cGVycmVsaWQsIGZhbHNlKTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVy LCBfKCJwZXJpb2QgJXMgb24gJXMiKSwKKwkJCQkJCQkJCSBOYW1lU3RyKHBlci0+cGVybmFtZSks IHJlbC5kYXRhKTsKKwkJCQkJcGZyZWUocmVsLmRhdGEpOworCQkJCX0KKwkJCQllbHNlCisJCQkJ eworCQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInBlcmlvZCAlcyIpLAorCQkJCQkJ CQkJIE5hbWVTdHIocGVyLT5wZXJuYW1lKSk7CisJCQkJfQorCisJCQkJUmVsZWFzZVN5c0NhY2hl KHBlclR1cCk7CisJCQkJYnJlYWs7CisJCQl9CisKIAkJY2FzZSBPQ0xBU1NfQ09OVkVSU0lPTjoK IAkJCXsKIAkJCQlIZWFwVHVwbGUJY29uVHVwOwpAQCAtNDM1Niw2ICs0NDAzLDEwIEBAIGdldE9i amVjdFR5cGVEZXNjcmlwdGlvbihjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGJvb2wgbWlz c2luZ19vaykKIAkJCQkJCQkJCQkgbWlzc2luZ19vayk7CiAJCQlicmVhazsKIAorCQljYXNlIE9D TEFTU19QRVJJT0Q6CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsICJwZXJpb2Qi KTsKKwkJCWJyZWFrOworCiAJCWNhc2UgT0NMQVNTX0NPTlZFUlNJT046CiAJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKCZidWZmZXIsICJjb252ZXJzaW9uIik7CiAJCQlicmVhazsKQEAgLTQ4NTEs NiArNDkwMiwyOCBAQCBnZXRPYmplY3RJZGVudGl0eVBhcnRzKGNvbnN0IE9iamVjdEFkZHJlc3Mg Km9iamVjdCwKIAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNlIE9DTEFTU19QRVJJT0Q6CisJCQl7 CisJCQkJSGVhcFR1cGxlCXBlclR1cDsKKwkJCQlGb3JtX3BnX3BlcmlvZCBwZXI7CisKKwkJCQlw ZXJUdXAgPSBTZWFyY2hTeXNDYWNoZTEoUEVSSU9ET0lELAorCQkJCQkJCQkJCSBPYmplY3RJZEdl dERhdHVtKG9iamVjdC0+b2JqZWN0SWQpKTsKKwkJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQocGVy VHVwKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHBlcmlvZCAl dSIsCisJCQkJCQkgb2JqZWN0LT5vYmplY3RJZCk7CisJCQkJcGVyID0gKEZvcm1fcGdfcGVyaW9k KSBHRVRTVFJVQ1QocGVyVHVwKTsKKworCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwgIiVz IG9uICIsCisJCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKE5hbWVTdHIocGVyLT5wZXJuYW1lKSkp OworCQkJCWdldFJlbGF0aW9uSWRlbnRpdHkoJmJ1ZmZlciwgcGVyLT5wZXJyZWxpZCwgb2JqbmFt ZSwgZmFsc2UpOworCQkJCWlmIChvYmpuYW1lKQorCQkJCQkqb2JqbmFtZSA9IGxhcHBlbmQoKm9i am5hbWUsIHBzdHJkdXAoTmFtZVN0cihwZXItPnBlcm5hbWUpKSk7CisKKwkJCQlSZWxlYXNlU3lz Q2FjaGUocGVyVHVwKTsKKwkJCQlicmVhazsKKwkJCX0KKwogCQljYXNlIE9DTEFTU19DT05WRVJT SU9OOgogCQkJewogCQkJCUhlYXBUdXBsZQljb25UdXA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX3BlcmlvZC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wZXJpb2QuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wMTM4Njk4Njc0Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wZXJpb2QuYwpAQCAtMCwwICsxLDEw NiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdfcGVyaW9kLmMKKyAqCSAgcm91dGlu ZXMgdG8gc3VwcG9ydCBtYW5pcHVsYXRpb24gb2YgdGhlIHBnX3BlcmlvZCByZWxhdGlvbgorICoK KyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDE4LCBQb3N0Z3JlU1FMIEdsb2JhbCBE ZXZlbG9wbWVudCBHcm91cAorICoKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFj a2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNp bmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCisjaW5jbHVk ZSAiYWNjZXNzL2hlYXBhbS5oIgorI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNp bmNsdWRlICJjYXRhbG9nL2luZGV4aW5nLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJpb2Qu aCIKKyNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNo ZS5oIgorI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgi CisKKworLyoKKyAqIERlbGV0ZSBhIHNpbmdsZSBwZXJpb2QgcmVjb3JkLgorICovCit2b2lkCitS ZW1vdmVQZXJpb2RCeUlkKE9pZCBwZXJpb2RJZCkKK3sKKwlSZWxhdGlvbglwZ19wZXJpb2Q7CisJ SGVhcFR1cGxlCXR1cDsKKworCXBnX3BlcmlvZCA9IHRhYmxlX29wZW4oUGVyaW9kUmVsYXRpb25J ZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoUEVSSU9ET0lE LCBPYmplY3RJZEdldERhdHVtKHBlcmlvZElkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1 cCkpIC8qIHNob3VsZCBub3QgaGFwcGVuICovCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAg ZmFpbGVkIGZvciBwZXJpb2QgJXUiLCBwZXJpb2RJZCk7CisKKwkvKiBGcnkgdGhlIHBlcmlvZCBp dHNlbGYgKi8KKwlDYXRhbG9nVHVwbGVEZWxldGUocGdfcGVyaW9kLCAmdHVwLT50X3NlbGYpOwor CisJLyogQ2xlYW4gdXAgKi8KKwlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwl0YWJsZV9jbG9zZShw Z19wZXJpb2QsIFJvd0V4Y2x1c2l2ZUxvY2spOworfQorCisvKgorICogZ2V0X3JlbGF0aW9uX3Bl cmlvZF9vaWQKKyAqCQlGaW5kIGEgcGVyaW9kIG9uIHRoZSBzcGVjaWZpZWQgcmVsYXRpb24gd2l0 aCB0aGUgc3BlY2lmaWVkIG5hbWUuCisgKgkJUmV0dXJucyBwZXJpb2QncyBPSUQuCisgKi8KK09p ZAorZ2V0X3JlbGF0aW9uX3BlcmlvZF9vaWQoT2lkIHJlbGlkLCBjb25zdCBjaGFyICpwZXJuYW1l LCBib29sIG1pc3Npbmdfb2spCit7CisJUmVsYXRpb24JcGdfcGVyaW9kOworCUhlYXBUdXBsZQl0 dXBsZTsKKwlTeXNTY2FuRGVzYyBzY2FuOworCVNjYW5LZXlEYXRhIHNrZXlbMV07CisJT2lkCQkJ cGVyT2lkID0gSW52YWxpZE9pZDsKKworCS8qCisJICogRmV0Y2ggdGhlIHBlcmlvZCB0dXBsZSBm cm9tIHBnX3BlcmlvZC4gIFRoZXJlIG1heSBiZSBtb3JlIHRoYW4KKwkgKiBvbmUgbWF0Y2gsIGJl Y2F1c2UgcGVyaW9kcyBhcmUgbm90IHJlcXVpcmVkIHRvIGhhdmUgdW5pcXVlIG5hbWVzOworCSAq IGlmIHNvLCBlcnJvciBvdXQuCisJICovCisJcGdfcGVyaW9kID0gdGFibGVfb3BlbihQZXJpb2RS ZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJU2NhbktleUluaXQoJnNrZXlbMF0sCisJ CQkJQW51bV9wZ19wZXJpb2RfcGVycmVsaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBG X09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0ocmVsaWQpKTsKKworCXNjYW4gPSBzeXN0YWJs ZV9iZWdpbnNjYW4ocGdfcGVyaW9kLCBQZXJpb2RSZWxpZE5hbWVJbmRleElkLCB0cnVlLAorCQkJ CQkJCSAgTlVMTCwgMSwgc2tleSk7CisKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9 IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJRm9ybV9wZ19wZXJpb2QgcGVyaW9kID0g KEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHVwbGUpOworCisJCWlmIChzdHJjbXAoTmFtZVN0 cihwZXJpb2QtPnBlcm5hbWUpLCBwZXJuYW1lKSA9PSAwKQorCQl7CisJCQlpZiAoT2lkSXNWYWxp ZChwZXJPaWQpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RV UExJQ0FURV9PQkpFQ1QpLAorCQkJCQkJIGVycm1zZygidGFibGUgXCIlc1wiIGhhcyBtdWx0aXBs ZSBwZXJpb2RzIG5hbWVkIFwiJXNcIiIsCisJCQkJCQkJCWdldF9yZWxfbmFtZShyZWxpZCksIHBl cm5hbWUpKSk7CisJCQlwZXJPaWQgPSBwZXJpb2QtPm9pZDsKKwkJfQorCX0KKworCXN5c3RhYmxl X2VuZHNjYW4oc2Nhbik7CisKKwkvKiBJZiBubyBzdWNoIHBlcmlvZCBleGlzdHMsIGNvbXBsYWlu ICovCisJaWYgKCFPaWRJc1ZhbGlkKHBlck9pZCkgJiYgIW1pc3Npbmdfb2spCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkgZXJy bXNnKCJwZXJpb2QgXCIlc1wiIGZvciB0YWJsZSBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJ CQkJcGVybmFtZSwgZ2V0X3JlbF9uYW1lKHJlbGlkKSkpKTsKKworCXRhYmxlX2Nsb3NlKHBnX3Bl cmlvZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiBwZXJPaWQ7Cit9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3NxbF9mZWF0dXJlcy50eHQKaW5kZXggOWY0MjQyMTZlMi4uOTY2MmQ3MTNjOSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0CisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dApAQCAtNDM4LDcgKzQzOCw3IEBAIFQxNzYJU2Vx dWVuY2UgZ2VuZXJhdG9yIHN1cHBvcnQJCQlOTwlzdXBwb3J0ZWQgZXhjZXB0IGZvciBORVhUIFZB TFVFIEZPUgogVDE3NwlTZXF1ZW5jZSBnZW5lcmF0b3Igc3VwcG9ydDogc2ltcGxlIHJlc3RhcnQg b3B0aW9uCQkJWUVTCQogVDE3OAlJZGVudGl0eSBjb2x1bW5zOiAgc2ltcGxlIHJlc3RhcnQgb3B0 aW9uCQkJWUVTCQogVDE4MAlTeXN0ZW0tdmVyc2lvbmVkIHRhYmxlcwkJCU5PCQotVDE4MQlBcHBs aWNhdGlvbi10aW1lIHBlcmlvZCB0YWJsZXMJCQlOTwkKK1QxODEJQXBwbGljYXRpb24tdGltZSBw ZXJpb2QgdGFibGVzCQkJWUVTCQogVDE5MQlSZWZlcmVudGlhbCBhY3Rpb24gUkVTVFJJQ1QJCQlZ RVMJCiBUMjAxCUNvbXBhcmFibGUgZGF0YSB0eXBlcyBmb3IgcmVmZXJlbnRpYWwgY29uc3RyYWlu dHMJCQlZRVMJCiBUMjExCUJhc2ljIHRyaWdnZXIgY2FwYWJpbGl0eQkJCU5PCQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Fs dGVyLmMKaW5kZXggMjkyNDk0OThhOS4uZWJmODg4Y2M0MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvYWx0ZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCkBA IC02NDAsNiArNjQwLDcgQEAgQWx0ZXJPYmplY3ROYW1lc3BhY2Vfb2lkKE9pZCBjbGFzc0lkLCBP aWQgb2JqaWQsIE9pZCBuc3BPaWQsCiAKIAkJY2FzZSBPQ0xBU1NfQ0FTVDoKIAkJY2FzZSBPQ0xB U1NfQ09OU1RSQUlOVDoKKwkJY2FzZSBPQ0xBU1NfUEVSSU9EOgogCQljYXNlIE9DTEFTU19ERUZB VUxUOgogCQljYXNlIE9DTEFTU19MQU5HVUFHRToKIAkJY2FzZSBPQ0xBU1NfTEFSR0VPQkpFQ1Q6 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb21tZW50LmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jb21tZW50LmMKaW5kZXggMjE2YjhkMzA2OC4uODUxNzNmNDhiNyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29tbWVudC5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvbW1lbnQuYwpAQCAtMTAxLDYgKzEwMSwxNiBAQCBDb21tZW50T2JqZWN0KENvbW1l bnRTdG10ICpzdG10KQogCQkJCQkJIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHRhYmxlLCB2aWV3 LCBtYXRlcmlhbGl6ZWQgdmlldywgY29tcG9zaXRlIHR5cGUsIG9yIGZvcmVpZ24gdGFibGUiLAog CQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpKSk7CiAJCQlicmVhazsK KworCQljYXNlIE9CSkVDVF9QRVJJT0Q6CisJCQkvKiBQZXJpb2RzIGNhbiBvbmx5IGdvIG9uIHRh YmxlcyAqLworCQkJaWYgKHJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9SRUxB VElPTikKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19P QkpFQ1RfVFlQRSksCisJCQkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgdGFibGUiLAorCQkJ CQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpKSk7CisJCQlicmVhazsKKwog CQlkZWZhdWx0OgogCQkJYnJlYWs7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXZlbnRfdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5j CmluZGV4IDljMzFjOWU3NjMuLjE5Y2EzZjYwZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V2ZW50X3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90 cmlnZ2VyLmMKQEAgLTk3MCw2ICs5NzAsNyBAQCBFdmVudFRyaWdnZXJTdXBwb3J0c09iamVjdFR5 cGUoT2JqZWN0VHlwZSBvYnR5cGUpCiAJCWNhc2UgT0JKRUNUX09QQ0xBU1M6CiAJCWNhc2UgT0JK RUNUX09QRVJBVE9SOgogCQljYXNlIE9CSkVDVF9PUEZBTUlMWToKKwkJY2FzZSBPQkpFQ1RfUEVS SU9EOgogCQljYXNlIE9CSkVDVF9QT0xJQ1k6CiAJCWNhc2UgT0JKRUNUX1BST0NFRFVSRToKIAkJ Y2FzZSBPQkpFQ1RfUFVCTElDQVRJT046CkBAIC0xMDI1LDYgKzEwMjYsNyBAQCBFdmVudFRyaWdn ZXJTdXBwb3J0c09iamVjdENsYXNzKE9iamVjdENsYXNzIG9iamNsYXNzKQogCQljYXNlIE9DTEFT U19DQVNUOgogCQljYXNlIE9DTEFTU19DT0xMQVRJT046CiAJCWNhc2UgT0NMQVNTX0NPTlNUUkFJ TlQ6CisJCWNhc2UgT0NMQVNTX1BFUklPRDoKIAkJY2FzZSBPQ0xBU1NfQ09OVkVSU0lPTjoKIAkJ Y2FzZSBPQ0xBU1NfREVGQVVMVDoKIAkJY2FzZSBPQ0xBU1NfTEFOR1VBR0U6CkBAIC0yMTI4LDYg KzIxMzAsNyBAQCBzdHJpbmdpZnlfZ3JhbnRfb2JqdHlwZShPYmplY3RUeXBlIG9ianR5cGUpCiAJ CWNhc2UgT0JKRUNUX09QQ0xBU1M6CiAJCWNhc2UgT0JKRUNUX09QRVJBVE9SOgogCQljYXNlIE9C SkVDVF9PUEZBTUlMWToKKwkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQljYXNlIE9CSkVDVF9QT0xJ Q1k6CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElP Tl9SRUw6CkBAIC0yMjEwLDYgKzIyMTMsNyBAQCBzdHJpbmdpZnlfYWRlZnByaXZzX29ianR5cGUo T2JqZWN0VHlwZSBvYmp0eXBlKQogCQljYXNlIE9CSkVDVF9PUENMQVNTOgogCQljYXNlIE9CSkVD VF9PUEVSQVRPUjoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CisJCWNhc2UgT0JKRUNUX1BFUklP RDoKIAkJY2FzZSBPQkpFQ1RfUE9MSUNZOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTjoKIAkJ Y2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fUkVMOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvc2VjbGFiZWwuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMKaW5kZXgg NjkwNjcxNDI5OC4uMGE4ZGRhMmVlYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv c2VjbGFiZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zZWNsYWJlbC5jCkBAIC03OCw2 ICs3OCw3IEBAIFNlY0xhYmVsU3VwcG9ydHNPYmplY3RUeXBlKE9iamVjdFR5cGUgb2JqdHlwZSkK IAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoKIAkJY2FzZSBPQkpFQ1RfT1BFUkFUT1I6CiAJCWNhc2Ug T0JKRUNUX09QRkFNSUxZOgorCQljYXNlIE9CSkVDVF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BP TElDWToKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fUkVMOgogCQljYXNlIE9CSkVDVF9SVUxF OgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA5N2E5NzI1ZGY3Li4xZmFhNTU5NTUyIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgImNh dGFsb2cvcGdfaW5oZXJpdHMuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX25hbWVzcGFjZS5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVy aW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19zdGF0aXN0aWNfZXh0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190cmlnZ2VyLmgi CkBAIC0xNDQsMTMgKzE0NSwxNCBAQCBzdGF0aWMgTGlzdCAqb25fY29tbWl0cyA9IE5JTDsKICNk ZWZpbmUgQVRfUEFTU19PTERfQ09OU1RSCQkzCS8qIHJlLWFkZCBleGlzdGluZyBjb25zdHJhaW50 cyAqLwogLyogV2UgY291bGQgc3VwcG9ydCBhIFJFTkFNRSBDT0xVTU4gcGFzcyBoZXJlLCBidXQg bm90IGN1cnJlbnRseSB1c2VkICovCiAjZGVmaW5lIEFUX1BBU1NfQUREX0NPTAkJCTQJLyogQURE IENPTFVNTiAqLwotI2RlZmluZSBBVF9QQVNTX0FERF9DT05TVFIJCTUJLyogQUREIGNvbnN0cmFp bnRzIChpbml0aWFsIGV4YW1pbmF0aW9uKSAqLwotI2RlZmluZSBBVF9QQVNTX0NPTF9BVFRSUwkJ NgkvKiBzZXQgY29sdW1uIGF0dHJpYnV0ZXMsIGVnIE5PVCBOVUxMICovCi0jZGVmaW5lIEFUX1BB U1NfQUREX0lOREVYQ09OU1RSCTcJLyogQUREIGluZGV4LWJhc2VkIGNvbnN0cmFpbnRzICovCi0j ZGVmaW5lIEFUX1BBU1NfQUREX0lOREVYCQk4CS8qIEFERCBpbmRleGVzICovCi0jZGVmaW5lIEFU X1BBU1NfQUREX09USEVSQ09OU1RSCTkJLyogQUREIG90aGVyIGNvbnN0cmFpbnRzLCBkZWZhdWx0 cyAqLwotI2RlZmluZSBBVF9QQVNTX01JU0MJCQkxMAkvKiBvdGhlciBzdHVmZiAqLwotI2RlZmlu ZSBBVF9OVU1fUEFTU0VTCQkJMTEKKyNkZWZpbmUgQVRfUEFTU19BRERfUEVSSU9ECQk1CS8qIEFE RCBQRVJJT0QgKi8KKyNkZWZpbmUgQVRfUEFTU19BRERfQ09OU1RSCQk2CS8qIEFERCBjb25zdHJh aW50cyAoaW5pdGlhbCBleGFtaW5hdGlvbikgKi8KKyNkZWZpbmUgQVRfUEFTU19DT0xfQVRUUlMJ CTcJLyogc2V0IGNvbHVtbiBhdHRyaWJ1dGVzLCBlZyBOT1QgTlVMTCAqLworI2RlZmluZSBBVF9Q QVNTX0FERF9JTkRFWENPTlNUUgk4CS8qIEFERCBpbmRleC1iYXNlZCBjb25zdHJhaW50cyAqLwor I2RlZmluZSBBVF9QQVNTX0FERF9JTkRFWAkJOQkvKiBBREQgaW5kZXhlcyAqLworI2RlZmluZSBB VF9QQVNTX0FERF9PVEhFUkNPTlNUUgkxMAkvKiBBREQgb3RoZXIgY29uc3RyYWludHMsIGRlZmF1 bHRzICovCisjZGVmaW5lIEFUX1BBU1NfTUlTQwkJCTExCS8qIG90aGVyIHN0dWZmICovCisjZGVm aW5lIEFUX05VTV9QQVNTRVMJCQkxMgogCiB0eXBlZGVmIHN0cnVjdCBBbHRlcmVkVGFibGVJbmZv CiB7CkBAIC00MTksNiArNDIxLDggQEAgc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjQWRkQ29s dW1uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJCQkJCQkJCSBBbHRl clRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIGJvb2wgY2hlY2tfZm9yX2Nv bHVtbl9uYW1lX2NvbGxpc2lvbihSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbG5hbWUsCiAJ CQkJCQkJCQkJCWJvb2wgaWZfbm90X2V4aXN0cyk7CitzdGF0aWMgYm9vbCBjaGVja19mb3JfcGVy aW9kX25hbWVfY29sbGlzaW9uKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqcGVybmFtZSwKKwkJ CQkJCQkJCQkJYm9vbCBpZl9ub3RfZXhpc3RzKTsKIHN0YXRpYyB2b2lkIGFkZF9jb2x1bW5fZGF0 YXR5cGVfZGVwZW5kZW5jeShPaWQgcmVsaWQsIGludDMyIGF0dG51bSwgT2lkIHR5cGlkKTsKIHN0 YXRpYyB2b2lkIGFkZF9jb2x1bW5fY29sbGF0aW9uX2RlcGVuZGVuY3koT2lkIHJlbGlkLCBpbnQz MiBhdHRudW0sIE9pZCBjb2xsaWQpOwogc3RhdGljIHZvaWQgQVRQcmVwRHJvcE5vdE51bGwoUmVs YXRpb24gcmVsLCBib29sIHJlY3Vyc2UsIGJvb2wgcmVjdXJzaW5nKTsKQEAgLTQzOCw2ICs0NDIs MTIgQEAgc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjQ29sdW1uRGVmYXVsdChSZWxhdGlvbiBy ZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCiAJCQkJCQkJCQkJIE5vZGUgKm5ld0RlZmF1bHQsIExP Q0tNT0RFIGxvY2ttb2RlKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0Nvb2tlZENvbHVt bkRlZmF1bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwKIAkJCQkJCQkJCQkJICAg Tm9kZSAqbmV3RGVmYXVsdCk7CitzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNBZGRQZXJpb2Qo UmVsYXRpb24gcmVsLCBQZXJpb2QgKnBlcmlvZCwgTE9DS01PREUgbG9ja21vZGUsCisJCQkJCQkJ CQkgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKK3N0YXRpYyB2b2lkIEFURXhl Y0Ryb3BQZXJpb2QoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpwZXJpb2ROYW1lLAorCQkJCQkJ CSBEcm9wQmVoYXZpb3IgYmVoYXZpb3IsCisJCQkJCQkJIGJvb2wgcmVjdXJzZSwgYm9vbCByZWN1 cnNpbmcsCisJCQkJCQkJIGJvb2wgbWlzc2luZ19vaywgTE9DS01PREUgbG9ja21vZGUpOwogc3Rh dGljIE9iamVjdEFkZHJlc3MgQVRFeGVjQWRkSWRlbnRpdHkoUmVsYXRpb24gcmVsLCBjb25zdCBj aGFyICpjb2xOYW1lLAogCQkJCQkJCQkJICAgTm9kZSAqZGVmLCBMT0NLTU9ERSBsb2NrbW9kZSk7 CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNTZXRJZGVudGl0eShSZWxhdGlvbiByZWwsIGNv bnN0IGNoYXIgKmNvbE5hbWUsCkBAIC02MDIsNiArNjEyLDcgQEAgc3RhdGljIHZvaWQgcmVmdXNl RHVwZUluZGV4QXR0YWNoKFJlbGF0aW9uIHBhcmVudElkeCwgUmVsYXRpb24gcGFydElkeCwKIHN0 YXRpYyBMaXN0ICpHZXRQYXJlbnRlZEZvcmVpZ25LZXlSZWZzKFJlbGF0aW9uIHBhcnRpdGlvbik7 CiBzdGF0aWMgdm9pZCBBVERldGFjaENoZWNrTm9Gb3JlaWduS2V5UmVmcyhSZWxhdGlvbiBwYXJ0 aXRpb24pOwogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlQ29tcHJlc3Npb24oT2lkIGF0dHR5cGlk LCBjaGFyICpjb21wcmVzc2lvbik7CitzdGF0aWMgdm9pZCBBZGRSZWxhdGlvbk5ld1BlcmlvZChS ZWxhdGlvbiByZWwsIFBlcmlvZCAqcGVyaW9kKTsKIAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMjEzLDYg KzEyMjQsMTcgQEAgRGVmaW5lUmVsYXRpb24oQ3JlYXRlU3RtdCAqc3RtdCwgY2hhciByZWxraW5k LCBPaWQgb3duZXJJZCwKIAkJQWRkUmVsYXRpb25OZXdDb25zdHJhaW50cyhyZWwsIE5JTCwgc3Rt dC0+Y29uc3RyYWludHMsCiAJCQkJCQkJCSAgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHF1ZXJ5U3RyaW5n KTsKIAorCS8qCisJICogQ3JlYXRlIHBlcmlvZHMgZm9yIHRoZSB0YWJsZS4gVGhpcyBtdXN0IGNv bWUgYWZ0ZXIgd2UgY3JlYXRlIGNvbHVtbnMKKwkgKiBhbmQgYmVmb3JlIHdlIGNyZWF0ZSBpbmRl eCBjb25zdHJhaW50cy4gSXQgd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZQorCSAqIE5PVCBOVUxM IGFuZCBDSEVDSyBjb25zdHJhaW50cyBmb3IgdGhlIHBlcmlvZC4KKwkgKi8KKwlmb3JlYWNoKGxp c3RwdHIsIHN0bXQtPnBlcmlvZHMpCisJeworCQlQZXJpb2QgKnBlcmlvZCA9IChQZXJpb2QgKikg bGZpcnN0KGxpc3RwdHIpOworCQlBZGRSZWxhdGlvbk5ld1BlcmlvZChyZWwsIHBlcmlvZCk7CisJ fQorCiAJT2JqZWN0QWRkcmVzc1NldChhZGRyZXNzLCBSZWxhdGlvblJlbGF0aW9uSWQsIHJlbGF0 aW9uSWQpOwogCiAJLyoKQEAgLTEyMjQsNiArMTI0NiwxNTQgQEAgRGVmaW5lUmVsYXRpb24oQ3Jl YXRlU3RtdCAqc3RtdCwgY2hhciByZWxraW5kLCBPaWQgb3duZXJJZCwKIAlyZXR1cm4gYWRkcmVz czsKIH0KIAorc3RhdGljIENvbnN0cmFpbnQgKgorbWFrZV9wZXJpb2Rfbm90X2JhY2t3YXJkKFJl bGF0aW9uIHJlbCwgUGVyaW9kICpwZXJpb2QsIGNoYXIgKmNvbnN0cmFpbnRuYW1lKQoreworCUNv bHVtblJlZiAgKnNjb2wsICplY29sOworCUNvbnN0cmFpbnQgKmNvbnN0cjsKKworCWlmIChjb25z dHJhaW50bmFtZSA9PSBOVUxMKQorCQljb25zdHJhaW50bmFtZSA9IENob29zZUNvbnN0cmFpbnRO YW1lKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksCisJCQkJCQkJCQkJCSAgcGVyaW9kLT5w ZXJpb2RuYW1lLAorCQkJCQkJCQkJCQkgICJjaGVjayIsCisJCQkJCQkJCQkJCSAgUmVsYXRpb25H ZXROYW1lc3BhY2UocmVsKSwKKwkJCQkJCQkJCQkJICBOSUwpOworCXBlcmlvZC0+Y29uc3RyYWlu dG5hbWUgPSBjb25zdHJhaW50bmFtZTsKKworCXNjb2wgPSBtYWtlTm9kZShDb2x1bW5SZWYpOwor CXNjb2wtPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhwc3RyZHVwKHBlcmlvZC0+c3Rh cnRjb2xuYW1lKSkpOworCXNjb2wtPmxvY2F0aW9uID0gMDsKKworCWVjb2wgPSBtYWtlTm9kZShD b2x1bW5SZWYpOworCWVjb2wtPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhwc3RyZHVw KHBlcmlvZC0+ZW5kY29sbmFtZSkpKTsKKwllY29sLT5sb2NhdGlvbiA9IDA7CisKKwljb25zdHIg PSBtYWtlTm9kZShDb25zdHJhaW50KTsKKwljb25zdHItPmNvbnR5cGUgPSBDT05TVFJfQ0hFQ0s7 CisJY29uc3RyLT5jb25uYW1lID0gY29uc3RyYWludG5hbWU7CisJY29uc3RyLT5kZWZlcnJhYmxl ID0gZmFsc2U7CisJY29uc3RyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwljb25zdHItPmxvY2F0 aW9uID0gLTE7CisJY29uc3RyLT5pc19ub19pbmhlcml0ID0gZmFsc2U7CisJY29uc3RyLT5yYXdf ZXhwciA9IChOb2RlICopIG1ha2VTaW1wbGVBX0V4cHIoQUVYUFJfT1AsICI8IiwgKE5vZGUgKikg c2NvbCwgKE5vZGUgKikgZWNvbCwgMCk7CisJY29uc3RyLT5jb29rZWRfZXhwciA9IE5VTEw7CisJ Y29uc3RyLT5za2lwX3ZhbGlkYXRpb24gPSBmYWxzZTsKKwljb25zdHItPmluaXRpYWxseV92YWxp ZCA9IHRydWU7CisKKwlyZXR1cm4gY29uc3RyOworfQorCisvKgorICogbWFrZV9jb25zdHJhaW50 X2Zvcl9wZXJpb2QKKyAqCisgKiBBZGQgY29uc3RyYWludHMgdG8gbWFrZSBib3RoIGNvbHVtbnMg Tk9UIE5VTEwgYW5kIENIRUNLIChzdGFydCA8IGVuZCkuCisgKgorICogUmV0dXJucyB0aGUgQ0hF Q0sgY29uc3RyYWludCBPaWQuCisgKi8KK3N0YXRpYyBPaWQKK21ha2VfY29uc3RyYWludF9mb3Jf cGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kICpwZXJpb2QsIGNoYXIgKmNvbnN0cmFpbnRuYW1l LAorCQkJCQkJICAgTE9DS01PREUgbG9ja21vZGUsIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAq Y29udGV4dCkKK3sKKwlMaXN0CQkgICAqY21kcyA9IE5JTDsKKwlBbHRlclRhYmxlQ21kICAqY21k OworCUNvbnN0cmFpbnQJICAgKmNvbnN0cjsKKworCWNvbnN0ciA9IG1ha2VfcGVyaW9kX25vdF9i YWNrd2FyZChyZWwsIHBlcmlvZCwgY29uc3RyYWludG5hbWUpOworCWNtZCA9IG1ha2VOb2RlKEFs dGVyVGFibGVDbWQpOworCWNtZC0+c3VidHlwZSA9IEFUX0FkZENvbnN0cmFpbnQ7CisJY21kLT5k ZWYgPSAoTm9kZSAqKSBjb25zdHI7CisJY21kcyA9IGxhcHBlbmQoY21kcywgY21kKTsKKworCS8q IERvIHRoZSBkZWVkLiAqLworCUFsdGVyVGFibGVJbnRlcm5hbChSZWxhdGlvbkdldFJlbGlkKHJl bCksIGNtZHMsIHRydWUsIGNvbnRleHQpOworCisJcmV0dXJuIGdldF9yZWxhdGlvbl9jb25zdHJh aW50X29pZChSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBlcmlvZC0+Y29uc3RyYWludG5hbWUsIGZh bHNlKTsKK30KKworc3RhdGljIHZvaWQKK0FkZFJlbGF0aW9uTmV3UGVyaW9kKFJlbGF0aW9uIHJl bCwgUGVyaW9kICpwZXJpb2QpCit7CisJUmVsYXRpb24JYXR0cmVsYXRpb247CisJSGVhcFR1cGxl CXN0YXJ0dHVwbGUsIGVuZHR1cGxlOworCUZvcm1fcGdfYXR0cmlidXRlCXN0YXJ0YXR0dHVwbGUs IGVuZGF0dHR1cGxlOworCUF0dHJOdW1iZXIJc3RhcnRhdHRudW0sIGVuZGF0dG51bTsKKwlPaWQJ CQljb25vaWQ7CisJQ29uc3RyYWludCAqY29uc3RyOworCUxpc3QJICAgKm5ld2NvbnN0cnM7CisK KwkvKiBUaGUgcGVyaW9kIG5hbWUgbXVzdCBub3QgYWxyZWFkeSBleGlzdCAqLworCSh2b2lkKSBj aGVja19mb3JfcGVyaW9kX25hbWVfY29sbGlzaW9uKHJlbCwgcGVyaW9kLT5wZXJpb2RuYW1lLCBm YWxzZSk7CisKKwlhdHRyZWxhdGlvbiA9IHRhYmxlX29wZW4oQXR0cmlidXRlUmVsYXRpb25JZCwg Um93RXhjbHVzaXZlTG9jayk7CisKKwkvKiBGaW5kIHRoZSBzdGFydCBjb2x1bW4gKi8KKwlzdGFy dHR1cGxlID0gU2VhcmNoU3lzQ2FjaGVDb3B5QXR0TmFtZShSZWxhdGlvbkdldFJlbGlkKHJlbCks IHBlcmlvZC0+c3RhcnRjb2xuYW1lKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoc3RhcnR0dXBs ZSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09M VU1OKSwKKwkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2Vz IG5vdCBleGlzdCIsCisJCQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFtZSwgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocmVsKSkpKTsKKwlzdGFydGF0dHR1cGxlID0gKEZvcm1fcGdfYXR0cmlidXRlKSBH RVRTVFJVQ1Qoc3RhcnR0dXBsZSk7CisJc3RhcnRhdHRudW0gPSBzdGFydGF0dHR1cGxlLT5hdHRu dW07CisKKwkvKiBNYWtlIHN1cmUgaXQncyBub3QgYSBzeXN0ZW0gY29sdW1uICovCisJaWYgKHN0 YXJ0YXR0bnVtIDw9IDApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIHN5c3Rl bSBjb2x1bW4gXCIlc1wiIGluIHBlcmlvZCIsCisJCQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFtZSkp KTsKKworCS8qIEZpbmQgdGhlIGVuZCBjb2x1bW4gKi8KKwllbmR0dXBsZSA9IFNlYXJjaFN5c0Nh Y2hlQ29weUF0dE5hbWUoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBwZXJpb2QtPmVuZGNvbG5hbWUp OworCWlmICghSGVhcFR1cGxlSXNWYWxpZChlbmR0dXBsZSkpCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwKKwkJCQkgZXJybXNnKCJjb2x1 bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQlwZXJp b2QtPmVuZGNvbG5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJZW5kYXR0 dHVwbGUgPSAoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVDVChlbmR0dXBsZSk7CisJZW5kYXR0 bnVtID0gZW5kYXR0dHVwbGUtPmF0dG51bTsKKworCS8qIE1ha2Ugc3VyZSBpdCdzIG5vdCBhIHN5 c3RlbSBjb2x1bW4gKi8KKwlpZiAoZW5kYXR0bnVtIDw9IDApCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkgZXJy bXNnKCJjYW5ub3QgdXNlIHN5c3RlbSBjb2x1bW4gXCIlc1wiIGluIHBlcmlvZCIsCisJCQkJCQlw ZXJpb2QtPmVuZGNvbG5hbWUpKSk7CisKKwkvKiBCb3RoIGNvbHVtbnMgbXVzdCBiZSBvZiBzYW1l IHR5cGUgKi8KKwlpZiAoc3RhcnRhdHR0dXBsZS0+YXR0dHlwaWQgIT0gZW5kYXR0dHVwbGUtPmF0 dHR5cGlkKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVf TUlTTUFUQ0gpLAorCQkJCSBlcnJtc2coInN0YXJ0IGFuZCBlbmQgY29sdW1ucyBvZiBwZXJpb2Qg bXVzdCBiZSBvZiBzYW1lIHR5cGUiKSkpOworCisJLyogQm90aCBjb2x1bW5zIG11c3QgaGF2ZSB0 aGUgc2FtZSBjb2xsYXRpb24gKi8KKwlpZiAoc3RhcnRhdHR0dXBsZS0+YXR0Y29sbGF0aW9uICE9 IGVuZGF0dHR1cGxlLT5hdHRjb2xsYXRpb24pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9DT0xMQVRJT05fTUlTTUFUQ0gpLAorCQkJCSBlcnJtc2coInN0YXJ0IGFuZCBl bmQgY29sdW1ucyBvZiBwZXJpb2QgbXVzdCBoYXZlIHNhbWUgY29sbGF0aW9uIikpKTsKKworCWhl YXBfZnJlZXR1cGxlKHN0YXJ0dHVwbGUpOworCWhlYXBfZnJlZXR1cGxlKGVuZHR1cGxlKTsKKwor CWlmIChwZXJpb2QtPmNvbnN0cmFpbnRuYW1lID09IE5VTEwpCisJeworCQlwZXJpb2QtPmNvbnN0 cmFpbnRuYW1lID0gQ2hvb3NlQ29uc3RyYWludE5hbWUoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsKSwKKwkJCQkJCQkJCQkJCQkgIHBlcmlvZC0+cGVyaW9kbmFtZSwKKwkJCQkJCQkJCQkJCQkg ICJjaGVjayIsCisJCQkJCQkJCQkJCQkJICBSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwpLAorCQkJ CQkJCQkJCQkJCSAgTklMKTsKKwl9CisKKwljb25zdHIgPSBtYWtlX3BlcmlvZF9ub3RfYmFja3dh cmQocmVsLCBwZXJpb2QsIHBlcmlvZC0+Y29uc3RyYWludG5hbWUpOworCW5ld2NvbnN0cnMgPSBB ZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRzKHJlbCwgTklMLCBsaXN0X21ha2UxKGNvbnN0ciksIGZh bHNlLCB0cnVlLCB0cnVlLCBOVUxMKTsKKwljb25vaWQgPSAoKENvb2tlZENvbnN0cmFpbnQgKikg bGluaXRpYWwobmV3Y29uc3RycykpLT5jb25vaWQ7CisKKwkvKiBTYXZlIGl0ICovCisJU3RvcmVQ ZXJpb2QocmVsLCBwZXJpb2QtPnBlcmlvZG5hbWUsIHN0YXJ0YXR0bnVtLCBlbmRhdHRudW0sIHBl cmlvZC0+cm5ndHlwaWQsIGNvbm9pZCk7CisKKwl0YWJsZV9jbG9zZShhdHRyZWxhdGlvbiwgUm93 RXhjbHVzaXZlTG9jayk7Cit9CisKIC8qCiAgKiBFbWl0IHRoZSByaWdodCBlcnJvciBvciB3YXJu aW5nIG1lc3NhZ2UgZm9yIGEgIkRST1AiIGNvbW1hbmQgaXNzdWVkIG9uIGEKICAqIG5vbi1leGlz dGVudCByZWxhdGlvbgpAQCAtMjMyOCw2ICsyNDk4LDggQEAgTWVyZ2VBdHRyaWJ1dGVzKExpc3Qg KnNjaGVtYSwgTGlzdCAqc3VwZXJzLCBjaGFyIHJlbHBlcnNpc3RlbmNlLAogCSAqCiAJICogTm90 ZSB0aGF0IHdlIGFsc28gbmVlZCB0byBjaGVjayB0aGF0IHdlIGRvIG5vdCBleGNlZWQgdGhpcyBm aWd1cmUgYWZ0ZXIKIAkgKiBpbmNsdWRpbmcgY29sdW1ucyBmcm9tIGluaGVyaXRlZCByZWxhdGlv bnMuCisJICoKKwkgKiBUT0RPOiBXaGF0IGFib3V0IHBlcmlvZHM/CiAJICovCiAJaWYgKGxpc3Rf bGVuZ3RoKHNjaGVtYSkgPiBNYXhIZWFwQXR0cmlidXRlTnVtYmVyKQogCQllcmVwb3J0KEVSUk9S LApAQCAtMjQxMiw2ICsyNTg0LDggQEAgTWVyZ2VBdHRyaWJ1dGVzKExpc3QgKnNjaGVtYSwgTGlz dCAqc3VwZXJzLCBjaGFyIHJlbHBlcnNpc3RlbmNlLAogCSAqIFNjYW4gdGhlIHBhcmVudHMgbGVm dC10by1yaWdodCwgYW5kIG1lcmdlIHRoZWlyIGF0dHJpYnV0ZXMgdG8gZm9ybSBhCiAJICogbGlz dCBvZiBpbmhlcml0ZWQgYXR0cmlidXRlcyAoaW5oU2NoZW1hKS4gIEFsc28gY2hlY2sgdG8gc2Vl IGlmIHdlIG5lZWQKIAkgKiB0byBpbmhlcml0IGFuIE9JRCBjb2x1bW4uCisJICoKKwkgKiBUT0RP OiBwcm9iYWJseSBuZWVkIHBlcmlvZHMgaGVyZSwgdG9vLgogCSAqLwogCWNoaWxkX2F0dG5vID0g MDsKIAlmb3JlYWNoKGVudHJ5LCBzdXBlcnMpCkBAIC00MDI2LDEyICs0MjAwLDEyIEBAIEFsdGVy VGFibGUoQWx0ZXJUYWJsZVN0bXQgKnN0bXQsIExPQ0tNT0RFIGxvY2ttb2RlLAogICogZXhpc3Rp bmcgcXVlcnkgcGxhbnMuICBPbiB0aGUgYXNzdW1wdGlvbiBpdCdzIG5vdCB1c2VkIGZvciBzdWNo LCB3ZQogICogZG9uJ3QgaGF2ZSB0byByZWplY3QgcGVuZGluZyBBRlRFUiB0cmlnZ2VycywgZWl0 aGVyLgogICoKLSAqIEFsc28sIHNpbmNlIHdlIGRvbid0IGhhdmUgYW4gQWx0ZXJUYWJsZVV0aWxp dHlDb250ZXh0LCB0aGlzIGNhbm5vdCBiZQorICogQWxzbywgaWYgeW91IGRvbid0IHBhc3MgYW4g QWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0LCB0aGlzIGNhbm5vdCBiZQogICogdXNlZCBmb3IgYW55 IHN1YmNvbW1hbmQgdHlwZXMgdGhhdCByZXF1aXJlIHBhcnNlIHRyYW5zZm9ybWF0aW9uIG9yCiAg KiBjb3VsZCBnZW5lcmF0ZSBzdWJjb21tYW5kcyB0aGF0IGhhdmUgdG8gYmUgcGFzc2VkIHRvIFBy b2Nlc3NVdGlsaXR5LgogICovCiB2b2lkCi1BbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlkLCBM aXN0ICpjbWRzLCBib29sIHJlY3Vyc2UpCitBbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlkLCBM aXN0ICpjbWRzLCBib29sIHJlY3Vyc2UsIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4 dCkKIHsKIAlSZWxhdGlvbglyZWw7CiAJTE9DS01PREUJbG9ja21vZGUgPSBBbHRlclRhYmxlR2V0 TG9ja0xldmVsKGNtZHMpOwpAQCAtNDA0MCw3ICs0MjE0LDcgQEAgQWx0ZXJUYWJsZUludGVybmFs KE9pZCByZWxpZCwgTGlzdCAqY21kcywgYm9vbCByZWN1cnNlKQogCiAJRXZlbnRUcmlnZ2VyQWx0 ZXJUYWJsZVJlbGlkKHJlbGlkKTsKIAotCUFUQ29udHJvbGxlcihOVUxMLCByZWwsIGNtZHMsIHJl Y3Vyc2UsIGxvY2ttb2RlLCBOVUxMKTsKKwlBVENvbnRyb2xsZXIoTlVMTCwgcmVsLCBjbWRzLCBy ZWN1cnNlLCBsb2NrbW9kZSwgY29udGV4dCk7CiB9CiAKIC8qCkBAIC00MTAxLDYgKzQyNzUsMjAg QEAgQWx0ZXJUYWJsZUdldExvY2tMZXZlbChMaXN0ICpjbWRzKQogCQkJCWNtZF9sb2NrbW9kZSA9 IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CiAJCQkJYnJlYWs7CiAKKwkJCQkvKgorCQkJCSAqIEFkZGlu ZyBhIHBlcmlvZCBtYXkgY29uZmxpY3Qgd2l0aCBhIGNvbHVtbiBuYW1lIHNvIHdlIG5lZWQKKwkJ CQkgKiBhbiBleGNsdXNpdmUgbG9jayB0byBtYWtlIHN1cmUgY29sdW1ucyBhcmVuJ3QgYWRkZWQK KwkJCQkgKiBjb25jdXJyZW50bHkuCisJCQkJICoKKwkJCQkgKiBJdCBhbHNvIGFkZHMgYSBDSEVD SyBjb25zdHJhaW50IHNvIHdlIG5lZWQgdG8gbWF0Y2ggdGhhdAorCQkJCSAqIGxldmVsLCBhbmQg ZHJvcHBpbmcgYSBwZXJpb2QgZHJvcHMgdGhlIGNvbnN0cmFpbnQgc28gdGhhdAorCQkJCSAqIGxl dmVsIG5lZWRzIHRvIGJlIG1hdGNoZWQsIHRvby4KKwkJCQkgKi8KKwkJCWNhc2UgQVRfQWRkUGVy aW9kOgorCQkJY2FzZSBBVF9Ecm9wUGVyaW9kOgorCQkJCWNtZF9sb2NrbW9kZSA9IEFjY2Vzc0V4 Y2x1c2l2ZUxvY2s7CisJCQkJYnJlYWs7CisKIAkJCQkvKgogCQkJCSAqIFRoZXNlIHN1YmNvbW1h bmRzIG1heSByZXF1aXJlIGFkZGl0aW9uIG9mIHRvYXN0IHRhYmxlcy4gSWYKIAkJCQkgKiB3ZSBh ZGQgYSB0b2FzdCB0YWJsZSB0byBhIHRhYmxlIGN1cnJlbnRseSBiZWluZyBzY2FubmVkLCB3ZQpA QCAtNDQ1Niw2ICs0NjQ0LDE4IEBAIEFUUHJlcENtZChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBy ZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKIAkJCS8qIFRoaXMgY29tbWFuZCBuZXZlciByZWN1cnNl cyAqLwogCQkJcGFzcyA9IEFUX1BBU1NfQUREX09USEVSQ09OU1RSOwogCQkJYnJlYWs7CisJCWNh c2UgQVRfQWRkUGVyaW9kOiAvKiBBTFRFUiBUQUJMRSAuLi4gQUREIFBFUklPRCBGT1IgbmFtZSAo c3RhcnQsIGVuZCkgKi8KKwkJCUFUU2ltcGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUpOwor CQkJLyoKKwkJCSAqIFdlIG11c3QgYWRkIFBFUklPRHMgYWZ0ZXIgY29sdW1ucywgaW4gY2FzZSB0 aGV5IHJlZmVyZW5jZSBhIG5ld2x5LWFkZGVkIGNvbHVtbiwKKwkJCSAqIGFuZCBiZWZvcmUgY29u c3RyYWludHMsIGluIGNhc2UgYSBuZXdseS1hZGRlZCBQSy9GSyByZWZlcmVuY2VzIHRoZW0uCisJ CQkgKi8KKwkJCXBhc3MgPSBBVF9QQVNTX0FERF9QRVJJT0Q7CisJCQlicmVhazsKKwkJY2FzZSBB VF9Ecm9wUGVyaW9kOiAvKiBBTFRFUiBUQUJMRSAuLi4gRFJPUCBQRVJJT0QgRk9SIG5hbWUgKi8K KwkJCUFUU2ltcGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUpOworCQkJcGFzcyA9IEFUX1BB U1NfRFJPUDsKKwkJCWJyZWFrOwogCQljYXNlIEFUX0FkZElkZW50aXR5OgogCQkJQVRTaW1wbGVQ ZXJtaXNzaW9ucyhyZWwsIEFUVF9UQUJMRSB8IEFUVF9WSUVXIHwgQVRUX0ZPUkVJR05fVEFCTEUp OwogCQkJLyogVGhpcyBjb21tYW5kIG5ldmVyIHJlY3Vyc2VzICovCkBAIC00ODM3LDYgKzUwMzcs MTQgQEAgQVRFeGVjQ21kKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJ Y2FzZSBBVF9Db29rZWRDb2x1bW5EZWZhdWx0OgkvKiBhZGQgYSBwcmUtY29va2VkIGRlZmF1bHQg Ki8KIAkJCWFkZHJlc3MgPSBBVEV4ZWNDb29rZWRDb2x1bW5EZWZhdWx0KHJlbCwgY21kLT5udW0s IGNtZC0+ZGVmKTsKIAkJCWJyZWFrOworCQljYXNlIEFUX0FkZFBlcmlvZDoKKwkJCWFkZHJlc3Mg PSBBVEV4ZWNBZGRQZXJpb2QocmVsLCAoUGVyaW9kICopIGNtZC0+ZGVmLCBsb2NrbW9kZSwgY29u dGV4dCk7CisJCQlicmVhazsKKwkJY2FzZSBBVF9Ecm9wUGVyaW9kOgorCQkJQVRFeGVjRHJvcFBl cmlvZChyZWwsIGNtZC0+bmFtZSwgY21kLT5iZWhhdmlvciwKKwkJCQkJCQkJIGZhbHNlLCBmYWxz ZSwKKwkJCQkJCQkJIGNtZC0+bWlzc2luZ19vaywgbG9ja21vZGUpOworCQkJYnJlYWs7CiAJCWNh c2UgQVRfQWRkSWRlbnRpdHk6CiAJCQljbWQgPSBBVFBhcnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwg dGFiLCByZWwsIGNtZCwgZmFsc2UsIGxvY2ttb2RlLAogCQkJCQkJCQkJICBjdXJfcGFzcywgY29u dGV4dCk7CkBAIC02ODMzLDE0ICs3MDQxLDI5IEBAIEFURXhlY0FkZENvbHVtbihMaXN0ICoqd3F1 ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIC8qCiAgKiBJZiBhIG5l dyBvciByZW5hbWVkIGNvbHVtbiB3aWxsIGNvbGxpZGUgd2l0aCB0aGUgbmFtZSBvZiBhbiBleGlz dGluZwogICogY29sdW1uIGFuZCBpZl9ub3RfZXhpc3RzIGlzIGZhbHNlIHRoZW4gZXJyb3Igb3V0 LCBlbHNlIGRvIG5vdGhpbmcuCisgKgorICogU2VlIGFsc28gY2hlY2tfZm9yX3BlcmlvZF9uYW1l X2NvbGxpc2lvbi4KICAqLwogc3RhdGljIGJvb2wKIGNoZWNrX2Zvcl9jb2x1bW5fbmFtZV9jb2xs aXNpb24oUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xuYW1lLAogCQkJCQkJCQlib29sIGlm X25vdF9leGlzdHMpCiB7Ci0JSGVhcFR1cGxlCWF0dFR1cGxlOworCUhlYXBUdXBsZQlhdHRUdXBs ZSwgcGVyVHVwbGU7CiAJaW50CQkJYXR0bnVtOwogCisJLyogSWYgdGhlIG5hbWUgZXhpc3RzIGFz IGEgcGVyaW9kLCB3ZSdyZSBkb25lLiAqLworCXBlclR1cGxlID0gU2VhcmNoU3lzQ2FjaGUyKFBF UklPRE5BTUUsCisJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShSZWxhdGlvbkdldFJlbGlkKHJl bCkpLAorCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShjb2xuYW1lKSk7CisJaWYgKEhlYXBUdXBs ZUlzVmFsaWQocGVyVHVwbGUpKQorCXsKKwkJUmVsZWFzZVN5c0NhY2hlKHBlclR1cGxlKTsKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAor CQkJCSBlcnJtc2coImNvbHVtbiBuYW1lIFwiJXNcIiBjb25mbGljdHMgd2l0aCBhIHBlcmlvZCBu YW1lIiwKKwkJCQkJCWNvbG5hbWUpKSk7CisJfQorCiAJLyoKIAkgKiB0aGlzIHRlc3QgaXMgZGVs aWJlcmF0ZWx5IG5vdCBhdHRpc2Ryb3BwZWQtYXdhcmUsIHNpbmNlIGlmIG9uZSB0cmllcyB0bwog CSAqIGFkZCBhIGNvbHVtbiBtYXRjaGluZyBhIGRyb3BwZWQgY29sdW1uIG5hbWUsIGl0J3MgZ29u bmEgZmFpbCBhbnl3YXkuCkBAIC02ODg0LDYgKzcxMDcsNzggQEAgY2hlY2tfZm9yX2NvbHVtbl9u YW1lX2NvbGxpc2lvbihSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbG5hbWUsCiAJcmV0dXJu IHRydWU7CiB9CiAKKy8qCisgKiBJZiBhIG5ldyBwZXJpb2QgbmFtZSB3aWxsIGNvbGxpZGUgd2l0 aCB0aGUgbmFtZSBvZiBhbiBleGlzdGluZyBjb2x1bW4gb3IKKyAqIHBlcmlvZCBbYW5kIGlmX25v dF9leGlzdHMgaXMgZmFsc2VdIHRoZW4gZXJyb3Igb3V0LCBlbHNlIGRvIG5vdGhpbmcuCisgKgor ICogU2VlIGFsc28gY2hlY2tfZm9yX2NvbHVtbl9uYW1lX2NvbGxpc2lvbi4KKyAqLworc3RhdGlj IGJvb2wKK2NoZWNrX2Zvcl9wZXJpb2RfbmFtZV9jb2xsaXNpb24oUmVsYXRpb24gcmVsLCBjb25z dCBjaGFyICpwZXJuYW1lLAorCQkJCQkJCQlib29sIGlmX25vdF9leGlzdHMpCit7CisJSGVhcFR1 cGxlCWF0dFR1cGxlLCBwZXJUdXBsZTsKKwlpbnQJCQlhdHRudW07CisKKwkvKiBUT0RPOiBpbXBs ZW1lbnQgSUYgW05PVF0gRVhJU1RTIGZvciBwZXJpb2RzICovCisJQXNzZXJ0KCFpZl9ub3RfZXhp c3RzKTsKKworCS8qIElmIHRoZXJlIGlzIGFscmVhZHkgYSBwZXJpb2Qgd2l0aCB0aGlzIG5hbWUs IHRoZW4gd2UncmUgZG9uZS4gKi8KKwlwZXJUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMihQRVJJT0RO QU1FLAorCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0oUmVsYXRpb25HZXRSZWxpZChyZWwpKSwK KwkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0ocGVybmFtZSkpOworCWlmIChIZWFwVHVwbGVJc1Zh bGlkKHBlclR1cGxlKSkKKwl7CisJCWlmIChpZl9ub3RfZXhpc3RzKQorCQl7CisJCQlSZWxlYXNl U3lzQ2FjaGUocGVyVHVwbGUpOworCisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJKGVycmNvZGUo RVJSQ09ERV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJCQkJIGVycm1zZygicGVyaW9kIFwiJXNcIiBv ZiByZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIiwKKwkJCQkJCQlwZXJu YW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCQkJcmV0dXJuIGZhbHNlOwor CQl9CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9D T0xVTU4pLAorCQkJCSBlcnJtc2coInBlcmlvZCBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGFs cmVhZHkgZXhpc3RzIiwKKwkJCQkJCXBlcm5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJl bCkpKSk7CisJfQorCisJLyoKKwkgKiB0aGlzIHRlc3QgaXMgZGVsaWJlcmF0ZWx5IG5vdCBhdHRp c2Ryb3BwZWQtYXdhcmUsIHNpbmNlIGlmIG9uZSB0cmllcyB0bworCSAqIGFkZCBhIGNvbHVtbiBt YXRjaGluZyBhIGRyb3BwZWQgY29sdW1uIG5hbWUsIGl0J3MgZ29ubmEgZmFpbCBhbnl3YXkuCisJ ICoKKwkgKiBYWFg6IERvZXMgdGhpcyBob2xkIGZvciBwZXJpb2RzPworCSAqLworCWF0dFR1cGxl ID0gU2VhcmNoU3lzQ2FjaGUyKEFUVE5BTUUsCisJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShS ZWxhdGlvbkdldFJlbGlkKHJlbCkpLAorCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShwZXJuYW1l KSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQoYXR0VHVwbGUpKQorCXsKKwkJYXR0bnVtID0gKChG b3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKGF0dFR1cGxlKSktPmF0dG51bTsKKwkJUmVsZWFz ZVN5c0NhY2hlKGF0dFR1cGxlKTsKKworCQkvKgorCQkgKiBXZSB0aHJvdyBhIGRpZmZlcmVudCBl cnJvciBtZXNzYWdlIGZvciBjb25mbGljdHMgd2l0aCBzeXN0ZW0gY29sdW1uCisJCSAqIG5hbWVz LCBzaW5jZSB0aGV5IGFyZSBub3JtYWxseSBub3Qgc2hvd24gYW5kIHRoZSB1c2VyIG1pZ2h0IG90 aGVyd2lzZQorCQkgKiBiZSBjb25mdXNlZCBhYm91dCB0aGUgcmVhc29uIGZvciB0aGUgY29uZmxp Y3QuCisJCSAqLworCQlpZiAoYXR0bnVtIDw9IDApCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJwZXJpb2Qg bmFtZSBcIiVzXCIgY29uZmxpY3RzIHdpdGggYSBzeXN0ZW0gY29sdW1uIG5hbWUiLAorCQkJCQkJ CXBlcm5hbWUpKSk7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBM SUNBVEVfQ09MVU1OKSwKKwkJCQkgZXJybXNnKCJwZXJpb2QgbmFtZSBcIiVzXCIgY29uZmxpY3Rz IHdpdGggYSBjb2x1bW4gbmFtZSIsCisJCQkJCQlwZXJuYW1lKSkpOworCX0KKworCXJldHVybiB0 cnVlOworfQorCiAvKgogICogSW5zdGFsbCBhIGNvbHVtbidzIGRlcGVuZGVuY3kgb24gaXRzIGRh dGF0eXBlLgogICovCkBAIC03Mzk5LDYgKzc2OTQsMjIwIEBAIEFURXhlY0Nvb2tlZENvbHVtbkRl ZmF1bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwKIAlyZXR1cm4gYWRkcmVzczsK IH0KIAorLyoKKyAqIEFMVEVSIFRBQkxFIEFERCBQRVJJT0QKKyAqCisgKiBSZXR1cm4gdGhlIGFk ZHJlc3Mgb2YgdGhlIHdoYXQ/CisgKi8KK3N0YXRpYyBPYmplY3RBZGRyZXNzCitBVEV4ZWNBZGRQ ZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2QgKnBlcmlvZCwgTE9DS01PREUgbG9ja21vZGUsCisJ CQkJQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KQoreworCVJlbGF0aW9uCWF0dHJl bGF0aW9uOworCUhlYXBUdXBsZQlzdGFydHR1cGxlLCBlbmR0dXBsZTsKKwlGb3JtX3BnX2F0dHJp YnV0ZQlzdGFydGF0dHR1cGxlLCBlbmRhdHR0dXBsZTsKKwlBdHRyTnVtYmVyCXN0YXJ0YXR0bnVt LCBlbmRhdHRudW07CisJT2lkCQkJY29sdHlwaWQsIHJuZ3R5cGlkLCBjb25vaWQ7CisKKwkvKgor CSAqIFBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMgbm90IHlldCBpbXBsZW1lbnRlZCwgYnV0IG1h a2Ugc3VyZSBubyBvbmUgdXNlcworCSAqIHRoZSBuYW1lLgorCSAqLworCWlmIChzdHJjbXAocGVy aW9kLT5wZXJpb2RuYW1lLCAic3lzdGVtX3RpbWUiKSA9PSAwKQorCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJy bXNnKCJQRVJJT0QgRk9SIFNZU1RFTV9USU1FIGlzIG5vdCBzdXBwb3J0ZWQiKSkpOworCisJLyog VGhlIHBlcmlvZCBuYW1lIG11c3Qgbm90IGFscmVhZHkgZXhpc3QgKi8KKwkodm9pZCkgY2hlY2tf Zm9yX3BlcmlvZF9uYW1lX2NvbGxpc2lvbihyZWwsIHBlcmlvZC0+cGVyaW9kbmFtZSwgZmFsc2Up OworCisJLyogUGFyc2Ugb3B0aW9ucyAqLworCXRyYW5zZm9ybVBlcmlvZE9wdGlvbnMocGVyaW9k KTsKKworCWF0dHJlbGF0aW9uID0gdGFibGVfb3BlbihBdHRyaWJ1dGVSZWxhdGlvbklkLCBSb3dF eGNsdXNpdmVMb2NrKTsKKworCS8qIEZpbmQgdGhlIHN0YXJ0IGNvbHVtbiAqLworCXN0YXJ0dHVw bGUgPSBTZWFyY2hTeXNDYWNoZUNvcHlBdHROYW1lKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVy aW9kLT5zdGFydGNvbG5hbWUpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChzdGFydHR1cGxlKSkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9DT0xVTU4p LAorCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90 IGV4aXN0IiwKKwkJCQkJCXBlcmlvZC0+c3RhcnRjb2xuYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShyZWwpKSkpOworCXN0YXJ0YXR0dHVwbGUgPSAoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNU UlVDVChzdGFydHR1cGxlKTsKKwlzdGFydGF0dG51bSA9IHN0YXJ0YXR0dHVwbGUtPmF0dG51bTsK KworCS8qIE1ha2Ugc3VyZSBpdCdzIG5vdCBhIHN5c3RlbSBjb2x1bW4gKi8KKwlpZiAoc3RhcnRh dHRudW0gPD0gMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2coImNhbm5vdCB1c2Ugc3lzdGVtIGNv bHVtbiBcIiVzXCIgaW4gcGVyaW9kIiwKKwkJCQkJCXBlcmlvZC0+c3RhcnRjb2xuYW1lKSkpOwor CisJLyogRmluZCB0aGUgZW5kIGNvbHVtbiAqLworCWVuZHR1cGxlID0gU2VhcmNoU3lzQ2FjaGVD b3B5QXR0TmFtZShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBlcmlvZC0+ZW5kY29sbmFtZSk7CisJ aWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGVuZHR1cGxlKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCSBlcnJtc2coImNvbHVtbiBc IiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCXBlcmlvZC0+ ZW5kY29sbmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKwllbmRhdHR0dXBs ZSA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKGVuZHR1cGxlKTsKKwllbmRhdHRudW0g PSBlbmRhdHR0dXBsZS0+YXR0bnVtOworCisJLyogTWFrZSBzdXJlIGl0J3Mgbm90IGEgc3lzdGVt IGNvbHVtbiAqLworCWlmIChlbmRhdHRudW0gPD0gMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2co ImNhbm5vdCB1c2Ugc3lzdGVtIGNvbHVtbiBcIiVzXCIgaW4gcGVyaW9kIiwKKwkJCQkJCXBlcmlv ZC0+ZW5kY29sbmFtZSkpKTsKKworCS8qIEJvdGggY29sdW1ucyBtdXN0IGJlIG9mIHNhbWUgdHlw ZSAqLworCWlmIChzdGFydGF0dHR1cGxlLT5hdHR0eXBpZCAhPSBlbmRhdHR0dXBsZS0+YXR0dHlw aWQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNN QVRDSCksCisJCQkJIGVycm1zZygic3RhcnQgYW5kIGVuZCBjb2x1bW5zIG9mIHBlcmlvZCBtdXN0 IGJlIG9mIHNhbWUgdHlwZSIpKSk7CisKKwkvKiBCb3RoIGNvbHVtbnMgbXVzdCBoYXZlIHRoZSBz YW1lIGNvbGxhdGlvbiAqLworCWlmIChzdGFydGF0dHR1cGxlLT5hdHRjb2xsYXRpb24gIT0gZW5k YXR0dHVwbGUtPmF0dGNvbGxhdGlvbikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX0NPTExBVElPTl9NSVNNQVRDSCksCisJCQkJIGVycm1zZygic3RhcnQgYW5kIGVuZCBj b2x1bW5zIG9mIHBlcmlvZCBtdXN0IGhhdmUgc2FtZSBjb2xsYXRpb24iKSkpOworCisJLyoKKwkg KiBGaW5kIGEgc3VpdGFibGUgcmFuZ2UgdHlwZSBmb3Igb3BlcmF0aW9ucyBpbnZvbHZpbmcgdGhp cyBwZXJpb2QuCisJICogVXNlIHRoZSByYW5nZXR5cGUgb3B0aW9uIGlmIHByb3ZpZGVkLCBvdGhl cndpc2UgdHJ5IHRvIGZpbmQgYQorCSAqIG5vbi1hbWJpZ3VvdXMgZXhpc3RpbmcgdHlwZS4KKwkg Ki8KKwljb2x0eXBpZCA9IHN0YXJ0YXR0dHVwbGUtPmF0dHR5cGlkOworCWlmIChwZXJpb2QtPnJh bmdldHlwZW5hbWUgIT0gTlVMTCkKKwl7CisJCS8qIE1ha2Ugc3VyZSBpdCBleGlzdHMgKi8KKwkJ cm5ndHlwaWQgPSBUeXBlbmFtZUdldFR5cGlkRXh0ZW5kZWQocGVyaW9kLT5yYW5nZXR5cGVuYW1l LCBmYWxzZSk7CisJCWlmIChybmd0eXBpZCA9PSBJbnZhbGlkT2lkKQorCQkJZXJlcG9ydChFUlJP UiwgKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygiUmFu Z2UgdHlwZSAlcyBub3QgZm91bmQiLCBwZXJpb2QtPnJhbmdldHlwZW5hbWUpKSk7CisKKwkJLyog TWFrZSBzdXJlIGl0IGlzIGEgcmFuZ2UgdHlwZSAqLworCQlpZiAoIXR5cGVfaXNfcmFuZ2Uocm5n dHlwaWQpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQ RV9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coIlR5cGUgJXMgaXMgbm90IGEgcmFuZ2UgdHlwZSIs IHBlcmlvZC0+cmFuZ2V0eXBlbmFtZSkpKTsKKworCQkvKiBNYWtlIHN1cmUgaXQgbWF0Y2hlcyB0 aGUgY29sdW1uIHR5cGUgKi8KKwkJaWYgKGdldF9yYW5nZV9zdWJ0eXBlKHJuZ3R5cGlkKSAhPSBj b2x0eXBpZCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZ UEVfTUlTTUFUQ0gpLAorCQkJCQkgZXJybXNnKCJSYW5nZSB0eXBlICVzIGRvZXMgbm90IG1hdGNo IGNvbHVtbiB0eXBlICVzIiwKKwkJCQkJCSBwZXJpb2QtPnJhbmdldHlwZW5hbWUsCisJCQkJCQkg Zm9ybWF0X3R5cGVfYmUoY29sdHlwaWQpKSkpOworCX0KKwllbHNlCisJeworCQlybmd0eXBpZCA9 IGdldF9zdWJ0eXBlX3JhbmdlKGNvbHR5cGlkKTsKKwkJaWYgKHJuZ3R5cGlkID09IEludmFsaWRP aWQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9P QkpFQ1QpLAorCQkJCQkgZXJybXNnKCJubyByYW5nZSB0eXBlIGZvciAlcyBmb3VuZCBmb3IgcGVy aW9kICVzIiwKKwkJCQkJCQlmb3JtYXRfdHlwZV9iZShjb2x0eXBpZCksCisJCQkJCQkJcGVyaW9k LT5wZXJpb2RuYW1lKSwKKwkJCQkJIGVycmhpbnQoIllvdSBjYW4gZGVmaW5lIGEgY3VzdG9tIHJh bmdlIHR5cGUgd2l0aCBDUkVBVEUgVFlQRSIpKSk7CisKKwl9CisKKwloZWFwX2ZyZWV0dXBsZShz dGFydHR1cGxlKTsKKwloZWFwX2ZyZWV0dXBsZShlbmR0dXBsZSk7CisKKwljb25vaWQgPSBtYWtl X2NvbnN0cmFpbnRfZm9yX3BlcmlvZChyZWwsIHBlcmlvZCwgcGVyaW9kLT5jb25zdHJhaW50bmFt ZSwgbG9ja21vZGUsIGNvbnRleHQpOworCisJLyogU2F2ZSBpdCAqLworCVN0b3JlUGVyaW9kKHJl bCwgcGVyaW9kLT5wZXJpb2RuYW1lLCBzdGFydGF0dG51bSwgZW5kYXR0bnVtLCBybmd0eXBpZCwg Y29ub2lkKTsKKworCXRhYmxlX2Nsb3NlKGF0dHJlbGF0aW9uLCBSb3dFeGNsdXNpdmVMb2NrKTsK KworCXJldHVybiBJbnZhbGlkT2JqZWN0QWRkcmVzczsKK30KKworLyoKKyAqIEFMVEVSIFRBQkxF IERST1AgUEVSSU9ECisgKgorICogTGlrZSBEUk9QIENPTFVNTiwgd2UgY2FuJ3QgdXNlIHRoZSBu b3JtYWwgQUxURVIgVEFCTEUgcmVjdXJzaW9uIG1lY2hhbmlzbS4KKyAqLworc3RhdGljIHZvaWQK K0FURXhlY0Ryb3BQZXJpb2QoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpwZXJpb2ROYW1lLAor CQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2aW9yLAorCQkJCQkgYm9vbCByZWN1cnNlLCBib29sIHJl Y3Vyc2luZywKKwkJCQkJIGJvb2wgbWlzc2luZ19vaywgTE9DS01PREUgbG9ja21vZGUpCit7CisJ UmVsYXRpb24JcGdfcGVyaW9kOworCUZvcm1fcGdfcGVyaW9kIHBlcmlvZDsKKwlTeXNTY2FuRGVz YyBzY2FuOworCVNjYW5LZXlEYXRhIGtleTsKKwlIZWFwVHVwbGUJdHVwbGU7CisJYm9vbAkJZm91 bmQgPSBmYWxzZTsKKworCS8qIEF0IHRvcCBsZXZlbCwgcGVybWlzc2lvbiBjaGVjayB3YXMgZG9u ZSBpbiBBVFByZXBDbWQsIGVsc2UgZG8gaXQgKi8KKwlpZiAocmVjdXJzaW5nKQorCQlBVFNpbXBs ZVBlcm1pc3Npb25zKHJlbCwgQVRUX1RBQkxFKTsKKworCXBnX3BlcmlvZCA9IHRhYmxlX29wZW4o UGVyaW9kUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwkvKgorCSAqIEZpbmQgYW5k IGRyb3AgdGhlIHRhcmdldCBwZXJpb2QKKwkgKi8KKwlTY2FuS2V5SW5pdCgma2V5LAorCQkJCUFu dW1fcGdfcGVyaW9kX3BlcnJlbGlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURF USwKKwkJCQlPYmplY3RJZEdldERhdHVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSkpOworCXNjYW4g PSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdfcGVyaW9kLCBQZXJpb2RSZWxpZE5hbWVJbmRleElkLAor CQkJCQkJCSAgdHJ1ZSwgTlVMTCwgMSwgJmtleSk7CisKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxp ZCh0dXBsZSA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJT2JqZWN0QWRkcmVzcyBw ZXJvYmo7CisKKwkJcGVyaW9kID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHVwbGUpOwor CisJCWlmIChzdHJjbXAoTmFtZVN0cihwZXJpb2QtPnBlcm5hbWUpLCBwZXJpb2ROYW1lKSAhPSAw KQorCQkJY29udGludWU7CisKKwkJLyoKKwkJICogUGVyZm9ybSB0aGUgYWN0dWFsIHBlcmlvZCBk ZWxldGlvbgorCQkgKi8KKwkJcGVyb2JqLmNsYXNzSWQgPSBQZXJpb2RSZWxhdGlvbklkOworCQlw ZXJvYmoub2JqZWN0SWQgPSBwZXJpb2QtPm9pZDsKKwkJcGVyb2JqLm9iamVjdFN1YklkID0gMDsK KworCQlwZXJmb3JtRGVsZXRpb24oJnBlcm9iaiwgYmVoYXZpb3IsIDApOworCisJCWZvdW5kID0g dHJ1ZTsKKworCQkvKiBwZXJpb2QgZm91bmQgYW5kIGRyb3BwZWQgLS0gbm8gbmVlZCB0byBrZWVw IGxvb3BpbmcgKi8KKwkJYnJlYWs7CisJfQorCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKwor CWlmICghZm91bmQpCisJeworCQlpZiAoIW1pc3Npbmdfb2spCisJCXsKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCSBlcnJt c2coInBlcmlvZCBcIiVzXCIgb24gcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJ CQkJCQlwZXJpb2ROYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCQl9CisJ CWVsc2UKKwkJeworCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCShlcnJtc2coInBlcmlvZCBcIiVz XCIgb24gcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0LCBza2lwcGluZyIsCisJCQkJCQkJ cGVyaW9kTmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKwkJCXRhYmxlX2Ns b3NlKHBnX3BlcmlvZCwgUm93RXhjbHVzaXZlTG9jayk7CisJCQlyZXR1cm47CisJCX0KKwl9CisK Kwl0YWJsZV9jbG9zZShwZ19wZXJpb2QsIFJvd0V4Y2x1c2l2ZUxvY2spOworfQorCiAvKgogICog QUxURVIgVEFCTEUgQUxURVIgQ09MVU1OIEFERCBJREVOVElUWQogICoKQEAgLTEyMDQ0LDYgKzEy NTUzLDE1IEBAIEFURXhlY0FsdGVyQ29sdW1uVHlwZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJl bGF0aW9uIHJlbCwKIAkJCQlSZW1lbWJlckNvbnN0cmFpbnRGb3JSZWJ1aWxkaW5nKGZvdW5kT2Jq ZWN0Lm9iamVjdElkLCB0YWIpOwogCQkJCWJyZWFrOwogCisJCQljYXNlIE9DTEFTU19QRVJJT0Q6 CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coImNhbm5vdCBhbHRlciB0eXBlIG9mIGEgY29sdW1u IHVzZWQgYnkgYSBwZXJpb2QiKSwKKwkJCQkJCSBlcnJkZXRhaWwoIiVzIGRlcGVuZHMgb24gY29s dW1uIFwiJXNcIiIsCisJCQkJCQkJCSAgIGdldE9iamVjdERlc2NyaXB0aW9uKCZmb3VuZE9iamVj dCwgZmFsc2UpLAorCQkJCQkJCQkgICBjb2xOYW1lKSkpOworCQkJCWJyZWFrOworCiAJCQljYXNl IE9DTEFTU19SRVdSSVRFOgogCQkJCS8qIFhYWCBzb21lZGF5IHNlZSBpZiB3ZSBjYW4gY29wZSB3 aXRoIHJldmlzaW5nIHZpZXdzICovCiAJCQkJZXJlcG9ydChFUlJPUiwKQEAgLTE0MDQzLDcgKzE0 NTYxLDcgQEAgQWx0ZXJUYWJsZU1vdmVBbGwoQWx0ZXJUYWJsZU1vdmVBbGxTdG10ICpzdG10KQog CiAJCUV2ZW50VHJpZ2dlckFsdGVyVGFibGVTdGFydCgoTm9kZSAqKSBzdG10KTsKIAkJLyogT0lE IGlzIHNldCBieSBBbHRlclRhYmxlSW50ZXJuYWwgKi8KLQkJQWx0ZXJUYWJsZUludGVybmFsKGxm aXJzdF9vaWQobCksIGNtZHMsIGZhbHNlKTsKKwkJQWx0ZXJUYWJsZUludGVybmFsKGxmaXJzdF9v aWQobCksIGNtZHMsIGZhbHNlLCBOVUxMKTsKIAkJRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZUVuZCgp OwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmlldy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdmlldy5jCmluZGV4IDRkZjA1YTBiMzMuLjIyYmM0OTlmNDcgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZpZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy92aWV3LmMKQEAgLTE2OSw3ICsxNjksNyBAQCBEZWZpbmVWaXJ0dWFsUmVsYXRpb24oUmFu Z2VWYXIgKnJlbGF0aW9uLCBMaXN0ICp0bGlzdCwgYm9vbCByZXBsYWNlLAogCQkJfQogCiAJCQkv KiBFdmVudFRyaWdnZXJBbHRlclRhYmxlU3RhcnQgY2FsbGVkIGJ5IFByb2Nlc3NVdGlsaXR5U2xv dyAqLwotCQkJQWx0ZXJUYWJsZUludGVybmFsKHZpZXdPaWQsIGF0Y21kcywgdHJ1ZSk7CisJCQlB bHRlclRhYmxlSW50ZXJuYWwodmlld09pZCwgYXRjbWRzLCB0cnVlLCBOVUxMKTsKIAogCQkJLyog TWFrZSB0aGUgbmV3IHZpZXcgY29sdW1ucyB2aXNpYmxlICovCiAJCQlDb21tYW5kQ291bnRlcklu Y3JlbWVudCgpOwpAQCAtMjAxLDcgKzIwMSw3IEBAIERlZmluZVZpcnR1YWxSZWxhdGlvbihSYW5n ZVZhciAqcmVsYXRpb24sIExpc3QgKnRsaXN0LCBib29sIHJlcGxhY2UsCiAJCWF0Y21kcyA9IGxp c3RfbWFrZTEoYXRjbWQpOwogCiAJCS8qIEV2ZW50VHJpZ2dlckFsdGVyVGFibGVTdGFydCBjYWxs ZWQgYnkgUHJvY2Vzc1V0aWxpdHlTbG93ICovCi0JCUFsdGVyVGFibGVJbnRlcm5hbCh2aWV3T2lk LCBhdGNtZHMsIHRydWUpOworCQlBbHRlclRhYmxlSW50ZXJuYWwodmlld09pZCwgYXRjbWRzLCB0 cnVlLCBOVUxMKTsKIAogCQlPYmplY3RBZGRyZXNzU2V0KGFkZHJlc3MsIFJlbGF0aW9uUmVsYXRp b25JZCwgdmlld09pZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5j cy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKaW5kZXggYmQ4N2YyMzc4NC4uOWYz MDdhY2E3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKKysrIGIv c3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKQEAgLTMwOTAsNiArMzA5MCwyMSBAQCBfY29w eUNvbnN0cmFpbnQoY29uc3QgQ29uc3RyYWludCAqZnJvbSkKIAlyZXR1cm4gbmV3bm9kZTsKIH0K IAorc3RhdGljIFBlcmlvZCAqCitfY29weVBlcmlvZChjb25zdCBQZXJpb2QgKmZyb20pCit7CisJ UGVyaW9kICpuZXdub2RlID0gbWFrZU5vZGUoUGVyaW9kKTsKKworCUNPUFlfU1RSSU5HX0ZJRUxE KHBlcmlvZG5hbWUpOworCUNPUFlfU1RSSU5HX0ZJRUxEKHN0YXJ0Y29sbmFtZSk7CisJQ09QWV9T VFJJTkdfRklFTEQoZW5kY29sbmFtZSk7CisJQ09QWV9OT0RFX0ZJRUxEKG9wdGlvbnMpOworCUNP UFlfU0NBTEFSX0ZJRUxEKHJuZ3R5cGlkKTsKKwlDT1BZX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9u KTsKKworCXJldHVybiBuZXdub2RlOworfQorCiBzdGF0aWMgRGVmRWxlbSAqCiBfY29weURlZkVs ZW0oY29uc3QgRGVmRWxlbSAqZnJvbSkKIHsKQEAgLTM2NDksNiArMzY2NCw3IEBAIF9jb3B5SW5k ZXhTdG10KGNvbnN0IEluZGV4U3RtdCAqZnJvbSkKIAlDT1BZX1NUUklOR19GSUVMRCh0YWJsZVNw YWNlKTsKIAlDT1BZX05PREVfRklFTEQoaW5kZXhQYXJhbXMpOwogCUNPUFlfTk9ERV9GSUVMRChp bmRleEluY2x1ZGluZ1BhcmFtcyk7CisJQ09QWV9OT0RFX0ZJRUxEKHBlcmlvZCk7CiAJQ09QWV9O T0RFX0ZJRUxEKG9wdGlvbnMpOwogCUNPUFlfTk9ERV9GSUVMRCh3aGVyZUNsYXVzZSk7CiAJQ09Q WV9OT0RFX0ZJRUxEKGV4Y2x1ZGVPcE5hbWVzKTsKQEAgLTU3ODcsNiArNTgwMyw5IEBAIGNvcHlP YmplY3RJbXBsKGNvbnN0IHZvaWQgKmZyb20pCiAJCWNhc2UgVF9Db25zdHJhaW50OgogCQkJcmV0 dmFsID0gX2NvcHlDb25zdHJhaW50KGZyb20pOwogCQkJYnJlYWs7CisJCWNhc2UgVF9QZXJpb2Q6 CisJCQlyZXR2YWwgPSBfY29weVBlcmlvZChmcm9tKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfRGVm RWxlbToKIAkJCXJldHZhbCA9IF9jb3B5RGVmRWxlbShmcm9tKTsKIAkJCWJyZWFrOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMv ZXF1YWxmdW5jcy5jCmluZGV4IGRiYTNlNmIzMWUuLmUzNzJmYmY4NjIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVh bGZ1bmNzLmMKQEAgLTEzNzgsNiArMTM3OCw3IEBAIF9lcXVhbEluZGV4U3RtdChjb25zdCBJbmRl eFN0bXQgKmEsIGNvbnN0IEluZGV4U3RtdCAqYikKIAlDT01QQVJFX1NUUklOR19GSUVMRCh0YWJs ZVNwYWNlKTsKIAlDT01QQVJFX05PREVfRklFTEQoaW5kZXhQYXJhbXMpOwogCUNPTVBBUkVfTk9E RV9GSUVMRChpbmRleEluY2x1ZGluZ1BhcmFtcyk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHBlcmlv ZCk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKG9wdGlvbnMpOwogCUNPTVBBUkVfTk9ERV9GSUVMRCh3 aGVyZUNsYXVzZSk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKGV4Y2x1ZGVPcE5hbWVzKTsKQEAgLTI2 OTQsNiArMjY5NSwxOSBAQCBfZXF1YWxDb25zdHJhaW50KGNvbnN0IENvbnN0cmFpbnQgKmEsIGNv bnN0IENvbnN0cmFpbnQgKmIpCiAJcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBib29sCitfZXF1 YWxQZXJpb2QoY29uc3QgUGVyaW9kICphLCBjb25zdCBQZXJpb2QgKmIpCit7CisJQ09NUEFSRV9T VFJJTkdfRklFTEQocGVyaW9kbmFtZSk7CisJQ09NUEFSRV9TVFJJTkdfRklFTEQoc3RhcnRjb2xu YW1lKTsKKwlDT01QQVJFX1NUUklOR19GSUVMRChlbmRjb2xuYW1lKTsKKwlDT01QQVJFX05PREVf RklFTEQob3B0aW9ucyk7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQocm5ndHlwaWQpOworCUNPTVBB UkVfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIHRydWU7Cit9CisKIHN0YXRp YyBib29sCiBfZXF1YWxEZWZFbGVtKGNvbnN0IERlZkVsZW0gKmEsIGNvbnN0IERlZkVsZW0gKmIp CiB7CkBAIC0zNzc4LDYgKzM3OTIsOSBAQCBlcXVhbChjb25zdCB2b2lkICphLCBjb25zdCB2b2lk ICpiKQogCQljYXNlIFRfQ29uc3RyYWludDoKIAkJCXJldHZhbCA9IF9lcXVhbENvbnN0cmFpbnQo YSwgYik7CiAJCQlicmVhazsKKwkJY2FzZSBUX1BlcmlvZDoKKwkJCXJldHZhbCA9IF9lcXVhbFBl cmlvZChhLCBiKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfRGVmRWxlbToKIAkJCXJldHZhbCA9IF9l cXVhbERlZkVsZW0oYSwgYik7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25v ZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggZmYz ZGNjN2IxOC4uY2U2YzI1MzRmOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1 bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTE1NjUsNiArMTU2 NSw5IEBAIGV4cHJMb2NhdGlvbihjb25zdCBOb2RlICpleHByKQogCQljYXNlIFRfQ29uc3RyYWlu dDoKIAkJCWxvYyA9ICgoY29uc3QgQ29uc3RyYWludCAqKSBleHByKS0+bG9jYXRpb247CiAJCQli cmVhazsKKwkJY2FzZSBUX1BlcmlvZDoKKwkJCWxvYyA9ICgoY29uc3QgUGVyaW9kICopIGV4cHIp LT5sb2NhdGlvbjsKKwkJCWJyZWFrOwogCQljYXNlIFRfRnVuY3Rpb25QYXJhbWV0ZXI6CiAJCQkv KiBqdXN0IHVzZSB0eXBlbmFtZSdzIGxvY2F0aW9uICovCiAJCQlsb2MgPSBleHByTG9jYXRpb24o KE5vZGUgKikgKChjb25zdCBGdW5jdGlvblBhcmFtZXRlciAqKSBleHByKS0+YXJnVHlwZSk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9k ZXMvb3V0ZnVuY3MuYwppbmRleCBlMzJiOTJlMjk5Li40ZTA0NjlhNTgwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1 bmNzLmMKQEAgLTI3MDQsNiArMjcwNCw3IEBAIF9vdXRDcmVhdGVTdG10SW5mbyhTdHJpbmdJbmZv IHN0ciwgY29uc3QgQ3JlYXRlU3RtdCAqbm9kZSkKIHsKIAlXUklURV9OT0RFX0ZJRUxEKHJlbGF0 aW9uKTsKIAlXUklURV9OT0RFX0ZJRUxEKHRhYmxlRWx0cyk7CisJV1JJVEVfTk9ERV9GSUVMRChw ZXJpb2RzKTsKIAlXUklURV9OT0RFX0ZJRUxEKGluaFJlbGF0aW9ucyk7CiAJV1JJVEVfTk9ERV9G SUVMRChwYXJ0c3BlYyk7CiAJV1JJVEVfTk9ERV9GSUVMRChwYXJ0Ym91bmQpOwpAQCAtMjczNSw2 ICsyNzM2LDI3IEBAIF9vdXRDcmVhdGVGb3JlaWduVGFibGVTdG10KFN0cmluZ0luZm8gc3RyLCBj b25zdCBDcmVhdGVGb3JlaWduVGFibGVTdG10ICpub2RlKQogCVdSSVRFX05PREVfRklFTEQob3B0 aW9ucyk7CiB9CiAKK3N0YXRpYyB2b2lkCitfb3V0QWx0ZXJUYWJsZVN0bXQoU3RyaW5nSW5mbyBz dHIsIGNvbnN0IEFsdGVyVGFibGVTdG10ICpub2RlKQoreworCVdSSVRFX05PREVfVFlQRSgiQUxU RVJUQUJMRVNUTVQiKTsKKworCVdSSVRFX05PREVfRklFTEQocmVsYXRpb24pOworCVdSSVRFX05P REVfRklFTEQoY21kcyk7Cit9CisKK3N0YXRpYyB2b2lkCitfb3V0QWx0ZXJUYWJsZUNtZChTdHJp bmdJbmZvIHN0ciwgY29uc3QgQWx0ZXJUYWJsZUNtZCAqbm9kZSkKK3sKKwlXUklURV9OT0RFX1RZ UEUoIkFMVEVSVEFCTEVDTUQiKTsKKworCVdSSVRFX0VOVU1fRklFTEQoc3VidHlwZSwgQWx0ZXJU YWJsZVR5cGUpOworCVdSSVRFX1NUUklOR19GSUVMRChuYW1lKTsKKwlXUklURV9JTlRfRklFTEQo bnVtKTsKKwlXUklURV9OT0RFX0ZJRUxEKGRlZik7CisJV1JJVEVfQk9PTF9GSUVMRChtaXNzaW5n X29rKTsKK30KKwogc3RhdGljIHZvaWQKIF9vdXRJbXBvcnRGb3JlaWduU2NoZW1hU3RtdChTdHJp bmdJbmZvIHN0ciwgY29uc3QgSW1wb3J0Rm9yZWlnblNjaGVtYVN0bXQgKm5vZGUpCiB7CkBAIC0y NzU5LDYgKzI3ODEsNyBAQCBfb3V0SW5kZXhTdG10KFN0cmluZ0luZm8gc3RyLCBjb25zdCBJbmRl eFN0bXQgKm5vZGUpCiAJV1JJVEVfU1RSSU5HX0ZJRUxEKHRhYmxlU3BhY2UpOwogCVdSSVRFX05P REVfRklFTEQoaW5kZXhQYXJhbXMpOwogCVdSSVRFX05PREVfRklFTEQoaW5kZXhJbmNsdWRpbmdQ YXJhbXMpOworCVdSSVRFX05PREVfRklFTEQocGVyaW9kKTsKIAlXUklURV9OT0RFX0ZJRUxEKG9w dGlvbnMpOwogCVdSSVRFX05PREVfRklFTEQod2hlcmVDbGF1c2UpOwogCVdSSVRFX05PREVfRklF TEQoZXhjbHVkZU9wTmFtZXMpOwpAQCAtMzc1OCw2ICszNzgxLDE5IEBAIF9vdXRDb25zdHJhaW50 KFN0cmluZ0luZm8gc3RyLCBjb25zdCBDb25zdHJhaW50ICpub2RlKQogCX0KIH0KIAorc3RhdGlj IHZvaWQKK19vdXRQZXJpb2QoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFBlcmlvZCAqbm9kZSkKK3sK KwlXUklURV9OT0RFX1RZUEUoIlBFUklPRCIpOworCisJV1JJVEVfU1RSSU5HX0ZJRUxEKHBlcmlv ZG5hbWUpOworCVdSSVRFX1NUUklOR19GSUVMRChzdGFydGNvbG5hbWUpOworCVdSSVRFX1NUUklO R19GSUVMRChlbmRjb2xuYW1lKTsKKwlXUklURV9OT0RFX0ZJRUxEKG9wdGlvbnMpOworCVdSSVRF X09JRF9GSUVMRChybmd0eXBpZCk7CisJV1JJVEVfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOwor fQorCiBzdGF0aWMgdm9pZAogX291dEZvcmVpZ25LZXlDYWNoZUluZm8oU3RyaW5nSW5mbyBzdHIs IGNvbnN0IEZvcmVpZ25LZXlDYWNoZUluZm8gKm5vZGUpCiB7CkBAIC00MzQxLDYgKzQzNzcsMTIg QEAgb3V0Tm9kZShTdHJpbmdJbmZvIHN0ciwgY29uc3Qgdm9pZCAqb2JqKQogCQkJY2FzZSBUX0Ny ZWF0ZUZvcmVpZ25UYWJsZVN0bXQ6CiAJCQkJX291dENyZWF0ZUZvcmVpZ25UYWJsZVN0bXQoc3Ry LCBvYmopOwogCQkJCWJyZWFrOworCQkJY2FzZSBUX0FsdGVyVGFibGVTdG10OgorCQkJCV9vdXRB bHRlclRhYmxlU3RtdChzdHIsIG9iaik7CisJCQkJYnJlYWs7CisJCQljYXNlIFRfQWx0ZXJUYWJs ZUNtZDoKKwkJCQlfb3V0QWx0ZXJUYWJsZUNtZChzdHIsIG9iaik7CisJCQkJYnJlYWs7CiAJCQlj YXNlIFRfSW1wb3J0Rm9yZWlnblNjaGVtYVN0bXQ6CiAJCQkJX291dEltcG9ydEZvcmVpZ25TY2hl bWFTdG10KHN0ciwgb2JqKTsKIAkJCQlicmVhazsKQEAgLTQ0ODUsNiArNDUyNyw5IEBAIG91dE5v ZGUoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IHZvaWQgKm9iaikKIAkJCWNhc2UgVF9Db25zdHJhaW50 OgogCQkJCV9vdXRDb25zdHJhaW50KHN0ciwgb2JqKTsKIAkJCQlicmVhazsKKwkJCWNhc2UgVF9Q ZXJpb2Q6CisJCQkJX291dFBlcmlvZChzdHIsIG9iaik7CisJCQkJYnJlYWs7CiAJCQljYXNlIFRf RnVuY0NhbGw6CiAJCQkJX291dEZ1bmNDYWxsKHN0ciwgb2JqKTsKIAkJCQlicmVhazsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55CmluZGV4IGViMjQxOTU0MzguLjg4OGJkYjQxNWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNTU5LDcg KzU1OSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxu YW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8a2V5d29yZD4gY29sX25h bWVfa2V5d29yZCByZXNlcnZlZF9rZXl3b3JkCiAldHlwZSA8a2V5d29yZD4gYmFyZV9sYWJlbF9r ZXl3b3JkCiAKLSV0eXBlIDxub2RlPglUYWJsZUNvbnN0cmFpbnQgVGFibGVMaWtlQ2xhdXNlCisl dHlwZSA8bm9kZT4JVGFibGVDb25zdHJhaW50IFRhYmxlTGlrZUNsYXVzZSBUYWJsZVBlcmlvZAog JXR5cGUgPGl2YWw+CVRhYmxlTGlrZU9wdGlvbkxpc3QgVGFibGVMaWtlT3B0aW9uCiAldHlwZSA8 c3RyPgkJY29sdW1uX2NvbXByZXNzaW9uIG9wdF9jb2x1bW5fY29tcHJlc3Npb24KICV0eXBlIDxs aXN0PglDb2xRdWFsTGlzdApAQCAtNjkyLDcgKzY5Miw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVj dXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVy eSk7CiAJT1JERVIgT1JESU5BTElUWSBPVEhFUlMgT1VUX1AgT1VURVJfUAogCU9WRVIgT1ZFUkxB UFMgT1ZFUkxBWSBPVkVSUklESU5HIE9XTkVEIE9XTkVSCiAKLQlQQVJBTExFTCBQQVJTRVIgUEFS VElBTCBQQVJUSVRJT04gUEFTU0lORyBQQVNTV09SRCBQTEFDSU5HIFBMQU5TIFBPTElDWQorCVBB UkFMTEVMIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVNTSU5HIFBBU1NXT1JEIFBFUklPRCBQ TEFDSU5HIFBMQU5TIFBPTElDWQogCVBPU0lUSU9OIFBSRUNFRElORyBQUkVDSVNJT04gUFJFU0VS VkUgUFJFUEFSRSBQUkVQQVJFRCBQUklNQVJZCiAJUFJJT1IgUFJJVklMRUdFUyBQUk9DRURVUkFM IFBST0NFRFVSRSBQUk9DRURVUkVTIFBST0dSQU0gUFVCTElDQVRJT04KIApAQCAtMjQwMiw2ICsy NDAyLDI0IEBAIGFsdGVyX3RhYmxlX2NtZDoKIAkJCQkJbi0+ZGVmID0gKE5vZGUgKikgJDQ7CiAJ CQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBBREQg UEVSSU9EIEZPUiA8bmFtZT4gKDxuYW1lPiwgPG5hbWU+KSAqLworCQkJfCBBRERfUCBUYWJsZVBl cmlvZAorCQkJCXsKKwkJCQkJQWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVD bWQpOworCQkJCQluLT5zdWJ0eXBlID0gQVRfQWRkUGVyaW9kOworCQkJCQluLT5kZWYgPSAkMjsK KwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IERS T1AgUEVSSU9EIEZPUiA8bmFtZT4gW1JFU1RSSUNUfENBU0NBREVdICovCisJCQl8IERST1AgUEVS SU9EIEZPUiBuYW1lIG9wdF9kcm9wX2JlaGF2aW9yCisJCQkJeworCQkJCQlBbHRlclRhYmxlQ21k ICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJCQkJCW4tPnN1YnR5cGUgPSBBVF9Ecm9w UGVyaW9kOworCQkJCQluLT5uYW1lID0gJDQ7CisJCQkJCW4tPmJlaGF2aW9yID0gJDU7CisJCQkJ CW4tPm1pc3Npbmdfb2sgPSBmYWxzZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQogCQkJ LyogQUxURVIgVEFCTEUgPG5hbWU+IEFERCBDT05TVFJBSU5UIC4uLiAqLwogCQkJfCBBRERfUCBU YWJsZUNvbnN0cmFpbnQKIAkJCQl7CkBAIC0zNDU1LDggKzM0NzMsMTAgQEAgVGFibGVFbGVtZW50 OgogCQkJY29sdW1uRGVmCQkJCQkJCXsgJCQgPSAkMTsgfQogCQkJfCBUYWJsZUxpa2VDbGF1c2UJ CQkJCXsgJCQgPSAkMTsgfQogCQkJfCBUYWJsZUNvbnN0cmFpbnQJCQkJCXsgJCQgPSAkMTsgfQor CQkJfCBUYWJsZVBlcmlvZAkJCQkJCXsgJCQgPSAkMTsgfQogCQk7CiAKKwogVHlwZWRUYWJsZUVs ZW1lbnQ6CiAJCQljb2x1bW5PcHRpb25zCQkJCQkJeyAkJCA9ICQxOyB9CiAJCQl8IFRhYmxlQ29u c3RyYWludAkJCQkJeyAkJCA9ICQxOyB9CkBAIC0zNzY3LDYgKzM3ODcsMTkgQEAgVGFibGVMaWtl T3B0aW9uOgogCQk7CiAKIAorVGFibGVQZXJpb2Q6CisJCQlQRVJJT0QgRk9SIG5hbWUgJygnIG5h bWUgJywnIG5hbWUgJyknIG9wdF9kZWZpbml0aW9uCisJCQkJeworCQkJCQlQZXJpb2QgKm4gPSBt YWtlTm9kZShQZXJpb2QpOworCQkJCQluLT5wZXJpb2RuYW1lID0gJDM7CisJCQkJCW4tPnN0YXJ0 Y29sbmFtZSA9ICQ1OworCQkJCQluLT5lbmRjb2xuYW1lID0gJDc7CisJCQkJCW4tPm9wdGlvbnMg PSAkOTsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJ CX0KKwkJOworCiAvKiBDb25zdHJhaW50RWxlbSBzcGVjaWZpZXMgY29uc3RyYWludCBzeW50YXgg d2hpY2ggaXMgbm90IGVtYmVkZGVkIGludG8KICAqCWEgY29sdW1uIGRlZmluaXRpb24uIENvbENv bnN0cmFpbnRFbGVtIHNwZWNpZmllcyB0aGUgZW1iZWRkZWQgZm9ybS4KICAqIC0gdGhvbWFzIDE5 OTctMTItMDMKQEAgLTY1NDUsNiArNjU3OCwxNCBAQCBDb21tZW50U3RtdDoKIAkJCQkJbi0+Y29t bWVudCA9ICQ5OwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQorCQkJfCBDT01NRU5UIE9O IFBFUklPRCBhbnlfbmFtZSBJUyBjb21tZW50X3RleHQKKwkJCQl7CisJCQkJCUNvbW1lbnRTdG10 ICpuID0gbWFrZU5vZGUoQ29tbWVudFN0bXQpOworCQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX1BF UklPRDsKKwkJCQkJbi0+b2JqZWN0ID0gKE5vZGUgKikgJDQ7CisJCQkJCW4tPmNvbW1lbnQgPSAk NjsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KIAkJCXwgQ09NTUVOVCBPTiBMQVJHRV9Q IE9CSkVDVF9QIE51bWVyaWNPbmx5IElTIGNvbW1lbnRfdGV4dAogCQkJCXsKIAkJCQkJQ29tbWVu dFN0bXQgKm4gPSBtYWtlTm9kZShDb21tZW50U3RtdCk7CkBAIC0xNTkzNyw2ICsxNTk3OCw3IEBA IHJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IE9OTFkKIAkJCXwgT1IKIAkJCXwgT1JERVIKKwkJCXwg UEVSSU9ECiAJCQl8IFBMQUNJTkcKIAkJCXwgUFJJTUFSWQogCQkJfCBSRUZFUkVOQ0VTCkBAIC0x NjIzMSw2ICsxNjI3Myw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgUEFSVElUSU9OCiAJ CQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dPUkQKKwkJCXwgUEVSSU9ECiAJCQl8IFBMQUNJTkcKIAkJ CXwgUExBTlMKIAkJCXwgUE9MSUNZCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCA4 MWQzZTc5OTBjLi4yNTU0MGUwMTQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKQEAg LTgwLDYgKzgwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlib29sCQlpc2ZvcmVpZ247CQkvKiB0cnVl IGlmIENSRUFURS9BTFRFUiBGT1JFSUdOIFRBQkxFICovCiAJYm9vbAkJaXNhbHRlcjsJCS8qIHRy dWUgaWYgYWx0ZXJpbmcgZXhpc3RpbmcgdGFibGUgKi8KIAlMaXN0CSAgICpjb2x1bW5zOwkJLyog Q29sdW1uRGVmIGl0ZW1zICovCisJTGlzdAkgICAqcGVyaW9kczsJCS8qIFBlcmlvZCBpdGVtcyAq LwogCUxpc3QJICAgKmNrY29uc3RyYWludHM7CS8qIENIRUNLIGNvbnN0cmFpbnRzICovCiAJTGlz dAkgICAqZmtjb25zdHJhaW50czsJLyogRk9SRUlHTiBLRVkgY29uc3RyYWludHMgKi8KIAlMaXN0 CSAgICppeGNvbnN0cmFpbnRzOwkvKiBpbmRleC1jcmVhdGluZyBjb25zdHJhaW50cyAqLwpAQCAt MTEyLDYgKzExMyw4IEBAIHR5cGVkZWYgc3RydWN0CiAKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUNv bHVtbkRlZmluaXRpb24oQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwKIAkJCQkJCQkJCSAgQ29sdW1u RGVmICpjb2x1bW4pOworc3RhdGljIHZvaWQgdHJhbnNmb3JtVGFibGVQZXJpb2QoQ3JlYXRlU3Rt dENvbnRleHQgKmN4dCwKKwkJCQkJCQkJIFBlcmlvZCAqcGVyaW9kKTsKIHN0YXRpYyB2b2lkIHRy YW5zZm9ybVRhYmxlQ29uc3RyYWludChDcmVhdGVTdG10Q29udGV4dCAqY3h0LAogCQkJCQkJCQkJ IENvbnN0cmFpbnQgKmNvbnN0cmFpbnQpOwogc3RhdGljIHZvaWQgdHJhbnNmb3JtVGFibGVMaWtl Q2xhdXNlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCkBAIC0yMzEsNiArMjM0LDcgQEAgdHJhbnNm b3JtQ3JlYXRlU3RtdChDcmVhdGVTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZykK IAljeHQuaW5oUmVsYXRpb25zID0gc3RtdC0+aW5oUmVsYXRpb25zOwogCWN4dC5pc2FsdGVyID0g ZmFsc2U7CiAJY3h0LmNvbHVtbnMgPSBOSUw7CisJY3h0LnBlcmlvZHMgPSBOSUw7CiAJY3h0LmNr Y29uc3RyYWludHMgPSBOSUw7CiAJY3h0LmZrY29uc3RyYWludHMgPSBOSUw7CiAJY3h0Lml4Y29u c3RyYWludHMgPSBOSUw7CkBAIC0yNzAsNiArMjc0LDEwIEBAIHRyYW5zZm9ybUNyZWF0ZVN0bXQo Q3JlYXRlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcpCiAJCQkJdHJhbnNmb3Jt Q29sdW1uRGVmaW5pdGlvbigmY3h0LCAoQ29sdW1uRGVmICopIGVsZW1lbnQpOwogCQkJCWJyZWFr OwogCisJCQljYXNlIFRfUGVyaW9kOgorCQkJCXRyYW5zZm9ybVRhYmxlUGVyaW9kKCZjeHQsIChQ ZXJpb2QgKikgZWxlbWVudCk7CisJCQkJYnJlYWs7CisKIAkJCWNhc2UgVF9Db25zdHJhaW50Ogog CQkJCXRyYW5zZm9ybVRhYmxlQ29uc3RyYWludCgmY3h0LCAoQ29uc3RyYWludCAqKSBlbGVtZW50 KTsKIAkJCQlicmVhazsKQEAgLTMzNyw2ICszNDUsNyBAQCB0cmFuc2Zvcm1DcmVhdGVTdG10KENy ZWF0ZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKQogCSAqIE91dHB1dCByZXN1 bHRzLgogCSAqLwogCXN0bXQtPnRhYmxlRWx0cyA9IGN4dC5jb2x1bW5zOworCXN0bXQtPnBlcmlv ZHMgPSBjeHQucGVyaW9kczsKIAlzdG10LT5jb25zdHJhaW50cyA9IGN4dC5ja2NvbnN0cmFpbnRz OwogCiAJcmVzdWx0ID0gbGFwcGVuZChjeHQuYmxpc3QsIHN0bXQpOwpAQCAtODU5LDYgKzg2OCwx MzYgQEAgdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlvbihDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBD b2x1bW5EZWYgKmNvbHVtbikKIAl9CiB9CiAKK3ZvaWQKK3RyYW5zZm9ybVBlcmlvZE9wdGlvbnMo UGVyaW9kICpwZXJpb2QpCit7CisJTGlzdENlbGwgICAqb3B0aW9uOworCURlZkVsZW0JICAgKmRj b25zdHJhaW50bmFtZSA9IE5VTEw7CisJRGVmRWxlbQkgICAqZHJhbmdldHlwZW5hbWUgPSBOVUxM OworCisJZm9yZWFjaChvcHRpb24sIHBlcmlvZC0+b3B0aW9ucykKKwl7CisJCURlZkVsZW0gICAg KmRlZmVsID0gKERlZkVsZW0gKikgbGZpcnN0KG9wdGlvbik7CisKKwkJaWYgKHN0cmNtcChkZWZl bC0+ZGVmbmFtZSwgImNoZWNrX2NvbnN0cmFpbnRfbmFtZSIpID09IDApCisJCXsKKwkJCWlmIChk Y29uc3RyYWludG5hbWUpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFu dCBvcHRpb25zIikpKTsKKwkJCWRjb25zdHJhaW50bmFtZSA9IGRlZmVsOworCQl9CisJCWVsc2Ug aWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInJhbmdldHlwZSIpID09IDApCisJCXsKKwkJCWlm IChkcmFuZ2V0eXBlbmFtZSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJIGVycm1zZygiY29uZmxpY3Rpbmcgb3IgcmVkdW5k YW50IG9wdGlvbnMiKSkpOworCQkJZHJhbmdldHlwZW5hbWUgPSBkZWZlbDsKKwkJfQorCQllbHNl CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiks CisJCQkJCSBlcnJtc2coIm9wdGlvbiBcIiVzXCIgbm90IHJlY29nbml6ZWQiLCBkZWZlbC0+ZGVm bmFtZSkpKTsKKwl9CisKKwlpZiAoZGNvbnN0cmFpbnRuYW1lICE9IE5VTEwpCisJCXBlcmlvZC0+ Y29uc3RyYWludG5hbWUgPSBkZWZHZXRTdHJpbmcoZGNvbnN0cmFpbnRuYW1lKTsKKwllbHNlCisJ CXBlcmlvZC0+Y29uc3RyYWludG5hbWUgPSBOVUxMOworCisJaWYgKGRyYW5nZXR5cGVuYW1lICE9 IE5VTEwpCisJCXBlcmlvZC0+cmFuZ2V0eXBlbmFtZSA9IGRlZkdldFN0cmluZyhkcmFuZ2V0eXBl bmFtZSk7CisJZWxzZQorCQlwZXJpb2QtPnJhbmdldHlwZW5hbWUgPSBOVUxMOworfQorCisvKgor ICogdHJhbnNmb3JtVGFibGVQZXJpb2QKKyAqCQl0cmFuc2Zvcm0gYSBQZXJpb2Qgbm9kZSB3aXRo aW4gQ1JFQVRFIFRBQkxFIG9yIEFMVEVSIFRBQkxFCisgKi8KK3N0YXRpYyB2b2lkCit0cmFuc2Zv cm1UYWJsZVBlcmlvZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQZXJpb2QgKnBlcmlvZCkKK3sK KwlPaWQJCQljb2x0eXBpZDsKKwlDb2x1bW5EZWYgICpjb2w7CisJTGlzdENlbGwgICAqY29sdW1u czsKKworCWlmIChzdHJjbXAocGVyaW9kLT5wZXJpb2RuYW1lLCAic3lzdGVtX3RpbWUiKSA9PSAw KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJQRVJJT0QgRk9SIFNZU1RFTV9USU1FIGlzIG5vdCBz dXBwb3J0ZWQiKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwKKwkJCQkJ CQkJCQlwZXJpb2QtPmxvY2F0aW9uKSkpOworCisJLyoKKwkgKiBEZXRlcm1pbmUgdGhlIGNvbHVt biBpbmZvIGFuZCByYW5nZSB0eXBlIHNvIHRoYXQgdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50cwor CSAqIGtub3dzIGhvdyB0byBjcmVhdGUgUFJJTUFSWSBLRVkvVU5JUVVFIGNvbnN0cmFpbnRzIHVz aW5nIHRoaXMgUEVSSU9ELgorCSAqLworCXRyYW5zZm9ybVBlcmlvZE9wdGlvbnMocGVyaW9kKTsK KworCS8qCisJICogRmluZCBhIHN1aXRhYmxlIHJhbmdlIHR5cGUgZm9yIG9wZXJhdGlvbnMgaW52 b2x2aW5nIHRoaXMgcGVyaW9kLgorCSAqIFVzZSB0aGUgcmFuZ2V0eXBlIG9wdGlvbiBpZiBwcm92 aWRlZCwgb3RoZXJ3aXNlIHRyeSB0byBmaW5kIGEKKwkgKiBub24tYW1iaWd1b3VzIGV4aXN0aW5n IHR5cGUuCisJICovCisJY29sdHlwaWQgPSBJbnZhbGlkT2lkOworCisJLyogRmlyc3QgZmluZCBv dXQgdGhlIHR5cGUgb2YgdGhlIHBlcmlvZCdzIGNvbHVtbnMgKi8KKwlwZXJpb2QtPnJuZ3R5cGlk ID0gSW52YWxpZE9pZDsKKwlmb3JlYWNoIChjb2x1bW5zLCBjeHQtPmNvbHVtbnMpCisJeworCQlj b2wgPSAoQ29sdW1uRGVmICopIGxmaXJzdChjb2x1bW5zKTsKKwkJaWYgKHN0cmNtcChjb2wtPmNv bG5hbWUsIHBlcmlvZC0+c3RhcnRjb2xuYW1lKSA9PSAwKQorCQl7CisJCQljb2x0eXBpZCA9IHR5 cGVuYW1lVHlwZUlkKGN4dC0+cHN0YXRlLCBjb2wtPnR5cGVOYW1lKTsKKwkJCWJyZWFrOworCQl9 CisJfQorCWlmIChjb2x0eXBpZCA9PSBJbnZhbGlkT2lkKQorCQllcmVwb3J0KEVSUk9SLCAoZXJy bXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJ CQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFtZSwgY3h0LT5yZWxhdGlvbi0+cmVsbmFtZSkpKTsKKwor CS8qIE5vdyBtYWtlIHN1cmUgaXQgbWF0Y2hlcyByYW5nZXR5cGVuYW1lIG9yIHdlIGNhbiBmaW5k IGEgbWF0Y2hpbmcgcmFuZ2UgKi8KKwlpZiAocGVyaW9kLT5yYW5nZXR5cGVuYW1lICE9IE5VTEwp CisJeworCQkvKiBNYWtlIHN1cmUgaXQgZXhpc3RzICovCisJCXBlcmlvZC0+cm5ndHlwaWQgPSBU eXBlbmFtZUdldFR5cGlkRXh0ZW5kZWQocGVyaW9kLT5yYW5nZXR5cGVuYW1lLCBmYWxzZSk7CisJ CWlmIChwZXJpb2QtPnJuZ3R5cGlkID09IEludmFsaWRPaWQpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJS YW5nZSB0eXBlICVzIG5vdCBmb3VuZCIsIHBlcmlvZC0+cmFuZ2V0eXBlbmFtZSkpKTsKKworCQkv KiBNYWtlIHN1cmUgaXQgaXMgYSByYW5nZSB0eXBlICovCisJCWlmICghdHlwZV9pc19yYW5nZShw ZXJpb2QtPnJuZ3R5cGlkKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkgZXJybXNnKCJUeXBlICVzIGlzIG5vdCBhIHJh bmdlIHR5cGUiLCBwZXJpb2QtPnJhbmdldHlwZW5hbWUpKSk7CisKKwkJLyogTWFrZSBzdXJlIGl0 IG1hdGNoZXMgdGhlIGNvbHVtbiB0eXBlICovCisJCWlmIChnZXRfcmFuZ2Vfc3VidHlwZShwZXJp b2QtPnJuZ3R5cGlkKSAhPSBjb2x0eXBpZCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJj b2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkgZXJybXNnKCJSYW5nZSB0eXBl ICVzIGRvZXMgbm90IG1hdGNoIGNvbHVtbiB0eXBlICVzIiwKKwkJCQkJCSBwZXJpb2QtPnJhbmdl dHlwZW5hbWUsCisJCQkJCQkgZm9ybWF0X3R5cGVfYmUoY29sdHlwaWQpKSkpOworCX0KKwllbHNl CisJeworCQlwZXJpb2QtPnJuZ3R5cGlkID0gZ2V0X3N1YnR5cGVfcmFuZ2UoY29sdHlwaWQpOwor CQlpZiAocGVyaW9kLT5ybmd0eXBpZCA9PSBJbnZhbGlkT2lkKQorCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygi bm8gcmFuZ2UgdHlwZSBmb3IgJXMgZm91bmQgZm9yIHBlcmlvZCAlcyIsCisJCQkJCQkJZm9ybWF0 X3R5cGVfYmUoY29sdHlwaWQpLAorCQkJCQkJCXBlcmlvZC0+cGVyaW9kbmFtZSksCisJCQkJCSBl cnJoaW50KCJZb3UgY2FuIGRlZmluZSBhIGN1c3RvbSByYW5nZSB0eXBlIHdpdGggQ1JFQVRFIFRZ UEUiKSkpOworCisJfQorCisJY3h0LT5wZXJpb2RzID0gbGFwcGVuZChjeHQtPnBlcmlvZHMsIHBl cmlvZCk7Cit9CisKIC8qCiAgKiB0cmFuc2Zvcm1UYWJsZUNvbnN0cmFpbnQKICAqCQl0cmFuc2Zv cm0gYSBDb25zdHJhaW50IG5vZGUgd2l0aGluIENSRUFURSBUQUJMRSBvciBBTFRFUiBUQUJMRQpA QCAtMTU4OCw2ICsxNzI3LDExIEBAIGdlbmVyYXRlQ2xvbmVkSW5kZXhTdG10KFJhbmdlVmFyICpo ZWFwUmVsLCBSZWxhdGlvbiBzb3VyY2VfaWR4LAogCWluZGV4LT5pZl9ub3RfZXhpc3RzID0gZmFs c2U7CiAJaW5kZXgtPnJlc2V0X2RlZmF1bHRfdGJsc3BjID0gZmFsc2U7CiAKKwkvKiBDb3B5IHRo ZSBwZXJpb2QgKi8KKwlQZXJpb2QgKnAgPSBtYWtlTm9kZShQZXJpb2QpOworCXAtPm9pZCA9IGlk eHJlYy0+aW5kcGVyaW9kOworCWluZGV4LT5wZXJpb2QgPSBwOworCiAJLyoKIAkgKiBXZSBkb24n dCB0cnkgdG8gcHJlc2VydmUgdGhlIG5hbWUgb2YgdGhlIHNvdXJjZSBpbmRleDsgaW5zdGVhZCwg anVzdAogCSAqIGxldCBEZWZpbmVJbmRleCgpIGNob29zZSBhIHJlYXNvbmFibGUgbmFtZS4gIChJ ZiB3ZSB0cmllZCB0byBwcmVzZXJ2ZQpAQCAtMjg3MCw2ICszMDE0LDEwIEBAIHRyYW5zZm9ybUlu ZGV4U3RtdChPaWQgcmVsaWQsIEluZGV4U3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJp bmcpCiAJCX0KIAl9CiAKKwkvKiB0YWtlIGNhcmUgb2YgdGhlIHBlcmlvZCAqLworCWlmIChzdG10 LT5wZXJpb2QpCisJCXN0bXQtPnBlcmlvZC0+b2lkID0gZ2V0X3BlcmlvZF9vaWQocmVsaWQsIHN0 bXQtPnBlcmlvZC0+cGVyaW9kbmFtZSwgZmFsc2UpOworCiAJLyoKIAkgKiBDaGVjayB0aGF0IG9u bHkgdGhlIGJhc2UgcmVsIGlzIG1lbnRpb25lZC4gIChUaGlzIHNob3VsZCBiZSBkZWFkIGNvZGUK IAkgKiBub3cgdGhhdCBhZGRfbWlzc2luZ19mcm9tIGlzIGhpc3RvcnkuKQpAQCAtMzMzMSw2ICsz NDc5LDcgQEAgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3Rt dCAqc3RtdCwKIAljeHQuaW5oUmVsYXRpb25zID0gTklMOwogCWN4dC5pc2FsdGVyID0gdHJ1ZTsK IAljeHQuY29sdW1ucyA9IE5JTDsKKwljeHQucGVyaW9kcyA9IE5JTDsKIAljeHQuY2tjb25zdHJh aW50cyA9IE5JTDsKIAljeHQuZmtjb25zdHJhaW50cyA9IE5JTDsKIAljeHQuaXhjb25zdHJhaW50 cyA9IE5JTDsKQEAgLTMzOTQsNiArMzU0MywxMiBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChP aWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJCQkJIChpbnQpIG5vZGVUYWcoY21k LT5kZWYpKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9BZGRQZXJpb2Q6CisJCQkJeworCQkJ CQluZXdjbWRzID0gbGFwcGVuZChuZXdjbWRzLCBjbWQpOworCQkJCQlicmVhazsKKwkJCQl9CisK IAkJCWNhc2UgQVRfQWx0ZXJDb2x1bW5UeXBlOgogCQkJCXsKIAkJCQkJQ29sdW1uRGVmICAqZGVm ID0gY2FzdE5vZGUoQ29sdW1uRGVmLCBjbWQtPmRlZik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNj YWNoZS5jCmluZGV4IDZiYmE1ZjhlYzQuLmUzNDZmNjE4ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L2xzeXNjYWNoZS5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19uYW1l c3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3MuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX29wZXJhdG9yLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJpb2QuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3JhbmdlLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWMuaCIKQEAgLTEwMjAsNiArMTAyMSw2OCBAQCBn ZXRfYXR0b3B0aW9ucyhPaWQgcmVsaWQsIGludDE2IGF0dG51bSkKIAlyZXR1cm4gcmVzdWx0Owog fQogCisvKgkJCQktLS0tLS0tLS0tIFBHX1BFUklPRCBDQUNIRSAtLS0tLS0tLS0tCQkJCSAqLwor CisvKgorICogZ2V0X3BlcmlvZG5hbWUgLSBnaXZlbiBpdHMgT0lELCBsb29rIHVwIGEgcGVyaW9k CisgKgorICogSWYgbWlzc2luZ19vayBpcyBmYWxzZSwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHBl cmlvZCBpcyBub3QgZm91bmQuCisgKiBJZiB0cnVlLCBqdXN0IHJldHVybiBJbnZhbGlkT2lkLgor ICovCitjaGFyICoKK2dldF9wZXJpb2RuYW1lKE9pZCBwZXJpb2RpZCwgYm9vbCBtaXNzaW5nX29r KQoreworCUhlYXBUdXBsZQl0cDsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFBFUklPRE9JRCwK KwkJCQkJCSBPYmplY3RJZEdldERhdHVtKHBlcmlvZGlkKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFs aWQodHApKQorCXsKKwkJRm9ybV9wZ19wZXJpb2QgcGVyaW9kX3R1cCA9IChGb3JtX3BnX3Blcmlv ZCkgR0VUU1RSVUNUKHRwKTsKKwkJY2hhcgkgICAqcmVzdWx0OworCisJCXJlc3VsdCA9IHBzdHJk dXAoTmFtZVN0cihwZXJpb2RfdHVwLT5wZXJuYW1lKSk7CisJCVJlbGVhc2VTeXNDYWNoZSh0cCk7 CisJCXJldHVybiByZXN1bHQ7CisJfQorCisJaWYgKCFtaXNzaW5nX29rKQorCQllbG9nKEVSUk9S LCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcGVyaW9kICVkIiwKKwkJCSBwZXJpb2RpZCk7CisJ cmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBnZXRfcGVyaW9kX29pZCAtIGdldHMgaXRzIHJlbGF0 aW9uIGFuZCBuYW1lLCBsb29rIHVwIGEgcGVyaW9kCisgKgorICogSWYgbWlzc2luZ19vayBpcyBm YWxzZSwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIGNhc3QgaXMgbm90IGZvdW5kLiAgSWYKKyAqIHRy dWUsIGp1c3QgcmV0dXJuIEludmFsaWRPaWQuCisgKi8KK09pZAorZ2V0X3BlcmlvZF9vaWQoT2lk IHJlbGlkLCBjb25zdCBjaGFyICpwZXJpb2RuYW1lLCBib29sIG1pc3Npbmdfb2spCit7CisJSGVh cFR1cGxlCXRwOworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTIoUEVSSU9ETkFNRSwKKwkJCQkJCSBP YmplY3RJZEdldERhdHVtKHJlbGlkKSwKKwkJCQkJCSBQb2ludGVyR2V0RGF0dW0ocGVyaW9kbmFt ZSkpOworCisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHApKQorCXsKKwkJRm9ybV9wZ19wZXJpb2Qg cGVyaW9kX3R1cCA9IChGb3JtX3BnX3BlcmlvZCkgR0VUU1RSVUNUKHRwKTsKKwkJT2lkIHJlc3Vs dDsKKworCQlyZXN1bHQgPSBwZXJpb2RfdHVwLT5vaWQ7CisJCVJlbGVhc2VTeXNDYWNoZSh0cCk7 CisJCXJldHVybiByZXN1bHQ7CisJfQorCisJaWYgKCFtaXNzaW5nX29rKQorCQllbG9nKEVSUk9S LCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcGVyaW9kICVzIiwKKwkJCSBwZXJpb2RuYW1lKTsK KwlyZXR1cm4gSW52YWxpZE9pZDsKK30KKwogLyoJCQkJLS0tLS0tLS0tLSBQR19DQVNUIENBQ0hF IC0tLS0tLS0tLS0JCQkJCSAqLwogCiAvKgpAQCAtMzQ0OCw2ICszNTExLDMwIEBAIGdldF9tdWx0 aXJhbmdlX3JhbmdlKE9pZCBtdWx0aXJhbmdlT2lkKQogCQlyZXR1cm4gSW52YWxpZE9pZDsKIH0K IAorT2lkCitnZXRfc3VidHlwZV9yYW5nZShPaWQgc3VidHlwZU9pZCkKK3sKKwlDYXRDTGlzdCAq Y2F0bGlzdDsKKwlPaWQJcmVzdWx0ID0gSW52YWxpZE9pZDsKKworCWNhdGxpc3QgPSBTZWFyY2hT eXNDYWNoZUxpc3QxKFJBTkdFU1VCVFlQRSwgT2JqZWN0SWRHZXREYXR1bShzdWJ0eXBlT2lkKSk7 CisKKwlpZiAoY2F0bGlzdC0+bl9tZW1iZXJzID09IDEpCisJeworCQlIZWFwVHVwbGUJdHVwbGUg PSAmY2F0bGlzdC0+bWVtYmVyc1swXS0+dHVwbGU7CisJCUZvcm1fcGdfcmFuZ2Ugcm5ndHVwID0g KEZvcm1fcGdfcmFuZ2UpIEdFVFNUUlVDVCh0dXBsZSk7CisJCXJlc3VsdCA9IHJuZ3R1cC0+cm5n dHlwaWQ7CisJCVJlbGVhc2VDYXRDYWNoZUxpc3QoY2F0bGlzdCk7CisJfQorCWVsc2UgaWYgKGNh dGxpc3QtPm5fbWVtYmVycyA+IDEpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9JTkRFVEVSTUlOQVRFX0RBVEFUWVBFKSwKKwkJCQkgZXJybXNnKCJhbWJpZ3VvdXMgcmFu Z2UgZm9yIHR5cGUgJXMiLAorCQkJCQkJZm9ybWF0X3R5cGVfYmUoc3VidHlwZU9pZCkpKSk7CisK KwlyZXR1cm4gcmVzdWx0OworfQorCiAvKgkJCQktLS0tLS0tLS0tIFBHX0lOREVYIENBQ0hFIC0t LS0tLS0tLS0JCQkJICovCiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9zeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYwppbmRleCBk NmNiNzhkZWE4Li4yZWI2ZTk0NGQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9zeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMKQEAg LTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19vcGZhbWlseS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFydGl0aW9u ZWRfdGFibGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb24uaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oIgpAQCAtNTg0LDYgKzU4NSwyNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGNhY2hlZGVzYyBjYWNoZWluZm9bXSA9IHsKIAkJfSwKIAkJ MzIKIAl9LAorCXtQZXJpb2RSZWxhdGlvbklkLAkJLyogUEVSSU9ETkFNRSAqLworCQlQZXJpb2RS ZWxpZE5hbWVJbmRleElkLAorCQkyLAorCQl7CisJCQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwK KwkJCUFudW1fcGdfcGVyaW9kX3Blcm5hbWUsCisJCQkwLAorCQkJMAorCQl9LAorCQkzMgorCX0s CisJe1BlcmlvZFJlbGF0aW9uSWQsCQkvKiBQRVJJT0RPSUQgKi8KKwkJUGVyaW9kT2JqZWN0SW5k ZXhJZCwKKwkJMSwKKwkJeworCQkJQW51bV9wZ19wZXJpb2Rfb2lkLAorCQkJMCwKKwkJCTAKKwkJ fSwKKwkJMzIKKwl9LAogCXtQcm9jZWR1cmVSZWxhdGlvbklkLAkJLyogUFJPQ05BTUVBUkdTTlNQ ICovCiAJCVByb2NlZHVyZU5hbWVBcmdzTnNwSW5kZXhJZCwKIAkJMywKQEAgLTY2MSw3ICs2ODMs MTcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjYWNoZWRlc2MgY2FjaGVpbmZvW10gPSB7CiAJCX0s CiAJCTQKIAl9LAotCisJe1JhbmdlUmVsYXRpb25JZCwgICAgICAgICAgIC8qIFJBTkdFU1VCVFlQ RSAqLworCQlSYW5nZVN1YlR5cGlkVHlwaWRJbmRleElkLAorCQkyLAorCQl7CisJCQlBbnVtX3Bn X3JhbmdlX3JuZ3N1YnR5cGUsCisJCQlBbnVtX3BnX3JhbmdlX3JuZ3R5cGlkLAorCQkJMCwKKwkJ CTAKKwkJfSwKKwkJNAorCX0sCiAJe1JhbmdlUmVsYXRpb25JZCwJCQkvKiBSQU5HRVRZUEUgKi8K IAkJUmFuZ2VUeXBpZEluZGV4SWQsCiAJCTEsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv cGdfYmFja3VwX2FyY2hpdmVyLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVy LmMKaW5kZXggZWUwNmRjNjgyMi4uNjFkNWU3NzkwMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBf YXJjaGl2ZXIuYwpAQCAtMzYxMCw2ICszNjEwLDcgQEAgX3ByaW50VG9jRW50cnkoQXJjaGl2ZUhh bmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSwgYm9vbCBpc0RhdGEpCiAJCQkJIHN0cmNtcCh0ZS0+ZGVz YywgIkRBVEFCQVNFIFBST1BFUlRJRVMiKSA9PSAwIHx8CiAJCQkJIHN0cmNtcCh0ZS0+ZGVzYywg IkRFRkFVTFQiKSA9PSAwIHx8CiAJCQkJIHN0cmNtcCh0ZS0+ZGVzYywgIkZLIENPTlNUUkFJTlQi KSA9PSAwIHx8CisJCQkJIHN0cmNtcCh0ZS0+ZGVzYywgIlBFUklPRCIpID09IDAgfHwKIAkJCQkg c3RyY21wKHRlLT5kZXNjLCAiSU5ERVgiKSA9PSAwIHx8CiAJCQkJIHN0cmNtcCh0ZS0+ZGVzYywg IlJVTEUiKSA9PSAwIHx8CiAJCQkJIHN0cmNtcCh0ZS0+ZGVzYywgIlRSSUdHRVIiKSA9PSAwIHx8 CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuYwppbmRleCAzMjExNTIxNTFkLi4wMWEzYjgyYzI3IDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAg LTYyNDgsNiArNjI0OCw3IEBAIGdldFRhYmxlcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRhYmxl cykKIAlpbnQJCQlpX2luaXRycmVsYWNsOwogCWludAkJCWlfcm9sbmFtZTsKIAlpbnQJCQlpX3Jl bGNoZWNrczsKKwlpbnQJCQlpX25wZXJpb2Q7CiAJaW50CQkJaV9yZWxoYXN0cmlnZ2VyczsKIAlp bnQJCQlpX3JlbGhhc2luZGV4OwogCWludAkJCWlfcmVsaGFzcnVsZXM7CkBAIC02MzA4LDYgKzYz MDksNyBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UYWJsZXMpCiAJCWNoYXIJ ICAgKmlzcGFydGl0aW9uID0gImZhbHNlIjsKIAkJY2hhcgkgICAqcGFydGJvdW5kID0gIk5VTEwi OwogCQljaGFyCSAgICpyZWxoYXNvaWRzID0gImMucmVsaGFzb2lkcyI7CisJCWNoYXIJICAgKm5w ZXJpb2QgPSAiTlVMTCI7CiAKIAkJUFFFeHBCdWZmZXIgYWNsX3N1YnF1ZXJ5ID0gY3JlYXRlUFFF eHBCdWZmZXIoKTsKIAkJUFFFeHBCdWZmZXIgcmFjbF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVm ZmVyKCk7CkBAIC02MzM1LDYgKzYzMzcsMTAgQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGlu dCAqbnVtVGFibGVzKQogCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxMjAwMDApCiAJCQly ZWxoYXNvaWRzID0gIidmJzo6Ym9vbCI7CiAKKwkJLyogSW4gUEcxNSB1cHdhcmRzIHdlIGhhdmUg UEVSSU9Ecy4gKi8KKwkJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQorCQkJbnBl cmlvZCA9ICIoU0VMRUNUIGNvdW50KCopIEZST00gcGdfcGVyaW9kIFdIRVJFIHBlcnJlbGlkID0g Yy5vaWQpIjsKKwogCQkvKgogCQkgKiBMZWZ0IGpvaW4gdG8gcGljayB1cCBkZXBlbmRlbmN5IGlu Zm8gbGlua2luZyBzZXF1ZW5jZXMgdG8gdGhlaXIKIAkJICogb3duaW5nIGNvbHVtbiwgaWYgYW55 IChub3RlIHRoaXMgZGVwZW5kZW5jeSBpcyBBVVRPIGFzIG9mIDguMikKQEAgLTYzNjgsNiArNjM3 NCw3IEBAIGdldFRhYmxlcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRhYmxlcykKIAkJCQkJCSAg InRjLnJlbG1pbm14aWQgQVMgdG1pbm14aWQsICIKIAkJCQkJCSAgImMucmVscGVyc2lzdGVuY2Us IGMucmVsaXNwb3B1bGF0ZWQsICIKIAkJCQkJCSAgImMucmVscmVwbGlkZW50LCBjLnJlbHBhZ2Vz LCBhbS5hbW5hbWUsICIKKwkJCQkJCSAgIiVzIEFTIG5wZXJpb2QsICIKIAkJCQkJCSAgIkNBU0Ug V0hFTiBjLnJlbGtpbmQgPSAnZicgVEhFTiAiCiAJCQkJCQkgICIoU0VMRUNUIGZ0c2VydmVyIEZS T00gcGdfY2F0YWxvZy5wZ19mb3JlaWduX3RhYmxlIFdIRVJFIGZ0cmVsaWQgPSBjLm9pZCkgIgog CQkJCQkJICAiRUxTRSAwIEVORCBBUyBmb3JlaWduc2VydmVyLCAiCkBAIC02NDE0LDYgKzY0MjEs NyBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UYWJsZXMpCiAJCQkJCQkgIGlu aXRyYWNsX3N1YnF1ZXJ5LT5kYXRhLAogCQkJCQkJICB1c2VybmFtZV9zdWJxdWVyeSwKIAkJCQkJ CSAgcmVsaGFzb2lkcywKKwkJCQkJCSAgbnBlcmlvZCwKIAkJCQkJCSAgUkVMS0lORF9TRVFVRU5D RSwKIAkJCQkJCSAgYXR0YWNsX3N1YnF1ZXJ5LT5kYXRhLAogCQkJCQkJICBhdHRyYWNsX3N1YnF1 ZXJ5LT5kYXRhLApAQCAtNjg2Nyw2ICs2ODc1LDcgQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQs IGludCAqbnVtVGFibGVzKQogCWlfcmVsa2luZCA9IFBRZm51bWJlcihyZXMsICJyZWxraW5kIik7 CiAJaV9yb2xuYW1lID0gUFFmbnVtYmVyKHJlcywgInJvbG5hbWUiKTsKIAlpX3JlbGNoZWNrcyA9 IFBRZm51bWJlcihyZXMsICJyZWxjaGVja3MiKTsKKwlpX25wZXJpb2QgPSBQUWZudW1iZXIocmVz LCAibnBlcmlvZCIpOwogCWlfcmVsaGFzdHJpZ2dlcnMgPSBQUWZudW1iZXIocmVzLCAicmVsaGFz dHJpZ2dlcnMiKTsKIAlpX3JlbGhhc2luZGV4ID0gUFFmbnVtYmVyKHJlcywgInJlbGhhc2luZGV4 Iik7CiAJaV9yZWxoYXNydWxlcyA9IFBRZm51bWJlcihyZXMsICJyZWxoYXNydWxlcyIpOwpAQCAt Njk0Nyw2ICs2OTU2LDcgQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVz KQogCQllbHNlCiAJCQl0YmxpbmZvW2ldLnJlbG9mdHlwZSA9IHBnX3N0cmR1cChQUWdldHZhbHVl KHJlcywgaSwgaV9yZWxvZnR5cGUpKTsKIAkJdGJsaW5mb1tpXS5uY2hlY2sgPSBhdG9pKFBRZ2V0 dmFsdWUocmVzLCBpLCBpX3JlbGNoZWNrcykpOworCQl0YmxpbmZvW2ldLm5wZXJpb2QgPSBhdG9p KFBRZ2V0dmFsdWUocmVzLCBpLCBpX25wZXJpb2QpKTsKIAkJaWYgKFBRZ2V0aXNudWxsKHJlcywg aSwgaV9vd25pbmdfdGFiKSkKIAkJewogCQkJdGJsaW5mb1tpXS5vd25pbmdfdGFiID0gSW52YWxp ZE9pZDsKQEAgLTg2NjMsNiArODY3Myw4IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwg VGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQlQR3Jlc3VsdCAgICpyZXM7CiAJ CWludAkJCW50dXBzOwogCQlib29sCQloYXNkZWZhdWx0czsKKwkJaW50CQkJbmR1bXBhYmxlY2hl Y2tzOwkvKiBudW1iZXIgb2YgQ0hFQ0sgY29uc3RyYWludHMgdGhhdCBkbworCQkJCQkJCQkJCSAg IG5vdCBiZWxvbmcgdG8gYSBwZXJpb2QgKi8KIAogCQkvKiBEb24ndCBib3RoZXIgdG8gY29sbGVj dCBpbmZvIGZvciBzZXF1ZW5jZXMgKi8KIAkJaWYgKHRiaW5mby0+cmVsa2luZCA9PSBSRUxLSU5E X1NFUVVFTkNFKQpAQCAtODk0OCwxMCArODk2MCwxMiBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUg KmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxlcykKIAkJfQogCiAJCS8qCi0J CSAqIEdldCBpbmZvIGFib3V0IHRhYmxlIENIRUNLIGNvbnN0cmFpbnRzLiAgVGhpcyBpcyBza2lw cGVkIGZvciBhCi0JCSAqIGRhdGEtb25seSBkdW1wLCBhcyBpdCBpcyBvbmx5IG5lZWRlZCBmb3Ig dGFibGUgc2NoZW1hcy4KKwkJICogR2V0IGluZm8gYWJvdXQgdGFibGUgQ0hFQ0sgY29uc3RyYWlu dHMgdGhhdCBkb24ndCBiZWxvbmcgdG8gYSBQRVJJT0QuCisJCSAqIFRoaXMgaXMgc2tpcHBlZCBm b3IgYSBkYXRhLW9ubHkgZHVtcCwgYXMgaXQgaXMgb25seSBuZWVkZWQgZm9yIHRhYmxlCisJCSAq IHNjaGVtYXMuCiAJCSAqLwotCQlpZiAodGJpbmZvLT5uY2hlY2sgPiAwICYmICFkb3B0LT5kYXRh T25seSkKKwkJbmR1bXBhYmxlY2hlY2tzID0gdGJpbmZvLT5uY2hlY2sgLSB0YmluZm8tPm5wZXJp b2Q7CisJCWlmIChuZHVtcGFibGVjaGVja3MgPiAwICYmICFkb3B0LT5kYXRhT25seSkKIAkJewog CQkJQ29uc3RyYWludEluZm8gKmNvbnN0cnM7CiAJCQlpbnQJCQludW1Db25zdHJzOwpAQCAtODk2 MSw3ICs4OTc1LDI1IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0 YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkJCQkJdGJpbmZvLT5kb2JqLm5hbWUpOwogCiAJCQly ZXNldFBRRXhwQnVmZmVyKHEpOwotCQkJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gOTAyMDAp CisJCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDApCisJCQl7CisJCQkJLyoKKwkJ CQkgKiBQRVJJT0RzIHdlcmUgYWRkZWQgaW4gdjE1IGFuZCB3ZSBkb24ndCBkdW1wIENIRUNLCisJ CQkJICogY29uc3RyYWludHMgZm9yIHRoZW0uCisJCQkJICovCisJCQkJYXBwZW5kUFFFeHBCdWZm ZXIocSwKKwkJCQkJCQkJICAiU0VMRUNUIHRhYmxlb2lkLCBvaWQsIGNvbm5hbWUsICIKKwkJCQkJ CQkJICAicGdfY2F0YWxvZy5wZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEFTIGNvbnNyYywgIgor CQkJCQkJCQkgICJjb25pc2xvY2FsLCBjb252YWxpZGF0ZWQgIgorCQkJCQkJCQkgICJGUk9NIHBn X2NhdGFsb2cucGdfY29uc3RyYWludCAiCisJCQkJCQkJCSAgIldIRVJFIGNvbnJlbGlkID0gJyV1 Jzo6cGdfY2F0YWxvZy5vaWQgIgorCQkJCQkJCQkgICIgICBBTkQgY29udHlwZSA9ICdjJyAiCisJ CQkJCQkJCSAgIiAgIEFORCBOT1QgRVhJU1RTIChTRUxFQ1QgRlJPTSBwZ19wZXJpb2QgIgorCQkJ CQkJCQkgICIgICAgICAgICAgICAgICAgICAgV0hFUkUgKHBlcnJlbGlkLCBwZXJjb25zdHJhaW50 KSA9IChjb25yZWxpZCwgcGdfY29uc3RyYWludC5vaWQpKSAiCisJCQkJCQkJCSAgIk9SREVSIEJZ IGNvbm5hbWUiLAorCQkJCQkJCQkgIHRiaW5mby0+ZG9iai5jYXRJZC5vaWQpOworCQkJfQorCQkJ ZWxzZSBpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSA5MDIwMCkKIAkJCXsKIAkJCQkvKgogCQkJ CSAqIGNvbnZhbGlkYXRlZCBpcyBuZXcgaW4gOS4yIChhY3R1YWxseSwgaXQgaXMgdGhlcmUgaW4g OS4xLApAQCAtOTAwMywxMiArOTAzNSwxMiBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQs IFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxlcykKIAkJCXJlcyA9IEV4ZWN1dGVTcWxR dWVyeShmb3V0LCBxLT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOwogCiAJCQludW1Db25zdHJzID0g UFFudHVwbGVzKHJlcyk7Ci0JCQlpZiAobnVtQ29uc3RycyAhPSB0YmluZm8tPm5jaGVjaykKKwkJ CWlmIChudW1Db25zdHJzICE9IG5kdW1wYWJsZWNoZWNrcykKIAkJCXsKIAkJCQlwZ19sb2dfZXJy b3IobmdldHRleHQoImV4cGVjdGVkICVkIGNoZWNrIGNvbnN0cmFpbnQgb24gdGFibGUgXCIlc1wi IGJ1dCBmb3VuZCAlZCIsCiAJCQkJCQkJCQkgICJleHBlY3RlZCAlZCBjaGVjayBjb25zdHJhaW50 cyBvbiB0YWJsZSBcIiVzXCIgYnV0IGZvdW5kICVkIiwKLQkJCQkJCQkJCSAgdGJpbmZvLT5uY2hl Y2spLAotCQkJCQkJCSB0YmluZm8tPm5jaGVjaywgdGJpbmZvLT5kb2JqLm5hbWUsIG51bUNvbnN0 cnMpOworCQkJCQkJCQkJICBuZHVtcGFibGVjaGVja3MpLAorCQkJCQkJCSBuZHVtcGFibGVjaGVj a3MsIHRiaW5mby0+ZG9iai5uYW1lLCBudW1Db25zdHJzKTsKIAkJCQlwZ19sb2dfZXJyb3IoIihU aGUgc3lzdGVtIGNhdGFsb2dzIG1pZ2h0IGJlIGNvcnJ1cHRlZC4pIik7CiAJCQkJZXhpdF9uaWNl bHkoMSk7CiAJCQl9CkBAIC05MDY2LDYgKzkwOTgsNzYgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZl ICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJCQl9CiAJCQlQUWNs ZWFyKHJlcyk7CiAJCX0KKworCQkvKgorCQkgKiBHZXQgaW5mbyBhYm91dCBQRVJJT0QgZGVmaW5p dGlvbnMKKwkJICovCisJCWlmICh0YmluZm8tPm5wZXJpb2QgPiAwKQorCQl7CisJCQlQZXJpb2RJ bmZvICpwZXJpb2RzOworCQkJaW50CQkJbnVtUGVyaW9kczsKKwkJCWludAkJCWo7CisKKwkJCS8q IFdlIHNob3VsZG4ndCBoYXZlIGFueSBwZXJpb2RzIGJlZm9yZSB2MTUgKi8KKwkJCUFzc2VydChm b3V0LT5yZW1vdGVWZXJzaW9uID49IDE1MDAwMCk7CisKKwkJCXBnX2xvZ19pbmZvKCJmaW5kaW5n IHBlcmlvZHMgZm9yIHRhYmxlIFwiJXMuJXNcIlxuIiwKKwkJCQkJCXRiaW5mby0+ZG9iai5uYW1l c3BhY2UtPmRvYmoubmFtZSwKKwkJCQkJCXRiaW5mby0+ZG9iai5uYW1lKTsKKworCQkJcmVzZXRQ UUV4cEJ1ZmZlcihxKTsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsCisJCQkJIlNFTEVDVCBwLnRh Ymxlb2lkLCBwLm9pZCwgcC5wZXJuYW1lLCAiCisJCQkJIiAgICAgICBzYS5hdHRuYW1lIEFTIHBl cnN0YXJ0LCBlYS5hdHRuYW1lIEFTIHBlcmVuZCwgIgorCQkJCSIgICAgICAgbm8ubnNwbmFtZSBB UyBvcGNuYW1lc3BhY2UsIG8ub3BjbmFtZSwgIgorCQkJCSIgICAgICAgYy5jb25uYW1lIEFTIGNv bm5hbWUgIgorCQkJCSJGUk9NIHBnX2NhdGFsb2cucGdfcGVyaW9kIEFTIHAgIgorCQkJCSJKT0lO IHBnX2NhdGFsb2cucGdfYXR0cmlidXRlIEFTIHNhIE9OIChzYS5hdHRyZWxpZCwgc2EuYXR0bnVt KSA9IChwLnBlcnJlbGlkLCBwLnBlcnN0YXJ0KSAiCisJCQkJIkpPSU4gcGdfY2F0YWxvZy5wZ19h dHRyaWJ1dGUgQVMgZWEgT04gKGVhLmF0dHJlbGlkLCBlYS5hdHRudW0pID0gKHAucGVycmVsaWQs IHAucGVyZW5kKSAiCisJCQkJIkpPSU4gcGdfY2F0YWxvZy5wZ19vcGNsYXNzIEFTIG8gT04gby5v aWQgPSBwLnBlcm9wY2xhc3MgIgorCQkJCSJKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIEFT IG5vIE9OIG5vLm9pZCA9IG8ub3BjbmFtZXNwYWNlICIKKwkJCQkiSk9JTiBwZ19jYXRhbG9nLnBn X2NvbnN0cmFpbnQgQVMgYyBPTiBjLm9pZCA9IHAucGVyY29uc3RyYWludCAiCisJCQkJIldIRVJF IHAucGVycmVsaWQgPSAnJXUnOjpwZ19jYXRhbG9nLm9pZCAiCisJCQkJIk9SREVSIEJZIHAucGVy bmFtZSIsCisJCQkJdGJpbmZvLT5kb2JqLmNhdElkLm9pZCk7CisKKwkJCXJlcyA9IEV4ZWN1dGVT cWxRdWVyeShmb3V0LCBxLT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOworCisJCQkvKgorCQkJICog SWYgd2UgZGlkbid0IGdldCB0aGUgbnVtYmVyIG9mIHJvd3Mgd2UgdGhvdWdodCB3ZSB3ZXJlIGdv aW5nIHRvLAorCQkJICogdGhlbiB0aG9zZSBKT0lOcyBkaWRuJ3Qgd29yay4KKwkJCSAqLworCQkJ bnVtUGVyaW9kcyA9IFBRbnR1cGxlcyhyZXMpOworCQkJaWYgKG51bVBlcmlvZHMgIT0gdGJpbmZv LT5ucGVyaW9kKQorCQkJeworCQkJCXBnX2xvZ19pbmZvKG5nZXR0ZXh0KCJleHBlY3RlZCAlZCBw ZXJpb2Qgb24gdGFibGUgXCIlc1wiIGJ1dCBmb3VuZCAlZFxuIiwKKwkJCQkJCQkJCSAiZXhwZWN0 ZWQgJWQgcGVyaW9kcyBvbiB0YWJsZSBcIiVzXCIgYnV0IGZvdW5kICVkXG4iLAorCQkJCQkJCQkJ IHRiaW5mby0+bnBlcmlvZCksCisJCQkJCQkJdGJpbmZvLT5ucGVyaW9kLCB0YmluZm8tPmRvYmou bmFtZSwgbnVtUGVyaW9kcyk7CisJCQkJcGdfbG9nX2luZm8oIihUaGUgc3lzdGVtIGNhdGFsb2dz IG1pZ2h0IGJlIGNvcnJ1cHRlZC4pXG4iKTsKKwkJCQlleGl0X25pY2VseSgxKTsKKwkJCX0KKwor CQkJcGVyaW9kcyA9IChQZXJpb2RJbmZvICopIHBnX21hbGxvYyhudW1QZXJpb2RzICogc2l6ZW9m KFBlcmlvZEluZm8pKTsKKwkJCXRiaW5mby0+cGVyaW9kcyA9IHBlcmlvZHM7CisKKwkJCWZvciAo aiA9IDA7IGogPCBudW1QZXJpb2RzOyBqKyspCisJCQl7CisJCQkJcGVyaW9kc1tqXS5kb2JqLm9i alR5cGUgPSBET19QRVJJT0Q7CisJCQkJcGVyaW9kc1tqXS5kb2JqLmNhdElkLnRhYmxlb2lkID0g YXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBqLCAwKSk7CisJCQkJcGVyaW9kc1tqXS5kb2JqLmNhdElk Lm9pZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaiwgMSkpOworCQkJCUFzc2lnbkR1bXBJZCgm cGVyaW9kc1tqXS5kb2JqKTsKKwkJCQlwZXJpb2RzW2pdLmRvYmoubmFtZSA9IHBnX3N0cmR1cChQ UWdldHZhbHVlKHJlcywgaiwgMikpOworCQkJCXBlcmlvZHNbal0uZG9iai5uYW1lc3BhY2UgPSB0 YmluZm8tPmRvYmoubmFtZXNwYWNlOworCQkJCXBlcmlvZHNbal0ucGVydGFibGUgPSB0YmluZm87 CisJCQkJcGVyaW9kc1tqXS5wZXJzdGFydCA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaiwg MykpOworCQkJCXBlcmlvZHNbal0ucGVyZW5kID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBq LCA0KSk7CisJCQkJcGVyaW9kc1tqXS5vcGNuYW1lc3BhY2UgPSBwZ19zdHJkdXAoUFFnZXR2YWx1 ZShyZXMsIGosIDUpKTsKKwkJCQlwZXJpb2RzW2pdLm9wY25hbWUgPSBwZ19zdHJkdXAoUFFnZXR2 YWx1ZShyZXMsIGosIDYpKTsKKwkJCQlwZXJpb2RzW2pdLmNvbm5hbWUgPSBwZ19zdHJkdXAoUFFn ZXR2YWx1ZShyZXMsIGosIDcpKTsKKwkJCX0KKwkJCVBRY2xlYXIocmVzKTsKKwkJfQogCX0KIAog CWRlc3Ryb3lQUUV4cEJ1ZmZlcihxKTsKQEAgLTEwMzI3LDYgKzEwNDI5LDggQEAgZHVtcER1bXBh YmxlT2JqZWN0KEFyY2hpdmUgKmZvdXQsIGNvbnN0IER1bXBhYmxlT2JqZWN0ICpkb2JqKQogCQlj YXNlIERPX0ZLX0NPTlNUUkFJTlQ6CiAJCQlkdW1wQ29uc3RyYWludChmb3V0LCAoY29uc3QgQ29u c3RyYWludEluZm8gKikgZG9iaik7CiAJCQlicmVhazsKKwkJY2FzZSBET19QRVJJT0Q6CisJCQli cmVhazsKIAkJY2FzZSBET19QUk9DTEFORzoKIAkJCWR1bXBQcm9jTGFuZyhmb3V0LCAoY29uc3Qg UHJvY0xhbmdJbmZvICopIGRvYmopOwogCQkJYnJlYWs7CkBAIC0xNjA2NSw2ICsxNjE2OSwzNCBA QCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29uc3QgVGFibGVJbmZvICp0YmluZm8p CiAJCQkJfQogCQkJfQogCisJCQkvKgorCQkJICogQWRkIG5vbi1pbmhlcml0ZWQgUEVSSU9EIGRl ZmluaXRpb25zLCBpZiBhbnkuCisJCQkgKi8KKwkJCWZvciAoaiA9IDA7IGogPCB0YmluZm8tPm5w ZXJpb2Q7IGorKykKKwkJCXsKKwkJCQlQZXJpb2RJbmZvICpwZXJpb2QgPSAmKHRiaW5mby0+cGVy aW9kc1tqXSk7CisKKwkJCQljaGFyCSAgICpuYW1lID0gcGdfc3RyZHVwKGZtdElkKHBlcmlvZC0+ ZG9iai5uYW1lKSk7CisJCQkJY2hhcgkgICAqc3RhcnQgPSBwZ19zdHJkdXAoZm10SWQocGVyaW9k LT5wZXJzdGFydCkpOworCQkJCWNoYXIJICAgKmVuZCA9IHBnX3N0cmR1cChmbXRJZChwZXJpb2Qt PnBlcmVuZCkpOworCQkJCWNoYXIJICAgKm9wY25hbWVzcGFjZSA9IHBnX3N0cmR1cChmbXRJZChw ZXJpb2QtPm9wY25hbWVzcGFjZSkpOworCQkJCWNoYXIJICAgKm9wY25hbWUgPSBwZ19zdHJkdXAo Zm10SWQocGVyaW9kLT5vcGNuYW1lKSk7CisJCQkJY2hhcgkgICAqY29ubmFtZSA9IHBnX3N0cmR1 cChmbXRJZChwZXJpb2QtPmNvbm5hbWUpKTsKKworCQkJCWlmIChhY3R1YWxfYXR0cyA9PSAwKQor CQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAiIChcbiAgICAiKTsKKwkJCQllbHNlCisJCQkJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICIsXG4gICAgIik7CisKKwkJCQlhcHBlbmRQUUV4cEJ1 ZmZlcihxLCAiUEVSSU9EIEZPUiAlcyAoJXMsICVzKSAiCisJCQkJCQkiV0lUSCAob3BlcmF0b3Jf Y2xhc3MgPSAlcy4lcywgY29uc3RyYWludF9uYW1lID0gJXMpIiwKKwkJCQkJCQkJICBuYW1lLCBz dGFydCwgZW5kLAorCQkJCQkJCQkgIG9wY25hbWVzcGFjZSwgb3BjbmFtZSwKKwkJCQkJCQkJICBj b25uYW1lKTsKKworCQkJCWFjdHVhbF9hdHRzKys7CisJCQl9CisKIAkJCS8qCiAJCQkgKiBBZGQg bm9uLWluaGVyaXRlZCBDSEVDSyBjb25zdHJhaW50cywgaWYgYW55LgogCQkJICoKQEAgLTE2MDcz LDcgKzE2MjA1LDcgQEAgZHVtcFRhYmxlU2NoZW1hKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFRhYmxl SW5mbyAqdGJpbmZvKQogCQkJICogUEFSVElUSU9OIHRoYXQgd2UnbGwgZW1pdCBsYXRlciBleHBl Y3RzIHRoZSBjb25zdHJhaW50IHRvIGJlCiAJCQkgKiB0aGVyZS4gIChObyBuZWVkIHRvIGZpeCBj b25pc2xvY2FsOiBBVFRBQ0ggUEFSVElUSU9OIGRvZXMgdGhhdCkKIAkJCSAqLwotCQkJZm9yIChq ID0gMDsgaiA8IHRiaW5mby0+bmNoZWNrOyBqKyspCisJCQlmb3IgKGogPSAwOyBqIDwgdGJpbmZv LT5uY2hlY2sgLSB0YmluZm8tPm5wZXJpb2Q7IGorKykKIAkJCXsKIAkJCQlDb25zdHJhaW50SW5m byAqY29uc3RyID0gJih0YmluZm8tPmNoZWNrZXhwcnNbal0pOwogCkBAIC0xNjI3Myw3ICsxNjQw NSw3IEBAIGR1bXBUYWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBjb25zdCBUYWJsZUluZm8gKnRi aW5mbykKIAkJCSAqIEZvciBwYXJ0aXRpb25zLCB0aGV5IHdlcmUgYWxyZWFkeSBkdW1wZWQsIGFu ZCBjb25pc2xvY2FsCiAJCQkgKiBkb2Vzbid0IG5lZWQgZml4aW5nLgogCQkJICovCi0JCQlmb3Ig KGsgPSAwOyBrIDwgdGJpbmZvLT5uY2hlY2s7IGsrKykKKwkJCWZvciAoayA9IDA7IGsgPCB0Ymlu Zm8tPm5jaGVjayAtIHRiaW5mby0+bnBlcmlvZDsgaysrKQogCQkJewogCQkJCUNvbnN0cmFpbnRJ bmZvICpjb25zdHIgPSAmKHRiaW5mby0+Y2hlY2tleHByc1trXSk7CiAKQEAgLTE2NTU1LDcgKzE2 Njg3LDcgQEAgZHVtcFRhYmxlU2NoZW1hKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFRhYmxlSW5mbyAq dGJpbmZvKQogCQlkdW1wVGFibGVTZWNMYWJlbChmb3V0LCB0YmluZm8sIHJlbHR5cGVuYW1lKTsK IAogCS8qIER1bXAgY29tbWVudHMgb24gaW5saW5lZCB0YWJsZSBjb25zdHJhaW50cyAqLwotCWZv ciAoaiA9IDA7IGogPCB0YmluZm8tPm5jaGVjazsgaisrKQorCWZvciAoaiA9IDA7IGogPCB0Ymlu Zm8tPm5jaGVjayAtIHRiaW5mby0+bnBlcmlvZDsgaisrKQogCXsKIAkJQ29uc3RyYWludEluZm8g KmNvbnN0ciA9ICYodGJpbmZvLT5jaGVja2V4cHJzW2pdKTsKIApAQCAtMTg2MTcsNiArMTg3NDks NyBAQCBhZGRCb3VuZGFyeURlcGVuZGVuY2llcyhEdW1wYWJsZU9iamVjdCAqKmRvYmpzLCBpbnQg bnVtT2JqcywKIAkJCWNhc2UgRE9fVFJJR0dFUjoKIAkJCWNhc2UgRE9fRVZFTlRfVFJJR0dFUjoK IAkJCWNhc2UgRE9fREVGQVVMVF9BQ0w6CisJCQljYXNlIERPX1BFUklPRDoKIAkJCWNhc2UgRE9f UE9MSUNZOgogCQkJY2FzZSBET19QVUJMSUNBVElPTjoKIAkJCWNhc2UgRE9fUFVCTElDQVRJT05f UkVMOgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmgKaW5kZXggYmE5YmM2ZGRkMi4uZTM0NzgwZTEyZCAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5o CkBAIC01OSw2ICs1OSw3IEBAIHR5cGVkZWYgZW51bQogCURPX1RSSUdHRVIsCiAJRE9fQ09OU1RS QUlOVCwKIAlET19GS19DT05TVFJBSU5ULAkJCS8qIHNlZSBub3RlIGZvciBDb25zdHJhaW50SW5m byAqLworCURPX1BFUklPRCwKIAlET19QUk9DTEFORywKIAlET19DQVNULAogCURPX1RBQkxFX0RB VEEsCkBAIC0yODAsMTIgKzI4MSwxNCBAQCB0eXBlZGVmIHN0cnVjdCBfdGFibGVJbmZvCiAJYm9v bAkJcm93c2VjOwkJCS8qIGlzIHJvdyBzZWN1cml0eSBlbmFibGVkPyAqLwogCWJvb2wJCWZvcmNl cm93c2VjOwkvKiBpcyByb3cgc2VjdXJpdHkgZm9yY2VkPyAqLwogCWJvb2wJCWhhc29pZHM7CQkv KiBkb2VzIGl0IGhhdmUgT0lEcz8gKi8KKwlib29sCQloYXNwZXJpb2RzOwkJLyogZG9lcyBpdCBo YXZlIGFueSBwZXJpb2RzPyAqLwogCXVpbnQzMgkJZnJvemVueGlkOwkJLyogdGFibGUncyByZWxm cm96ZW54aWQgKi8KIAl1aW50MzIJCW1pbm14aWQ7CQkvKiB0YWJsZSdzIHJlbG1pbm14aWQgKi8K IAlPaWQJCQl0b2FzdF9vaWQ7CQkvKiB0b2FzdCB0YWJsZSdzIE9JRCwgb3IgMCBpZiBub25lICov CiAJdWludDMyCQl0b2FzdF9mcm96ZW54aWQ7CS8qIHRvYXN0IHRhYmxlJ3MgcmVsZnJvemVueGlk LCBpZiBhbnkgKi8KIAl1aW50MzIJCXRvYXN0X21pbm14aWQ7CS8qIHRvYXN0IHRhYmxlJ3MgcmVs bWlubXhpZCAqLwogCWludAkJCW5jaGVjazsJCQkvKiAjIG9mIENIRUNLIGV4cHJlc3Npb25zICov CisJaW50CQkJbnBlcmlvZDsJCS8qICMgb2YgUEVSSU9EIGRlZmluaXRpb25zICovCiAJY2hhcgkg ICAqcmVsb2Z0eXBlOwkJLyogdW5kZXJseWluZyB0eXBlIGZvciB0eXBlZCB0YWJsZSAqLwogCU9p ZAkJCWZvcmVpZ25fc2VydmVyOyAvKiBmb3JlaWduIHNlcnZlciBvaWQsIGlmIGFwcGxpY2FibGUg Ki8KIAkvKiB0aGVzZSB0d28gYXJlIHNldCBvbmx5IGlmIHRhYmxlIGlzIGEgc2VxdWVuY2Ugb3du ZWQgYnkgYSBjb2x1bW46ICovCkBAIC0zMjUsNiArMzI4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX3Rh YmxlSW5mbwogCWJvb2wJICAgKmluaE5vdE51bGw7CQkvKiB0cnVlIGlmIE5PVCBOVUxMIGlzIGlu aGVyaXRlZCAqLwogCXN0cnVjdCBfYXR0ckRlZkluZm8gKiphdHRyZGVmczsgLyogREVGQVVMVCBl eHByZXNzaW9ucyAqLwogCXN0cnVjdCBfY29uc3RyYWludEluZm8gKmNoZWNrZXhwcnM7IC8qIENI RUNLIGNvbnN0cmFpbnRzICovCisJc3RydWN0IF9wZXJpb2RJbmZvICpwZXJpb2RzOwkvKiBQRVJJ T0QgZGVmaW5pdGlvbnMgKi8KIAljaGFyCSAgICpwYXJ0a2V5ZGVmOwkJLyogcGFydGl0aW9uIGtl eSBkZWZpbml0aW9uICovCiAJY2hhcgkgICAqcGFydGJvdW5kOwkJLyogcGFydGl0aW9uIGJvdW5k IGRlZmluaXRpb24gKi8KIAlib29sCQluZWVkc19vdmVycmlkZTsgLyogaGFzIEdFTkVSQVRFRCBB TFdBWVMgQVMgSURFTlRJVFkgKi8KQEAgLTQ2NCw2ICs0NjgsMTcgQEAgdHlwZWRlZiBzdHJ1Y3Qg X2NvbnN0cmFpbnRJbmZvCiAJYm9vbAkJc2VwYXJhdGU7CQkvKiB0cnVlIGlmIG11c3QgZHVtcCBh cyBzZXBhcmF0ZSBpdGVtICovCiB9IENvbnN0cmFpbnRJbmZvOwogCit0eXBlZGVmIHN0cnVjdCBf cGVyaW9kSW5mbworeworCUR1bXBhYmxlT2JqZWN0IGRvYmo7CisJVGFibGVJbmZvICAqcGVydGFi bGU7CisJY2hhcgkgICAqcGVyc3RhcnQ7CQkvKiB0aGUgbmFtZSBvZiB0aGUgc3RhcnQgY29sdW1u ICovCisJY2hhcgkgICAqcGVyZW5kOwkJCS8qIHRoZSBuYW1lIG9mIHRoZSBlbmQgY29sdW1uICov CisJY2hhcgkgICAqb3BjbmFtZXNwYWNlOwkvKiB0aGUgbmFtZSBvZiB0aGUgb3BlcmF0b3IgY2xh c3Mgc2NoZW1hICovCisJY2hhcgkgICAqb3BjbmFtZTsJCS8qIHRoZSBuYW1lIG9mIHRoZSBvcGVy YXRvciBjbGFzcyAqLworCWNoYXIJICAgKmNvbm5hbWU7CQkvKiB0aGUgbmFtZSBvZiB0aGUgQ0hF Q0sgY29uc3RyYWludCAqLworfSBQZXJpb2RJbmZvOworCiB0eXBlZGVmIHN0cnVjdCBfcHJvY0xh bmdJbmZvCiB7CiAJRHVtcGFibGVPYmplY3QgZG9iajsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wX3NvcnQuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYwppbmRl eCA0NjQ2MWZiNmExLi43ZGNmNWVmMDQ4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcF9zb3J0LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCkBAIC03NSw2 ICs3NSw3IEBAIGVudW0gZGJPYmplY3RUeXBlUHJpb3JpdGllcwogCVBSSU9fQ09OU1RSQUlOVCwK IAlQUklPX0lOREVYLAogCVBSSU9fSU5ERVhfQVRUQUNILAorCVBSSU9fUEVSSU9ELAogCVBSSU9f U1RBVFNFWFQsCiAJUFJJT19SVUxFLAogCVBSSU9fVFJJR0dFUiwKQEAgLTEwOCw2ICsxMDksNyBA QCBzdGF0aWMgY29uc3QgaW50IGRiT2JqZWN0VHlwZVByaW9yaXR5W10gPQogCVBSSU9fQVRUUkRF RiwJCQkJLyogRE9fQVRUUkRFRiAqLwogCVBSSU9fSU5ERVgsCQkJCQkvKiBET19JTkRFWCAqLwog CVBSSU9fSU5ERVhfQVRUQUNILAkJCS8qIERPX0lOREVYX0FUVEFDSCAqLworCVBSSU9fUEVSSU9E LAkJCQkvKiBET19QRVJJT0QgKi8KIAlQUklPX1NUQVRTRVhULAkJCQkvKiBET19TVEFUU0VYVCAq LwogCVBSSU9fUlVMRSwJCQkJCS8qIERPX1JVTEUgKi8KIAlQUklPX1RSSUdHRVIsCQkJCS8qIERP X1RSSUdHRVIgKi8KQEAgLTEzODMsNiArMTM4NSwxMSBAQCBkZXNjcmliZUR1bXBhYmxlT2JqZWN0 KER1bXBhYmxlT2JqZWN0ICpvYmosIGNoYXIgKmJ1ZiwgaW50IGJ1ZnNpemUpCiAJCQkJCSAiRksg Q09OU1RSQUlOVCAlcyAgKElEICVkIE9JRCAldSkiLAogCQkJCQkgb2JqLT5uYW1lLCBvYmotPmR1 bXBJZCwgb2JqLT5jYXRJZC5vaWQpOwogCQkJcmV0dXJuOworCQljYXNlIERPX1BFUklPRDoKKwkJ CXNucHJpbnRmKGJ1ZiwgYnVmc2l6ZSwKKwkJCQkJICJQRVJJT0QgJXMgIChJRCAlZCBPSUQgJXUp IiwKKwkJCQkJIG9iai0+bmFtZSwgb2JqLT5kdW1wSWQsIG9iai0+Y2F0SWQub2lkKTsKKwkJCXJl dHVybjsKIAkJY2FzZSBET19QUk9DTEFORzoKIAkJCXNucHJpbnRmKGJ1ZiwgYnVmc2l6ZSwKIAkJ CQkJICJQUk9DRURVUkFMIExBTkdVQUdFICVzICAoSUQgJWQgT0lEICV1KSIsCmRpZmYgLS1naXQg YS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4 IDJhYmYyNTU3OTguLjQzNmVkYWEzMWQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmli ZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC0yNTIwLDYgKzI1MjAsNDAgQEAg ZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJUEdyZXN1 bHQgICAqcmVzdWx0ID0gTlVMTDsKIAkJaW50CQkJdHVwbGVzID0gMDsKIAorCQkvKiBwcmludCBw ZXJpb2RzICovCisJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE1MDAwMCkKKwkJeworCQkJcHJpbnRm UFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkgICJTRUxFQ1QgcXVvdGVfaWRlbnQocC5wZXJuYW1l KSwgcXVvdGVfaWRlbnQocy5hdHRuYW1lKSBBUyBzdGFydGF0dCwgcXVvdGVfaWRlbnQoZS5hdHRu YW1lKSBBUyBlbmRhdHRcbiIKKwkJCQkJCQkgICJGUk9NIHBnX3BlcmlvZCBBUyBwXG4iCisJCQkJ CQkJICAiSk9JTiBwZ19hdHRyaWJ1dGUgQVMgcyBPTiAocy5hdHRyZWxpZCwgcy5hdHRudW0pID0g KHAucGVycmVsaWQsIHAucGVyc3RhcnQpXG4iCisJCQkJCQkJICAiSk9JTiBwZ19hdHRyaWJ1dGUg QVMgZSBPTiAoZS5hdHRyZWxpZCwgZS5hdHRudW0pID0gKHAucGVycmVsaWQsIHAucGVyZW5kKVxu IgorCQkJCQkJCSAgIldIRVJFIHAucGVycmVsaWQgPSAnJXMnXG4iCisJCQkJCQkJICAiT1JERVIg QlkgMTsiLAorCQkJCQkJCSAgb2lkKTsKKwkJCXJlc3VsdCA9IFBTUUxleGVjKGJ1Zi5kYXRhKTsK KwkJCWlmICghcmVzdWx0KQorCQkJCWdvdG8gZXJyb3JfcmV0dXJuOworCQkJZWxzZQorCQkJCXR1 cGxlcyA9IFBRbnR1cGxlcyhyZXN1bHQpOworCisJCQlpZiAodHVwbGVzID4gMCkKKwkJCXsKKwkJ CQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250LCBfKCJQZXJpb2RzOiIpKTsKKwkJCQlmb3IgKGkg PSAwOyBpIDwgdHVwbGVzOyBpKyspCisJCQkJeworCQkJCQkvKiB1bnRyYW5zbGF0ZWQgY29uc3Ry YWludCBuYW1lIGFuZCBkZWYgKi8KKwkJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIiAgICAl cyAoJXMsICVzKSIsCisJCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAwKSwKKwkJCQkJ CQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDEpLAorCQkJCQkJCQkJICBQUWdldHZhbHVlKHJl c3VsdCwgaSwgMikpOworCisJCQkJCXByaW50VGFibGVBZGRGb290ZXIoJmNvbnQsIGJ1Zi5kYXRh KTsKKwkJCQl9CisJCQl9CisJCQlQUWNsZWFyKHJlc3VsdCk7CisJCX0KKwogCQkvKiBwcmludCBp bmRleGVzICovCiAJCWlmICh0YWJsZWluZm8uaGFzaW5kZXgpCiAJCXsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBl bmRlbmN5LmgKaW5kZXggZmQ0NDA4MWU3NC4uM2MwOTBmZWIwNyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBl bmRlbmN5LmgKQEAgLTEwMSw2ICsxMDEsNyBAQCB0eXBlZGVmIGVudW0gT2JqZWN0Q2xhc3MKIAlP Q0xBU1NfQ0FTVCwJCQkJLyogcGdfY2FzdCAqLwogCU9DTEFTU19DT0xMQVRJT04sCQkJLyogcGdf Y29sbGF0aW9uICovCiAJT0NMQVNTX0NPTlNUUkFJTlQsCQkJLyogcGdfY29uc3RyYWludCAqLwor CU9DTEFTU19QRVJJT0QsCQkJCS8qIHBnX3BlcmlvZCAqLwogCU9DTEFTU19DT05WRVJTSU9OLAkJ CS8qIHBnX2NvbnZlcnNpb24gKi8KIAlPQ0xBU1NfREVGQVVMVCwJCQkJLyogcGdfYXR0cmRlZiAq LwogCU9DTEFTU19MQU5HVUFHRSwJCQkvKiBwZ19sYW5ndWFnZSAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9oZWFwLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaAppbmRl eCA2Y2U0ODBiNDljLi43NmQ5NTk3MzI4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L2hlYXAuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaApAQCAtMTIwLDYgKzEyMCwx MCBAQCBleHRlcm4gT2lkCVN0b3JlQXR0ckRlZmF1bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVy IGF0dG51bSwKIAkJCQkJCQkgTm9kZSAqZXhwciwgYm9vbCBpc19pbnRlcm5hbCwKIAkJCQkJCQkg Ym9vbCBhZGRfY29sdW1uX21vZGUpOwogCitleHRlcm4gT2lkIFN0b3JlUGVyaW9kKFJlbGF0aW9u IHJlbCwgY29uc3QgY2hhciAqcGVyaW9kLAorCQkJCQkgICBBdHRyTnVtYmVyIHN0YXJ0bnVtLCBB dHRyTnVtYmVyIGVuZG51bSwKKwkJCQkJICAgT2lkIHJuZ3R5cGlkLCBPaWQgY29ub2lkKTsKKwog ZXh0ZXJuIE5vZGUgKmNvb2tEZWZhdWx0KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSBOb2Rl ICpyYXdfZGVmYXVsdCwKIAkJCQkJCSBPaWQgYXR0dHlwaWQsCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmgK aW5kZXggYTVhNjA3NWQ0ZC4uMjJjYzFiYTUyNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXguaApAQCAt NDMsMTEgKzQzLDExIEBAIENBVEFMT0cocGdfaW5kZXgsMjYxMCxJbmRleFJlbGF0aW9uSWQpIEJL SV9TQ0hFTUFfTUFDUk8KIAlib29sCQlpbmRpc3JlYWR5OwkJLyogaXMgdGhpcyBpbmRleCByZWFk eSBmb3IgaW5zZXJ0cz8gKi8KIAlib29sCQlpbmRpc2xpdmU7CQkvKiBpcyB0aGlzIGluZGV4IGFs aXZlIGF0IGFsbD8gKi8KIAlib29sCQlpbmRpc3JlcGxpZGVudDsgLyogaXMgdGhpcyBpbmRleCB0 aGUgaWRlbnRpdHkgZm9yIHJlcGxpY2F0aW9uPyAqLworCU9pZAkJCWluZHBlcmlvZDsJCS8qIHRo ZSBwZXJpb2QgaXQgY29udGFpbnMsIGlmIGFueSAqLwogCiAJLyogdmFyaWFibGUtbGVuZ3RoIGZp ZWxkcyBzdGFydCBoZXJlLCBidXQgd2UgYWxsb3cgZGlyZWN0IGFjY2VzcyB0byBpbmRrZXkgKi8K IAlpbnQydmVjdG9yCWluZGtleSBCS0lfRk9SQ0VfTk9UX05VTEw7CS8qIGNvbHVtbiBudW1iZXJz IG9mIGluZGV4ZWQgY29scywKIAkJCQkJCQkJCQkJICogb3IgMCAqLwotCiAjaWZkZWYgQ0FUQUxP R19WQVJMRU4KIAlvaWR2ZWN0b3IJaW5kY29sbGF0aW9uIEJLSV9MT09LVVBfT1BUKHBnX2NvbGxh dGlvbikgQktJX0ZPUkNFX05PVF9OVUxMOwkvKiBjb2xsYXRpb24gaWRlbnRpZmllcnMgKi8KIAlv aWR2ZWN0b3IJaW5kY2xhc3MgQktJX0xPT0tVUChwZ19vcGNsYXNzKSBCS0lfRk9SQ0VfTk9UX05V TEw7IC8qIG9wY2xhc3MgaWRlbnRpZmllcnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcGVyaW9kLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3BlcmlvZC5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmUzNjAzMGM2YjkKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3BlcmlvZC5oCkBAIC0wLDAgKzEsNTUgQEAK Ky8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX3BlcmlvZC5oCisgKgkgIGRlZmluaXRpb24g b2YgdGhlICJwZXJpb2QiIHN5c3RlbSBjYXRhbG9nIChwZ19wZXJpb2QpCisgKgorICoKKyAqIFBv cnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDE4LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorICoKKyAqIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmgKKyAqCisg KiBOT1RFUworICoJICBUaGUgQ2F0YWxvZy5wbSBtb2R1bGUgcmVhZHMgdGhpcyBmaWxlIGFuZCBk ZXJpdmVzIHNjaGVtYQorICoJICBpbmZvcm1hdGlvbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqLworI2lmbmRlZiBQR19QRVJJT0RfSAorI2RlZmluZSBQR19QRVJJT0RfSAorCisjaW5jbHVk ZSAiY2F0YWxvZy9nZW5ia2kuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZF9kLmgiCisK Ky8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlwZ19wZXJpb2QgZGVmaW5pdGlvbi4gIGNwcCB0dXJu cyB0aGlzIGludG8KKyAqCQl0eXBlZGVmIHN0cnVjdCBGb3JtRGF0YV9wZ19wZXJpb2QKKyAqIC0t LS0tLS0tLS0tLS0tLS0KKyAqLworQ0FUQUxPRyhwZ19wZXJpb2QsODAwMCxQZXJpb2RSZWxhdGlv bklkKQoreworCU9pZAkJCW9pZDsJCQkvKiBPSUQgb2YgdGhlIHBlcmlvZCAqLworCU5hbWVEYXRh CXBlcm5hbWU7CQkvKiBuYW1lIG9mIHBlcmlvZCAqLworCU9pZAkJCXBlcnJlbGlkOwkJLyogT0lE IG9mIHJlbGF0aW9uIGNvbnRhaW5pbmcgdGhpcyBwZXJpb2QgKi8KKwlpbnQxNgkJcGVyc3RhcnQ7 CQkvKiBjb2x1bW4gZm9yIHN0YXJ0IHZhbHVlICovCisJaW50MTYJCXBlcmVuZDsJCQkvKiBjb2x1 bW4gZm9yIGVuZCB2YWx1ZSAqLworCU9pZAkJCXBlcnJuZ3R5cGU7CQkvKiBPSUQgb2YgdGhlIHJh bmdlIHR5cGUgZm9yIHRoaXMgcGVyaW9kICovCisJT2lkCQkJcGVyY29uc3RyYWludDsJLyogT0lE IG9mIChzdGFydCA8IGVuZCkgY29uc3RyYWludCAqLworCWJvb2wJCXBlcmlzbG9jYWw7CQkvKiBp cyB0aGUgcGVyaW9kIGxvY2FsIG9yIGluaGVyaXRlZD8gKi8KKwlpbnQzMgkJcGVyaW5oY291bnQ7 CS8qIG51bWJlciBvZiBwYXJlbnRzIGhhdmluZyB0aGlzIHBlcmlvZCAqLworfSBGb3JtRGF0YV9w Z19wZXJpb2Q7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlGb3JtX3BnX3BlcmlvZCBjb3Jy ZXNwb25kcyB0byBhIHBvaW50ZXIgdG8gYSB0dXBsZSB3aXRoCisgKgkJdGhlIGZvcm1hdCBvZiBw Z19wZXJpb2QgcmVsYXRpb24uCisgKiAtLS0tLS0tLS0tLS0tLS0tCisgKi8KK3R5cGVkZWYgRm9y bURhdGFfcGdfcGVyaW9kICpGb3JtX3BnX3BlcmlvZDsKKworREVDTEFSRV9VTklRVUVfSU5ERVhf UEtFWShwZ19wZXJpb2Rfb2lkX2luZGV4LCA4MDAxLCBQZXJpb2RPYmplY3RJbmRleElkLCBvbiBw Z19wZXJpb2QgdXNpbmcgYnRyZWUob2lkIG9pZF9vcHMpKTsKK0RFQ0xBUkVfVU5JUVVFX0lOREVY KHBnX3BlcmlvZF9wZXJyZWxpZF9wZXJuYW1lX2luZGV4LCA4MDAyLCBQZXJpb2RSZWxpZE5hbWVJ bmRleElkLCBvbiBwZ19wZXJpb2QgdXNpbmcgYnRyZWUocGVycmVsaWQgb2lkX29wcywgcGVybmFt ZSBuYW1lX29wcykpOworCitleHRlcm4gdm9pZCBSZW1vdmVQZXJpb2RCeUlkKE9pZCBwZXJpb2RJ ZCk7CisKK2V4dGVybiBPaWQgZ2V0X3JlbGF0aW9uX3BlcmlvZF9vaWQoT2lkIHJlbGlkLCBjb25z dCBjaGFyICpwZXJuYW1lLCBib29sIG1pc3Npbmdfb2spOworCisjZW5kaWYJCQkJCQkJLyogUEdf UEVSSU9EX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcmFuZ2UuaCBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcmFuZ2UuaAppbmRleCBjZGUyOTExNGJhLi5lYzRjZjM2 ZmRkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmgKKysrIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19yYW5nZS5oCkBAIC01OSw2ICs1OSw3IEBAIHR5cGVkZWYgRm9y bURhdGFfcGdfcmFuZ2UgKkZvcm1fcGdfcmFuZ2U7CiAKIERFQ0xBUkVfVU5JUVVFX0lOREVYX1BL RVkocGdfcmFuZ2Vfcm5ndHlwaWRfaW5kZXgsIDM1NDIsIFJhbmdlVHlwaWRJbmRleElkLCBvbiBw Z19yYW5nZSB1c2luZyBidHJlZShybmd0eXBpZCBvaWRfb3BzKSk7CiBERUNMQVJFX1VOSVFVRV9J TkRFWChwZ19yYW5nZV9ybmdtdWx0aXR5cGlkX2luZGV4LCAyMjI4LCBSYW5nZU11bHRpcmFuZ2VU eXBpZEluZGV4SWQsIG9uIHBnX3JhbmdlIHVzaW5nIGJ0cmVlKHJuZ211bHRpdHlwaWQgb2lkX29w cykpOworREVDTEFSRV9VTklRVUVfSU5ERVgocGdfcmFuZ2Vfcm5nc3VidHlwZV9ybmd0eXBpZF9p bmRleCwgODAwMywgUmFuZ2VTdWJUeXBpZFR5cGlkSW5kZXhJZCwgb24gcGdfcmFuZ2UgdXNpbmcg YnRyZWUocm5nc3VidHlwZSBvaWRfb3BzLCBybmd0eXBpZCBvaWRfb3BzKSk7CiAKIC8qCiAgKiBw cm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4gcGdfcmFuZ2UuYwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNt ZHMuaAppbmRleCAxNGY0YjQ4ODJmLi42YTUxNDI2MDU2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jb21tYW5kcy90YWJsZWNtZHMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNt ZHMuaApAQCAtMzgsNyArMzgsOCBAQCBleHRlcm4gTE9DS01PREUgQWx0ZXJUYWJsZUdldExvY2tM ZXZlbChMaXN0ICpjbWRzKTsKIAogZXh0ZXJuIHZvaWQgQVRFeGVjQ2hhbmdlT3duZXIoT2lkIHJl bGF0aW9uT2lkLCBPaWQgbmV3T3duZXJJZCwgYm9vbCByZWN1cnNpbmcsIExPQ0tNT0RFIGxvY2tt b2RlKTsKIAotZXh0ZXJuIHZvaWQgQWx0ZXJUYWJsZUludGVybmFsKE9pZCByZWxpZCwgTGlzdCAq Y21kcywgYm9vbCByZWN1cnNlKTsKK2V4dGVybiB2b2lkIEFsdGVyVGFibGVJbnRlcm5hbChPaWQg cmVsaWQsIExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSwKKwkJCQkJCQkgICBzdHJ1Y3QgQWx0ZXJU YWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKIAogZXh0ZXJuIE9pZAlBbHRlclRhYmxlTW92 ZUFsbChBbHRlclRhYmxlTW92ZUFsbFN0bXQgKnN0bXQpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9ub2Rlcy9ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAppbmRleCBkOWU0 MTdiY2Q3Li40YjEyYThkMzY1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKQEAgLTQ2MSw2ICs0NjEsNyBAQCB0eXBl ZGVmIGVudW0gTm9kZVRhZwogCVRfSW5kZXhFbGVtLAogCVRfU3RhdHNFbGVtLAogCVRfQ29uc3Ry YWludCwKKwlUX1BlcmlvZCwKIAlUX0RlZkVsZW0sCiAJVF9SYW5nZVRibEVudHJ5LAogCVRfUmFu Z2VUYmxGdW5jdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBkZWY5NjUxYjM0Li5mZTAw MDc2YTkxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xODAxLDYgKzE4MDEsNyBAQCB0eXBl ZGVmIGVudW0gT2JqZWN0VHlwZQogCU9CSkVDVF9PUENMQVNTLAogCU9CSkVDVF9PUEVSQVRPUiwK IAlPQkpFQ1RfT1BGQU1JTFksCisJT0JKRUNUX1BFUklPRCwKIAlPQkpFQ1RfUE9MSUNZLAogCU9C SkVDVF9QUk9DRURVUkUsCiAJT0JKRUNUX1BVQkxJQ0FUSU9OLApAQCAtMTg5Miw2ICsxODkzLDgg QEAgdHlwZWRlZiBlbnVtIEFsdGVyVGFibGVUeXBlCiAJQVRfQWRkSW5kZXhDb25zdHJhaW50LAkJ LyogYWRkIGNvbnN0cmFpbnQgdXNpbmcgZXhpc3RpbmcgaW5kZXggKi8KIAlBVF9Ecm9wQ29uc3Ry YWludCwJCQkvKiBkcm9wIGNvbnN0cmFpbnQgKi8KIAlBVF9Ecm9wQ29uc3RyYWludFJlY3Vyc2Us CS8qIGludGVybmFsIHRvIGNvbW1hbmRzL3RhYmxlY21kcy5jICovCisJQVRfQWRkUGVyaW9kLAkJ CQkvKiBBREQgUEVSSU9EICovCisJQVRfRHJvcFBlcmlvZCwJCQkJLyogRFJPUCBQRVJJT0QgKi8K IAlBVF9SZUFkZENvbW1lbnQsCQkJLyogaW50ZXJuYWwgdG8gY29tbWFuZHMvdGFibGVjbWRzLmMg Ki8KIAlBVF9BbHRlckNvbHVtblR5cGUsCQkJLyogYWx0ZXIgY29sdW1uIHR5cGUgKi8KIAlBVF9B bHRlckNvbHVtbkdlbmVyaWNPcHRpb25zLAkvKiBhbHRlciBjb2x1bW4gT1BUSU9OUyAoLi4uKSAq LwpAQCAtMjE1Niw5ICsyMTU5LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgVmFyaWFibGVTaG93U3RtdAog LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUNyZWF0ZSBUYWJsZSBTdGF0ZW1lbnQKICAq Ci0gKiBOT1RFOiBpbiB0aGUgcmF3IGdyYW0ueSBvdXRwdXQsIENvbHVtbkRlZiBhbmQgQ29uc3Ry YWludCBub2RlcyBhcmUKLSAqIGludGVybWl4ZWQgaW4gdGFibGVFbHRzLCBhbmQgY29uc3RyYWlu dHMgaXMgTklMLiAgQWZ0ZXIgcGFyc2UgYW5hbHlzaXMsCi0gKiB0YWJsZUVsdHMgY29udGFpbnMg anVzdCBDb2x1bW5EZWZzLCBhbmQgY29uc3RyYWludHMgY29udGFpbnMganVzdAorICogTk9URTog aW4gdGhlIHJhdyBncmFtLnkgb3V0cHV0LCBDb2x1bW5EZWYsIFBlcmlvZCwgYW5kIENvbnN0cmFp bnQgbm9kZXMgYXJlCisgKiBpbnRlcm1peGVkIGluIHRhYmxlRWx0czsgcGVyaW9kcyBhbmQgY29u c3RyYWludHMgYXJlIE5JTC4gIEFmdGVyIHBhcnNlIGFuYWx5c2lzLAorICogdGFibGVFbHRzIGNv bnRhaW5zIGp1c3QgQ29sdW1uRGVmcywgcGVyaW9kcyBjb250YWlucyBqdXN0IFBlcmlvZCBub2Rl cywgYW5kIGNvbnN0cmFpbnRzIGNvbnRhaW5zIGp1c3QKICAqIENvbnN0cmFpbnQgbm9kZXMgKGlu IGZhY3QsIG9ubHkgQ09OU1RSX0NIRUNLIG5vZGVzLCBpbiB0aGUgcHJlc2VudAogICogaW1wbGVt ZW50YXRpb24pLgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjE2OSw2ICsyMTcyLDcg QEAgdHlwZWRlZiBzdHJ1Y3QgQ3JlYXRlU3RtdAogCU5vZGVUYWcJCXR5cGU7CiAJUmFuZ2VWYXIg ICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byBjcmVhdGUgKi8KIAlMaXN0CSAgICp0YWJsZUVs dHM7CQkvKiBjb2x1bW4gZGVmaW5pdGlvbnMgKGxpc3Qgb2YgQ29sdW1uRGVmKSAqLworCUxpc3QJ ICAgKnBlcmlvZHM7CQkvKiBwZXJpb2RzIChsaXN0IG9mIFBlcmlvZCBub2RlcykgKi8KIAlMaXN0 CSAgICppbmhSZWxhdGlvbnM7CS8qIHJlbGF0aW9ucyB0byBpbmhlcml0IGZyb20gKGxpc3Qgb2YK IAkJCQkJCQkJICogUmFuZ2VWYXIpICovCiAJUGFydGl0aW9uQm91bmRTcGVjICpwYXJ0Ym91bmQ7 CS8qIEZPUiBWQUxVRVMgY2xhdXNlICovCkBAIC0yMTgyLDYgKzIxODYsMjYgQEAgdHlwZWRlZiBz dHJ1Y3QgQ3JlYXRlU3RtdAogCWJvb2wJCWlmX25vdF9leGlzdHM7CS8qIGp1c3QgZG8gbm90aGlu ZyBpZiBpdCBhbHJlYWR5IGV4aXN0cz8gKi8KIH0gQ3JlYXRlU3RtdDsKIAorCisvKiAtLS0tLS0t LS0tCisgKiBEZWZpbml0aW9ucyBmb3IgcGVyaW9kcyBpbiBDcmVhdGVTdG10CisgKiAtLS0tLS0t LS0tCisgKi8KKwordHlwZWRlZiBzdHJ1Y3QgUGVyaW9kCit7CisJTm9kZVRhZwkJdHlwZTsKKwlP aWQJCQlvaWQ7CQkJLyogcGVyaW9kIG9pZCwgb25jZSBpdCdzIHRyYW5zZm9ybWVkICovCisJY2hh cgkgICAqcGVyaW9kbmFtZTsJCS8qIHBlcmlvZCBuYW1lICovCisJY2hhcgkgICAqc3RhcnRjb2xu YW1lOwkvKiBuYW1lIG9mIHN0YXJ0IGNvbHVtbiAqLworCWNoYXIJICAgKmVuZGNvbG5hbWU7CQkv KiBuYW1lIG9mIGVuZCBjb2x1bW4gKi8KKwlMaXN0CSAgICpvcHRpb25zOwkJLyogb3B0aW9ucyBm cm9tIFdJVEggY2xhdXNlICovCisJY2hhcgkgICAqY29uc3RyYWludG5hbWU7CS8qIG5hbWUgb2Yg dGhlIENIRUNLIGNvbnN0cmFpbnQgKi8KKwljaGFyCSAgICpyYW5nZXR5cGVuYW1lOwkvKiBuYW1l IG9mIHRoZSByYW5nZSB0eXBlICovCisJT2lkCQkJcm5ndHlwaWQ7CQkvKiB0aGUgcmFuZ2UgdHlw ZSB0byB1c2UgKi8KKwlpbnQJCQlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBp ZiB1bmtub3duICovCit9IFBlcmlvZDsKKwogLyogLS0tLS0tLS0tLQogICogRGVmaW5pdGlvbnMg Zm9yIGNvbnN0cmFpbnRzIGluIENyZWF0ZVN0bXQKICAqCkBAIC0yODc5LDYgKzI5MDMsNyBAQCB0 eXBlZGVmIHN0cnVjdCBJbmRleFN0bXQKIAlMaXN0CSAgICppbmRleFBhcmFtczsJLyogY29sdW1u cyB0byBpbmRleDogYSBsaXN0IG9mIEluZGV4RWxlbSAqLwogCUxpc3QJICAgKmluZGV4SW5jbHVk aW5nUGFyYW1zOwkvKiBhZGRpdGlvbmFsIGNvbHVtbnMgdG8gaW5kZXg6IGEgbGlzdAogCQkJCQkJ CQkJCSAqIG9mIEluZGV4RWxlbSAqLworCVBlcmlvZAkgICAqcGVyaW9kOwkJCS8qIFRoZSBwZXJp b2QgaW5jbHVkZWQgaW4gdGhlIGluZGV4ICovCiAJTGlzdAkgICAqb3B0aW9uczsJCS8qIFdJVEgg Y2xhdXNlIG9wdGlvbnM6IGEgbGlzdCBvZiBEZWZFbGVtICovCiAJTm9kZQkgICAqd2hlcmVDbGF1 c2U7CS8qIHF1YWxpZmljYXRpb24gKHBhcnRpYWwtaW5kZXggcHJlZGljYXRlKSAqLwogCUxpc3QJ ICAgKmV4Y2x1ZGVPcE5hbWVzOyAvKiBleGNsdXNpb24gb3BlcmF0b3IgbmFtZXMsIG9yIE5JTCBp ZiBub25lICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMv aW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggZjgzNmFjZjg3Ni4uNDNmYzU2MTA3NSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Bh cnNlci9rd2xpc3QuaApAQCAtMzEyLDYgKzMxMiw3IEBAIFBHX0tFWVdPUkQoInBhcnRpYWwiLCBQ QVJUSUFMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJ0 aXRpb24iLCBQQVJUSVRJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoInBhc3NpbmciLCBQQVNTSU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJwYXNzd29yZCIsIFBBU1NXT1JELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCitQR19LRVlXT1JEKCJwZXJpb2QiLCBQRVJJT0QsIFJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwbGFjaW5nIiwgUExBQ0lORywgUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBsYW5zIiwgUExBTlMsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBvbGljeSIsIFBPTElDWSwgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2Vy L3BhcnNlX3V0aWxjbWQuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21kLmgKaW5k ZXggMTA1NmJmMDgxYi4uOGU4MWQxNzBhOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2Vy L3BhcnNlX3V0aWxjbWQuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdXRpbGNtZC5o CkBAIC0zOSw1ICszOSw2IEBAIGV4dGVybiBJbmRleFN0bXQgKmdlbmVyYXRlQ2xvbmVkSW5kZXhT dG10KFJhbmdlVmFyICpoZWFwUmVsLAogCQkJCQkJCQkJCSAgUmVsYXRpb24gc291cmNlX2lkeCwK IAkJCQkJCQkJCQkgIGNvbnN0IHN0cnVjdCBBdHRyTWFwICphdHRtYXAsCiAJCQkJCQkJCQkJICBP aWQgKmNvbnN0cmFpbnRPaWQpOworZXh0ZXJuIHZvaWQgdHJhbnNmb3JtUGVyaW9kT3B0aW9ucyhQ ZXJpb2QgKnBlcmlvZCk7CiAKICNlbmRpZgkJCQkJCQkvKiBQQVJTRV9VVElMQ01EX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRp bHMvbHN5c2NhY2hlLmgKaW5kZXggNzc4NzFhYWVmYy4uYmI4YzFiNjc0MiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5 c2NhY2hlLmgKQEAgLTk2LDYgKzk2LDggQEAgZXh0ZXJuIE9pZAlnZXRfYXR0dHlwZShPaWQgcmVs aWQsIEF0dHJOdW1iZXIgYXR0bnVtKTsKIGV4dGVybiB2b2lkIGdldF9hdHR0eXBldHlwbW9kY29s bChPaWQgcmVsaWQsIEF0dHJOdW1iZXIgYXR0bnVtLAogCQkJCQkJCQkgIE9pZCAqdHlwaWQsIGlu dDMyICp0eXBtb2QsIE9pZCAqY29sbGlkKTsKIGV4dGVybiBEYXR1bSBnZXRfYXR0b3B0aW9ucyhP aWQgcmVsaWQsIGludDE2IGF0dG51bSk7CitleHRlcm4gY2hhciAqZ2V0X3BlcmlvZG5hbWUoT2lk IHBlcmlvZGlkLCBib29sIG1pc3Npbmdfb2spOworZXh0ZXJuIE9pZAlnZXRfcGVyaW9kX29pZChP aWQgcmVsaWQsIGNvbnN0IGNoYXIgKnBlcmlvZG5hbWUsIGJvb2wgbWlzc2luZ19vayk7CiBleHRl cm4gT2lkCWdldF9jYXN0X29pZChPaWQgc291cmNldHlwZWlkLCBPaWQgdGFyZ2V0dHlwZWlkLCBi b29sIG1pc3Npbmdfb2spOwogZXh0ZXJuIGNoYXIgKmdldF9jb2xsYXRpb25fbmFtZShPaWQgY29s bG9pZCk7CiBleHRlcm4gYm9vbCBnZXRfY29sbGF0aW9uX2lzZGV0ZXJtaW5pc3RpYyhPaWQgY29s bG9pZCk7CkBAIC0xOTQsNiArMTk2LDcgQEAgZXh0ZXJuIE9pZAlnZXRfcmFuZ2Vfc3VidHlwZShP aWQgcmFuZ2VPaWQpOwogZXh0ZXJuIE9pZAlnZXRfcmFuZ2VfY29sbGF0aW9uKE9pZCByYW5nZU9p ZCk7CiBleHRlcm4gT2lkCWdldF9yYW5nZV9tdWx0aXJhbmdlKE9pZCByYW5nZU9pZCk7CiBleHRl cm4gT2lkCWdldF9tdWx0aXJhbmdlX3JhbmdlKE9pZCBtdWx0aXJhbmdlT2lkKTsKK2V4dGVybiBP aWQJZ2V0X3N1YnR5cGVfcmFuZ2UoT2lkIHN1YnR5cGVPaWQpOwogZXh0ZXJuIE9pZAlnZXRfaW5k ZXhfY29sdW1uX29wY2xhc3MoT2lkIGluZGV4X29pZCwgaW50IGF0dG5vKTsKIGV4dGVybiBib29s IGdldF9pbmRleF9pc3JlcGxpZGVudChPaWQgaW5kZXhfb2lkKTsKIGV4dGVybiBib29sIGdldF9p bmRleF9pc3ZhbGlkKE9pZCBpbmRleF9vaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRp bHMvc3lzY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hlLmgKaW5kZXggZDc0YTM0 ODYwMC4uOThlYmFhZGZkZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oCkBAIC03Myw2ICs3Myw4IEBAIGVu dW0gU3lzQ2FjaGVJZGVudGlmaWVyCiAJT1BGQU1JTFlBTU5BTUVOU1AsCiAJT1BGQU1JTFlPSUQs CiAJUEFSVFJFTElELAorCVBFUklPRE5BTUUsCisJUEVSSU9ET0lELAogCVBST0NOQU1FQVJHU05T UCwKIAlQUk9DT0lELAogCVBVQkxJQ0FUSU9OTkFNRSwKQEAgLTgwLDYgKzgyLDcgQEAgZW51bSBT eXNDYWNoZUlkZW50aWZpZXIKIAlQVUJMSUNBVElPTlJFTCwKIAlQVUJMSUNBVElPTlJFTE1BUCwK IAlSQU5HRU1VTFRJUkFOR0UsCisJUkFOR0VTVUJUWVBFLAogCVJBTkdFVFlQRSwKIAlSRUxOQU1F TlNQLAogCVJFTE9JRCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGVy aW9kcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BlcmlvZHMub3V0Cm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjNiOWVjYTBmMDQKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BlcmlvZHMub3V0CkBAIC0wLDAgKzEsNzkg QEAKKy8qIFN5c3RlbSBwZXJpb2RzIGFyZSBub3QgaW1wbGVtZW50ZWQgKi8KK2NyZWF0ZSB0YWJs ZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBzeXN0ZW1fdGlt ZSAoZHMsIGRlKSk7CitFUlJPUjogIFBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMgbm90IHN1cHBv cnRlZAorTElORSAyOiBjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRh dGUsIHBlcmlvZCBmb3Igc3kuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCisvKiBQZXJpb2RzIG11c3Qgc3BlY2lmeSBhY3R1YWwgY29s dW1ucyAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBw ZXJpb2QgZm9yIHAgKGJvZ3VzLCBkZSkpOworRVJST1I6ICBjb2x1bW4gImJvZ3VzIiBvZiByZWxh dGlvbiAicHQiIGRvZXMgbm90IGV4aXN0CitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRz IGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGJvZ3VzKSk7CitFUlJPUjogIGNvbHVt biAiYm9ndXMiIG9mIHJlbGF0aW9uICJwdCIgZG9lcyBub3QgZXhpc3QKKy8qIERhdGEgdHlwZXMg bXVzdCBtYXRjaCBleGFjdGx5ICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRh dGUsIGRlIHRpbWVzdGFtcCwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK0VSUk9SOiAgc3RhcnQg YW5kIGVuZCBjb2x1bW5zIG9mIHBlcmlvZCBtdXN0IGJlIG9mIHNhbWUgdHlwZQorY3JlYXRlIHRh YmxlIHB0IChpZCBpbnRlZ2VyLCBkcyB0ZXh0IGNvbGxhdGUgIkMiLCBkZSB0ZXh0IGNvbGxhdGUg IlBPU0lYIiwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK0VSUk9SOiAgc3RhcnQgYW5kIGVuZCBj b2x1bW5zIG9mIHBlcmlvZCBtdXN0IGhhdmUgc2FtZSBjb2xsYXRpb24KKy8qIFBlcmlvZHMgbXVz dCBoYXZlIGEgZGVmYXVsdCBCVHJlZSBvcGVyYXRvciBjbGFzcyAqLworY3JlYXRlIHRhYmxlIHB0 IChpZCBpbnRlZ2VyLCBkcyB4bWwsIGRlIHhtbCwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK0VS Uk9SOiAgbm8gcmFuZ2UgdHlwZSBmb3IgeG1sIGZvdW5kIGZvciBwZXJpb2QgcAorSElOVDogIFlv dSBjYW4gZGVmaW5lIGEgY3VzdG9tIHJhbmdlIHR5cGUgd2l0aCBDUkVBVEUgVFlQRQorLyogUGVy aW9kIGFuZCBjb2x1bW4gbmFtZXMgYXJlIGluIHRoZSBzYW1lIG5hbWVzcGFjZSAqLworY3JlYXRl IHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIGN0aWQg KGRzLCBkZSkpOworRVJST1I6ICBwZXJpb2QgbmFtZSAiY3RpZCIgY29uZmxpY3RzIHdpdGggYSBz eXN0ZW0gY29sdW1uIG5hbWUKK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwg ZGUgZGF0ZSwgcGVyaW9kIGZvciBpZCAoZHMsIGRlKSk7CitFUlJPUjogIHBlcmlvZCBuYW1lICJp ZCIgY29uZmxpY3RzIHdpdGggYSBjb2x1bW4gbmFtZQorLyogTm93IG1ha2Ugb25lIHRoYXQgd29y a3MgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVy aW9kIGZvciBwIChkcywgZGUpKTsKKy8qCisgKiBDUkVBVEUgVEFCTEUgY3VycmVudGx5IGFkZHMg YW4gQUxURVIgVEFCTEUgdG8gYWRkIHRoZSBwZXJpb2RzLCBidXQgbGV0J3MgZG8KKyAqIHNvbWUg ZXhwbGljaXQgdGVzdGluZyBhbnl3YXkKKyAqLworYWx0ZXIgdGFibGUgcHQgZHJvcCBwZXJpb2Qg Zm9yIHA7CithbHRlciB0YWJsZSBwdCBhZGQgcGVyaW9kIGZvciBzeXN0ZW1fdGltZSAoZHMsIGRl KTsKK0VSUk9SOiAgUEVSSU9EIEZPUiBTWVNURU1fVElNRSBpcyBub3Qgc3VwcG9ydGVkCithbHRl ciB0YWJsZSBwdCBhZGQgcGVyaW9kIGZvciBwIChkcywgZGUpOworLyogQ2FuJ3QgZHJvcCBpdHMg Y29sdW1ucyAqLworYWx0ZXIgdGFibGUgcHQgZHJvcCBjb2x1bW4gZHM7CitFUlJPUjogIGNhbm5v dCBkcm9wIGNvbHVtbiBkcyBvZiB0YWJsZSBwdCBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5k IG9uIGl0CitERVRBSUw6ICBwZXJpb2QgcCBvbiB0YWJsZSBwdCBkZXBlbmRzIG9uIGNvbHVtbiBk cyBvZiB0YWJsZSBwdAorSElOVDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRl cGVuZGVudCBvYmplY3RzIHRvby4KK2FsdGVyIHRhYmxlIHB0IGRyb3AgY29sdW1uIGRlOworRVJS T1I6ICBjYW5ub3QgZHJvcCBjb2x1bW4gZGUgb2YgdGFibGUgcHQgYmVjYXVzZSBvdGhlciBvYmpl Y3RzIGRlcGVuZCBvbiBpdAorREVUQUlMOiAgcGVyaW9kIHAgb24gdGFibGUgcHQgZGVwZW5kcyBv biBjb2x1bW4gZGUgb2YgdGFibGUgcHQKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBk cm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCisvKiBDYW4ndCBjaGFuZ2UgdGhlIGRhdGEg dHlwZXMgKi8KK2FsdGVyIHRhYmxlIHB0IGFsdGVyIGNvbHVtbiBkcyB0eXBlIHRpbWVzdGFtcDsK K0VSUk9SOiAgY2Fubm90IGFsdGVyIHR5cGUgb2YgYSBjb2x1bW4gdXNlZCBieSBhIHBlcmlvZAor REVUQUlMOiAgcGVyaW9kIHAgb24gdGFibGUgcHQgZGVwZW5kcyBvbiBjb2x1bW4gImRzIgorYWx0 ZXIgdGFibGUgcHQgYWx0ZXIgY29sdW1uIGRzIHR5cGUgdGltZXN0YW1wOworRVJST1I6ICBjYW5u b3QgYWx0ZXIgdHlwZSBvZiBhIGNvbHVtbiB1c2VkIGJ5IGEgcGVyaW9kCitERVRBSUw6ICBwZXJp b2QgcCBvbiB0YWJsZSBwdCBkZXBlbmRzIG9uIGNvbHVtbiAiZHMiCisvKiBjb2x1bW4vcGVyaW9k IG5hbWVzcGFjZSBjb25mbGljdHMgKi8KK2FsdGVyIHRhYmxlIHB0IGFkZCBjb2x1bW4gcCBpbnRl Z2VyOworRVJST1I6ICBjb2x1bW4gbmFtZSAicCIgY29uZmxpY3RzIHdpdGggYSBwZXJpb2QgbmFt ZQorYWx0ZXIgdGFibGUgcHQgcmVuYW1lIGNvbHVtbiBpZCB0byBwOworRVJST1I6ICBjb2x1bW4g bmFtZSAicCIgY29uZmxpY3RzIHdpdGggYSBwZXJpb2QgbmFtZQorLyogYWRkaW5nIGNvbHVtbnMg YW5kIHRoZSBwZXJpb2QgYXQgdGhlIHNhbWUgdGltZSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQg aW50ZWdlcik7CithbHRlciB0YWJsZSBwdDIgYWRkIGNvbHVtbiBkcyBkYXRlLCBhZGQgY29sdW1u IGRlIGRhdGUsIGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSk7Citkcm9wIHRhYmxlIHB0MjsKKy8q IEFtYmlndW91cyByYW5nZSB0eXBlcyByYWlzZSBhbiBlcnJvciAqLworY3JlYXRlIHR5cGUgbXlk YXRlcmFuZ2UgYXMgcmFuZ2Uoc3VidHlwZT1kYXRlKTsKK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGlu dCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK0VSUk9SOiAgYW1i aWd1b3VzIHJhbmdlIGZvciB0eXBlIGRhdGUKKy8qIFlvdSBjYW4gZ2l2ZSBhbiBleHBsaWNpdCBy YW5nZSB0eXBlICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUs IHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUgPSAnbXlkYXRlcmFuZ2UnKSk7 Citkcm9wIHR5cGUgbXlkYXRlcmFuZ2U7CitFUlJPUjogIGNhbm5vdCBkcm9wIHR5cGUgbXlkYXRl cmFuZ2UgYmVjYXVzZSBvdGhlciBvYmplY3RzIGRlcGVuZCBvbiBpdAorREVUQUlMOiAgcGVyaW9k IHAgb24gdGFibGUgcHQyIGRlcGVuZHMgb24gdHlwZSBteWRhdGVyYW5nZQorSElOVDogIFVzZSBE Uk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmplY3RzIHRvby4KK2Ryb3Ag dHlwZSBteWRhdGVyYW5nZSBjYXNjYWRlOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byBwZXJp b2QgcCBvbiB0YWJsZSBwdDIKK2Ryb3AgdGFibGUgcHQyOworY3JlYXRlIHRhYmxlIHB0MiAoaWQg aW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0 eXBlID0gJ2RhdGVyYW5nZScpKTsKKy8qIFJhbmdlIHR5cGUgaXMgbm90IGZvdW5kICovCitjcmVh dGUgdGFibGUgcHQzIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMs IGRlKSB3aXRoIChyYW5nZXR5cGUgPSAnbm90YXJhbmdlJykpOworRVJST1I6ICBSYW5nZSB0eXBl IG5vdGFyYW5nZSBub3QgZm91bmQKKy8qIFJhbmdlIHR5cGUgaXMgdGhlIHdyb25nIHR5cGUgKi8K K2NyZWF0ZSB0YWJsZSBwdDMgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBw IChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICd0c3R6cmFuZ2UnKSk7CitFUlJPUjogIFJhbmdl IHR5cGUgdHN0enJhbmdlIGRvZXMgbm90IG1hdGNoIGNvbHVtbiB0eXBlIGRhdGUKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2FuaXR5X2NoZWNrLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc2FuaXR5X2NoZWNrLm91dAppbmRleCBkOWNlOTYxYmUyLi4xZjg0 NDViNzM2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nhbml0eV9jaGVj ay5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zYW5pdHlfY2hlY2sub3V0CkBA IC0xMzYsNiArMTM2LDcgQEAgcGdfb3BjbGFzc3x0CiBwZ19vcGVyYXRvcnx0CiBwZ19vcGZhbWls eXx0CiBwZ19wYXJ0aXRpb25lZF90YWJsZXx0CitwZ19wZXJpb2R8dAogcGdfcG9saWN5fHQKIHBn X3Byb2N8dAogcGdfcHVibGljYXRpb258dApAQCAtMTY1LDYgKzE2Niw4IEBAIHBnX3R5cGV8dAog cGdfdXNlcl9tYXBwaW5nfHQKIHBvaW50X3RibHx0CiBwb2x5Z29uX3RibHx0CitwdHxmCitwdDJ8 ZgogcXVhZF9ib3hfdGJsfHQKIHF1YWRfYm94X3RibF9vcmRfc2VxMXxmCiBxdWFkX2JveF90Ymxf b3JkX3NlcTJ8ZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVs ZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggMjJiMGQzNTg0ZC4u MTEyMmEwNjhkMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVs ZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC01OCw3ICs1OCw3 IEBAIHRlc3Q6IGNyZWF0ZV9pbmRleCBjcmVhdGVfaW5kZXhfc3BnaXN0IGNyZWF0ZV92aWV3IGlu ZGV4X2luY2x1ZGluZyBpbmRleF9pbmNsdWRpCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91 cCBvZiBwYXJhbGxlbCB0ZXN0cwogIyAtLS0tLS0tLS0tCi10ZXN0OiBjcmVhdGVfYWdncmVnYXRl IGNyZWF0ZV9mdW5jdGlvbl8zIGNyZWF0ZV9jYXN0IGNvbnN0cmFpbnRzIHRyaWdnZXJzIHNlbGVj dCBpbmhlcml0IHR5cGVkX3RhYmxlIHZhY3V1bSBkcm9wX2lmX2V4aXN0cyB1cGRhdGFibGVfdmll d3Mgcm9sZWF0dHJpYnV0ZXMgY3JlYXRlX2FtIGhhc2hfZnVuYyBlcnJvcnMgaW5maW5pdGVfcmVj dXJzZQordGVzdDogY3JlYXRlX2FnZ3JlZ2F0ZSBjcmVhdGVfZnVuY3Rpb25fMyBjcmVhdGVfY2Fz dCBjb25zdHJhaW50cyB0cmlnZ2VycyBzZWxlY3QgaW5oZXJpdCB0eXBlZF90YWJsZSBwZXJpb2Rz IHZhY3V1bSBkcm9wX2lmX2V4aXN0cyB1cGRhdGFibGVfdmlld3Mgcm9sZWF0dHJpYnV0ZXMgY3Jl YXRlX2FtIGhhc2hfZnVuYyBlcnJvcnMgaW5maW5pdGVfcmVjdXJzZQogCiAjIC0tLS0tLS0tLS0K ICMgc2FuaXR5X2NoZWNrIGRvZXMgYSB2YWN1dW0sIGFmZmVjdGluZyB0aGUgc29ydCBvcmRlciBv ZiBTRUxFQ1QgKgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGVyaW9kcy5zcWwg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi42MWVhZjM1NmJjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcGVyaW9kcy5zcWwKQEAgLTAsMCArMSw2MiBAQAorLyogU3lzdGVtIHBlcmlv ZHMgYXJlIG5vdCBpbXBsZW1lbnRlZCAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBk cyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHN5c3RlbV90aW1lIChkcywgZGUpKTsKKworLyog UGVyaW9kcyBtdXN0IHNwZWNpZnkgYWN0dWFsIGNvbHVtbnMgKi8KK2NyZWF0ZSB0YWJsZSBwdCAo aWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChib2d1cywgZGUpKTsK K2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZv ciBwIChkcywgYm9ndXMpKTsKKworLyogRGF0YSB0eXBlcyBtdXN0IG1hdGNoIGV4YWN0bHkgKi8K K2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgdGltZXN0YW1wLCBwZXJp b2QgZm9yIHAgKGRzLCBkZSkpOworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyB0ZXh0 IGNvbGxhdGUgIkMiLCBkZSB0ZXh0IGNvbGxhdGUgIlBPU0lYIiwgcGVyaW9kIGZvciBwIChkcywg ZGUpKTsKKworLyogUGVyaW9kcyBtdXN0IGhhdmUgYSBkZWZhdWx0IEJUcmVlIG9wZXJhdG9yIGNs YXNzICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIHhtbCwgZGUgeG1sLCBwZXJp b2QgZm9yIHAgKGRzLCBkZSkpOworCisvKiBQZXJpb2QgYW5kIGNvbHVtbiBuYW1lcyBhcmUgaW4g dGhlIHNhbWUgbmFtZXNwYWNlICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRh dGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgY3RpZCAoZHMsIGRlKSk7CitjcmVhdGUgdGFibGUgcHQg KGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgaWQgKGRzLCBkZSkpOwor CisvKiBOb3cgbWFrZSBvbmUgdGhhdCB3b3JrcyAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRl Z2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworCisvKgorICog Q1JFQVRFIFRBQkxFIGN1cnJlbnRseSBhZGRzIGFuIEFMVEVSIFRBQkxFIHRvIGFkZCB0aGUgcGVy aW9kcywgYnV0IGxldCdzIGRvCisgKiBzb21lIGV4cGxpY2l0IHRlc3RpbmcgYW55d2F5CisgKi8K K2FsdGVyIHRhYmxlIHB0IGRyb3AgcGVyaW9kIGZvciBwOworYWx0ZXIgdGFibGUgcHQgYWRkIHBl cmlvZCBmb3Igc3lzdGVtX3RpbWUgKGRzLCBkZSk7CithbHRlciB0YWJsZSBwdCBhZGQgcGVyaW9k IGZvciBwIChkcywgZGUpOworCisvKiBDYW4ndCBkcm9wIGl0cyBjb2x1bW5zICovCithbHRlciB0 YWJsZSBwdCBkcm9wIGNvbHVtbiBkczsKK2FsdGVyIHRhYmxlIHB0IGRyb3AgY29sdW1uIGRlOwor CisvKiBDYW4ndCBjaGFuZ2UgdGhlIGRhdGEgdHlwZXMgKi8KK2FsdGVyIHRhYmxlIHB0IGFsdGVy IGNvbHVtbiBkcyB0eXBlIHRpbWVzdGFtcDsKK2FsdGVyIHRhYmxlIHB0IGFsdGVyIGNvbHVtbiBk cyB0eXBlIHRpbWVzdGFtcDsKKworLyogY29sdW1uL3BlcmlvZCBuYW1lc3BhY2UgY29uZmxpY3Rz ICovCithbHRlciB0YWJsZSBwdCBhZGQgY29sdW1uIHAgaW50ZWdlcjsKK2FsdGVyIHRhYmxlIHB0 IHJlbmFtZSBjb2x1bW4gaWQgdG8gcDsKKworLyogYWRkaW5nIGNvbHVtbnMgYW5kIHRoZSBwZXJp b2QgYXQgdGhlIHNhbWUgdGltZSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlcik7Cith bHRlciB0YWJsZSBwdDIgYWRkIGNvbHVtbiBkcyBkYXRlLCBhZGQgY29sdW1uIGRlIGRhdGUsIGFk ZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSk7Citkcm9wIHRhYmxlIHB0MjsKKworLyogQW1iaWd1b3Vz IHJhbmdlIHR5cGVzIHJhaXNlIGFuIGVycm9yICovCitjcmVhdGUgdHlwZSBteWRhdGVyYW5nZSBh cyByYW5nZShzdWJ0eXBlPWRhdGUpOworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50LCBkcyBkYXRl LCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworCisvKiBZb3UgY2FuIGdpdmUgYW4g ZXhwbGljaXQgcmFuZ2UgdHlwZSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50LCBkcyBkYXRl LCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBlID0gJ215ZGF0 ZXJhbmdlJykpOworZHJvcCB0eXBlIG15ZGF0ZXJhbmdlOworZHJvcCB0eXBlIG15ZGF0ZXJhbmdl IGNhc2NhZGU7Citkcm9wIHRhYmxlIHB0MjsKK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwgZHMg ZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICdk YXRlcmFuZ2UnKSk7CisKKy8qIFJhbmdlIHR5cGUgaXMgbm90IGZvdW5kICovCitjcmVhdGUgdGFi bGUgcHQzIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3 aXRoIChyYW5nZXR5cGUgPSAnbm90YXJhbmdlJykpOworCisvKiBSYW5nZSB0eXBlIGlzIHRoZSB3 cm9uZyB0eXBlICovCitjcmVhdGUgdGFibGUgcHQzIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUs IHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUgPSAndHN0enJhbmdlJykpOwot LSAKMi4yNi4yCgo= --00000000000029ba9305c63ba927 Content-Type: application/octet-stream; name="v6-0002-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.patch" Content-Disposition: attachment; filename="v6-0002-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kqo20y3p1 RnJvbSBjOWE1YTc4YjYxNzBjYjA2NWUwYjQ4YWJiMzcyYjI3YTEyYTY2YjM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWluYXRlZGNv bXB1dGluZy5jb20+CkRhdGU6IE1vbiwgMjggSnVuIDIwMjEgMTc6MzM6MjcgLTA3MDAKU3ViamVj dDogW1BBVENIIHY2IDIvNF0gQWRkIHRlbXBvcmFsIFBSSU1BUlkgS0VZIGFuZCBVTklRVUUgY29u c3RyYWludHMKCi0gQWRkZWQgV0lUSE9VVCBPVkVSTEFQUyB0byB0aGUgYmlzb24gZ3JhbW1hci4g V2UgcGVybWl0IGVpdGhlciByYW5nZQogIGNvbHVtbnMgb3IgUEVSSU9Ecy4KLSBUZW1wb3JhbCBQ UklNQVJZIEtFWXMgYW5kIFVOSVFVRSBjb25zdHJhaW50cyBhcmUgYmFja2VkIGJ5IEdpU1QKICBp bmRleGVzIGluc3RlYWQgb2YgQi10cmVlIGluZGV4ZXMsIHNpbmNlIHRoZXkgYXJlIGVzc2VudGlh bGx5CiAgZXhjbHVzaW9uIGNvbnN0cmFpbnRzIHdpdGggPSBmb3IgdGhlIHNjYWxhciBwYXJ0cyBv ZiB0aGUga2V5IGFuZCAmJgogIGZvciB0aGUgdGVtcG9yYWwgcGFydC4gV2l0aCBQRVJJT0RzIHdl IGluZGV4IGEgcmFuZ2UgZXhwcmVzc2lvbiB1c2luZwogIHRoZSBQRVJJT0Qgc3RhcnQgYW5kIGVu ZCBjb2x1bW5zLiBXaXRoIHJhbmdlcyB3ZSBjYW4ganVzdCBpbmRleCB0aGUKICBjb2x1bW4sIHNv IG5vIGV4cHJlc3Npb24gaXMgbmVlZGVkLgotIEFkZGVkIHBnX2luZGV4LmluZHBlcmlvZCB0byBy ZWNvcmQgd2hlbiBhIFBFUklPRCBpcyB1c2VkIGluIGFuIGluZGV4CiAgY29uc3RyYWludC4KLSBB ZGRlZCBwZ19jb25zdHJhaW50LmNvbnRlbXBvcmFsIHRvIHNheSB3aGV0aGVyIGEgY29uc3RyYWlu dCBpcyBhCiAgdGVtcG9yYWwgY29uc3RyYWludC4KLSBBZGRlZCBwZ19jb25zdHJhaW50LmNvbnBl cmlvZCB0byByZWNvcmQgdGhlIFBFUklPRCBvaWQgaWYgYSBQRVJJT0QgaXMKICB1c2VkLiBGb3Ig cmFuZ2UgY29sdW1ucyB3ZSBjYW4ganVzdCBpbmNsdWRlIHRoZSBjb2x1bW4gYXR0bnVtLCBsaWtl CiAgYW55IG90aGVyIGNvbHVtbiBhcHBlYXJpbmcgaW4gYSBjb25zdHJhaW50LgotIEFkZGVkIGRv Y3MgYW5kIHRlc3RzLgotIEFkZGVkIHBnX2R1bXAgc3VwcG9ydC4KLS0tCiBkb2Mvc3JjL3NnbWwv ZGRsLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwogZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfdGFibGUuc2dtbCAgICAgICAgICAgIHwgIDM5ICsrLQogc3JjL2JhY2tlbmQvY2F0 YWxvZy9DYXRhbG9nLnBtICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NhdGFs b2cvaGVhcC5jICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMgICAgICAgICAgICAgICAgICAgfCAgNTcgKysrLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19jb25zdHJhaW50LmMgICAgICAgICAgIHwgIDE1ICstCiBzcmMvYmFja2VuZC9jYXRhbG9n L3RvYXN0aW5nLmMgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv aW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwgIDQxICsrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDE3ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy90 cmlnZ2VyLmMgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlw ZWNtZHMuYyAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5j cy5jICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3Mu YyAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAg ICAgICAgICAgICAgICAgICB8ICAzMiArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxj bWQuYyAgICAgICAgICAgIHwgMjI4ICsrKysrKysrKysrKystCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMgICAgICAgICAgICAgfCAgNTUgKysrLQogc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvbHN5c2NhY2hlLmMgICAgICAgICAgIHwgIDI2ICsrCiBzcmMvYmFja2VuZC91dGlscy9j YWNoZS9yZWxjYWNoZS5jICAgICAgICAgICAgfCAgMjIgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICAzOSArKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmggICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJf cGdfZHVtcC5wbCAgICAgICAgICAgICAgfCAgMjIgKysKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5j ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4 LmggICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25z dHJhaW50LmggICAgICAgICAgIHwgIDEyICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0u aCAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o ICAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaCAg ICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAg ICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAgICAg ICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zYW5pdHlfY2hl Y2sub3V0ICAgIHwgICAyICsKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMu b3V0ICAgICB8IDI4NiArKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRo b3V0X292ZXJsYXBzLnNxbCAgICAgfCAyOTUgKysrKysrKysrKysrKysrKysrCiAzMyBmaWxlcyBj aGFuZ2VkLCAxMTY5IGluc2VydGlvbnMoKyksIDYwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNx bAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMvc2dtbC9kZGwu c2dtbAppbmRleCA2OTkyYzMwZGQyLi5iNWYwY2ZjYzBjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBAIC0xMTgyLDYgKzExODIs MTIgQEAgQ1JFQVRFIFRBQkxFIGJpbGxpbmdfYWRkcmVzc2VzICgKICAgICBBcHBsaWNhdGlvbiBw ZXJpb2RzIGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0ZW1wb3JhbCBwcmltYXJ5IGFuZCBmb3JlaWdu IGtleXMuCiAgICAgQW55IHRhYmxlIHdpdGggYSB0ZW1wb3JhbCBwcmltYXJ5IGtleSBpcyBhIHRl bXBvcmFsIHRhYmxlIGFuZCBzdXBwb3J0cyB0ZW1wb3JhbCB1cGRhdGUgYW5kIGRlbGV0ZSBjb21t YW5kcy4KICAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgVGVtcG9yYWwgcHJpbWFyeSBrZXlz IGVuZm9yY2UgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHJlZmVyZW50aWFsIGludGVncml0eSBjYWxs ZWQgdGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5LiBUaGV5IGhhdmUgdHdvIGtpbmRzIG9m IGVsZW1lbnQ6IGZpcnN0IG9uZSBvciBtb3JlIGNvbHVtbnMgdGhhdCBiZWhhdmUgYXMgaW4gb3Jk aW5hcnkgcHJpbWFyeSBrZXlzLCB1bmlxdWVseSBkZXRlcm1pbmlpbmcgYW4gZW50aXR5LAorICAg IGFuZCBzZWNvbmQgYSBwZXJpb2QgKG9yIHJhbmdlIGNvbHVtbikgdGhhdCBxdWFsaWZpZXMgd2hl biB0aGUgcm93IGFwcGxpZXMuIFNvIGEgdGVtcG9yYWwgcHJpbWFyeSBwZXJtaXRzIG11bHRpcGxl IHJvd3Mgd2l0aCBlcXVhbCB2YWx1ZXMgaW4gdGhlIG9yZGluYXJ5IGtleSBwYXJ0cywgYXMgbG9u ZyBhcyB0aG9zZSByb3dzIGRvbid0IGhhdmUgb3ZlcmxhcHBpbmcgcGVyaW9kcy4gRWFjaCByb3cg bWFrZXMgYSBzdGF0ZW1lbnQgYWJvdXQgdGhlIGVudGl0eSBpZGVudGlmaWVkIGJ5IHRoZSBvcmRp bmFyeSBrZXkgcGFydHMsIGJ1dCBhcHBseWluZyBvbmx5IHRvIHRoZSBzcGFuIGdpdmVuIGJ5IHRo ZSBwZXJpb2QuCisgICAgVGVtcG9yYWwgcHJpbWFyeSBrZXlzIGFyZSBlc3NlbnRpYWxseSA8bGlu ayBsaW5rZW5kPSJzcWwtY3JlYXRldGFibGUtZXhjbHVkZSI+ZXhjbHVzaW9uIGNvbnN0cmFpbnRz PC9saW5rPiB3aGVyZSB0aGUgZmlyc3Qga2V5IHBhcnRzIGFyZSBjb21wYXJlZCBmb3IgZXF1YWxp dHkgYW5kIHRoZSBsYXN0IHBhcnQgZm9yIG92ZXJsYXBzLgorICAgPC9wYXJhPgogICA8L3NlY3Qy PgogCiAgIDxzZWN0MiBpZD0iZGRsLXBlcmlvZHMtc3lzdGVtLXBlcmlvZHMiPgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3RhYmxlLnNnbWwKaW5kZXggNmYxZjlmNGJiNS4uYmNmOTM0YjRlYiAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV90YWJsZS5zZ21sCkBAIC04NSw4ICs4NSw4IEBAIFBFUklPRCBGT1IgeyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiB8IFNZ U1RFTV9UCiAKIFsgQ09OU1RSQUlOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29u c3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT4gXQogeyBDSEVDSyAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gKSBbIE5PIElOSEVSSVQgXSB8 Ci0gIFVOSVFVRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwv cmVwbGFjZWFibGU+IFssIC4uLiBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmlu ZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8Ci0gIFBSSU1BUlkgS0VZICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g KSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfcGFyYW1ldGVyczwvcmVwbGFj ZWFibGU+IHwKKyAgVU5JUVVFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVt bl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVSTEFQUyBd ICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxh Y2VhYmxlPiB8CisgIFBSSU1BUlkgS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVS TEFQUyBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8 L3JlcGxhY2VhYmxlPiB8CiAgIEVYQ0xVREUgWyBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+aW5kZXhfbWV0aG9kPC9yZXBsYWNlYWJsZT4gXSAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5leGNsdWRlX2VsZW1lbnQ8L3JlcGxhY2VhYmxlPiBXSVRIIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcGVyYXRvcjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2Vh YmxlPiBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnByZWRpY2F0ZTwv cmVwbGFjZWFibGU+ICkgXSB8CiAgIEZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBSRUZFUkVOQ0VT IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4g WywgLi4uIF0gKSBdCiAgICAgWyBNQVRDSCBGVUxMIHwgTUFUQ0ggUEFSVElBTCB8IE1BVENIIFNJ TVBMRSBdIFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZQpAQCAtMTEzLDYgKzExMywxMSBAQCBXSVRI ICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFs PC9yZXBsYWNlYWJsZT4sIFJFTQogPHBocmFzZT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+ZXhjbHVkZV9lbGVtZW50PC9yZXBsYWNlYWJsZT4gaW4gYW4gPGxpdGVyYWw+RVhDTFVERTwv bGl0ZXJhbD4gY29uc3RyYWludCBpczo8L3BocmFzZT4KIAogeyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiB8ICggPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIH0gWyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+b3BjbGFzczwvcmVwbGFjZWFibGU+IF0gWyBBU0MgfCBERVND IF0gWyBOVUxMUyB7IEZJUlNUIHwgTEFTVCB9IF0KKworPHBocmFzZT48cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBpbiBhIDxsaXRl cmFsPlBSSU1BUlkgS0VZPC9saXRlcmFsPiwgPGxpdGVyYWw+VU5JUVVFPC9saXRlcmFsPiwgb3Ig PGxpdGVyYWw+Rk9SRUlHTiBLRVk8L2xpdGVyYWw+IGNvbnN0cmFpbnQgaXM6PC9waHJhc2U+CisK KzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9jb2x1bW5fbmFtZTwvcmVwbGFj ZWFibGU+IHwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBs YWNlYWJsZT4KKwogPC9zeW5vcHNpcz4KIAogIDwvcmVmc3lub3BzaXNkaXY+CkBAIC05ODgsNyAr OTkzLDEwIEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5u dW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAKICAgICAgPHBhcmE+CiAgICAgICBB ZGRpbmcgYSB1bmlxdWUgY29uc3RyYWludCB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgdW5p cXVlIGJ0cmVlCi0gICAgICBpbmRleCBvbiB0aGUgY29sdW1uIG9yIGdyb3VwIG9mIGNvbHVtbnMg dXNlZCBpbiB0aGUgY29uc3RyYWludC4KKyAgICAgIGluZGV4IG9uIHRoZSBjb2x1bW4gb3IgZ3Jv dXAgb2YgY29sdW1ucyB1c2VkIGluIHRoZSBjb25zdHJhaW50LiBCdXQgaWYKKyAgICAgIHRoZSBj b25zdHJhaW50IGluY2x1ZGVzIGEgPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4g Y2xhdXNlLAorICAgICAgaXQgd2lsbCB1c2UgYSBHaVNUIGluZGV4IGFuZCBiZWhhdmUgbGlrZSBh IHRlbXBvcmFsIDxsaXRlcmFsPlBSSU1BUlkKKyAgICAgIEtFWTwvbGl0ZXJhbD46IHByZXZlbnRp bmcgZHVwbGljYXRlcyBvbmx5IGluIG92ZXJsYXBwaW5nIHRpbWUgcGVyaW9kcy4KICAgICAgPC9w YXJhPgogCiAgICAgIDxwYXJhPgpAQCAtMTAwNiw3ICsxMDE0LDggQEAgV0lUSCAoIE1PRFVMVVMg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFi bGU+LCBSRU0KIAogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48bGl0ZXJhbD5QUklNQVJZ IEtFWTwvbGl0ZXJhbD4gKGNvbHVtbiBjb25zdHJhaW50KTwvdGVybT4KLSAgICA8dGVybT48bGl0 ZXJhbD5QUklNQVJZIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICk8L2xpdGVyYWw+CisgICAgPHRlcm0+PGxpdGVy YWw+UFJJTUFSWSBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXQorICAgIFssIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+IFdJVEhPVVQgT1ZFUkxBUFMg XSApPC9saXRlcmFsPgogICAgIDxvcHRpb25hbD4gPGxpdGVyYWw+SU5DTFVERSAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0p PC9saXRlcmFsPiA8L29wdGlvbmFsPiAodGFibGUgY29uc3RyYWludCk8L3Rlcm0+CiAgICAgPGxp c3RpdGVtPgogICAgICA8cGFyYT4KQEAgLTEwNDAsOCArMTA0OSw4IEBAIFdJVEggKCBNT0RVTFVT IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2Vh YmxlPiwgUkVNCiAKICAgICAgPHBhcmE+CiAgICAgICBBZGRpbmcgYSA8bGl0ZXJhbD5QUklNQVJZ IEtFWTwvbGl0ZXJhbD4gY29uc3RyYWludCB3aWxsIGF1dG9tYXRpY2FsbHkKLSAgICAgIGNyZWF0 ZSBhIHVuaXF1ZSBidHJlZSBpbmRleCBvbiB0aGUgY29sdW1uIG9yIGdyb3VwIG9mIGNvbHVtbnMg dXNlZCBpbiB0aGUKLSAgICAgIGNvbnN0cmFpbnQuCisgICAgICBjcmVhdGUgYSB1bmlxdWUgYnRy ZWUgaW5kZXggKG9yIEdpU1QgaWYgdGVtcG9yYWwpIG9uIHRoZSBjb2x1bW4gb3IgZ3JvdXAgb2YK KyAgICAgIGNvbHVtbnMgdXNlZCBpbiB0aGUgY29uc3RyYWludC4KICAgICAgPC9wYXJhPgogCiAg ICAgIDxwYXJhPgpAQCAtMTA1NCw2ICsxMDYzLDI0IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVN CiAgICAgICAoZS5nLiwgPGxpdGVyYWw+RFJPUCBDT0xVTU48L2xpdGVyYWw+KSBjYW4gY2F1c2Ug Y2FzY2FkZWQgY29uc3RyYWludCBhbmQKICAgICAgIGluZGV4IGRlbGV0aW9uLgogICAgICA8L3Bh cmE+CisKKyAgICAgPHBhcmE+CisgICAgICBBIDxsaXRlcmFsPlBSSU1BUlkgS0VZPC9saXRlcmFs PiB3aXRoIGEgPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4gb3B0aW9uCisgICAg ICBpcyBhIDxlbXBoYXNpcz50ZW1wb3JhbDwvZW1waGFzaXM+IHByaW1hcnkga2V5LgorICAgICAg VGhlIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IHZhbHVlCisgICAgICBtdXN0 IGJlIGEgcGVyaW9kIG9yIHJhbmdlIHR5cGUgYW5kIGlzIHVzZWQgdG8gY29uc3RyYWluIHRoZSBy ZWNvcmQncyBhcHBsaWNhYmlsaXR5CisgICAgICB0byBqdXN0IHRoYXQgaW50ZXJ2YWwgKHVzdWFs bHkgYSByYW5nZSBvZiBkYXRlcyBvciB0aW1lc3RhbXBzKS4KKyAgICAgIFRoZSBtYWluIHBhcnQg b2YgdGhlIHByaW1hcnkga2V5IG1heSBiZSByZXBlYXRlZCBpbiBvdGhlciByb3dzIG9mIHRoZSB0 YWJsZSwKKyAgICAgIGFzIGxvbmcgYXMgcmVjb3JkcyB3aXRoIHRoZSBzYW1lIGtleSBkb24ndCBv dmVybGFwIGluIHRoZQorICAgICAgPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4g Y29sdW1uLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBBIHRlbXBvcmFsIDxs aXRlcmFsPlBSSU1BUlkgS0VZPC9saXRlcmFsPiBpcyBlbmZvcmNlZCB3aXRoIGFuCisgICAgICA8 bGl0ZXJhbD5FWENMVURFPC9saXRlcmFsPiBjb25zdHJhaW50IHJhdGhlciB0aGFuIGEgPGxpdGVy YWw+VU5JUVVFPC9saXRlcmFsPgorICAgICAgY29uc3RyYWludCwgYmFja2VkIGJ5IGEgR2lTVCBp bmRleC4gWW91IG1heSBuZWVkIHRvIGluc3RhbGwgdGhlCisgICAgICA8eHJlZiBsaW5rZW5kPSJi dHJlZS1naXN0Ii8+IGV4dGVuc2lvbiB0byBjcmVhdGUgdGVtcG9yYWwgcHJpbWFyeSBrZXlzLgor ICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL0NhdGFsb2cucG0gYi9zcmMvYmFja2VuZC9jYXRh bG9nL0NhdGFsb2cucG0KaW5kZXggNmVlZjBiYzY4MC4uOTkyZWI0YjQxNSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9DYXRhbG9nLnBtCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv Q2F0YWxvZy5wbQpAQCAtMjY2LDYgKzI2Niw3IEBAIHN1YiBQYXJzZURhdGEKIAkjIFNjYW4gdGhl IGlucHV0IGZpbGUuCiAJd2hpbGUgKDwkaWZkPikKIAl7CisJCW5leHQgaWYgL14jLzsKIAkJbXkg JGhhc2hfcmVmOwogCiAJCWlmICgvey8pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L2hlYXAuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCmluZGV4IDQ4YzcwYjY2MDUuLmVi ZTkzM2JhMTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCkBAIC0yNTU3LDYgKzI1NTcsOCBAQCBTdG9yZVJlbENo ZWNrKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY2NuYW1lLCBOb2RlICpleHByLAogCQkJCQkJ CSAgaXNfbG9jYWwsIC8qIGNvbmlzbG9jYWwgKi8KIAkJCQkJCQkgIGluaGNvdW50LCAvKiBjb25p bmhjb3VudCAqLwogCQkJCQkJCSAgaXNfbm9faW5oZXJpdCwJLyogY29ubm9pbmhlcml0ICovCisJ CQkJCQkJICBmYWxzZSwJLyogY29udGVtcG9yYWwgKi8KKwkJCQkJCQkgIEludmFsaWRPaWQsCS8q IGNvbnBlcmlvZCAqLwogCQkJCQkJCSAgaXNfaW50ZXJuYWwpOyAvKiBpbnRlcm5hbGx5IGNvbnN0 cnVjdGVkPyAqLwogCiAJcGZyZWUoY2NiaW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDUwYjdhMTZi Y2UuLmE5YzY2YzQ5MjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNs dWRlICJjYXRhbG9nL3BnX2luaGVyaXRzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNz LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgorI2luY2x1ZGUgImNhdGFsb2cv cGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ190cmlnZ2VyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCkBA IC0yMzMsMTMgKzIzNCwxNiBAQCBpbmRleF9jaGVja19wcmltYXJ5X2tleShSZWxhdGlvbiBoZWFw UmVsLAogCQlIZWFwVHVwbGUJYXR0dHVwbGU7CiAJCUZvcm1fcGdfYXR0cmlidXRlIGF0dGZvcm07 CiAKLQkJaWYgKGF0dG51bSA9PSAwKQorCQlpZiAoYXR0bnVtID09IDAgJiYgIShzdG10LT5pc3Rl bXBvcmFsICYmIGkgPiAwKSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkJIGVycm1zZygicHJpbWFyeSBrZXlzIGNh bm5vdCBiZSBleHByZXNzaW9ucyIpKSk7CiAKLQkJLyogU3lzdGVtIGF0dHJpYnV0ZXMgYXJlIG5l dmVyIG51bGwsIHNvIG5vIG5lZWQgdG8gY2hlY2sgKi8KLQkJaWYgKGF0dG51bSA8IDApCisJCS8q CisJCSAqIFN5c3RlbSBhdHRyaWJ1dGVzIGFyZSBuZXZlciBudWxsLCBzbyBubyBuZWVkIHRvIGNo ZWNrLgorCQkgKiBBbHNvIHNraXAgZXhwcmVzc2lvbnMuCisJCSAqLworCQlpZiAoYXR0bnVtIDw9 IDApCiAJCQljb250aW51ZTsKIAogCQlhdHR0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMihBVFROVU0s CkBAIC01NDUsNiArNTQ5LDcgQEAgVXBkYXRlSW5kZXhSZWxhdGlvbihPaWQgaW5kZXhvaWQsCiAJ CQkJCWJvb2wgaXNyZWFkeSkKIHsKIAlpbnQydmVjdG9yICppbmRrZXk7CisJT2lkCQkJaW5kcGVy aW9kOwogCW9pZHZlY3RvciAgKmluZGNvbGxhdGlvbjsKIAlvaWR2ZWN0b3IgICppbmRjbGFzczsK IAlpbnQydmVjdG9yICppbmRvcHRpb247CkBAIC01NjMsNiArNTY4LDcgQEAgVXBkYXRlSW5kZXhS ZWxhdGlvbihPaWQgaW5kZXhvaWQsCiAJaW5ka2V5ID0gYnVpbGRpbnQydmVjdG9yKE5VTEwsIGlu ZGV4SW5mby0+aWlfTnVtSW5kZXhBdHRycyk7CiAJZm9yIChpID0gMDsgaSA8IGluZGV4SW5mby0+ aWlfTnVtSW5kZXhBdHRyczsgaSsrKQogCQlpbmRrZXktPnZhbHVlc1tpXSA9IGluZGV4SW5mby0+ aWlfSW5kZXhBdHRyTnVtYmVyc1tpXTsKKwlpbmRwZXJpb2QgPSBpbmRleEluZm8tPmlpX1Blcmlv ZCA/ICgoUGVyaW9kICopIGluZGV4SW5mby0+aWlfUGVyaW9kKS0+b2lkIDogSW52YWxpZE9pZDsK IAlpbmRjb2xsYXRpb24gPSBidWlsZG9pZHZlY3Rvcihjb2xsYXRpb25PaWRzLCBpbmRleEluZm8t PmlpX051bUluZGV4S2V5QXR0cnMpOwogCWluZGNsYXNzID0gYnVpbGRvaWR2ZWN0b3IoY2xhc3NP aWRzLCBpbmRleEluZm8tPmlpX051bUluZGV4S2V5QXR0cnMpOwogCWluZG9wdGlvbiA9IGJ1aWxk aW50MnZlY3Rvcihjb2xvcHRpb25zLCBpbmRleEluZm8tPmlpX051bUluZGV4S2V5QXR0cnMpOwpA QCAtNjIyLDYgKzYyOCw3IEBAIFVwZGF0ZUluZGV4UmVsYXRpb24oT2lkIGluZGV4b2lkLAogCXZh bHVlc1tBbnVtX3BnX2luZGV4X2luZGlzbGl2ZSAtIDFdID0gQm9vbEdldERhdHVtKHRydWUpOwog CXZhbHVlc1tBbnVtX3BnX2luZGV4X2luZGlzcmVwbGlkZW50IC0gMV0gPSBCb29sR2V0RGF0dW0o ZmFsc2UpOwogCXZhbHVlc1tBbnVtX3BnX2luZGV4X2luZGtleSAtIDFdID0gUG9pbnRlckdldERh dHVtKGluZGtleSk7CisJdmFsdWVzW0FudW1fcGdfaW5kZXhfaW5kcGVyaW9kIC0gMV0gPSBPYmpl Y3RJZEdldERhdHVtKGluZHBlcmlvZCk7CiAJdmFsdWVzW0FudW1fcGdfaW5kZXhfaW5kY29sbGF0 aW9uIC0gMV0gPSBQb2ludGVyR2V0RGF0dW0oaW5kY29sbGF0aW9uKTsKIAl2YWx1ZXNbQW51bV9w Z19pbmRleF9pbmRjbGFzcyAtIDFdID0gUG9pbnRlckdldERhdHVtKGluZGNsYXNzKTsKIAl2YWx1 ZXNbQW51bV9wZ19pbmRleF9pbmRvcHRpb24gLSAxXSA9IFBvaW50ZXJHZXREYXR1bShpbmRvcHRp b24pOwpAQCAtMTI2Miw2ICsxMjY5LDcgQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5 KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJRGF0dW0JCWluZGNsYXNz RGF0dW0sCiAJCQkJY29sT3B0aW9uRGF0dW0sCiAJCQkJb3B0aW9uRGF0dW07CisJT2lkCQkJcGVy aW9kaWQ7CiAJb2lkdmVjdG9yICAqaW5kY2xhc3M7CiAJaW50MnZlY3RvciAqaW5kY29sb3B0aW9u czsKIAlib29sCQlpc251bGw7CkBAIC0xMjk3LDYgKzEzMDUsOSBAQCBpbmRleF9jb25jdXJyZW50 bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwKIAlB c3NlcnQoIWlzbnVsbCk7CiAJaW5kY29sb3B0aW9ucyA9IChpbnQydmVjdG9yICopIERhdHVtR2V0 UG9pbnRlcihjb2xPcHRpb25EYXR1bSk7CiAKKwkvKiBHZXQgdGhlIHBlcmlvZCAqLworCXBlcmlv ZGlkID0gb2xkSW5mby0+aWlfUGVyaW9kID8gKChQZXJpb2QgKikgb2xkSW5mby0+aWlfUGVyaW9k KS0+b2lkIDogSW52YWxpZE9pZDsKKwogCS8qIEZldGNoIG9wdGlvbnMgb2YgaW5kZXggaWYgYW55 ICovCiAJY2xhc3NUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQsIG9sZEluZGV4SWQpOwog CWlmICghSGVhcFR1cGxlSXNWYWxpZChjbGFzc1R1cGxlKSkKQEAgLTEzNDgsNiArMTM1OSw3IEBA IGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9p ZCBvbGRJbmRleElkLAogCQkJCQkJCWluZGV4RXhwcnMsCiAJCQkJCQkJaW5kZXhQcmVkcywKIAkJ CQkJCQlvbGRJbmZvLT5paV9VbmlxdWUsCisJCQkJCQkJb2xkSW5mby0+aWlfVGVtcG9yYWwsCiAJ CQkJCQkJZmFsc2UsCS8qIG5vdCByZWFkeSBmb3IgaW5zZXJ0cyAqLwogCQkJCQkJCXRydWUpOwog CkBAIC0xMzY1LDYgKzEzNzcsMTYgQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJCW5ld0luZm8tPmlpX0luZGV4 QXR0ck51bWJlcnNbaV0gPSBvbGRJbmZvLT5paV9JbmRleEF0dHJOdW1iZXJzW2ldOwogCX0KIAor CS8qIFNldCB0aGUgcGVyaW9kICovCisJaWYgKHBlcmlvZGlkID09IEludmFsaWRPaWQpCisJCW5l d0luZm8tPmlpX1BlcmlvZCA9IE5VTEw7CisJZWxzZQorCXsKKwkJUGVyaW9kICpwID0gbWFrZU5v ZGUoUGVyaW9kKTsKKwkJcC0+b2lkID0gcGVyaW9kaWQ7CisJCW5ld0luZm8tPmlpX1BlcmlvZCA9 IChOb2RlICopIHA7CisJfQorCiAJLyoKIAkgKiBOb3cgY3JlYXRlIHRoZSBuZXcgaW5kZXguCiAJ ICoKQEAgLTE4NjQsNiArMTg4Niw3IEBAIGluZGV4X2NvbmN1cnJlbnRseV9zZXRfZGVhZChPaWQg aGVhcElkLCBPaWQgaW5kZXhJZCkKICAqCQlJTkRFWF9DT05TVFJfQ1JFQVRFX1VQREFURV9JTkRF WDogdXBkYXRlIHRoZSBwZ19pbmRleCByb3cKICAqCQlJTkRFWF9DT05TVFJfQ1JFQVRFX1JFTU9W RV9PTERfREVQUzogcmVtb3ZlIGV4aXN0aW5nIGRlcGVuZGVuY2llcwogICoJCQlvZiBpbmRleCBv biB0YWJsZSdzIGNvbHVtbnMKKyAqCQlJTkRFWF9DT05TVFJfQ1JFQVRFX1RFTVBPUkFMOiBjb25z dHJhaW50IGlzIGZvciBhIHRlbXBvcmFsIHByaW1hcnkga2V5CiAgKiBhbGxvd19zeXN0ZW1fdGFi bGVfbW9kczogYWxsb3cgdGFibGUgdG8gYmUgYSBzeXN0ZW0gY2F0YWxvZwogICogaXNfaW50ZXJu YWw6IGluZGV4IGlzIGNvbnN0cnVjdGVkIGR1ZSB0byBpbnRlcm5hbCBwcm9jZXNzCiAgKi8KQEAg LTE4ODIsMTYgKzE5MDUsMTkgQEAgaW5kZXhfY29uc3RyYWludF9jcmVhdGUoUmVsYXRpb24gaGVh cFJlbGF0aW9uLAogCU9iamVjdEFkZHJlc3MgbXlzZWxmLAogCQkJCWlkeGFkZHI7CiAJT2lkCQkJ Y29uT2lkOworCU9pZAkJCXBlcmlvZGlkOwogCWJvb2wJCWRlZmVycmFibGU7CiAJYm9vbAkJaW5p dGRlZmVycmVkOwogCWJvb2wJCW1hcmtfYXNfcHJpbWFyeTsKIAlib29sCQlpc2xvY2FsOwogCWJv b2wJCW5vaW5oZXJpdDsKKwlib29sCQlpc190ZW1wb3JhbDsKIAlpbnQJCQlpbmhjb3VudDsKIAog CWRlZmVycmFibGUgPSAoY29uc3RyX2ZsYWdzICYgSU5ERVhfQ09OU1RSX0NSRUFURV9ERUZFUlJB QkxFKSAhPSAwOwogCWluaXRkZWZlcnJlZCA9IChjb25zdHJfZmxhZ3MgJiBJTkRFWF9DT05TVFJf Q1JFQVRFX0lOSVRfREVGRVJSRUQpICE9IDA7CiAJbWFya19hc19wcmltYXJ5ID0gKGNvbnN0cl9m bGFncyAmIElOREVYX0NPTlNUUl9DUkVBVEVfTUFSS19BU19QUklNQVJZKSAhPSAwOworCWlzX3Rl bXBvcmFsID0gKGNvbnN0cl9mbGFncyAmIElOREVYX0NPTlNUUl9DUkVBVEVfVEVNUE9SQUwpICE9 IDA7CiAKIAkvKiBjb25zdHJhaW50IGNyZWF0aW9uIHN1cHBvcnQgZG9lc24ndCB3b3JrIHdoaWxl IGJvb3RzdHJhcHBpbmcgKi8KIAlBc3NlcnQoIUlzQm9vdHN0cmFwUHJvY2Vzc2luZ01vZGUoKSk7 CkBAIC0xOTA2LDcgKzE5MzIsOCBAQCBpbmRleF9jb25zdHJhaW50X2NyZWF0ZShSZWxhdGlvbiBo ZWFwUmVsYXRpb24sCiAKIAkvKiBwcmltYXJ5L3VuaXF1ZSBjb25zdHJhaW50cyBzaG91bGRuJ3Qg aGF2ZSBhbnkgZXhwcmVzc2lvbnMgKi8KIAlpZiAoaW5kZXhJbmZvLT5paV9FeHByZXNzaW9ucyAm JgotCQljb25zdHJhaW50VHlwZSAhPSBDT05TVFJBSU5UX0VYQ0xVU0lPTikKKwkJY29uc3RyYWlu dFR5cGUgIT0gQ09OU1RSQUlOVF9FWENMVVNJT04gJiYKKwkJIWluZGV4SW5mby0+aWlfVGVtcG9y YWwpCiAJCWVsb2coRVJST1IsICJjb25zdHJhaW50cyBjYW5ub3QgaGF2ZSBpbmRleCBleHByZXNz aW9ucyIpOwogCiAJLyoKQEAgLTE5MzUsNiArMTk2MiwxMSBAQCBpbmRleF9jb25zdHJhaW50X2Ny ZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCW5vaW5oZXJpdCA9IHRydWU7CiAJfQogCisJ aWYgKGluZGV4SW5mby0+aWlfUGVyaW9kICE9IE5VTEwpCisJCXBlcmlvZGlkID0gKChQZXJpb2Qg KilpbmRleEluZm8tPmlpX1BlcmlvZCktPm9pZDsKKwllbHNlCisJCXBlcmlvZGlkID0gSW52YWxp ZE9pZDsKKwogCS8qCiAJICogQ29uc3RydWN0IGEgcGdfY29uc3RyYWludCBlbnRyeS4KIAkgKi8K QEAgLTE5NjYsNiArMTk5OCw4IEBAIGluZGV4X2NvbnN0cmFpbnRfY3JlYXRlKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkJCQkJCQkJICAgaXNsb2NhbCwKIAkJCQkJCQkJICAgaW5oY291bnQsCiAJ CQkJCQkJCSAgIG5vaW5oZXJpdCwKKwkJCQkJCQkJICAgaXNfdGVtcG9yYWwsCS8qIGNvbnRlbXBv cmFsICovCisJCQkJCQkJCSAgIHBlcmlvZGlkLCAvKiBjb25wZXJpb2QgKi8KIAkJCQkJCQkJICAg aXNfaW50ZXJuYWwpOwogCiAJLyoKQEAgLTIzOTgsNiArMjQzMiw3IEBAIEJ1aWxkSW5kZXhJbmZv KFJlbGF0aW9uIGluZGV4KQogCQkJCQkgICBSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnMoaW5k ZXgpLAogCQkJCQkgICBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKGluZGV4KSwKIAkJCQkJICAg aW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlLAorCQkJCQkgICBmYWxzZSwKIAkJCQkJICAgaW5kZXhT dHJ1Y3QtPmluZGlzcmVhZHksCiAJCQkJCSAgIGZhbHNlKTsKIApAQCAtMjQwNSw2ICsyNDQwLDE2 IEBAIEJ1aWxkSW5kZXhJbmZvKFJlbGF0aW9uIGluZGV4KQogCWZvciAoaSA9IDA7IGkgPCBudW1B dHRzOyBpKyspCiAJCWlpLT5paV9JbmRleEF0dHJOdW1iZXJzW2ldID0gaW5kZXhTdHJ1Y3QtPmlu ZGtleS52YWx1ZXNbaV07CiAKKwkvKiBzZXQgdGhlIHBlcmlvZCAqLworCWlmIChpbmRleFN0cnVj dC0+aW5kcGVyaW9kID09IEludmFsaWRPaWQpCisJCWlpLT5paV9QZXJpb2QgPSBOVUxMOworCWVs c2UKKwl7CisJCVBlcmlvZCAqcCA9IG1ha2VOb2RlKFBlcmlvZCk7CisJCXAtPm9pZCA9IGluZGV4 U3RydWN0LT5pbmRwZXJpb2Q7CisJCWlpLT5paV9QZXJpb2QgPSAoTm9kZSAqKSBwOworCX0KKwog CS8qIGZldGNoIGV4Y2x1c2lvbiBjb25zdHJhaW50IGluZm8gaWYgYW55ICovCiAJaWYgKGluZGV4 U3RydWN0LT5pbmRpc2V4Y2x1c2lvbikKIAl7CkBAIC0yNDU3LDYgKzI1MDIsNyBAQCBCdWlsZER1 bW15SW5kZXhJbmZvKFJlbGF0aW9uIGluZGV4KQogCQkJCQkgICBSZWxhdGlvbkdldER1bW15SW5k ZXhFeHByZXNzaW9ucyhpbmRleCksCiAJCQkJCSAgIE5JTCwKIAkJCQkJICAgaW5kZXhTdHJ1Y3Qt PmluZGlzdW5pcXVlLAorCQkJCQkgICBmYWxzZSwKIAkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlz cmVhZHksCiAJCQkJCSAgIGZhbHNlKTsKIApAQCAtMjQ2NCw2ICsyNTEwLDkgQEAgQnVpbGREdW1t eUluZGV4SW5mbyhSZWxhdGlvbiBpbmRleCkKIAlmb3IgKGkgPSAwOyBpIDwgbnVtQXR0czsgaSsr KQogCQlpaS0+aWlfSW5kZXhBdHRyTnVtYmVyc1tpXSA9IGluZGV4U3RydWN0LT5pbmRrZXkudmFs dWVzW2ldOwogCisJLyogbm8gbmVlZCBmb3IgYSBwZXJpb2QgKi8KKwlpaS0+aWlfUGVyaW9kID0g TlVMTDsKKwogCS8qIFdlIGlnbm9yZSB0aGUgZXhjbHVzaW9uIGNvbnN0cmFpbnQgaWYgYW55ICov CiAKIAlyZXR1cm4gaWk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0 cmFpbnQuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCmluZGV4IGE0ZTg5 MDAyMGYuLjc5MjdmYmRlODggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29u c3RyYWludC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCkBAIC0y NSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhY2Nlc3MuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9y LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJjb21tYW5k cy90YWJsZWNtZHMuaCIKQEAgLTc1LDYgKzc2LDggQEAgQ3JlYXRlQ29uc3RyYWludEVudHJ5KGNv bnN0IGNoYXIgKmNvbnN0cmFpbnROYW1lLAogCQkJCQkgIGJvb2wgY29uSXNMb2NhbCwKIAkJCQkJ ICBpbnQgY29uSW5oQ291bnQsCiAJCQkJCSAgYm9vbCBjb25Ob0luaGVyaXQsCisJCQkJCSAgYm9v bCBjb25UZW1wb3JhbCwKKwkJCQkJICBPaWQgcGVyaW9kLAogCQkJCQkgIGJvb2wgaXNfaW50ZXJu YWwpCiB7CiAJUmVsYXRpb24JY29uRGVzYzsKQEAgLTE4NSw2ICsxODgsOCBAQCBDcmVhdGVDb25z dHJhaW50RW50cnkoY29uc3QgY2hhciAqY29uc3RyYWludE5hbWUsCiAJdmFsdWVzW0FudW1fcGdf Y29uc3RyYWludF9jb25pc2xvY2FsIC0gMV0gPSBCb29sR2V0RGF0dW0oY29uSXNMb2NhbCk7CiAJ dmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9jb25pbmhjb3VudCAtIDFdID0gSW50MzJHZXREYXR1 bShjb25JbmhDb3VudCk7CiAJdmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9jb25ub2luaGVyaXQg LSAxXSA9IEJvb2xHZXREYXR1bShjb25Ob0luaGVyaXQpOworCXZhbHVlc1tBbnVtX3BnX2NvbnN0 cmFpbnRfY29udGVtcG9yYWwgLSAxXSA9IEJvb2xHZXREYXR1bShjb25UZW1wb3JhbCk7CisJdmFs dWVzW0FudW1fcGdfY29uc3RyYWludF9jb25wZXJpb2QgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0o cGVyaW9kKTsKIAogCWlmIChjb25rZXlBcnJheSkKIAkJdmFsdWVzW0FudW1fcGdfY29uc3RyYWlu dF9jb25rZXkgLSAxXSA9IFBvaW50ZXJHZXREYXR1bShjb25rZXlBcnJheSk7CkBAIC0yMzYsNyAr MjQxLDcgQEAgQ3JlYXRlQ29uc3RyYWludEVudHJ5KGNvbnN0IGNoYXIgKmNvbnN0cmFpbnROYW1l LAogCXsKIAkJLyoKIAkJICogUmVnaXN0ZXIgYXV0byBkZXBlbmRlbmN5IGZyb20gY29uc3RyYWlu dCB0byBvd25pbmcgcmVsYXRpb24sIG9yIHRvCi0JCSAqIHNwZWNpZmljIGNvbHVtbihzKSBpZiBh bnkgYXJlIG1lbnRpb25lZC4KKwkJICogc3BlY2lmaWMgY29sdW1uKHMpIGFuZCBwZXJpb2QgaWYg YW55IGFyZSBtZW50aW9uZWQuCiAJCSAqLwogCQlPYmplY3RBZGRyZXNzIHJlbG9iamVjdDsKIApA QCAtMjU0LDYgKzI1OSwxNCBAQCBDcmVhdGVDb25zdHJhaW50RW50cnkoY29uc3QgY2hhciAqY29u c3RyYWludE5hbWUsCiAJCQlPYmplY3RBZGRyZXNzU2V0KHJlbG9iamVjdCwgUmVsYXRpb25SZWxh dGlvbklkLCByZWxJZCk7CiAJCQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJnJlbG9iamVjdCwg YWRkcnNfYXV0byk7CiAJCX0KKworCQlpZiAoT2lkSXNWYWxpZChwZXJpb2QpKQorCQl7CisJCQlP YmplY3RBZGRyZXNzIHBlcmlvZG9iamVjdDsKKworCQkJT2JqZWN0QWRkcmVzc1NldChwZXJpb2Rv YmplY3QsIFBlcmlvZFJlbGF0aW9uSWQsIHBlcmlvZCk7CisJCQlhZGRfZXhhY3Rfb2JqZWN0X2Fk ZHJlc3MoJnBlcmlvZG9iamVjdCwgYWRkcnNfYXV0byk7CisJCX0KIAl9CiAKIAlpZiAoT2lkSXNW YWxpZChkb21haW5JZCkpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5n LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKaW5kZXggYmY4MWY2Y2NjNS4uNDg2 YTM0YjAwOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYwpAQCAtMjg3LDYgKzI4Nyw3IEBAIGNyZWF0 ZV90b2FzdF90YWJsZShSZWxhdGlvbiByZWwsIE9pZCB0b2FzdE9pZCwgT2lkIHRvYXN0SW5kZXhP aWQsCiAJaW5kZXhJbmZvLT5paV9OdW1JbmRleEtleUF0dHJzID0gMjsKIAlpbmRleEluZm8tPmlp X0luZGV4QXR0ck51bWJlcnNbMF0gPSAxOwogCWluZGV4SW5mby0+aWlfSW5kZXhBdHRyTnVtYmVy c1sxXSA9IDI7CisJaW5kZXhJbmZvLT5paV9QZXJpb2QgPSBOVUxMOwogCWluZGV4SW5mby0+aWlf RXhwcmVzc2lvbnMgPSBOSUw7CiAJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc1N0YXRlID0gTklM OwogCWluZGV4SW5mby0+aWlfUHJlZGljYXRlID0gTklMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YwppbmRleCA3Njc3NGRjZTA2Li5iMzIyYWQyMzU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YwpAQCAtODEsNiArODEsOSBAQCBzdGF0aWMgdm9pZCBDb21wdXRlSW5kZXhBdHRycyhJbmRleElu Zm8gKmluZGV4SW5mbywKIAkJCQkJCQkgIGNvbnN0IGNoYXIgKmFjY2Vzc01ldGhvZE5hbWUsIE9p ZCBhY2Nlc3NNZXRob2RJZCwKIAkJCQkJCQkgIGJvb2wgYW1jYW5vcmRlciwKIAkJCQkJCQkgIGJv b2wgaXNjb25zdHJhaW50KTsKK3N0YXRpYyB2b2lkIENvbXB1dGVJbmRleFBlcmlvZChJbmRleElu Zm8gKmluZGV4SW5mbywKKwkJCQkJCQkgICBPaWQgcmVsSWQsCisJCQkJCQkJICAgY29uc3QgY2hh ciAqcGVyaW9kTmFtZSk7CiBzdGF0aWMgY2hhciAqQ2hvb3NlSW5kZXhOYW1lKGNvbnN0IGNoYXIg KnRhYm5hbWUsIE9pZCBuYW1lc3BhY2VJZCwKIAkJCQkJCQkgTGlzdCAqY29sbmFtZXMsIExpc3Qg KmV4Y2x1c2lvbk9wTmFtZXMsCiAJCQkJCQkJIGJvb2wgcHJpbWFyeSwgYm9vbCBpc2NvbnN0cmFp bnQpOwpAQCAtMTY0LDcgKzE2Nyw4IEBAIGJvb2wKIENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBv bGRJZCwKIAkJCQkJIGNvbnN0IGNoYXIgKmFjY2Vzc01ldGhvZE5hbWUsCiAJCQkJCSBMaXN0ICph dHRyaWJ1dGVMaXN0LAotCQkJCQkgTGlzdCAqZXhjbHVzaW9uT3BOYW1lcykKKwkJCQkJIExpc3Qg KmV4Y2x1c2lvbk9wTmFtZXMsCisJCQkJCSBjb25zdCBjaGFyICppbmRleFBlcmlvZE5hbWUpCiB7 CiAJYm9vbAkJaXNjb25zdHJhaW50OwogCU9pZAkJICAgKnR5cGVPYmplY3RJZDsKQEAgLTE4Myw2 ICsxODcsOCBAQCBDaGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJaW50CQkJb2xkX25h dHRzOwogCWJvb2wJCWlzbnVsbDsKIAlib29sCQlyZXQgPSB0cnVlOworCU9pZAkJCW9sZF9wZXJp b2RpZDsKKwlPaWQJCQluZXdfcGVyaW9kaWQ7CiAJb2lkdmVjdG9yICAqb2xkX2luZGNsYXNzOwog CW9pZHZlY3RvciAgKm9sZF9pbmRjb2xsYXRpb247CiAJUmVsYXRpb24JaXJlbDsKQEAgLTIyNiw3 ICsyMzIsNyBAQCBDaGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJICogaWlfTnVtSW5k ZXhLZXlBdHRycyB3aXRoIHNhbWUgdmFsdWUuCiAJICovCiAJaW5kZXhJbmZvID0gbWFrZUluZGV4 SW5mbyhudW1iZXJPZkF0dHJpYnV0ZXMsIG51bWJlck9mQXR0cmlidXRlcywKLQkJCQkJCQkgIGFj Y2Vzc01ldGhvZElkLCBOSUwsIE5JTCwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisJCQkJCQkJICBh Y2Nlc3NNZXRob2RJZCwgTklMLCBOSUwsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKIAl0 eXBlT2JqZWN0SWQgPSAoT2lkICopIHBhbGxvYyhudW1iZXJPZkF0dHJpYnV0ZXMgKiBzaXplb2Yo T2lkKSk7CiAJY29sbGF0aW9uT2JqZWN0SWQgPSAoT2lkICopIHBhbGxvYyhudW1iZXJPZkF0dHJp YnV0ZXMgKiBzaXplb2YoT2lkKSk7CiAJY2xhc3NPYmplY3RJZCA9IChPaWQgKikgcGFsbG9jKG51 bWJlck9mQXR0cmlidXRlcyAqIHNpemVvZihPaWQpKTsKQEAgLTIzOCw2ICsyNDQsNyBAQCBDaGVj a0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJCQkJCSAgYWNjZXNzTWV0aG9kTmFtZSwgYWNj ZXNzTWV0aG9kSWQsCiAJCQkJCSAgYW1jYW5vcmRlciwgaXNjb25zdHJhaW50KTsKIAorCUNvbXB1 dGVJbmRleFBlcmlvZChpbmRleEluZm8sIHJlbGF0aW9uSWQsIGluZGV4UGVyaW9kTmFtZSk7CiAK IAkvKiBHZXQgdGhlIHNvb24tb2Jzb2xldGUgcGdfaW5kZXggdHVwbGUuICovCiAJdHVwbGUgPSBT ZWFyY2hTeXNDYWNoZTEoSU5ERVhSRUxJRCwgT2JqZWN0SWRHZXREYXR1bShvbGRJZCkpOwpAQCAt MjU3LDYgKzI2NCwxMiBAQCBDaGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJCXJldHVy biBmYWxzZTsKIAl9CiAKKwkvKiBUaGUgdHdvIGluZGV4ZXMgc2hvdWxkIGhhdmUgdGhlIHNhbWUg cGVyaW9kLiAqLworCW9sZF9wZXJpb2RpZCA9IGluZGV4Rm9ybS0+aW5kcGVyaW9kOworCW5ld19w ZXJpb2RpZCA9IGluZGV4SW5mby0+aWlfUGVyaW9kID8gKChQZXJpb2QgKikgaW5kZXhJbmZvLT5p aV9QZXJpb2QpLT5vaWQgOiBJbnZhbGlkT2lkOworCWlmIChvbGRfcGVyaW9kaWQgIT0gbmV3X3Bl cmlvZGlkKQorCQlyZXR1cm4gZmFsc2U7CisKIAkvKiBBbnkgY2hhbmdlIGluIG9wZXJhdG9yIGNs YXNzIG9yIGNvbGxhdGlvbiBicmVha3MgY29tcGF0aWJpbGl0eS4gKi8KIAlvbGRfbmF0dHMgPSBp bmRleEZvcm0tPmluZG5rZXlhdHRzOwogCUFzc2VydChvbGRfbmF0dHMgPT0gbnVtYmVyT2ZBdHRy aWJ1dGVzKTsKQEAgLTUyNSw2ICs1MzgsNyBAQCBEZWZpbmVJbmRleChPaWQgcmVsYXRpb25JZCwK IAlPaWQJCQl0YWJsZXNwYWNlSWQ7CiAJT2lkCQkJY3JlYXRlZENvbnN0cmFpbnRJZCA9IEludmFs aWRPaWQ7CiAJTGlzdAkgICAqaW5kZXhDb2xOYW1lczsKKwljaGFyCSAgICppbmRleFBlcmlvZE5h bWU7CiAJTGlzdAkgICAqYWxsSW5kZXhQYXJhbXM7CiAJUmVsYXRpb24JcmVsOwogCUhlYXBUdXBs ZQl0dXBsZTsKQEAgLTc4MSw2ICs3OTUsMTEgQEAgRGVmaW5lSW5kZXgoT2lkIHJlbGF0aW9uSWQs CiAJICovCiAJaW5kZXhDb2xOYW1lcyA9IENob29zZUluZGV4Q29sdW1uTmFtZXMoYWxsSW5kZXhQ YXJhbXMpOwogCisJLyoKKwkgKiBDaG9vc2UgdGhlIGluZGV4IHBlcmlvZCBuYW1lLgorCSAqLwor CWluZGV4UGVyaW9kTmFtZSA9IHN0bXQtPnBlcmlvZCA/IHN0bXQtPnBlcmlvZC0+cGVyaW9kbmFt ZSA6IE5VTEw7CisKIAkvKgogCSAqIFNlbGVjdCBuYW1lIGZvciBpbmRleCBpZiBjYWxsZXIgZGlk bid0IHNwZWNpZnkKIAkgKi8KQEAgLTg3Nyw2ICs4OTYsNyBAQCBEZWZpbmVJbmRleChPaWQgcmVs YXRpb25JZCwKIAkJCQkJCQkgIE5JTCwJLyogZXhwcmVzc2lvbnMsIE5JTCBmb3Igbm93ICovCiAJ CQkJCQkJICBtYWtlX2FuZHNfaW1wbGljaXQoKEV4cHIgKikgc3RtdC0+d2hlcmVDbGF1c2UpLAog CQkJCQkJCSAgc3RtdC0+dW5pcXVlLAorCQkJCQkJCSAgc3RtdC0+aXN0ZW1wb3JhbCwKIAkJCQkJ CQkgICFjb25jdXJyZW50LAogCQkJCQkJCSAgY29uY3VycmVudCk7CiAKQEAgLTg5MSw2ICs5MTEs OCBAQCBEZWZpbmVJbmRleChPaWQgcmVsYXRpb25JZCwKIAkJCQkJICBhY2Nlc3NNZXRob2ROYW1l LCBhY2Nlc3NNZXRob2RJZCwKIAkJCQkJICBhbWNhbm9yZGVyLCBzdG10LT5pc2NvbnN0cmFpbnQp OwogCisJQ29tcHV0ZUluZGV4UGVyaW9kKGluZGV4SW5mbywgcmVsYXRpb25JZCwgaW5kZXhQZXJp b2ROYW1lKTsKKwogCS8qCiAJICogRXh0cmEgY2hlY2tzIHdoZW4gY3JlYXRpbmcgYSBQUklNQVJZ IEtFWSBpbmRleC4KIAkgKi8KQEAgLTExMzMsNiArMTE1NSw4IEBAIERlZmluZUluZGV4KE9pZCBy ZWxhdGlvbklkLAogCQljb25zdHJfZmxhZ3MgfD0gSU5ERVhfQ09OU1RSX0NSRUFURV9ERUZFUlJB QkxFOwogCWlmIChzdG10LT5pbml0ZGVmZXJyZWQpCiAJCWNvbnN0cl9mbGFncyB8PSBJTkRFWF9D T05TVFJfQ1JFQVRFX0lOSVRfREVGRVJSRUQ7CisJaWYgKHN0bXQtPmlzdGVtcG9yYWwpCisJCWNv bnN0cl9mbGFncyB8PSBJTkRFWF9DT05TVFJfQ1JFQVRFX1RFTVBPUkFMOwogCiAJaW5kZXhSZWxh dGlvbklkID0KIAkJaW5kZXhfY3JlYXRlKHJlbCwgaW5kZXhSZWxhdGlvbk5hbWUsIGluZGV4UmVs YXRpb25JZCwgcGFyZW50SW5kZXhJZCwKQEAgLTIwMDQsNiArMjAyOCwxOSBAQCBDb21wdXRlSW5k ZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywKIAl9CiB9CiAKK3N0YXRpYyB2b2lkCitDb21w dXRlSW5kZXhQZXJpb2QoSW5kZXhJbmZvICppbmRleEluZm8sIE9pZCByZWxJZCwgY29uc3QgY2hh ciAqcGVyaW9kTmFtZSkKK3sKKwlpZiAocGVyaW9kTmFtZSA9PSBOVUxMKQorCQlpbmRleEluZm8t PmlpX1BlcmlvZCA9IE5VTEw7CisJZWxzZQorCXsKKwkJUGVyaW9kICpwID0gbWFrZU5vZGUoUGVy aW9kKTsKKwkJcC0+b2lkID0gZ2V0X3BlcmlvZF9vaWQocmVsSWQsIHBlcmlvZE5hbWUsIHRydWUp OworCQlpbmRleEluZm8tPmlpX1BlcmlvZCA9IChOb2RlICopIHA7CisJfQorfQorCiAvKgogICog UmVzb2x2ZSBwb3NzaWJseS1kZWZhdWx0ZWQgb3BlcmF0b3IgY2xhc3Mgc3BlY2lmaWNhdGlvbgog ICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggMWZhYTU1OTU1Mi4uNDFhYjdkYzJlYSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTIwNCw2ICsyMDQsNyBAQCB0eXBlZGVmIHN0 cnVjdCBOZXdDb25zdHJhaW50CiAJT2lkCQkJcmVmcmVsaWQ7CQkvKiBQSyByZWwsIGlmIEZPUkVJ R04gKi8KIAlPaWQJCQlyZWZpbmRpZDsJCS8qIE9JRCBvZiBQSydzIGluZGV4LCBpZiBGT1JFSUdO ICovCiAJT2lkCQkJY29uaWQ7CQkJLyogT0lEIG9mIHBnX2NvbnN0cmFpbnQgZW50cnksIGlmIEZP UkVJR04gKi8KKwlib29sCQljb250ZW1wb3JhbDsJLyogV2hldGhlciB0aGUgbmV3IGNvbnN0cmFp bnQgaXMgdGVtcG9yYWwgKi8KIAlOb2RlCSAgICpxdWFsOwkJCS8qIENoZWNrIGV4cHIgb3IgQ09O U1RSX0ZPUkVJR04gQ29uc3RyYWludCAqLwogCUV4cHJTdGF0ZSAgKnF1YWxzdGF0ZTsJCS8qIEV4 ZWN1dGlvbiBzdGF0ZSBmb3IgQ0hFQ0sgZXhwciAqLwogfSBOZXdDb25zdHJhaW50OwpAQCAtOTgy OSw2ICs5ODMwLDggQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNlZChMaXN0ICoqd3F1ZXVlLCBDb25z dHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSAgY29uaXNsb2Nh bCwJLyogaXNsb2NhbCAqLwogCQkJCQkJCQkJICBjb25pbmhjb3VudCwJLyogaW5oY291bnQgKi8K IAkJCQkJCQkJCSAgY29ubm9pbmhlcml0LCAvKiBjb25Ob0luaGVyaXQgKi8KKwkJCQkJCQkJCSAg ZmFsc2UsCS8qIGNvblRlbXBvcmFsICovCisJCQkJCQkJCQkgIEludmFsaWRPaWQsCiAJCQkJCQkJ CQkgIGZhbHNlKTsJLyogaXNfaW50ZXJuYWwgKi8KIAogCU9iamVjdEFkZHJlc3NTZXQoYWRkcmVz cywgQ29uc3RyYWludFJlbGF0aW9uSWQsIGNvbnN0ck9pZCk7CkBAIC0xMDA5Nyw2ICsxMDEwMCw4 IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZr Y29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJICBmYWxzZSwKIAkJCQkJCQkJCSAg MSwKIAkJCQkJCQkJCSAgZmFsc2UsCisJCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25UZW1wb3JhbCAq LworCQkJCQkJCQkJICBJbnZhbGlkT2lkLAogCQkJCQkJCQkJICBmYWxzZSk7CiAKIAkJCS8qCkBA IC0xMDQ5OSw2ICsxMDUwNCw4IEBAIENsb25lRmtSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBS ZWxhdGlvbiBwYXJlbnRSZWwsIFJlbGF0aW9uIHBhcnRSZWwpCiAJCQkJCQkJCSAgZmFsc2UsCS8q IGlzbG9jYWwgKi8KIAkJCQkJCQkJICAxLAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCQkgIGZhbHNl LAkvKiBjb25Ob0luaGVyaXQgKi8KKwkJCQkJCQkJICBmYWxzZSwJLyogY29uVGVtcG9yYWwgKi8K KwkJCQkJCQkJICBJbnZhbGlkT2lkLAogCQkJCQkJCQkgIHRydWUpOwogCiAJCS8qIFNldCB1cCBw YXJ0aXRpb24gZGVwZW5kZW5jaWVzIGZvciB0aGUgbmV3IGNvbnN0cmFpbnQgKi8KQEAgLTExMDMw LDYgKzExMDM3LDcgQEAgQVRFeGVjVmFsaWRhdGVDb25zdHJhaW50KExpc3QgKip3cXVldWUsIFJl bGF0aW9uIHJlbCwgY2hhciAqY29uc3RyTmFtZSwKIAkJCW5ld2Nvbi0+cmVmcmVsaWQgPSBjb24t PmNvbmZyZWxpZDsKIAkJCW5ld2Nvbi0+cmVmaW5kaWQgPSBjb24tPmNvbmluZGlkOwogCQkJbmV3 Y29uLT5jb25pZCA9IGNvbi0+b2lkOworCQkJbmV3Y29uLT5jb250ZW1wb3JhbCA9IGNvbi0+Y29u dGVtcG9yYWw7CiAJCQluZXdjb24tPnF1YWwgPSAoTm9kZSAqKSBma2NvbnN0cmFpbnQ7CiAKIAkJ CS8qIEZpbmQgb3IgY3JlYXRlIHdvcmsgcXVldWUgZW50cnkgZm9yIHRoaXMgdGFibGUgKi8KQEAg LTExMTg4LDEwICsxMTE5NiwxMiBAQCB0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChPaWQgcmVsSWQs IExpc3QgKmNvbExpc3QsCiAgKgogICoJTG9vayB1cCB0aGUgbmFtZXMsIGF0dG51bXMsIGFuZCB0 eXBlcyBvZiB0aGUgcHJpbWFyeSBrZXkgYXR0cmlidXRlcwogICoJZm9yIHRoZSBwa3JlbC4gIEFs c28gcmV0dXJuIHRoZSBpbmRleCBPSUQgYW5kIGluZGV4IG9wY2xhc3NlcyBvZiB0aGUKLSAqCWlu ZGV4IHN1cHBvcnRpbmcgdGhlIHByaW1hcnkga2V5LgorICoJaW5kZXggc3VwcG9ydGluZyB0aGUg cHJpbWFyeSBrZXkuICBJZiB0aGlzIGlzIGEgdGVtcG9yYWwgcHJpbWFyeSBrZXksCisgKglhbHNv IHNldCB0aGUgV0lUSE9VVCBPVkVSTEFQUyBhdHRyaWJ1dGUgbmFtZSwgYXR0bnVtLCBhbmQgYXR0 dHlwaWQuCiAgKgogICoJQWxsIHBhcmFtZXRlcnMgZXhjZXB0IHBrcmVsIGFyZSBvdXRwdXQgcGFy YW1ldGVycy4gIEFsc28sIHRoZSBmdW5jdGlvbgotICoJcmV0dXJuIHZhbHVlIGlzIHRoZSBudW1i ZXIgb2YgYXR0cmlidXRlcyBpbiB0aGUgcHJpbWFyeSBrZXkuCisgKglyZXR1cm4gdmFsdWUgaXMg dGhlIG51bWJlciBvZiBhdHRyaWJ1dGVzIGluIHRoZSBwcmltYXJ5IGtleSwKKyAqCW5vdCBpbmNs dWRpbmcgdGhlIFdJVEhPVVQgT1ZFUkxBUFMgaWYgYW55LgogICoKICAqCVVzZWQgd2hlbiB0aGUg Y29sdW1uIGxpc3QgaW4gdGhlIFJFRkVSRU5DRVMgc3BlY2lmaWNhdGlvbiBpcyBvbWl0dGVkLgog ICovCkBAIC0xMzQ0NSw3ICsxMzQ1NSw4IEBAIFRyeVJldXNlSW5kZXgoT2lkIG9sZElkLCBJbmRl eFN0bXQgKnN0bXQpCiAJaWYgKENoZWNrSW5kZXhDb21wYXRpYmxlKG9sZElkLAogCQkJCQkJCSBz dG10LT5hY2Nlc3NNZXRob2QsCiAJCQkJCQkJIHN0bXQtPmluZGV4UGFyYW1zLAotCQkJCQkJCSBz dG10LT5leGNsdWRlT3BOYW1lcykpCisJCQkJCQkJIHN0bXQtPmV4Y2x1ZGVPcE5hbWVzLAorCQkJ CQkJCSBzdG10LT5wZXJpb2QgPyBzdG10LT5wZXJpb2QtPnBlcmlvZG5hbWUgOiBOVUxMKSkKIAl7 CiAJCVJlbGF0aW9uCWlyZWwgPSBpbmRleF9vcGVuKG9sZElkLCBOb0xvY2spOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90cmlnZ2VyLmMKaW5kZXggMDdjNzNmMzlkZS4uNDk5MTM0ODAwYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Ry aWdnZXIuYwpAQCAtODExLDYgKzgxMSw4IEBAIENyZWF0ZVRyaWdnZXIoQ3JlYXRlVHJpZ1N0bXQg KnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJCQkJCQkgIHRydWUsIC8qIGlz bG9jYWwgKi8KIAkJCQkJCQkJCQkJICAwLAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCQkJCQkgIHRy dWUsIC8qIG5vaW5oZXJpdCAqLworCQkJCQkJCQkJCQkgIGZhbHNlLCAvKiBjb250ZW1wb3JhbCAq LworCQkJCQkJCQkJCQkgIEludmFsaWRPaWQsIC8qIGNvbnBlcmlvZCAqLwogCQkJCQkJCQkJCQkg IGlzSW50ZXJuYWwpOwkvKiBpc19pbnRlcm5hbCAqLwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRz LmMKaW5kZXggNThlYzY1YzZhZi4uYWFiNzNlYjM2NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdHlwZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5j CkBAIC0zNTY3LDYgKzM1NjcsOCBAQCBkb21haW5BZGRDb25zdHJhaW50KE9pZCBkb21haW5PaWQs IE9pZCBkb21haW5OYW1lc3BhY2UsIE9pZCBiYXNlVHlwZU9pZCwKIAkJCQkJCQkgIHRydWUsIC8q IGlzIGxvY2FsICovCiAJCQkJCQkJICAwLAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCSAgZmFsc2Us CS8qIGNvbm5vaW5oZXJpdCAqLworCQkJCQkJCSAgZmFsc2UsCS8qIGNvbnRlbXBvcmFsICovCisJ CQkJCQkJICBJbnZhbGlkT2lkLCAvKiBjb25wZXJpb2QgKi8KIAkJCQkJCQkgIGZhbHNlKTsJLyog aXNfaW50ZXJuYWwgKi8KIAlpZiAoY29uc3RyQWRkcikKIAkJT2JqZWN0QWRkcmVzc1NldCgqY29u c3RyQWRkciwgQ29uc3RyYWludFJlbGF0aW9uSWQsIGNjb2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMK aW5kZXggOWYzMDdhY2E3Yi4uNzEwNzBhYTExNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9k ZXMvY29weWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKQEAgLTMw ODQsNiArMzA4NCw3IEBAIF9jb3B5Q29uc3RyYWludChjb25zdCBDb25zdHJhaW50ICpmcm9tKQog CUNPUFlfU0NBTEFSX0ZJRUxEKGZrX2RlbF9hY3Rpb24pOwogCUNPUFlfTk9ERV9GSUVMRChvbGRf Y29ucGZlcW9wKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChvbGRfcGt0YWJsZV9vaWQpOworCUNPUFlf Tk9ERV9GSUVMRCh3aXRob3V0X292ZXJsYXBzKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChza2lwX3Zh bGlkYXRpb24pOwogCUNPUFlfU0NBTEFSX0ZJRUxEKGluaXRpYWxseV92YWxpZCk7CiAKQEAgLTM2 NzYsNiArMzY3Nyw3IEBAIF9jb3B5SW5kZXhTdG10KGNvbnN0IEluZGV4U3RtdCAqZnJvbSkKIAlD T1BZX1NDQUxBUl9GSUVMRCh1bmlxdWUpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKHByaW1hcnkpOwog CUNPUFlfU0NBTEFSX0ZJRUxEKGlzY29uc3RyYWludCk7CisJQ09QWV9TQ0FMQVJfRklFTEQoaXN0 ZW1wb3JhbCk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoZGVmZXJyYWJsZSk7CiAJQ09QWV9TQ0FMQVJf RklFTEQoaW5pdGRlZmVycmVkKTsKIAlDT1BZX1NDQUxBUl9GSUVMRCh0cmFuc2Zvcm1lZCk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25v ZGVzL21ha2VmdW5jcy5jCmluZGV4IDAxYzExMGNkMmYuLmVkOWVkNjkwNjEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21h a2VmdW5jcy5jCkBAIC03NDEsNyArNzQxLDggQEAgbWFrZV9hbmRzX2ltcGxpY2l0KEV4cHIgKmNs YXVzZSkKICAqLwogSW5kZXhJbmZvICoKIG1ha2VJbmRleEluZm8oaW50IG51bWF0dHJzLCBpbnQg bnVta2V5YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAqZXhwcmVzc2lvbnMsCi0JCQkgIExpc3QgKnBy ZWRpY2F0ZXMsIGJvb2wgdW5pcXVlLCBib29sIGlzcmVhZHksIGJvb2wgY29uY3VycmVudCkKKwkJ CSAgTGlzdCAqcHJlZGljYXRlcywgYm9vbCB1bmlxdWUsIGJvb2wgdGVtcG9yYWwsIGJvb2wgaXNy ZWFkeSwKKwkJCSAgYm9vbCBjb25jdXJyZW50KQogewogCUluZGV4SW5mbyAgKm4gPSBtYWtlTm9k ZShJbmRleEluZm8pOwogCkBAIC03NTAsNiArNzUxLDcgQEAgbWFrZUluZGV4SW5mbyhpbnQgbnVt YXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLCBMaXN0ICpleHByZXNzaW9ucywKIAlB c3NlcnQobi0+aWlfTnVtSW5kZXhLZXlBdHRycyAhPSAwKTsKIAlBc3NlcnQobi0+aWlfTnVtSW5k ZXhLZXlBdHRycyA8PSBuLT5paV9OdW1JbmRleEF0dHJzKTsKIAluLT5paV9VbmlxdWUgPSB1bmlx dWU7CisJbi0+aWlfVGVtcG9yYWwgPSB0ZW1wb3JhbDsKIAluLT5paV9SZWFkeUZvckluc2VydHMg PSBpc3JlYWR5OwogCW4tPmlpX0NvbmN1cnJlbnQgPSBjb25jdXJyZW50OwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpp bmRleCA4ODhiZGI0MTVjLi45MGZmZjA3NDA1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTQ5NCw3ICs0OTQs OCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwg TGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPG5vZGU+CVRhYmxlRWxlbWVudCBU eXBlZFRhYmxlRWxlbWVudCBDb25zdHJhaW50RWxlbSBUYWJsZUZ1bmNFbGVtZW50CiAldHlwZSA8 bm9kZT4JY29sdW1uRGVmIGNvbHVtbk9wdGlvbnMKICV0eXBlIDxkZWZlbHQ+CWRlZl9lbGVtIHJl bG9wdGlvbl9lbGVtIG9sZF9hZ2dyX2VsZW0gb3BlcmF0b3JfZGVmX2VsZW0KLSV0eXBlIDxub2Rl PglkZWZfYXJnIGNvbHVtbkVsZW0gd2hlcmVfY2xhdXNlIHdoZXJlX29yX2N1cnJlbnRfY2xhdXNl CisldHlwZSA8bm9kZT4JZGVmX2FyZyBjb2x1bW5FbGVtIHdpdGhvdXRPdmVybGFwc0NsYXVzZQor CQkJCXdoZXJlX2NsYXVzZSB3aGVyZV9vcl9jdXJyZW50X2NsYXVzZQogCQkJCWFfZXhwciBiX2V4 cHIgY19leHByIEFleHByQ29uc3QgaW5kaXJlY3Rpb25fZWwgb3B0X3NsaWNlX2JvdW5kCiAJCQkJ Y29sdW1ucmVmIGluX2V4cHIgaGF2aW5nX2NsYXVzZSBmdW5jX3RhYmxlIHhtbHRhYmxlIGFycmF5 X2V4cHIKIAkJCQlPcHRXaGVyZUNsYXVzZSBvcGVyYXRvcl9kZWZfYXJnCkBAIC0zNjI5LDYgKzM2 MzAsNyBAQCBDb2xDb25zdHJhaW50RWxlbToKIAkJCQkJbi0+Y29udHlwZSA9IENPTlNUUl9QUklN QVJZOwogCQkJCQluLT5sb2NhdGlvbiA9IEAxOwogCQkJCQluLT5rZXlzID0gTlVMTDsKKwkJCQkJ bi0+d2l0aG91dF9vdmVybGFwcyA9IE5VTEw7CiAJCQkJCW4tPm9wdGlvbnMgPSAkMzsKIAkJCQkJ bi0+aW5kZXhuYW1lID0gTlVMTDsKIAkJCQkJbi0+aW5kZXhzcGFjZSA9ICQ0OwpAQCAtMzgyOSwx OCArMzgzMSwxOSBAQCBDb25zdHJhaW50RWxlbToKIAkJCQkJbi0+aW5pdGlhbGx5X3ZhbGlkID0g IW4tPnNraXBfdmFsaWRhdGlvbjsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQotCQkJfCBV TklRVUUgJygnIGNvbHVtbkxpc3QgJyknIG9wdF9jX2luY2x1ZGUgb3B0X2RlZmluaXRpb24gT3B0 Q29uc1RhYmxlU3BhY2UKKwkJCXwgVU5JUVVFICcoJyBjb2x1bW5MaXN0IHdpdGhvdXRPdmVybGFw c0NsYXVzZSAnKScgb3B0X2NfaW5jbHVkZSBvcHRfZGVmaW5pdGlvbiBPcHRDb25zVGFibGVTcGFj ZQogCQkJCUNvbnN0cmFpbnRBdHRyaWJ1dGVTcGVjCiAJCQkJewogCQkJCQlDb25zdHJhaW50ICpu ID0gbWFrZU5vZGUoQ29uc3RyYWludCk7CiAJCQkJCW4tPmNvbnR5cGUgPSBDT05TVFJfVU5JUVVF OwogCQkJCQluLT5sb2NhdGlvbiA9IEAxOwogCQkJCQluLT5rZXlzID0gJDM7Ci0JCQkJCW4tPmlu Y2x1ZGluZyA9ICQ1OwotCQkJCQluLT5vcHRpb25zID0gJDY7CisJCQkJCW4tPndpdGhvdXRfb3Zl cmxhcHMgPSAkNDsKKwkJCQkJbi0+aW5jbHVkaW5nID0gJDY7CisJCQkJCW4tPm9wdGlvbnMgPSAk NzsKIAkJCQkJbi0+aW5kZXhuYW1lID0gTlVMTDsKLQkJCQkJbi0+aW5kZXhzcGFjZSA9ICQ3Owot CQkJCQlwcm9jZXNzQ0FTYml0cygkOCwgQDgsICJVTklRVUUiLAorCQkJCQluLT5pbmRleHNwYWNl ID0gJDg7CisJCQkJCXByb2Nlc3NDQVNiaXRzKCQ5LCBAOSwgIlVOSVFVRSIsCiAJCQkJCQkJCSAg ICZuLT5kZWZlcnJhYmxlLCAmbi0+aW5pdGRlZmVycmVkLCBOVUxMLAogCQkJCQkJCQkgICBOVUxM LCB5eXNjYW5uZXIpOwogCQkJCQkkJCA9IChOb2RlICopbjsKQEAgLTM4NjAsMTggKzM4NjMsMTkg QEAgQ29uc3RyYWludEVsZW06CiAJCQkJCQkJCSAgIE5VTEwsIHl5c2Nhbm5lcik7CiAJCQkJCSQk ID0gKE5vZGUgKiluOwogCQkJCX0KLQkJCXwgUFJJTUFSWSBLRVkgJygnIGNvbHVtbkxpc3QgJykn IG9wdF9jX2luY2x1ZGUgb3B0X2RlZmluaXRpb24gT3B0Q29uc1RhYmxlU3BhY2UKKwkJCXwgUFJJ TUFSWSBLRVkgJygnIGNvbHVtbkxpc3Qgd2l0aG91dE92ZXJsYXBzQ2xhdXNlICcpJyBvcHRfY19p bmNsdWRlIG9wdF9kZWZpbml0aW9uIE9wdENvbnNUYWJsZVNwYWNlCiAJCQkJQ29uc3RyYWludEF0 dHJpYnV0ZVNwZWMKIAkJCQl7CiAJCQkJCUNvbnN0cmFpbnQgKm4gPSBtYWtlTm9kZShDb25zdHJh aW50KTsKIAkJCQkJbi0+Y29udHlwZSA9IENPTlNUUl9QUklNQVJZOwogCQkJCQluLT5sb2NhdGlv biA9IEAxOwogCQkJCQluLT5rZXlzID0gJDQ7Ci0JCQkJCW4tPmluY2x1ZGluZyA9ICQ2OwotCQkJ CQluLT5vcHRpb25zID0gJDc7CisJCQkJCW4tPndpdGhvdXRfb3ZlcmxhcHMgPSAkNTsKKwkJCQkJ bi0+aW5jbHVkaW5nID0gJDc7CisJCQkJCW4tPm9wdGlvbnMgPSAkODsKIAkJCQkJbi0+aW5kZXhu YW1lID0gTlVMTDsKLQkJCQkJbi0+aW5kZXhzcGFjZSA9ICQ4OwotCQkJCQlwcm9jZXNzQ0FTYml0 cygkOSwgQDksICJQUklNQVJZIEtFWSIsCisJCQkJCW4tPmluZGV4c3BhY2UgPSAkOTsKKwkJCQkJ cHJvY2Vzc0NBU2JpdHMoJDEwLCBAMTAsICJQUklNQVJZIEtFWSIsCiAJCQkJCQkJCSAgICZuLT5k ZWZlcnJhYmxlLCAmbi0+aW5pdGRlZmVycmVkLCBOVUxMLAogCQkJCQkJCQkgICBOVUxMLCB5eXNj YW5uZXIpOwogCQkJCQkkJCA9IChOb2RlICopbjsKQEAgLTM4ODIsNiArMzg4Niw3IEBAIENvbnN0 cmFpbnRFbGVtOgogCQkJCQluLT5jb250eXBlID0gQ09OU1RSX1BSSU1BUlk7CiAJCQkJCW4tPmxv Y2F0aW9uID0gQDE7CiAJCQkJCW4tPmtleXMgPSBOSUw7CisJCQkJCW4tPndpdGhvdXRfb3Zlcmxh cHMgPSBOVUxMOwogCQkJCQluLT5pbmNsdWRpbmcgPSBOSUw7CiAJCQkJCW4tPm9wdGlvbnMgPSBO SUw7CiAJCQkJCW4tPmluZGV4bmFtZSA9ICQzOwpAQCAtMzk0NSw2ICszOTUwLDExIEBAIGNvbHVt bkxpc3Q6CiAJCQl8IGNvbHVtbkxpc3QgJywnIGNvbHVtbkVsZW0JCQkJeyAkJCA9IGxhcHBlbmQo JDEsICQzKTsgfQogCQk7CiAKK3dpdGhvdXRPdmVybGFwc0NsYXVzZToKKwkJCScsJyBjb2x1bW5F bGVtIFdJVEhPVVQgT1ZFUkxBUFMgeyAkJCA9ICQyOyB9CisJCQl8IC8qRU1QVFkqLyAgICAgICAg ICAgICAgIHsgJCQgPSBOVUxMOyB9CisJOworCiBjb2x1bW5FbGVtOiBDb2xJZAogCQkJCXsKIAkJ CQkJJCQgPSAoTm9kZSAqKSBtYWtlU3RyaW5nKCQxKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV91dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNt ZC5jCmluZGV4IDI1NTQwZTAxNDguLmJkZGYwZjgzNzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0 aWxjbWQuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29uc3RyYWlu dC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfb3BlcmF0b3IuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfc3RhdGlzdGljX2V4dC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5o IgogI2luY2x1ZGUgImNvbW1hbmRzL2NvbW1lbnQuaCIKQEAgLTEyOCw2ICsxMjksOCBAQCBzdGF0 aWMgTGlzdCAqZ2V0X29wY2xhc3MoT2lkIG9wY2xhc3MsIE9pZCBhY3R1YWxfZGF0YXR5cGUpOwog c3RhdGljIHZvaWQgdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50cyhDcmVhdGVTdG10Q29udGV4dCAq Y3h0KTsKIHN0YXRpYyBJbmRleFN0bXQgKnRyYW5zZm9ybUluZGV4Q29uc3RyYWludChDb25zdHJh aW50ICpjb25zdHJhaW50LAogCQkJCQkJCQkJCSAgIENyZWF0ZVN0bXRDb250ZXh0ICpjeHQpOwor c3RhdGljIGJvb2wgZmluZE5ld09yT2xkQ29sdW1uKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIGNo YXIgKmNvbG5hbWUsIGNoYXIgKip0eXBuYW1lLAorCQkJCQkJCSAgIE9pZCAqdHlwaWQpOwogc3Rh dGljIHZvaWQgdHJhbnNmb3JtRXh0ZW5kZWRTdGF0aXN0aWNzKENyZWF0ZVN0bXRDb250ZXh0ICpj eHQpOwogc3RhdGljIHZvaWQgdHJhbnNmb3JtRktDb25zdHJhaW50cyhDcmVhdGVTdG10Q29udGV4 dCAqY3h0LAogCQkJCQkJCQkgICBib29sIHNraXBWYWxpZGF0aW9uLApAQCAtMTY2OSw2ICsxNjcy LDcgQEAgZ2VuZXJhdGVDbG9uZWRJbmRleFN0bXQoUmFuZ2VWYXIgKmhlYXBSZWwsIFJlbGF0aW9u IHNvdXJjZV9pZHgsCiAJT2lkCQkJa2V5Y29sdHlwZTsKIAlEYXR1bQkJZGF0dW07CiAJYm9vbAkJ aXNudWxsOworCVBlcmlvZAkgICAqcGVyaW9kOwogCiAJaWYgKGNvbnN0cmFpbnRPaWQpCiAJCSpj b25zdHJhaW50T2lkID0gSW52YWxpZE9pZDsKQEAgLTE3MjIsMTUgKzE3MjYsMTYgQEAgZ2VuZXJh dGVDbG9uZWRJbmRleFN0bXQoUmFuZ2VWYXIgKmhlYXBSZWwsIFJlbGF0aW9uIHNvdXJjZV9pZHgs CiAJaW5kZXgtPm9sZEZpcnN0UmVsZmlsZW5vZGVTdWJpZCA9IEludmFsaWRTdWJUcmFuc2FjdGlv bklkOwogCWluZGV4LT51bmlxdWUgPSBpZHhyZWMtPmluZGlzdW5pcXVlOwogCWluZGV4LT5wcmlt YXJ5ID0gaWR4cmVjLT5pbmRpc3ByaW1hcnk7CisJaW5kZXgtPmlzdGVtcG9yYWwgPSBpZHhyZWMt PmluZGlzcHJpbWFyeSAmJiBpZHhyZWMtPmluZGlzZXhjbHVzaW9uOwogCWluZGV4LT50cmFuc2Zv cm1lZCA9IHRydWU7CS8qIGRvbid0IG5lZWQgdHJhbnNmb3JtSW5kZXhTdG10ICovCiAJaW5kZXgt PmNvbmN1cnJlbnQgPSBmYWxzZTsKIAlpbmRleC0+aWZfbm90X2V4aXN0cyA9IGZhbHNlOwogCWlu ZGV4LT5yZXNldF9kZWZhdWx0X3RibHNwYyA9IGZhbHNlOwogCiAJLyogQ29weSB0aGUgcGVyaW9k ICovCi0JUGVyaW9kICpwID0gbWFrZU5vZGUoUGVyaW9kKTsKLQlwLT5vaWQgPSBpZHhyZWMtPmlu ZHBlcmlvZDsKLQlpbmRleC0+cGVyaW9kID0gcDsKKwlwZXJpb2QgPSBtYWtlTm9kZShQZXJpb2Qp OworCXBlcmlvZC0+b2lkID0gaWR4cmVjLT5pbmRwZXJpb2Q7CisJaW5kZXgtPnBlcmlvZCA9IHBl cmlvZDsKIAogCS8qCiAJICogV2UgZG9uJ3QgdHJ5IHRvIHByZXNlcnZlIHRoZSBuYW1lIG9mIHRo ZSBzb3VyY2UgaW5kZXg7IGluc3RlYWQsIGp1c3QKQEAgLTIzMDYsNyArMjMxMSw3IEBAIHRyYW5z Zm9ybUluZGV4Q29uc3RyYWludChDb25zdHJhaW50ICpjb25zdHJhaW50LCBDcmVhdGVTdG10Q29u dGV4dCAqY3h0KQogCiAJaW5kZXggPSBtYWtlTm9kZShJbmRleFN0bXQpOwogCi0JaW5kZXgtPnVu aXF1ZSA9IChjb25zdHJhaW50LT5jb250eXBlICE9IENPTlNUUl9FWENMVVNJT04pOworCWluZGV4 LT51bmlxdWUgPSAoY29uc3RyYWludC0+Y29udHlwZSAhPSBDT05TVFJfRVhDTFVTSU9OICYmIGNv bnN0cmFpbnQtPndpdGhvdXRfb3ZlcmxhcHMgPT0gTlVMTCk7CiAJaW5kZXgtPnByaW1hcnkgPSAo Y29uc3RyYWludC0+Y29udHlwZSA9PSBDT05TVFJfUFJJTUFSWSk7CiAJaWYgKGluZGV4LT5wcmlt YXJ5KQogCXsKQEAgLTIzMjQsNiArMjMyOSw3IEBAIHRyYW5zZm9ybUluZGV4Q29uc3RyYWludChD b25zdHJhaW50ICpjb25zdHJhaW50LCBDcmVhdGVTdG10Q29udGV4dCAqY3h0KQogCQkgKi8KIAl9 CiAJaW5kZXgtPmlzY29uc3RyYWludCA9IHRydWU7CisJaW5kZXgtPmlzdGVtcG9yYWwgPSBjb25z dHJhaW50LT53aXRob3V0X292ZXJsYXBzICE9IE5VTEw7CiAJaW5kZXgtPmRlZmVycmFibGUgPSBj b25zdHJhaW50LT5kZWZlcnJhYmxlOwogCWluZGV4LT5pbml0ZGVmZXJyZWQgPSBjb25zdHJhaW50 LT5pbml0ZGVmZXJyZWQ7CiAKQEAgLTI0MTcsNiArMjQyMywxMSBAQCB0cmFuc2Zvcm1JbmRleENv bnN0cmFpbnQoQ29uc3RyYWludCAqY29uc3RyYWludCwgQ3JlYXRlU3RtdENvbnRleHQgKmN4dCkK IAkJCQkJIGVycm1zZygiaW5kZXggXCIlc1wiIGlzIG5vdCB2YWxpZCIsIGluZGV4X25hbWUpLAog CQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBjb25zdHJhaW50LT5sb2NhdGlv bikpKTsKIAorCQkvKgorCQkgKiBUb2RheSB3ZSBmb3JiaWQgbm9uLXVuaXF1ZSBpbmRleGVzLCBi dXQgd2UgY291bGQgcGVybWl0IEdpU1QKKwkJICogaW5kZXhlcyB3aG9zZSBsYXN0IGVudHJ5IGlz IGEgcmFuZ2UgdHlwZSBhbmQgdXNlIHRoYXQgdG8gY3JlYXRlIGEKKwkJICogV0lUSE9VVCBPVkVS TEFQUyBjb25zdHJhaW50IChpLmUuIGEgdGVtcG9yYWwgY29uc3RyYWludCkuCisJCSAqLwogCQlp ZiAoIWluZGV4X2Zvcm0tPmluZGlzdW5pcXVlKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVy cmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCkBAIC0yNzA0LDYgKzI3MTUsMTY2IEBA IHRyYW5zZm9ybUluZGV4Q29uc3RyYWludChDb25zdHJhaW50ICpjb25zdHJhaW50LCBDcmVhdGVT dG10Q29udGV4dCAqY3h0KQogCQkJCW5vdG51bGxjbWQtPm5hbWUgPSBwc3RyZHVwKGtleSk7CiAJ CQkJbm90bnVsbGNtZHMgPSBsYXBwZW5kKG5vdG51bGxjbWRzLCBub3RudWxsY21kKTsKIAkJCX0K KworCQkJaWYgKGNvbnN0cmFpbnQtPndpdGhvdXRfb3ZlcmxhcHMgIT0gTlVMTCkKKwkJCXsKKwkJ CQkvKgorCQkJCSAqIFdlIGFyZSBidWlsZGluZyB0aGUgaW5kZXggbGlrZSBmb3IgYW4gRVhDTFVT SU9OIGNvbnN0cmFpbnQsCisJCQkJICogc28gdXNlIHRoZSBlcXVhbGl0eSBvcGVyYXRvciBmb3Ig dGhlc2UgZWxlbWVudHMuCisJCQkJICovCisJCQkJTGlzdCAqb3BuYW1lID0gbGlzdF9tYWtlMSht YWtlU3RyaW5nKCI9IikpOworCQkJCWluZGV4LT5leGNsdWRlT3BOYW1lcyA9IGxhcHBlbmQoaW5k ZXgtPmV4Y2x1ZGVPcE5hbWVzLCBvcG5hbWUpOworCQkJfQorCQl9CisKKwkJLyoKKwkJICogQW55 dGhpbmcgaW4gd2l0aG91dF9vdmVybGFwcyBzaG91bGQgYmUgaW5jbHVkZWQsCisJCSAqIGJ1dCB3 aXRoIHRoZSBvdmVybGFwcyBvcGVyYXRvciAoJiYpIGluc3RlYWQgb2YgZXF1YWxpdHkuCisJCSAq LworCQlpZiAoY29uc3RyYWludC0+d2l0aG91dF9vdmVybGFwcyAhPSBOVUxMKSB7CisJCQkvLyBj aGFyICp3aXRob3V0X292ZXJsYXBzX3N0ciA9IG5vZGVUb1N0cmluZyhjb25zdHJhaW50LT53aXRo b3V0X292ZXJsYXBzKTsKKwkJCWNoYXIgKndpdGhvdXRfb3ZlcmxhcHNfc3RyID0gc3RyVmFsKGNv bnN0cmFpbnQtPndpdGhvdXRfb3ZlcmxhcHMpOworCQkJSW5kZXhFbGVtICppcGFyYW0gPSBtYWtl Tm9kZShJbmRleEVsZW0pOworCQkJY2hhciAgICp0eXBuYW1lOworCQkJT2lkCQl0eXBpZDsKKwor CQkJLyoKKwkJCSAqIEl0ZXJhdGUgdGhyb3VnaCB0aGUgdGFibGUncyBjb2x1bW5zCisJCQkgKiAo bGlrZSBqdXN0IGEgbGl0dGxlIGJpdCBhYm92ZSkuCisJCQkgKiBJZiB3ZSBmaW5kIG9uZSB3aG9z ZSBuYW1lIGlzIHRoZSBzYW1lIGFzIHdpdGhvdXRfb3ZlcmxhcHMsCisJCQkgKiB2YWxpZGF0ZSB0 aGF0IGl0J3MgYSByYW5nZSB0eXBlLgorCQkJICoKKwkJCSAqIE90aGVyd2lzZSBpdGVyYXRlIHRo cm91Z2ggdGhlIHRhYmxlJ3Mgbm9uLXN5c3RlbSBQRVJJT0RzLAorCQkJICogYW5kIGlmIHdlIGZp bmQgb25lIHRoZW4gdXNlIGl0cyBzdGFydC9lbmQgY29sdW1ucworCQkJICogdG8gY29uc3RydWN0 IGEgcmFuZ2UgZXhwcmVzc2lvbi4KKwkJCSAqCisJCQkgKiBPdGhlcndpc2UgcmVwb3J0IGFuIGVy cm9yLgorCQkJICovCisKKwkJCWlmIChmaW5kTmV3T3JPbGRDb2x1bW4oY3h0LCB3aXRob3V0X292 ZXJsYXBzX3N0ciwgJnR5cG5hbWUsICZ0eXBpZCkpCisJCQl7CisJCQkJaWYgKHR5cGVfaXNfcmFu Z2UodHlwaWQpKQorCQkJCXsKKwkJCQkJQWx0ZXJUYWJsZUNtZCAqbm90bnVsbGNtZDsKKworCQkJ CQlpcGFyYW0tPm5hbWUgPSBwc3RyZHVwKHdpdGhvdXRfb3ZlcmxhcHNfc3RyKTsKKwkJCQkJaXBh cmFtLT5leHByID0gTlVMTDsKKworCQkJCQkvKgorCQkJCQkgKiBGb3JjZSB0aGUgY29sdW1uIHRv IE5PVCBOVUxMIHNpbmNlIGl0IGlzIHBhcnQgb2YgdGhlIHByaW1hcnkga2V5LgorCQkJCQkgKi8K KwkJCQkJbm90bnVsbGNtZCA9IG1ha2VOb2RlKEFsdGVyVGFibGVDbWQpOworCisJCQkJCW5vdG51 bGxjbWQtPnN1YnR5cGUgPSBBVF9TZXROb3ROdWxsOworCQkJCQlub3RudWxsY21kLT5uYW1lID0g cHN0cmR1cCh3aXRob3V0X292ZXJsYXBzX3N0cik7CisJCQkJCW5vdG51bGxjbWRzID0gbGFwcGVu ZChub3RudWxsY21kcywgbm90bnVsbGNtZCk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJ CQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIG5hbWVkIGluIFdJVEhPVVQgT1ZFUkxBUFMgaXMg bm90IGEgcmFuZ2UgdHlwZSIsCisJCQkJCQkJCQl3aXRob3V0X292ZXJsYXBzX3N0cikpKTsKKwkJ CX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkvKiBMb29rIGZvciBhIFBFUklPRCwgZmlyc3QgbmV3bHkt ZGVmaW5lZCAqLworCQkJCWNoYXIgKnN0YXJ0Y29sbmFtZSA9IE5VTEw7CisJCQkJY2hhciAqZW5k Y29sbmFtZSA9IE5VTEw7CisJCQkJTGlzdENlbGwgKnBlcmlvZHMgPSBOVUxMOworCQkJCWZvcmVh Y2gocGVyaW9kcywgY3h0LT5wZXJpb2RzKQorCQkJCXsKKwkJCQkJUGVyaW9kICpwZXJpb2QgPSBj YXN0Tm9kZShQZXJpb2QsIGxmaXJzdChwZXJpb2RzKSk7CisJCQkJCWlmIChzdHJjbXAocGVyaW9k LT5wZXJpb2RuYW1lLCB3aXRob3V0X292ZXJsYXBzX3N0cikgPT0gMCkKKwkJCQkJeworCQkJCQkJ c3RhcnRjb2xuYW1lID0gcGVyaW9kLT5zdGFydGNvbG5hbWU7CisJCQkJCQllbmRjb2xuYW1lID0g cGVyaW9kLT5lbmRjb2xuYW1lOworCQkJCQkJLyogVGhlIHBlcmlvZCBoYXMgbm8gb2lkIHlldCwg YnV0IHRyYW5zZm9ybUluZGV4U3RtdCB3aWxsIGxvb2sgaXQgdXAgKi8KKwkJCQkJCWluZGV4LT5w ZXJpb2QgPSBwZXJpb2Q7CisJCQkJCQlpbmRleC0+cGVyaW9kLT5vaWQgPSBJbnZhbGlkT2lkOwor CQkJCQkJaW5kZXgtPnBlcmlvZC0+cGVyaW9kbmFtZSA9IHdpdGhvdXRfb3ZlcmxhcHNfc3RyOwor CQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisKKwkJCQlpZiAoc3RhcnRjb2xuYW1lID09IE5V TEwgJiYgY3h0LT5yZWwpCisJCQkJeworCQkJCQkvKiBMb29rIGZvciBhbiBhbHJlYWR5LWV4aXN0 aW5nIFBFUklPRCAqLworCQkJCQkvLyBUT0RPOiBsb2NraW5nPyByZWxlYXNpbmc/CisJCQkJCUhl YXBUdXBsZSBwZXJUdXBsZTsKKwkJCQkJT2lkIHJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChjeHQt PnJlbCk7CisJCQkJCXBlclR1cGxlID0gU2VhcmNoU3lzQ2FjaGUyKFBFUklPRE5BTUUsCisJCQkJ CQkJT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCisJCQkJCQkJUG9pbnRlckdldERhdHVtKHdpdGhv dXRfb3ZlcmxhcHNfc3RyKSk7CisJCQkJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHBlclR1cGxlKSkK KwkJCQkJeworCQkJCQkJRm9ybV9wZ19wZXJpb2QgcGVyID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRT VFJVQ1QocGVyVHVwbGUpOworCQkJCQkJc3RhcnRjb2xuYW1lID0gZ2V0X2F0dG5hbWUocmVsaWQs IHBlci0+cGVyc3RhcnQsIGZhbHNlKTsKKwkJCQkJCWVuZGNvbG5hbWUgPSBnZXRfYXR0bmFtZShy ZWxpZCwgcGVyLT5wZXJlbmQsIGZhbHNlKTsKKwkJCQkJCWluZGV4LT5wZXJpb2QgPSBtYWtlTm9k ZShQZXJpb2QpOworCQkJCQkJaW5kZXgtPnBlcmlvZC0+b2lkID0gcGVyLT5vaWQ7CisJCQkJCQlp bmRleC0+cGVyaW9kLT5wZXJpb2RuYW1lID0gd2l0aG91dF9vdmVybGFwc19zdHI7CisKKwkJCQkJ CVJlbGVhc2VTeXNDYWNoZShwZXJUdXBsZSk7CisJCQkJCX0KKwkJCQl9CisJCQkJaWYgKHN0YXJ0 Y29sbmFtZSAhPSBOVUxMKQorCQkJCXsKKwkJCQkJQ29sdW1uUmVmICpzdGFydCwgKmVuZDsKKwkJ CQkJT2lkIHJuZ3R5cGlkOworCQkJCQljaGFyICpyYW5nZV90eXBlX25hbWU7CisKKwkJCQkJaWYg KCFmaW5kTmV3T3JPbGRDb2x1bW4oY3h0LCBzdGFydGNvbG5hbWUsICZ0eXBuYW1lLCAmdHlwaWQp KQorCQkJCQkJZWxvZyhFUlJPUiwgIk1pc3Npbmcgc3RhcnRjb2wgJXMgZm9yIHBlcmlvZCAlcyIs CisJCQkJCQkJIHN0YXJ0Y29sbmFtZSwgd2l0aG91dF9vdmVybGFwc19zdHIpOworCQkJCQlpZiAo IWZpbmROZXdPck9sZENvbHVtbihjeHQsIGVuZGNvbG5hbWUsICZ0eXBuYW1lLCAmdHlwaWQpKQor CQkJCQkJZWxvZyhFUlJPUiwgIk1pc3NpbmcgZW5kY29sICVzIGZvciBwZXJpb2QgJXMiLAorCQkJ CQkJCSBlbmRjb2xuYW1lLCB3aXRob3V0X292ZXJsYXBzX3N0cik7CisKKwkJCQkJLyogVXNlIHRo ZSBzdGFydC9lbmQgY29sdW1ucyAqLworCisJCQkJCXN0YXJ0ID0gbWFrZU5vZGUoQ29sdW1uUmVm KTsKKwkJCQkJc3RhcnQtPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhzdGFydGNvbG5h bWUpKTsKKwkJCQkJc3RhcnQtPmxvY2F0aW9uID0gY29uc3RyYWludC0+bG9jYXRpb247CisKKwkJ CQkJZW5kID0gbWFrZU5vZGUoQ29sdW1uUmVmKTsKKwkJCQkJZW5kLT5maWVsZHMgPSBsaXN0X21h a2UxKG1ha2VTdHJpbmcoZW5kY29sbmFtZSkpOworCQkJCQllbmQtPmxvY2F0aW9uID0gY29uc3Ry YWludC0+bG9jYXRpb247CisKKwkJCQkJcm5ndHlwaWQgPSBnZXRfc3VidHlwZV9yYW5nZSh0eXBp ZCk7CisJCQkJCWlmIChybmd0eXBpZCA9PSBJbnZhbGlkT2lkKQorCQkJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkJCQkJ IGVycm1zZygiUEVSSU9EIFwiJXNcIiBjYW5ub3QgYmUgdXNlZCBpbiBhIGNvbnN0cmFpbnQgd2l0 aG91dCBhIGNvcnJlc3BvbmRpbmcgcmFuZ2UgdHlwZSIsCisJCQkJCQkJCQkJd2l0aG91dF9vdmVy bGFwc19zdHIpKSk7CisKKwkJCQkJcmFuZ2VfdHlwZV9uYW1lID0gZ2V0X3R5cG5hbWUocm5ndHlw aWQpOworCisJCQkJCS8qIEJ1aWxkIGEgcmFuZ2UgdG8gcmVwcmVzZW50IHRoZSBQRVJJT0QuICov CisJCQkJCWlwYXJhbS0+bmFtZSA9IE5VTEw7CisJCQkJCWlwYXJhbS0+ZXhwciA9IChOb2RlICop IG1ha2VGdW5jQ2FsbChTeXN0ZW1GdW5jTmFtZShyYW5nZV90eXBlX25hbWUpLAorCQkJCQkJCQkJ CQkJCQkgbGlzdF9tYWtlMihzdGFydCwgZW5kKSwKKwkJCQkJCQkJCQkJCQkJIENPRVJDRV9FWFBM SUNJVF9DQUxMLAorCQkJCQkJCQkJCQkJCQkgLTEpOworCQkJCX0KKwkJCQllbHNlCisJCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwK KwkJCQkJCQkgZXJybXNnKCJyYW5nZSBvciBQRVJJT0QgXCIlc1wiIG5hbWVkIGluIFdJVEhPVVQg T1ZFUkxBUFMgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJCQkJd2l0aG91dF9vdmVybGFwc19zdHIp KSk7CisJCQl9CisJCQl7CisJCQkJaXBhcmFtLT5pbmRleGNvbG5hbWUgPSBOVUxMOworCQkJCWlw YXJhbS0+Y29sbGF0aW9uID0gTklMOworCQkJCWlwYXJhbS0+b3BjbGFzcyA9IE5JTDsKKwkJCQlp cGFyYW0tPm9yZGVyaW5nID0gU09SVEJZX0RFRkFVTFQ7CisJCQkJaXBhcmFtLT5udWxsc19vcmRl cmluZyA9IFNPUlRCWV9OVUxMU19ERUZBVUxUOworCQkJCWluZGV4LT5pbmRleFBhcmFtcyA9IGxh cHBlbmQoaW5kZXgtPmluZGV4UGFyYW1zLCBpcGFyYW0pOworCisJCQkJaW5kZXgtPmV4Y2x1ZGVP cE5hbWVzID0gbGFwcGVuZChpbmRleC0+ZXhjbHVkZU9wTmFtZXMsCisJCQkJCQkJCQkJCQlsaXN0 X21ha2UxKG1ha2VTdHJpbmcoIiYmIikpKTsKKwkJCQlpbmRleC0+YWNjZXNzTWV0aG9kID0gImdp c3QiOworCQkJCWNvbnN0cmFpbnQtPmFjY2Vzc19tZXRob2QgPSAiZ2lzdCI7CisJCQl9CiAJCX0K IAl9CiAKQEAgLTI4MjQsNiArMjk5NSw1NSBAQCB0cmFuc2Zvcm1JbmRleENvbnN0cmFpbnQoQ29u c3RyYWludCAqY29uc3RyYWludCwgQ3JlYXRlU3RtdENvbnRleHQgKmN4dCkKIAlyZXR1cm4gaW5k ZXg7CiB9CiAKKy8qCisgKiBUcmllcyB0byBmaW5kIGEgY29sdW1uIGJ5IG5hbWUgYW1vbmcgdGhl IGV4aXN0aW5nIG9uZXMgKGlmIGl0J3MgYW4gQUxURVIgVEFCTEUpCisgKiBhbmQgdGhlIG5ldyBv bmVzLiBTZXRzIHR5cG5hbWUgYW5kIHR5cGlkIGlmIG9uZSBpcyBmb3VuZC4gUmV0dXJucyBmYWxz ZSBpZiB3ZQorICogY291bGRuJ3QgZmluZCBhIG1hdGNoLgorICovCitzdGF0aWMgYm9vbAorZmlu ZE5ld09yT2xkQ29sdW1uKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIGNoYXIgKmNvbG5hbWUsIGNo YXIgKip0eXBuYW1lLCBPaWQgKnR5cGlkKQoreworCS8qIENoZWNrIHRoZSBuZXcgY29sdW1ucyBm aXJzdCBpbiBjYXNlIHRoZWlyIHR5cGUgaXMgY2hhbmdpbmcuICovCisKKwlDb2x1bW5EZWYgICpj b2x1bW4gPSBOVUxMOworCUxpc3RDZWxsICAgKmNvbHVtbnM7CisKKwlmb3JlYWNoKGNvbHVtbnMs IGN4dC0+Y29sdW1ucykKKwl7CisJCWNvbHVtbiA9IGxmaXJzdF9ub2RlKENvbHVtbkRlZiwgY29s dW1ucyk7CisJCWlmIChzdHJjbXAoY29sdW1uLT5jb2xuYW1lLCBjb2xuYW1lKSA9PSAwKQorCQl7 CisJCQkqdHlwaWQgPSB0eXBlbmFtZVR5cGVJZChOVUxMLCBjb2x1bW4tPnR5cGVOYW1lKTsKKwkJ CSp0eXBuYW1lID0gVHlwZU5hbWVUb1N0cmluZyhjb2x1bW4tPnR5cGVOYW1lKTsKKwkJCXJldHVy biB0cnVlOworCQl9CisJfQorCisJLy8gVE9ETzogc2hvdWxkIEkgY29uc2lkZXIgRFJPUCBDT0xV TU4/CisKKwkvKiBMb29rIHVwIGNvbHVtbnMgb24gZXhpc3RpbmcgdGFibGUuICovCisKKwlpZiAo Y3h0LT5pc2FsdGVyKQorCXsKKwkJUmVsYXRpb24gcmVsID0gY3h0LT5yZWw7CisJCWZvciAoaW50 IGkgPSAwOyBpIDwgcmVsLT5yZF9hdHQtPm5hdHRzOyBpKyspCisJCXsKKwkJCUZvcm1fcGdfYXR0 cmlidXRlIGF0dHIgPSBUdXBsZURlc2NBdHRyKHJlbC0+cmRfYXR0LCBpKTsKKwkJCWNvbnN0IGNo YXIgKmF0dG5hbWUgPSBOYW1lU3RyKGF0dHItPmF0dG5hbWUpOworCQkJaWYgKHN0cmNtcChhdHRu YW1lLCBjb2xuYW1lKSA9PSAwKQorCQkJeworCQkJCVR5cGUgdHlwZSA9IHR5cGVpZFR5cGUoYXR0 ci0+YXR0dHlwaWQpOworCQkJCSp0eXBpZCA9IGF0dHItPmF0dHR5cGlkOworCQkJCSp0eXBuYW1l ID0gcHN0cmR1cCh0eXBlVHlwZU5hbWUodHlwZSkpOworCQkJCVJlbGVhc2VTeXNDYWNoZSh0eXBl KTsKKwkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJfQorCX0KKworCXJldHVybiBmYWxzZTsKK30K KwogLyoKICAqIHRyYW5zZm9ybUV4dGVuZGVkU3RhdGlzdGljcwogICogICAgIEhhbmRsZSBleHRl bmRlZCBzdGF0aXN0aWMgb2JqZWN0cwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDM3 MTk3NTVhMGQuLjM4YWIzMTAxMjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9y dWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTMz Miw4ICszMzIsOCBAQCBzdGF0aWMgY2hhciAqZGVwYXJzZV9leHByZXNzaW9uX3ByZXR0eShOb2Rl ICpleHByLCBMaXN0ICpkcGNvbnRleHQsCiBzdGF0aWMgY2hhciAqcGdfZ2V0X3ZpZXdkZWZfd29y a2VyKE9pZCB2aWV3b2lkLAogCQkJCQkJCQkgICBpbnQgcHJldHR5RmxhZ3MsIGludCB3cmFwQ29s dW1uKTsKIHN0YXRpYyBjaGFyICpwZ19nZXRfdHJpZ2dlcmRlZl93b3JrZXIoT2lkIHRyaWdpZCwg Ym9vbCBwcmV0dHkpOwotc3RhdGljIGludAlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERh dHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lkIHJlbElkLAotCQkJCQkJCQkJCSBTdHJpbmdJbmZv IGJ1Zik7CitzdGF0aWMgaW50CWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0gY29s dW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsIE9pZCBpbmRleElkLAorCQkJCQkJCQkJCSBib29s IHdpdGhvdXRPdmVybGFwcywgT2lkIHBlcmlvZGlkLCBTdHJpbmdJbmZvIGJ1Zik7CiBzdGF0aWMg Y2hhciAqcGdfZ2V0X3J1bGVkZWZfd29ya2VyKE9pZCBydWxlb2lkLCBpbnQgcHJldHR5RmxhZ3Mp Owogc3RhdGljIGNoYXIgKnBnX2dldF9pbmRleGRlZl93b3JrZXIoT2lkIGluZGV4cmVsaWQsIGlu dCBjb2xubywKIAkJCQkJCQkJCWNvbnN0IE9pZCAqZXhjbHVkZU9wcywKQEAgLTIxOTQsNyArMjE5 NCw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29s IGZ1bGxDb21tYW5kLAogCQkJCQllbG9nKEVSUk9SLCAibnVsbCBjb25rZXkgZm9yIGNvbnN0cmFp bnQgJXUiLAogCQkJCQkJIGNvbnN0cmFpbnRJZCk7CiAKLQkJCQlkZWNvbXBpbGVfY29sdW1uX2lu ZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsICZidWYpOworCQkJCWRlY29tcGlsZV9j b2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgY29uRm9ybS0+Y29uaW5k aWQsIGZhbHNlLCBJbnZhbGlkT2lkLCAmYnVmKTsKIAogCQkJCS8qIGFkZCBmb3JlaWduIHJlbGF0 aW9uIG5hbWUgKi8KIAkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICIpIFJFRkVSRU5DRVMgJXMo IiwKQEAgLTIyMDgsNyArMjIwOCw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQg Y29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCQllbG9nKEVSUk9SLCAibnVsbCBj b25ma2V5IGZvciBjb25zdHJhaW50ICV1IiwKIAkJCQkJCSBjb25zdHJhaW50SWQpOwogCi0JCQkJ ZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbmZyZWxpZCwgJmJ1 Zik7CisJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbmZy ZWxpZCwgY29uRm9ybS0+Y29uaW5kaWQsIGZhbHNlLCBJbnZhbGlkT2lkLCAmYnVmKTsKIAogCQkJ CWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAKQEAgLTIzMDksMTIgKzIzMDksMTcg QEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVs bENvbW1hbmQsCiAJCQkJCWVsb2coRVJST1IsICJudWxsIGNvbmtleSBmb3IgY29uc3RyYWludCAl dSIsCiAJCQkJCQkgY29uc3RyYWludElkKTsKIAotCQkJCWtleWF0dHMgPSBkZWNvbXBpbGVfY29s dW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsICZidWYpOworCQkJCS8qCisJ CQkJICogSWYgaXQgaGFzIGV4Y2x1c2lvbi1zdHlsZSBvcGVyYXRvciBPSURzCisJCQkJICogdGhl biBpdCB1c2VzIFdJVEhPVVQgT1ZFUkxBUFMuCisJCQkJICovCisJCQkJaW5kZXhJZCA9IGNvbkZv cm0tPmNvbmluZGlkOworCQkJCVN5c0NhY2hlR2V0QXR0cihDT05TVFJPSUQsIHR1cCwKKwkJCQkJ CSAgQW51bV9wZ19jb25zdHJhaW50X2NvbmV4Y2xvcCwgJmlzbnVsbCk7CisJCQkJa2V5YXR0cyA9 IGRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgaW5k ZXhJZCwgIWlzbnVsbCwgSW52YWxpZE9pZCwgJmJ1Zik7CiAKIAkJCQlhcHBlbmRTdHJpbmdJbmZv Q2hhcigmYnVmLCAnKScpOwogCi0JCQkJaW5kZXhJZCA9IGNvbkZvcm0tPmNvbmluZGlkOwotCiAJ CQkJLyogQnVpbGQgaW5jbHVkaW5nIGNvbHVtbiBsaXN0IChmcm9tIHBnX2luZGV4LmluZGtleXMp ICovCiAJCQkJaW5kdHVwID0gU2VhcmNoU3lzQ2FjaGUxKElOREVYUkVMSUQsIE9iamVjdElkR2V0 RGF0dW0oaW5kZXhJZCkpOwogCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChpbmR0dXApKQpAQCAt MjUxMCw4ICsyNTE1LDggQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJh aW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAgKiBvZiBrZXlzLgogICovCiBzdGF0aWMgaW50Ci1k ZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lk IHJlbElkLAotCQkJCQkJCSBTdHJpbmdJbmZvIGJ1ZikKK2RlY29tcGlsZV9jb2x1bW5faW5kZXhf YXJyYXkoRGF0dW0gY29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsIE9pZCBpbmRleElkLAor CQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgT2lkIHBlcmlvZGlkLCBTdHJpbmdJbmZvIGJ1 ZikKIHsKIAlEYXR1bQkgICAqa2V5czsKIAlpbnQJCQluS2V5czsKQEAgLTI1MjUsMTEgKzI1MzAs NDEgQEAgZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJy YXksIE9pZCByZWxJZCwKIAlmb3IgKGogPSAwOyBqIDwgbktleXM7IGorKykKIAl7CiAJCWNoYXIJ ICAgKmNvbE5hbWU7CisJCWludAkJCWNvbGlkID0gRGF0dW1HZXRJbnQxNihrZXlzW2pdKTsKKwor CQkvKiBUaGUga2V5IG1pZ2h0IGNvbnRhaW4gYSBQRVJJT0QgaW5zdGVhZCBvZiBhbiBhdHRyaWJ1 dGUgKi8KKwkJaWYgKGNvbGlkID09IDApCisJCXsKKwkJCS8qIEZpcnN0IHRyeSB0aGUgZ2l2ZW4g cGVyaW9kaWQsIHRoZW4gZmFsbCBiYWNrIG9uIHRoZSBpbmRleCAqLworCQkJaWYgKHBlcmlvZGlk ID09IEludmFsaWRPaWQpCisJCQl7CisJCQkJSGVhcFR1cGxlIGluZHR1cDsKKwkJCQlib29sIGlz bnVsbDsKKwkJCQlEYXR1bSBwZXJpb2RpZERhdHVtOworCisJCQkJaW5kdHVwID0gU2VhcmNoU3lz Q2FjaGUxKElOREVYUkVMSUQsIE9iamVjdElkR2V0RGF0dW0oaW5kZXhJZCkpOworCQkJCWlmICgh SGVhcFR1cGxlSXNWYWxpZChpbmR0dXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3Vw IGZhaWxlZCBmb3IgaW5kZXggJXUiLCBpbmRleElkKTsKIAotCQljb2xOYW1lID0gZ2V0X2F0dG5h bWUocmVsSWQsIERhdHVtR2V0SW50MTYoa2V5c1tqXSksIGZhbHNlKTsKKwkJCQlwZXJpb2RpZERh dHVtID0gU3lzQ2FjaGVHZXRBdHRyKElOREVYUkVMSUQsIGluZHR1cCwKKwkJCQkJCQkJCQkgICBB bnVtX3BnX2luZGV4X2luZHBlcmlvZCwgJmlzbnVsbCk7CisJCQkJaWYgKGlzbnVsbCkKKwkJCQkJ ZWxvZyhFUlJPUiwgIm1pc3NpbmcgcGVyaW9kIGZvciBpbmRleCAldSIsIGluZGV4SWQpOworCisJ CQkJcGVyaW9kaWQgPSBEYXR1bUdldE9iamVjdElkKHBlcmlvZGlkRGF0dW0pOworCQkJCVJlbGVh c2VTeXNDYWNoZShpbmR0dXApOworCQkJfQorCQkJY29sTmFtZSA9IGdldF9wZXJpb2RuYW1lKHBl cmlvZGlkLCBmYWxzZSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQljb2xOYW1lID0gZ2V0X2F0dG5h bWUocmVsSWQsIGNvbGlkLCBmYWxzZSk7CisJCX0KIAogCQlpZiAoaiA9PSAwKQogCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZyhidWYsIHF1b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOworCQllbHNl IGlmICh3aXRob3V0T3ZlcmxhcHMgJiYgaiA9PSBuS2V5cyAtIDEpCisJCQlhcHBlbmRTdHJpbmdJ bmZvKGJ1ZiwgIiwgJXMgV0lUSE9VVCBPVkVSTEFQUyIsIHF1b3RlX2lkZW50aWZpZXIoY29sTmFt ZSkpOwogCQllbHNlCiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwgJXMiLCBxdW90ZV9pZGVu dGlmaWVyKGNvbE5hbWUpKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9sc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCmluZGV4 IGUzNDZmNjE4ZmMuLjI4NDJhNTNiYmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL2xzeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5j CkBAIC0yMTk4LDYgKzIxOTgsMzIgQEAgZ2V0X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpCiAJCXJl dHVybiBmYWxzZTsKIH0KIAorLyoKKyAqIGdldF90eXBuYW1lCisgKgorICoJCVJldHVybnMgdGhl IG5hbWUgb2YgYSBnaXZlbiB0eXBlCisgKgorICogUmV0dXJucyBhIHBhbGxvYydkIGNvcHkgb2Yg dGhlIHN0cmluZywgb3IgTlVMTCBpZiBubyBzdWNoIHR5cGUuCisgKi8KK2NoYXIgKgorZ2V0X3R5 cG5hbWUoT2lkIHR5cGlkKQoreworCUhlYXBUdXBsZQl0cDsKKworCXRwID0gU2VhcmNoU3lzQ2Fj aGUxKFRZUEVPSUQsIE9iamVjdElkR2V0RGF0dW0odHlwaWQpKTsKKwlpZiAoSGVhcFR1cGxlSXNW YWxpZCh0cCkpCisJeworCQlGb3JtX3BnX3R5cGUgdHlwdHVwID0gKEZvcm1fcGdfdHlwZSkgR0VU U1RSVUNUKHRwKTsKKwkJY2hhcgkgICAqcmVzdWx0OworCisJCXJlc3VsdCA9IHBzdHJkdXAoTmFt ZVN0cih0eXB0dXAtPnR5cG5hbWUpKTsKKwkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwkJcmV0dXJu IHJlc3VsdDsKKwl9CisJZWxzZQorCQlyZXR1cm4gTlVMTDsKK30KKwogLyoKICAqIGdldF90eXBs ZW4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCA5NGZiZjFhYTE5Li43ZjM4 ZTAyODhlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTQ2MjMsMTEgKzQ2MjMs MTcgQEAgUmVsYXRpb25HZXRJbmRleExpc3QoUmVsYXRpb24gcmVsYXRpb24pCiAJCSAqIGludGVy ZXN0aW5nIGZvciBlaXRoZXIgb2lkIGluZGV4ZXMgb3IgcmVwbGljYXRpb24gaWRlbnRpdHkgaW5k ZXhlcywKIAkJICogc28gZG9uJ3QgY2hlY2sgdGhlbS4KIAkJICovCi0JCWlmICghaW5kZXgtPmlu ZGlzdmFsaWQgfHwgIWluZGV4LT5pbmRpc3VuaXF1ZSB8fAotCQkJIWluZGV4LT5pbmRpbW1lZGlh dGUgfHwKKwkJaWYgKCFpbmRleC0+aW5kaXN2YWxpZCB8fCAhaW5kZXgtPmluZGltbWVkaWF0ZSB8 fAogCQkJIWhlYXBfYXR0aXNudWxsKGh0dXAsIEFudW1fcGdfaW5kZXhfaW5kcHJlZCwgTlVMTCkp CiAJCQljb250aW51ZTsKIAorCQkvKgorCQkgKiBOb24tdW5pcXVlIGluZGV4ZXMgYXJlbid0IGlu dGVyZXN0aW5nIGVpdGhlciwKKwkJICogZXhjZXB0IHdoZW4gdGhleSBhcmUgdGVtcG9yYWwgcHJp bWFyeSBrZXlzLgorCQkgKi8KKwkJaWYgKCFpbmRleC0+aW5kaXN1bmlxdWUgJiYgIWluZGV4LT5p bmRpc3ByaW1hcnkpCisJCQljb250aW51ZTsKKwogCQkvKiByZW1lbWJlciBwcmltYXJ5IGtleSBp bmRleCBpZiBhbnkgKi8KIAkJaWYgKGluZGV4LT5pbmRpc3ByaW1hcnkpCiAJCQlwa2V5SW5kZXgg PSBpbmRleC0+aW5kZXhyZWxpZDsKQEAgLTUzMDksOCArNTMxNSw5IEBAIFJlbGF0aW9uR2V0SWRl bnRpdHlLZXlCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24pCiAgKiBSZWxhdGlvbkdldEV4Y2x1c2lv bkluZm8gLS0gZ2V0IGluZm8gYWJvdXQgaW5kZXgncyBleGNsdXNpb24gY29uc3RyYWludAogICoK ICAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGZvciBhbiBpbmRleCB0aGF0IGlzIGtub3du IHRvIGhhdmUgYW4KLSAqIGFzc29jaWF0ZWQgZXhjbHVzaW9uIGNvbnN0cmFpbnQuICBJdCByZXR1 cm5zIGFycmF5cyAocGFsbG9jJ2QgaW4gY2FsbGVyJ3MKLSAqIGNvbnRleHQpIG9mIHRoZSBleGNs dXNpb24gb3BlcmF0b3IgT0lEcywgdGhlaXIgdW5kZXJseWluZyBmdW5jdGlvbnMnCisgKiBhc3Nv Y2lhdGVkIGV4Y2x1c2lvbiBjb25zdHJhaW50IG9yIHRlbXBvcmFsIHByaW1hcnkga2V5LgorICog SXQgcmV0dXJucyBhcnJheXMgKHBhbGxvYydkIGluIGNhbGxlcidzICogY29udGV4dCkKKyAqIG9m IHRoZSBleGNsdXNpb24gb3BlcmF0b3IgT0lEcywgdGhlaXIgdW5kZXJseWluZyBmdW5jdGlvbnMn CiAgKiBPSURzLCBhbmQgdGhlaXIgc3RyYXRlZ3kgbnVtYmVycyBpbiB0aGUgaW5kZXgncyBvcGNs YXNzZXMuICBXZSBjYWNoZQogICogYWxsIHRoaXMgaW5mb3JtYXRpb24gc2luY2UgaXQgcmVxdWly ZXMgYSBmYWlyIGFtb3VudCBvZiB3b3JrIHRvIGdldC4KICAqLwpAQCAtNTM3Niw3ICs1MzgzLDEy IEBAIFJlbGF0aW9uR2V0RXhjbHVzaW9uSW5mbyhSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCQlp bnQJCQluZWxlbTsKIAogCQkvKiBXZSB3YW50IHRoZSBleGNsdXNpb24gY29uc3RyYWludCBvd25p bmcgdGhlIGluZGV4ICovCi0JCWlmIChjb25mb3JtLT5jb250eXBlICE9IENPTlNUUkFJTlRfRVhD TFVTSU9OIHx8CisJCS8qCisJCSAqIFRPRE86IElzIHRoaXMgdG9vIHBlcm1pc3NpdmU/CisJCSAq IE1heWJlIGl0IG5lZWRzIHRvIGJlICghPSBDT05TVFJBSU5UX1BSSU1BUlkgfHwgIWhhc19leGNs X29wZXJhdG9ycykKKwkJICovCisJCWlmICgoY29uZm9ybS0+Y29udHlwZSAhPSBDT05TVFJBSU5U X0VYQ0xVU0lPTiAmJgorCQkJCQljb25mb3JtLT5jb250eXBlICE9IENPTlNUUkFJTlRfUFJJTUFS WSkgfHwKIAkJCWNvbmZvcm0tPmNvbmluZGlkICE9IFJlbGF0aW9uR2V0UmVsaWQoaW5kZXhSZWxh dGlvbikpCiAJCQljb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggMDFhM2I4MmMyNy4uOGIzMzMy MWFhMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCkBAIC03MjA5LDcgKzcyMDksOCBAQCBnZXRJbmRleGVzKEFyY2hp dmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCQkJaV90YWJs ZXNwYWNlLAogCQkJCWlfaW5kcmVsb3B0aW9ucywKIAkJCQlpX2luZHN0YXRjb2xzLAotCQkJCWlf aW5kc3RhdHZhbHM7CisJCQkJaV9pbmRzdGF0dmFscywKKwkJCQlpX3dpdGhvdXRvdmVybGFwczsK IAlpbnQJCQludHVwczsKIAogCWZvciAoaSA9IDA7IGkgPCBudW1UYWJsZXM7IGkrKykKQEAgLTcy NzAsNyArNzI3MSw4IEBAIGdldEluZGV4ZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGlu Zm9bXSwgaW50IG51bVRhYmxlcykKIAkJCQkJCQkgICIoU0VMRUNUIHBnX2NhdGFsb2cuYXJyYXlf YWdnKGF0dHN0YXR0YXJnZXQgT1JERVIgQlkgYXR0bnVtKSAiCiAJCQkJCQkJICAiICBGUk9NIHBn X2NhdGFsb2cucGdfYXR0cmlidXRlICIKIAkJCQkJCQkgICIgIFdIRVJFIGF0dHJlbGlkID0gaS5p bmRleHJlbGlkIEFORCAiCi0JCQkJCQkJICAiICAgIGF0dHN0YXR0YXJnZXQgPj0gMCkgQVMgaW5k c3RhdHZhbHMgIgorCQkJCQkJCSAgIiAgICBhdHRzdGF0dGFyZ2V0ID49IDApIEFTIGluZHN0YXR2 YWxzLCAiCisJCQkJCQkJICAiYy5jb25leGNsb3AgSVMgTk9UIE5VTEwgQVMgd2l0aG91dG92ZXJs YXBzICIKIAkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfaW5kZXggaSAiCiAJCQkJCQkJICAi Sk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIHQgT04gKHQub2lkID0gaS5pbmRleHJlbGlkKSAiCiAJ CQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIHQyIE9OICh0Mi5vaWQgPSBpLmluZHJl bGlkKSAiCkBAIC03MzA5LDcgKzczMTEsOCBAQCBnZXRJbmRleGVzKEFyY2hpdmUgKmZvdXQsIFRh YmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCQkJCQkJICAiKFNFTEVDVCBzcGNu YW1lIEZST00gcGdfY2F0YWxvZy5wZ190YWJsZXNwYWNlIHMgV0hFUkUgcy5vaWQgPSB0LnJlbHRh Ymxlc3BhY2UpIEFTIHRhYmxlc3BhY2UsICIKIAkJCQkJCQkgICJ0LnJlbG9wdGlvbnMgQVMgaW5k cmVsb3B0aW9ucywgIgogCQkJCQkJCSAgIicnIEFTIGluZHN0YXRjb2xzLCAiCi0JCQkJCQkJICAi JycgQVMgaW5kc3RhdHZhbHMgIgorCQkJCQkJCSAgIicnIEFTIGluZHN0YXR2YWxzLCAiCisJCQkJ CQkJICAibnVsbCBBUyB3aXRob3V0b3ZlcmxhcHMgIgogCQkJCQkJCSAgIkZST00gcGdfY2F0YWxv Zy5wZ19pbmRleCBpICIKIAkJCQkJCQkgICJKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgdCBPTiAo dC5vaWQgPSBpLmluZGV4cmVsaWQpICIKIAkJCQkJCQkgICJMRUZUIEpPSU4gcGdfY2F0YWxvZy5w Z19jb25zdHJhaW50IGMgIgpAQCAtNzM0NCw3ICs3MzQ3LDggQEAgZ2V0SW5kZXhlcyhBcmNoaXZl ICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQkJCQkJCSAgIihT RUxFQ1Qgc3BjbmFtZSBGUk9NIHBnX2NhdGFsb2cucGdfdGFibGVzcGFjZSBzIFdIRVJFIHMub2lk ID0gdC5yZWx0YWJsZXNwYWNlKSBBUyB0YWJsZXNwYWNlLCAiCiAJCQkJCQkJICAidC5yZWxvcHRp b25zIEFTIGluZHJlbG9wdGlvbnMsICIKIAkJCQkJCQkgICInJyBBUyBpbmRzdGF0Y29scywgIgot CQkJCQkJCSAgIicnIEFTIGluZHN0YXR2YWxzICIKKwkJCQkJCQkgICInJyBBUyBpbmRzdGF0dmFs cywgIgorCQkJCQkJCSAgIm51bGwgQVMgd2l0aG91dG92ZXJsYXBzICIKIAkJCQkJCQkgICJGUk9N IHBnX2NhdGFsb2cucGdfaW5kZXggaSAiCiAJCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBnX2Ns YXNzIHQgT04gKHQub2lkID0gaS5pbmRleHJlbGlkKSAiCiAJCQkJCQkJICAiTEVGVCBKT0lOIHBn X2NhdGFsb2cucGdfY29uc3RyYWludCBjICIKQEAgLTczNzUsNyArNzM3OSw4IEBAIGdldEluZGV4 ZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJ CQkJCQkgICIoU0VMRUNUIHNwY25hbWUgRlJPTSBwZ19jYXRhbG9nLnBnX3RhYmxlc3BhY2UgcyBX SEVSRSBzLm9pZCA9IHQucmVsdGFibGVzcGFjZSkgQVMgdGFibGVzcGFjZSwgIgogCQkJCQkJCSAg InQucmVsb3B0aW9ucyBBUyBpbmRyZWxvcHRpb25zLCAiCiAJCQkJCQkJICAiJycgQVMgaW5kc3Rh dGNvbHMsICIKLQkJCQkJCQkgICInJyBBUyBpbmRzdGF0dmFscyAiCisJCQkJCQkJICAiJycgQVMg aW5kc3RhdHZhbHMsICIKKwkJCQkJCQkgICJudWxsIEFTIHdpdGhvdXRvdmVybGFwcyAiCiAJCQkJ CQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2luZGV4IGkgIgogCQkJCQkJCSAgIkpPSU4gcGdfY2F0 YWxvZy5wZ19jbGFzcyB0IE9OICh0Lm9pZCA9IGkuaW5kZXhyZWxpZCkgIgogCQkJCQkJCSAgIkxF RlQgSk9JTiBwZ19jYXRhbG9nLnBnX2RlcGVuZCBkICIKQEAgLTc0MDksNyArNzQxNCw4IEBAIGdl dEluZGV4ZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxl cykKIAkJCQkJCQkgICIoU0VMRUNUIHNwY25hbWUgRlJPTSBwZ19jYXRhbG9nLnBnX3RhYmxlc3Bh Y2UgcyBXSEVSRSBzLm9pZCA9IHQucmVsdGFibGVzcGFjZSkgQVMgdGFibGVzcGFjZSwgIgogCQkJ CQkJCSAgIm51bGwgQVMgaW5kcmVsb3B0aW9ucywgIgogCQkJCQkJCSAgIicnIEFTIGluZHN0YXRj b2xzLCAiCi0JCQkJCQkJICAiJycgQVMgaW5kc3RhdHZhbHMgIgorCQkJCQkJCSAgIicnIEFTIGlu ZHN0YXR2YWxzLCAiCisJCQkJCQkJICAibnVsbCBBUyB3aXRob3V0b3ZlcmxhcHMgIgogCQkJCQkJ CSAgIkZST00gcGdfY2F0YWxvZy5wZ19pbmRleCBpICIKIAkJCQkJCQkgICJKT0lOIHBnX2NhdGFs b2cucGdfY2xhc3MgdCBPTiAodC5vaWQgPSBpLmluZGV4cmVsaWQpICIKIAkJCQkJCQkgICJMRUZU IEpPSU4gcGdfY2F0YWxvZy5wZ19kZXBlbmQgZCAiCkBAIC03NDQ5LDYgKzc0NTUsNyBAQCBnZXRJ bmRleGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMp CiAJCWlfaW5kcmVsb3B0aW9ucyA9IFBRZm51bWJlcihyZXMsICJpbmRyZWxvcHRpb25zIik7CiAJ CWlfaW5kc3RhdGNvbHMgPSBQUWZudW1iZXIocmVzLCAiaW5kc3RhdGNvbHMiKTsKIAkJaV9pbmRz dGF0dmFscyA9IFBRZm51bWJlcihyZXMsICJpbmRzdGF0dmFscyIpOworCQlpX3dpdGhvdXRvdmVy bGFwcyA9IFBRZm51bWJlcihyZXMsICJ3aXRob3V0b3ZlcmxhcHMiKTsKIAogCQl0YmluZm8tPmlu ZGV4ZXMgPSBpbmR4aW5mbyA9CiAJCQkoSW5keEluZm8gKikgcGdfbWFsbG9jKG50dXBzICogc2l6 ZW9mKEluZHhJbmZvKSk7CkBAIC03NTEyLDYgKzc1MTksNyBAQCBnZXRJbmRleGVzKEFyY2hpdmUg KmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCQkJY29uc3RyaW5m b1tqXS5jb25kZWZlcnJlZCA9ICooUFFnZXR2YWx1ZShyZXMsIGosIGlfY29uZGVmZXJyZWQpKSA9 PSAndCc7CiAJCQkJY29uc3RyaW5mb1tqXS5jb25pc2xvY2FsID0gdHJ1ZTsKIAkJCQljb25zdHJp bmZvW2pdLnNlcGFyYXRlID0gdHJ1ZTsKKwkJCQljb25zdHJpbmZvW2pdLndpdGhvdXRvdmVybGFw cyA9ICooUFFnZXR2YWx1ZShyZXMsIGosIGlfd2l0aG91dG92ZXJsYXBzKSkgPT0gJ3QnOwogCiAJ CQkJaW5keGluZm9bal0uaW5kZXhjb25zdHJhaW50ID0gY29uc3RyaW5mb1tqXS5kb2JqLmR1bXBJ ZDsKIAkJCX0KQEAgLTE3MTcyLDkgKzE3MTgwLDIyIEBAIGR1bXBDb25zdHJhaW50KEFyY2hpdmUg KmZvdXQsIGNvbnN0IENvbnN0cmFpbnRJbmZvICpjb25pbmZvKQogCQkJCQlicmVhazsKIAkJCQlh dHRuYW1lID0gZ2V0QXR0ck5hbWUoaW5ka2V5LCB0YmluZm8pOwogCi0JCQkJYXBwZW5kUFFFeHBC dWZmZXIocSwgIiVzJXMiLAotCQkJCQkJCQkgIChrID09IDApID8gIiIgOiAiLCAiLAotCQkJCQkJ CQkgIGZtdElkKGF0dG5hbWUpKTsKKwkJCQlpZiAoayA9PSAwKQorCQkJCXsKKwkJCQkJYXBwZW5k UFFFeHBCdWZmZXIocSwgIiVzIiwKKwkJCQkJCQkJCQlmbXRJZChhdHRuYW1lKSk7CisJCQkJfQor CQkJCWVsc2UgaWYgKGsgPT0gaW5keGluZm8tPmluZG5rZXlhdHRycyAtIDEgJiYKKwkJCQkJCWNv bmluZm8tPndpdGhvdXRvdmVybGFwcykKKwkJCQl7CisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEs ICIsICVzIFdJVEhPVVQgT1ZFUkxBUFMiLAorCQkJCQkJCQkJCWZtdElkKGF0dG5hbWUpKTsKKwkJ CQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiwgJXMiLAor CQkJCQkJCQkJCWZtdElkKGF0dG5hbWUpKTsKKwkJCQl9CiAJCQl9CiAKIAkJCWlmIChpbmR4aW5m by0+aW5kbmtleWF0dHJzIDwgaW5keGluZm8tPmluZG5hdHRycykKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IGUz NDc4MGUxMmQuLmEwZWNjZWMzY2IgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNDY2LDYgKzQ2Niw3IEBAIHR5 cGVkZWYgc3RydWN0IF9jb25zdHJhaW50SW5mbwogCWJvb2wJCWNvbmRlZmVycmVkOwkvKiB0cnVl IGlmIGNvbnN0cmFpbnQgaXMgSU5JVElBTExZIERFRkVSUkVEICovCiAJYm9vbAkJY29uaXNsb2Nh bDsJCS8qIHRydWUgaWYgY29uc3RyYWludCBoYXMgbG9jYWwgZGVmaW5pdGlvbiAqLwogCWJvb2wJ CXNlcGFyYXRlOwkJLyogdHJ1ZSBpZiBtdXN0IGR1bXAgYXMgc2VwYXJhdGUgaXRlbSAqLworCWJv b2wJCXdpdGhvdXRvdmVybGFwczsJLyogdHJ1ZSBpZiB0aGUgbGFzdCBlbGVtIGlzIFdJVEhPVVQg T1ZFUkxBUFMgKi8KIH0gQ29uc3RyYWludEluZm87CiAKIHR5cGVkZWYgc3RydWN0IF9wZXJpb2RJ bmZvCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9i aW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IDQ0OGIxYmUyNmMuLjRhN2ZhYjllNmIg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9i aW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC02NzksNiArNjc5LDI4IEBAIG15ICV0ZXN0 cyA9ICgKIAkJfSwKIAl9LAogCisJJ0FMVEVSIFRBQkxFIE9OTFkgdGVzdF90YWJsZSBBREQgQ09O U1RSQUlOVCAuLi4gUFJJTUFSWSBLRVkgKC4uLiwgLi4uIFdJVEhPVVQgT1ZFUkxBUFMpJyA9PiB7 CisJCWNyZWF0ZV9zcWwgID0+ICdDUkVBVEUgVEFCTEUgZHVtcF90ZXN0LnRlc3RfdGFibGVfdHBr ICgKKwkJCQkJCQljb2wxIGludDRyYW5nZSwKKwkJCQkJCQljb2wyIHRzdHpyYW5nZSwKKwkJCQkJ CQlDT05TVFJBSU5UIHRlc3RfdGFibGVfdHBrX3BrZXkgUFJJTUFSWSBLRVkKKwkJCQkJCQkJKGNv bDEsIGNvbDIgV0lUSE9VVCBPVkVSTEFQUykpOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUFM VEVSIFRBQkxFIE9OTFkgZHVtcF90ZXN0LnRlc3RfdGFibGVfdHBrXEUgXG5eXHMrCisJCQlcUUFE RCBDT05TVFJBSU5UIHRlc3RfdGFibGVfdHBrX3BrZXkgUFJJTUFSWSBLRVkgKGNvbDEsIGNvbDIg V0lUSE9VVCBPVkVSTEFQUyk7XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7CisJCQklZnVsbF9ydW5z LAorCQkJJWR1bXBfdGVzdF9zY2hlbWFfcnVucywKKwkJCXNlY3Rpb25fcG9zdF9kYXRhICAgID0+ IDEsCisJCQlleGNsdWRlX3Rlc3RfdGFibGUgICAgICAgPT4gMSwKKwkJfSwKKwkJdW5saWtlID0+ IHsKKwkJCW9ubHlfZHVtcF90ZXN0X3RhYmxlID0+IDEsCisJCQlleGNsdWRlX2R1bXBfdGVzdF9z Y2hlbWEgPT4gMSwKKwkJfSwKKwl9LAorCiAJJ0FMVEVSIFRBQkxFIChwYXJ0aXRpb25lZCkgQURE IENPTlNUUkFJTlQgLi4uIEZPUkVJR04gS0VZJyA9PiB7CiAJCWNyZWF0ZV9vcmRlciA9PiA0LAog CQljcmVhdGVfc3FsICAgPT4gJ0NSRUFURSBUQUJMRSBkdW1wX3Rlc3QudGVzdF90YWJsZV9mayAo CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNj cmliZS5jCmluZGV4IDQzNmVkYWEzMWQuLjczZDEzODllZWUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC0yNjI1LDYg KzI2MjUsOCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1l LAogCQkJCQkJfQogCiAJCQkJCQkvKiBFdmVyeXRoaW5nIGFmdGVyICJVU0lORyIgaXMgZWNob2Vk IHZlcmJhdGltICovCisJCQkJCQkvLyBUT0RPOiBTaG93IFdJVEhPVVQgT1ZFUkxBUFMgaW5mbyBo ZXJlPworCQkJCQkJLy8gSXQgaXMgbm90IHJlYWxseSBwYXJ0IG9mIHRoZSAqaW5kZXgqLgogCQkJ CQkJaW5kZXhkZWYgPSBQUWdldHZhbHVlKHJlc3VsdCwgaSwgNSk7CiAJCQkJCQl1c2luZ3BvcyA9 IHN0cnN0cihpbmRleGRlZiwgIiBVU0lORyAiKTsKIAkJCQkJCWlmICh1c2luZ3BvcykKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv aW5kZXguaAppbmRleCAwMDhmNzIzZTEwLi44YmMyYjBiZTkxIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL2luZGV4LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCkBA IC05MSw2ICs5MSw3IEBAIGV4dGVybiBPaWQJaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxh dGlvbiwKICNkZWZpbmUJSU5ERVhfQ09OU1RSX0NSRUFURV9JTklUX0RFRkVSUkVECSgxIDw8IDIp CiAjZGVmaW5lCUlOREVYX0NPTlNUUl9DUkVBVEVfVVBEQVRFX0lOREVYCSgxIDw8IDMpCiAjZGVm aW5lCUlOREVYX0NPTlNUUl9DUkVBVEVfUkVNT1ZFX09MRF9ERVBTCSgxIDw8IDQpCisjZGVmaW5l CUlOREVYX0NPTlNUUl9DUkVBVEVfVEVNUE9SQUwJCSgxIDw8IDUpCiAKIGV4dGVybiBPaWQJaW5k ZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJ CQkJCQkgICBPaWQgb2xkSW5kZXhJZCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfY29uc3RyYWludC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmgKaW5k ZXggZTc1YmFhOGUxZS4uNmM2Njc1YjBmNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19jb25zdHJhaW50LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50 LmgKQEAgLTEwNyw2ICsxMDcsMTQgQEAgQ0FUQUxPRyhwZ19jb25zdHJhaW50LDI2MDYsQ29uc3Ry YWludFJlbGF0aW9uSWQpCiAJLyogSGFzIGEgbG9jYWwgZGVmaW5pdGlvbiBhbmQgY2Fubm90IGJl IGluaGVyaXRlZCAqLwogCWJvb2wJCWNvbm5vaW5oZXJpdDsKIAorCS8qCisJICogRm9yIHByaW1h cnkgYW5kIGZvcmVpZ24ga2V5cywgc2lnbmlmaWVzIHRoZSBsYXN0IGNvbHVtbiBpcyBhIHJhbmdl CisJICogYW5kIHNob3VsZCB1c2Ugb3ZlcmxhcHMgaW5zdGVhZCBvZiBlcXVhbHMuCisJICovCisJ Ym9vbAkJY29udGVtcG9yYWw7CisKKwlPaWQJCQljb25wZXJpb2Q7CQkvKiBsb2NhbCBQRVJJT0Qg dXNlZCBpbiBQSy9GSyBjb25zdHJhaW50ICovCisKICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8q IHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLwogCiAJLyoKQEAgLTE0MCw3ICsx NDgsNyBAQCBDQVRBTE9HKHBnX2NvbnN0cmFpbnQsMjYwNixDb25zdHJhaW50UmVsYXRpb25JZCkK IAogCS8qCiAJICogSWYgYW4gZXhjbHVzaW9uIGNvbnN0cmFpbnQsIHRoZSBPSURzIG9mIHRoZSBl eGNsdXNpb24gb3BlcmF0b3JzIGZvcgotCSAqIGVhY2ggY29sdW1uIG9mIHRoZSBjb25zdHJhaW50 CisJICogZWFjaCBjb2x1bW4gb2YgdGhlIGNvbnN0cmFpbnQuIEFsc28gc2V0IGZvciB0ZW1wb3Jh bCBwcmltYXJ5IGtleXMuCiAJICovCiAJT2lkCQkJY29uZXhjbG9wWzFdIEJLSV9MT09LVVAocGdf b3BlcmF0b3IpOwogCkBAIC0yMjcsNiArMjM1LDggQEAgZXh0ZXJuIE9pZAlDcmVhdGVDb25zdHJh aW50RW50cnkoY29uc3QgY2hhciAqY29uc3RyYWludE5hbWUsCiAJCQkJCQkJCSAgYm9vbCBjb25J c0xvY2FsLAogCQkJCQkJCQkgIGludCBjb25JbmhDb3VudCwKIAkJCQkJCQkJICBib29sIGNvbk5v SW5oZXJpdCwKKwkJCQkJCQkJICBib29sIGNvblRlbXBvcmFsLAorCQkJCQkJCQkgIE9pZCBwZXJp b2QsCiAJCQkJCQkJCSAgYm9vbCBpc19pbnRlcm5hbCk7CiAKIGV4dGVybiB2b2lkIFJlbW92ZUNv bnN0cmFpbnRCeUlkKE9pZCBjb25JZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5k cy9kZWZyZW0uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCmluZGV4IDQyYmYxYzc1 MTkuLjQzODc4MjBjYTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5o CisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCkBAIC00Myw3ICs0Myw4IEBAIGV4 dGVybiBjaGFyICpDaG9vc2VSZWxhdGlvbk5hbWUoY29uc3QgY2hhciAqbmFtZTEsIGNvbnN0IGNo YXIgKm5hbWUyLAogZXh0ZXJuIGJvb2wgQ2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElkLAog CQkJCQkJCQkgY29uc3QgY2hhciAqYWNjZXNzTWV0aG9kTmFtZSwKIAkJCQkJCQkJIExpc3QgKmF0 dHJpYnV0ZUxpc3QsCi0JCQkJCQkJCSBMaXN0ICpleGNsdXNpb25PcE5hbWVzKTsKKwkJCQkJCQkJ IExpc3QgKmV4Y2x1c2lvbk9wTmFtZXMsCisJCQkJCQkJCSBjb25zdCBjaGFyICppbmRleFBlcmlv ZE5hbWUpOwogZXh0ZXJuIE9pZAlHZXREZWZhdWx0T3BDbGFzcyhPaWQgdHlwZV9pZCwgT2lkIGFt X2lkKTsKIGV4dGVybiBPaWQJUmVzb2x2ZU9wQ2xhc3MoTGlzdCAqb3BjbGFzcywgT2lkIGF0dHJU eXBlLAogCQkJCQkJICAgY29uc3QgY2hhciAqYWNjZXNzTWV0aG9kTmFtZSwgT2lkIGFjY2Vzc01l dGhvZElkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggMGVjNTUwOWU3ZS4uNDkxOWU1Y2UyNSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTEyOCw2ICsxMjgsNyBAQCB0eXBlZGVmIHN0cnVjdCBF eHByU3RhdGUKICAqCQlJbmRleEF0dHJOdW1iZXJzCXVuZGVybHlpbmctcmVsIGF0dHJpYnV0ZSBu dW1iZXJzIHVzZWQgYXMga2V5cwogICoJCQkJCQkJKHplcm9lcyBpbmRpY2F0ZSBleHByZXNzaW9u cykuIEl0IGFsc28gY29udGFpbnMKICAqIAkJCQkJCQlpbmZvIGFib3V0IGluY2x1ZGVkIGNvbHVt bnMuCisgKgkJUGVyaW9kCQkJCXBlcmlvZCB1c2VkIGluIHRoZSBpbmRleCwgb3IgTlVMTCBpZiBu b25lCiAgKgkJRXhwcmVzc2lvbnMJCQlleHByIHRyZWVzIGZvciBleHByZXNzaW9uIGVudHJpZXMs IG9yIE5JTCBpZiBub25lCiAgKgkJRXhwcmVzc2lvbnNTdGF0ZQlleGVjIHN0YXRlIGZvciBleHBy ZXNzaW9ucywgb3IgTklMIGlmIG5vbmUKICAqCQlQcmVkaWNhdGUJCQlwYXJ0aWFsLWluZGV4IHBy ZWRpY2F0ZSwgb3IgTklMIGlmIG5vbmUKQEAgLTEzOSw2ICsxNDAsNyBAQCB0eXBlZGVmIHN0cnVj dCBFeHByU3RhdGUKICAqCQlVbmlxdWVQcm9jcwogICoJCVVuaXF1ZVN0cmF0cwogICoJCVVuaXF1 ZQkJCQlpcyBpdCBhIHVuaXF1ZSBpbmRleD8KKyAqCQlUZW1wb3JhbAkJCWlzIGl0IGZvciBhIHRl bXBvcmFsIGNvbnN0cmFpbnQ/CiAgKgkJT3BjbGFzc09wdGlvbnMJCW9wY2xhc3Mtc3BlY2lmaWMg b3B0aW9ucywgb3IgTlVMTCBpZiBub25lCiAgKgkJUmVhZHlGb3JJbnNlcnRzCQlpcyBpdCB2YWxp ZCBmb3IgaW5zZXJ0cz8KICAqCQlDb25jdXJyZW50CQkJYXJlIHdlIGRvaW5nIGEgY29uY3VycmVu dCBpbmRleCBidWlsZD8KQEAgLTE1OCw2ICsxNjAsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleElu Zm8KIAlpbnQJCQlpaV9OdW1JbmRleEF0dHJzOwkvKiB0b3RhbCBudW1iZXIgb2YgY29sdW1ucyBp biBpbmRleCAqLwogCWludAkJCWlpX051bUluZGV4S2V5QXR0cnM7CS8qIG51bWJlciBvZiBrZXkg Y29sdW1ucyBpbiBpbmRleCAqLwogCUF0dHJOdW1iZXIJaWlfSW5kZXhBdHRyTnVtYmVyc1tJTkRF WF9NQVhfS0VZU107CisJTm9kZQkgICAqaWlfUGVyaW9kOwkvKiBwZXJpb2QgdXNlZCBpbiB0aGUg aW5kZXggKi8KIAlMaXN0CSAgICppaV9FeHByZXNzaW9uczsgLyogbGlzdCBvZiBFeHByICovCiAJ TGlzdAkgICAqaWlfRXhwcmVzc2lvbnNTdGF0ZTsJLyogbGlzdCBvZiBFeHByU3RhdGUgKi8KIAlM aXN0CSAgICppaV9QcmVkaWNhdGU7CS8qIGxpc3Qgb2YgRXhwciAqLwpAQCAtMTcwLDYgKzE3Myw3 IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4SW5mbwogCXVpbnQxNgkgICAqaWlfVW5pcXVlU3RyYXRz OwkvKiBhcnJheSB3aXRoIG9uZSBlbnRyeSBwZXIgY29sdW1uICovCiAJRGF0dW0JICAgKmlpX09w Y2xhc3NPcHRpb25zOwkvKiBhcnJheSB3aXRoIG9uZSBlbnRyeSBwZXIgY29sdW1uICovCiAJYm9v bAkJaWlfVW5pcXVlOworCWJvb2wJCWlpX1RlbXBvcmFsOwogCWJvb2wJCWlpX1JlYWR5Rm9ySW5z ZXJ0czsKIAlib29sCQlpaV9Db25jdXJyZW50OwogCWJvb2wJCWlpX0Jyb2tlbkhvdENoYWluOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmggYi9zcmMvaW5jbHVkZS9u b2Rlcy9tYWtlZnVuY3MuaAppbmRleCA0OGE3ZWJmZTQ1Li43MDE5OWYzZDRjIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9t YWtlZnVuY3MuaApAQCAtOTYsNyArOTYsOCBAQCBleHRlcm4gTGlzdCAqbWFrZV9hbmRzX2ltcGxp Y2l0KEV4cHIgKmNsYXVzZSk7CiAKIGV4dGVybiBJbmRleEluZm8gKm1ha2VJbmRleEluZm8oaW50 IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwKIAkJCQkJCQkJTGlzdCAqZXhw cmVzc2lvbnMsIExpc3QgKnByZWRpY2F0ZXMsCi0JCQkJCQkJCWJvb2wgdW5pcXVlLCBib29sIGlz cmVhZHksIGJvb2wgY29uY3VycmVudCk7CisJCQkJCQkJCWJvb2wgdW5pcXVlLCBib29sIHRlbXBv cmFsLCBib29sIGlzcmVhZHksCisJCQkJCQkJCWJvb2wgY29uY3VycmVudCk7CiAKIGV4dGVybiBE ZWZFbGVtICptYWtlRGVmRWxlbShjaGFyICpuYW1lLCBOb2RlICphcmcsIGludCBsb2NhdGlvbik7 CiBleHRlcm4gRGVmRWxlbSAqbWFrZURlZkVsZW1FeHRlbmRlZChjaGFyICpuYW1lU3BhY2UsIGNo YXIgKm5hbWUsIE5vZGUgKmFyZywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBmZTAwMDc2YTkx Li4yZjkxZmZkMjY5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0yMzE1LDYgKzIzMTUsOSBA QCB0eXBlZGVmIHN0cnVjdCBDb25zdHJhaW50CiAJT2lkCQkJb2xkX3BrdGFibGVfb2lkOwkvKiBw Z19jb25zdHJhaW50LmNvbmZyZWxpZCBvZiBteSBmb3JtZXIKIAkJCQkJCQkJCSAqIHNlbGYgKi8K IAorICAvKiBGaWVsZHMgdXNlZCBmb3IgdGVtcG9yYWwgUFJJTUFSWSBLRVkgYW5kIEZPUkVJR04g S0VZIGNvbnN0cmFpbnRzOiAqLworCU5vZGUJICAgKndpdGhvdXRfb3ZlcmxhcHM7IC8qIFN0cmlu ZyBub2RlIG5hbWluZyBQRVJJT0Qgb3IgcmFuZ2UgY29sdW1uICovCisKIAkvKiBGaWVsZHMgdXNl ZCBmb3IgY29uc3RyYWludHMgdGhhdCBhbGxvdyBhIE5PVCBWQUxJRCBzcGVjaWZpY2F0aW9uICov CiAJYm9vbAkJc2tpcF92YWxpZGF0aW9uOwkvKiBza2lwIHZhbGlkYXRpb24gb2YgZXhpc3Rpbmcg cm93cz8gKi8KIAlib29sCQlpbml0aWFsbHlfdmFsaWQ7CS8qIG1hcmsgdGhlIG5ldyBjb25zdHJh aW50IGFzIHZhbGlkPyAqLwpAQCAtMjkxNiw2ICsyOTE5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5k ZXhTdG10CiAJYm9vbAkJdW5pcXVlOwkJCS8qIGlzIGluZGV4IHVuaXF1ZT8gKi8KIAlib29sCQlw cmltYXJ5OwkJLyogaXMgaW5kZXggYSBwcmltYXJ5IGtleT8gKi8KIAlib29sCQlpc2NvbnN0cmFp bnQ7CS8qIGlzIGl0IGZvciBhIHBrZXkvdW5pcXVlIGNvbnN0cmFpbnQ/ICovCisJYm9vbAkJaXN0 ZW1wb3JhbDsJCS8qIGlzIGl0IGZvciBhIHRlbXBvcmFsIHBrZXk/ICovCiAJYm9vbAkJZGVmZXJy YWJsZTsJCS8qIGlzIHRoZSBjb25zdHJhaW50IERFRkVSUkFCTEU/ICovCiAJYm9vbAkJaW5pdGRl ZmVycmVkOwkvKiBpcyB0aGUgY29uc3RyYWludCBJTklUSUFMTFkgREVGRVJSRUQ/ICovCiAJYm9v bAkJdHJhbnNmb3JtZWQ7CS8qIHRydWUgd2hlbiB0cmFuc2Zvcm1JbmRleFN0bXQgaXMgZmluaXNo ZWQgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggYmI4YzFiNjc0Mi4uYjNhYWQyMThmMCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvbHN5c2NhY2hlLmgKQEAgLTE0NCw2ICsxNDQsNyBAQCBleHRlcm4gY2hhciBnZXRfcmVs X3BlcnNpc3RlbmNlKE9pZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1fZnJvbXNx bChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5cGVzKTsKIGV4dGVybiBPaWQJZ2V0 X3RyYW5zZm9ybV90b3NxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5cGVzKTsK IGV4dGVybiBib29sIGdldF90eXBpc2RlZmluZWQoT2lkIHR5cGlkKTsKK2V4dGVybiBjaGFyICpn ZXRfdHlwbmFtZShPaWQgdHlwaWQpOwogZXh0ZXJuIGludDE2IGdldF90eXBsZW4oT2lkIHR5cGlk KTsKIGV4dGVybiBib29sIGdldF90eXBieXZhbChPaWQgdHlwaWQpOwogZXh0ZXJuIHZvaWQgZ2V0 X3R5cGxlbmJ5dmFsKE9pZCB0eXBpZCwgaW50MTYgKnR5cGxlbiwgYm9vbCAqdHlwYnl2YWwpOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zYW5pdHlfY2hlY2sub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zYW5pdHlfY2hlY2sub3V0CmluZGV4IDFmODQ0NWI3 MzYuLjFlNmIyODIyMTIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2Fu aXR5X2NoZWNrLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nhbml0eV9jaGVj ay5vdXQKQEAgLTIxOCw2ICsyMTgsOCBAQCB0cmlnZ2VyX3BhcnRlZF9wMXx0CiB0cmlnZ2VyX3Bh cnRlZF9wMV8xfHQKIHZhcmNoYXJfdGJsfGYKIHZpZXdfYmFzZV90YWJsZXx0Cit3aXRob3V0X292 ZXJsYXBzX3Rlc3R8dAord2l0aG91dF9vdmVybGFwc191cV90ZXN0fHQKIC0tIHJlc3RvcmUgbm9y bWFsIG91dHB1dCBtb2RlCiBcYVx0CiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv d2l0aG91dF9vdmVybGFwcy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uNzA4YjVkMzUyOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKQEAgLTAsMCArMSwyODYgQEAKKy0tIFRlc3RzIGZvciBX SVRIT1VUIE9WRVJMQVBTLgorLS0KKy0tIHRlc3QgaW5wdXQgcGFyc2VyCistLQorLS0gUEsgd2l0 aCBubyBjb2x1bW5zIGp1c3QgV0lUSE9VVCBPVkVSTEFQUzoKK0NSRUFURSBUQUJMRSB3aXRob3V0 X292ZXJsYXBzX3Rlc3QgKAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB3aXRob3V0 X292ZXJsYXBzX3BrIFBSSU1BUlkgS0VZICh2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsK K0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIldJVEhPVVQiCitMSU5FIDM6IC4uLlNU UkFJTlQgd2l0aG91dF9vdmVybGFwc19wayBQUklNQVJZIEtFWSAodmFsaWRfYXQgV0lUSE9VVCBP Vi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KKy0tIFBLIHdpdGggYSByYW5nZSBjb2x1bW4vUEVSSU9EIHRoYXQgaXNuJ3Qg dGhlcmU6CitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0ICgKKwlpZCBJTlRFR0VS LAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwc19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRVJST1I6ICByYW5nZSBvciBQRVJJT0QgInZhbGlk X2F0IiBuYW1lZCBpbiBXSVRIT1VUIE9WRVJMQVBTIGRvZXMgbm90IGV4aXN0CistLSBQSyB3aXRo IGEgbm9uLXJhbmdlIGNvbHVtbjoKK0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg KAorCWlkIElOVEVHRVIsCisJdmFsaWRfYXQgVEVYVCwKKwlDT05TVFJBSU5UIHdpdGhvdXRfb3Zl cmxhcHNfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsK K0VSUk9SOiAgY29sdW1uICJ2YWxpZF9hdCIgbmFtZWQgaW4gV0lUSE9VVCBPVkVSTEFQUyBpcyBu b3QgYSByYW5nZSB0eXBlCistLSBQSyB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIHJhbmdlOgorQ1JF QVRFIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoCisJLS0gU2luY2Ugd2UgY2FuJ3QgZGVw ZW5kIG9uIGhhdmluZyBidHJlZV9naXN0IGhlcmUsCisJLS0gdXNlIGFuIGludDRyYW5nZSBpbnN0 ZWFkIG9mIGFuIGludC4KKwktLSAoVGhlIHJhbmdldHlwZXMgcmVncmVzc2lvbiB0ZXN0IHVzZXMg dGhlIHNhbWUgdHJpY2suKQorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNP TlNUUkFJTlQgd2l0aG91dF9vdmVybGFwc19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpCispOworLS0gUEsgd2l0aCB0d28gY29sdW1ucyBwbHVzIGEgcmFuZ2U6 CitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiAoCisJaWQxIGludDRyYW5nZSwK KwlpZDIgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB3aXRob3V0 X292ZXJsYXBzMl9wayBQUklNQVJZIEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCispOworRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyOworLS0gUEsgd2l0 aCBvbmUgY29sdW1uIHBsdXMgYSBQRVJJT0Q6CitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFw c190ZXN0MiAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gZGF0ZSwKKwl2YWxpZF90aWwg ZGF0ZSwKKwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCUNP TlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorKTsKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZS T00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3dpdGhvdXRfb3ZlcmxhcHMyX3BrJzsK KyAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUFJJTUFSWSBLRVkgKGlkLCB2 YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKDEgcm93KQorCitEUk9QIFRBQkxFIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdDI7CistLSBQSyB3aXRoIHR3byBjb2x1bW5zIHBsdXMgYSBQRVJJT0Q6CitD UkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiAoCisJaWQxIGludDRyYW5nZSwKKwlp ZDIgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gZGF0ZSwKKwl2YWxpZF90aWwgZGF0ZSwKKwlQRVJJ T0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCUNPTlNUUkFJTlQgd2l0 aG91dF9vdmVybGFwczJfcGsgUFJJTUFSWSBLRVkgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKQorKTsKK0RST1AgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MjsKKy0tIFBL IHdpdGggYSBjdXN0b20gcmFuZ2UgdHlwZToKK0NSRUFURSBUWVBFIHRleHRyYW5nZTIgQVMgcmFu Z2UgKHN1YnR5cGU9dGV4dCwgY29sbGF0aW9uPSJDIik7CitDUkVBVEUgVEFCTEUgd2l0aG91dF9v dmVybGFwc190ZXN0MiAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRleHRyYW5nZTIsCisJ Q09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzMl9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0 MiBEUk9QIENPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJfcGs7CitEUk9QIFRBQkxFIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdDI7CitEUk9QIFRZUEUgdGV4dHJhbmdlMjsKKy0tIFVOSVFVRSB3aXRo IG5vIGNvbHVtbnMganVzdCBXSVRIT1VUIE9WRVJMQVBTOgorQ1JFQVRFIFRBQkxFIHdpdGhvdXRf b3ZlcmxhcHNfdXFfdGVzdCAoCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHdpdGhv dXRfb3ZlcmxhcHNfdXEgVU5JUVVFICh2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0VS Uk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIldJVEhPVVQiCitMSU5FIDM6ICBDT05TVFJB SU5UIHdpdGhvdXRfb3ZlcmxhcHNfdXEgVU5JUVVFICh2YWxpZF9hdCBXSVRIT1VUIE9WRS4uLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorLS0gVU5JUVVFIHdpdGggYSByYW5nZSBjb2x1bW4vUEVSSU9EIHRoYXQgaXNuJ3QgdGhlcmU6 CitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc191cV90ZXN0ICgKKwlpZCBJTlRFR0VSLAor CUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwc191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorKTsKK0VSUk9SOiAgcmFuZ2Ugb3IgUEVSSU9EICJ2YWxpZF9hdCIgbmFt ZWQgaW4gV0lUSE9VVCBPVkVSTEFQUyBkb2VzIG5vdCBleGlzdAorLS0gVU5JUVVFIHdpdGggYSBu b24tcmFuZ2UgY29sdW1uOgorQ1JFQVRFIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdXFfdGVzdCAo CisJaWQgSU5URUdFUiwKKwl2YWxpZF9hdCBURVhULAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVy bGFwc191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0VSUk9S OiAgY29sdW1uICJ2YWxpZF9hdCIgbmFtZWQgaW4gV0lUSE9VVCBPVkVSTEFQUyBpcyBub3QgYSBy YW5nZSB0eXBlCistLSBVTklRVUUgd2l0aCBvbmUgY29sdW1uIHBsdXMgYSByYW5nZToKK0NSRUFU RSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3VxX3Rlc3QgKAorCS0tIFNpbmNlIHdlIGNhbid0IGRl cGVuZCBvbiBoYXZpbmcgYnRyZWVfZ2lzdCBoZXJlLAorCS0tIHVzZSBhbiBpbnQ0cmFuZ2UgaW5z dGVhZCBvZiBhbiBpbnQuCisJLS0gKFRoZSByYW5nZXR5cGVzIHJlZ3Jlc3Npb24gdGVzdCB1c2Vz IHRoZSBzYW1lIHRyaWNrLikKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlD T05TVFJBSU5UIHdpdGhvdXRfb3ZlcmxhcHNfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUykKKyk7CistLSBVTklRVUUgd2l0aCB0d28gY29sdW1ucyBwbHVzIGEgcmFuZ2U6 CitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc191cV90ZXN0MiAoCisJaWQxIGludDRyYW5n ZSwKKwlpZDIgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB3aXRo b3V0X292ZXJsYXBzMl91cSBVTklRVUUgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorKTsKK0RST1AgVEFCTEUgd2l0aG91dF9vdmVybGFwc191cV90ZXN0MjsKKy0tIFVOSVFV RSB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIFBFUklPRDoKK0NSRUFURSBUQUJMRSB3aXRob3V0X292 ZXJsYXBzX3VxX3Rlc3QyICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSB0aW1lc3RhbXAs CisJdmFsaWRfdGlsIHRpbWVzdGFtcCwKKwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9t LCB2YWxpZF90aWwpLAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJfdXEgVU5JUVVFIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitEUk9QIFRBQkxFIHdpdGhvdXRfb3Zl cmxhcHNfdXFfdGVzdDI7CistLSBVTklRVUUgd2l0aCB0d28gY29sdW1ucyBwbHVzIGEgUEVSSU9E OgorQ1JFQVRFIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdXFfdGVzdDIgKAorCWlkMSBpbnQ0cmFu Z2UsCisJaWQyIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIHRpbWVzdGFtcCwKKwl2YWxpZF90aWwg dGltZXN0YW1wLAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCks CisJQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzMl91cSBVTklRVUUgKGlkMSwgaWQyLCB2YWxp ZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0RST1AgVEFCTEUgd2l0aG91dF9vdmVybGFwc191 cV90ZXN0MjsKKy0tIFVOSVFVRSB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGU6CitDUkVBVEUgVFlQ RSB0ZXh0cmFuZ2UyIEFTIHJhbmdlIChzdWJ0eXBlPXRleHQsIGNvbGxhdGlvbj0iQyIpOworQ1JF QVRFIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdXFfdGVzdDIgKAorCWlkIGludDRyYW5nZSwKKwl2 YWxpZF9hdCB0ZXh0cmFuZ2UyLAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJfdXEgVU5J UVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSB3aXRo b3V0X292ZXJsYXBzX3VxX3Rlc3QyIERST1AgQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzMl91 cTsKK0RST1AgVEFCTEUgd2l0aG91dF9vdmVybGFwc191cV90ZXN0MjsKK0RST1AgVFlQRSB0ZXh0 cmFuZ2UyOworLS0KKy0tIHRlc3QgQUxURVIgVEFCTEUgQUREIENPTlNUUkFJTlQKKy0tCitEUk9Q IFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDsKK0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJs YXBzX3Rlc3QgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlCispOworQUxURVIg VEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0CisJQUREIENPTlNUUkFJTlQgd2l0aG91dF9vdmVy bGFwc19waworCVBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7Cist LSBQSyB3aXRoIFVTSU5HIElOREVYIChub3QgeWV0IGFsbG93ZWQpOgorQ1JFQVRFIFRBQkxFIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdDIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3Jhbmdl CispOworQ1JFQVRFIElOREVYIGlkeF93aXRob3V0X292ZXJsYXBzMiBPTiB3aXRob3V0X292ZXJs YXBzX3Rlc3QyIFVTSU5HIGdpc3QgKGlkLCB2YWxpZF9hdCk7CitBTFRFUiBUQUJMRSB3aXRob3V0 X292ZXJsYXBzX3Rlc3QyCisJQUREIENPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJfcGsKKwlQ UklNQVJZIEtFWSBVU0lORyBJTkRFWCBpZHhfd2l0aG91dF9vdmVybGFwczI7CitFUlJPUjogICJp ZHhfd2l0aG91dF9vdmVybGFwczIiIGlzIG5vdCBhIHVuaXF1ZSBpbmRleAorTElORSAyOiAgQURE IENPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJfcGsKKyAgICAgICAgICAgICBeCitERVRBSUw6 ICBDYW5ub3QgY3JlYXRlIGEgcHJpbWFyeSBrZXkgb3IgdW5pcXVlIGNvbnN0cmFpbnQgdXNpbmcg c3VjaCBhbiBpbmRleC4KK0RST1AgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MjsKKy0tIFVO SVFVRSB3aXRoIFVTSU5HIElOREVYIChub3QgeWV0IGFsbG93ZWQpOgorQ1JFQVRFIFRBQkxFIHdp dGhvdXRfb3ZlcmxhcHNfdXFfdGVzdDIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3Jh bmdlCispOworQ1JFQVRFIElOREVYIGlkeF93aXRob3V0X292ZXJsYXBzX3VxIE9OIHdpdGhvdXRf b3ZlcmxhcHNfdXFfdGVzdDIgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0KTsKK0FMVEVSIFRBQkxF IHdpdGhvdXRfb3ZlcmxhcHNfdXFfdGVzdDIKKwlBREQgQ09OU1RSQUlOVCB3aXRob3V0X292ZXJs YXBzMl91cQorCVVOSVFVRSBVU0lORyBJTkRFWCBpZHhfd2l0aG91dF9vdmVybGFwc191cTsKK0VS Uk9SOiAgImlkeF93aXRob3V0X292ZXJsYXBzX3VxIiBpcyBub3QgYSB1bmlxdWUgaW5kZXgKK0xJ TkUgMjogIEFERCBDT05TVFJBSU5UIHdpdGhvdXRfb3ZlcmxhcHMyX3VxCisgICAgICAgICAgICAg XgorREVUQUlMOiAgQ2Fubm90IGNyZWF0ZSBhIHByaW1hcnkga2V5IG9yIHVuaXF1ZSBjb25zdHJh aW50IHVzaW5nIHN1Y2ggYW4gaW5kZXguCitEUk9QIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdXFf dGVzdDI7CistLSBBZGQgcmFuZ2UgY29sdW1uIGFuZCB0aGUgUEsgYXQgdGhlIHNhbWUgdGltZQor Q1JFQVRFIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgKAorCWlkIGludDRyYW5nZQorKTsK K0FMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIKKwlBREQgQ09MVU1OIHZhbGlkX2F0 IHRzcmFuZ2UsCisJQUREIENPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJfcGsKKwlQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworRFJPUCBUQUJMRSB3aXRob3V0 X292ZXJsYXBzX3Rlc3QyOworLS0gQWRkIFBFUklPRCBhbmQgdGhlIFBLIGF0IHRoZSBzYW1lIHRp bWUKK0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyICgKKwlpZCBpbnQ0cmFuZ2Us CisJdmFsaWRfZnJvbSBkYXRlLAorCXZhbGlkX3RpbCBkYXRlCispOworQUxURVIgVEFCTEUgd2l0 aG91dF9vdmVybGFwc190ZXN0MgorCUFERCBQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9t LCB2YWxpZF90aWwpLAorCUFERCBDT05TVFJBSU5UIHdpdGhvdXRfb3ZlcmxhcHMyX3BrCisJUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsKK0RST1AgVEFCTEUgd2l0 aG91dF9vdmVybGFwc190ZXN0MjsKKy0tIEFkZCByYW5nZSBjb2x1bW4gYW5kIFVOSVFVRSBjb25z dHJhaW50IGF0IHRoZSBzYW1lIHRpbWUKK0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rl c3QyICgKKwlpZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rl c3QyCisJQUREIENPTFVNTiB2YWxpZF9hdCB0c3JhbmdlLAorCUFERCBDT05TVFJBSU5UIHdpdGhv dXRfb3ZlcmxhcHMyX3VxCisJVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7 CitEUk9QIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDI7CistLSBBZGQgUEVSSU9EIGNvbHVt biBhbmQgVU5JUVVFIGNvbnN0cmFpbnQgYXQgdGhlIHNhbWUgdGltZQorQ1JFQVRFIFRBQkxFIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdDIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIGRhdGUs CisJdmFsaWRfdGlsIGRhdGUKKyk7CitBTFRFUiBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qy CisJQUREIFBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCisJQURE IENPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJfdXEKKwlVTklRVUUgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKTsKK0RST1AgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MjsKKy0t IEFkZCBkYXRlIGNvbHVtbnMsIFBFUklPRCwgYW5kIHRoZSBQSyBhdCB0aGUgc2FtZSB0aW1lCitD UkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiAoCisJaWQgaW50NHJhbmdlCispOwor QUxURVIgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MgorCUFERCBDT0xVTU4gdmFsaWRfZnJv bSBkYXRlLAorCUFERCBDT0xVTU4gdmFsaWRfdGlsIGRhdGUsCisJQUREIFBFUklPRCBGT1IgdmFs aWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCisJQUREIENPTlNUUkFJTlQgd2l0aG91dF9v dmVybGFwczJfcGsKKwlQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp OworRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyOworLS0gQWRkIGRhdGUgY29sdW1u cywgUEVSSU9ELCBhbmQgVU5JUVVFIGNvbnN0cmFpbnQgYXQgdGhlIHNhbWUgdGltZQorQ1JFQVRF IFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgKAorCWlkIGludDRyYW5nZQorKTsKK0FMVEVS IFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIKKwlBREQgQ09MVU1OIHZhbGlkX2Zyb20gZGF0 ZSwKKwlBREQgQ09MVU1OIHZhbGlkX3RpbCBkYXRlLAorCUFERCBQRVJJT0QgRk9SIHZhbGlkX2F0 ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCUFERCBDT05TVFJBSU5UIHdpdGhvdXRfb3Zlcmxh cHMyX3VxCisJVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitEUk9QIFRB QkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDI7CistLQorLS0gdGVzdCBwZ19nZXRfY29uc3RyYWlu dGRlZgorLS0KK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3Ry YWludCBXSEVSRSBjb25uYW1lID0gJ3dpdGhvdXRfb3ZlcmxhcHNfcGsnOworICAgICAgICAgICAg cGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCisoMSByb3cpCisKKy0tCistLSB0ZXN0IFBLIGluc2VydHMKKy0tCistLSBv a2F5OgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxLDFdJywg dHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAzJykpOworSU5TRVJUIElOVE8gd2l0aG91 dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMy0wMycsICcy MDE4LTA0LTA0JykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAo J1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpOworSU5TRVJUIElO VE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsIE5VTEwpKTsKKy0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVy bGFwc190ZXN0IFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAx LTA1JykpOworRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFsdWUgdmlvbGF0ZXMgZXhjbHVzaW9u IGNvbnN0cmFpbnQgIndpdGhvdXRfb3ZlcmxhcHNfcGsiCitERVRBSUw6ICBLZXkgKGlkLCB2YWxp ZF9hdCk9KFsxLDIpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKYW4gMDUgMDA6 MDA6MDAgMjAxOCIpKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkgKGlkLCB2YWxpZF9hdCk9 KFsxLDIpLCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIlNhdCBGZWIgMDMgMDA6MDA6MDAg MjAxOCIpKS4KK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKE5VTEws IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKTsKK0VSUk9SOiAgbnVsbCB2YWx1 ZSBpbiBjb2x1bW4gImlkIiBvZiByZWxhdGlvbiAid2l0aG91dF9vdmVybGFwc190ZXN0IiB2aW9s YXRlcyBub3QtbnVsbCBjb25zdHJhaW50CitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAo bnVsbCwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSmFuIDA1IDAwOjAwOjAwIDIw MTgiKSkuCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzMsM10n LCBOVUxMKTsKK0VSUk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1bW4gInZhbGlkX2F0IiBvZiByZWxh dGlvbiAid2l0aG91dF9vdmVybGFwc190ZXN0IiB2aW9sYXRlcyBub3QtbnVsbCBjb25zdHJhaW50 CitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoWzMsNCksIG51bGwpLgorLS0KKy0tIHRl c3QgY2hhbmdpbmcgdGhlIFBLJ3MgZGVwZW5kZW5jaWVzCistLQorQ1JFQVRFIFRBQkxFIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdDIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAor CUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dDIgQUxURVIgQ09MVU1OIHZhbGlkX2F0IERST1AgTk9UIE5VTEw7CitFUlJPUjogIGNvbHVtbiAi dmFsaWRfYXQiIGlzIGluIGEgcHJpbWFyeSBrZXkKK0FMVEVSIFRBQkxFIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdDIgQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgdHN0enJhbmdlIFVTSU5HIHRzdHpy YW5nZShsb3dlcih2YWxpZF9hdCksIHVwcGVyKHZhbGlkX2F0KSk7CitBTFRFUiBUQUJMRSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QyIFJFTkFNRSBDT0xVTU4gdmFsaWRfYXQgVE8gdmFsaWRfdGhydTsK K0FMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgRFJPUCBDT0xVTU4gdmFsaWRfdGhy dTsKK0RST1AgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MjsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVs X3NjaGVkdWxlCmluZGV4IDExMjJhMDY4ZDEuLmJjNGFhMWQ2MDUgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJh bGxlbF9zY2hlZHVsZQpAQCAtMzAsNyArMzAsNyBAQCB0ZXN0OiBzdHJpbmdzIG51bWVyb2xvZ3kg cG9pbnQgbHNlZyBsaW5lIGJveCBwYXRoIHBvbHlnb24gY2lyY2xlIGRhdGUgdGltZSB0aW1ldAog IyBob3JvbG9neSBkZXBlbmRzIG9uIGludGVydmFsLCB0aW1ldHosIHRpbWVzdGFtcCwgdGltZXN0 YW1wdHoKICMgb3ByX3Nhbml0eSBkZXBlbmRzIG9uIGNyZWF0ZV9mdW5jdGlvbl8wCiAjIC0tLS0t LS0tLS0KLXRlc3Q6IGdlb21ldHJ5IGhvcm9sb2d5IHRzdHlwZXMgcmVnZXggdHlwZV9zYW5pdHkg b3ByX3Nhbml0eSBtaXNjX3Nhbml0eSBjb21tZW50cyBleHByZXNzaW9ucyB1bmljb2RlIHhpZCBt dmNjCit0ZXN0OiBnZW9tZXRyeSBob3JvbG9neSB0c3R5cGVzIHJlZ2V4IHR5cGVfc2FuaXR5IG9w cl9zYW5pdHkgbWlzY19zYW5pdHkgY29tbWVudHMgZXhwcmVzc2lvbnMgdW5pY29kZSB4aWQgbXZj YyB3aXRob3V0X292ZXJsYXBzCiAKICMgLS0tLS0tLS0tLQogIyBUaGVzZSBmb3VyIGVhY2ggZGVw ZW5kIG9uIHRoZSBwcmV2aW91cyBvbmUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3dpdGhvdXRfb3ZlcmxhcHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVy bGFwcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZTY0ZWM2OWYw YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3Zlcmxh cHMuc3FsCkBAIC0wLDAgKzEsMjk1IEBACistLSBUZXN0cyBmb3IgV0lUSE9VVCBPVkVSTEFQUy4K KworLS0KKy0tIHRlc3QgaW5wdXQgcGFyc2VyCistLQorCistLSBQSyB3aXRoIG5vIGNvbHVtbnMg anVzdCBXSVRIT1VUIE9WRVJMQVBTOgorCitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190 ZXN0ICgKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwc19w ayBQUklNQVJZIEtFWSAodmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKKy0tIFBLIHdp dGggYSByYW5nZSBjb2x1bW4vUEVSSU9EIHRoYXQgaXNuJ3QgdGhlcmU6CisKK0NSRUFURSBUQUJM RSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgKAorCWlkIElOVEVHRVIsCisJQ09OU1RSQUlOVCB3aXRo b3V0X292ZXJsYXBzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKyk7CisKKy0tIFBLIHdpdGggYSBub24tcmFuZ2UgY29sdW1uOgorCitDUkVBVEUgVEFCTEUg d2l0aG91dF9vdmVybGFwc190ZXN0ICgKKwlpZCBJTlRFR0VSLAorCXZhbGlkX2F0IFRFWFQsCisJ Q09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUykKKyk7CisKKy0tIFBLIHdpdGggb25lIGNvbHVtbiBwbHVzIGEgcmFu Z2U6CisKK0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgKAorCS0tIFNpbmNlIHdl IGNhbid0IGRlcGVuZCBvbiBoYXZpbmcgYnRyZWVfZ2lzdCBoZXJlLAorCS0tIHVzZSBhbiBpbnQ0 cmFuZ2UgaW5zdGVhZCBvZiBhbiBpbnQuCisJLS0gKFRoZSByYW5nZXR5cGVzIHJlZ3Jlc3Npb24g dGVzdCB1c2VzIHRoZSBzYW1lIHRyaWNrLikKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNy YW5nZSwKKwlDT05TVFJBSU5UIHdpdGhvdXRfb3ZlcmxhcHNfcGsgUFJJTUFSWSBLRVkgKGlkLCB2 YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKKworLS0gUEsgd2l0aCB0d28gY29sdW1ucyBw bHVzIGEgcmFuZ2U6CitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiAoCisJaWQx IGludDRyYW5nZSwKKwlpZDIgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RS QUlOVCB3aXRob3V0X292ZXJsYXBzMl9wayBQUklNQVJZIEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qy OworCisKKy0tIFBLIHdpdGggb25lIGNvbHVtbiBwbHVzIGEgUEVSSU9EOgorQ1JFQVRFIFRBQkxF IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIGRh dGUsCisJdmFsaWRfdGlsIGRhdGUsCisJUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwg dmFsaWRfdGlsKSwKKwlDT05TVFJBSU5UIHdpdGhvdXRfb3ZlcmxhcHMyX3BrIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitTRUxFQ1QgcGdfZ2V0X2NvbnN0 cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd3aXRob3V0 X292ZXJsYXBzMl9wayc7CitEUk9QIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDI7CisKKy0t IFBLIHdpdGggdHdvIGNvbHVtbnMgcGx1cyBhIFBFUklPRDoKK0NSRUFURSBUQUJMRSB3aXRob3V0 X292ZXJsYXBzX3Rlc3QyICgKKwlpZDEgaW50NHJhbmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJdmFs aWRfZnJvbSBkYXRlLAorCXZhbGlkX3RpbCBkYXRlLAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZh bGlkX2Zyb20sIHZhbGlkX3RpbCksCisJQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzMl9wayBQ UklNQVJZIEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRFJP UCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyOworCistLSBQSyB3aXRoIGEgY3VzdG9tIHJh bmdlIHR5cGU6CitDUkVBVEUgVFlQRSB0ZXh0cmFuZ2UyIEFTIHJhbmdlIChzdWJ0eXBlPXRleHQs IGNvbGxhdGlvbj0iQyIpOworQ1JFQVRFIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgKAor CWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0ZXh0cmFuZ2UyLAorCUNPTlNUUkFJTlQgd2l0aG91 dF9vdmVybGFwczJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KQorKTsKK0FMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgRFJPUCBDT05TVFJBSU5U IHdpdGhvdXRfb3ZlcmxhcHMyX3BrOworRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qy OworRFJPUCBUWVBFIHRleHRyYW5nZTI7CisKKy0tIFVOSVFVRSB3aXRoIG5vIGNvbHVtbnMganVz dCBXSVRIT1VUIE9WRVJMQVBTOgorCitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc191cV90 ZXN0ICgKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwc191 cSBVTklRVUUgKHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCistLSBVTklRVUUgd2l0 aCBhIHJhbmdlIGNvbHVtbi9QRVJJT0QgdGhhdCBpc24ndCB0aGVyZToKKworQ1JFQVRFIFRBQkxF IHdpdGhvdXRfb3ZlcmxhcHNfdXFfdGVzdCAoCisJaWQgSU5URUdFUiwKKwlDT05TVFJBSU5UIHdp dGhvdXRfb3ZlcmxhcHNfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykK Kyk7CisKKy0tIFVOSVFVRSB3aXRoIGEgbm9uLXJhbmdlIGNvbHVtbjoKKworQ1JFQVRFIFRBQkxF IHdpdGhvdXRfb3ZlcmxhcHNfdXFfdGVzdCAoCisJaWQgSU5URUdFUiwKKwl2YWxpZF9hdCBURVhU LAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwc191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorKTsKKworLS0gVU5JUVVFIHdpdGggb25lIGNvbHVtbiBwbHVzIGEg cmFuZ2U6CisKK0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3VxX3Rlc3QgKAorCS0tIFNp bmNlIHdlIGNhbid0IGRlcGVuZCBvbiBoYXZpbmcgYnRyZWVfZ2lzdCBoZXJlLAorCS0tIHVzZSBh biBpbnQ0cmFuZ2UgaW5zdGVhZCBvZiBhbiBpbnQuCisJLS0gKFRoZSByYW5nZXR5cGVzIHJlZ3Jl c3Npb24gdGVzdCB1c2VzIHRoZSBzYW1lIHRyaWNrLikKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHdpdGhvdXRfb3ZlcmxhcHNfdXEgVU5JUVVFIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKKy0tIFVOSVFVRSB3aXRoIHR3byBjb2x1 bW5zIHBsdXMgYSByYW5nZToKK0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3VxX3Rlc3Qy ICgKKwlpZDEgaW50NHJhbmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwK KwlDT05TVFJBSU5UIHdpdGhvdXRfb3ZlcmxhcHMyX3VxIFVOSVFVRSAoaWQxLCBpZDIsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Vx X3Rlc3QyOworCistLSBVTklRVUUgd2l0aCBvbmUgY29sdW1uIHBsdXMgYSBQRVJJT0Q6CitDUkVB VEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc191cV90ZXN0MiAoCisJaWQgaW50NHJhbmdlLAorCXZh bGlkX2Zyb20gdGltZXN0YW1wLAorCXZhbGlkX3RpbCB0aW1lc3RhbXAsCisJUEVSSU9EIEZPUiB2 YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSwKKwlDT05TVFJBSU5UIHdpdGhvdXRfb3Zl cmxhcHMyX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRFJP UCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3VxX3Rlc3QyOworCistLSBVTklRVUUgd2l0aCB0d28g Y29sdW1ucyBwbHVzIGEgUEVSSU9EOgorQ1JFQVRFIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdXFf dGVzdDIgKAorCWlkMSBpbnQ0cmFuZ2UsCisJaWQyIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIHRp bWVzdGFtcCwKKwl2YWxpZF90aWwgdGltZXN0YW1wLAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZh bGlkX2Zyb20sIHZhbGlkX3RpbCksCisJQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzMl91cSBV TklRVUUgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0RST1AgVEFC TEUgd2l0aG91dF9vdmVybGFwc191cV90ZXN0MjsKKworLS0gVU5JUVVFIHdpdGggYSBjdXN0b20g cmFuZ2UgdHlwZToKK0NSRUFURSBUWVBFIHRleHRyYW5nZTIgQVMgcmFuZ2UgKHN1YnR5cGU9dGV4 dCwgY29sbGF0aW9uPSJDIik7CitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc191cV90ZXN0 MiAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRleHRyYW5nZTIsCisJQ09OU1RSQUlOVCB3 aXRob3V0X292ZXJsYXBzMl91cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KQorKTsKK0FMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdXFfdGVzdDIgRFJPUCBDT05TVFJB SU5UIHdpdGhvdXRfb3ZlcmxhcHMyX3VxOworRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Vx X3Rlc3QyOworRFJPUCBUWVBFIHRleHRyYW5nZTI7CisKKy0tCistLSB0ZXN0IEFMVEVSIFRBQkxF IEFERCBDT05TVFJBSU5UCistLQorCitEUk9QIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDsK K0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgKAorCWlkIGludDRyYW5nZSwKKwl2 YWxpZF9hdCB0c3JhbmdlCispOworQUxURVIgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0CisJ QUREIENPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwc19waworCVBSSU1BUlkgS0VZIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CisKKy0tIFBLIHdpdGggVVNJTkcgSU5ERVggKG5vdCB5 ZXQgYWxsb3dlZCk6CitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiAoCisJaWQg aW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitDUkVBVEUgSU5ERVggaWR4X3dpdGhv dXRfb3ZlcmxhcHMyIE9OIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgVVNJTkcgZ2lzdCAoaWQsIHZh bGlkX2F0KTsKK0FMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIKKwlBREQgQ09OU1RS QUlOVCB3aXRob3V0X292ZXJsYXBzMl9waworCVBSSU1BUlkgS0VZIFVTSU5HIElOREVYIGlkeF93 aXRob3V0X292ZXJsYXBzMjsKK0RST1AgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MjsKKwor LS0gVU5JUVVFIHdpdGggVVNJTkcgSU5ERVggKG5vdCB5ZXQgYWxsb3dlZCk6CitDUkVBVEUgVEFC TEUgd2l0aG91dF9vdmVybGFwc191cV90ZXN0MiAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0 IHRzcmFuZ2UKKyk7CitDUkVBVEUgSU5ERVggaWR4X3dpdGhvdXRfb3ZlcmxhcHNfdXEgT04gd2l0 aG91dF9vdmVybGFwc191cV90ZXN0MiBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpOworQUxURVIg VEFCTEUgd2l0aG91dF9vdmVybGFwc191cV90ZXN0MgorCUFERCBDT05TVFJBSU5UIHdpdGhvdXRf b3ZlcmxhcHMyX3VxCisJVU5JUVVFIFVTSU5HIElOREVYIGlkeF93aXRob3V0X292ZXJsYXBzX3Vx OworRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3VxX3Rlc3QyOworCistLSBBZGQgcmFuZ2Ug Y29sdW1uIGFuZCB0aGUgUEsgYXQgdGhlIHNhbWUgdGltZQorQ1JFQVRFIFRBQkxFIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdDIgKAorCWlkIGludDRyYW5nZQorKTsKK0FMVEVSIFRBQkxFIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdDIKKwlBREQgQ09MVU1OIHZhbGlkX2F0IHRzcmFuZ2UsCisJQUREIENPTlNU UkFJTlQgd2l0aG91dF9vdmVybGFwczJfcGsKKwlQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpOworRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyOworCist LSBBZGQgUEVSSU9EIGFuZCB0aGUgUEsgYXQgdGhlIHNhbWUgdGltZQorQ1JFQVRFIFRBQkxFIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdDIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIGRhdGUs CisJdmFsaWRfdGlsIGRhdGUKKyk7CitBTFRFUiBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qy CisJQUREIFBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCisJQURE IENPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJfcGsKKwlQUklNQVJZIEtFWSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qy OworCistLSBBZGQgcmFuZ2UgY29sdW1uIGFuZCBVTklRVUUgY29uc3RyYWludCBhdCB0aGUgc2Ft ZSB0aW1lCitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiAoCisJaWQgaW50NHJh bmdlCispOworQUxURVIgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MgorCUFERCBDT0xVTU4g dmFsaWRfYXQgdHNyYW5nZSwKKwlBREQgQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzMl91cQor CVVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworRFJPUCBUQUJMRSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QyOworCistLSBBZGQgUEVSSU9EIGNvbHVtbiBhbmQgVU5JUVVFIGNv bnN0cmFpbnQgYXQgdGhlIHNhbWUgdGltZQorQ1JFQVRFIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdDIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIGRhdGUsCisJdmFsaWRfdGlsIGRh dGUKKyk7CitBTFRFUiBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyCisJQUREIFBFUklPRCBG T1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCisJQUREIENPTlNUUkFJTlQgd2l0 aG91dF9vdmVybGFwczJfdXEKKwlVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KTsKK0RST1AgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MjsKKworLS0gQWRkIGRhdGUgY29s dW1ucywgUEVSSU9ELCBhbmQgdGhlIFBLIGF0IHRoZSBzYW1lIHRpbWUKK0NSRUFURSBUQUJMRSB3 aXRob3V0X292ZXJsYXBzX3Rlc3QyICgKKwlpZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB3 aXRob3V0X292ZXJsYXBzX3Rlc3QyCisJQUREIENPTFVNTiB2YWxpZF9mcm9tIGRhdGUsCisJQURE IENPTFVNTiB2YWxpZF90aWwgZGF0ZSwKKwlBREQgUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRf ZnJvbSwgdmFsaWRfdGlsKSwKKwlBREQgQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzMl9wawor CVBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitEUk9QIFRBQkxF IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDI7CisKKy0tIEFkZCBkYXRlIGNvbHVtbnMsIFBFUklPRCwg YW5kIFVOSVFVRSBjb25zdHJhaW50IGF0IHRoZSBzYW1lIHRpbWUKK0NSRUFURSBUQUJMRSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QyICgKKwlpZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QyCisJQUREIENPTFVNTiB2YWxpZF9mcm9tIGRhdGUsCisJQUREIENP TFVNTiB2YWxpZF90aWwgZGF0ZSwKKwlBREQgUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJv bSwgdmFsaWRfdGlsKSwKKwlBREQgQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzMl91cQorCVVO SVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworRFJPUCBUQUJMRSB3aXRob3V0 X292ZXJsYXBzX3Rlc3QyOworCistLQorLS0gdGVzdCBwZ19nZXRfY29uc3RyYWludGRlZgorLS0K KworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdI RVJFIGNvbm5hbWUgPSAnd2l0aG91dF9vdmVybGFwc19wayc7CisKKy0tCistLSB0ZXN0IFBLIGlu c2VydHMKKy0tCisKKy0tIG9rYXk6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg VkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDMnKSk7CitJ TlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzEsMV0nLCB0c3Jhbmdl KCcyMDE4LTAzLTAzJywgJzIwMTgtMDQtMDQnKSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJs YXBzX3Rlc3QgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDEt MDUnKSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzMsM10n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgTlVMTCkpOworCistLSBzaG91bGQgZmFpbDoKK0lOU0VS VCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBWQUxVRVMgKE5VTEwsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKTsK K0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMywzXScsIE5VTEwp OworCistLQorLS0gdGVzdCBjaGFuZ2luZyB0aGUgUEsncyBkZXBlbmRlbmNpZXMKKy0tCisKK0NS RUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFs aWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHdpdGhvdXRfb3ZlcmxhcHMyX3BrIFBSSU1BUlkg S0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKK0FMVEVSIFRBQkxFIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdDIgQUxURVIgQ09MVU1OIHZhbGlkX2F0IERST1AgTk9UIE5VTEw7 CitBTFRFUiBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyIEFMVEVSIENPTFVNTiB2YWxpZF9h dCBUWVBFIHRzdHpyYW5nZSBVU0lORyB0c3R6cmFuZ2UobG93ZXIodmFsaWRfYXQpLCB1cHBlcih2 YWxpZF9hdCkpOworQUxURVIgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiBSRU5BTUUgQ09M VU1OIHZhbGlkX2F0IFRPIHZhbGlkX3RocnU7CitBTFRFUiBUQUJMRSB3aXRob3V0X292ZXJsYXBz X3Rlc3QyIERST1AgQ09MVU1OIHZhbGlkX3RocnU7CitEUk9QIFRBQkxFIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdDI7Ci0tIAoyLjI2LjIKCg== --00000000000029ba9305c63ba927 Content-Type: application/octet-stream; name="v6-0004-Add-temporal-FOREIGN-KEYs.patch" Content-Disposition: attachment; filename="v6-0004-Add-temporal-FOREIGN-KEYs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kqo20y3t3 RnJvbSBiYTA3NDU3NDBjNDY5ZDgzNWZmMTk0MzgwZGVmYzZiZTM5ZTI0OGMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWluYXRlZGNv bXB1dGluZy5jb20+CkRhdGU6IFN1biwgMjcgSnVuIDIwMjEgMTI6NTg6NTEgLTA3MDAKU3ViamVj dDogW1BBVENIIHY2IDQvNF0gQWRkIHRlbXBvcmFsIEZPUkVJR04gS0VZcwoKLSBBZGRlZCBiaXNv biBzdXBwb3J0IGZvciB0ZW1wb3JhbCBGT1JFSUdOIEtFWXMuIExpa2UgcHJpbWFyeSBrZXlzLCB0 aGV5CiAgY2FuIGhhdmUgZWl0aGVyIGEgUEVSSU9EIG9yIGEgcmFuZ2UgY29sdW1uIGZvciB0aGUg dGVtcG9yYWwgY29tcG9uZW50LgotIEFkZGVkIHRlbXBvcmFsIHRyaWdnZXIgZnVuY3Rpb25zIGFr aW4gdG8gZXhpc3RpbmcgUkkgdHJpZ2dlcgogIGZ1bmN0aW9ucy4KLSBBZGRlZCBzdXBwb3J0IGZv ciBPTiB7VVBEQVRFLERFTEVURX0ge0NBU0NBREUsU0VUIE5VTEwsU0VUIERFRkFVTFR9LgotIEFk ZGVkIHBnX2NvbnN0cmFpbnQuY29uZnBlcmlvZCB0byByZWNvcmQgdGhlIG9pZCBvZiBhIFBFUklP RCB1c2VkIGluCiAgdGhlIG90aGVyIHRhYmxlLiBJZiBhbiBGSyB1c2VzIGEgcmFuZ2UgY29sdW1u IGluc3RlYWQsIHdlIGp1c3QgcmVjb3JkCiAgaXRzIGF0dG51bSB3aXRoIHRoZSBvdGhlciBhdHRu dW1zIHVzZWQgYnkgdGhlIGNvbnN0cmFpbnQuCi0gV2Ugc3VwcG9ydCBmb3JlaWduIGtleXMgd2hl cmUgb25lIHRhYmxlIHVzZXMgYSBQRVJJT0QgYW5kIHRoZSBvdGhlciBhCiAgcmFuZ2U6IHlvdSBk b24ndCBoYXZlIHRvIGNob29zZSBvbmUgb3IgdGhlIG90aGVyIGZvciB5b3VyIHdob2xlCiAgZGF0 YWJhc2UuCi0gQWRkZWQgcGdfZHVtcCBzdXBwb3J0LgotIFNob3cgdGhlIGNvcnJlY3Qgc3ludGF4 IGluIHBzcWwgXGQgb3V0cHV0IGZvciBmb3JlaWduIGtleXMuCi0gQWRkZWQgdGVzdHMgYW5kIGRv Y3VtZW50YXRpb24uCi0tLQogZG9jL3NyYy9zZ21sL2RkbC5zZ21sICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgNCArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAg ICAgICAgfCAgIDQwICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyAgICAgICAgICAgICAg ICAgICAgfCAgICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAg ICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMgICAgICAg ICAgIHwgICAxMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAg ICAgIHwgIDg5MSArKysrKy0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jICAgICAg ICAgICAgICAgIHwgICAgMiArCiBzcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jICAgICAg ICAgICAgICAgfCAgICAxICsKIHNyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jICAgICAgICAg ICAgICAgICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAg ICAgICAgIHwgICAzMSArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYyAgICAg ICAgICAgIHwgICAyOSArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAg ICAgICAgfCAxNTQzICsrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMgICAgICAgICAgICAgfCAgIDE3ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0 cmFpbnQuaCAgICAgICAgICAgfCAgIDEwICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0ICAgICAgICAgICAgICAgfCAgIDQ0ICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aCAgICAgICAgICAgICAgICB8ICAgIDIgKwogc3JjL2luY2x1ZGUvdXRpbHMvcmFuZ2V0eXBlcy5o ICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9w b3J0aW9uX29mLm91dCAgfCAgICA5ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2FuaXR5 X2NoZWNrLm91dCAgICB8ICAgIDEgKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVy bGFwcy5vdXQgICAgIHwgMTg0NiArKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9z cWwvZm9yX3BvcnRpb25fb2Yuc3FsICAgICAgIHwgICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC93aXRob3V0X292ZXJsYXBzLnNxbCAgICAgfCAxNDAyICsrKysrKysrKysrKysKIDIyIGZpbGVz IGNoYW5nZWQsIDUzOTkgaW5zZXJ0aW9ucygrKSwgNDk3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbAppbmRleCBj ZDgyOGU0NDc5Li4xZmY1MzkyZjRmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBAIC0xMTkyLDYgKzExOTIsMTAgQEAgQ1JFQVRF IFRBQkxFIGJpbGxpbmdfYWRkcmVzc2VzICgKICAgIDxwYXJhPgogICAgIEFueSB0YWJsZSB3aXRo IGEgdGVtcG9yYWwgcHJpbWFyeSBrZXkgc3VwcG9ydHMgdGVtcG9yYWwgPGxpdGVyYWw+VVBEQVRF PC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+REVMRVRFPC9saXRlcmFsPiB1c2luZyA8bGl0ZXJhbD5G T1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gc3ludGF4LiBTZWUgPHhyZWYgbGlua2VuZD0ic3FsLXVw ZGF0ZSIvPiBhbmQgPHhyZWYgbGlua2VuZD0ic3FsLWRlbGV0ZSIvPiBmb3IgZGV0YWlscy4KICAg IDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgVGVtcG9yYWwgZm9yZWlnbiBrZXlzIGhhdmUgdGhl IHNhbWUgc3RydWN0dXJlIGFzIHRlbXBvcmFsIHByaW1hcnkga2V5cyBhbmQgbXVzdCByZWZlcmVu Y2UgdGVtcG9yYWwgcHJpbWFyeSBrZXlzLiBUaGUgcmVmZXJlbmNlZCBlbnRpdHkgc3BlY2lmaWVk IGJ5IHRoZSBvcmRpbmFyeSBrZXkgcGFydHMgbXVzdCBleGlzdCBmb3IgYXQgbGVhc3QgYXMgbG9u ZyBhcyB0aGUgdmFsdWUgaW4gdGhlIHJlZmVyZW5jaW5nIHJvdy4gTm90ZSB0aGF0IHNldmVyYWwg cm93cyBpbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSBtYXkgYmUgcmVxdWlyZWQgdG8gY29tcGxldGVs eSBzYXRpc2Z5IGEgcmVmZXJlbmNpbmcgdmFsdWUuCisgICA8L3BhcmE+CiAgIDwvc2VjdDI+CiAK ICAgPHNlY3QyIGlkPSJkZGwtcGVyaW9kcy1zeXN0ZW0tcGVyaW9kcyI+CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfdGFibGUuc2dtbAppbmRleCBiY2Y5MzRiNGViLi43M2M3MjAyOGQ2IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3RhYmxlLnNnbWwKQEAgLTg4LDcgKzg4LDcgQEAgUEVSSU9EIEZPUiB7IDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+IHwgU1lTVEVN X1QKICAgVU5JUVVFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1l PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVSTEFQUyBdICkgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxl PiB8CiAgIFBSSU1BUlkgS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVt bl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVSTEFQUyBd ICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxh Y2VhYmxlPiB8CiAgIEVYQ0xVREUgWyBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+aW5kZXhfbWV0aG9kPC9yZXBsYWNlYWJsZT4gXSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5leGNsdWRlX2VsZW1lbnQ8L3JlcGxhY2VhYmxlPiBXSVRIIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5vcGVyYXRvcjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiBb IFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnByZWRpY2F0ZTwvcmVwbGFj ZWFibGU+ICkgXSB8Ci0gIEZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBSRUZFUkVOQ0VTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gWywgLi4u IF0gKSBdCisgIEZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNv bHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVSSU9EIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+IF0gKSBSRUZF UkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFi bGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNl YWJsZT4gWywgLi4uIF0gWywgUEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50 ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+IF0gKSBdCiAgICAgWyBNQVRDSCBGVUxMIHwg TUFUQ0ggUEFSVElBTCB8IE1BVENIIFNJTVBMRSBdIFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZQog Y2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBbIE9O IFVQREFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9u PC9yZXBsYWNlYWJsZT4gXSB9CiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5J VElBTExZIERFRkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCkBAIC0xMTM3LDggKzExMzcs OCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJp Y19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVy bT48bGl0ZXJhbD5SRUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0 YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVm Y29sdW1uPC9yZXBsYWNlYWJsZT4gKSBdIFsgTUFUQ0ggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm1hdGNodHlwZTwvcmVwbGFjZWFibGU+IF0gWyBPTiBERUxFVEUgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0gWyBP TiBVUERBVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlv bjwvcmVwbGFjZWFibGU+IF08L2xpdGVyYWw+IChjb2x1bW4gY29uc3RyYWludCk8L3Rlcm0+CiAK LSAgIDx0ZXJtPjxsaXRlcmFsPkZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKQotICAgIFJFRkVSRU5D RVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRhYmxlPC9yZXBsYWNlYWJsZT4g WyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZjb2x1bW48L3JlcGxhY2VhYmxl PiBbLCAuLi4gXSApIF0KKyAgIDx0ZXJtPjxsaXRlcmFsPkZPUkVJR04gS0VZICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g WywgUEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZh bDwvcmVwbGFjZWFibGU+IF0gKQorICAgIFJFRkVSRU5DRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnJlZnRhYmxlPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5yZWZjb2x1bW48L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCBQRVJJT0QgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJs ZT4gXSApIF0KICAgICBbIE1BVENIIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5tYXRj aHR5cGU8L3JlcGxhY2VhYmxlPiBdCiAgICAgWyBPTiBERUxFVEUgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0KICAgICBbIE9O IFVQREFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9u PC9yZXBsYWNlYWJsZT4gXTwvbGl0ZXJhbD4KQEAgLTExNDksMTEgKzExNDksMjkgQEAgV0lUSCAo IE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwv cmVwbGFjZWFibGU+LCBSRU0KICAgICAgIFRoZXNlIGNsYXVzZXMgc3BlY2lmeSBhIGZvcmVpZ24g a2V5IGNvbnN0cmFpbnQsIHdoaWNoIHJlcXVpcmVzCiAgICAgICB0aGF0IGEgZ3JvdXAgb2Ygb25l IG9yIG1vcmUgY29sdW1ucyBvZiB0aGUgbmV3IHRhYmxlIG11c3Qgb25seQogICAgICAgY29udGFp biB2YWx1ZXMgdGhhdCBtYXRjaCB2YWx1ZXMgaW4gdGhlIHJlZmVyZW5jZWQKLSAgICAgIGNvbHVt bihzKSBvZiBzb21lIHJvdyBvZiB0aGUgcmVmZXJlbmNlZCB0YWJsZS4gIElmIHRoZSA8cmVwbGFj ZWFibGUKKyAgICAgIGNvbHVtbihzKSBvZiBzb21lIHJvdyBvZiB0aGUgcmVmZXJlbmNlZCB0YWJs ZS4KKyAgICAgIElmIHRoZSA8cmVwbGFjZWFibGUKICAgICAgIGNsYXNzPSJwYXJhbWV0ZXIiPnJl ZmNvbHVtbjwvcmVwbGFjZWFibGU+IGxpc3QgaXMgb21pdHRlZCwgdGhlCiAgICAgICBwcmltYXJ5 IGtleSBvZiB0aGUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRhYmxlPC9yZXBs YWNlYWJsZT4KICAgICAgIGlzIHVzZWQuICBUaGUgcmVmZXJlbmNlZCBjb2x1bW5zIG11c3QgYmUg dGhlIGNvbHVtbnMgb2YgYSBub24tZGVmZXJyYWJsZQotICAgICAgdW5pcXVlIG9yIHByaW1hcnkg a2V5IGNvbnN0cmFpbnQgaW4gdGhlIHJlZmVyZW5jZWQgdGFibGUuICBUaGUgdXNlcgorICAgICAg dW5pcXVlIG9yIHByaW1hcnkga2V5IGNvbnN0cmFpbnQgaW4gdGhlIHJlZmVyZW5jZWQgdGFibGUu CisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIElmIHRoZSBsYXN0IGNvbHVtbiBp cyBtYXJrZWQgd2l0aCA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+LAorICAgICAgaXQgbXVzdCBi ZSBhIHBlcmlvZCBvciByYW5nZSBjb2x1bW4sIGFuZCB0aGUgcmVmZXJlbmNlZCB0YWJsZQorICAg ICAgbXVzdCBoYXZlIGEgdGVtcG9yYWwgcHJpbWFyeSBrZXkuCisgICAgICBUaGUgbm9uLTxsaXRl cmFsPlBFUklPRDwvbGl0ZXJhbD4gY29sdW1ucyBhcmUgdHJlYXRlZCBub3JtYWxseQorICAgICAg KGFuZCB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSBvZiB0aGVtKSwKKyAgICAgIGJ1dCB0aGUg PGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiBjb2x1bW4gaXMgbm90IGNvbXBhcmVkIGZvciBlcXVh bGl0eS4KKyAgICAgIEluc3RlYWQgdGhlIGNvbnN0cmFpbnQgaXMgY29uc2lkZXJlZCBzYXRpc2Zp ZWQKKyAgICAgIGlmIHRoZSByZWZlcmVuY2VkIHRhYmxlIGhhcyBtYXRjaGluZyByZWNvcmRzIHdo b3NlIGNvbWJpbmVkIHJhbmdlcyBjb21wbGV0ZWx5IGNvdmVyCisgICAgICB0aGUgcmVmZXJlbmNp bmcgcmVjb3JkLgorICAgICAgSW4gb3RoZXIgd29yZHMsIHRoZSByZWZlcmVuY2UgbXVzdCBoYXZl IGEgcmVmZXJlbnQgZm9yIGl0cyBlbnRpcmUgZHVyYXRpb24uCisgICAgIDwvcGFyYT4KKworICAg ICA8cGFyYT4KKyAgICAgIFRoZSB1c2VyCiAgICAgICBtdXN0IGhhdmUgPGxpdGVyYWw+UkVGRVJF TkNFUzwvbGl0ZXJhbD4gcGVybWlzc2lvbiBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZQogICAgICAg KGVpdGhlciB0aGUgd2hvbGUgdGFibGUsIG9yIHRoZSBzcGVjaWZpYyByZWZlcmVuY2VkIGNvbHVt bnMpLiAgVGhlCiAgICAgICBhZGRpdGlvbiBvZiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgcmVx dWlyZXMgYQpAQCAtMTIyNSw3ICsxMjQzLDEwIEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAg ICAgICAgICA8cGFyYT4KICAgICAgICAgICBEZWxldGUgYW55IHJvd3MgcmVmZXJlbmNpbmcgdGhl IGRlbGV0ZWQgcm93LCBvciB1cGRhdGUgdGhlCiAgICAgICAgICAgdmFsdWVzIG9mIHRoZSByZWZl cmVuY2luZyBjb2x1bW4ocykgdG8gdGhlIG5ldyB2YWx1ZXMgb2YgdGhlCi0gICAgICAgICAgcmVm ZXJlbmNlZCBjb2x1bW5zLCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgcmVmZXJlbmNlZCBjb2x1 bW5zLCByZXNwZWN0aXZlbHkuIEluIGEgdGVtcG9yYWwgZm9yZWlnbiBrZXksCisgICAgICAgICAg dGhlIGRlbGV0ZSB3aWxsIHVzZSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gc2Vt YW50aWNzCisgICAgICAgICAgdG8gY29uc3RyYWluIHRoZSBlZmZlY3QgdG8gdGhlIGJvdW5kcyBv ZiB0aGUgcmVmZXJlbmNlZCByb3cKKyAgICAgICAgICBiZWluZyBkZWxldGVkLgogICAgICAgICAg PC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpAQCAt MTIzNCw3ICsxMjU1LDkgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgICAgPHRlcm0+ PGxpdGVyYWw+U0VUIE5VTEw8L2xpdGVyYWw+PC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CiAg ICAgICAgICA8cGFyYT4KLSAgICAgICAgICBTZXQgdGhlIHJlZmVyZW5jaW5nIGNvbHVtbihzKSB0 byBudWxsLgorICAgICAgICAgIFNldCB0aGUgcmVmZXJlbmNpbmcgY29sdW1uKHMpIHRvIG51bGwu IEluIGEgdGVtcG9yYWwgZm9yZWlnbiBrZXksCisgICAgICAgICAgdGhlIGNoYW5nZSB3aWxsIHVz ZSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gc2VtYW50aWNzCisgICAgICAgICAg dG8gY29uc3RyYWluIHRoZSBlZmZlY3QgdG8gdGhlIGJvdW5kcyBvZiB0aGUgcmVmZXJlbmNlZCBy b3cuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJs aXN0ZW50cnk+CkBAIC0xMjQ2LDYgKzEyNjksOSBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQog ICAgICAgICAgIFNldCB0aGUgcmVmZXJlbmNpbmcgY29sdW1uKHMpIHRvIHRoZWlyIGRlZmF1bHQg dmFsdWVzLgogICAgICAgICAgIChUaGVyZSBtdXN0IGJlIGEgcm93IGluIHRoZSByZWZlcmVuY2Vk IHRhYmxlIG1hdGNoaW5nIHRoZSBkZWZhdWx0CiAgICAgICAgICAgdmFsdWVzLCBpZiB0aGV5IGFy ZSBub3QgbnVsbCwgb3IgdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwuKQorICAgICAgICAgIEluIGEg dGVtcG9yYWwgZm9yZWlnbiBrZXksIHRoZSBjaGFuZ2Ugd2lsbCB1c2UgPGxpdGVyYWw+Rk9SIFBP UlRJT04KKyAgICAgICAgICBPRjwvbGl0ZXJhbD4gc2VtYW50aWNzIHRvIGNvbnN0cmFpbiB0aGUg ZWZmZWN0IHRvIHRoZSBib3VuZHMgb2YgdGhlCisgICAgICAgICAgcmVmZXJlbmNlZCByb3cuCiAg ICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50 cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvaGVhcC5jCmluZGV4IGViZTkzM2JhMTQuLjI1MmVlNDZhNWUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVh cC5jCkBAIC0yNTU5LDYgKzI1NTksNyBAQCBTdG9yZVJlbENoZWNrKFJlbGF0aW9uIHJlbCwgY29u c3QgY2hhciAqY2NuYW1lLCBOb2RlICpleHByLAogCQkJCQkJCSAgaXNfbm9faW5oZXJpdCwJLyog Y29ubm9pbmhlcml0ICovCiAJCQkJCQkJICBmYWxzZSwJLyogY29udGVtcG9yYWwgKi8KIAkJCQkJ CQkgIEludmFsaWRPaWQsCS8qIGNvbnBlcmlvZCAqLworCQkJCQkJCSAgSW52YWxpZE9pZCwJLyog Y29uZnBlcmlvZCAqLwogCQkJCQkJCSAgaXNfaW50ZXJuYWwpOyAvKiBpbnRlcm5hbGx5IGNvbnN0 cnVjdGVkPyAqLwogCiAJcGZyZWUoY2NiaW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IGE5YzY2YzQ5 MjMuLjdjZWVhODJlZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTIwMDAsNiArMjAwMCw3IEBAIGlu ZGV4X2NvbnN0cmFpbnRfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJICAg bm9pbmhlcml0LAogCQkJCQkJCQkgICBpc190ZW1wb3JhbCwJLyogY29udGVtcG9yYWwgKi8KIAkJ CQkJCQkJICAgcGVyaW9kaWQsIC8qIGNvbnBlcmlvZCAqLworCQkJCQkJCQkgICBJbnZhbGlkT2lk LCAvKiBjb25mcGVyaW9kICovCiAJCQkJCQkJCSAgIGlzX2ludGVybmFsKTsKIAogCS8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfY29uc3RyYWludC5jCmluZGV4IDc5MjdmYmRlODguLjQzZGNkYjNhY2MgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCisrKyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jCkBAIC03OCw2ICs3OCw3IEBAIENyZWF0ZUNv bnN0cmFpbnRFbnRyeShjb25zdCBjaGFyICpjb25zdHJhaW50TmFtZSwKIAkJCQkJICBib29sIGNv bk5vSW5oZXJpdCwKIAkJCQkJICBib29sIGNvblRlbXBvcmFsLAogCQkJCQkgIE9pZCBwZXJpb2Qs CisJCQkJCSAgT2lkIGZwZXJpb2QsCiAJCQkJCSAgYm9vbCBpc19pbnRlcm5hbCkKIHsKIAlSZWxh dGlvbgljb25EZXNjOwpAQCAtMTkwLDYgKzE5MSw3IEBAIENyZWF0ZUNvbnN0cmFpbnRFbnRyeShj b25zdCBjaGFyICpjb25zdHJhaW50TmFtZSwKIAl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2Nv bm5vaW5oZXJpdCAtIDFdID0gQm9vbEdldERhdHVtKGNvbk5vSW5oZXJpdCk7CiAJdmFsdWVzW0Fu dW1fcGdfY29uc3RyYWludF9jb250ZW1wb3JhbCAtIDFdID0gQm9vbEdldERhdHVtKGNvblRlbXBv cmFsKTsKIAl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2NvbnBlcmlvZCAtIDFdID0gT2JqZWN0 SWRHZXREYXR1bShwZXJpb2QpOworCXZhbHVlc1tBbnVtX3BnX2NvbnN0cmFpbnRfY29uZnBlcmlv ZCAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShmcGVyaW9kKTsKIAogCWlmIChjb25rZXlBcnJheSkK IAkJdmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9jb25rZXkgLSAxXSA9IFBvaW50ZXJHZXREYXR1 bShjb25rZXlBcnJheSk7CkBAIC0yOTEsNyArMjkzLDcgQEAgQ3JlYXRlQ29uc3RyYWludEVudHJ5 KGNvbnN0IGNoYXIgKmNvbnN0cmFpbnROYW1lLAogCXsKIAkJLyoKIAkJICogUmVnaXN0ZXIgbm9y bWFsIGRlcGVuZGVuY3kgZnJvbSBjb25zdHJhaW50IHRvIGZvcmVpZ24gcmVsYXRpb24sIG9yCi0J CSAqIHRvIHNwZWNpZmljIGNvbHVtbihzKSBpZiBhbnkgYXJlIG1lbnRpb25lZC4KKwkJICogdG8g c3BlY2lmaWMgY29sdW1uKHMpIGFuZCBwZXJpb2QgaWYgYW55IGFyZSBtZW50aW9uZWQuCiAJCSAq LwogCQlPYmplY3RBZGRyZXNzIHJlbG9iamVjdDsKIApAQCAtMzA5LDYgKzMxMSwxNCBAQCBDcmVh dGVDb25zdHJhaW50RW50cnkoY29uc3QgY2hhciAqY29uc3RyYWludE5hbWUsCiAJCQlPYmplY3RB ZGRyZXNzU2V0KHJlbG9iamVjdCwgUmVsYXRpb25SZWxhdGlvbklkLCBmb3JlaWduUmVsSWQpOwog CQkJYWRkX2V4YWN0X29iamVjdF9hZGRyZXNzKCZyZWxvYmplY3QsIGFkZHJzX25vcm1hbCk7CiAJ CX0KKworCQlpZiAoT2lkSXNWYWxpZChmcGVyaW9kKSkKKwkJeworCQkJT2JqZWN0QWRkcmVzcyBw ZXJpb2RvYmplY3Q7CisKKwkJCU9iamVjdEFkZHJlc3NTZXQocGVyaW9kb2JqZWN0LCBQZXJpb2RS ZWxhdGlvbklkLCBmcGVyaW9kKTsKKwkJCWFkZF9leGFjdF9vYmplY3RfYWRkcmVzcygmcGVyaW9k b2JqZWN0LCBhZGRyc19ub3JtYWwpOworCQl9CiAJfQogCiAJaWYgKE9pZElzVmFsaWQoaW5kZXhS ZWxJZCkgJiYgY29uc3RyYWludFR5cGUgPT0gQ09OU1RSQUlOVF9GT1JFSUdOKQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYwppbmRleCBiODk0ZjZhMmVjLi4zYmIzN2RjYmM1IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYwpAQCAtMzY3LDE5ICszNjcsMjQgQEAgc3RhdGljIE9iamVjdEFkZHJlc3Mg QVRFeGVjVmFsaWRhdGVDb25zdHJhaW50KExpc3QgKip3cXVldWUsCiAJCQkJCQkJCQkJCSAgYm9v bCByZWN1cnNlLCBib29sIHJlY3Vyc2luZywgTE9DS01PREUgbG9ja21vZGUpOwogc3RhdGljIGlu dAl0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChPaWQgcmVsSWQsIExpc3QgKmNvbExpc3QsCiAJCQkJ CQkJCQlpbnQxNiAqYXR0bnVtcywgT2lkICphdHR0eXBpZHMpOworc3RhdGljIHZvaWQJdHJhbnNm b3JtUGVyaW9kTmFtZShPaWQgcmVsSWQsIE5vZGUgKnBlcmlvZE5hbWUsCisJCQkJCQkJCWludDE2 ICphdHRudW1zLCBPaWQgKmF0dHR5cGlkcywgT2lkICpwZXJpb2RpZCk7CiBzdGF0aWMgaW50CXRy YW5zZm9ybUZrZXlHZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4T2lkLAog CQkJCQkJCQkJICAgTGlzdCAqKmF0dG5hbWVsaXN0LAogCQkJCQkJCQkJICAgaW50MTYgKmF0dG51 bXMsIE9pZCAqYXR0dHlwaWRzLAorCQkJCQkJCQkJCSBOb2RlICoqcGVyaW9kYXR0bmFtZSwgT2lk ICpwZXJpb2RpZCwKKwkJCQkJCQkJCQkgaW50MTYgKnBlcmlvZGF0dG51bXMsIE9pZCAqcGVyaW9k YXR0dHlwaWRzLAogCQkJCQkJCQkJICAgT2lkICpvcGNsYXNzZXMpOwogc3RhdGljIE9pZAl0cmFu c2Zvcm1Ga2V5Q2hlY2tBdHRycyhSZWxhdGlvbiBwa3JlbCwKIAkJCQkJCQkJCWludCBudW1hdHRy cywgaW50MTYgKmF0dG51bXMsCi0JCQkJCQkJCQlPaWQgKm9wY2xhc3Nlcyk7CisJCQkJCQkJCQli b29sIGlzX3RlbXBvcmFsLCBpbnQxNiAqcGVyaW9kYXR0bnVtcywKKwkJCQkJCQkJCU9pZCBwZXJp b2RpZCwgT2lkICpvcGNsYXNzZXMpOwogc3RhdGljIHZvaWQgY2hlY2tGa2V5UGVybWlzc2lvbnMo UmVsYXRpb24gcmVsLCBpbnQxNiAqYXR0bnVtcywgaW50IG5hdHRzKTsKIHN0YXRpYyBDb2VyY2lv blBhdGhUeXBlIGZpbmRGa2V5Q2FzdChPaWQgdGFyZ2V0VHlwZUlkLCBPaWQgc291cmNlVHlwZUlk LAogCQkJCQkJCQkJIE9pZCAqZnVuY2lkKTsKIHN0YXRpYyB2b2lkIHZhbGlkYXRlRm9yZWlnbktl eUNvbnN0cmFpbnQoY2hhciAqY29ubmFtZSwKIAkJCQkJCQkJCQkgUmVsYXRpb24gcmVsLCBSZWxh dGlvbiBwa3JlbCwKLQkJCQkJCQkJCQkgT2lkIHBraW5kT2lkLCBPaWQgY29uc3RyYWludE9pZCk7 CisJCQkJCQkJCQkJIE9pZCBwa2luZE9pZCwgT2lkIGNvbnN0cmFpbnRPaWQsIGJvb2wgdGVtcG9y YWwpOwogc3RhdGljIHZvaWQgQVRDb250cm9sbGVyKEFsdGVyVGFibGVTdG10ICpwYXJzZXRyZWUs CiAJCQkJCQkgUmVsYXRpb24gcmVsLCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2UsIExPQ0tNT0RF IGxvY2ttb2RlLAogCQkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CkBA IC00OTQsMTIgKzQ5OSwxMyBAQCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBhZGRGa1JlY3Vyc2VSZWZl cmVuY2VkKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYQogCQkJCQkJCQkJCQlS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIHBrcmVsLCBPaWQgaW5kZXhPaWQsIE9pZCBwYXJlbnRDb25z dHIsCiAJCQkJCQkJCQkJCWludCBudW1ma3MsIGludDE2ICpwa2F0dG51bSwgaW50MTYgKmZrYXR0 bnVtLAogCQkJCQkJCQkJCQlPaWQgKnBmZXFvcGVyYXRvcnMsIE9pZCAqcHBlcW9wZXJhdG9ycywg T2lkICpmZmVxb3BlcmF0b3JzLAotCQkJCQkJCQkJCQlib29sIG9sZF9jaGVja19vayk7CisJCQkJ CQkJCQkJCWJvb2wgb2xkX2NoZWNrX29rLCBib29sIGlzX3RlbXBvcmFsLCBPaWQgcGtwZXJpb2Qs IE9pZCBma3BlcmlvZCk7CiBzdGF0aWMgdm9pZCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0 ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsCiAJCQkJCQkJCQlSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uIHBrcmVsLCBPaWQgaW5kZXhPaWQsIE9pZCBwYXJlbnRDb25zdHIsCiAJCQkJ CQkJCQlpbnQgbnVtZmtzLCBpbnQxNiAqcGthdHRudW0sIGludDE2ICpma2F0dG51bSwKIAkJCQkJ CQkJCU9pZCAqcGZlcW9wZXJhdG9ycywgT2lkICpwcGVxb3BlcmF0b3JzLCBPaWQgKmZmZXFvcGVy YXRvcnMsCi0JCQkJCQkJCQlib29sIG9sZF9jaGVja19vaywgTE9DS01PREUgbG9ja21vZGUpOwor CQkJCQkJCQkJYm9vbCBvbGRfY2hlY2tfb2ssIGJvb2wgaXNfdGVtcG9yYWwsIE9pZCBwa3Blcmlv ZCwgT2lkIGZrcGVyaW9kLAorCQkJCQkJCQkJTE9DS01PREUgbG9ja21vZGUpOwogc3RhdGljIHZv aWQgQ2xvbmVGb3JlaWduS2V5Q29uc3RyYWludHMoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcGFy ZW50UmVsLAogCQkJCQkJCQkJICAgUmVsYXRpb24gcGFydGl0aW9uUmVsKTsKIHN0YXRpYyB2b2lk IENsb25lRmtSZWZlcmVuY2VkKFJlbGF0aW9uIHBhcmVudFJlbCwgUmVsYXRpb24gcGFydGl0aW9u UmVsKTsKQEAgLTUxNiw2ICs1MjIsMTIgQEAgc3RhdGljIGJvb2wgdHJ5QXR0YWNoUGFydGl0aW9u Rm9yZWlnbktleShGb3JlaWduS2V5Q2FjaGVJbmZvICpmaywKIAkJCQkJCQkJCQkgT2lkIHBhcmVu dENvbnN0ck9pZCwgaW50IG51bWZrcywKIAkJCQkJCQkJCQkgQXR0ck51bWJlciAqbWFwcGVkX2Nv bmtleSwgQXR0ck51bWJlciAqY29uZmtleSwKIAkJCQkJCQkJCQkgT2lkICpjb25wZmVxb3ApOwor c3RhdGljIHZvaWQgRmluZEZLQ29tcGFyaXNvbk9wZXJhdG9ycyhDb25zdHJhaW50ICpma2NvbnN0 cmFpbnQsCisJCQkJCUFsdGVyZWRUYWJsZUluZm8gKnRhYiwgaW50IGksIGludDE2ICpma2F0dG51 bSwKKwkJCQkJYm9vbCAqb2xkX2NoZWNrX29rLCBMaXN0Q2VsbCAqKm9sZF9wZmVxb3BfaXRlbSwK KwkJCQkJT2lkIHBrdHlwZSwgT2lkIGZrdHlwZSwgT2lkIG9wY2xhc3MsCisJCQkJCWJvb2wgaXNf dGVtcG9yYWwsIGJvb2wgZm9yX292ZXJsYXBzLAorCQkJCQlPaWQgKnBmZXFvcE91dCwgT2lkICpw cGVxb3BPdXQsIE9pZCAqZmZlcW9wT3V0KTsKIHN0YXRpYyB2b2lkIEFURXhlY0Ryb3BDb25zdHJh aW50KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29uc3RyTmFtZSwKIAkJCQkJCQkJIERyb3BC ZWhhdmlvciBiZWhhdmlvciwKIAkJCQkJCQkJIGJvb2wgcmVjdXJzZSwgYm9vbCByZWN1cnNpbmcs CkBAIC01NzY4LDcgKzU3ODAsOCBAQCBBVFJld3JpdGVUYWJsZXMoQWx0ZXJUYWJsZVN0bXQgKnBh cnNldHJlZSwgTGlzdCAqKndxdWV1ZSwgTE9DS01PREUgbG9ja21vZGUsCiAKIAkJCQl2YWxpZGF0 ZUZvcmVpZ25LZXlDb25zdHJhaW50KGZrY29uc3RyYWludC0+Y29ubmFtZSwgcmVsLCByZWZyZWws CiAJCQkJCQkJCQkJCSBjb24tPnJlZmluZGlkLAotCQkJCQkJCQkJCQkgY29uLT5jb25pZCk7CisJ CQkJCQkJCQkJCSBjb24tPmNvbmlkLAorCQkJCQkJCQkJCQkgY29uLT5jb250ZW1wb3JhbCk7CiAK IAkJCQkvKgogCQkJCSAqIE5vIG5lZWQgdG8gbWFyayB0aGUgY29uc3RyYWludCByb3cgYXMgdmFs aWRhdGVkLCB3ZSBkaWQKQEAgLTkzODIsMTEgKzkzOTUsMTggQEAgQVRBZGRGb3JlaWduS2V5Q29u c3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJl bCwKIAlPaWQJCQlwZmVxb3BlcmF0b3JzW0lOREVYX01BWF9LRVlTXTsKIAlPaWQJCQlwcGVxb3Bl cmF0b3JzW0lOREVYX01BWF9LRVlTXTsKIAlPaWQJCQlmZmVxb3BlcmF0b3JzW0lOREVYX01BWF9L RVlTXTsKKwlib29sCQlpc190ZW1wb3JhbCA9IChma2NvbnN0cmFpbnQtPmZrX3BlcmlvZCAhPSBO VUxMKTsKKwlpbnQxNgkJcGtwZXJpb2RhdHRudW1zWzJdOworCWludDE2CQlma3BlcmlvZGF0dG51 bXNbMl07CisJT2lkCQkJcGtwZXJpb2R0eXBvaWRzWzJdOworCU9pZAkJCWZrcGVyaW9kdHlwb2lk c1syXTsKIAlpbnQJCQlpOwogCWludAkJCW51bWZrcywKIAkJCQludW1wa3M7CiAJT2lkCQkJaW5k ZXhPaWQ7CiAJYm9vbAkJb2xkX2NoZWNrX29rOworCU9pZAkJCWZrcGVyaW9kID0gSW52YWxpZE9p ZDsKKwlPaWQJCQlwa3BlcmlvZCA9IEludmFsaWRPaWQ7CiAJT2JqZWN0QWRkcmVzcyBhZGRyZXNz OwogCUxpc3RDZWxsICAgKm9sZF9wZmVxb3BfaXRlbSA9IGxpc3RfaGVhZChma2NvbnN0cmFpbnQt Pm9sZF9jb25wZmVxb3ApOwogCkBAIC05NDg0LDYgKzk1MDQsMjEgQEAgQVRBZGRGb3JlaWduS2V5 Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9u IHJlbCwKIAludW1ma3MgPSB0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJlbGlk KHJlbCksCiAJCQkJCQkJCQkgZmtjb25zdHJhaW50LT5ma19hdHRycywKIAkJCQkJCQkJCSBma2F0 dG51bSwgZmt0eXBvaWQpOworCWlmIChpc190ZW1wb3JhbCkKKwl7CisJCS8qCisJCSAqIEZpcnN0 IHNlZSBpZiB3ZSBoYXZlIGEgcGVyaW9kIG5hbWUsIG90aGVyd2lzZSBsb29rIGZvciBhIHJhbmdl IGNvbHVtbi4KKwkJICogSWYgaXQncyBhIHBlcmlvZCwgZ2V0IHRoZSBhdHRudW1zIG9mIGJvdGgg c3RhcnQgJiBlbmQgY29sdW1ucywKKwkJICogYnV0IGluc3RlYWQgb2YgdGhlaXIgdHlwZXMgZ2V0 IHBlcmlvZCdzIHJhbmdldHlwZS4KKwkJICovCisJCXRyYW5zZm9ybVBlcmlvZE5hbWUoUmVsYXRp b25HZXRSZWxpZChyZWwpLAorCQkJCWZrY29uc3RyYWludC0+ZmtfcGVyaW9kLCBma3BlcmlvZGF0 dG51bXMsIGZrcGVyaW9kdHlwb2lkcywgJmZrcGVyaW9kKTsKKworCQlpZiAoZmtwZXJpb2QgPT0g SW52YWxpZE9pZCkKKwkJCXRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQo cmVsKSwKKwkJCQkJCQkJICBsaXN0X21ha2UxKGZrY29uc3RyYWludC0+ZmtfcGVyaW9kKSwKKwkJ CQkJCQkJICBma3BlcmlvZGF0dG51bXMsIGZrcGVyaW9kdHlwb2lkcyk7CisJfQogCiAJLyoKIAkg KiBJZiB0aGUgYXR0cmlidXRlIGxpc3QgZm9yIHRoZSByZWZlcmVuY2VkIHRhYmxlIHdhcyBvbWl0 dGVkLCBsb29rdXAgdGhlCkBAIC05NDk2LDYgKzk1MzEsOSBAQCBBVEFkZEZvcmVpZ25LZXlDb25z dHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVs LAogCQludW1wa3MgPSB0cmFuc2Zvcm1Ga2V5R2V0UHJpbWFyeUtleShwa3JlbCwgJmluZGV4T2lk LAogCQkJCQkJCQkJCQkmZmtjb25zdHJhaW50LT5wa19hdHRycywKIAkJCQkJCQkJCQkJcGthdHRu dW0sIHBrdHlwb2lkLAorCQkJCQkJCQkJCQkmZmtjb25zdHJhaW50LT5wa19wZXJpb2QsCisJCQkJ CQkJCQkJCSZwa3BlcmlvZCwKKwkJCQkJCQkJCQkJcGtwZXJpb2RhdHRudW1zLCBwa3BlcmlvZHR5 cG9pZHMsCiAJCQkJCQkJCQkJCW9wY2xhc3Nlcyk7CiAJfQogCWVsc2UKQEAgLTk1MDMsOCArOTU0 MSwxOSBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRU YWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQludW1wa3MgPSB0cmFuc2Zvcm1Db2x1bW5O YW1lTGlzdChSZWxhdGlvbkdldFJlbGlkKHBrcmVsKSwKIAkJCQkJCQkJCQkgZmtjb25zdHJhaW50 LT5wa19hdHRycywKIAkJCQkJCQkJCQkgcGthdHRudW0sIHBrdHlwb2lkKTsKKwkJaWYgKGlzX3Rl bXBvcmFsKSB7CisJCQl0cmFuc2Zvcm1QZXJpb2ROYW1lKFJlbGF0aW9uR2V0UmVsaWQocGtyZWwp LAorCQkJCQlma2NvbnN0cmFpbnQtPnBrX3BlcmlvZCwgcGtwZXJpb2RhdHRudW1zLCBwa3Blcmlv ZHR5cG9pZHMsICZwa3BlcmlvZCk7CisKKwkJCWlmIChwa3BlcmlvZCA9PSBJbnZhbGlkT2lkKQor CQkJCXRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQocGtyZWwpLAorCQkJ CQkJCQkJCWxpc3RfbWFrZTEoZmtjb25zdHJhaW50LT5wa19wZXJpb2QpLAorCQkJCQkJCQkJCXBr cGVyaW9kYXR0bnVtcywgcGtwZXJpb2R0eXBvaWRzKTsKKwkJfQogCQkvKiBMb29rIGZvciBhbiBp bmRleCBtYXRjaGluZyB0aGUgY29sdW1uIGxpc3QgKi8KIAkJaW5kZXhPaWQgPSB0cmFuc2Zvcm1G a2V5Q2hlY2tBdHRycyhwa3JlbCwgbnVtcGtzLCBwa2F0dG51bSwKKwkJCQkJCQkJCQkgICBpc190 ZW1wb3JhbCwgcGtwZXJpb2RhdHRudW1zLAorCQkJCQkJCQkJCSAgIHBrcGVyaW9kLAogCQkJCQkJ CQkJCSAgIG9wY2xhc3Nlcyk7CiAJfQogCkBAIC05NTYzLDE4NyArOTYxMiw0MyBAQCBBVEFkZEZv cmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwg UmVsYXRpb24gcmVsLAogCiAJZm9yIChpID0gMDsgaSA8IG51bXBrczsgaSsrKQogCXsKLQkJT2lk CQkJcGt0eXBlID0gcGt0eXBvaWRbaV07Ci0JCU9pZAkJCWZrdHlwZSA9IGZrdHlwb2lkW2ldOwot CQlPaWQJCQlma3R5cGVkOwotCQlIZWFwVHVwbGUJY2xhX2h0OwotCQlGb3JtX3BnX29wY2xhc3Mg Y2xhX3R1cDsKLQkJT2lkCQkJYW1pZDsKLQkJT2lkCQkJb3BmYW1pbHk7Ci0JCU9pZAkJCW9wY2lu dHlwZTsKLQkJT2lkCQkJcGZlcW9wOwotCQlPaWQJCQlwcGVxb3A7Ci0JCU9pZAkJCWZmZXFvcDsK LQkJaW50MTYJCWVxc3RyYXRlZ3k7Ci0JCU9pZAkJCXBmZXFvcF9yaWdodDsKLQotCQkvKiBXZSBu ZWVkIHNldmVyYWwgZmllbGRzIG91dCBvZiB0aGUgcGdfb3BjbGFzcyBlbnRyeSAqLwotCQljbGFf aHQgPSBTZWFyY2hTeXNDYWNoZTEoQ0xBT0lELCBPYmplY3RJZEdldERhdHVtKG9wY2xhc3Nlc1tp XSkpOwotCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY2xhX2h0KSkKLQkJCWVsb2coRVJST1IsICJj YWNoZSBsb29rdXAgZmFpbGVkIGZvciBvcGNsYXNzICV1Iiwgb3BjbGFzc2VzW2ldKTsKLQkJY2xh X3R1cCA9IChGb3JtX3BnX29wY2xhc3MpIEdFVFNUUlVDVChjbGFfaHQpOwotCQlhbWlkID0gY2xh X3R1cC0+b3BjbWV0aG9kOwotCQlvcGZhbWlseSA9IGNsYV90dXAtPm9wY2ZhbWlseTsKLQkJb3Bj aW50eXBlID0gY2xhX3R1cC0+b3BjaW50eXBlOwotCQlSZWxlYXNlU3lzQ2FjaGUoY2xhX2h0KTsK LQotCQkvKgotCQkgKiBDaGVjayBpdCdzIGEgYnRyZWU7IGN1cnJlbnRseSB0aGlzIGNhbiBuZXZl ciBmYWlsIHNpbmNlIG5vIG90aGVyCi0JCSAqIGluZGV4IEFNcyBzdXBwb3J0IHVuaXF1ZSBpbmRl eGVzLiAgSWYgd2UgZXZlciBkaWQgaGF2ZSBvdGhlciB0eXBlcwotCQkgKiBvZiB1bmlxdWUgaW5k ZXhlcywgd2UnZCBuZWVkIGEgd2F5IHRvIGRldGVybWluZSB3aGljaCBvcGVyYXRvcgotCQkgKiBz dHJhdGVneSBudW1iZXIgaXMgZXF1YWxpdHkuICAoSXMgaXQgcmVhc29uYWJsZSB0byBpbnNpc3Qg dGhhdAotCQkgKiBldmVyeSBzdWNoIGluZGV4IEFNIHVzZSBidHJlZSdzIG51bWJlciBmb3IgZXF1 YWxpdHk/KQotCQkgKi8KLQkJaWYgKGFtaWQgIT0gQlRSRUVfQU1fT0lEKQotCQkJZWxvZyhFUlJP UiwgIm9ubHkgYi10cmVlIGluZGV4ZXMgYXJlIHN1cHBvcnRlZCBmb3IgZm9yZWlnbiBrZXlzIik7 Ci0JCWVxc3RyYXRlZ3kgPSBCVEVxdWFsU3RyYXRlZ3lOdW1iZXI7Ci0KLQkJLyoKLQkJICogVGhl cmUgaGFkIGJldHRlciBiZSBhIHByaW1hcnkgZXF1YWxpdHkgb3BlcmF0b3IgZm9yIHRoZSBpbmRl eC4KLQkJICogV2UnbGwgdXNlIGl0IGZvciBQSyA9IFBLIGNvbXBhcmlzb25zLgotCQkgKi8KLQkJ cHBlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgb3BjaW50eXBlLCBvcGNpbnR5 cGUsCi0JCQkJCQkJCQkgZXFzdHJhdGVneSk7Ci0KLQkJaWYgKCFPaWRJc1ZhbGlkKHBwZXFvcCkp Ci0JCQllbG9nKEVSUk9SLCAibWlzc2luZyBvcGVyYXRvciAlZCgldSwldSkgaW4gb3BmYW1pbHkg JXUiLAotCQkJCSBlcXN0cmF0ZWd5LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwgb3BmYW1pbHkpOwot Ci0JCS8qCi0JCSAqIEFyZSB0aGVyZSBlcXVhbGl0eSBvcGVyYXRvcnMgdGhhdCB0YWtlIGV4YWN0 bHkgdGhlIEZLIHR5cGU/IEFzc3VtZQotCQkgKiB3ZSBzaG91bGQgbG9vayB0aHJvdWdoIGFueSBk b21haW4gaGVyZS4KLQkJICovCi0JCWZrdHlwZWQgPSBnZXRCYXNlVHlwZShma3R5cGUpOwotCi0J CXBmZXFvcCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgZmt0eXBl ZCwKLQkJCQkJCQkJCSBlcXN0cmF0ZWd5KTsKLQkJaWYgKE9pZElzVmFsaWQocGZlcW9wKSkKKwkJ RmluZEZLQ29tcGFyaXNvbk9wZXJhdG9ycygKKwkJCQlma2NvbnN0cmFpbnQsIHRhYiwgaSwgZmth dHRudW0sCisJCQkJJm9sZF9jaGVja19vaywgJm9sZF9wZmVxb3BfaXRlbSwKKwkJCQlwa3R5cG9p ZFtpXSwgZmt0eXBvaWRbaV0sIG9wY2xhc3Nlc1tpXSwKKwkJCQlpc190ZW1wb3JhbCwgZmFsc2Us CisJCQkJJnBmZXFvcGVyYXRvcnNbaV0sICZwcGVxb3BlcmF0b3JzW2ldLCAmZmZlcW9wZXJhdG9y c1tpXSk7CisJfQorCWlmIChpc190ZW1wb3JhbCkgeworCQlpZiAocGtwZXJpb2QgPT0gSW52YWxp ZE9pZCkKIAkJewotCQkJcGZlcW9wX3JpZ2h0ID0gZmt0eXBlZDsKLQkJCWZmZXFvcCA9IGdldF9v cGZhbWlseV9tZW1iZXIob3BmYW1pbHksIGZrdHlwZWQsIGZrdHlwZWQsCi0JCQkJCQkJCQkJIGVx c3RyYXRlZ3kpOworCQkJcGthdHRudW1bbnVtcGtzXSA9IHBrcGVyaW9kYXR0bnVtc1swXTsKKwkJ CXBrdHlwb2lkW251bXBrc10gPSBwa3BlcmlvZHR5cG9pZHNbMF07CiAJCX0KIAkJZWxzZQogCQl7 Ci0JCQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCi0JCQlwZmVxb3BfcmlnaHQgPSBJbnZhbGlk T2lkOwotCQkJZmZlcW9wID0gSW52YWxpZE9pZDsKKwkJCXBrYXR0bnVtW251bXBrc10gPSBJbnZh bGlkT2lkOworCQkJcGt0eXBvaWRbbnVtcGtzXSA9IEludmFsaWRPaWQ7CiAJCX0KLQotCQlpZiAo IShPaWRJc1ZhbGlkKHBmZXFvcCkgJiYgT2lkSXNWYWxpZChmZmVxb3ApKSkKLQkJewotCQkJLyoK LQkJCSAqIE90aGVyd2lzZSwgbG9vayBmb3IgYW4gaW1wbGljaXQgY2FzdCBmcm9tIHRoZSBGSyB0 eXBlIHRvIHRoZQotCQkJICogb3BjaW50eXBlLCBhbmQgaWYgZm91bmQsIHVzZSB0aGUgcHJpbWFy eSBlcXVhbGl0eSBvcGVyYXRvci4KLQkJCSAqIFRoaXMgaXMgYSBiaXQgdHJpY2t5IGJlY2F1c2Ug b3BjaW50eXBlIG1pZ2h0IGJlIGEgcG9seW1vcnBoaWMKLQkJCSAqIHR5cGUgc3VjaCBhcyBBTllB UlJBWSBvciBBTllFTlVNOyBzbyB3aGF0IHdlIGhhdmUgdG8gdGVzdCBpcwotCQkJICogd2hldGhl ciB0aGUgdHdvIGFjdHVhbCBjb2x1bW4gdHlwZXMgY2FuIGJlIGNvbmN1cnJlbnRseSBjYXN0IHRv Ci0JCQkgKiB0aGF0IHR5cGUuICAoT3RoZXJ3aXNlLCB3ZSdkIGZhaWwgdG8gcmVqZWN0IGNvbWJp bmF0aW9ucyBzdWNoCi0JCQkgKiBhcyBpbnRbXSBhbmQgcG9pbnRbXS4pCi0JCQkgKi8KLQkJCU9p ZAkJCWlucHV0X3R5cGVpZHNbMl07Ci0JCQlPaWQJCQl0YXJnZXRfdHlwZWlkc1syXTsKLQotCQkJ aW5wdXRfdHlwZWlkc1swXSA9IHBrdHlwZTsKLQkJCWlucHV0X3R5cGVpZHNbMV0gPSBma3R5cGU7 Ci0JCQl0YXJnZXRfdHlwZWlkc1swXSA9IG9wY2ludHlwZTsKLQkJCXRhcmdldF90eXBlaWRzWzFd ID0gb3BjaW50eXBlOwotCQkJaWYgKGNhbl9jb2VyY2VfdHlwZSgyLCBpbnB1dF90eXBlaWRzLCB0 YXJnZXRfdHlwZWlkcywKLQkJCQkJCQkJQ09FUkNJT05fSU1QTElDSVQpKQotCQkJewotCQkJCXBm ZXFvcCA9IGZmZXFvcCA9IHBwZXFvcDsKLQkJCQlwZmVxb3BfcmlnaHQgPSBvcGNpbnR5cGU7Ci0J CQl9Ci0JCX0KLQotCQlpZiAoIShPaWRJc1ZhbGlkKHBmZXFvcCkgJiYgT2lkSXNWYWxpZChmZmVx b3ApKSkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVf TUlTTUFUQ0gpLAotCQkJCQkgZXJybXNnKCJmb3JlaWduIGtleSBjb25zdHJhaW50IFwiJXNcIiBj YW5ub3QgYmUgaW1wbGVtZW50ZWQiLAotCQkJCQkJCWZrY29uc3RyYWludC0+Y29ubmFtZSksCi0J CQkJCSBlcnJkZXRhaWwoIktleSBjb2x1bW5zIFwiJXNcIiBhbmQgXCIlc1wiICIKLQkJCQkJCQkg ICAiYXJlIG9mIGluY29tcGF0aWJsZSB0eXBlczogJXMgYW5kICVzLiIsCi0JCQkJCQkJICAgc3Ry VmFsKGxpc3RfbnRoKGZrY29uc3RyYWludC0+ZmtfYXR0cnMsIGkpKSwKLQkJCQkJCQkgICBzdHJW YWwobGlzdF9udGgoZmtjb25zdHJhaW50LT5wa19hdHRycywgaSkpLAotCQkJCQkJCSAgIGZvcm1h dF90eXBlX2JlKGZrdHlwZSksCi0JCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUocGt0eXBlKSkpKTsK LQotCQlpZiAob2xkX2NoZWNrX29rKQorCQlpZiAoZmtwZXJpb2QgPT0gSW52YWxpZE9pZCkKIAkJ ewotCQkJLyoKLQkJCSAqIFdoZW4gYSBwZmVxb3AgY2hhbmdlcywgcmV2YWxpZGF0ZSB0aGUgY29u c3RyYWludC4gIFdlIGNvdWxkCi0JCQkgKiBwZXJtaXQgaW50cmEtb3BmYW1pbHkgY2hhbmdlcywg YnV0IHRoYXQgYWRkcyBzdWJ0bGUgY29tcGxleGl0eQotCQkJICogd2l0aG91dCBhbnkgY29uY3Jl dGUgYmVuZWZpdCBmb3IgY29yZSB0eXBlcy4gIFdlIG5lZWQgbm90Ci0JCQkgKiBhc3Nlc3MgcHBl cW9wIG9yIGZmZXFvcCwgd2hpY2ggUklfSW5pdGlhbF9DaGVjaygpIGRvZXMgbm90IHVzZS4KLQkJ CSAqLwotCQkJb2xkX2NoZWNrX29rID0gKHBmZXFvcCA9PSBsZmlyc3Rfb2lkKG9sZF9wZmVxb3Bf aXRlbSkpOwotCQkJb2xkX3BmZXFvcF9pdGVtID0gbG5leHQoZmtjb25zdHJhaW50LT5vbGRfY29u cGZlcW9wLAotCQkJCQkJCQkJb2xkX3BmZXFvcF9pdGVtKTsKKwkJCWZrYXR0bnVtW251bXBrc10g PSBma3BlcmlvZGF0dG51bXNbMF07CisJCQlma3R5cG9pZFtudW1wa3NdID0gZmtwZXJpb2R0eXBv aWRzWzBdOwogCQl9Ci0JCWlmIChvbGRfY2hlY2tfb2spCisJCWVsc2UKIAkJewotCQkJT2lkCQkJ b2xkX2ZrdHlwZTsKLQkJCU9pZAkJCW5ld19ma3R5cGU7Ci0JCQlDb2VyY2lvblBhdGhUeXBlIG9s ZF9wYXRodHlwZTsKLQkJCUNvZXJjaW9uUGF0aFR5cGUgbmV3X3BhdGh0eXBlOwotCQkJT2lkCQkJ b2xkX2Nhc3RmdW5jOwotCQkJT2lkCQkJbmV3X2Nhc3RmdW5jOwotCQkJRm9ybV9wZ19hdHRyaWJ1 dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodGFiLT5vbGREZXNjLAotCQkJCQkJCQkJCQkJICAgZmth dHRudW1baV0gLSAxKTsKLQotCQkJLyoKLQkJCSAqIElkZW50aWZ5IGNvZXJjaW9uIHBhdGh3YXlz IGZyb20gZWFjaCBvZiB0aGUgb2xkIGFuZCBuZXcgRkstc2lkZQotCQkJICogY29sdW1uIHR5cGVz IHRvIHRoZSByaWdodCAoZm9yZWlnbikgb3BlcmFuZCB0eXBlIG9mIHRoZSBwZmVxb3AuCi0JCQkg KiBXZSBtYXkgYXNzdW1lIHRoYXQgcGdfY29uc3RyYWludC5jb25rZXkgaXMgbm90IGNoYW5naW5n LgotCQkJICovCi0JCQlvbGRfZmt0eXBlID0gYXR0ci0+YXR0dHlwaWQ7Ci0JCQluZXdfZmt0eXBl ID0gZmt0eXBlOwotCQkJb2xkX3BhdGh0eXBlID0gZmluZEZrZXlDYXN0KHBmZXFvcF9yaWdodCwg b2xkX2ZrdHlwZSwKLQkJCQkJCQkJCQkmb2xkX2Nhc3RmdW5jKTsKLQkJCW5ld19wYXRodHlwZSA9 IGZpbmRGa2V5Q2FzdChwZmVxb3BfcmlnaHQsIG5ld19ma3R5cGUsCi0JCQkJCQkJCQkJJm5ld19j YXN0ZnVuYyk7Ci0KLQkJCS8qCi0JCQkgKiBVcG9uIGEgY2hhbmdlIHRvIHRoZSBjYXN0IGZyb20g dGhlIEZLIGNvbHVtbiB0byBpdHMgcGZlcW9wCi0JCQkgKiBvcGVyYW5kLCByZXZhbGlkYXRlIHRo ZSBjb25zdHJhaW50LiAgRm9yIHRoaXMgZXZhbHVhdGlvbiwgYQotCQkJICogYmluYXJ5IGNvZXJj aW9uIGNhc3QgaXMgZXF1aXZhbGVudCB0byBubyBjYXN0IGF0IGFsbC4gIFdoaWxlCi0JCQkgKiB0 eXBlIGltcGxlbWVudG9ycyBzaG91bGQgZGVzaWduIGltcGxpY2l0IGNhc3RzIHdpdGggYW4gZXll Ci0JCQkgKiB0b3dhcmQgY29uc2lzdGVuY3kgb2Ygb3BlcmF0aW9ucyBsaWtlIGVxdWFsaXR5LCB3 ZSBjYW5ub3QKLQkJCSAqIGFzc3VtZSBoZXJlIHRoYXQgdGhleSBoYXZlIGRvbmUgc28uCi0JCQkg KgotCQkJICogQSBmdW5jdGlvbiB3aXRoIGEgcG9seW1vcnBoaWMgYXJndW1lbnQgY291bGQgY2hh bmdlIGJlaGF2aW9yCi0JCQkgKiBhcmJpdHJhcmlseSBpbiByZXNwb25zZSB0byBnZXRfZm5fZXhw cl9hcmd0eXBlKCkuICBUaGVyZWZvcmUsCi0JCQkgKiB3aGVuIHRoZSBjYXN0IGRlc3RpbmF0aW9u IGlzIHBvbHltb3JwaGljLCB3ZSBvbmx5IGF2b2lkCi0JCQkgKiByZXZhbGlkYXRpb24gaWYgdGhl IGlucHV0IHR5cGUgaGFzIG5vdCBjaGFuZ2VkIGF0IGFsbC4gIEdpdmVuCi0JCQkgKiBqdXN0IHRo ZSBjb3JlIGRhdGEgdHlwZXMgYW5kIG9wZXJhdG9yIGNsYXNzZXMsIHRoaXMgcmVxdWlyZW1lbnQK LQkJCSAqIHByZXZlbnRzIG5vIHdvdWxkLWJlIG9wdGltaXphdGlvbnMuCi0JCQkgKgotCQkJICog SWYgdGhlIGNhc3QgY29udmVydHMgZnJvbSBhIGJhc2UgdHlwZSB0byBhIGRvbWFpbiB0aGVyZW9u LCB0aGVuCi0JCQkgKiB0aGF0IGRvbWFpbiB0eXBlIG11c3QgYmUgdGhlIG9wY2ludHlwZSBvZiB0 aGUgdW5pcXVlIGluZGV4LgotCQkJICogTmVjZXNzYXJpbHksIHRoZSBwcmltYXJ5IGtleSBjb2x1 bW4gbXVzdCB0aGVuIGJlIG9mIHRoZSBkb21haW4KLQkJCSAqIHR5cGUuICBTaW5jZSB0aGUgY29u c3RyYWludCB3YXMgcHJldmlvdXNseSB2YWxpZCwgYWxsIHZhbHVlcyBvbgotCQkJICogdGhlIGZv cmVpZ24gc2lkZSBuZWNlc3NhcmlseSBleGlzdCBvbiB0aGUgcHJpbWFyeSBzaWRlIGFuZCBpbgot CQkJICogdHVybiBjb25mb3JtIHRvIHRoZSBkb21haW4uICBDb25zZXF1ZW50bHksIHdlIG5lZWQg bm90IHRyZWF0Ci0JCQkgKiBkb21haW5zIHNwZWNpYWxseSBoZXJlLgotCQkJICoKLQkJCSAqIFNp bmNlIHdlIHJlcXVpcmUgdGhhdCBhbGwgY29sbGF0aW9ucyBzaGFyZSB0aGUgc2FtZSBub3Rpb24g b2YKLQkJCSAqIGVxdWFsaXR5ICh3aGljaCB0aGV5IGRvLCBiZWNhdXNlIHRleHRlcSByZWR1Y2Vz IHRvIGJpdHdpc2UKLQkJCSAqIGVxdWFsaXR5KSwgd2UgZG9uJ3QgY29tcGFyZSBjb2xsYXRpb24g aGVyZS4KLQkJCSAqCi0JCQkgKiBXZSBuZWVkIG5vdCBkaXJlY3RseSBjb25zaWRlciB0aGUgUEsg dHlwZS4gIEl0J3MgbmVjZXNzYXJpbHkKLQkJCSAqIGJpbmFyeSBjb2VyY2libGUgdG8gdGhlIG9w Y2ludHlwZSBvZiB0aGUgdW5pcXVlIGluZGV4IGNvbHVtbiwKLQkJCSAqIGFuZCByaV90cmlnZ2Vy cy5jIHdpbGwgb25seSBkZWFsIHdpdGggUEsgZGF0dW1zIGluIHRlcm1zIG9mCi0JCQkgKiB0aGF0 IG9wY2ludHlwZS4gIENoYW5naW5nIHRoZSBvcGNpbnR5cGUgYWxzbyBjaGFuZ2VzIHBmZXFvcC4K LQkJCSAqLwotCQkJb2xkX2NoZWNrX29rID0gKG5ld19wYXRodHlwZSA9PSBvbGRfcGF0aHR5cGUg JiYKLQkJCQkJCQluZXdfY2FzdGZ1bmMgPT0gb2xkX2Nhc3RmdW5jICYmCi0JCQkJCQkJKCFJc1Bv bHltb3JwaGljVHlwZShwZmVxb3BfcmlnaHQpIHx8Ci0JCQkJCQkJIG5ld19ma3R5cGUgPT0gb2xk X2ZrdHlwZSkpOworCQkJZmthdHRudW1bbnVtcGtzXSA9IEludmFsaWRPaWQ7CisJCQlma3R5cG9p ZFtudW1wa3NdID0gSW52YWxpZE9pZDsKIAkJfQogCi0JCXBmZXFvcGVyYXRvcnNbaV0gPSBwZmVx b3A7Ci0JCXBwZXFvcGVyYXRvcnNbaV0gPSBwcGVxb3A7Ci0JCWZmZXFvcGVyYXRvcnNbaV0gPSBm ZmVxb3A7CisJCUZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMoCisJCQkJZmtjb25zdHJhaW50LCB0 YWIsIG51bXBrcywgZmthdHRudW0sCisJCQkJJm9sZF9jaGVja19vaywgJm9sZF9wZmVxb3BfaXRl bSwKKwkJCQlwa3BlcmlvZHR5cG9pZHNbMF0sIGZrcGVyaW9kdHlwb2lkc1swXSwgb3BjbGFzc2Vz W251bXBrc10sCisJCQkJaXNfdGVtcG9yYWwsIHRydWUsCisJCQkJJnBmZXFvcGVyYXRvcnNbbnVt cGtzXSwgJnBwZXFvcGVyYXRvcnNbbnVtcGtzXSwgJmZmZXFvcGVyYXRvcnNbbnVtcGtzXSk7CisJ CW51bWZrcyArPSAxOworCQludW1wa3MgKz0gMTsKIAl9CiAKIAkvKgpAQCAtOTc1OSw3ICs5NjY0 LDEwIEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRh YmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgcGZlcW9wZXJhdG9ycywKIAkJ CQkJCQkJCSBwcGVxb3BlcmF0b3JzLAogCQkJCQkJCQkJIGZmZXFvcGVyYXRvcnMsCi0JCQkJCQkJ CQkgb2xkX2NoZWNrX29rKTsKKwkJCQkJCQkJCSBvbGRfY2hlY2tfb2ssCisJCQkJCQkJCQkgaXNf dGVtcG9yYWwsCisJCQkJCQkJCQkgcGtwZXJpb2QsCisJCQkJCQkJCQkgZmtwZXJpb2QpOwogCiAJ LyogTm93IGhhbmRsZSB0aGUgcmVmZXJlbmNpbmcgc2lkZS4gKi8KIAlhZGRGa1JlY3Vyc2VSZWZl cmVuY2luZyh3cXVldWUsIGZrY29uc3RyYWludCwgcmVsLCBwa3JlbCwKQEAgLTk3NzIsNiArOTY4 MCw5IEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRh YmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJcHBlcW9wZXJhdG9ycywKIAkJCQkJ CQlmZmVxb3BlcmF0b3JzLAogCQkJCQkJCW9sZF9jaGVja19vaywKKwkJCQkJCQlpc190ZW1wb3Jh bCwKKwkJCQkJCQlwa3BlcmlvZCwKKwkJCQkJCQlma3BlcmlvZCwKIAkJCQkJCQlsb2NrbW9kZSk7 CiAKIAkvKgpAQCAtOTgxMiw3ICs5NzIzLDggQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNlZChMaXN0 ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJ ICAgUmVsYXRpb24gcGtyZWwsIE9pZCBpbmRleE9pZCwgT2lkIHBhcmVudENvbnN0ciwKIAkJCQkJ ICAgaW50IG51bWZrcywKIAkJCQkJICAgaW50MTYgKnBrYXR0bnVtLCBpbnQxNiAqZmthdHRudW0s IE9pZCAqcGZlcW9wZXJhdG9ycywKLQkJCQkJICAgT2lkICpwcGVxb3BlcmF0b3JzLCBPaWQgKmZm ZXFvcGVyYXRvcnMsIGJvb2wgb2xkX2NoZWNrX29rKQorCQkJCQkgICBPaWQgKnBwZXFvcGVyYXRv cnMsIE9pZCAqZmZlcW9wZXJhdG9ycywgYm9vbCBvbGRfY2hlY2tfb2ssCisJCQkJCSAgIGJvb2wg aXNfdGVtcG9yYWwsIE9pZCBwa3BlcmlvZCwgT2lkIGZrcGVyaW9kKQogewogCU9iamVjdEFkZHJl c3MgYWRkcmVzczsKIAlPaWQJCQljb25zdHJPaWQ7CkBAIC05ODk0LDggKzk4MDYsOSBAQCBhZGRG a1JlY3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWlu dCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJICBjb25pc2xvY2FsLAkvKiBpc2xvY2FsICovCiAJ CQkJCQkJCQkgIGNvbmluaGNvdW50LAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCQkJICBjb25ub2lu aGVyaXQsIC8qIGNvbk5vSW5oZXJpdCAqLwotCQkJCQkJCQkJICBmYWxzZSwJLyogY29uVGVtcG9y YWwgKi8KLQkJCQkJCQkJCSAgSW52YWxpZE9pZCwKKwkJCQkJCQkJCSAgaXNfdGVtcG9yYWwsCisJ CQkJCQkJCQkgIGZrcGVyaW9kLAorCQkJCQkJCQkJICBwa3BlcmlvZCwKIAkJCQkJCQkJCSAgZmFs c2UpOwkvKiBpc19pbnRlcm5hbCAqLwogCiAJT2JqZWN0QWRkcmVzc1NldChhZGRyZXNzLCBDb25z dHJhaW50UmVsYXRpb25JZCwgY29uc3RyT2lkKTsKQEAgLTk5NzAsNyArOTg4Myw3IEBAIGFkZEZr UmVjdXJzZVJlZmVyZW5jZWQoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50 LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCSAgIHBhcnRJbmRleElkLCBjb25zdHJPaWQsIG51bWZr cywKIAkJCQkJCQkJICAgbWFwcGVkX3BrYXR0bnVtLCBma2F0dG51bSwKIAkJCQkJCQkJICAgcGZl cW9wZXJhdG9ycywgcHBlcW9wZXJhdG9ycywgZmZlcW9wZXJhdG9ycywKLQkJCQkJCQkJICAgb2xk X2NoZWNrX29rKTsKKwkJCQkJCQkJICAgb2xkX2NoZWNrX29rLCBpc190ZW1wb3JhbCwgcGtwZXJp b2QsIGZrcGVyaW9kKTsKIAogCQkJLyogRG9uZSAtLSBjbGVhbiB1cCAoYnV0IGtlZXAgdGhlIGxv Y2spICovCiAJCQl0YWJsZV9jbG9zZShwYXJ0UmVsLCBOb0xvY2spOwpAQCAtMTAwMTksNyArOTkz Miw4IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQg KmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkJUmVsYXRpb24gcGtyZWwsIE9pZCBp bmRleE9pZCwgT2lkIHBhcmVudENvbnN0ciwKIAkJCQkJCWludCBudW1ma3MsIGludDE2ICpwa2F0 dG51bSwgaW50MTYgKmZrYXR0bnVtLAogCQkJCQkJT2lkICpwZmVxb3BlcmF0b3JzLCBPaWQgKnBw ZXFvcGVyYXRvcnMsIE9pZCAqZmZlcW9wZXJhdG9ycywKLQkJCQkJCWJvb2wgb2xkX2NoZWNrX29r LCBMT0NLTU9ERSBsb2NrbW9kZSkKKwkJCQkJCWJvb2wgb2xkX2NoZWNrX29rLCBib29sIGlzX3Rl bXBvcmFsLCBPaWQgcGtwZXJpb2QsCisJCQkJCQlPaWQgZmtwZXJpb2QsIExPQ0tNT0RFIGxvY2tt b2RlKQogewogCUFzc2VydEFyZyhPaWRJc1ZhbGlkKHBhcmVudENvbnN0cikpOwogCkBAIC0xMDA2 Miw2ICs5OTc2LDcgQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29u c3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQluZXdjb24tPnJlZnJlbGlk ID0gUmVsYXRpb25HZXRSZWxpZChwa3JlbCk7CiAJCQluZXdjb24tPnJlZmluZGlkID0gaW5kZXhP aWQ7CiAJCQluZXdjb24tPmNvbmlkID0gcGFyZW50Q29uc3RyOworCQkJbmV3Y29uLT5jb250ZW1w b3JhbCA9IGZrY29uc3RyYWludC0+ZmtfcGVyaW9kICE9IE5VTEw7CiAJCQluZXdjb24tPnF1YWwg PSAoTm9kZSAqKSBma2NvbnN0cmFpbnQ7CiAKIAkJCXRhYi0+Y29uc3RyYWludHMgPSBsYXBwZW5k KHRhYi0+Y29uc3RyYWludHMsIG5ld2Nvbik7CkBAIC0xMDE2NCw4ICsxMDA3OSw5IEBAIGFkZEZr UmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWlu dCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJICBmYWxzZSwKIAkJCQkJCQkJCSAgMSwKIAkJCQkJ CQkJCSAgZmFsc2UsCi0JCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25UZW1wb3JhbCAqLwotCQkJCQkJ CQkJICBJbnZhbGlkT2lkLAorCQkJCQkJCQkJICBpc190ZW1wb3JhbCwKKwkJCQkJCQkJCSAgZmtw ZXJpb2QsCisJCQkJCQkJCQkgIHBrcGVyaW9kLAogCQkJCQkJCQkJICBmYWxzZSk7CiAKIAkJCS8q CkBAIC0xMDE5Miw2ICsxMDEwOCw5IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3 cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJ cHBlcW9wZXJhdG9ycywKIAkJCQkJCQkJCWZmZXFvcGVyYXRvcnMsCiAJCQkJCQkJCQlvbGRfY2hl Y2tfb2ssCisJCQkJCQkJCQlpc190ZW1wb3JhbCwKKwkJCQkJCQkJCXBrcGVyaW9kLAorCQkJCQkJ CQkJZmtwZXJpb2QsCiAJCQkJCQkJCQlsb2NrbW9kZSk7CiAKIAkJCXRhYmxlX2Nsb3NlKHBhcnRp dGlvbiwgTm9Mb2NrKTsKQEAgLTEwMzI5LDYgKzEwMjQ4LDcgQEAgQ2xvbmVGa1JlZmVyZW5jZWQo UmVsYXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0aXRpb25SZWwpCiAJCQkJCQkJCSAgIGNv bnBmZXFvcCwKIAkJCQkJCQkJICAgY29ucHBlcW9wLAogCQkJCQkJCQkgICBjb25mZmVxb3ApOwor CQlBc3NlcnQobnVtZmtzID09IGF0dG1hcC0+bWFwbGVuKTsKIAogCQlmb3IgKGludCBpID0gMDsg aSA8IG51bWZrczsgaSsrKQogCQkJbWFwcGVkX2NvbmZrZXlbaV0gPSBhdHRtYXAtPmF0dG51bXNb Y29uZmtleVtpXSAtIDFdOwpAQCAtMTAzNzUsNyArMTAyOTUsMTAgQEAgQ2xvbmVGa1JlZmVyZW5j ZWQoUmVsYXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0aXRpb25SZWwpCiAJCQkJCQkJICAg Y29ucGZlcW9wLAogCQkJCQkJCSAgIGNvbnBwZXFvcCwKIAkJCQkJCQkgICBjb25mZmVxb3AsCi0J CQkJCQkJICAgdHJ1ZSk7CisJCQkJCQkJICAgdHJ1ZSwKKwkJCQkJCQkgICBjb25zdHJGb3JtLT5j b250ZW1wb3JhbCwKKwkJCQkJCQkgICBjb25zdHJGb3JtLT5jb25mcGVyaW9kLAorCQkJCQkJCSAg IGNvbnN0ckZvcm0tPmNvbnBlcmlvZCk7CiAKIAkJdGFibGVfY2xvc2UoZmtSZWwsIE5vTG9jayk7 CiAJCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CkBAIC0xMDU2OCw4ICsxMDQ5MSw5IEBAIENsb25l RmtSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBwYXJlbnRSZWwsIFJlbGF0aW9u IHBhcnRSZWwpCiAJCQkJCQkJCSAgZmFsc2UsCS8qIGlzbG9jYWwgKi8KIAkJCQkJCQkJICAxLAkv KiBpbmhjb3VudCAqLwogCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25Ob0luaGVyaXQgKi8KLQkJCQkJ CQkJICBmYWxzZSwJLyogY29uVGVtcG9yYWwgKi8KLQkJCQkJCQkJICBJbnZhbGlkT2lkLAorCQkJ CQkJCQkgIGNvbnN0ckZvcm0tPmNvbnRlbXBvcmFsLAorCQkJCQkJCQkgIGNvbnN0ckZvcm0tPmNv bnBlcmlvZCwKKwkJCQkJCQkJICBjb25zdHJGb3JtLT5jb25mcGVyaW9kLAogCQkJCQkJCQkgIHRy dWUpOwogCiAJCS8qIFNldCB1cCBwYXJ0aXRpb24gZGVwZW5kZW5jaWVzIGZvciB0aGUgbmV3IGNv bnN0cmFpbnQgKi8KQEAgLTEwNTk5LDExICsxMDUyMywyMzIgQEAgQ2xvbmVGa1JlZmVyZW5jaW5n KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHBhcmVudFJlbCwgUmVsYXRpb24gcGFydFJlbCkKIAkJ CQkJCQkJY29ucHBlcW9wLAogCQkJCQkJCQljb25mZmVxb3AsCiAJCQkJCQkJCWZhbHNlLAkvKiBu byBvbGQgY2hlY2sgZXhpc3RzICovCisJCQkJCQkJCWNvbnN0ckZvcm0tPmNvbnRlbXBvcmFsLAor CQkJCQkJCQljb25zdHJGb3JtLT5jb25wZXJpb2QsCisJCQkJCQkJCWNvbnN0ckZvcm0tPmNvbmZw ZXJpb2QsCiAJCQkJCQkJCUFjY2Vzc0V4Y2x1c2l2ZUxvY2spOwogCQl0YWJsZV9jbG9zZShwa3Jl bCwgTm9Mb2NrKTsKIAl9CiB9CiAKK3N0YXRpYyB2b2lkCitGaW5kRktDb21wYXJpc29uT3BlcmF0 b3JzKENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwKKwkJQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAor CQlpbnQgaSwKKwkJaW50MTYgKmZrYXR0bnVtLAorCQlib29sICpvbGRfY2hlY2tfb2ssCisJCUxp c3RDZWxsICoqb2xkX3BmZXFvcF9pdGVtLAorCQlPaWQgcGt0eXBlLCBPaWQgZmt0eXBlLCBPaWQg b3BjbGFzcywKKwkJYm9vbCBpc190ZW1wb3JhbCwgYm9vbCBmb3Jfb3ZlcmxhcHMsCisJCU9pZCAq cGZlcW9wT3V0LCBPaWQgKnBwZXFvcE91dCwgT2lkICpmZmVxb3BPdXQpCit7CisJT2lkCQkJZmt0 eXBlZDsKKwlIZWFwVHVwbGUJY2xhX2h0OworCUZvcm1fcGdfb3BjbGFzcyBjbGFfdHVwOworCU9p ZAkJCWFtaWQ7CisJT2lkCQkJb3BmYW1pbHk7CisJT2lkCQkJb3BjaW50eXBlOworCU9pZAkJCXBm ZXFvcDsKKwlPaWQJCQlwcGVxb3A7CisJT2lkCQkJZmZlcW9wOworCWludDE2CQllcXN0cmF0ZWd5 OworCU9pZAkJCXBmZXFvcF9yaWdodDsKKworCS8qIFdlIG5lZWQgc2V2ZXJhbCBmaWVsZHMgb3V0 IG9mIHRoZSBwZ19vcGNsYXNzIGVudHJ5ICovCisJY2xhX2h0ID0gU2VhcmNoU3lzQ2FjaGUxKENM QU9JRCwgT2JqZWN0SWRHZXREYXR1bShvcGNsYXNzKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KGNsYV9odCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBvcGNsYXNz ICV1Iiwgb3BjbGFzcyk7CisJY2xhX3R1cCA9IChGb3JtX3BnX29wY2xhc3MpIEdFVFNUUlVDVChj bGFfaHQpOworCWFtaWQgPSBjbGFfdHVwLT5vcGNtZXRob2Q7CisJb3BmYW1pbHkgPSBjbGFfdHVw LT5vcGNmYW1pbHk7CisJb3BjaW50eXBlID0gY2xhX3R1cC0+b3BjaW50eXBlOworCVJlbGVhc2VT eXNDYWNoZShjbGFfaHQpOworCisJaWYgKGlzX3RlbXBvcmFsKQorCXsKKwkJaWYgKGFtaWQgIT0g R0lTVF9BTV9PSUQpCisJCQllbG9nKEVSUk9SLCAib25seSBHaVNUIGluZGV4ZXMgYXJlIHN1cHBv cnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzIik7CisJCWVxc3RyYXRlZ3kgPSBmb3Jfb3Zl cmxhcHMgPyBSVE92ZXJsYXBTdHJhdGVneU51bWJlciA6IFJURXF1YWxTdHJhdGVneU51bWJlcjsK Kwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogQ2hlY2sgaXQncyBhIGJ0cmVlOyBjdXJyZW50bHkg dGhpcyBjYW4gbmV2ZXIgZmFpbCBzaW5jZSBubyBvdGhlcgorCQkgKiBpbmRleCBBTXMgc3VwcG9y dCB1bmlxdWUgaW5kZXhlcy4gIElmIHdlIGV2ZXIgZGlkIGhhdmUgb3RoZXIgdHlwZXMKKwkJICog b2YgdW5pcXVlIGluZGV4ZXMsIHdlJ2QgbmVlZCBhIHdheSB0byBkZXRlcm1pbmUgd2hpY2ggb3Bl cmF0b3IKKwkJICogc3RyYXRlZ3kgbnVtYmVyIGlzIGVxdWFsaXR5LiAgKElzIGl0IHJlYXNvbmFi bGUgdG8gaW5zaXN0IHRoYXQKKwkJICogZXZlcnkgc3VjaCBpbmRleCBBTSB1c2UgYnRyZWUncyBu dW1iZXIgZm9yIGVxdWFsaXR5PykKKwkJICovCisJCWlmIChhbWlkICE9IEJUUkVFX0FNX09JRCkK KwkJCWVsb2coRVJST1IsICJvbmx5IGItdHJlZSBpbmRleGVzIGFyZSBzdXBwb3J0ZWQgZm9yIGZv cmVpZ24ga2V5cyIpOworCQllcXN0cmF0ZWd5ID0gQlRFcXVhbFN0cmF0ZWd5TnVtYmVyOworCX0K KworCS8qCisJICogVGhlcmUgaGFkIGJldHRlciBiZSBhIHByaW1hcnkgZXF1YWxpdHkgb3BlcmF0 b3IgZm9yIHRoZSBpbmRleC4KKwkgKiBXZSdsbCB1c2UgaXQgZm9yIFBLID0gUEsgY29tcGFyaXNv bnMuCisJICovCisJcHBlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgb3BjaW50 eXBlLCBvcGNpbnR5cGUsCisJCQkJCQkJCSBlcXN0cmF0ZWd5KTsKKworCWlmICghT2lkSXNWYWxp ZChwcGVxb3ApKQorCQllbG9nKEVSUk9SLCAibWlzc2luZyBvcGVyYXRvciAlZCgldSwldSkgaW4g b3BmYW1pbHkgJXUiLAorCQkJIGVxc3RyYXRlZ3ksIG9wY2ludHlwZSwgb3BjaW50eXBlLCBvcGZh bWlseSk7CisKKwkvKgorCSAqIEFyZSB0aGVyZSBlcXVhbGl0eSBvcGVyYXRvcnMgdGhhdCB0YWtl IGV4YWN0bHkgdGhlIEZLIHR5cGU/IEFzc3VtZQorCSAqIHdlIHNob3VsZCBsb29rIHRocm91Z2gg YW55IGRvbWFpbiBoZXJlLgorCSAqLworCWZrdHlwZWQgPSBnZXRCYXNlVHlwZShma3R5cGUpOwor CisJcGZlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgb3BjaW50eXBlLCBma3R5 cGVkLAorCQkJCQkJCQkgZXFzdHJhdGVneSk7CisJaWYgKE9pZElzVmFsaWQocGZlcW9wKSkKKwl7 CisJCXBmZXFvcF9yaWdodCA9IGZrdHlwZWQ7CisJCWZmZXFvcCA9IGdldF9vcGZhbWlseV9tZW1i ZXIob3BmYW1pbHksIGZrdHlwZWQsIGZrdHlwZWQsCisJCQkJCQkJCQkgZXFzdHJhdGVneSk7CisJ fQorCWVsc2UKKwl7CisJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwkJcGZlcW9wX3JpZ2h0 ID0gSW52YWxpZE9pZDsKKwkJZmZlcW9wID0gSW52YWxpZE9pZDsKKwl9CisKKwlpZiAoIShPaWRJ c1ZhbGlkKHBmZXFvcCkgJiYgT2lkSXNWYWxpZChmZmVxb3ApKSkKKwl7CisJCS8qCisJCSAqIE90 aGVyd2lzZSwgbG9vayBmb3IgYW4gaW1wbGljaXQgY2FzdCBmcm9tIHRoZSBGSyB0eXBlIHRvIHRo ZQorCQkgKiBvcGNpbnR5cGUsIGFuZCBpZiBmb3VuZCwgdXNlIHRoZSBwcmltYXJ5IGVxdWFsaXR5 IG9wZXJhdG9yLgorCQkgKiBUaGlzIGlzIGEgYml0IHRyaWNreSBiZWNhdXNlIG9wY2ludHlwZSBt aWdodCBiZSBhIHBvbHltb3JwaGljCisJCSAqIHR5cGUgc3VjaCBhcyBBTllBUlJBWSBvciBBTllF TlVNOyBzbyB3aGF0IHdlIGhhdmUgdG8gdGVzdCBpcworCQkgKiB3aGV0aGVyIHRoZSB0d28gYWN0 dWFsIGNvbHVtbiB0eXBlcyBjYW4gYmUgY29uY3VycmVudGx5IGNhc3QgdG8KKwkJICogdGhhdCB0 eXBlLiAgKE90aGVyd2lzZSwgd2UnZCBmYWlsIHRvIHJlamVjdCBjb21iaW5hdGlvbnMgc3VjaAor CQkgKiBhcyBpbnRbXSBhbmQgcG9pbnRbXS4pCisJCSAqLworCQlPaWQJCQlpbnB1dF90eXBlaWRz WzJdOworCQlPaWQJCQl0YXJnZXRfdHlwZWlkc1syXTsKKworCQlpbnB1dF90eXBlaWRzWzBdID0g cGt0eXBlOworCQlpbnB1dF90eXBlaWRzWzFdID0gZmt0eXBlOworCQl0YXJnZXRfdHlwZWlkc1sw XSA9IG9wY2ludHlwZTsKKwkJdGFyZ2V0X3R5cGVpZHNbMV0gPSBvcGNpbnR5cGU7CisJCWlmIChj YW5fY29lcmNlX3R5cGUoMiwgaW5wdXRfdHlwZWlkcywgdGFyZ2V0X3R5cGVpZHMsCisJCQkJCQkJ Q09FUkNJT05fSU1QTElDSVQpKQorCQl7CisJCQlwZmVxb3AgPSBmZmVxb3AgPSBwcGVxb3A7CisJ CQlwZmVxb3BfcmlnaHQgPSBvcGNpbnR5cGU7CisJCX0KKwl9CisKKwlpZiAoIShPaWRJc1ZhbGlk KHBmZXFvcCkgJiYgT2lkSXNWYWxpZChmZmVxb3ApKSkKKwl7CisJCWNoYXIgKmZrYXR0cl9uYW1l OworCQljaGFyICpwa2F0dHJfbmFtZTsKKworCQlpZiAoZm9yX292ZXJsYXBzKQorCQl7CisJCQlm a2F0dHJfbmFtZSA9IHN0clZhbChma2NvbnN0cmFpbnQtPmZrX3BlcmlvZCk7CisJCQlwa2F0dHJf bmFtZSA9IHN0clZhbChma2NvbnN0cmFpbnQtPnBrX3BlcmlvZCk7CisJCX0KKwkJZWxzZQorCQl7 CisJCQlma2F0dHJfbmFtZSA9IHN0clZhbChsaXN0X250aChma2NvbnN0cmFpbnQtPmZrX2F0dHJz LCBpKSk7CisJCQlwa2F0dHJfbmFtZSA9IHN0clZhbChsaXN0X250aChma2NvbnN0cmFpbnQtPnBr X2F0dHJzLCBpKSk7CisJCX0KKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCSBlcnJtc2coImZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgXCIlc1wiIGNhbm5vdCBiZSBpbXBsZW1lbnRlZCIsCisJCQkJCQlma2NvbnN0cmFpbnQtPmNv bm5hbWUpLAorCQkJCSBlcnJkZXRhaWwoIktleSBjb2x1bW5zIFwiJXNcIiBhbmQgXCIlc1wiICIK KwkJCQkJCSAgICJhcmUgb2YgaW5jb21wYXRpYmxlIHR5cGVzOiAlcyBhbmQgJXMuIiwKKwkJCQkJ CSAgIGZrYXR0cl9uYW1lLAorCQkJCQkJICAgcGthdHRyX25hbWUsCisJCQkJCQkgICBmb3JtYXRf dHlwZV9iZShma3R5cGUpLAorCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUocGt0eXBlKSkpKTsKKwl9 CisKKwlpZiAoKm9sZF9jaGVja19vaykKKwl7CisJCS8qCisJCSAqIFdoZW4gYSBwZmVxb3AgY2hh bmdlcywgcmV2YWxpZGF0ZSB0aGUgY29uc3RyYWludC4gIFdlIGNvdWxkCisJCSAqIHBlcm1pdCBp bnRyYS1vcGZhbWlseSBjaGFuZ2VzLCBidXQgdGhhdCBhZGRzIHN1YnRsZSBjb21wbGV4aXR5CisJ CSAqIHdpdGhvdXQgYW55IGNvbmNyZXRlIGJlbmVmaXQgZm9yIGNvcmUgdHlwZXMuICBXZSBuZWVk IG5vdAorCQkgKiBhc3Nlc3MgcHBlcW9wIG9yIGZmZXFvcCwgd2hpY2ggUklfSW5pdGlhbF9DaGVj aygpIGRvZXMgbm90IHVzZS4KKwkJICovCisJCSpvbGRfY2hlY2tfb2sgPSAocGZlcW9wID09IGxm aXJzdF9vaWQoKm9sZF9wZmVxb3BfaXRlbSkpOworCQkqb2xkX3BmZXFvcF9pdGVtID0gbG5leHQo Zmtjb25zdHJhaW50LT5vbGRfY29ucGZlcW9wLAorCQkJCQkJCQkqb2xkX3BmZXFvcF9pdGVtKTsK Kwl9CisJaWYgKCpvbGRfY2hlY2tfb2spCisJeworCQlPaWQJCQlvbGRfZmt0eXBlOworCQlPaWQJ CQluZXdfZmt0eXBlOworCQlDb2VyY2lvblBhdGhUeXBlIG9sZF9wYXRodHlwZTsKKwkJQ29lcmNp b25QYXRoVHlwZSBuZXdfcGF0aHR5cGU7CisJCU9pZAkJCW9sZF9jYXN0ZnVuYzsKKwkJT2lkCQkJ bmV3X2Nhc3RmdW5jOworCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0cih0 YWItPm9sZERlc2MsCisJCQkJCQkJCQkJCSAgIGZrYXR0bnVtW2ldIC0gMSk7CisKKwkJLyoKKwkJ ICogSWRlbnRpZnkgY29lcmNpb24gcGF0aHdheXMgZnJvbSBlYWNoIG9mIHRoZSBvbGQgYW5kIG5l dyBGSy1zaWRlCisJCSAqIGNvbHVtbiB0eXBlcyB0byB0aGUgcmlnaHQgKGZvcmVpZ24pIG9wZXJh bmQgdHlwZSBvZiB0aGUgcGZlcW9wLgorCQkgKiBXZSBtYXkgYXNzdW1lIHRoYXQgcGdfY29uc3Ry YWludC5jb25rZXkgaXMgbm90IGNoYW5naW5nLgorCQkgKi8KKwkJb2xkX2ZrdHlwZSA9IGF0dHIt PmF0dHR5cGlkOworCQluZXdfZmt0eXBlID0gZmt0eXBlOworCQlvbGRfcGF0aHR5cGUgPSBmaW5k RmtleUNhc3QocGZlcW9wX3JpZ2h0LCBvbGRfZmt0eXBlLAorCQkJCQkJCQkJJm9sZF9jYXN0ZnVu Yyk7CisJCW5ld19wYXRodHlwZSA9IGZpbmRGa2V5Q2FzdChwZmVxb3BfcmlnaHQsIG5ld19ma3R5 cGUsCisJCQkJCQkJCQkmbmV3X2Nhc3RmdW5jKTsKKworCQkvKgorCQkgKiBVcG9uIGEgY2hhbmdl IHRvIHRoZSBjYXN0IGZyb20gdGhlIEZLIGNvbHVtbiB0byBpdHMgcGZlcW9wCisJCSAqIG9wZXJh bmQsIHJldmFsaWRhdGUgdGhlIGNvbnN0cmFpbnQuICBGb3IgdGhpcyBldmFsdWF0aW9uLCBhCisJ CSAqIGJpbmFyeSBjb2VyY2lvbiBjYXN0IGlzIGVxdWl2YWxlbnQgdG8gbm8gY2FzdCBhdCBhbGwu ICBXaGlsZQorCQkgKiB0eXBlIGltcGxlbWVudG9ycyBzaG91bGQgZGVzaWduIGltcGxpY2l0IGNh c3RzIHdpdGggYW4gZXllCisJCSAqIHRvd2FyZCBjb25zaXN0ZW5jeSBvZiBvcGVyYXRpb25zIGxp a2UgZXF1YWxpdHksIHdlIGNhbm5vdAorCQkgKiBhc3N1bWUgaGVyZSB0aGF0IHRoZXkgaGF2ZSBk b25lIHNvLgorCQkgKgorCQkgKiBBIGZ1bmN0aW9uIHdpdGggYSBwb2x5bW9ycGhpYyBhcmd1bWVu dCBjb3VsZCBjaGFuZ2UgYmVoYXZpb3IKKwkJICogYXJiaXRyYXJpbHkgaW4gcmVzcG9uc2UgdG8g Z2V0X2ZuX2V4cHJfYXJndHlwZSgpLiAgVGhlcmVmb3JlLAorCQkgKiB3aGVuIHRoZSBjYXN0IGRl c3RpbmF0aW9uIGlzIHBvbHltb3JwaGljLCB3ZSBvbmx5IGF2b2lkCisJCSAqIHJldmFsaWRhdGlv biBpZiB0aGUgaW5wdXQgdHlwZSBoYXMgbm90IGNoYW5nZWQgYXQgYWxsLiAgR2l2ZW4KKwkJICog anVzdCB0aGUgY29yZSBkYXRhIHR5cGVzIGFuZCBvcGVyYXRvciBjbGFzc2VzLCB0aGlzIHJlcXVp cmVtZW50CisJCSAqIHByZXZlbnRzIG5vIHdvdWxkLWJlIG9wdGltaXphdGlvbnMuCisJCSAqCisJ CSAqIElmIHRoZSBjYXN0IGNvbnZlcnRzIGZyb20gYSBiYXNlIHR5cGUgdG8gYSBkb21haW4gdGhl cmVvbiwgdGhlbgorCQkgKiB0aGF0IGRvbWFpbiB0eXBlIG11c3QgYmUgdGhlIG9wY2ludHlwZSBv ZiB0aGUgdW5pcXVlIGluZGV4LgorCQkgKiBOZWNlc3NhcmlseSwgdGhlIHByaW1hcnkga2V5IGNv bHVtbiBtdXN0IHRoZW4gYmUgb2YgdGhlIGRvbWFpbgorCQkgKiB0eXBlLiAgU2luY2UgdGhlIGNv bnN0cmFpbnQgd2FzIHByZXZpb3VzbHkgdmFsaWQsIGFsbCB2YWx1ZXMgb24KKwkJICogdGhlIGZv cmVpZ24gc2lkZSBuZWNlc3NhcmlseSBleGlzdCBvbiB0aGUgcHJpbWFyeSBzaWRlIGFuZCBpbgor CQkgKiB0dXJuIGNvbmZvcm0gdG8gdGhlIGRvbWFpbi4gIENvbnNlcXVlbnRseSwgd2UgbmVlZCBu b3QgdHJlYXQKKwkJICogZG9tYWlucyBzcGVjaWFsbHkgaGVyZS4KKwkJICoKKwkJICogU2luY2Ug d2UgcmVxdWlyZSB0aGF0IGFsbCBjb2xsYXRpb25zIHNoYXJlIHRoZSBzYW1lIG5vdGlvbiBvZgor CQkgKiBlcXVhbGl0eSAod2hpY2ggdGhleSBkbywgYmVjYXVzZSB0ZXh0ZXEgcmVkdWNlcyB0byBi aXR3aXNlCisJCSAqIGVxdWFsaXR5KSwgd2UgZG9uJ3QgY29tcGFyZSBjb2xsYXRpb24gaGVyZS4K KwkJICoKKwkJICogV2UgbmVlZCBub3QgZGlyZWN0bHkgY29uc2lkZXIgdGhlIFBLIHR5cGUuICBJ dCdzIG5lY2Vzc2FyaWx5CisJCSAqIGJpbmFyeSBjb2VyY2libGUgdG8gdGhlIG9wY2ludHlwZSBv ZiB0aGUgdW5pcXVlIGluZGV4IGNvbHVtbiwKKwkJICogYW5kIHJpX3RyaWdnZXJzLmMgd2lsbCBv bmx5IGRlYWwgd2l0aCBQSyBkYXR1bXMgaW4gdGVybXMgb2YKKwkJICogdGhhdCBvcGNpbnR5cGUu ICBDaGFuZ2luZyB0aGUgb3BjaW50eXBlIGFsc28gY2hhbmdlcyBwZmVxb3AuCisJCSAqLworCQkq b2xkX2NoZWNrX29rID0gKG5ld19wYXRodHlwZSA9PSBvbGRfcGF0aHR5cGUgJiYKKwkJCQkJCW5l d19jYXN0ZnVuYyA9PSBvbGRfY2FzdGZ1bmMgJiYKKwkJCQkJCSghSXNQb2x5bW9ycGhpY1R5cGUo cGZlcW9wX3JpZ2h0KSB8fAorCQkJCQkJIG5ld19ma3R5cGUgPT0gb2xkX2ZrdHlwZSkpOworCisJ fQorCisJKnBmZXFvcE91dCA9IHBmZXFvcDsKKwkqcHBlcW9wT3V0ID0gcHBlcW9wOworCSpmZmVx b3BPdXQgPSBmZmVxb3A7Cit9CisKIC8qCiAgKiBXaGVuIHRoZSBwYXJlbnQgb2YgYSBwYXJ0aXRp b24gcmVjZWl2ZXMgW3RoZSByZWZlcmVuY2luZyBzaWRlIG9mXSBhIGZvcmVpZ24KICAqIGtleSwg d2UgbXVzdCBwcm9wYWdhdGUgdGhhdCBmb3JlaWduIGtleSB0byB0aGUgcGFydGl0aW9uLiAgSG93 ZXZlciwgdGhlCkBAIC0xMTIxNiw2ICsxMTM2MSwzOCBAQCBBVEV4ZWNWYWxpZGF0ZUNvbnN0cmFp bnQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBjaGFyICpjb25zdHJOYW1lLAogCXJldHVy biBhZGRyZXNzOwogfQogCisvKgorICogdHJhbnNmb3JtUGVyaW9kTmFtZSAtIHRyYW5zZm9ybSBw ZXJpb2QgbmFtZSB0byBpdHMgYmFzZSBjb2x1bW5zCisgKgorICogTG9va3VwIHRoZSBuYW1lIGFu ZCByZXR1cm4gemVybyBhcyB0aGUgY29sdW1uIGF0dG51bS4gU2V0CisgKiB0aGUgcGVyaW9kJ3Mg cmFuZ2V0eXBlIChub3QgdGhlIGNvbHVtbnMnIHR5cGUgT0lEcykuCisgKi8KK3N0YXRpYyB2b2lk Cit0cmFuc2Zvcm1QZXJpb2ROYW1lKE9pZCByZWxJZCwgTm9kZSAqcGVyaW9kTmFtZSwKKwkJCQkJ aW50MTYgKmF0dG51bXMsIE9pZCAqYXR0dHlwaWRzLCBPaWQgKnBlcmlvZGlkKQoreworCWNvbnN0 IGNoYXIgKnBlcmlvZFN0ciA9IHN0clZhbChwZXJpb2ROYW1lKTsKKwlIZWFwVHVwbGUgcGVydHVw bGUgPSBTZWFyY2hTeXNDYWNoZTIoUEVSSU9ETkFNRSwKKwkJCQkJICAgT2JqZWN0SWRHZXREYXR1 bShyZWxJZCksCisJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShwZXJpb2RTdHIpKTsKKwlGb3JtX3Bn X3BlcmlvZCBwZXJpb2Q7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQocGVydHVwbGUpKQorCXsK KwkJYXR0bnVtc1swXSA9IEludmFsaWRPaWQ7CisJCWF0dHR5cGlkc1swXSA9IEludmFsaWRPaWQ7 CisJCSpwZXJpb2RpZCA9IEludmFsaWRPaWQ7CisJCXJldHVybjsKKwl9CisKKwlwZXJpb2QgPSAo Rm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVChwZXJ0dXBsZSk7CisKKwlhdHRudW1zWzBdID0gSW52 YWxpZE9pZDsKKwlhdHR0eXBpZHNbMF0gPSBwZXJpb2QtPnBlcnJuZ3R5cGU7CisJKnBlcmlvZGlk ID0gcGVyaW9kLT5vaWQ7CisKKwlSZWxlYXNlU3lzQ2FjaGUocGVydHVwbGUpOworfQogCiAvKgog ICogdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QgLSB0cmFuc2Zvcm0gbGlzdCBvZiBjb2x1bW4gbmFt ZXMKQEAgLTExMjQxLDYgKzExNDE4LDcgQEAgdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoT2lkIHJl bElkLCBMaXN0ICpjb2xMaXN0LAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9DT0xV TU4pLAogCQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIHJlZmVyZW5jZWQgaW4gZm9yZWlnbiBr ZXkgY29uc3RyYWludCBkb2VzIG5vdCBleGlzdCIsCiAJCQkJCQkJYXR0bmFtZSkpKTsKKwogCQlp ZiAoYXR0bnVtID49IElOREVYX01BWF9LRVlTKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVy cmNvZGUoRVJSQ09ERV9UT09fTUFOWV9DT0xVTU5TKSwKQEAgLTExMjYyLDYgKzExNDQwLDkgQEAg dHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoT2lkIHJlbElkLCBMaXN0ICpjb2xMaXN0LAogICoJZm9y IHRoZSBwa3JlbC4gIEFsc28gcmV0dXJuIHRoZSBpbmRleCBPSUQgYW5kIGluZGV4IG9wY2xhc3Nl cyBvZiB0aGUKICAqCWluZGV4IHN1cHBvcnRpbmcgdGhlIHByaW1hcnkga2V5LiAgSWYgdGhpcyBp cyBhIHRlbXBvcmFsIHByaW1hcnkga2V5LAogICoJYWxzbyBzZXQgdGhlIFdJVEhPVVQgT1ZFUkxB UFMgYXR0cmlidXRlIG5hbWUsIGF0dG51bSwgYW5kIGF0dHR5cGlkLgorICoJRm9yIHJhbmdlcyB3 ZSBvbmx5IHNldCBvbmUgdGhpbmcgZm9yIGVhY2ggb2YgdGhvc2UuIEZvciBwZXJpb2RzIHdlIHNl dAorICoJdGhlIHN0YXJ0L2VuZCBjb2x1bW4gbmFtZXMgYW5kIGF0dG51bXMsIGJ1dCB0aGUgdHlw aWRzIHdlIHNldCB0byB0aGUKKyAqCXBlcmlvZCdzIHJhbmdlIHR5cGUuCiAgKgogICoJQWxsIHBh cmFtZXRlcnMgZXhjZXB0IHBrcmVsIGFyZSBvdXRwdXQgcGFyYW1ldGVycy4gIEFsc28sIHRoZSBm dW5jdGlvbgogICoJcmV0dXJuIHZhbHVlIGlzIHRoZSBudW1iZXIgb2YgYXR0cmlidXRlcyBpbiB0 aGUgcHJpbWFyeSBrZXksCkBAIC0xMTI3Myw2ICsxMTQ1NCw4IEBAIHN0YXRpYyBpbnQKIHRyYW5z Zm9ybUZrZXlHZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4T2lkLAogCQkJ CQkJICAgTGlzdCAqKmF0dG5hbWVsaXN0LAogCQkJCQkJICAgaW50MTYgKmF0dG51bXMsIE9pZCAq YXR0dHlwaWRzLAorCQkJCQkJICAgTm9kZSAqKnBlcmlvZGF0dG5hbWUsIE9pZCAqcGVyaW9kaWQs CisJCQkJCQkgICBpbnQxNiAqcGVyaW9kYXR0bnVtcywgT2lkICpwZXJpb2RhdHR0eXBpZHMsCiAJ CQkJCQkgICBPaWQgKm9wY2xhc3NlcykKIHsKIAlMaXN0CSAgICppbmRleG9pZGxpc3Q7CkBAIC0x MTMzOSwzNiArMTE1MjIsODQgQEAgdHJhbnNmb3JtRmtleUdldFByaW1hcnlLZXkoUmVsYXRpb24g cGtyZWwsIE9pZCAqaW5kZXhPaWQsCiAKIAkvKgogCSAqIE5vdyBidWlsZCB0aGUgbGlzdCBvZiBQ SyBhdHRyaWJ1dGVzIGZyb20gdGhlIGluZGtleSBkZWZpbml0aW9uICh3ZQotCSAqIGFzc3VtZSBh IHByaW1hcnkga2V5IGNhbm5vdCBoYXZlIGV4cHJlc3Npb25hbCBlbGVtZW50cykKKwkgKiBhc3N1 bWUgYSBwcmltYXJ5IGtleSBjYW5ub3QgaGF2ZSBleHByZXNzaW9uYWwgZWxlbWVudHMsIHVubGVz cyBpdAorCSAqIGhhcyBhIFBFUklPRCkKIAkgKi8KIAkqYXR0bmFtZWxpc3QgPSBOSUw7CiAJZm9y IChpID0gMDsgaSA8IGluZGV4U3RydWN0LT5pbmRua2V5YXR0czsgaSsrKQogCXsKIAkJaW50CQkJ cGthdHRubyA9IGluZGV4U3RydWN0LT5pbmRrZXkudmFsdWVzW2ldOwogCi0JCWF0dG51bXNbaV0g PSBwa2F0dG5vOwotCQlhdHR0eXBpZHNbaV0gPSBhdHRudW1UeXBlSWQocGtyZWwsIHBrYXR0bm8p OwotCQlvcGNsYXNzZXNbaV0gPSBpbmRjbGFzcy0+dmFsdWVzW2ldOwotCQkqYXR0bmFtZWxpc3Qg PSBsYXBwZW5kKCphdHRuYW1lbGlzdCwKLQkJCQkJCQkgICBtYWtlU3RyaW5nKHBzdHJkdXAoTmFt ZVN0cigqYXR0bnVtQXR0TmFtZShwa3JlbCwgcGthdHRubykpKSkpOworCQlpZiAoaSA9PSBpbmRl eFN0cnVjdC0+aW5kbmtleWF0dHMgLSAxICYmIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbikK KwkJeworCQkJaWYgKHBrYXR0bm8gPT0gSW52YWxpZE9pZCkKKwkJCXsKKwkJCQkvKiB3ZSBoYXZl IGEgcGVyaW9kICovCisJCQkJSGVhcFR1cGxlIHBlcmlvZFR1cGxlID0gU2VhcmNoU3lzQ2FjaGUx KFBFUklPRE9JRCwgT2JqZWN0SWRHZXREYXR1bShpbmRleFN0cnVjdC0+aW5kcGVyaW9kKSk7CisJ CQkJRm9ybV9wZ19wZXJpb2QgcGVyaW9kOworCisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHBl cmlvZFR1cGxlKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHBl cmlvZCAldSIsIGluZGV4U3RydWN0LT5pbmRwZXJpb2QpOworCisJCQkJcGVyaW9kID0gKEZvcm1f cGdfcGVyaW9kKSBHRVRTVFJVQ1QocGVyaW9kVHVwbGUpOworCQkJCWF0dG51bXNbaV0gPSBJbnZh bGlkT2lkOworCQkJCXBlcmlvZGF0dG51bXNbMF0gPSBwZXJpb2QtPnBlcnN0YXJ0OworCQkJCXBl cmlvZGF0dG51bXNbMV0gPSBwZXJpb2QtPnBlcmVuZDsKKwkJCQlwZXJpb2RhdHR0eXBpZHNbMF0g PSBwZXJpb2QtPnBlcnJuZ3R5cGU7CisJCQkJcGVyaW9kYXR0dHlwaWRzWzFdID0gcGVyaW9kLT5w ZXJybmd0eXBlOworCQkJCW9wY2xhc3Nlc1tpXSA9IGluZGNsYXNzLT52YWx1ZXNbaV07CisJCQkJ KnBlcmlvZGlkID0gcGVyaW9kLT5vaWQ7CisJCQkJKnBlcmlvZGF0dG5hbWUgPSAoTm9kZSAqKW1h a2VTdHJpbmcocHN0cmR1cChOYW1lU3RyKHBlcmlvZC0+cGVybmFtZSkpKTsKKworCQkJCVJlbGVh c2VTeXNDYWNoZShwZXJpb2RUdXBsZSk7CisJCQl9CisJCQllbHNlIHsKKwkJCQkvKiB3ZSBoYXZl IGEgcmFuZ2UgKi8KKwkJCQkvKiBUaGUgY2FsbGVyIHdpbGwgc2V0IGF0dG51bXNbaV0gKi8KKwkJ CQlwZXJpb2RhdHRudW1zWzBdID0gcGthdHRubzsKKwkJCQlwZXJpb2RhdHR0eXBpZHNbMF0gPSBh dHRudW1UeXBlSWQocGtyZWwsIHBrYXR0bm8pOworCQkJCW9wY2xhc3Nlc1tpXSA9IGluZGNsYXNz LT52YWx1ZXNbaV07CisJCQkJKnBlcmlvZGlkID0gSW52YWxpZE9pZDsKKwkJCQkqcGVyaW9kYXR0 bmFtZSA9IChOb2RlICopbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIoKmF0dG51bUF0dE5hbWUo cGtyZWwsIHBrYXR0bm8pKSkpOworCQkJfQorCQl9CisJCWVsc2UKKwkJeworCQkJYXR0bnVtc1tp XSA9IHBrYXR0bm87CisJCQlhdHR0eXBpZHNbaV0gPSBhdHRudW1UeXBlSWQocGtyZWwsIHBrYXR0 bm8pOworCQkJb3BjbGFzc2VzW2ldID0gaW5kY2xhc3MtPnZhbHVlc1tpXTsKKwkJCSphdHRuYW1l bGlzdCA9IGxhcHBlbmQoKmF0dG5hbWVsaXN0LAorCQkJCQkJCQkgIG1ha2VTdHJpbmcocHN0cmR1 cChOYW1lU3RyKCphdHRudW1BdHROYW1lKHBrcmVsLCBwa2F0dG5vKSkpKSk7CisJCQkqcGVyaW9k aWQgPSBJbnZhbGlkT2lkOworCQl9CiAJfQogCiAJUmVsZWFzZVN5c0NhY2hlKGluZGV4VHVwbGUp OwogCi0JcmV0dXJuIGk7CisJaWYgKGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbikgcmV0dXJu IGkgLSAxOworCWVsc2UgcmV0dXJuIGk7CiB9CiAKIC8qCiAgKiB0cmFuc2Zvcm1Ga2V5Q2hlY2tB dHRycyAtCiAgKgogICoJTWFrZSBzdXJlIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgYSByZWZlcmVu Y2VkIHRhYmxlIGJlbG9uZyB0byBhIHVuaXF1ZQotICoJKG9yIHByaW1hcnkga2V5KSBjb25zdHJh aW50LiAgUmV0dXJuIHRoZSBPSUQgb2YgdGhlIGluZGV4IHN1cHBvcnRpbmcKLSAqCXRoZSBjb25z dHJhaW50LCBhcyB3ZWxsIGFzIHRoZSBvcGNsYXNzZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbmRl eAorICoJKG9yIHByaW1hcnkga2V5KSBjb25zdHJhaW50LiAgT3IgaWYgdGhpcyBpcyBhIHRlbXBv cmFsIGZvcmVpZ24ga2V5CisgKgl0aGUgcHJpbWFyeSBrZXkgc2hvdWxkIGJlIGFuIGV4Y2x1c2lv biBjb25zdHJhaW50IGluc3RlYWQuCisgKglJdCdzIG9rYXkgdG8gaGF2ZSBhIFBFUklPRCByZWZl cmVuY2luZyBhIHJhbmdlIG9yIGEgcmFuZ2UgcmVmZXJlbmNpbmcKKyAqCWEgUEVSSU9ELCBhcyBs b25nIGFzIHRoZSB0eXBlcyBtYXRjaCB1cC4gSWYgdGhlIFBLIHVzZXMgYSBQRVJJT0QsCisgKgl0 aGVuIHBlcmlvZGlkIHNob3VsZCBiZSBzZXQgYW5kIHBlcmlvZGF0dG51bXMgc2hvdWxkIGNvbnRh aW4gdGhlCisgKglzdGFydCBhbmQgZW5kIGF0dG51bXMuIE90aGVyd2lzZSBwZXJpb2RhdHRudW1z IHNob3VsZCBjb250YWluIHRoZQorICoJcmFuZ2UgYXR0bnVtLgorICoJUmV0dXJuIHRoZSBPSUQg b2YgdGhlIGluZGV4IHN1cHBvcnRpbmcgdGhlIGNvbnN0cmFpbnQsCisgKglhcyB3ZWxsIGFzIHRo ZSBvcGNsYXNzZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbmRleAogICoJY29sdW1ucy4KICAqLwog c3RhdGljIE9pZAogdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCQkJ CQlpbnQgbnVtYXR0cnMsIGludDE2ICphdHRudW1zLAorCQkJCQkJYm9vbCBpc190ZW1wb3JhbCwg aW50MTYgKnBlcmlvZGF0dG51bXMsCisJCQkJCQlPaWQgcGVyaW9kaWQsCiAJCQkJCQlPaWQgKm9w Y2xhc3NlcykgLyogb3V0cHV0IHBhcmFtZXRlciAqLwogewogCU9pZAkJCWluZGV4b2lkID0gSW52 YWxpZE9pZDsKQEAgLTExMzc4LDYgKzExNjA5LDcgQEAgdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMo UmVsYXRpb24gcGtyZWwsCiAJTGlzdENlbGwgICAqaW5kZXhvaWRzY2FuOwogCWludAkJCWksCiAJ CQkJajsKKwlib29sCQloYXNfcGVyaW9kID0gcGVyaW9kaWQgIT0gSW52YWxpZE9pZDsKIAogCS8q CiAJICogUmVqZWN0IGR1cGxpY2F0ZSBhcHBlYXJhbmNlcyBvZiBjb2x1bW5zIGluIHRoZSByZWZl cmVuY2VkLWNvbHVtbnMgbGlzdC4KQEAgLTExMzk1LDYgKzExNjI3LDEwIEBAIHRyYW5zZm9ybUZr ZXlDaGVja0F0dHJzKFJlbGF0aW9uIHBrcmVsLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZB TElEX0ZPUkVJR05fS0VZKSwKIAkJCQkJCSBlcnJtc2coImZvcmVpZ24ga2V5IHJlZmVyZW5jZWQt Y29sdW1ucyBsaXN0IG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlcyIpKSk7CiAJCX0KKwkJaWYg KGlzX3RlbXBvcmFsICYmIGF0dG51bXNbaV0gPT0gcGVyaW9kYXR0bnVtc1swXSkKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GT1JFSUdOX0tFWSksCisJ CQkJCSBlcnJtc2coImZvcmVpZ24ga2V5IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qgbm90 IGNvbnRhaW4gZHVwbGljYXRlcyIpKSk7CiAJfQogCiAJLyoKQEAgLTExNDE2LDE1ICsxMTY1Miwx OSBAQCB0cmFuc2Zvcm1Ga2V5Q2hlY2tBdHRycyhSZWxhdGlvbiBwa3JlbCwKIAkJaW5kZXhTdHJ1 Y3QgPSAoRm9ybV9wZ19pbmRleCkgR0VUU1RSVUNUKGluZGV4VHVwbGUpOwogCiAJCS8qCi0JCSAq IE11c3QgaGF2ZSB0aGUgcmlnaHQgbnVtYmVyIG9mIGNvbHVtbnM7IG11c3QgYmUgdW5pcXVlIGFu ZCBub3QgYQotCQkgKiBwYXJ0aWFsIGluZGV4OyBmb3JnZXQgaXQgaWYgdGhlcmUgYXJlIGFueSBl eHByZXNzaW9ucywgdG9vLiBJbnZhbGlkCi0JCSAqIGluZGV4ZXMgYXJlIG91dCBhcyB3ZWxsLgor CQkgKiBNdXN0IGhhdmUgdGhlIHJpZ2h0IG51bWJlciBvZiBjb2x1bW5zOyBtdXN0IGJlIHVuaXF1 ZQorCQkgKiAob3IgaWYgdGVtcG9yYWwgdGhlbiBleGNsdXNpb24gaW5zdGVhZCkgYW5kIG5vdCBh CisJCSAqIHBhcnRpYWwgaW5kZXg7IGZvcmdldCBpdCBpZiB0aGVyZSBhcmUgYW55IGV4cHJlc3Np b25zLCB0b28gKHVubGVzcworCQkgKiBpdCBoYXMgYSBQRVJJT0QpLiBJbnZhbGlkIGluZGV4ZXMg YXJlIG91dCBhcyB3ZWxsLgogCQkgKi8KLQkJaWYgKGluZGV4U3RydWN0LT5pbmRua2V5YXR0cyA9 PSBudW1hdHRycyAmJgotCQkJaW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlICYmCisJCWlmICgoaXNf dGVtcG9yYWwKKwkJCSAgPyAoaW5kZXhTdHJ1Y3QtPmluZG5rZXlhdHRzID09IG51bWF0dHJzICsg MSAmJgorCQkJCSBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24pCisJCQkgIDogKGluZGV4U3Ry dWN0LT5pbmRua2V5YXR0cyA9PSBudW1hdHRycyAmJgorCQkJCSBpbmRleFN0cnVjdC0+aW5kaXN1 bmlxdWUpKSAmJgogCQkJaW5kZXhTdHJ1Y3QtPmluZGlzdmFsaWQgJiYKIAkJCWhlYXBfYXR0aXNu dWxsKGluZGV4VHVwbGUsIEFudW1fcGdfaW5kZXhfaW5kcHJlZCwgTlVMTCkgJiYKLQkJCWhlYXBf YXR0aXNudWxsKGluZGV4VHVwbGUsIEFudW1fcGdfaW5kZXhfaW5kZXhwcnMsIE5VTEwpKQorCQkJ KGluZGV4U3RydWN0LT5pbmRwZXJpb2QgIT0gSW52YWxpZE9pZCB8fCBoZWFwX2F0dGlzbnVsbChp bmRleFR1cGxlLCBBbnVtX3BnX2luZGV4X2luZGV4cHJzLCBOVUxMKSkpCiAJCXsKIAkJCURhdHVt CQlpbmRjbGFzc0RhdHVtOwogCQkJYm9vbAkJaXNudWxsOwpAQCAtMTE0NjEsNiArMTE3MDEsMzIg QEAgdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCQkJaWYgKCFmb3Vu ZCkKIAkJCQkJYnJlYWs7CiAJCQl9CisJCQlpZiAoZm91bmQgJiYgaXNfdGVtcG9yYWwpCisJCQl7 CisJCQkJaWYgKGhhc19wZXJpb2QpCisJCQkJeworCQkJCQlpZiAocGVyaW9kaWQgPT0gaW5kZXhT dHJ1Y3QtPmluZHBlcmlvZCkKKwkJCQkJeworCQkJCQkJZm91bmQgPSB0cnVlOworCQkJCQkJb3Bj bGFzc2VzW251bWF0dHJzXSA9IGluZGNsYXNzLT52YWx1ZXNbbnVtYXR0cnMgLSAxXTsKKwkJCQkJ fQorCQkJCQllbHNlCisJCQkJCQlmb3VuZCA9IGZhbHNlOworCQkJCX0KKwkJCQllbHNlCisJCQkJ eworCQkJCQlmb3VuZCA9IGZhbHNlOworCQkJCQlmb3IgKGogPSAwOyBqIDwgbnVtYXR0cnMgKyAx OyBqKyspCisJCQkJCXsKKwkJCQkJCWlmIChwZXJpb2RhdHRudW1zWzBdID09IGluZGV4U3RydWN0 LT5pbmRrZXkudmFsdWVzW2pdKQorCQkJCQkJeworCQkJCQkJCW9wY2xhc3Nlc1tudW1hdHRyc10g PSBpbmRjbGFzcy0+dmFsdWVzW2pdOworCQkJCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJCQlicmVh azsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KIAogCQkJLyoKIAkJCSAqIFJlZnVzZSB0 byB1c2UgYSBkZWZlcnJhYmxlIHVuaXF1ZS9wcmltYXJ5IGtleS4gIFRoaXMgaXMgcGVyIFNRTApA QCAtMTE1NzAsNyArMTE4MzYsOCBAQCB2YWxpZGF0ZUZvcmVpZ25LZXlDb25zdHJhaW50KGNoYXIg KmNvbm5hbWUsCiAJCQkJCQkJIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkgUmVsYXRpb24gcGtyZWws CiAJCQkJCQkJIE9pZCBwa2luZE9pZCwKLQkJCQkJCQkgT2lkIGNvbnN0cmFpbnRPaWQpCisJCQkJ CQkJIE9pZCBjb25zdHJhaW50T2lkLAorCQkJCQkJCSBib29sIHRlbXBvcmFsKQogewogCVR1cGxl VGFibGVTbG90ICpzbG90OwogCVRhYmxlU2NhbkRlc2Mgc2NhbjsKQEAgLTExNjAwLDggKzExODY3 LDEwIEBAIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoY2hhciAqY29ubmFtZSwKIAkvKgog CSAqIFNlZSBpZiB3ZSBjYW4gZG8gaXQgd2l0aCBhIHNpbmdsZSBMRUZUIEpPSU4gcXVlcnkuICBB IGZhbHNlIHJlc3VsdAogCSAqIGluZGljYXRlcyB3ZSBtdXN0IHByb2NlZWQgd2l0aCB0aGUgZmly ZS10aGUtdHJpZ2dlciBtZXRob2QuCisJICogV2UgY2FuJ3QgZG8gYSBMRUZUIEpPSU4gZm9yIHRl bXBvcmFsIEZLcyB5ZXQsCisJICogYnV0IHdlIGNhbiBvbmNlIHdlIHN1cHBvcnQgdGVtcG9yYWwg bGVmdCBqb2lucy4KIAkgKi8KLQlpZiAoUklfSW5pdGlhbF9DaGVjaygmdHJpZywgcmVsLCBwa3Jl bCkpCisJaWYgKCF0ZW1wb3JhbCAmJiBSSV9Jbml0aWFsX0NoZWNrKCZ0cmlnLCByZWwsIHBrcmVs KSkKIAkJcmV0dXJuOwogCiAJLyoKQEAgLTExNjYyLDYgKzExOTMxLDcgQEAgQ3JlYXRlRktDaGVj a1RyaWdnZXIoT2lkIG15UmVsT2lkLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0 cmFpbnQsCiAJCQkJCSBPaWQgY29uc3RyYWludE9pZCwgT2lkIGluZGV4T2lkLCBib29sIG9uX2lu c2VydCkKIHsKIAlDcmVhdGVUcmlnU3RtdCAqZmtfdHJpZ2dlcjsKKwlib29sIGlzX3RlbXBvcmFs ID0gZmtjb25zdHJhaW50LT5ma19wZXJpb2Q7CiAKIAkvKgogCSAqIE5vdGU6IGZvciBhIHNlbGYt cmVmZXJlbnRpYWwgRksgKHJlZmVyZW5jaW5nIGFuZCByZWZlcmVuY2VkIHRhYmxlcyBhcmUKQEAg LTExNjc1LDE4ICsxMTk0NSwyNyBAQCBDcmVhdGVGS0NoZWNrVHJpZ2dlcihPaWQgbXlSZWxPaWQs IE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwKIAlma190cmlnZ2VyID0g bWFrZU5vZGUoQ3JlYXRlVHJpZ1N0bXQpOwogCWZrX3RyaWdnZXItPnJlcGxhY2UgPSBmYWxzZTsK IAlma190cmlnZ2VyLT5pc2NvbnN0cmFpbnQgPSB0cnVlOwotCWZrX3RyaWdnZXItPnRyaWduYW1l ID0gIlJJX0NvbnN0cmFpbnRUcmlnZ2VyX2MiOworCWlmIChpc190ZW1wb3JhbCkKKwkJZmtfdHJp Z2dlci0+dHJpZ25hbWUgPSAiVFJJX0NvbnN0cmFpbnRUcmlnZ2VyX2MiOworCWVsc2UKKwkJZmtf dHJpZ2dlci0+dHJpZ25hbWUgPSAiUklfQ29uc3RyYWludFRyaWdnZXJfYyI7CiAJZmtfdHJpZ2dl ci0+cmVsYXRpb24gPSBOVUxMOwogCiAJLyogRWl0aGVyIE9OIElOU0VSVCBvciBPTiBVUERBVEUg Ki8KIAlpZiAob25faW5zZXJ0KQogCXsKLQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1G dW5jTmFtZSgiUklfRktleV9jaGVja19pbnMiKTsKKwkJaWYgKGlzX3RlbXBvcmFsKQorCQkJZmtf dHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfY2hlY2tfaW5zIik7 CisJCWVsc2UKKwkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZL ZXlfY2hlY2tfaW5zIik7CiAJCWZrX3RyaWdnZXItPmV2ZW50cyA9IFRSSUdHRVJfVFlQRV9JTlNF UlQ7CiAJfQogCWVsc2UKIAl7Ci0JCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05h bWUoIlJJX0ZLZXlfY2hlY2tfdXBkIik7CisJCWlmIChpc190ZW1wb3JhbCkKKwkJCWZrX3RyaWdn ZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2NoZWNrX3VwZCIpOworCQll bHNlCisJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2No ZWNrX3VwZCIpOwogCQlma190cmlnZ2VyLT5ldmVudHMgPSBUUklHR0VSX1RZUEVfVVBEQVRFOwog CX0KIApAQCAtMTE3MzUsMzcgKzEyMDE0LDc2IEBAIGNyZWF0ZUZvcmVpZ25LZXlBY3Rpb25Ucmln Z2VycyhSZWxhdGlvbiByZWwsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29uc3RyCiAJ ZmtfdHJpZ2dlci0+d2hlbkNsYXVzZSA9IE5VTEw7CiAJZmtfdHJpZ2dlci0+dHJhbnNpdGlvblJl bHMgPSBOSUw7CiAJZmtfdHJpZ2dlci0+Y29uc3RycmVsID0gTlVMTDsKLQlzd2l0Y2ggKGZrY29u c3RyYWludC0+ZmtfZGVsX2FjdGlvbikKKwlpZiAoZmtjb25zdHJhaW50LT5ma19wZXJpb2QgIT0g TlVMTCkKIAl7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX05PQUNUSU9OOgotCQkJZmtfdHJpZ2dl ci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKLQkJCWZrX3RyaWdnZXIt PmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+aW5pdGRlZmVycmVkOwotCQkJZmtfdHJpZ2dl ci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9ub2FjdGlvbl9kZWwiKTsKLQkJ CWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDoKLQkJCWZrX3RyaWdnZXIt PmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNl OwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9yZXN0 cmljdF9kZWwiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgot CQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRl ZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1l KCJSSV9GS2V5X2Nhc2NhZGVfZGVsIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJ T05fU0VUTlVMTDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZrX3Ry aWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBT eXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRudWxsX2RlbCIpOwotCQkJYnJlYWs7Ci0JCWNhc2Ug RktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0g ZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdn ZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwiKTsK LQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBh Y3Rpb24gdHlwZTogJWQiLAotCQkJCSAoaW50KSBma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24p OwotCQkJYnJlYWs7CisJCS8qIFRlbXBvcmFsIGZvcmVpZ24ga2V5cyAqLworCQlzd2l0Y2ggKGZr Y29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbikKKwkJeworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05f Tk9BQ1RJT046CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVm ZXJyYWJsZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmlu aXRkZWZlcnJlZDsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJU UklfRktleV9ub2FjdGlvbl9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNU SU9OX1JFU1RSSUNUOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlm a190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFt ZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktleV9yZXN0cmljdF9kZWwiKTsKKwkJCQlicmVhazsK KwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJy YWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJ CWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2Nhc2NhZGVf ZGVsIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgorCQkJ CWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVm ZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1l KCJUUklfRktleV9zZXRudWxsX2RlbCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9B Q1RJT05fU0VUREVGQVVMVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJ CQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVu Y25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwiKTsKKwkJCQli cmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rp b24gdHlwZTogJWQiLAorCQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9uKTsK KwkJCQlicmVhazsKKwkJfQorCX0KKwllbHNlCisJeworCQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ ZmtfZGVsX2FjdGlvbikKKwkJeworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJT046CisJ CQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKKwkJ CQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsK KwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X25vYWN0 aW9uX2RlbCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJQ1Q6 CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmlu aXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVu Y05hbWUoIlJJX0ZLZXlfcmVzdHJpY3RfZGVsIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09O U1RSX0FDVElPTl9DQVNDQURFOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsK KwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5m dW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2Nhc2NhZGVfZGVsIik7CisJCQkJYnJl YWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgorCQkJCWZrX3RyaWdnZXItPmRl ZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsK KwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldG51 bGxfZGVsIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxU OgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5p bml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1 bmNOYW1lKCJSSV9GS2V5X3NldGRlZmF1bHRfZGVsIik7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0 OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKKwkJ CQkJIChpbnQpIGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbik7CisJCQkJYnJlYWs7CisJCX0K IAl9CiAKIAkodm9pZCkgQ3JlYXRlVHJpZ2dlcihma190cmlnZ2VyLCBOVUxMLCByZWZSZWxPaWQs IFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKQEAgLTExNzkyLDM3ICsxMjExMCw3NiBAQCBjcmVhdGVG b3JlaWduS2V5QWN0aW9uVHJpZ2dlcnMoUmVsYXRpb24gcmVsLCBPaWQgcmVmUmVsT2lkLCBDb25z dHJhaW50ICpma2NvbnN0cgogCWZrX3RyaWdnZXItPndoZW5DbGF1c2UgPSBOVUxMOwogCWZrX3Ry aWdnZXItPnRyYW5zaXRpb25SZWxzID0gTklMOwogCWZrX3RyaWdnZXItPmNvbnN0cnJlbCA9IE5V TEw7Ci0Jc3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pCisJaWYgKGZrY29uc3Ry YWludC0+ZmtfcGVyaW9kICE9IE5VTEwpCiAJewotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9OT0FD VElPTjoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFi bGU7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZl cnJlZDsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlf bm9hY3Rpb25fdXBkIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJ Q1Q6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5p bml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVu Y05hbWUoIlJJX0ZLZXlfcmVzdHJpY3RfdXBkIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNU Ul9BQ1RJT05fQ0FTQ0FERToKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJ CWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25h bWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jYXNjYWRlX3VwZCIpOwotCQkJYnJlYWs7Ci0J CWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxl ID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3Ry aWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0bnVsbF91cGQiKTsK LQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxUOgotCQkJZmtfdHJp Z2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0g ZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5 X3NldGRlZmF1bHRfdXBkIik7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKLQkJCQkgKGludCkgZmtjb25zdHJh aW50LT5ma191cGRfYWN0aW9uKTsKLQkJCWJyZWFrOworCQkvKiBUZW1wb3JhbCBmb3JlaWduIGtl eXMgKi8KKwkJc3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pCisJCXsKKwkJCWNh c2UgRktDT05TVFJfQUNUSU9OX05PQUNUSU9OOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUg PSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVk ID0gZmtjb25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUg PSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfbm9hY3Rpb25fdXBkIik7CisJCQkJYnJlYWs7CisJ CQljYXNlIEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJh YmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJ ZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfcmVzdHJpY3Rf dXBkIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgorCQkJ CWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVm ZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1l KCJUUklfRktleV9jYXNjYWRlX3VwZCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9B Q1RJT05fU0VUTlVMTDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJ ZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25h bWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfc2V0bnVsbF91cGQiKTsKKwkJCQlicmVhazsK KwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6CisJCQkJZmtfdHJpZ2dlci0+ZGVm ZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwor CQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X3NldGRl ZmF1bHRfdXBkIik7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1 bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKKwkJCQkJIChpbnQpIGZrY29uc3RyYWlu dC0+ZmtfdXBkX2FjdGlvbik7CisJCQkJYnJlYWs7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJc3dp dGNoIChma2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pCisJCXsKKwkJCWNhc2UgRktDT05TVFJf QUNUSU9OX05PQUNUSU9OOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBma2NvbnN0cmFp bnQtPmRlZmVycmFibGU7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmtjb25zdHJh aW50LT5pbml0ZGVmZXJyZWQ7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5j TmFtZSgiUklfRktleV9ub2FjdGlvbl91cGQiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05T VFJfQUNUSU9OX1JFU1RSSUNUOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsK KwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5m dW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3Jlc3RyaWN0X3VwZCIpOworCQkJCWJy ZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FERToKKwkJCQlma190cmlnZ2VyLT5k ZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7 CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jYXNj YWRlX3VwZCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoK KwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5p dGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5j TmFtZSgiUklfRktleV9zZXRudWxsX3VwZCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNU Ul9BQ1RJT05fU0VUREVGQVVMVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7 CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRkZWZhdWx0X3VwZCIpOworCQkJ CWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFj dGlvbiB0eXBlOiAlZCIsCisJCQkJCSAoaW50KSBma2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24p OworCQkJCWJyZWFrOworCQl9CiAJfQogCiAJKHZvaWQpIENyZWF0ZVRyaWdnZXIoZmtfdHJpZ2dl ciwgTlVMTCwgcmVmUmVsT2lkLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmln Z2VyLmMKaW5kZXggMzk1ZmQ5MTVhYi4uNzhjNGRmNWVlMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIu YwpAQCAtODE0LDYgKzgxNCw3IEBAIENyZWF0ZVRyaWdnZXIoQ3JlYXRlVHJpZ1N0bXQgKnN0bXQs IGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJCQkJCQkgIHRydWUsIC8qIG5vaW5oZXJp dCAqLwogCQkJCQkJCQkJCQkgIGZhbHNlLCAvKiBjb250ZW1wb3JhbCAqLwogCQkJCQkJCQkJCQkg IEludmFsaWRPaWQsIC8qIGNvbnBlcmlvZCAqLworCQkJCQkJCQkJCQkgIEludmFsaWRPaWQsIC8q IGNvbmZwZXJpb2QgKi8KIAkJCQkJCQkJCQkJICBpc0ludGVybmFsKTsJLyogaXNfaW50ZXJuYWwg Ki8KIAl9CiAKQEAgLTM3MzYsNiArMzczNyw3IEBAIGFmdGVyVHJpZ2dlckFkZEV2ZW50KEFmdGVy VHJpZ2dlckV2ZW50TGlzdCAqZXZlbnRzLAogCQkJbmV3c2hhcmVkLT5hdHNfcmVsaWQgPT0gZXZ0 c2hhcmVkLT5hdHNfcmVsaWQgJiYKIAkJCW5ld3NoYXJlZC0+YXRzX2V2ZW50ID09IGV2dHNoYXJl ZC0+YXRzX2V2ZW50ICYmCiAJCQluZXdzaGFyZWQtPmF0c190YWJsZSA9PSBldnRzaGFyZWQtPmF0 c190YWJsZSAmJgorCQkJbmV3c2hhcmVkLT5mb3JfcG9ydGlvbl9vZiA9PSBldnRzaGFyZWQtPmZv cl9wb3J0aW9uX29mICYmCiAJCQluZXdzaGFyZWQtPmF0c19maXJpbmdfaWQgPT0gMCkKIAkJCWJy ZWFrOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCmluZGV4IGFhYjczZWIzNjcuLjZmOGU4MzYy NWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYwpAQCAtMzU2OSw2ICszNTY5LDcgQEAgZG9tYWlu QWRkQ29uc3RyYWludChPaWQgZG9tYWluT2lkLCBPaWQgZG9tYWluTmFtZXNwYWNlLCBPaWQgYmFz ZVR5cGVPaWQsCiAJCQkJCQkJICBmYWxzZSwJLyogY29ubm9pbmhlcml0ICovCiAJCQkJCQkJICBm YWxzZSwJLyogY29udGVtcG9yYWwgKi8KIAkJCQkJCQkgIEludmFsaWRPaWQsIC8qIGNvbnBlcmlv ZCAqLworCQkJCQkJCSAgSW52YWxpZE9pZCwgLyogY29uZnBlcmlvZCAqLwogCQkJCQkJCSAgZmFs c2UpOwkvKiBpc19pbnRlcm5hbCAqLwogCWlmIChjb25zdHJBZGRyKQogCQlPYmplY3RBZGRyZXNz U2V0KCpjb25zdHJBZGRyLCBDb25zdHJhaW50UmVsYXRpb25JZCwgY2NvaWQpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5 ZnVuY3MuYwppbmRleCA4NjMwZWY5YTc3Li44MmM1OTkxOWUwIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3Mu YwpAQCAtMzExOSw3ICszMTE5LDkgQEAgX2NvcHlDb25zdHJhaW50KGNvbnN0IENvbnN0cmFpbnQg KmZyb20pCiAJQ09QWV9OT0RFX0ZJRUxEKHdoZXJlX2NsYXVzZSk7CiAJQ09QWV9OT0RFX0ZJRUxE KHBrdGFibGUpOwogCUNPUFlfTk9ERV9GSUVMRChma19hdHRycyk7CisJQ09QWV9OT0RFX0ZJRUxE KGZrX3BlcmlvZCk7CiAJQ09QWV9OT0RFX0ZJRUxEKHBrX2F0dHJzKTsKKwlDT1BZX05PREVfRklF TEQocGtfcGVyaW9kKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChma19tYXRjaHR5cGUpOwogCUNPUFlf U0NBTEFSX0ZJRUxEKGZrX3VwZF9hY3Rpb24pOwogCUNPUFlfU0NBTEFSX0ZJRUxEKGZrX2RlbF9h Y3Rpb24pOwpAQCAtMzIyMSw2ICszMjIzLDcgQEAgX2NvcHlRdWVyeShjb25zdCBRdWVyeSAqZnJv bSkKIAlDT1BZX1NDQUxBUl9GSUVMRChjYW5TZXRUYWcpOwogCUNPUFlfTk9ERV9GSUVMRCh1dGls aXR5U3RtdCk7CiAJQ09QWV9TQ0FMQVJfRklFTEQocmVzdWx0UmVsYXRpb24pOworCUNPUFlfTk9E RV9GSUVMRChmb3JQb3J0aW9uT2YpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKGhhc0FnZ3MpOwogCUNP UFlfU0NBTEFSX0ZJRUxEKGhhc1dpbmRvd0Z1bmNzKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChoYXNU YXJnZXRTUkZzKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGRiYzViMzhkMDAuLjRkNzdlYzllMGEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQpAQCAtNDk1LDExICs0OTUsMTIgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVW aWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0 eXBlIDxub2RlPglUYWJsZUVsZW1lbnQgVHlwZWRUYWJsZUVsZW1lbnQgQ29uc3RyYWludEVsZW0g VGFibGVGdW5jRWxlbWVudAogJXR5cGUgPG5vZGU+CWNvbHVtbkRlZiBjb2x1bW5PcHRpb25zCiAl dHlwZSA8ZGVmZWx0PglkZWZfZWxlbSByZWxvcHRpb25fZWxlbSBvbGRfYWdncl9lbGVtIG9wZXJh dG9yX2RlZl9lbGVtCi0ldHlwZSA8bm9kZT4JZGVmX2FyZyBjb2x1bW5FbGVtIHdpdGhvdXRPdmVy bGFwc0NsYXVzZQorJXR5cGUgPG5vZGU+CWRlZl9hcmcgY29sdW1uRWxlbSB3aXRob3V0T3Zlcmxh cHNDbGF1c2Ugb3B0aW9uYWxQZXJpb2ROYW1lCiAJCQkJd2hlcmVfY2xhdXNlIHdoZXJlX29yX2N1 cnJlbnRfY2xhdXNlCiAJCQkJYV9leHByIGJfZXhwciBjX2V4cHIgQWV4cHJDb25zdCBpbmRpcmVj dGlvbl9lbCBvcHRfc2xpY2VfYm91bmQKIAkJCQljb2x1bW5yZWYgaW5fZXhwciBoYXZpbmdfY2xh dXNlIGZ1bmNfdGFibGUgeG1sdGFibGUgYXJyYXlfZXhwcgogCQkJCU9wdFdoZXJlQ2xhdXNlIG9w ZXJhdG9yX2RlZl9hcmcKKyV0eXBlIDxsaXN0PglvcHRfY29sdW1uX2FuZF9wZXJpb2RfbGlzdAog JXR5cGUgPGxpc3Q+CXJvd3Nmcm9tX2l0ZW0gcm93c2Zyb21fbGlzdCBvcHRfY29sX2RlZl9saXN0 CiAldHlwZSA8Ym9vbGVhbj4gb3B0X29yZGluYWxpdHkKICV0eXBlIDxsaXN0PglFeGNsdXNpb25D b25zdHJhaW50TGlzdCBFeGNsdXNpb25Db25zdHJhaW50RWxlbQpAQCAtMzkyNywxOSArMzkyOCwy MSBAQCBDb25zdHJhaW50RWxlbToKIAkJCQkJCQkJICAgTlVMTCwgeXlzY2FubmVyKTsKIAkJCQkJ JCQgPSAoTm9kZSAqKW47CiAJCQkJfQotCQkJfCBGT1JFSUdOIEtFWSAnKCcgY29sdW1uTGlzdCAn KScgUkVGRVJFTkNFUyBxdWFsaWZpZWRfbmFtZQotCQkJCW9wdF9jb2x1bW5fbGlzdCBrZXlfbWF0 Y2gga2V5X2FjdGlvbnMgQ29uc3RyYWludEF0dHJpYnV0ZVNwZWMKKwkJCXwgRk9SRUlHTiBLRVkg JygnIGNvbHVtbkxpc3Qgb3B0aW9uYWxQZXJpb2ROYW1lICcpJyBSRUZFUkVOQ0VTIHF1YWxpZmll ZF9uYW1lCisJCQkJb3B0X2NvbHVtbl9hbmRfcGVyaW9kX2xpc3Qga2V5X21hdGNoIGtleV9hY3Rp b25zIENvbnN0cmFpbnRBdHRyaWJ1dGVTcGVjCiAJCQkJewogCQkJCQlDb25zdHJhaW50ICpuID0g bWFrZU5vZGUoQ29uc3RyYWludCk7CiAJCQkJCW4tPmNvbnR5cGUgPSBDT05TVFJfRk9SRUlHTjsK IAkJCQkJbi0+bG9jYXRpb24gPSBAMTsKLQkJCQkJbi0+cGt0YWJsZQkJCT0gJDc7CisJCQkJCW4t PnBrdGFibGUJCQk9ICQ4OwogCQkJCQluLT5ma19hdHRycwkJCT0gJDQ7Ci0JCQkJCW4tPnBrX2F0 dHJzCQkJPSAkODsKLQkJCQkJbi0+ZmtfbWF0Y2h0eXBlCQk9ICQ5OwotCQkJCQluLT5ma191cGRf YWN0aW9uCT0gKGNoYXIpICgkMTAgPj4gOCk7Ci0JCQkJCW4tPmZrX2RlbF9hY3Rpb24JPSAoY2hh cikgKCQxMCAmIDB4RkYpOwotCQkJCQlwcm9jZXNzQ0FTYml0cygkMTEsIEAxMSwgIkZPUkVJR04g S0VZIiwKKwkJCQkJbi0+ZmtfcGVyaW9kCQk9ICQ1OworCQkJCQluLT5wa19hdHRycwkJCT0gbGlu aXRpYWwoJDkpOworCQkJCQluLT5wa19wZXJpb2QJCT0gbHNlY29uZCgkOSk7CisJCQkJCW4tPmZr X21hdGNodHlwZQkJPSAkMTA7CisJCQkJCW4tPmZrX3VwZF9hY3Rpb24JPSAoY2hhcikgKCQxMSA+ PiA4KTsKKwkJCQkJbi0+ZmtfZGVsX2FjdGlvbgk9IChjaGFyKSAoJDExICYgMHhGRik7CisJCQkJ CXByb2Nlc3NDQVNiaXRzKCQxMiwgQDEyLCAiRk9SRUlHTiBLRVkiLAogCQkJCQkJCQkgICAmbi0+ ZGVmZXJyYWJsZSwgJm4tPmluaXRkZWZlcnJlZCwKIAkJCQkJCQkJICAgJm4tPnNraXBfdmFsaWRh dGlvbiwgTlVMTCwKIAkJCQkJCQkJICAgeXlzY2FubmVyKTsKQEAgLTM5NjcsNiArMzk3MCwxNiBA QCB3aXRob3V0T3ZlcmxhcHNDbGF1c2U6CiAJCQl8IC8qRU1QVFkqLyAgICAgICAgICAgICAgIHsg JCQgPSBOVUxMOyB9CiAJOwogCitvcHRpb25hbFBlcmlvZE5hbWU6CisJCQknLCcgUEVSSU9EIGNv bHVtbkVsZW0geyAkJCA9ICQzOyB9CisJCQl8IC8qRU1QVFkqLyAgICAgICAgICAgICAgIHsgJCQg PSBOVUxMOyB9CisJOworCitvcHRfY29sdW1uX2FuZF9wZXJpb2RfbGlzdDoKKwkJCScoJyBjb2x1 bW5MaXN0IG9wdGlvbmFsUGVyaW9kTmFtZSAnKScJCQl7ICQkID0gbGlzdF9tYWtlMigkMiwgJDMp OyB9CisJCQl8IC8qRU1QVFkqLwkJCQkJCQkJeyAkJCA9IGxpc3RfbWFrZTIoTklMLCBOVUxMKTsg fQorCQk7CisKIGNvbHVtbkVsZW06IENvbElkCiAJCQkJewogCQkJCQkkJCA9IChOb2RlICopIG1h a2VTdHJpbmcoJDEpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlw ZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzLmMKaW5kZXggNWEzODE3ODQ4 NS4uMTU5NGZlMGUyOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlw ZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jCkBAIC0yMTMwLDYg KzIxMzAsMzUgQEAgbWFrZV9lbXB0eV9yYW5nZShUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUpCiAJ cmV0dXJuIG1ha2VfcmFuZ2UodHlwY2FjaGUsICZsb3dlciwgJnVwcGVyLCB0cnVlKTsKIH0KIAor LyoKKyAqIENvbnZlcnQgYSByYW5nZSB0byBhIHN0cmluZy4gVGhpcyBpc24ndCB1c2VkIGFueXdo ZXJlIGJ1dCBpdCBoYW5keSBmb3IgCisgKiBkZWJ1Z2dpbmcuIFBlcmhhcHMgd2Ugc2hvdWxkIHJl bW92ZSBpdD8KKyAqLworY2hhciAqCityYW5nZV9hc19zdHJpbmcoUmFuZ2VUeXBlICpyKQorewor ICBpbnQxNiAgICAgICB0eXBsZW47CisgIGJvb2wgICAgICAgIHR5cGJ5dmFsOworICBjaGFyICAg ICAgICB0eXBhbGlnbjsKKyAgY2hhciAgICAgICAgdHlwZGVsaW07CisgIGNoYXIJCSAqcmFuZ2VT dHI7CisgIE9pZCB0eXBpb3BhcmFtOworICBPaWQgcmFuZ2Vfb3V0X29pZDsKKworICBnZXRfdHlw ZV9pb19kYXRhKAorCQkgIFJhbmdlVHlwZUdldE9pZChyKSwKKwkJICBJT0Z1bmNfb3V0cHV0LAor CQkgICZ0eXBsZW4sCisJCSAgJnR5cGJ5dmFsLAorCQkgICZ0eXBhbGlnbiwKKwkJICAmdHlwZGVs aW0sCisJCSAgJnR5cGlvcGFyYW0sCisJCSAgJnJhbmdlX291dF9vaWQpOworICByYW5nZVN0ciA9 IE9pZE91dHB1dEZ1bmN0aW9uQ2FsbChyYW5nZV9vdXRfb2lkLCBSYW5nZVR5cGVQR2V0RGF0dW0o cikpOworCisgIHJldHVybiByYW5nZVN0cjsKK30KKwogCiAvKgogICotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9yaV90cmlnZ2Vycy5jCmluZGV4IDk2MjY5ZmMyYWQuLjQ2MDZlZTgxZDAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19jb2xsYXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJp b2QuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3JhbmdlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1 dG9yL2V4ZWN1dG9yLmgiCkBAIC03OCw2ICs4MCwxMCBAQAogI2RlZmluZSBSSV9QTEFOX1JFU1RS SUNUX0NIRUNLUkVGCQk1CiAjZGVmaW5lIFJJX1BMQU5fU0VUTlVMTF9ET1VQREFURQkJNgogI2Rl ZmluZSBSSV9QTEFOX1NFVERFRkFVTFRfRE9VUERBVEUJCTcKKyNkZWZpbmUgVFJJX1BMQU5fQ0FT Q0FERV9ERUxfRE9ERUxFVEUJOAorI2RlZmluZSBUUklfUExBTl9DQVNDQURFX1VQRF9ET1VQREFU RQk5CisjZGVmaW5lIFRSSV9QTEFOX1NFVE5VTExfRE9VUERBVEUJCTEwCisjZGVmaW5lIFRSSV9Q TEFOX1NFVERFRkFVTFRfRE9VUERBVEUJMTEKIAogI2RlZmluZSBNQVhfUVVPVEVEX05BTUVfTEVO ICAoTkFNRURBVEFMRU4qMiszKQogI2RlZmluZSBNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTiAgKE1B WF9RVU9URURfTkFNRV9MRU4qMikKQEAgLTExMSw3ICsxMTcsMTggQEAgdHlwZWRlZiBzdHJ1Y3Qg UklfQ29uc3RyYWludEluZm8KIAljaGFyCQljb25mdXBkdHlwZTsJLyogZm9yZWlnbiBrZXkncyBP TiBVUERBVEUgYWN0aW9uICovCiAJY2hhcgkJY29uZmRlbHR5cGU7CS8qIGZvcmVpZ24ga2V5J3Mg T04gREVMRVRFIGFjdGlvbiAqLwogCWNoYXIJCWNvbmZtYXRjaHR5cGU7CS8qIGZvcmVpZ24ga2V5 J3MgbWF0Y2ggdHlwZSAqLworCWJvb2wJCXRlbXBvcmFsOwkJLyogaWYgdGhlIGZvcmVpZ24ga2V5 IGlzIHRlbXBvcmFsICovCiAJaW50CQkJbmtleXM7CQkJLyogbnVtYmVyIG9mIGtleSBjb2x1bW5z ICovCisJT2lkCQkJcGtfcGVyaW9kOwkJLyogc2V0IGlmIHRoZSB0ZW1wb3JhbCBwcmltYXJ5IGtl eSBoYXMgYSBwZXJpb2QgKi8KKwlPaWQJCQlma19wZXJpb2Q7CQkvKiBzZXQgaWYgdGhlIHRlbXBv cmFsIGZvcmVpZ24ga2V5IGhhcyBhIHBlcmlvZCAqLworCU9pZAkJCXBrX3BlcmlvZF9yYW5nZXR5 cGU7CQkvKiBzZXQgaWYgdGhlIHRlbXBvcmFsIHByaW1hcnkga2V5IGhhcyBhIHBlcmlvZCAqLwor CU9pZAkJCWZrX3BlcmlvZF9yYW5nZXR5cGU7CQkvKiBzZXQgaWYgdGhlIHRlbXBvcmFsIGZvcmVp Z24ga2V5IGhhcyBhIHBlcmlvZCAqLworCWNoYXIJCXBrX3BlcmlvZF9yYW5nZXR5cGVfbmFtZVtO QU1FREFUQUxFTl07CS8qIHBrIHBlcmlvZCdzIHJhbmdldHlwZSdzIG5hbWUgKi8KKwljaGFyCQlm a19wZXJpb2RfcmFuZ2V0eXBlX25hbWVbTkFNRURBVEFMRU5dOwkvKiBmayBwZXJpb2QncyByYW5n ZXR5cGUncyBuYW1lICovCisJT2lkCQkJcGtfcGVyaW9kX2NvbGxhdGlvbjsJCS8qIHBrIHBlcmlv ZCdzIHJhbmdldHlwZSdzIGNvbGxhdGlvbiAqLworCU9pZAkJCWZrX3BlcmlvZF9jb2xsYXRpb247 CQkvKiBmayBwZXJpb2QncyByYW5nZXR5cGUncyBjb2xsYXRpb24gKi8KKwlpbnQxNgkJcGtfcGVy aW9kX2F0dG51bXNbMl07CQkvKiBhdHRudW1zIG9mIHRoZSByZWZlcmVuY2VkIHBlcmlvZCBjb2xz ICovCisJaW50MTYJCWZrX3BlcmlvZF9hdHRudW1zWzJdOwkJLyogYXR0bnVtcyBvZiB0aGUgcmVm ZXJlbmNpbmcgcGVyaW9kIGNvbHMgKi8KIAlpbnQxNgkJcGtfYXR0bnVtc1tSSV9NQVhfTlVNS0VZ U107IC8qIGF0dG51bXMgb2YgcmVmZXJlbmNlZCBjb2xzICovCiAJaW50MTYJCWZrX2F0dG51bXNb UklfTUFYX05VTUtFWVNdOyAvKiBhdHRudW1zIG9mIHJlZmVyZW5jaW5nIGNvbHMgKi8KIAlPaWQJ CQlwZl9lcV9vcHJzW1JJX01BWF9OVU1LRVlTXTsgLyogZXF1YWxpdHkgb3BlcmF0b3JzIChQSyA9 IEZLKSAqLwpAQCAtMTgxLDYgKzE5OCw3IEBAIHN0YXRpYyBib29sIHJpX0NoZWNrX1BrX01hdGNo KFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCQkJCQkJCSAgY29uc3QgUklfQ29u c3RyYWludEluZm8gKnJpaW5mbyk7CiBzdGF0aWMgRGF0dW0gcmlfcmVzdHJpY3QoVHJpZ2dlckRh dGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbik7CiBzdGF0aWMgRGF0dW0gcmlfc2V0KFRy aWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCk7CitzdGF0aWMgRGF0dW0gdHJp X3NldChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwpOwogc3RhdGljIHZv aWQgcXVvdGVPbmVOYW1lKGNoYXIgKmJ1ZmZlciwgY29uc3QgY2hhciAqbmFtZSk7CiBzdGF0aWMg dm9pZCBxdW90ZVJlbGF0aW9uTmFtZShjaGFyICpidWZmZXIsIFJlbGF0aW9uIHJlbCk7CiBzdGF0 aWMgdm9pZCByaV9HZW5lcmF0ZVF1YWwoU3RyaW5nSW5mbyBidWYsCkBAIC0xOTQsNyArMjEyLDcg QEAgc3RhdGljIGludAlyaV9OdWxsQ2hlY2soVHVwbGVEZXNjIHR1cGRlc2MsIFR1cGxlVGFibGVT bG90ICpzbG90LAogc3RhdGljIHZvaWQgcmlfQnVpbGRRdWVyeUtleShSSV9RdWVyeUtleSAqa2V5 LAogCQkJCQkJCSBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCQkJCSBpbnQz MiBjb25zdHJfcXVlcnlubyk7Ci1zdGF0aWMgYm9vbCByaV9LZXlzRXF1YWwoUmVsYXRpb24gcmVs LCBUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCitzdGF0 aWMgYm9vbCByaV9LZXlzU3RhYmxlKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKm9sZHNs b3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90LAogCQkJCQkJIGNvbnN0IFJJX0NvbnN0cmFpbnRJ bmZvICpyaWluZm8sIGJvb2wgcmVsX2lzX3BrKTsKIHN0YXRpYyBib29sIHJpX0F0dHJpYnV0ZXNF cXVhbChPaWQgZXFfb3ByLCBPaWQgdHlwZWlkLAogCQkJCQkJCSAgIERhdHVtIG9sZHZhbHVlLCBE YXR1bSBuZXd2YWx1ZSk7CkBAIC0yMDksNiArMjI3LDcgQEAgc3RhdGljIHZvaWQgcmlfQ2hlY2tU cmlnZ2VyKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBjb25zdCBjaGFyICpmdW5jbmFtZSwKIAkJ CQkJCQlpbnQgdGdraW5kKTsKIHN0YXRpYyBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlfRmV0 Y2hDb25zdHJhaW50SW5mbyhUcmlnZ2VyICp0cmlnZ2VyLAogCQkJCQkJCQkJCQkJCSAgIFJlbGF0 aW9uIHRyaWdfcmVsLCBib29sIHJlbF9pc19wayk7CitzdGF0aWMgdm9pZCBEZWNvbnN0cnVjdEZr Q29uc3RyYWludFBlcmlvZChPaWQgcGVyaW9kaWQsIE9pZCAqcmFuZ2V0eXBlaWQsIGNoYXIgKnJh bmdldHlwZW5hbWUsIE9pZCAqcm5nY29sbGF0aW9uLCBpbnQxNiAqYXR0bnVtcyk7CiBzdGF0aWMg Y29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpX0xvYWRDb25zdHJhaW50SW5mbyhPaWQgY29uc3Ry YWludE9pZCk7CiBzdGF0aWMgT2lkCWdldF9yaV9jb25zdHJhaW50X3Jvb3QoT2lkIGNvbnN0ck9p ZCk7CiBzdGF0aWMgU1BJUGxhblB0ciByaV9QbGFuQ2hlY2soY29uc3QgY2hhciAqcXVlcnlzdHIs IGludCBuYXJncywgT2lkICphcmd0eXBlcywKQEAgLTIxNywxNiArMjM2LDk5IEBAIHN0YXRpYyBi b29sIHJpX1BlcmZvcm1DaGVjayhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJ CQkJCVJJX1F1ZXJ5S2V5ICpxa2V5LCBTUElQbGFuUHRyIHFwbGFuLAogCQkJCQkJCVJlbGF0aW9u IGZrX3JlbCwgUmVsYXRpb24gcGtfcmVsLAogCQkJCQkJCVR1cGxlVGFibGVTbG90ICpvbGRzbG90 LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwKKwkJCQkJCQlib29sIGhhc0ZvclBvcnRpb25PZiwg RGF0dW0gZm9yUG9ydGlvbk9mLAogCQkJCQkJCWJvb2wgZGV0ZWN0TmV3Um93cywgaW50IGV4cGVj dF9PSyk7CiBzdGF0aWMgdm9pZCByaV9FeHRyYWN0VmFsdWVzKFJlbGF0aW9uIHJlbCwgVHVwbGVU YWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkJIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8s IGJvb2wgcmVsX2lzX3BrLAorCQkJCQkJCSBib29sIGhhc0ZvclBvcnRpb25PZiwgRGF0dW0gZm9y UG9ydGlvbk9mLAogCQkJCQkJCSBEYXR1bSAqdmFscywgY2hhciAqbnVsbHMpOwogc3RhdGljIHZv aWQgcmlfUmVwb3J0VmlvbGF0aW9uKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJ CQkJCQkJICAgUmVsYXRpb24gcGtfcmVsLCBSZWxhdGlvbiBma19yZWwsCiAJCQkJCQkJICAgVHVw bGVUYWJsZVNsb3QgKnZpb2xhdG9yc2xvdCwgVHVwbGVEZXNjIHR1cGRlc2MsCiAJCQkJCQkJICAg aW50IHF1ZXJ5bm8sIGJvb2wgcGFydGdvbmUpIHBnX2F0dHJpYnV0ZV9ub3JldHVybigpOworc3Rh dGljIERhdHVtIHR1cGxlUmFuZ2UoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIGNvbnN0IFJJX0NvbnN0 cmFpbnRJbmZvICpyaWluZm8pOwogCiAKKy8qCisgKiBxdWVyeV9wZXJpb2RfcmFuZ2UKKyAqCisg KiBCdWlsZHMgYSBTUUwgc3RyaW5nIHRvIGNvbnN0cnVjdCBhIHJhbmdlIGZyb20gYSBwZXJpb2Qn cyBzdGFydCBhbmQgZW5kIGNvbHVtbnMuCisgKi8KK3N0YXRpYyBjaGFyICoKK3F1ZXJ5X3Blcmlv ZF9yYW5nZShjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLCBSZWxhdGlvbiByZWwsIGNv bnN0IGNoYXIgKnRhYmxlX25hbWUsIGJvb2wgcmVsX2lzX3BrKQoreworCVN0cmluZ0luZm8gc3Ry ID0gbWFrZVN0cmluZ0luZm8oKTsKKwljaGFyIGF0dG5hbWVbTUFYX1FVT1RFRF9OQU1FX0xFTiAr IDNdOworCWludCB0YWJsZV9uYW1lX2xlbiA9IHN0cmxlbih0YWJsZV9uYW1lKTsKKworCUFzc2Vy dCh0YWJsZV9uYW1lX2xlbiA8PSAzKTsKKworCXN0cmNweShhdHRuYW1lLCB0YWJsZV9uYW1lKTsK KwlpZiAocmVsX2lzX3BrKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mbyhzdHIsICIlcygiLCByaWlu Zm8tPnBrX3BlcmlvZF9yYW5nZXR5cGVfbmFtZSk7CisKKwkJcXVvdGVPbmVOYW1lKGF0dG5hbWUg KyB0YWJsZV9uYW1lX2xlbiwKKwkJCQkJIFJJQXR0TmFtZShyZWwsIHJpaW5mby0+cGtfcGVyaW9k X2F0dG51bXNbMF0pKTsKKwkJYXBwZW5kU3RyaW5nSW5mbyhzdHIsICIlcywgIiwgYXR0bmFtZSk7 CisKKwkJcXVvdGVPbmVOYW1lKGF0dG5hbWUgKyB0YWJsZV9uYW1lX2xlbiwKKwkJCQkJIFJJQXR0 TmFtZShyZWwsIHJpaW5mby0+cGtfcGVyaW9kX2F0dG51bXNbMV0pKTsKKwkJYXBwZW5kU3RyaW5n SW5mbyhzdHIsICIlcykiLCBhdHRuYW1lKTsKKwl9CisJZWxzZQorCXsKKwkJYXBwZW5kU3RyaW5n SW5mbyhzdHIsICIlcygiLCByaWluZm8tPmZrX3BlcmlvZF9yYW5nZXR5cGVfbmFtZSk7CisKKwkJ cXVvdGVPbmVOYW1lKGF0dG5hbWUgKyB0YWJsZV9uYW1lX2xlbiwKKwkJCQkJIFJJQXR0TmFtZShy ZWwsIHJpaW5mby0+ZmtfcGVyaW9kX2F0dG51bXNbMF0pKTsKKwkJYXBwZW5kU3RyaW5nSW5mbyhz dHIsICIlcywgIiwgYXR0bmFtZSk7CisKKwkJcXVvdGVPbmVOYW1lKGF0dG5hbWUgKyB0YWJsZV9u YW1lX2xlbiwKKwkJCQkJIFJJQXR0TmFtZShyZWwsIHJpaW5mby0+ZmtfcGVyaW9kX2F0dG51bXNb MV0pKTsKKwkJYXBwZW5kU3RyaW5nSW5mbyhzdHIsICIlcykiLCBhdHRuYW1lKTsKKwl9CisKKwly ZXR1cm4gcHN0cmR1cChzdHItPmRhdGEpOworfQorCisKK3N0YXRpYyBEYXR1bQorYnVpbGRfcGVy aW9kX3JhbmdlKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIFR1cGxlVGFibGVTbG90 ICpzbG90LCBib29sIHJlbF9pc19waykKK3sKKwljb25zdCBpbnQxNiAqcGVyaW9kX2F0dG51bXMg PSByZWxfaXNfcGsgPyByaWluZm8tPnBrX3BlcmlvZF9hdHRudW1zIDogcmlpbmZvLT5ma19wZXJp b2RfYXR0bnVtczsKKwlPaWQJcmFuZ2V0eXBlID0gcmVsX2lzX3BrID8gcmlpbmZvLT5wa19wZXJp b2RfcmFuZ2V0eXBlIDogcmlpbmZvLT5ma19wZXJpb2RfcmFuZ2V0eXBlOworCURhdHVtIHN0YXJ0 dmFsdWU7CisJRGF0dW0gZW5kdmFsdWU7CisJRGF0dW0gcmVzdWx0OworCWJvb2wJc3RhcnRpc251 bGw7CisJYm9vbAllbmRpc251bGw7CisJTE9DQUxfRkNJTkZPKGZjaW5mbywgMik7CisJRm1ncklu Zm8JZmxpbmZvOworCUZ1bmNFeHByICAgKmY7CisKKwlJbml0RnVuY3Rpb25DYWxsSW5mb0RhdGEo KmZjaW5mbywgJmZsaW5mbywgMiwgSW52YWxpZE9pZCwgTlVMTCwgTlVMTCk7CisJZiA9IG1ha2VO b2RlKEZ1bmNFeHByKTsKKwlmLT5mdW5jcmVzdWx0dHlwZSA9IHJhbmdldHlwZTsKKwlmbGluZm8u Zm5fZXhwciA9IChOb2RlICopIGY7CisJZmxpbmZvLmZuX2V4dHJhID0gTlVMTDsKKworCS8qIGNv bXB1dGUgb2xkdmFsdWUgKi8KKwlzdGFydHZhbHVlID0gc2xvdF9nZXRhdHRyKHNsb3QsIHBlcmlv ZF9hdHRudW1zWzBdLCAmc3RhcnRpc251bGwpOworCWVuZHZhbHVlID0gc2xvdF9nZXRhdHRyKHNs b3QsIHBlcmlvZF9hdHRudW1zWzFdLCAmZW5kaXNudWxsKTsKKworCWZjaW5mby0+YXJnc1swXS52 YWx1ZSA9IHN0YXJ0dmFsdWU7CisJZmNpbmZvLT5hcmdzWzBdLmlzbnVsbCA9IHN0YXJ0aXNudWxs OworCWZjaW5mby0+YXJnc1sxXS52YWx1ZSA9IGVuZHZhbHVlOworCWZjaW5mby0+YXJnc1sxXS5p c251bGwgPSBlbmRpc251bGw7CisKKwlyZXN1bHQgPSByYW5nZV9jb25zdHJ1Y3RvcjIoZmNpbmZv KTsKKwlpZiAoZmNpbmZvLT5pc251bGwpCisJCWVsb2coRVJST1IsICJmdW5jdGlvbiAldSByZXR1 cm5lZCBOVUxMIiwgZmxpbmZvLmZuX29pZCk7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCiAvKgog ICogUklfRktleV9jaGVjayAtCiAgKgpAQCAtMzQ4LDYgKzQ1MCw3IEBAIFJJX0ZLZXlfY2hlY2so VHJpZ2dlckRhdGEgKnRyaWdkYXRhKQogCQlTdHJpbmdJbmZvRGF0YSBxdWVyeWJ1ZjsKIAkJY2hh cgkJcGtyZWxuYW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKIAkJY2hhcgkJYXR0bmFtZVtN QVhfUVVPVEVEX05BTUVfTEVOXTsKKwkJY2hhcgkgICAqYXR0c3RyOwogCQljaGFyCQlwYXJhbW5h bWVbMTZdOwogCQljb25zdCBjaGFyICpxdWVyeXNlcDsKIAkJT2lkCQkJcXVlcnlvaWRzW1JJX01B WF9OVU1LRVlTXTsKQEAgLTM1NSwzNSArNDU4LDg2IEBAIFJJX0ZLZXlfY2hlY2soVHJpZ2dlckRh dGEgKnRyaWdkYXRhKQogCiAJCS8qIC0tLS0tLS0tLS0KIAkJICogVGhlIHF1ZXJ5IHN0cmluZyBi dWlsdCBpcwotCQkgKglTRUxFQ1QgMSBGUk9NIFtPTkxZXSA8cGt0YWJsZT4geCBXSEVSRSBwa2F0 dDEgPSAkMSBbQU5EIC4uLl0KLQkJICoJCSAgIEZPUiBLRVkgU0hBUkUgT0YgeAorCQkgKglTRUxF Q1QgMQorCQkgKglGUk9NIFtPTkxZXSA8cGt0YWJsZT4geCBXSEVSRSBwa2F0dDEgPSAkMSBbQU5E IC4uLl0KKwkJICoJRk9SIEtFWSBTSEFSRSBPRiB4CiAJCSAqIFRoZSB0eXBlIGlkJ3MgZm9yIHRo ZSAkIHBhcmFtZXRlcnMgYXJlIHRob3NlIG9mIHRoZQogCQkgKiBjb3JyZXNwb25kaW5nIEZLIGF0 dHJpYnV0ZXMuCisJCSAqCisJCSAqIEJ1dCBmb3IgdGVtcG9yYWwgRktzIHdlIG5lZWQgdG8gbWFr ZSBzdXJlCisJCSAqIHRoZSBGSydzIHJhbmdlIGlzIGNvbXBsZXRlbHkgY292ZXJlZC4KKwkJICog U28gd2UgdXNlIHRoaXMgcXVlcnkgaW5zdGVhZDoKKwkJICogIFNFTEVDVCAxCisJCSAqCUZST00J KAorCQkgKgkJU0VMRUNUIHBrcGVyaW9kYXR0IEFTIHIKKwkJICoJCUZST00gICBbT05MWV0gcGt0 YWJsZSB4CisJCSAqCQlXSEVSRSAgcGthdHQxID0gJDEgW0FORCAuLi5dCisJCSAqCQlBTkQgICAg cGtwZXJpb2RhdHQgJiYgJG4KKwkJICoJCUZPUiBLRVkgU0hBUkUgT0YgeAorCQkgKgkpIHgxCisJ CSAqICBIQVZJTkcgJG4gPEAgcmFuZ2VfYWdnKHgxLnIpCisJCSAqIE5vdGUgaWYgRk9SIEtFWSBT SEFSRSBldmVyIGFsbG93cyBHUk9VUCBCWSBhbmQgSEFWSU5HCisJCSAqIHdlIGNhbiBtYWtlIHRo aXMgYSBiaXQgc2ltcGxlci4KIAkJICogLS0tLS0tLS0tLQogCQkgKi8KIAkJaW5pdFN0cmluZ0lu Zm8oJnF1ZXJ5YnVmKTsKIAkJcGtfb25seSA9IHBrX3JlbC0+cmRfcmVsLT5yZWxraW5kID09IFJF TEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPwogCQkJIiIgOiAiT05MWSAiOwogCQlxdW90ZVJlbGF0 aW9uTmFtZShwa3JlbG5hbWUsIHBrX3JlbCk7Ci0JCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVm LCAiU0VMRUNUIDEgRlJPTSAlcyVzIHgiLAotCQkJCQkJIHBrX29ubHksIHBrcmVsbmFtZSk7CisJ CWlmIChyaWluZm8tPnRlbXBvcmFsKQorCQl7CisJCQlpZiAocmlpbmZvLT5wa19wZXJpb2QgPT0g SW52YWxpZE9pZCkKKwkJCXsKKwkJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKKwkJCQkJCVJJQXR0 TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0pKTsKKwkJ CQlhdHRzdHIgPSBhdHRuYW1lOworCQkJfQorCQkJZWxzZQorCQkJCWF0dHN0ciA9IHF1ZXJ5X3Bl cmlvZF9yYW5nZShyaWluZm8sIHBrX3JlbCwgInguIiwgdHJ1ZSk7CisKKwkJCWFwcGVuZFN0cmlu Z0luZm8oJnF1ZXJ5YnVmLAorCQkJCQkiU0VMRUNUIDEgRlJPTSAoU0VMRUNUICVzIEFTIHIgRlJP TSAlcyVzIHgiLAorCQkJCQlhdHRzdHIsIHBrX29ubHksIHBrcmVsbmFtZSk7CisJCX0KKwkJZWxz ZSB7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gJXMlcyB4 IiwKKwkJCQkJCQkgcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJfQogCQlxdWVyeXNlcCA9ICJXSEVS RSI7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQogCQl7Ci0JCQlP aWQJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsK LQkJCU9pZAkJCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNb aV0pOworCQkJT2lkCXBrX3R5cGU7CisJCQlPaWQJZmtfdHlwZTsKKworCQkJaWYgKHJpaW5mby0+ cGtfYXR0bnVtc1tpXSA9PSBJbnZhbGlkT2lkKQorCQkJeworCQkJCXBrX3R5cGUgPSByaWluZm8t PnBrX3BlcmlvZF9yYW5nZXR5cGU7CisJCQkJYXR0c3RyID0gcXVlcnlfcGVyaW9kX3JhbmdlKHJp aW5mbywgcGtfcmVsLCAieC4iLCB0cnVlKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlwa190 eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCQlxdW90 ZU9uZU5hbWUoYXR0bmFtZSwKKwkJCQkJCQkgUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5wa19h dHRudW1zW2ldKSk7CisJCQkJYXR0c3RyID0gYXR0bmFtZTsKKwkJCX0KKworCQkJaWYgKHJpaW5m by0+ZmtfYXR0bnVtc1tpXSA9PSBJbnZhbGlkT2lkKQorCQkJCWZrX3R5cGUgPSByaWluZm8tPmZr X3BlcmlvZF9yYW5nZXR5cGU7CisJCQllbHNlCisJCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19y ZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CiAKLQkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAot CQkJCQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSkpOwogCQkJc3By aW50ZihwYXJhbW5hbWUsICIkJWQiLCBpICsgMSk7CiAJCQlyaV9HZW5lcmF0ZVF1YWwoJnF1ZXJ5 YnVmLCBxdWVyeXNlcCwKLQkJCQkJCQlhdHRuYW1lLCBwa190eXBlLAorCQkJCQkJCWF0dHN0ciwg cGtfdHlwZSwKIAkJCQkJCQlyaWluZm8tPnBmX2VxX29wcnNbaV0sCiAJCQkJCQkJcGFyYW1uYW1l LCBma190eXBlKTsKIAkJCXF1ZXJ5c2VwID0gIkFORCI7CiAJCQlxdWVyeW9pZHNbaV0gPSBma190 eXBlOwogCQl9CiAJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnF1ZXJ5YnVmLCAiIEZPUiBLRVkg U0hBUkUgT0YgeCIpOworCQlpZiAocmlpbmZvLT50ZW1wb3JhbCkKKwkJCWFwcGVuZFN0cmluZ0lu Zm8oJnF1ZXJ5YnVmLCAiKSB4MSBIQVZJTkcgJCVkIDxAIHBnX2NhdGFsb2cucmFuZ2VfYWdnKHgx LnIpIiwgcmlpbmZvLT5ua2V5cyk7CiAKIAkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUgcGxhbiAq LwogCQlxcGxhbiA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCByaWluZm8tPm5rZXlzLCBx dWVyeW9pZHMsCkBAIC00MDAsNiArNTU0LDcgQEAgUklfRktleV9jaGVjayhUcmlnZ2VyRGF0YSAq dHJpZ2RhdGEpCiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQlm a19yZWwsIHBrX3JlbCwKIAkJCQkJTlVMTCwgbmV3c2xvdCwKKwkJCQkJZmFsc2UsIDAsCiAJCQkJ CXBrX3JlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUsCiAJ CQkJCVNQSV9PS19TRUxFQ1QpOwogCkBAIC01MDIsMTMgKzY1NywyNCBAQCByaV9DaGVja19Qa19N YXRjaChSZWxhdGlvbiBwa19yZWwsIFJlbGF0aW9uIGZrX3JlbCwKIAkJcXVlcnlzZXAgPSAiV0hF UkUiOwogCQlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKIAkJewotCQkJ T2lkCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7 CisJCQlPaWQJCXBrX3R5cGU7CisJCQljaGFyICAgKmF0dHN0cjsKKwkJCWlmIChyaWluZm8tPnBr X2F0dG51bXNbaV0gPT0gSW52YWxpZE9pZCkKKwkJCXsKKwkJCQlwa190eXBlID0gcmlpbmZvLT5w a19wZXJpb2RfcmFuZ2V0eXBlOworCQkJCWF0dHN0ciA9IHF1ZXJ5X3BlcmlvZF9yYW5nZShyaWlu Zm8sIHBrX3JlbCwgInguIiwgdHJ1ZSk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJcGtfdHlw ZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQkJcXVvdGVP bmVOYW1lKGF0dG5hbWUsCisJCQkJCQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0 bnVtc1tpXSkpOworCQkJCWF0dHN0ciA9IGF0dG5hbWU7CisJCQl9CiAKLQkJCXF1b3RlT25lTmFt ZShhdHRuYW1lLAotCQkJCQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tp XSkpOwogCQkJc3ByaW50ZihwYXJhbW5hbWUsICIkJWQiLCBpICsgMSk7CiAJCQlyaV9HZW5lcmF0 ZVF1YWwoJnF1ZXJ5YnVmLCBxdWVyeXNlcCwKLQkJCQkJCQlhdHRuYW1lLCBwa190eXBlLAorCQkJ CQkJCWF0dHN0ciwgcGtfdHlwZSwKIAkJCQkJCQlyaWluZm8tPnBwX2VxX29wcnNbaV0sCiAJCQkJ CQkJcGFyYW1uYW1lLCBwa190eXBlKTsKIAkJCXF1ZXJ5c2VwID0gIkFORCI7CkBAIC01MjcsNiAr NjkzLDcgQEAgcmlfQ2hlY2tfUGtfTWF0Y2goUmVsYXRpb24gcGtfcmVsLCBSZWxhdGlvbiBma19y ZWwsCiAJcmVzdWx0ID0gcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJ CQkJCSBma19yZWwsIHBrX3JlbCwKIAkJCQkJCQkgb2xkc2xvdCwgTlVMTCwKKwkJCQkJCQkgZmFs c2UsIDAsCiAJCQkJCQkJIHRydWUsCS8qIHRyZWF0IGxpa2UgdXBkYXRlICovCiAJCQkJCQkJIFNQ SV9PS19TRUxFQ1QpOwogCkBAIC02NjcsNiArODM0LDcgQEAgcmlfcmVzdHJpY3QoVHJpZ2dlckRh dGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbikKIAkJU3RyaW5nSW5mb0RhdGEgcXVlcnli dWY7CiAJCWNoYXIJCWZrcmVsbmFtZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07CiAJCWNoYXIJ CWF0dG5hbWVbTUFYX1FVT1RFRF9OQU1FX0xFTl07CisJCWNoYXIJICAgKmF0dHN0cjsKIAkJY2hh cgkJcGFyYW1uYW1lWzE2XTsKIAkJY29uc3QgY2hhciAqcXVlcnlzZXA7CiAJCU9pZAkJCXF1ZXJ5 b2lkc1tSSV9NQVhfTlVNS0VZU107CkBAIC02ODksMTggKzg1Nyw0NiBAQCByaV9yZXN0cmljdChU cmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfbm9fYWN0aW9uKQogCQlxdWVyeXNlcCA9ICJX SEVSRSI7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQogCQl7Ci0J CQlPaWQJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ld KTsKLQkJCU9pZAkJCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51 bXNbaV0pOwotCQkJT2lkCQkJcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZv LT5wa19hdHRudW1zW2ldKTsKLQkJCU9pZAkJCWZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19y ZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCQlPaWQJCXBrX3R5cGU7CisJCQlPaWQJCWZr X3R5cGU7CisJCQlPaWQJCXBrX2NvbGw7CisJCQlPaWQJCWZrX2NvbGw7CiAKLQkJCXF1b3RlT25l TmFtZShhdHRuYW1lLAotCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVt c1tpXSkpOworCQkJaWYgKHJpaW5mby0+cGtfYXR0bnVtc1tpXSAhPSBJbnZhbGlkT2lkKQorCQkJ eworCQkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0p OworCQkJCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVt c1tpXSk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJcGtfdHlwZSA9IHJpaW5mby0+cGtfcGVy aW9kX3JhbmdldHlwZTsKKwkJCQlwa19jb2xsID0gcmlpbmZvLT5wa19wZXJpb2RfY29sbGF0aW9u OworCQkJfQorCisJCQlpZiAocmlpbmZvLT5ma19hdHRudW1zW2ldICE9IEludmFsaWRPaWQpCisJ CQl7CisJCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tp XSk7CisJCQkJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRu dW1zW2ldKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlma190eXBlID0gcmlpbmZvLT5ma19w ZXJpb2RfcmFuZ2V0eXBlOworCQkJCWZrX2NvbGwgPSByaWluZm8tPmZrX3BlcmlvZF9jb2xsYXRp b247CisJCQl9CisKKwkJCWlmIChyaWluZm8tPmZrX2F0dG51bXNbaV0gPT0gSW52YWxpZE9pZCkK KwkJCQlhdHRzdHIgPSBxdWVyeV9wZXJpb2RfcmFuZ2UocmlpbmZvLCBma19yZWwsICJ4LiIsIGZh bHNlKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKKwkJCQkJCQkg UklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7CisJCQkJYXR0c3RyID0g YXR0bmFtZTsKKwkJCX0KIAkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaSArIDEpOwogCQkJ cmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1ZiwgcXVlcnlzZXAsCiAJCQkJCQkJcGFyYW1uYW1lLCBw a190eXBlLAogCQkJCQkJCXJpaW5mby0+cGZfZXFfb3Byc1tpXSwKLQkJCQkJCQlhdHRuYW1lLCBm a190eXBlKTsKKwkJCQkJCQlhdHRzdHIsIGZrX3R5cGUpOwogCQkJaWYgKHBrX2NvbGwgIT0gZmtf Y29sbCAmJiAhZ2V0X2NvbGxhdGlvbl9pc2RldGVybWluaXN0aWMocGtfY29sbCkpCiAJCQkJcmlf R2VuZXJhdGVRdWFsQ29sbGF0aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CiAJCQlxdWVyeXNlcCA9 ICJBTkQiOwpAQCAtNzE5LDYgKzkxNSw3IEBAIHJpX3Jlc3RyaWN0KFRyaWdnZXJEYXRhICp0cmln ZGF0YSwgYm9vbCBpc19ub19hY3Rpb24pCiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXks IHFwbGFuLAogCQkJCQlma19yZWwsIHBrX3JlbCwKIAkJCQkJb2xkc2xvdCwgTlVMTCwKKwkJCQkJ ZmFsc2UsIDAsCiAJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJCQlT UElfT0tfU0VMRUNUKTsKIApAQCAtODI1LDYgKzEwMjIsNyBAQCBSSV9GS2V5X2Nhc2NhZGVfZGVs KFBHX0ZVTkNUSU9OX0FSR1MpCiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFu LAogCQkJCQlma19yZWwsIHBrX3JlbCwKIAkJCQkJb2xkc2xvdCwgTlVMTCwKKwkJCQkJZmFsc2Us IDAsCiAJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJCQlTUElfT0tf REVMRVRFKTsKIApAQCAtOTQ2LDYgKzExNDQsNyBAQCBSSV9GS2V5X2Nhc2NhZGVfdXBkKFBHX0ZV TkNUSU9OX0FSR1MpCiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJ CQlma19yZWwsIHBrX3JlbCwKIAkJCQkJb2xkc2xvdCwgbmV3c2xvdCwKKwkJCQkJZmFsc2UsIDAs CiAJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJCQlTUElfT0tfVVBE QVRFKTsKIApAQCAtMTEwNSw3ICsxMzA0LDg1NiBAQCByaV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdk YXRhLCBib29sIGlzX3NldF9udWxsKQogCQkJcmlfR2VuZXJhdGVRdWFsKCZxdWFsYnVmLCBxdWFs c2VwLAogCQkJCQkJCXBhcmFtbmFtZSwgcGtfdHlwZSwKIAkJCQkJCQlyaWluZm8tPnBmX2VxX29w cnNbaV0sCi0JCQkJCQkJYXR0bmFtZSwgZmtfdHlwZSk7CisJCQkJCQkJYXR0bmFtZSwgZmtfdHlw ZSk7CisJCQlpZiAocGtfY29sbCAhPSBma19jb2xsICYmICFnZXRfY29sbGF0aW9uX2lzZGV0ZXJt aW5pc3RpYyhwa19jb2xsKSkKKwkJCQlyaV9HZW5lcmF0ZVF1YWxDb2xsYXRpb24oJnF1ZXJ5YnVm LCBwa19jb2xsKTsKKwkJCXF1ZXJ5c2VwID0gIiwiOworCQkJcXVhbHNlcCA9ICJBTkQiOworCQkJ cXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKKwkJfQorCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKCZx dWVyeWJ1ZiwgcXVhbGJ1Zi5kYXRhLCBxdWFsYnVmLmxlbik7CisKKwkJLyogUHJlcGFyZSBhbmQg c2F2ZSB0aGUgcGxhbiAqLworCQlxcGxhbiA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCBy aWluZm8tPm5rZXlzLCBxdWVyeW9pZHMsCisJCQkJCQkJICZxa2V5LCBma19yZWwsIHBrX3JlbCk7 CisJfQorCisJLyoKKwkgKiBXZSBoYXZlIGEgcGxhbiBub3cuIFJ1biBpdCB0byB1cGRhdGUgdGhl IGV4aXN0aW5nIHJlZmVyZW5jZXMuCisJICovCisJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFr ZXksIHFwbGFuLAorCQkJCQlma19yZWwsIHBrX3JlbCwKKwkJCQkJb2xkc2xvdCwgTlVMTCwKKwkJ CQkJZmFsc2UsIDAsCisJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLworCQkJ CQlTUElfT0tfVVBEQVRFKTsKKworCWlmIChTUElfZmluaXNoKCkgIT0gU1BJX09LX0ZJTklTSCkK KwkJZWxvZyhFUlJPUiwgIlNQSV9maW5pc2ggZmFpbGVkIik7CisKKwl0YWJsZV9jbG9zZShma19y ZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJaWYgKGlzX3NldF9udWxsKQorCQlyZXR1cm4gUG9p bnRlckdldERhdHVtKE5VTEwpOworCWVsc2UKKwl7CisJCS8qCisJCSAqIElmIHdlIGp1c3QgZGVs ZXRlZCBvciB1cGRhdGVkIHRoZSBQSyByb3cgd2hvc2Uga2V5IHdhcyBlcXVhbCB0byB0aGUKKwkJ ICogRksgY29sdW1ucycgZGVmYXVsdCB2YWx1ZXMsIGFuZCBhIHJlZmVyZW5jaW5nIHJvdyBleGlz dHMgaW4gdGhlIEZLCisJCSAqIHRhYmxlLCB3ZSB3b3VsZCBoYXZlIHVwZGF0ZWQgdGhhdCByb3cg dG8gdGhlIHNhbWUgdmFsdWVzIGl0IGFscmVhZHkKKwkJICogaGFkIC0tLSBhbmQgUklfRktleV9m a191cGRfY2hlY2tfcmVxdWlyZWQgd291bGQgaGVuY2UgYmVsaWV2ZSBubworCQkgKiBjaGVjayBp cyBuZWNlc3NhcnkuICBTbyB3ZSBuZWVkIHRvIGRvIGFub3RoZXIgbG9va3VwIG5vdyBhbmQgaW4K KwkJICogY2FzZSBhIHJlZmVyZW5jZSBzdGlsbCBleGlzdHMsIGFib3J0IHRoZSBvcGVyYXRpb24u ICBUaGF0IGlzCisJCSAqIGFscmVhZHkgaW1wbGVtZW50ZWQgaW4gdGhlIE5PIEFDVElPTiB0cmln Z2VyLCBzbyBqdXN0IHJ1biBpdC4gKFRoaXMKKwkJICogcmVjaGVjayBpcyBvbmx5IG5lZWRlZCBp biB0aGUgU0VUIERFRkFVTFQgY2FzZSwgc2luY2UgQ0FTQ0FERSB3b3VsZAorCQkgKiByZW1vdmUg c3VjaCByb3dzIGluIGNhc2Ugb2YgYSBERUxFVEUgb3BlcmF0aW9uIG9yIHdvdWxkIGNoYW5nZSB0 aGUKKwkJICogRksga2V5IHZhbHVlcyBpbiBjYXNlIG9mIGFuIFVQREFURSwgd2hpbGUgU0VUIE5V TEwgaXMgY2VydGFpbiB0bworCQkgKiByZXN1bHQgaW4gcm93cyB0aGF0IHNhdGlzZnkgdGhlIEZL IGNvbnN0cmFpbnQuKQorCQkgKi8KKwkJcmV0dXJuIHJpX3Jlc3RyaWN0KHRyaWdkYXRhLCB0cnVl KTsKKwl9Cit9CisKKworLyoKKyAqIFJJX0ZLZXlfcGtfdXBkX2NoZWNrX3JlcXVpcmVkIC0KKyAq CisgKiBDaGVjayBpZiB3ZSByZWFsbHkgbmVlZCB0byBmaXJlIHRoZSBSSSB0cmlnZ2VyIGZvciBh biB1cGRhdGUgb3IgZGVsZXRlIHRvIGEgUEsKKyAqIHJlbGF0aW9uLiAgVGhpcyBpcyBjYWxsZWQg YnkgdGhlIEFGVEVSIHRyaWdnZXIgcXVldWUgbWFuYWdlciB0byBzZWUgaWYKKyAqIGl0IGNhbiBz a2lwIHF1ZXVpbmcgYW4gaW5zdGFuY2Ugb2YgYW4gUkkgdHJpZ2dlci4gIFJldHVybnMgdHJ1ZSBp ZiB0aGUKKyAqIHRyaWdnZXIgbXVzdCBiZSBmaXJlZCwgZmFsc2UgaWYgd2UgY2FuIHByb3ZlIHRo ZSBjb25zdHJhaW50IHdpbGwgc3RpbGwKKyAqIGJlIHNhdGlzZmllZC4KKyAqCisgKiBuZXdzbG90 IHdpbGwgYmUgTlVMTCBpZiB0aGlzIGlzIGNhbGxlZCBmb3IgYSBkZWxldGUuCisgKi8KK2Jvb2wK K1JJX0ZLZXlfcGtfdXBkX2NoZWNrX3JlcXVpcmVkKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9u IHBrX3JlbCwKKwkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xv dCAqbmV3c2xvdCkKK3sKKwljb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvOworCisJcmlp bmZvID0gcmlfRmV0Y2hDb25zdHJhaW50SW5mbyh0cmlnZ2VyLCBwa19yZWwsIHRydWUpOworCisJ LyoKKwkgKiBJZiBhbnkgb2xkIGtleSB2YWx1ZSBpcyBOVUxMLCB0aGUgcm93IGNvdWxkIG5vdCBo YXZlIGJlZW4gcmVmZXJlbmNlZCBieQorCSAqIGFuIEZLIHJvdywgc28gbm8gY2hlY2sgaXMgbmVl ZGVkLgorCSAqLworCWlmIChyaV9OdWxsQ2hlY2soUmVsYXRpb25HZXREZXNjcihwa19yZWwpLCBv bGRzbG90LCByaWluZm8sIHRydWUpICE9IFJJX0tFWVNfTk9ORV9OVUxMKQorCQlyZXR1cm4gZmFs c2U7CisKKwkvKiBJZiBhbGwgb2xkIGFuZCBuZXcga2V5IHZhbHVlcyBhcmUgZXF1YWwsIG5vIGNo ZWNrIGlzIG5lZWRlZCAqLworCWlmIChuZXdzbG90ICYmIHJpX0tleXNTdGFibGUocGtfcmVsLCBv bGRzbG90LCBuZXdzbG90LCByaWluZm8sIHRydWUpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBF bHNlIHdlIG5lZWQgdG8gZmlyZSB0aGUgdHJpZ2dlci4gKi8KKwlyZXR1cm4gdHJ1ZTsKK30KKwor LyoKKyAqIFJJX0ZLZXlfZmtfdXBkX2NoZWNrX3JlcXVpcmVkIC0KKyAqCisgKiBDaGVjayBpZiB3 ZSByZWFsbHkgbmVlZCB0byBmaXJlIHRoZSBSSSB0cmlnZ2VyIGZvciBhbiB1cGRhdGUgdG8gYW4g RksKKyAqIHJlbGF0aW9uLiAgVGhpcyBpcyBjYWxsZWQgYnkgdGhlIEFGVEVSIHRyaWdnZXIgcXVl dWUgbWFuYWdlciB0byBzZWUgaWYKKyAqIGl0IGNhbiBza2lwIHF1ZXVpbmcgYW4gaW5zdGFuY2Ug b2YgYW4gUkkgdHJpZ2dlci4gIFJldHVybnMgdHJ1ZSBpZiB0aGUKKyAqIHRyaWdnZXIgbXVzdCBi ZSBmaXJlZCwgZmFsc2UgaWYgd2UgY2FuIHByb3ZlIHRoZSBjb25zdHJhaW50IHdpbGwgc3RpbGwK KyAqIGJlIHNhdGlzZmllZC4KKyAqLworYm9vbAorUklfRktleV9ma191cGRfY2hlY2tfcmVxdWly ZWQoVHJpZ2dlciAqdHJpZ2dlciwgUmVsYXRpb24gZmtfcmVsLAorCQkJCQkJCSAgVHVwbGVUYWJs ZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90KQoreworCWNvbnN0IFJJX0Nv bnN0cmFpbnRJbmZvICpyaWluZm87CisJaW50CQkJcmlfbnVsbGNoZWNrOworCURhdHVtCQl4bWlu RGF0dW07CisJVHJhbnNhY3Rpb25JZCB4bWluOworCWJvb2wJCWlzbnVsbDsKKworCXJpaW5mbyA9 IHJpX0ZldGNoQ29uc3RyYWludEluZm8odHJpZ2dlciwgZmtfcmVsLCBmYWxzZSk7CisKKwlyaV9u dWxsY2hlY2sgPSByaV9OdWxsQ2hlY2soUmVsYXRpb25HZXREZXNjcihma19yZWwpLCBuZXdzbG90 LCByaWluZm8sIGZhbHNlKTsKKworCS8qCisJICogSWYgYWxsIG5ldyBrZXkgdmFsdWVzIGFyZSBO VUxMLCB0aGUgcm93IHNhdGlzZmllcyB0aGUgY29uc3RyYWludCwgc28gbm8KKwkgKiBjaGVjayBp cyBuZWVkZWQuCisJICovCisJaWYgKHJpX251bGxjaGVjayA9PSBSSV9LRVlTX0FMTF9OVUxMKQor CQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIElmIHNvbWUgbmV3IGtleSB2YWx1ZXMgYXJlIE5V TEwsIHRoZSBiZWhhdmlvciBkZXBlbmRzIG9uIHRoZSBtYXRjaAorCSAqIHR5cGUuCisJICovCisJ ZWxzZSBpZiAocmlfbnVsbGNoZWNrID09IFJJX0tFWVNfU09NRV9OVUxMKQorCXsKKwkJc3dpdGNo IChyaWluZm8tPmNvbmZtYXRjaHR5cGUpCisJCXsKKwkJCWNhc2UgRktDT05TVFJfTUFUQ0hfU0lN UExFOgorCisJCQkJLyoKKwkJCQkgKiBJZiBhbnkgbmV3IGtleSB2YWx1ZSBpcyBOVUxMLCB0aGUg cm93IG11c3Qgc2F0aXNmeSB0aGUKKwkJCQkgKiBjb25zdHJhaW50LCBzbyBubyBjaGVjayBpcyBu ZWVkZWQuCisJCQkJICovCisJCQkJcmV0dXJuIGZhbHNlOworCisJCQljYXNlIEZLQ09OU1RSX01B VENIX1BBUlRJQUw6CisKKwkJCQkvKgorCQkJCSAqIERvbid0IGtub3csIG11c3QgcnVuIGZ1bGwg Y2hlY2suCisJCQkJICovCisJCQkJYnJlYWs7CisKKwkJCWNhc2UgRktDT05TVFJfTUFUQ0hfRlVM TDoKKworCQkJCS8qCisJCQkJICogSWYgc29tZSBuZXcga2V5IHZhbHVlcyBhcmUgTlVMTCwgdGhl IHJvdyBmYWlscyB0aGUKKwkJCQkgKiBjb25zdHJhaW50LiAgV2UgbXVzdCBub3QgdGhyb3cgZXJy b3IgaGVyZSwgYmVjYXVzZSB0aGUgcm93CisJCQkJICogbWlnaHQgZ2V0IGludmFsaWRhdGVkIGJl Zm9yZSB0aGUgY29uc3RyYWludCBpcyB0byBiZQorCQkJCSAqIGNoZWNrZWQsIGJ1dCB3ZSBzaG91 bGQgcXVldWUgdGhlIGV2ZW50IHRvIGFwcGx5IHRoZSBjaGVjaworCQkJCSAqIGxhdGVyLgorCQkJ CSAqLworCQkJCXJldHVybiB0cnVlOworCQl9CisJfQorCisJLyoKKwkgKiBDb250aW51ZXMgaGVy ZSBmb3Igbm8gbmV3IGtleSB2YWx1ZXMgYXJlIE5VTEwsIG9yIHdlIGNvdWxkbid0IGRlY2lkZQor CSAqIHlldC4KKwkgKi8KKworCS8qCisJICogSWYgdGhlIG9yaWdpbmFsIHJvdyB3YXMgaW5zZXJ0 ZWQgYnkgb3VyIG93biB0cmFuc2FjdGlvbiwgd2UgbXVzdCBmaXJlCisJICogdGhlIHRyaWdnZXIg d2hldGhlciBvciBub3QgdGhlIGtleXMgYXJlIGVxdWFsLiAgVGhpcyBpcyBiZWNhdXNlIG91cgor CSAqIFVQREFURSB3aWxsIGludmFsaWRhdGUgdGhlIElOU0VSVCBzbyB0aGF0IHRoZSBJTlNFUlQg UkkgdHJpZ2dlciB3aWxsCisJICogbm90IGRvIGFueXRoaW5nOyBzbyB3ZSBoYWQgYmV0dGVyIGRv IHRoZSBVUERBVEUgY2hlY2suICAoV2UgY291bGQgc2tpcAorCSAqIHRoaXMgaWYgd2Uga25ldyB0 aGUgSU5TRVJUIHRyaWdnZXIgYWxyZWFkeSBmaXJlZCwgYnV0IHRoZXJlIGlzIG5vIGVhc3kKKwkg KiB3YXkgdG8ga25vdyB0aGF0LikKKwkgKi8KKwl4bWluRGF0dW0gPSBzbG90X2dldHN5c2F0dHIo b2xkc2xvdCwgTWluVHJhbnNhY3Rpb25JZEF0dHJpYnV0ZU51bWJlciwgJmlzbnVsbCk7CisJQXNz ZXJ0KCFpc251bGwpOworCXhtaW4gPSBEYXR1bUdldFRyYW5zYWN0aW9uSWQoeG1pbkRhdHVtKTsK KwlpZiAoVHJhbnNhY3Rpb25JZElzQ3VycmVudFRyYW5zYWN0aW9uSWQoeG1pbikpCisJCXJldHVy biB0cnVlOworCisJLyogSWYgYWxsIG9sZCBhbmQgbmV3IGtleSB2YWx1ZXMgYXJlIGVxdWFsLCBu byBjaGVjayBpcyBuZWVkZWQgKi8KKwlpZiAocmlfS2V5c1N0YWJsZShma19yZWwsIG9sZHNsb3Qs IG5ld3Nsb3QsIHJpaW5mbywgZmFsc2UpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBFbHNlIHdl IG5lZWQgdG8gZmlyZSB0aGUgdHJpZ2dlci4gKi8KKwlyZXR1cm4gdHJ1ZTsKK30KKworLyogLS0t LS0tLS0tLQorICogVFJJX0ZLZXlfY2hlY2tfaW5zIC0KKyAqCisgKglDaGVjayB0ZW1wb3JhbCBm b3JlaWduIGtleSBleGlzdGVuY2UgYXQgaW5zZXJ0IGV2ZW50IG9uIEZLIHRhYmxlLgorICogLS0t LS0tLS0tLQorICovCitEYXR1bQorVFJJX0ZLZXlfY2hlY2tfaW5zKFBHX0ZVTkNUSU9OX0FSR1Mp Cit7CisJLyoKKwkgKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24g dGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LgorCSAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8s ICJSSV9GS2V5X2NoZWNrX2lucyIsIFJJX1RSSUdUWVBFX0lOU0VSVCk7CisKKwkvKgorCSAqIFNo YXJlIGNvZGUgd2l0aCBVUERBVEUgY2FzZS4KKwkgKi8KKwlyZXR1cm4gUklfRktleV9jaGVjaygo VHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0KTsKK30KKworCisvKiAtLS0tLS0tLS0tCisg KiBUUklfRktleV9jaGVja191cGQgLQorICoKKyAqCUNoZWNrIHRlbXBvcmFsIGZvcmVpZ24ga2V5 IGV4aXN0ZW5jZSBhdCB1cGRhdGUgZXZlbnQgb24gRksgdGFibGUuCisgKiAtLS0tLS0tLS0tCisg Ki8KK0RhdHVtCitUUklfRktleV9jaGVja191cGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKgor CSAqIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQg dGltZSBhbmQgZXZlbnQuCisJICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlJJX0ZLZXlf Y2hlY2tfdXBkIiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCS8qCisJICogU2hhcmUgY29kZSB3 aXRoIElOU0VSVCBjYXNlLgorCSAqLworCXJldHVybiBSSV9GS2V5X2NoZWNrKChUcmlnZ2VyRGF0 YSAqKSBmY2luZm8tPmNvbnRleHQpOworfQorCisKKy8qIC0tLS0tLS0tLS0KKyAqIFRSSV9GS2V5 X25vYWN0aW9uX2RlbCAtCisgKgorICoJR2l2ZSBhbiBlcnJvciBhbmQgcm9sbCBiYWNrIHRoZSBj dXJyZW50IHRyYW5zYWN0aW9uIGlmIHRoZQorICoJZGVsZXRlIGhhcyByZXN1bHRlZCBpbiBhIHZp b2xhdGlvbiBvZiB0aGUgZ2l2ZW4gdGVtcG9yYWwKKyAqCXJlZmVyZW50aWFsIGludGVncml0eSBj b25zdHJhaW50LgorICogLS0tLS0tLS0tLQorICovCitEYXR1bQorVFJJX0ZLZXlfbm9hY3Rpb25f ZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyoKKwkgKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2 YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LgorCSAqLworCXJp X0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9ub2FjdGlvbl9kZWwiLCBSSV9UUklHVFlQ RV9ERUxFVEUpOworCisJLyoKKwkgKiBTaGFyZSBjb2RlIHdpdGggUkVTVFJJQ1QvVVBEQVRFIGNh c2VzLgorCSAqLworCXJldHVybiByaV9yZXN0cmljdCgoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5j b250ZXh0LCB0cnVlKTsKK30KKworLyoKKyAqIFRSSV9GS2V5X3Jlc3RyaWN0X2RlbCAtCisgKgor ICogUmVzdHJpY3QgZGVsZXRlIGZyb20gUEsgdGFibGUgdG8gcm93cyB1bnJlZmVyZW5jZWQgYnkg Zm9yZWlnbiBrZXkuCisgKgorICogVGhlIFNRTCBzdGFuZGFyZCBpbnRlbmRzIHRoYXQgdGhpcyBy ZWZlcmVudGlhbCBhY3Rpb24gb2NjdXIgZXhhY3RseSB3aGVuCisgKiB0aGUgZGVsZXRlIGlzIHBl cmZvcm1lZCwgcmF0aGVyIHRoYW4gYWZ0ZXIuICBUaGlzIGFwcGVhcnMgdG8gYmUKKyAqIHRoZSBv bmx5IGRpZmZlcmVuY2UgYmV0d2VlbiAiTk8gQUNUSU9OIiBhbmQgIlJFU1RSSUNUIi4gIEluIFBv c3RncmVzCisgKiB3ZSBzdGlsbCBpbXBsZW1lbnQgdGhpcyBhcyBhbiBBRlRFUiB0cmlnZ2VyLCBi dXQgaXQncyBub24tZGVmZXJyYWJsZS4KKyAqLworRGF0dW0KK1RSSV9GS2V5X3Jlc3RyaWN0X2Rl bChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRy aWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmln Z2VyKGZjaW5mbywgIlRSSV9GS2V5X3Jlc3RyaWN0X2RlbCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7 CisKKwkvKiBTaGFyZSBjb2RlIHdpdGggTk8gQUNUSU9OL1VQREFURSBjYXNlcy4gKi8KKwlyZXR1 cm4gcmlfcmVzdHJpY3QoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgZmFsc2UpOwor fQorCisvKgorICogVFJJX0ZLZXlfY2FzY2FkZV9kZWwgLQorICoKKyAqIENhc2NhZGVkIGRlbGV0 ZSBmb3JlaWduIGtleSByZWZlcmVuY2VzIGF0IGRlbGV0ZSBldmVudCBvbiB0ZW1wb3JhbCBQSyB0 YWJsZS4KKyAqLworRGF0dW0KK1RSSV9GS2V5X2Nhc2NhZGVfZGVsKFBHX0ZVTkNUSU9OX0FSR1Mp Cit7CisJVHJpZ2dlckRhdGEgKnRyaWdkYXRhID0gKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29u dGV4dDsKKwljb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvOworCVJlbGF0aW9uCWZrX3Jl bDsKKwlSZWxhdGlvbglwa19yZWw7CisJVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3Q7CisJUklfUXVl cnlLZXkgcWtleTsKKwlTUElQbGFuUHRyCXFwbGFuOworCURhdHVtIHRhcmdldFJhbmdlOworCisJ LyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0 aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfY2Fz Y2FkZV9kZWwiLCBSSV9UUklHVFlQRV9ERUxFVEUpOworCisJcmlpbmZvID0gcmlfRmV0Y2hDb25z dHJhaW50SW5mbyh0cmlnZGF0YS0+dGdfdHJpZ2dlciwKKwkJCQkJCQkJCXRyaWdkYXRhLT50Z19y ZWxhdGlvbiwgdHJ1ZSk7CisKKwkvKgorCSAqIEdldCB0aGUgcmVsYXRpb24gZGVzY3JpcHRvcnMg b2YgdGhlIEZLIGFuZCBQSyB0YWJsZXMgYW5kIHRoZSBvbGQgdHVwbGUuCisJICoKKwkgKiBma19y ZWwgaXMgb3BlbmVkIGluIFJvd0V4Y2x1c2l2ZUxvY2sgbW9kZSBzaW5jZSB0aGF0J3Mgd2hhdCBv dXIKKwkgKiBldmVudHVhbCBERUxFVEUgd2lsbCBnZXQgb24gaXQuCisJICovCisJZmtfcmVsID0g dGFibGVfb3BlbihyaWluZm8tPmZrX3JlbGlkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwlwa19yZWwg PSB0cmlnZGF0YS0+dGdfcmVsYXRpb247CisJb2xkc2xvdCA9IHRyaWdkYXRhLT50Z190cmlnc2xv dDsKKworCWlmICh0cmlnZGF0YS0+dGdfdGVtcG9yYWwpCisJCXRhcmdldFJhbmdlID0gdHJpZ2Rh dGEtPnRnX3RlbXBvcmFsLT5mcF90YXJnZXRSYW5nZTsKKwllbHNlCisJCXRhcmdldFJhbmdlID0g dHVwbGVSYW5nZShvbGRzbG90LCByaWluZm8pOworCisJaWYgKFNQSV9jb25uZWN0KCkgIT0gU1BJ X09LX0NPTk5FQ1QpCisJCWVsb2coRVJST1IsICJTUElfY29ubmVjdCBmYWlsZWQiKTsKKworCS8q IEZldGNoIG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUgY2FzY2FkZWQgZGVsZXRlICov CisJcmlfQnVpbGRRdWVyeUtleSgmcWtleSwgcmlpbmZvLCBUUklfUExBTl9DQVNDQURFX0RFTF9E T0RFTEVURSk7CisKKwlpZiAoKHFwbGFuID0gcmlfRmV0Y2hQcmVwYXJlZFBsYW4oJnFrZXkpKSA9 PSBOVUxMKQorCXsKKwkJYm9vbAkJcGtIYXNSYW5nZTsKKwkJYm9vbAkJZmtIYXNSYW5nZTsKKwkJ U3RyaW5nSW5mb0RhdGEgcXVlcnlidWY7CisJCWNoYXIJCWZrcmVsbmFtZVtNQVhfUVVPVEVEX1JF TF9OQU1FX0xFTl07CisJCWNoYXIJCWF0dG5hbWVbTUFYX1FVT1RFRF9OQU1FX0xFTl07CisJCWNo YXIJICAgKmF0dHN0cjsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29uc3QgY2hhciAqcXVl cnlzZXA7CisJCU9pZAkJCXF1ZXJ5b2lkc1tSSV9NQVhfTlVNS0VZU107CisJCWNvbnN0IGNoYXIg KmZrX29ubHk7CisKKwkJcGtIYXNSYW5nZSA9IHJpaW5mby0+cGtfcGVyaW9kID09IEludmFsaWRP aWQ7CisJCWZrSGFzUmFuZ2UgPSByaWluZm8tPmZrX3BlcmlvZCA9PSBJbnZhbGlkT2lkOworCisJ CS8qIC0tLS0tLS0tLS0KKwkJICogVGhlIHF1ZXJ5IHN0cmluZyBidWlsdCBpcworCQkgKglERUxF VEUgRlJPTSBbT05MWV0gPGZrdGFibGU+CisJCSAqCUZPUiBQT1JUSU9OIE9GICRma2F0dCBGUk9N IGxvd2VyKCRuKzEpIFRPIHVwcGVyKCRuKzEpCisJCSAqCVdIRVJFICQxID0gZmthdHQxIFtBTkQg Li4uXQorCQkgKiBUaGUgdHlwZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBv ZiB0aGUKKwkJICogY29ycmVzcG9uZGluZyBQSyBhdHRyaWJ1dGVzLgorCQkgKiAtLS0tLS0tLS0t CisJCSAqLworCQlpbml0U3RyaW5nSW5mbygmcXVlcnlidWYpOworCQlma19vbmx5ID0gZmtfcmVs LT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CisJCQkiIiA6 ICJPTkxZICI7CisJCXF1b3RlUmVsYXRpb25OYW1lKGZrcmVsbmFtZSwgZmtfcmVsKTsKKwkJaWYg KGZrSGFzUmFuZ2UpCisJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwgUklBdHROYW1lKGZrX3JlbCwg cmlpbmZvLT5ma19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSkpOworCQllbHNlCisJCQlxdW90 ZU9uZU5hbWUoYXR0bmFtZSwgZ2V0X3BlcmlvZG5hbWUocmlpbmZvLT5ma19wZXJpb2QsIGZhbHNl KSk7CisKKwkJLy8gVE9ETzogQmV0dGVyIHRvIGZpbmQgdGhlIGdyZWF0ZXIgb2YgbG93ZXIoJG4r MSkgYW5kIGxvd2VyKCQxKQorCQkvLyBhbmQgdGhlIGxlc3NlciBmb3IgdXBwZXIoJG4rMSkgYW5k IHVwcGVyKCQxKSwKKwkJLy8gc28gd2Ugb25seSBkZWxldGUgd2hhdCBpcyBiZWluZyBkZWxldGVk IGZyb20gdGhlIHBrIHRhYmxlLgorCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIkRFTEVU RSBGUk9NICVzJXMgRk9SIFBPUlRJT04gT0YgJXMgRlJPTSBsb3dlcigkJWQpIFRPIHVwcGVyKCQl ZCkiLAorCQkJCQkJIGZrX29ubHksIGZrcmVsbmFtZSwgYXR0bmFtZSwgcmlpbmZvLT5ua2V5cyAr IDEsIHJpaW5mby0+bmtleXMgKyAxKTsKKwkJcXVlcnlzZXAgPSAiV0hFUkUiOworCQlmb3IgKGlu dCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKKwkJeworCQkJT2lkCQlwa190eXBlOwor CQkJT2lkCQlma190eXBlOworCQkJT2lkCQlwa19jb2xsOworCQkJT2lkCQlma19jb2xsOworCisJ CQlpZiAocmlpbmZvLT5wa19hdHRudW1zW2ldICE9IEludmFsaWRPaWQpCisJCQl7CisJCQkJcGtf dHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQkJcGtf Y29sbCA9IFJJQXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJ CX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlwa190eXBlID0gcmlpbmZvLT5wa19wZXJpb2RfcmFuZ2V0 eXBlOworCQkJCXBrX2NvbGwgPSByaWluZm8tPnBrX3BlcmlvZF9jb2xsYXRpb247CisJCQl9CisK KwkJCWlmIChyaWluZm8tPmZrX2F0dG51bXNbaV0gIT0gSW52YWxpZE9pZCkKKwkJCXsKKwkJCQlm a190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJCQlm a19jb2xsID0gUklBdHRDb2xsYXRpb24oZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOwor CQkJfQorCQkJZWxzZQorCQkJeworCQkJCWZrX3R5cGUgPSByaWluZm8tPmZrX3BlcmlvZF9yYW5n ZXR5cGU7CisJCQkJZmtfY29sbCA9IHJpaW5mby0+ZmtfcGVyaW9kX2NvbGxhdGlvbjsKKwkJCX0K KworCQkJaWYgKHJpaW5mby0+ZmtfYXR0bnVtc1tpXSA9PSBJbnZhbGlkT2lkKQorCQkJCWF0dHN0 ciA9IHF1ZXJ5X3BlcmlvZF9yYW5nZShyaWluZm8sIGZrX3JlbCwgIiIsIGZhbHNlKTsKKwkJCWVs c2UKKwkJCXsKKwkJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKKwkJCQkJCQkgUklBdHROYW1lKGZr X3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7CisJCQkJYXR0c3RyID0gYXR0bmFtZTsKKwkJ CX0KKwkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaSArIDEpOworCQkJcmlfR2VuZXJhdGVR dWFsKCZxdWVyeWJ1ZiwgcXVlcnlzZXAsCisJCQkJCQkJcGFyYW1uYW1lLCBwa190eXBlLAorCQkJ CQkJCXJpaW5mby0+cGZfZXFfb3Byc1tpXSwKKwkJCQkJCQlhdHRzdHIsIGZrX3R5cGUpOworCQkJ aWYgKHBrX2NvbGwgIT0gZmtfY29sbCAmJiAhZ2V0X2NvbGxhdGlvbl9pc2RldGVybWluaXN0aWMo cGtfY29sbCkpCisJCQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0aW9uKCZxdWVyeWJ1ZiwgcGtfY29s bCk7CisJCQlxdWVyeXNlcCA9ICJBTkQiOworCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKKwkJ fQorCisJCWlmIChwa0hhc1JhbmdlKQorCQkJcXVlcnlvaWRzW3JpaW5mby0+bmtleXNdID0gUklB dHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSk7CisJ CWVsc2UKKwkJCXF1ZXJ5b2lkc1tyaWluZm8tPm5rZXlzXSA9IHJpaW5mby0+cGtfcGVyaW9kX3Jh bmdldHlwZTsKKworCQkvKiBQcmVwYXJlIGFuZCBzYXZlIHRoZSBwbGFuICovCisJCXFwbGFuID0g cmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRhdGEsIHJpaW5mby0+bmtleXMgKyAxLCBxdWVyeW9pZHMs CisJCQkJCQkJICZxa2V5LCBma19yZWwsIHBrX3JlbCk7CisJfQorCisJLyoKKwkgKiBXZSBoYXZl IGEgcGxhbiBub3cuIEJ1aWxkIHVwIHRoZSBhcmd1bWVudHMgZnJvbSB0aGUga2V5IHZhbHVlcyBp biB0aGUKKwkgKiBkZWxldGVkIFBLIHR1cGxlIGFuZCBkZWxldGUgdGhlIHJlZmVyZW5jaW5nIHJv d3MKKwkgKi8KKwlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCisJCQkJCWZr X3JlbCwgcGtfcmVsLAorCQkJCQlvbGRzbG90LCBOVUxMLAorCQkJCQl0cnVlLCB0YXJnZXRSYW5n ZSwKKwkJCQkJdHJ1ZSwJCS8qIG11c3QgZGV0ZWN0IG5ldyByb3dzICovCisJCQkJCVNQSV9PS19E RUxFVEUpOworCisJaWYgKFNQSV9maW5pc2goKSAhPSBTUElfT0tfRklOSVNIKQorCQllbG9nKEVS Uk9SLCAiU1BJX2ZpbmlzaCBmYWlsZWQiKTsKKworCXRhYmxlX2Nsb3NlKGZrX3JlbCwgUm93RXhj bHVzaXZlTG9jayk7CisKKwlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworfQorCisKKy8q CisgKiBUUklfRktleV9ub2FjdGlvbl91cGQgLQorICoKKyAqIEdpdmUgYW4gZXJyb3IgYW5kIHJv bGwgYmFjayB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBpZiB0aGUKKyAqIHVwZGF0ZSBoYXMgcmVz dWx0ZWQgaW4gYSB2aW9sYXRpb24gb2YgdGhlIGdpdmVuIHJlZmVyZW50aWFsCisgKiBpbnRlZ3Jp dHkgY29uc3RyYWludC4KKyAqLworRGF0dW0KK1RSSV9GS2V5X25vYWN0aW9uX3VwZChQR19GVU5D VElPTl9BUkdTKQoreworCS8qIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2Fs bCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5m bywgIlRSSV9GS2V5X25vYWN0aW9uX3VwZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7CisKKwkvKiBT aGFyZSBjb2RlIHdpdGggUkVTVFJJQ1QvREVMRVRFIGNhc2VzLiAqLworCXJldHVybiByaV9yZXN0 cmljdCgoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0LCB0cnVlKTsKK30KKworLyoKKyAq IFRSSV9GS2V5X3Jlc3RyaWN0X3VwZCAtCisgKgorICogUmVzdHJpY3QgdXBkYXRlIG9mIFBLIHRv IHJvd3MgdW5yZWZlcmVuY2VkIGJ5IGZvcmVpZ24ga2V5LgorICoKKyAqIFRoZSBTUUwgc3RhbmRh cmQgaW50ZW5kcyB0aGF0IHRoaXMgcmVmZXJlbnRpYWwgYWN0aW9uIG9jY3VyIGV4YWN0bHkgd2hl bgorICogdGhlIHVwZGF0ZSBpcyBwZXJmb3JtZWQsIHJhdGhlciB0aGFuIGFmdGVyLiAgVGhpcyBh cHBlYXJzIHRvIGJlCisgKiB0aGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gIk5PIEFDVElPTiIg YW5kICJSRVNUUklDVCIuICBJbiBQb3N0Z3JlcworICogd2Ugc3RpbGwgaW1wbGVtZW50IHRoaXMg YXMgYW4gQUZURVIgdHJpZ2dlciwgYnV0IGl0J3Mgbm9uLWRlZmVycmFibGUuCisgKi8KK0RhdHVt CitUUklfRktleV9yZXN0cmljdF91cGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKiBDaGVjayB0 aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2 ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9yZXN0cmljdF91cGQi LCBSSV9UUklHVFlQRV9VUERBVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIE5PIEFDVElPTi9E RUxFVEUgY2FzZXMuICovCisJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBmY2lu Zm8tPmNvbnRleHQsIGZhbHNlKTsKK30KKworLyoKKyAqIFRSSV9GS2V5X2Nhc2NhZGVfdXBkIC0K KyAqCisgKiBDYXNjYWRlZCB1cGRhdGUgZm9yZWlnbiBrZXkgcmVmZXJlbmNlcyBhdCB1cGRhdGUg ZXZlbnQgb24gdGVtcG9yYWwgUEsgdGFibGUuCisgKi8KK0RhdHVtCitUUklfRktleV9jYXNjYWRl X3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCVRyaWdnZXJEYXRhICp0cmlnZGF0YSA9IChUcmln Z2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQ7CisJY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJp aW5mbzsKKwlSZWxhdGlvbglma19yZWw7CisJUmVsYXRpb24JcGtfcmVsOworCVR1cGxlVGFibGVT bG90ICpvbGRzbG90OworCVR1cGxlVGFibGVTbG90ICpuZXdzbG90OworCVJJX1F1ZXJ5S2V5IHFr ZXk7CisJU1BJUGxhblB0cglxcGxhbjsKKwlEYXR1bSB0YXJnZXRSYW5nZTsKKworCS8qIENoZWNr IHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQg ZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X2Nhc2NhZGVfdXBk IiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCXJpaW5mbyA9IHJpX0ZldGNoQ29uc3RyYWludElu Zm8odHJpZ2RhdGEtPnRnX3RyaWdnZXIsCisJCQkJCQkJCQl0cmlnZGF0YS0+dGdfcmVsYXRpb24s IHRydWUpOworCisJLyoKKwkgKiBHZXQgdGhlIHJlbGF0aW9uIGRlc2NyaXB0b3JzIG9mIHRoZSBG SyBhbmQgUEsgdGFibGVzIGFuZCB0aGUgbmV3IGFuZAorCSAqIG9sZCB0dXBsZS4KKwkgKgorCSAq IGZrX3JlbCBpcyBvcGVuZWQgaW4gUm93RXhjbHVzaXZlTG9jayBtb2RlIHNpbmNlIHRoYXQncyB3 aGF0IG91cgorCSAqIGV2ZW50dWFsIFVQREFURSB3aWxsIGdldCBvbiBpdC4KKwkgKi8KKwlma19y ZWwgPSB0YWJsZV9vcGVuKHJpaW5mby0+ZmtfcmVsaWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCXBr X3JlbCA9IHRyaWdkYXRhLT50Z19yZWxhdGlvbjsKKwluZXdzbG90ID0gdHJpZ2RhdGEtPnRnX25l d3Nsb3Q7CisJb2xkc2xvdCA9IHRyaWdkYXRhLT50Z190cmlnc2xvdDsKKworCWlmICh0cmlnZGF0 YS0+dGdfdGVtcG9yYWwpCisJCXRhcmdldFJhbmdlID0gdHJpZ2RhdGEtPnRnX3RlbXBvcmFsLT5m cF90YXJnZXRSYW5nZTsKKwllbHNlCisJCXRhcmdldFJhbmdlID0gdHVwbGVSYW5nZShvbGRzbG90 LCByaWluZm8pOworCisJaWYgKFNQSV9jb25uZWN0KCkgIT0gU1BJX09LX0NPTk5FQ1QpCisJCWVs b2coRVJST1IsICJTUElfY29ubmVjdCBmYWlsZWQiKTsKKworCS8qIEZldGNoIG9yIHByZXBhcmUg YSBzYXZlZCBwbGFuIGZvciB0aGUgY2FzY2FkZWQgdXBkYXRlICovCisJcmlfQnVpbGRRdWVyeUtl eSgmcWtleSwgcmlpbmZvLCBUUklfUExBTl9DQVNDQURFX1VQRF9ET1VQREFURSk7CisKKwlpZiAo KHFwbGFuID0gcmlfRmV0Y2hQcmVwYXJlZFBsYW4oJnFrZXkpKSA9PSBOVUxMKQorCXsKKwkJYm9v bAkJcGtIYXNSYW5nZTsKKwkJYm9vbAkJZmtIYXNSYW5nZTsKKwkJU3RyaW5nSW5mb0RhdGEgcXVl cnlidWY7CisJCVN0cmluZ0luZm9EYXRhIHF1YWxidWY7CisJCWNoYXIJCWZrcmVsbmFtZVtNQVhf UVVPVEVEX1JFTF9OQU1FX0xFTl07CisJCWNoYXIJCWF0dG5hbWVbTUFYX1FVT1RFRF9OQU1FX0xF Tl07CisJCWNoYXIJICAgKmF0dHN0cjsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29uc3Qg Y2hhciAqcXVlcnlzZXA7CisJCWNvbnN0IGNoYXIgKnF1YWxzZXA7CisJCU9pZAkJCXF1ZXJ5b2lk c1tSSV9NQVhfTlVNS0VZU107CisJCWNvbnN0IGNoYXIgKmZrX29ubHk7CisKKwkJcGtIYXNSYW5n ZSA9IHJpaW5mby0+cGtfcGVyaW9kID09IEludmFsaWRPaWQ7CisJCWZrSGFzUmFuZ2UgPSByaWlu Zm8tPmZrX3BlcmlvZCA9PSBJbnZhbGlkT2lkOworCisJCS8qIC0tLS0tLS0tLS0KKwkJICogVGhl IHF1ZXJ5IHN0cmluZyBidWlsdCBpcworCQkgKglVUERBVEUgW09OTFldIDxma3RhYmxlPgorCQkg KgkgICAgICAgIEZPUiBQT1JUSU9OIE9GICRma2F0dCBGUk9NIGxvd2VyKCRuKzEpIFRPIHVwcGVy KCRuKzEpCisJCSAqCSAgICAgICAgU0VUIGZrYXR0MSA9ICQxLCBbLCAuLi5dCisJCSAqCSAgICAg ICAgV0hFUkUgJG4gPSBma2F0dDEgW0FORCAuLi5dCisJCSAqIFRoZSB0eXBlIGlkJ3MgZm9yIHRo ZSAkIHBhcmFtZXRlcnMgYXJlIHRob3NlIG9mIHRoZQorCQkgKiBjb3JyZXNwb25kaW5nIFBLIGF0 dHJpYnV0ZXMuICBOb3RlIHRoYXQgd2UgYXJlIGFzc3VtaW5nCisJCSAqIHRoZXJlIGlzIGFuIGFz c2lnbm1lbnQgY2FzdCBmcm9tIHRoZSBQSyB0byB0aGUgRksgdHlwZTsKKwkJICogZWxzZSB0aGUg cGFyc2VyIHdpbGwgZmFpbC4KKwkJICogLS0tLS0tLS0tLQorCQkgKi8KKwkJaW5pdFN0cmluZ0lu Zm8oJnF1ZXJ5YnVmKTsKKwkJaW5pdFN0cmluZ0luZm8oJnF1YWxidWYpOworCQlma19vbmx5ID0g ZmtfcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CisJ CQkiIiA6ICJPTkxZICI7CisJCXF1b3RlUmVsYXRpb25OYW1lKGZrcmVsbmFtZSwgZmtfcmVsKTsK KwkJaWYgKGZrSGFzUmFuZ2UpCisJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwgUklBdHROYW1lKGZr X3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSkpOworCQllbHNlCisJ CQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwgZ2V0X3BlcmlvZG5hbWUocmlpbmZvLT5ma19wZXJpb2Qs IGZhbHNlKSk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJVUERBVEUgJXMlcyBG T1IgUE9SVElPTiBPRiAlcyBGUk9NIGxvd2VyKCQlZCkgVE8gdXBwZXIoJCVkKSBTRVQiLAorCQkJ CQkJIGZrX29ubHksIGZrcmVsbmFtZSwgYXR0bmFtZSwgMiAqIHJpaW5mby0+bmtleXMgKyAxLCAy ICogcmlpbmZvLT5ua2V5cyArIDEpOworCisJCXF1ZXJ5c2VwID0gIiI7CisJCXF1YWxzZXAgPSAi V0hFUkUiOworCQlmb3IgKGludCBpID0gMCwgaiA9IHJpaW5mby0+bmtleXM7IGkgPCByaWluZm8t Pm5rZXlzOyBpKyssIGorKykKKwkJeworCQkJT2lkCQlwa190eXBlOworCQkJT2lkCQlma190eXBl OworCQkJT2lkCQlwa19jb2xsOworCQkJT2lkCQlma19jb2xsOworCisJCQlpZiAocmlpbmZvLT5w a19hdHRudW1zW2ldICE9IEludmFsaWRPaWQpCisJCQl7CisJCQkJcGtfdHlwZSA9IFJJQXR0VHlw ZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQkJcGtfY29sbCA9IFJJQXR0Q29s bGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCX0KKwkJCWVsc2UKKwkJ CXsKKwkJCQlwa190eXBlID0gcmlpbmZvLT5wa19wZXJpb2RfcmFuZ2V0eXBlOworCQkJCXBrX2Nv bGwgPSByaWluZm8tPnBrX3BlcmlvZF9jb2xsYXRpb247CisJCQl9CisKKwkJCWlmIChyaWluZm8t PmZrX2F0dG51bXNbaV0gIT0gSW52YWxpZE9pZCkKKwkJCXsKKwkJCQlma190eXBlID0gUklBdHRU eXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJCQlma19jb2xsID0gUklBdHRD b2xsYXRpb24oZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJfQorCQkJZWxzZQor CQkJeworCQkJCWZrX3R5cGUgPSByaWluZm8tPmZrX3BlcmlvZF9yYW5nZXR5cGU7CisJCQkJZmtf Y29sbCA9IHJpaW5mby0+ZmtfcGVyaW9kX2NvbGxhdGlvbjsKKwkJCX0KKworCQkJaWYgKHJpaW5m by0+ZmtfYXR0bnVtc1tpXSA9PSBJbnZhbGlkT2lkKQorCQkJCWF0dHN0ciA9IHF1ZXJ5X3Blcmlv ZF9yYW5nZShyaWluZm8sIGZrX3JlbCwgIiIsIGZhbHNlKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQlx dW90ZU9uZU5hbWUoYXR0bmFtZSwKKwkJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5m a19hdHRudW1zW2ldKSk7CisJCQkJYXR0c3RyID0gYXR0bmFtZTsKKwkJCX0KKwkJCS8qCisJCQkg KiBEb24ndCBzZXQgdGhlIHRlbXBvcmFsIGNvbHVtbihzKS4KKwkJCSAqIEZPUiBQT1JUSU9OIE9G IHdpbGwgdGFrZSBjYXJlIG9mIHRoYXQuCisJCQkgKiBUT0RPOiBJIGd1ZXNzIEkgY291bGQgb21p dCBpdCBmcm9tIHRoZSBxdWFsIHRvbywgcmlnaHQ/IEFuZCBsaWtld2lzZSB3aXRoIGNhc2NhZGUg ZGVsZXRlcz8KKwkJCSAqLworCQkJaWYgKGkgPCByaWluZm8tPm5rZXlzIC0gMSkKKwkJCQlhcHBl bmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwKKwkJCQkJCQkJICIlcyAlcyA9ICQlZCIsCisJCQkJCQkJ CSBxdWVyeXNlcCwgYXR0c3RyLCBpICsgMSk7CisJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIs IGogKyAxKTsKKwkJCXJpX0dlbmVyYXRlUXVhbCgmcXVhbGJ1ZiwgcXVhbHNlcCwKKwkJCQkJCQlw YXJhbW5hbWUsIHBrX3R5cGUsCisJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAorCQkJCQkJ CWF0dHN0ciwgZmtfdHlwZSk7CisJCQlpZiAocGtfY29sbCAhPSBma19jb2xsICYmICFnZXRfY29s bGF0aW9uX2lzZGV0ZXJtaW5pc3RpYyhwa19jb2xsKSkKKwkJCQlyaV9HZW5lcmF0ZVF1YWxDb2xs YXRpb24oJnF1ZXJ5YnVmLCBwa19jb2xsKTsKKwkJCXF1ZXJ5c2VwID0gIiwiOworCQkJcXVhbHNl cCA9ICJBTkQiOworCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKKwkJCXF1ZXJ5b2lkc1tqXSA9 IHBrX3R5cGU7CisJCX0KKwkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmcXVlcnlidWYsIHF1YWxi dWYuZGF0YSwgcXVhbGJ1Zi5sZW4pOworCisJCWlmIChwa0hhc1JhbmdlKQorCQkJcXVlcnlvaWRz WzIgKiByaWluZm8tPm5rZXlzXSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVt c1tyaWluZm8tPm5rZXlzIC0gMV0pOworCQllbHNlCisJCQlxdWVyeW9pZHNbMiAqIHJpaW5mby0+ bmtleXNdID0gcmlpbmZvLT5wa19wZXJpb2RfcmFuZ2V0eXBlOworCisJCS8qIFByZXBhcmUgYW5k IHNhdmUgdGhlIHBsYW4gKi8KKwkJcXBsYW4gPSByaV9QbGFuQ2hlY2socXVlcnlidWYuZGF0YSwg MiAqIHJpaW5mby0+bmtleXMgKyAxLCBxdWVyeW9pZHMsCisJCQkJCQkJICZxa2V5LCBma19yZWws IHBrX3JlbCk7CisJfQorCisJLyoKKwkgKiBXZSBoYXZlIGEgcGxhbiBub3cuIEJ1aWxkIHVwIHRo ZSBhcmd1bWVudHMgZnJvbSB0aGUga2V5IHZhbHVlcyBpbiB0aGUKKwkgKiB1cGRhdGVkIFBLIHR1 cGxlIGFuZCB1cGRhdGUgdGhlIHJlZmVyZW5jaW5nIHJvd3MKKwkgKi8KKwlyaV9QZXJmb3JtQ2hl Y2socmlpbmZvLCAmcWtleSwgcXBsYW4sCisJCQkJCWZrX3JlbCwgcGtfcmVsLAorCQkJCQlvbGRz bG90LCBuZXdzbG90LAorCQkJCQl0cnVlLCB0YXJnZXRSYW5nZSwKKwkJCQkJdHJ1ZSwJCS8qIG11 c3QgZGV0ZWN0IG5ldyByb3dzICovCisJCQkJCVNQSV9PS19VUERBVEUpOworCisJaWYgKFNQSV9m aW5pc2goKSAhPSBTUElfT0tfRklOSVNIKQorCQllbG9nKEVSUk9SLCAiU1BJX2ZpbmlzaCBmYWls ZWQiKTsKKworCXRhYmxlX2Nsb3NlKGZrX3JlbCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1 cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworfQorCisvKgorICogVFJJX0ZLZXlfc2V0bnVsbF9k ZWwgLQorICoKKyAqIFNldCBmb3JlaWduIGtleSByZWZlcmVuY2VzIHRvIE5VTEwgdmFsdWVzIGF0 IGRlbGV0ZSBldmVudCBvbiBQSyB0YWJsZS4KKyAqLworRGF0dW0KK1RSSV9GS2V5X3NldG51bGxf ZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQg dHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1Ry aWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfc2V0bnVsbF9kZWwiLCBSSV9UUklHVFlQRV9ERUxFVEUp OworCisJLyogU2hhcmUgY29kZSB3aXRoIFVQREFURSBjYXNlICovCisJcmV0dXJuIHRyaV9zZXQo KFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgdHJ1ZSk7Cit9CisKKy8qCisgKiBUUklf RktleV9zZXRudWxsX3VwZCAtCisgKgorICogU2V0IGZvcmVpZ24ga2V5IHJlZmVyZW5jZXMgdG8g TlVMTCBhdCB1cGRhdGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0RhdHVtCitUUklfRktleV9z ZXRudWxsX3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENoZWNrIHRoYXQgdGhpcyBpcyBh IHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQuICovCisJcmlf Q2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X3NldG51bGxfdXBkIiwgUklfVFJJR1RZUEVf VVBEQVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBERUxFVEUgY2FzZSAqLworCXJldHVybiB0 cmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIHRydWUpOworfQorCisvKgor ICogVFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwgLQorICoKKyAqIFNldCBmb3JlaWduIGtleSByZWZl cmVuY2VzIHRvIGRlZmF1bHRzIGF0IGRlbGV0ZSBldmVudCBvbiBQSyB0YWJsZS4KKyAqLworRGF0 dW0KK1RSSV9GS2V5X3NldGRlZmF1bHRfZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hl Y2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFu ZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfc2V0ZGVmYXVs dF9kZWwiLCBSSV9UUklHVFlQRV9ERUxFVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIFVQREFU RSBjYXNlICovCisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4 dCwgZmFsc2UpOworfQorCisvKgorICogVFJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQgLQorICoKKyAq IFNldCBmb3JlaWduIGtleSByZWZlcmVuY2VzIHRvIGRlZmF1bHRzIGF0IHVwZGF0ZSBldmVudCBv biBQSyB0YWJsZS4KKyAqLworRGF0dW0KK1RSSV9GS2V5X3NldGRlZmF1bHRfdXBkKFBHX0ZVTkNU SU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxs IG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZv LCAiVFJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQiLCBSSV9UUklHVFlQRV9VUERBVEUpOworCisJLyog U2hhcmUgY29kZSB3aXRoIERFTEVURSBjYXNlICovCisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJE YXRhICopIGZjaW5mby0+Y29udGV4dCwgZmFsc2UpOworfQorCisKKy8qCisgKiB0cmlfc2V0IC0K KyAqCisgKiBDb21tb24gY29kZSBmb3IgdGVtcG9yYWwgT04gREVMRVRFIFNFVCBOVUxMLCBPTiBE RUxFVEUgU0VUIERFRkFVTFQsIE9OCisgKiBVUERBVEUgU0VUIE5VTEwsIGFuZCBPTiBVUERBVEUg U0VUIERFRkFVTFQuCisgKi8KK3N0YXRpYyBEYXR1bQordHJpX3NldChUcmlnZ2VyRGF0YSAqdHJp Z2RhdGEsIGJvb2wgaXNfc2V0X251bGwpCit7CisJY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJp aW5mbzsKKwlSZWxhdGlvbglma19yZWw7CisJUmVsYXRpb24JcGtfcmVsOworCVR1cGxlVGFibGVT bG90ICpvbGRzbG90OworCVJJX1F1ZXJ5S2V5IHFrZXk7CisJU1BJUGxhblB0cglxcGxhbjsKKwlE YXR1bSB0YXJnZXRSYW5nZTsKKworCXJpaW5mbyA9IHJpX0ZldGNoQ29uc3RyYWludEluZm8odHJp Z2RhdGEtPnRnX3RyaWdnZXIsCisJCQkJCQkJCQl0cmlnZGF0YS0+dGdfcmVsYXRpb24sIHRydWUp OworCisJLyoKKwkgKiBHZXQgdGhlIHJlbGF0aW9uIGRlc2NyaXB0b3JzIG9mIHRoZSBGSyBhbmQg UEsgdGFibGVzIGFuZCB0aGUgb2xkIHR1cGxlLgorCSAqCisJICogZmtfcmVsIGlzIG9wZW5lZCBp biBSb3dFeGNsdXNpdmVMb2NrIG1vZGUgc2luY2UgdGhhdCdzIHdoYXQgb3VyCisJICogZXZlbnR1 YWwgVVBEQVRFIHdpbGwgZ2V0IG9uIGl0LgorCSAqLworCWZrX3JlbCA9IHRhYmxlX29wZW4ocmlp bmZvLT5ma19yZWxpZCwgUm93RXhjbHVzaXZlTG9jayk7CisJcGtfcmVsID0gdHJpZ2RhdGEtPnRn X3JlbGF0aW9uOworCW9sZHNsb3QgPSB0cmlnZGF0YS0+dGdfdHJpZ3Nsb3Q7CisKKwkvLyBUT0RP OiBJdCB3b3VsZCBiZSBtb3JlIGNvcnJlY3QgdG8gdGFrZSB0aGUgcmFuZ2UgZnJvbSBvbGRzbG90 LAorCS8vIGFuZCB0aGVuIHRha2UgaXRzIGludGVyc2VjdGlvbiB3aXRoIHRoZSB0Z190ZW1wb3Jh bCByYW5nZSAoaWYgYW55KToKKwkvLyBMaWtld2lzZSBmb3IgY2FzY2FkZV91cGQgYW5kIGNhc2Nh ZGVfZGVsLgorCS8vIEJ1dCBJIGRvbid0IHRoaW5rIHRoaXMgZG9lcyBhbnkgaGFybToKKwlpZiAo dHJpZ2RhdGEtPnRnX3RlbXBvcmFsKQorCQl0YXJnZXRSYW5nZSA9IHRyaWdkYXRhLT50Z190ZW1w b3JhbC0+ZnBfdGFyZ2V0UmFuZ2U7CisJZWxzZQorCQl0YXJnZXRSYW5nZSA9IHR1cGxlUmFuZ2Uo b2xkc2xvdCwgcmlpbmZvKTsKKworCWlmIChTUElfY29ubmVjdCgpICE9IFNQSV9PS19DT05ORUNU KQorCQllbG9nKEVSUk9SLCAiU1BJX2Nvbm5lY3QgZmFpbGVkIik7CisKKwkvKgorCSAqIEZldGNo IG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUgc2V0IG51bGwvZGVmYXVsdCBvcGVyYXRp b24gKGl0J3MKKwkgKiB0aGUgc2FtZSBxdWVyeSBmb3IgZGVsZXRlIGFuZCB1cGRhdGUgY2FzZXMp CisJICovCisJcmlfQnVpbGRRdWVyeUtleSgmcWtleSwgcmlpbmZvLAorCQkJCQkgIGlzX3NldF9u dWxsCisJCQkJCQk/IFRSSV9QTEFOX1NFVE5VTExfRE9VUERBVEUKKwkJCQkJCTogVFJJX1BMQU5f U0VUREVGQVVMVF9ET1VQREFURSk7CisKKwlpZiAoKHFwbGFuID0gcmlfRmV0Y2hQcmVwYXJlZFBs YW4oJnFrZXkpKSA9PSBOVUxMKQorCXsKKwkJYm9vbAkJcGtIYXNSYW5nZTsKKwkJYm9vbAkJZmtI YXNSYW5nZTsKKwkJU3RyaW5nSW5mb0RhdGEgcXVlcnlidWY7CisJCVN0cmluZ0luZm9EYXRhIHF1 YWxidWY7CisJCWNoYXIJCWZrcmVsbmFtZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07CisJCWNo YXIJCWF0dG5hbWVbTUFYX1FVT1RFRF9OQU1FX0xFTl07CisJCWNoYXIJICAgKmF0dHN0cjsKKwkJ Y2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29uc3QgY2hhciAqcXVlcnlzZXA7CisJCWNvbnN0IGNo YXIgKnF1YWxzZXA7CisJCU9pZAkJCXF1ZXJ5b2lkc1tSSV9NQVhfTlVNS0VZU107CisJCWNvbnN0 IGNoYXIgKmZrX29ubHk7CisKKwkJcGtIYXNSYW5nZSA9IHJpaW5mby0+cGtfcGVyaW9kID09IElu dmFsaWRPaWQ7CisJCWZrSGFzUmFuZ2UgPSByaWluZm8tPmZrX3BlcmlvZCA9PSBJbnZhbGlkT2lk OworCisJCS8qIC0tLS0tLS0tLS0KKwkJICogVGhlIHF1ZXJ5IHN0cmluZyBidWlsdCBpcworCQkg KglVUERBVEUgW09OTFldIDxma3RhYmxlPgorCQkgKgkJCUZPUiBQT1JUSU9OIE9GICRma2F0dCBG Uk9NIGxvd2VyKCRuKzEpIFRPIHVwcGVyKCRuKzEpCisJCSAqCQkJU0VUIGZrYXR0MSA9IHtOVUxM fERFRkFVTFR9IFssIC4uLl0KKwkJICoJCQlXSEVSRSAkMSA9IGZrYXR0MSBbQU5EIC4uLl0KKwkJ ICogVGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2YgdGhlCisJ CSAqIGNvcnJlc3BvbmRpbmcgUEsgYXR0cmlidXRlcy4KKwkJICogLS0tLS0tLS0tLQorCQkgKi8K KwkJaW5pdFN0cmluZ0luZm8oJnF1ZXJ5YnVmKTsKKwkJaW5pdFN0cmluZ0luZm8oJnF1YWxidWYp OworCQlma19vbmx5ID0gZmtfcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJ T05FRF9UQUJMRSA/CisJCQkiIiA6ICJPTkxZICI7CisJCXF1b3RlUmVsYXRpb25OYW1lKGZrcmVs bmFtZSwgZmtfcmVsKTsKKwkJaWYgKGZrSGFzUmFuZ2UpCisJCQlxdW90ZU9uZU5hbWUoYXR0bmFt ZSwgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAx XSkpOworCQllbHNlCisJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwgZ2V0X3BlcmlvZG5hbWUocmlp bmZvLT5ma19wZXJpb2QsIGZhbHNlKSk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYs ICJVUERBVEUgJXMlcyBGT1IgUE9SVElPTiBPRiAlcyBGUk9NIGxvd2VyKCQlZCkgVE8gdXBwZXIo JCVkKSBTRVQiLAorCQkJCQkJIGZrX29ubHksIGZrcmVsbmFtZSwgYXR0bmFtZSwgcmlpbmZvLT5u a2V5cyArIDEsIHJpaW5mby0+bmtleXMgKyAxKTsKKworCQlxdWVyeXNlcCA9ICIiOworCQlxdWFs c2VwID0gIldIRVJFIjsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKysp CisJCXsKKwkJCU9pZAkJcGtfdHlwZTsKKwkJCU9pZAkJZmtfdHlwZTsKKwkJCU9pZAkJcGtfY29s bDsKKwkJCU9pZAkJZmtfY29sbDsKKworCQkJaWYgKHJpaW5mby0+cGtfYXR0bnVtc1tpXSAhPSBJ bnZhbGlkT2lkKQorCQkJeworCQkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8t PnBrX2F0dG51bXNbaV0pOworCQkJCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJp aW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJcGtfdHlwZSA9 IHJpaW5mby0+cGtfcGVyaW9kX3JhbmdldHlwZTsKKwkJCQlwa19jb2xsID0gcmlpbmZvLT5wa19w ZXJpb2RfY29sbGF0aW9uOworCQkJfQorCisJCQlpZiAocmlpbmZvLT5ma19hdHRudW1zW2ldICE9 IEludmFsaWRPaWQpCisJCQl7CisJCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5m by0+ZmtfYXR0bnVtc1tpXSk7CisJCQkJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3JlbCwg cmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlma190eXBl ID0gcmlpbmZvLT5ma19wZXJpb2RfcmFuZ2V0eXBlOworCQkJCWZrX2NvbGwgPSByaWluZm8tPmZr X3BlcmlvZF9jb2xsYXRpb247CisJCQl9CisKKwkJCWlmIChyaWluZm8tPmZrX2F0dG51bXNbaV0g PT0gSW52YWxpZE9pZCkKKwkJCQlhdHRzdHIgPSBxdWVyeV9wZXJpb2RfcmFuZ2UocmlpbmZvLCBm a19yZWwsICIiLCBmYWxzZSk7CisJCQllbHNlCisJCQl7CisJCQkJcXVvdGVPbmVOYW1lKGF0dG5h bWUsCisJCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOwor CQkJCWF0dHN0ciA9IGF0dG5hbWU7CisJCQl9CisKKwkJCS8qCisJCQkgKiBEb24ndCBzZXQgdGhl IHRlbXBvcmFsIGNvbHVtbihzKS4KKwkJCSAqIEZPUiBQT1JUSU9OIE9GIHdpbGwgdGFrZSBjYXJl IG9mIHRoYXQuCisJCQkgKiBUT0RPOiBJIGd1ZXNzIEkgY291bGQgb21pdCBpdCBmcm9tIHRoZSBx dWFsIHRvbywgcmlnaHQ/IEFuZCBsaWtld2lzZSB3aXRoIGNhc2NhZGUgZGVsZXRlcz8KKwkJCSAq LworCQkJaWYgKGkgPCByaWluZm8tPm5rZXlzIC0gMSkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZx dWVyeWJ1ZiwKKwkJCQkJCQkJICIlcyAlcyA9ICVzIiwKKwkJCQkJCQkJIHF1ZXJ5c2VwLCBhdHRz dHIsCisJCQkJCQkJCSBpc19zZXRfbnVsbCA/ICJOVUxMIiA6ICJERUZBVUxUIik7CisJCQlzcHJp bnRmKHBhcmFtbmFtZSwgIiQlZCIsIGkgKyAxKTsKKwkJCXJpX0dlbmVyYXRlUXVhbCgmcXVhbGJ1 ZiwgcXVhbHNlcCwKKwkJCQkJCQlwYXJhbW5hbWUsIHBrX3R5cGUsCisJCQkJCQkJcmlpbmZvLT5w Zl9lcV9vcHJzW2ldLAorCQkJCQkJCWF0dHN0ciwgZmtfdHlwZSk7CiAJCQlpZiAocGtfY29sbCAh PSBma19jb2xsICYmICFnZXRfY29sbGF0aW9uX2lzZGV0ZXJtaW5pc3RpYyhwa19jb2xsKSkKIAkJ CQlyaV9HZW5lcmF0ZVF1YWxDb2xsYXRpb24oJnF1ZXJ5YnVmLCBwa19jb2xsKTsKIAkJCXF1ZXJ5 c2VwID0gIiwiOwpAQCAtMTExNCw4ICsyMTYyLDEzIEBAIHJpX3NldChUcmlnZ2VyRGF0YSAqdHJp Z2RhdGEsIGJvb2wgaXNfc2V0X251bGwpCiAJCX0KIAkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygm cXVlcnlidWYsIHF1YWxidWYuZGF0YSwgcXVhbGJ1Zi5sZW4pOwogCisJCWlmIChwa0hhc1Jhbmdl KQorCQkJcXVlcnlvaWRzW3JpaW5mby0+bmtleXNdID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZv LT5wa19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSk7CisJCWVsc2UKKwkJCXF1ZXJ5b2lkc1ty aWluZm8tPm5rZXlzXSA9IHJpaW5mby0+cGtfcGVyaW9kX3JhbmdldHlwZTsKKwogCQkvKiBQcmVw YXJlIGFuZCBzYXZlIHRoZSBwbGFuICovCi0JCXFwbGFuID0gcmlfUGxhbkNoZWNrKHF1ZXJ5YnVm LmRhdGEsIHJpaW5mby0+bmtleXMsIHF1ZXJ5b2lkcywKKwkJcXBsYW4gPSByaV9QbGFuQ2hlY2so cXVlcnlidWYuZGF0YSwgcmlpbmZvLT5ua2V5cyArIDEsIHF1ZXJ5b2lkcywKIAkJCQkJCQkgJnFr ZXksIGZrX3JlbCwgcGtfcmVsKTsKIAl9CiAKQEAgLTExMjUsNiArMjE3OCw3IEBAIHJpX3NldChU cmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwpCiAJcmlfUGVyZm9ybUNoZWNr KHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQlma19yZWwsIHBrX3JlbCwKIAkJCQkJb2xkc2xv dCwgTlVMTCwKKwkJCQkJdHJ1ZSwgdGFyZ2V0UmFuZ2UsCiAJCQkJCXRydWUsCQkvKiBtdXN0IGRl dGVjdCBuZXcgcm93cyAqLwogCQkJCQlTUElfT0tfVVBEQVRFKTsKIApAQCAtMTE1NSwxMzIgKzIy MDksNiBAQCByaV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX3NldF9udWxsKQog fQogCiAKLS8qCi0gKiBSSV9GS2V5X3BrX3VwZF9jaGVja19yZXF1aXJlZCAtCi0gKgotICogQ2hl Y2sgaWYgd2UgcmVhbGx5IG5lZWQgdG8gZmlyZSB0aGUgUkkgdHJpZ2dlciBmb3IgYW4gdXBkYXRl IG9yIGRlbGV0ZSB0byBhIFBLCi0gKiByZWxhdGlvbi4gIFRoaXMgaXMgY2FsbGVkIGJ5IHRoZSBB RlRFUiB0cmlnZ2VyIHF1ZXVlIG1hbmFnZXIgdG8gc2VlIGlmCi0gKiBpdCBjYW4gc2tpcCBxdWV1 aW5nIGFuIGluc3RhbmNlIG9mIGFuIFJJIHRyaWdnZXIuICBSZXR1cm5zIHRydWUgaWYgdGhlCi0g KiB0cmlnZ2VyIG11c3QgYmUgZmlyZWQsIGZhbHNlIGlmIHdlIGNhbiBwcm92ZSB0aGUgY29uc3Ry YWludCB3aWxsIHN0aWxsCi0gKiBiZSBzYXRpc2ZpZWQuCi0gKgotICogbmV3c2xvdCB3aWxsIGJl IE5VTEwgaWYgdGhpcyBpcyBjYWxsZWQgZm9yIGEgZGVsZXRlLgotICovCi1ib29sCi1SSV9GS2V5 X3BrX3VwZF9jaGVja19yZXF1aXJlZChUcmlnZ2VyICp0cmlnZ2VyLCBSZWxhdGlvbiBwa19yZWws Ci0JCQkJCQkJICBUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Ns b3QpCi17Ci0JY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbzsKLQotCXJpaW5mbyA9IHJp X0ZldGNoQ29uc3RyYWludEluZm8odHJpZ2dlciwgcGtfcmVsLCB0cnVlKTsKLQotCS8qCi0JICog SWYgYW55IG9sZCBrZXkgdmFsdWUgaXMgTlVMTCwgdGhlIHJvdyBjb3VsZCBub3QgaGF2ZSBiZWVu IHJlZmVyZW5jZWQgYnkKLQkgKiBhbiBGSyByb3csIHNvIG5vIGNoZWNrIGlzIG5lZWRlZC4KLQkg Ki8KLQlpZiAocmlfTnVsbENoZWNrKFJlbGF0aW9uR2V0RGVzY3IocGtfcmVsKSwgb2xkc2xvdCwg cmlpbmZvLCB0cnVlKSAhPSBSSV9LRVlTX05PTkVfTlVMTCkKLQkJcmV0dXJuIGZhbHNlOwotCi0J LyogSWYgYWxsIG9sZCBhbmQgbmV3IGtleSB2YWx1ZXMgYXJlIGVxdWFsLCBubyBjaGVjayBpcyBu ZWVkZWQgKi8KLQlpZiAobmV3c2xvdCAmJiByaV9LZXlzRXF1YWwocGtfcmVsLCBvbGRzbG90LCBu ZXdzbG90LCByaWluZm8sIHRydWUpKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQkvKiBFbHNlIHdlIG5l ZWQgdG8gZmlyZSB0aGUgdHJpZ2dlci4gKi8KLQlyZXR1cm4gdHJ1ZTsKLX0KLQotLyoKLSAqIFJJ X0ZLZXlfZmtfdXBkX2NoZWNrX3JlcXVpcmVkIC0KLSAqCi0gKiBDaGVjayBpZiB3ZSByZWFsbHkg bmVlZCB0byBmaXJlIHRoZSBSSSB0cmlnZ2VyIGZvciBhbiB1cGRhdGUgdG8gYW4gRksKLSAqIHJl bGF0aW9uLiAgVGhpcyBpcyBjYWxsZWQgYnkgdGhlIEFGVEVSIHRyaWdnZXIgcXVldWUgbWFuYWdl ciB0byBzZWUgaWYKLSAqIGl0IGNhbiBza2lwIHF1ZXVpbmcgYW4gaW5zdGFuY2Ugb2YgYW4gUkkg dHJpZ2dlci4gIFJldHVybnMgdHJ1ZSBpZiB0aGUKLSAqIHRyaWdnZXIgbXVzdCBiZSBmaXJlZCwg ZmFsc2UgaWYgd2UgY2FuIHByb3ZlIHRoZSBjb25zdHJhaW50IHdpbGwgc3RpbGwKLSAqIGJlIHNh dGlzZmllZC4KLSAqLwotYm9vbAotUklfRktleV9ma191cGRfY2hlY2tfcmVxdWlyZWQoVHJpZ2dl ciAqdHJpZ2dlciwgUmVsYXRpb24gZmtfcmVsLAotCQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKm9s ZHNsb3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90KQotewotCWNvbnN0IFJJX0NvbnN0cmFpbnRJ bmZvICpyaWluZm87Ci0JaW50CQkJcmlfbnVsbGNoZWNrOwotCURhdHVtCQl4bWluRGF0dW07Ci0J VHJhbnNhY3Rpb25JZCB4bWluOwotCWJvb2wJCWlzbnVsbDsKLQotCXJpaW5mbyA9IHJpX0ZldGNo Q29uc3RyYWludEluZm8odHJpZ2dlciwgZmtfcmVsLCBmYWxzZSk7Ci0KLQlyaV9udWxsY2hlY2sg PSByaV9OdWxsQ2hlY2soUmVsYXRpb25HZXREZXNjcihma19yZWwpLCBuZXdzbG90LCByaWluZm8s IGZhbHNlKTsKLQotCS8qCi0JICogSWYgYWxsIG5ldyBrZXkgdmFsdWVzIGFyZSBOVUxMLCB0aGUg cm93IHNhdGlzZmllcyB0aGUgY29uc3RyYWludCwgc28gbm8KLQkgKiBjaGVjayBpcyBuZWVkZWQu Ci0JICovCi0JaWYgKHJpX251bGxjaGVjayA9PSBSSV9LRVlTX0FMTF9OVUxMKQotCQlyZXR1cm4g ZmFsc2U7Ci0KLQkvKgotCSAqIElmIHNvbWUgbmV3IGtleSB2YWx1ZXMgYXJlIE5VTEwsIHRoZSBi ZWhhdmlvciBkZXBlbmRzIG9uIHRoZSBtYXRjaAotCSAqIHR5cGUuCi0JICovCi0JZWxzZSBpZiAo cmlfbnVsbGNoZWNrID09IFJJX0tFWVNfU09NRV9OVUxMKQotCXsKLQkJc3dpdGNoIChyaWluZm8t PmNvbmZtYXRjaHR5cGUpCi0JCXsKLQkJCWNhc2UgRktDT05TVFJfTUFUQ0hfU0lNUExFOgotCi0J CQkJLyoKLQkJCQkgKiBJZiBhbnkgbmV3IGtleSB2YWx1ZSBpcyBOVUxMLCB0aGUgcm93IG11c3Qg c2F0aXNmeSB0aGUKLQkJCQkgKiBjb25zdHJhaW50LCBzbyBubyBjaGVjayBpcyBuZWVkZWQuCi0J CQkJICovCi0JCQkJcmV0dXJuIGZhbHNlOwotCi0JCQljYXNlIEZLQ09OU1RSX01BVENIX1BBUlRJ QUw6Ci0KLQkJCQkvKgotCQkJCSAqIERvbid0IGtub3csIG11c3QgcnVuIGZ1bGwgY2hlY2suCi0J CQkJICovCi0JCQkJYnJlYWs7Ci0KLQkJCWNhc2UgRktDT05TVFJfTUFUQ0hfRlVMTDoKLQotCQkJ CS8qCi0JCQkJICogSWYgc29tZSBuZXcga2V5IHZhbHVlcyBhcmUgTlVMTCwgdGhlIHJvdyBmYWls cyB0aGUKLQkJCQkgKiBjb25zdHJhaW50LiAgV2UgbXVzdCBub3QgdGhyb3cgZXJyb3IgaGVyZSwg YmVjYXVzZSB0aGUgcm93Ci0JCQkJICogbWlnaHQgZ2V0IGludmFsaWRhdGVkIGJlZm9yZSB0aGUg Y29uc3RyYWludCBpcyB0byBiZQotCQkJCSAqIGNoZWNrZWQsIGJ1dCB3ZSBzaG91bGQgcXVldWUg dGhlIGV2ZW50IHRvIGFwcGx5IHRoZSBjaGVjawotCQkJCSAqIGxhdGVyLgotCQkJCSAqLwotCQkJ CXJldHVybiB0cnVlOwotCQl9Ci0JfQotCi0JLyoKLQkgKiBDb250aW51ZXMgaGVyZSBmb3Igbm8g bmV3IGtleSB2YWx1ZXMgYXJlIE5VTEwsIG9yIHdlIGNvdWxkbid0IGRlY2lkZQotCSAqIHlldC4K LQkgKi8KLQotCS8qCi0JICogSWYgdGhlIG9yaWdpbmFsIHJvdyB3YXMgaW5zZXJ0ZWQgYnkgb3Vy IG93biB0cmFuc2FjdGlvbiwgd2UgbXVzdCBmaXJlCi0JICogdGhlIHRyaWdnZXIgd2hldGhlciBv ciBub3QgdGhlIGtleXMgYXJlIGVxdWFsLiAgVGhpcyBpcyBiZWNhdXNlIG91cgotCSAqIFVQREFU RSB3aWxsIGludmFsaWRhdGUgdGhlIElOU0VSVCBzbyB0aGF0IHRoZSBJTlNFUlQgUkkgdHJpZ2dl ciB3aWxsCi0JICogbm90IGRvIGFueXRoaW5nOyBzbyB3ZSBoYWQgYmV0dGVyIGRvIHRoZSBVUERB VEUgY2hlY2suICAoV2UgY291bGQgc2tpcAotCSAqIHRoaXMgaWYgd2Uga25ldyB0aGUgSU5TRVJU IHRyaWdnZXIgYWxyZWFkeSBmaXJlZCwgYnV0IHRoZXJlIGlzIG5vIGVhc3kKLQkgKiB3YXkgdG8g a25vdyB0aGF0LikKLQkgKi8KLQl4bWluRGF0dW0gPSBzbG90X2dldHN5c2F0dHIob2xkc2xvdCwg TWluVHJhbnNhY3Rpb25JZEF0dHJpYnV0ZU51bWJlciwgJmlzbnVsbCk7Ci0JQXNzZXJ0KCFpc251 bGwpOwotCXhtaW4gPSBEYXR1bUdldFRyYW5zYWN0aW9uSWQoeG1pbkRhdHVtKTsKLQlpZiAoVHJh bnNhY3Rpb25JZElzQ3VycmVudFRyYW5zYWN0aW9uSWQoeG1pbikpCi0JCXJldHVybiB0cnVlOwot Ci0JLyogSWYgYWxsIG9sZCBhbmQgbmV3IGtleSB2YWx1ZXMgYXJlIGVxdWFsLCBubyBjaGVjayBp cyBuZWVkZWQgKi8KLQlpZiAocmlfS2V5c0VxdWFsKGZrX3JlbCwgb2xkc2xvdCwgbmV3c2xvdCwg cmlpbmZvLCBmYWxzZSkpCi0JCXJldHVybiBmYWxzZTsKLQotCS8qIEVsc2Ugd2UgbmVlZCB0byBm aXJlIHRoZSB0cmlnZ2VyLiAqLwotCXJldHVybiB0cnVlOwotfQogCiAvKgogICogUklfSW5pdGlh bF9DaGVjayAtCkBAIC0xMzA2LDYgKzIyMzQsOCBAQCBSSV9Jbml0aWFsX0NoZWNrKFRyaWdnZXIg KnRyaWdnZXIsIFJlbGF0aW9uIGZrX3JlbCwgUmVsYXRpb24gcGtfcmVsKQogCVN0cmluZ0luZm9E YXRhIHF1ZXJ5YnVmOwogCWNoYXIJCXBrcmVsbmFtZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07 CiAJY2hhcgkJZmtyZWxuYW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwljaGFyCSAgICpw a2F0dHBhcnQ7CisJY2hhcgkgICAqZmthdHRwYXJ0OwogCWNoYXIJCXBrYXR0bmFtZVtNQVhfUVVP VEVEX05BTUVfTEVOICsgM107CiAJY2hhcgkJZmthdHRuYW1lW01BWF9RVU9URURfTkFNRV9MRU4g KyAzXTsKIAlSYW5nZVRibEVudHJ5ICpwa3J0ZTsKQEAgLTEzODcsMTAgKzIzMTcsMjQgQEAgUklf SW5pdGlhbF9DaGVjayhUcmlnZ2VyICp0cmlnZ2VyLCBSZWxhdGlvbiBma19yZWwsIFJlbGF0aW9u IHBrX3JlbCkKIAlzZXAgPSAiIjsKIAlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7 IGkrKykKIAl7Ci0JCXF1b3RlT25lTmFtZShma2F0dG5hbWUsCi0JCQkJCSBSSUF0dE5hbWUoZmtf cmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pKTsKLQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnli dWYsICIlc2ZrLiVzIiwgc2VwLCBma2F0dG5hbWUpOwotCQlzZXAgPSAiLCAiOworCQlpZiAocmlp bmZvLT5ma19hdHRudW1zW2ldICE9IEludmFsaWRPaWQpCisJCXsKKwkJCXF1b3RlT25lTmFtZShm a2F0dG5hbWUsCisJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ld KSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIiVzZmsuJXMiLCBzZXAsIGZrYXR0 bmFtZSk7CisJCQlzZXAgPSAiLCAiOworCQl9CisJCWVsc2UKKwkJeworCQkJcXVvdGVPbmVOYW1l KGZrYXR0bmFtZSwKKwkJCQkJCSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX3BlcmlvZF9h dHRudW1zWzBdKSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIiVzZmsuJXMiLCBz ZXAsIGZrYXR0bmFtZSk7CisJCQlzZXAgPSAiLCAiOworCisJCQlxdW90ZU9uZU5hbWUoZmthdHRu YW1lLAorCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfcGVyaW9kX2F0dG51bXNb MV0pKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiJXNmay4lcyIsIHNlcCwgZmth dHRuYW1lKTsKKwkJfQogCX0KIAogCXF1b3RlUmVsYXRpb25OYW1lKHBrcmVsbmFtZSwgcGtfcmVs KTsKQEAgLTE0MDgsMTkgKzIzNTIsNDcgQEAgUklfSW5pdGlhbF9DaGVjayhUcmlnZ2VyICp0cmln Z2VyLCBSZWxhdGlvbiBma19yZWwsIFJlbGF0aW9uIHBrX3JlbCkKIAlzZXAgPSAiKCI7CiAJZm9y IChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCiAJewotCQlPaWQJCQlwa190eXBl ID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKLQkJT2lkCQkJZmtf dHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7Ci0JCU9pZAkJ CXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7 Ci0JCU9pZAkJCWZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0 bnVtc1tpXSk7CisJCU9pZAkJCXBrX3R5cGU7CisJCU9pZAkJCWZrX3R5cGU7CisJCU9pZAkJCXBr X2NvbGw7CisJCU9pZAkJCWZrX2NvbGw7CisKKwkJaWYgKHJpaW5mby0+cGtfYXR0bnVtc1tpXSAh PSBJbnZhbGlkT2lkKQorCQl7CisJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZv LT5wa19hdHRudW1zW2ldKTsKKwkJCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJp aW5mby0+cGtfYXR0bnVtc1tpXSk7CisKKwkJCXF1b3RlT25lTmFtZShwa2F0dG5hbWUgKyAzLAor CQkJCQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSkpOworCQkJcGth dHRwYXJ0ID0gcGthdHRuYW1lOworCQl9CisJCWVsc2UKKwkJeworCQkJcGtfdHlwZSA9IHJpaW5m by0+cGtfcGVyaW9kX3JhbmdldHlwZTsKKwkJCXBrX2NvbGwgPSByaWluZm8tPnBrX3BlcmlvZF9j b2xsYXRpb247CisJCQlwa2F0dHBhcnQgPSBxdWVyeV9wZXJpb2RfcmFuZ2UocmlpbmZvLCBwa19y ZWwsICJway4iLCB0cnVlKTsKKwkJfQorCisJCWlmIChyaWluZm8tPmZrX2F0dG51bXNbaV0gIT0g SW52YWxpZE9pZCkKKwkJeworCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ ZmtfYXR0bnVtc1tpXSk7CisJCQlma19jb2xsID0gUklBdHRDb2xsYXRpb24oZmtfcmVsLCByaWlu Zm8tPmZrX2F0dG51bXNbaV0pOworCisJCQlxdW90ZU9uZU5hbWUoZmthdHRuYW1lICsgMywKKwkJ CQkJCSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pKTsKKwkJCWZrYXR0 cGFydCA9IGZrYXR0bmFtZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWZrX3R5cGUgPSByaWluZm8t PmZrX3BlcmlvZF9yYW5nZXR5cGU7CisJCQlma19jb2xsID0gcmlpbmZvLT5ma19wZXJpb2RfY29s bGF0aW9uOworCQkJZmthdHRwYXJ0ID0gcXVlcnlfcGVyaW9kX3JhbmdlKHJpaW5mbywgcGtfcmVs LCAiZmsuIiwgZmFsc2UpOworCQl9CiAKLQkJcXVvdGVPbmVOYW1lKHBrYXR0bmFtZSArIDMsCi0J CQkJCSBSSUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pKTsKLQkJcXVvdGVP bmVOYW1lKGZrYXR0bmFtZSArIDMsCi0JCQkJCSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZr X2F0dG51bXNbaV0pKTsKIAkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1Ziwgc2VwLAotCQkJCQkJ cGthdHRuYW1lLCBwa190eXBlLAorCQkJCQkJcGthdHRwYXJ0LCBwa190eXBlLAogCQkJCQkJcmlp bmZvLT5wZl9lcV9vcHJzW2ldLAotCQkJCQkJZmthdHRuYW1lLCBma190eXBlKTsKKwkJCQkJCWZr YXR0cGFydCwgZmtfdHlwZSk7CiAJCWlmIChwa19jb2xsICE9IGZrX2NvbGwpCiAJCQlyaV9HZW5l cmF0ZVF1YWxDb2xsYXRpb24oJnF1ZXJ5YnVmLCBwa19jb2xsKTsKIAkJc2VwID0gIkFORCI7CkBA IC0yMDM0LDYgKzMwMDYsNDMgQEAgcmlfRmV0Y2hDb25zdHJhaW50SW5mbyhUcmlnZ2VyICp0cmln Z2VyLCBSZWxhdGlvbiB0cmlnX3JlbCwgYm9vbCByZWxfaXNfcGspCiAJcmV0dXJuIHJpaW5mbzsK IH0KIAorc3RhdGljIHZvaWQgRGVjb25zdHJ1Y3RGa0NvbnN0cmFpbnRQZXJpb2QoT2lkIHBlcmlv ZGlkLCBPaWQgKnJhbmdldHlwZWlkLCBjaGFyICpyYW5nZXR5cGVuYW1lLCBPaWQgKnJuZ2NvbGxh dGlvbiwgaW50MTYgKmF0dG51bXMpCit7CisJSGVhcFR1cGxlIHBlcnR1cGxlID0gU2VhcmNoU3lz Q2FjaGUxKFBFUklPRE9JRCwgcGVyaW9kaWQpOworCUZvcm1fcGdfcGVyaW9kIHBlcmlvZDsKKwlG b3JtX3BnX3JhbmdlIHJhbmdldHlwZTsKKwlGb3JtX3BnX3R5cGUgdHlwZTsKKwlIZWFwVHVwbGUg cm5ndHVwbGU7CisJSGVhcFR1cGxlIHR5cHR1cGxlOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KHBlcnR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHBlcmlv ZCAlZCIsIHBlcmlvZGlkKTsKKworCXBlcmlvZCA9IChGb3JtX3BnX3BlcmlvZCkgR0VUU1RSVUNU KHBlcnR1cGxlKTsKKworCSpyYW5nZXR5cGVpZCA9IHBlcmlvZC0+cGVycm5ndHlwZTsKKwlhdHRu dW1zWzBdID0gcGVyaW9kLT5wZXJzdGFydDsKKwlhdHRudW1zWzFdID0gcGVyaW9kLT5wZXJlbmQ7 CisJUmVsZWFzZVN5c0NhY2hlKHBlcnR1cGxlKTsKKworCXJuZ3R1cGxlID0gU2VhcmNoU3lzQ2Fj aGUxKFJBTkdFVFlQRSwgKnJhbmdldHlwZWlkKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQocm5n dHVwbGUpKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcmFuZ2UgJWQi LCAqcmFuZ2V0eXBlaWQpOworCisJcmFuZ2V0eXBlID0gKEZvcm1fcGdfcmFuZ2UpIEdFVFNUUlVD VChybmd0dXBsZSk7CisKKwkqcm5nY29sbGF0aW9uID0gcmFuZ2V0eXBlLT5ybmdjb2xsYXRpb247 CisJUmVsZWFzZVN5c0NhY2hlKHJuZ3R1cGxlKTsKKworCXR5cHR1cGxlID0gU2VhcmNoU3lzQ2Fj aGUxKFRZUEVPSUQsIE9iamVjdElkR2V0RGF0dW0oKnJhbmdldHlwZWlkKSk7CisJaWYgKCFIZWFw VHVwbGVJc1ZhbGlkKHR5cHR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIHR5cGUgJXUiLCAqcmFuZ2V0eXBlaWQpOworCisJdHlwZSA9IChGb3JtX3BnX3R5cGUp IEdFVFNUUlVDVCh0eXB0dXBsZSk7CisJc3RyY3B5KHJhbmdldHlwZW5hbWUsIE5hbWVTdHIodHlw ZS0+dHlwbmFtZSkpOworCVJlbGVhc2VTeXNDYWNoZSh0eXB0dXBsZSk7Cit9CisKIC8qCiAgKiBG ZXRjaCBvciBjcmVhdGUgdGhlIFJJX0NvbnN0cmFpbnRJbmZvIHN0cnVjdCBmb3IgYW4gRksgY29u c3RyYWludC4KICAqLwpAQCAtMjA1Nyw2ICszMDY2LDcgQEAgcmlfTG9hZENvbnN0cmFpbnRJbmZv KE9pZCBjb25zdHJhaW50T2lkKQogCXJpaW5mbyA9IChSSV9Db25zdHJhaW50SW5mbyAqKSBoYXNo X3NlYXJjaChyaV9jb25zdHJhaW50X2NhY2hlLAogCQkJCQkJCQkJCQkgICAodm9pZCAqKSAmY29u c3RyYWludE9pZCwKIAkJCQkJCQkJCQkJICAgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwogCWlmICgh Zm91bmQpCiAJCXJpaW5mby0+dmFsaWQgPSBmYWxzZTsKIAllbHNlIGlmIChyaWluZm8tPnZhbGlk KQpAQCAtMjA5MSw2ICszMTAxLDI0IEBAIHJpX0xvYWRDb25zdHJhaW50SW5mbyhPaWQgY29uc3Ry YWludE9pZCkKIAlyaWluZm8tPmNvbmZ1cGR0eXBlID0gY29uRm9ybS0+Y29uZnVwZHR5cGU7CiAJ cmlpbmZvLT5jb25mZGVsdHlwZSA9IGNvbkZvcm0tPmNvbmZkZWx0eXBlOwogCXJpaW5mby0+Y29u Zm1hdGNodHlwZSA9IGNvbkZvcm0tPmNvbmZtYXRjaHR5cGU7CisJcmlpbmZvLT50ZW1wb3JhbCA9 IGNvbkZvcm0tPmNvbnRlbXBvcmFsOworCXJpaW5mby0+cGtfcGVyaW9kID0gY29uRm9ybS0+Y29u ZnBlcmlvZDsKKwlyaWluZm8tPnBrX3BlcmlvZF9yYW5nZXR5cGUgPSBJbnZhbGlkT2lkOworCXJp aW5mby0+cGtfcGVyaW9kX2NvbGxhdGlvbiA9IEludmFsaWRPaWQ7CisJc3RyY3B5KHJpaW5mby0+ cGtfcGVyaW9kX3JhbmdldHlwZV9uYW1lLCAiIik7CisJbWVtc2V0KHJpaW5mby0+cGtfcGVyaW9k X2F0dG51bXMsIDAsIHNpemVvZihyaWluZm8tPnBrX3BlcmlvZF9hdHRudW1zKSk7CisJcmlpbmZv LT5ma19wZXJpb2QgPSBjb25Gb3JtLT5jb25wZXJpb2Q7CisJcmlpbmZvLT5ma19wZXJpb2RfcmFu Z2V0eXBlID0gSW52YWxpZE9pZDsKKwlyaWluZm8tPmZrX3BlcmlvZF9jb2xsYXRpb24gPSBJbnZh bGlkT2lkOworCXN0cmNweShyaWluZm8tPmZrX3BlcmlvZF9yYW5nZXR5cGVfbmFtZSwgIiIpOwor CW1lbXNldChyaWluZm8tPmZrX3BlcmlvZF9hdHRudW1zLCAwLCBzaXplb2YocmlpbmZvLT5ma19w ZXJpb2RfYXR0bnVtcykpOworCisJaWYgKGNvbkZvcm0tPmNvbmZwZXJpb2QgIT0gSW52YWxpZE9p ZCkKKwl7CisJCURlY29uc3RydWN0RmtDb25zdHJhaW50UGVyaW9kKGNvbkZvcm0tPmNvbmZwZXJp b2QsICZyaWluZm8tPnBrX3BlcmlvZF9yYW5nZXR5cGUsIHJpaW5mby0+cGtfcGVyaW9kX3Jhbmdl dHlwZV9uYW1lLCAmcmlpbmZvLT5wa19wZXJpb2RfY29sbGF0aW9uLCByaWluZm8tPnBrX3Blcmlv ZF9hdHRudW1zKTsKKwl9CisJaWYgKGNvbkZvcm0tPmNvbnBlcmlvZCAhPSBJbnZhbGlkT2lkKQor CQlEZWNvbnN0cnVjdEZrQ29uc3RyYWludFBlcmlvZChjb25Gb3JtLT5jb25wZXJpb2QsICZyaWlu Zm8tPmZrX3BlcmlvZF9yYW5nZXR5cGUsIHJpaW5mby0+ZmtfcGVyaW9kX3JhbmdldHlwZV9uYW1l LCAmcmlpbmZvLT5ma19wZXJpb2RfY29sbGF0aW9uLCByaWluZm8tPmZrX3BlcmlvZF9hdHRudW1z KTsKIAogCURlY29uc3RydWN0RmtDb25zdHJhaW50Um93KHR1cCwKIAkJCQkJCQkgICAmcmlpbmZv LT5ua2V5cywKQEAgLTIyNDIsNiArMzI3MCw3IEBAIHJpX1BlcmZvcm1DaGVjayhjb25zdCBSSV9D b25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCVJJX1F1ZXJ5S2V5ICpxa2V5LCBTUElQbGFuUHRy IHFwbGFuLAogCQkJCVJlbGF0aW9uIGZrX3JlbCwgUmVsYXRpb24gcGtfcmVsLAogCQkJCVR1cGxl VGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwKKwkJCQlib29sIGhh c0ZvclBvcnRpb25PZiwgRGF0dW0gZm9yUG9ydGlvbk9mLAogCQkJCWJvb2wgZGV0ZWN0TmV3Um93 cywgaW50IGV4cGVjdF9PSykKIHsKIAlSZWxhdGlvbglxdWVyeV9yZWwsCkBAIC0yMjg3LDE1ICsz MzE2LDE2IEBAIHJpX1BlcmZvcm1DaGVjayhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZv LAogCWlmIChuZXdzbG90KQogCXsKIAkJcmlfRXh0cmFjdFZhbHVlcyhzb3VyY2VfcmVsLCBuZXdz bG90LCByaWluZm8sIHNvdXJjZV9pc19waywKLQkJCQkJCSB2YWxzLCBudWxscyk7CisJCQkJCQkg aGFzRm9yUG9ydGlvbk9mLCBmb3JQb3J0aW9uT2YsIHZhbHMsIG51bGxzKTsKIAkJaWYgKG9sZHNs b3QpCiAJCQlyaV9FeHRyYWN0VmFsdWVzKHNvdXJjZV9yZWwsIG9sZHNsb3QsIHJpaW5mbywgc291 cmNlX2lzX3BrLAorCQkJCQkJCSBoYXNGb3JQb3J0aW9uT2YsIGZvclBvcnRpb25PZiwKIAkJCQkJ CQkgdmFscyArIHJpaW5mby0+bmtleXMsIG51bGxzICsgcmlpbmZvLT5ua2V5cyk7CiAJfQogCWVs c2UKIAl7CiAJCXJpX0V4dHJhY3RWYWx1ZXMoc291cmNlX3JlbCwgb2xkc2xvdCwgcmlpbmZvLCBz b3VyY2VfaXNfcGssCi0JCQkJCQkgdmFscywgbnVsbHMpOworCQkJCQkJIGhhc0ZvclBvcnRpb25P ZiwgZm9yUG9ydGlvbk9mLCB2YWxzLCBudWxscyk7CiAJfQogCiAJLyoKQEAgLTIzNzcsNiArMzQw Nyw3IEBAIHJpX1BlcmZvcm1DaGVjayhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAog c3RhdGljIHZvaWQKIHJpX0V4dHJhY3RWYWx1ZXMoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xv dCAqc2xvdCwKIAkJCQkgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywgYm9vbCByZWxf aXNfcGssCisJCQkJIGJvb2wgaGFzRm9yUG9ydGlvbk9mLCBEYXR1bSBmb3JQb3J0aW9uT2YsCiAJ CQkJIERhdHVtICp2YWxzLCBjaGFyICpudWxscykKIHsKIAljb25zdCBpbnQxNiAqYXR0bnVtczsK QEAgLTIzODksOCArMzQyMCwyMiBAQCByaV9FeHRyYWN0VmFsdWVzKFJlbGF0aW9uIHJlbCwgVHVw bGVUYWJsZVNsb3QgKnNsb3QsCiAKIAlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7 IGkrKykKIAl7Ci0JCXZhbHNbaV0gPSBzbG90X2dldGF0dHIoc2xvdCwgYXR0bnVtc1tpXSwgJmlz bnVsbCk7Ci0JCW51bGxzW2ldID0gaXNudWxsID8gJ24nIDogJyAnOworCQlpZiAoYXR0bnVtc1tp XSAhPSBJbnZhbGlkT2lkKQorCQl7CisJCQl2YWxzW2ldID0gc2xvdF9nZXRhdHRyKHNsb3QsIGF0 dG51bXNbaV0sICZpc251bGwpOworCQkJbnVsbHNbaV0gPSBpc251bGwgPyAnbicgOiAnICc7CisJ CX0KKwkJZWxzZQorCQl7CisJCQl2YWxzW2ldID0gYnVpbGRfcGVyaW9kX3JhbmdlKHJpaW5mbywg c2xvdCwgcmVsX2lzX3BrKTsKKwkJCW51bGxzW2ldID0gJyAnOworCQl9CisJfQorCisJaWYgKGhh c0ZvclBvcnRpb25PZikKKwl7CisJCXZhbHNbcmlpbmZvLT5ua2V5c10gPSBmb3JQb3J0aW9uT2Y7 CisJCW51bGxzW3JpaW5mby0+bmtleXNdID0gJyAnOwogCX0KIH0KIApAQCAtMjQxMyw2ICszNDU4 LDcgQEAgcmlfUmVwb3J0VmlvbGF0aW9uKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8s CiAJU3RyaW5nSW5mb0RhdGEga2V5X3ZhbHVlczsKIAlib29sCQlvbmZrOwogCWNvbnN0IGludDE2 ICphdHRudW1zOworCWNvbnN0IGludDE2ICpwZXJpb2RfYXR0bnVtczsKIAlPaWQJCQlyZWxfb2lk OwogCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CiAJYm9vbAkJaGFzX3Blcm0gPSB0cnVlOwpAQCAtMjQy NSw2ICszNDcxLDcgQEAgcmlfUmVwb3J0VmlvbGF0aW9uKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZv ICpyaWluZm8sCiAJaWYgKG9uZmspCiAJewogCQlhdHRudW1zID0gcmlpbmZvLT5ma19hdHRudW1z OworCQlwZXJpb2RfYXR0bnVtcyA9IHJpaW5mby0+ZmtfcGVyaW9kX2F0dG51bXM7CiAJCXJlbF9v aWQgPSBma19yZWwtPnJkX2lkOwogCQlpZiAodHVwZGVzYyA9PSBOVUxMKQogCQkJdHVwZGVzYyA9 IGZrX3JlbC0+cmRfYXR0OwpAQCAtMjQzMiw2ICszNDc5LDcgQEAgcmlfUmVwb3J0VmlvbGF0aW9u KGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJZWxzZQogCXsKIAkJYXR0bnVtcyA9 IHJpaW5mby0+cGtfYXR0bnVtczsKKwkJcGVyaW9kX2F0dG51bXMgPSByaWluZm8tPnBrX3Blcmlv ZF9hdHRudW1zOwogCQlyZWxfb2lkID0gcGtfcmVsLT5yZF9pZDsKIAkJaWYgKHR1cGRlc2MgPT0g TlVMTCkKIAkJCXR1cGRlc2MgPSBwa19yZWwtPnJkX2F0dDsKQEAgLTI0ODQsMTIgKzM1MzIsMTgg QEAgcmlfUmVwb3J0VmlvbGF0aW9uKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJ CWZvciAoaW50IGlkeCA9IDA7IGlkeCA8IHJpaW5mby0+bmtleXM7IGlkeCsrKQogCQl7CiAJCQlp bnQJCQlmbnVtID0gYXR0bnVtc1tpZHhdOwotCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVw bGVEZXNjQXR0cih0dXBkZXNjLCBmbnVtIC0gMSk7CisJCQlib29sCQloYXNfcGVyaW9kID0gZm51 bSA9PSBJbnZhbGlkT2lkOwogCQkJY2hhcgkgICAqbmFtZSwKIAkJCQkJICAgKnZhbDsKKwkJCUZv cm1fcGdfYXR0cmlidXRlIGF0dDsKIAkJCURhdHVtCQlkYXR1bTsKIAkJCWJvb2wJCWlzbnVsbDsK IAorCQkJaWYgKGhhc19wZXJpb2QpCisJCQkJZm51bSA9IHBlcmlvZF9hdHRudW1zWzBdOworCisJ CQlhdHQgPSBUdXBsZURlc2NBdHRyKHR1cGRlc2MsIGZudW0gLSAxKTsKKwogCQkJbmFtZSA9IE5h bWVTdHIoYXR0LT5hdHRuYW1lKTsKIAogCQkJZGF0dW0gPSBzbG90X2dldGF0dHIodmlvbGF0b3Jz bG90LCBmbnVtLCAmaXNudWxsKTsKQEAgLTI1MTEsNiArMzU2NSwzMiBAQCByaV9SZXBvcnRWaW9s YXRpb24oY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJCX0KIAkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJmtleV9uYW1lcywgbmFtZSk7CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKCZrZXlfdmFsdWVzLCB2YWwpOworCisJCQlpZiAoaGFzX3BlcmlvZCkKKwkJCXsKKwkJCQlm bnVtID0gcGVyaW9kX2F0dG51bXNbMV07CisKKwkJCQlhdHQgPSBUdXBsZURlc2NBdHRyKHR1cGRl c2MsIGZudW0gLSAxKTsKKworCQkJCW5hbWUgPSBOYW1lU3RyKGF0dC0+YXR0bmFtZSk7CisKKwkJ CQlkYXR1bSA9IHNsb3RfZ2V0YXR0cih2aW9sYXRvcnNsb3QsIGZudW0sICZpc251bGwpOworCQkJ CWlmICghaXNudWxsKQorCQkJCXsKKwkJCQkJT2lkCQkJZm91dG9pZDsKKwkJCQkJYm9vbAkJdHlw aXN2YXJsZW5hOworCisJCQkJCWdldFR5cGVPdXRwdXRJbmZvKGF0dC0+YXR0dHlwaWQsICZmb3V0 b2lkLCAmdHlwaXN2YXJsZW5hKTsKKwkJCQkJdmFsID0gT2lkT3V0cHV0RnVuY3Rpb25DYWxsKGZv dXRvaWQsIGRhdHVtKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCQl2YWwgPSAibnVsbCI7CisKKwkJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZrZXlfbmFtZXMsICIsICIpOworCQkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJmtleV92YWx1ZXMsICIsICIpOworCQkJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmtleV9uYW1lcywgbmFtZSk7CisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygma2V5 X3ZhbHVlcywgdmFsKTsKKwkJCX0KIAkJfQogCX0KIApAQCAtMjU3NywxMCArMzY1NywyMSBAQCBy aV9OdWxsQ2hlY2soVHVwbGVEZXNjIHR1cERlc2MsCiAKIAlmb3IgKGludCBpID0gMDsgaSA8IHJp aW5mby0+bmtleXM7IGkrKykKIAl7Ci0JCWlmIChzbG90X2F0dGlzbnVsbChzbG90LCBhdHRudW1z W2ldKSkKLQkJCW5vbmVudWxsID0gZmFsc2U7Ci0JCWVsc2UKKwkJaWYgKGF0dG51bXNbaV0gPT0g SW52YWxpZE9pZCkKKwkJeworCQkJLyoKKwkJCSAqIE5ldmVyIHRyZWF0IGEgcGVyaW9kIGFzIG51 bGwsIGJlY2F1c2UgZXZlbiBpZiBzdGFydCBhbmQgZW5kCisJCQkgKiBhcmUgYm90aCBudWxsLCB0 aGF0IGp1c3Qgc2lnbmlmaWVzIGFuIHVuYm91bmRlZCByYW5nZS4KKwkJCSAqLwogCQkJYWxsbnVs bCA9IGZhbHNlOworCQl9CisJCWVsc2UKKwkJeworCQkJaWYgKHNsb3RfYXR0aXNudWxsKHNsb3Qs IGF0dG51bXNbaV0pKQorCQkJCW5vbmVudWxsID0gZmFsc2U7CisJCQllbHNlCisJCQkJYWxsbnVs bCA9IGZhbHNlOworCQl9CiAJfQogCiAJaWYgKGFsbG51bGwpCkBAIC0yNzExLDkgKzM4MDIsMTIg QEAgcmlfSGFzaFByZXBhcmVkUGxhbihSSV9RdWVyeUtleSAqa2V5LCBTUElQbGFuUHRyIHBsYW4p CiAKIAogLyoKLSAqIHJpX0tleXNFcXVhbCAtCisgKiByaV9LZXlzU3RhYmxlIC0KICAqCi0gKiBD aGVjayBpZiBhbGwga2V5IHZhbHVlcyBpbiBPTEQgYW5kIE5FVyBhcmUgZXF1YWwuCisgKiBDaGVj ayBpZiBhbGwga2V5IHZhbHVlcyBpbiBPTEQgYW5kIE5FVyBhcmUgImVxdWl2YWxlbnQiOgorICog Rm9yIG5vcm1hbCBGS3Mgd2UgY2hlY2sgZm9yIGVxdWFsaXR5LgorICogRm9yIHRlbXBvcmFsIEZL cyB3ZSBjaGVjayB0aGF0IHRoZSBQSyBzaWRlIGlzIGEgc3VwZXJzZXQgb2YgaXRzIG9sZCB2YWx1 ZSwKKyAqIG9yIHRoZSBGSyBzaWRlIGlzIGEgc3Vic2V0LgogICoKICAqIE5vdGU6IGF0IHNvbWUg cG9pbnQgd2UgbWlnaHQgd2lzaCB0byByZWRlZmluZSB0aGlzIGFzIGNoZWNraW5nIGZvcgogICog IklTIE5PVCBESVNUSU5DVCIgcmF0aGVyIHRoYW4gIj0iLCB0aGF0IGlzLCBhbGxvdyB0d28gbnVs bHMgdG8gYmUKQEAgLTI3MjEsNyArMzgxNSw3IEBAIHJpX0hhc2hQcmVwYXJlZFBsYW4oUklfUXVl cnlLZXkgKmtleSwgU1BJUGxhblB0ciBwbGFuKQogICogcHJldmlvdXNseSBmb3VuZCBhdCBsZWFz dCBvbmUgb2YgdGhlIHJvd3MgdG8gY29udGFpbiBubyBudWxscy4KICAqLwogc3RhdGljIGJvb2wK LXJpX0tleXNFcXVhbChSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBs ZVRhYmxlU2xvdCAqbmV3c2xvdCwKK3JpX0tleXNTdGFibGUoUmVsYXRpb24gcmVsLCBUdXBsZVRh YmxlU2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCiAJCQkgY29uc3QgUklf Q29uc3RyYWludEluZm8gKnJpaW5mbywgYm9vbCByZWxfaXNfcGspCiB7CiAJY29uc3QgaW50MTYg KmF0dG51bXM7CkBAIC0yNzM4LDQ1ICszODMyLDcyIEBAIHJpX0tleXNFcXVhbChSZWxhdGlvbiBy ZWwsIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwKIAkJ RGF0dW0JCW5ld3ZhbHVlOwogCQlib29sCQlpc251bGw7CiAKLQkJLyoKLQkJICogR2V0IG9uZSBh dHRyaWJ1dGUncyBvbGR2YWx1ZS4gSWYgaXQgaXMgTlVMTCAtIHRoZXkncmUgbm90IGVxdWFsLgot CQkgKi8KLQkJb2xkdmFsdWUgPSBzbG90X2dldGF0dHIob2xkc2xvdCwgYXR0bnVtc1tpXSwgJmlz bnVsbCk7Ci0JCWlmIChpc251bGwpCi0JCQlyZXR1cm4gZmFsc2U7Ci0KLQkJLyoKLQkJICogR2V0 IG9uZSBhdHRyaWJ1dGUncyBuZXd2YWx1ZS4gSWYgaXQgaXMgTlVMTCAtIHRoZXkncmUgbm90IGVx dWFsLgotCQkgKi8KLQkJbmV3dmFsdWUgPSBzbG90X2dldGF0dHIobmV3c2xvdCwgYXR0bnVtc1tp XSwgJmlzbnVsbCk7Ci0JCWlmIChpc251bGwpCi0JCQlyZXR1cm4gZmFsc2U7Ci0KLQkJaWYgKHJl bF9pc19waykKKwkJaWYgKHJpaW5mby0+dGVtcG9yYWwgJiYgYXR0bnVtc1tpXSA9PSBJbnZhbGlk T2lkKQogCQl7CiAJCQkvKgotCQkJICogSWYgd2UgYXJlIGxvb2tpbmcgYXQgdGhlIFBLIHRhYmxl LCB0aGVuIGRvIGEgYnl0ZXdpc2UKLQkJCSAqIGNvbXBhcmlzb24uICBXZSBtdXN0IHByb3BhZ2F0 ZSBQSyBjaGFuZ2VzIGlmIHRoZSB2YWx1ZSBpcwotCQkJICogY2hhbmdlZCB0byBvbmUgdGhhdCAi bG9va3MiIGRpZmZlcmVudCBidXQgd291bGQgY29tcGFyZSBhcwotCQkJICogZXF1YWwgdXNpbmcg dGhlIGVxdWFsaXR5IG9wZXJhdG9yLiAgVGhpcyBvbmx5IG1ha2VzIGEKLQkJCSAqIGRpZmZlcmVu Y2UgZm9yIE9OIFVQREFURSBDQVNDQURFLCBidXQgZm9yIGNvbnNpc3RlbmN5IHdlIHRyZWF0Ci0J CQkgKiBhbGwgY2hhbmdlcyB0byB0aGUgUEsgdGhlIHNhbWUuCisJCQkgKiBXZSBoYXZlIGEgcGVy aW9kLCBzbyB3ZSBoYXZlIHRvIGdldCB0aGUgc3RhcnQvZW5kIGNvbHVtbnMKKwkJCSAqIGFuZCBi dWlsZCBhIHJhbmdlLgogCQkJICovCi0JCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURl c2NBdHRyKG9sZHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3IsIGF0dG51bXNbaV0gLSAxKTsKLQot CQkJaWYgKCFkYXR1bV9pbWFnZV9lcShvbGR2YWx1ZSwgbmV3dmFsdWUsIGF0dC0+YXR0Ynl2YWws IGF0dC0+YXR0bGVuKSkKLQkJCQlyZXR1cm4gZmFsc2U7CisJCQlvbGR2YWx1ZSA9IGJ1aWxkX3Bl cmlvZF9yYW5nZShyaWluZm8sIG9sZHNsb3QsIHJlbF9pc19wayk7CisJCQluZXd2YWx1ZSA9IGJ1 aWxkX3BlcmlvZF9yYW5nZShyaWluZm8sIG5ld3Nsb3QsIHJlbF9pc19wayk7CiAJCX0KIAkJZWxz ZQogCQl7CiAJCQkvKgotCQkJICogRm9yIHRoZSBGSyB0YWJsZSwgY29tcGFyZSB3aXRoIHRoZSBh cHByb3ByaWF0ZSBlcXVhbGl0eQotCQkJICogb3BlcmF0b3IuICBDaGFuZ2VzIHRoYXQgY29tcGFy ZSBlcXVhbCB3aWxsIHN0aWxsIHNhdGlzZnkgdGhlCi0JCQkgKiBjb25zdHJhaW50IGFmdGVyIHRo ZSB1cGRhdGUuCisJCQkgKiBHZXQgb25lIGF0dHJpYnV0ZSdzIG9sZHZhbHVlLiBJZiBpdCBpcyBO VUxMIC0gdGhleSdyZSBub3QgZXF1YWwuCisJCQkgKi8KKwkJCW9sZHZhbHVlID0gc2xvdF9nZXRh dHRyKG9sZHNsb3QsIGF0dG51bXNbaV0sICZpc251bGwpOworCQkJaWYgKGlzbnVsbCkKKwkJCQly ZXR1cm4gZmFsc2U7CisKKwkJCS8qCisJCQkgKiBHZXQgb25lIGF0dHJpYnV0ZSdzIG5ld3ZhbHVl LiBJZiBpdCBpcyBOVUxMIC0gdGhleSdyZSBub3QgZXF1YWwuCiAJCQkgKi8KLQkJCWlmICghcmlf QXR0cmlidXRlc0VxdWFsKHJpaW5mby0+ZmZfZXFfb3Byc1tpXSwgUklBdHRUeXBlKHJlbCwgYXR0 bnVtc1tpXSksCi0JCQkJCQkJCQlvbGR2YWx1ZSwgbmV3dmFsdWUpKQorCQkJbmV3dmFsdWUgPSBz bG90X2dldGF0dHIobmV3c2xvdCwgYXR0bnVtc1tpXSwgJmlzbnVsbCk7CisJCQlpZiAoaXNudWxs KQogCQkJCXJldHVybiBmYWxzZTsKKworCQl9CisKKwkJaWYgKHJlbF9pc19waykKKwkJeworCQkJ aWYgKHJpaW5mby0+dGVtcG9yYWwgJiYgaSA9PSByaWluZm8tPm5rZXlzIC0gMSkKKwkJCXsKKwkJ CQlyZXR1cm4gRGF0dW1HZXRCb29sKERpcmVjdEZ1bmN0aW9uQ2FsbDIocmFuZ2VfY29udGFpbnMs IG5ld3ZhbHVlLCBvbGR2YWx1ZSkpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qCisJCQkJ ICogSWYgd2UgYXJlIGxvb2tpbmcgYXQgdGhlIFBLIHRhYmxlLCB0aGVuIGRvIGEgYnl0ZXdpc2UK KwkJCQkgKiBjb21wYXJpc29uLiAgV2UgbXVzdCBwcm9wYWdhdGUgUEsgY2hhbmdlcyBpZiB0aGUg dmFsdWUgaXMKKwkJCQkgKiBjaGFuZ2VkIHRvIG9uZSB0aGF0ICJsb29rcyIgZGlmZmVyZW50IGJ1 dCB3b3VsZCBjb21wYXJlIGFzCisJCQkJICogZXF1YWwgdXNpbmcgdGhlIGVxdWFsaXR5IG9wZXJh dG9yLiAgVGhpcyBvbmx5IG1ha2VzIGEKKwkJCQkgKiBkaWZmZXJlbmNlIGZvciBPTiBVUERBVEUg Q0FTQ0FERSwgYnV0IGZvciBjb25zaXN0ZW5jeSB3ZSB0cmVhdAorCQkJCSAqIGFsbCBjaGFuZ2Vz IHRvIHRoZSBQSyB0aGUgc2FtZS4KKwkJCQkgKi8KKwkJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQg PSBUdXBsZURlc2NBdHRyKG9sZHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3IsIGF0dG51bXNbaV0g LSAxKTsKKworCQkJCWlmICghZGF0dW1faW1hZ2VfZXEob2xkdmFsdWUsIG5ld3ZhbHVlLCBhdHQt PmF0dGJ5dmFsLCBhdHQtPmF0dGxlbikpCisJCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKwkJfQor CQllbHNlCisJCXsKKwkJCWlmIChyaWluZm8tPnRlbXBvcmFsICYmIGkgPT0gcmlpbmZvLT5ua2V5 cyAtIDEpCisJCQl7CisJCQkJcmV0dXJuIERhdHVtR2V0Qm9vbChEaXJlY3RGdW5jdGlvbkNhbGwy KHJhbmdlX2NvbnRhaW5zLCBvbGR2YWx1ZSwgbmV3dmFsdWUpKTsKKwkJCX0KKwkJCWVsc2UKKwkJ CXsKKwkJCQkvKgorCQkJCSAqIEZvciB0aGUgRksgdGFibGUsIGNvbXBhcmUgd2l0aCB0aGUgYXBw cm9wcmlhdGUgZXF1YWxpdHkKKwkJCQkgKiBvcGVyYXRvci4gIENoYW5nZXMgdGhhdCBjb21wYXJl IGVxdWFsIHdpbGwgc3RpbGwgc2F0aXNmeSB0aGUKKwkJCQkgKiBjb25zdHJhaW50IGFmdGVyIHRo ZSB1cGRhdGUuCisJCQkJICovCisJCQkJaWYgKCFyaV9BdHRyaWJ1dGVzRXF1YWwocmlpbmZvLT5m Zl9lcV9vcHJzW2ldLCBSSUF0dFR5cGUocmVsLCBhdHRudW1zW2ldKSwKKwkJCQkJCQkJCQlvbGR2 YWx1ZSwgbmV3dmFsdWUpKQorCQkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CiAJCX0KIAl9CiAKQEAg LTI5NTAsMyArNDA3MSwxNyBAQCBSSV9GS2V5X3RyaWdnZXJfdHlwZShPaWQgdGdmb2lkKQogCiAJ cmV0dXJuIFJJX1RSSUdHRVJfTk9ORTsKIH0KKworc3RhdGljIERhdHVtCit0dXBsZVJhbmdlKFR1 cGxlVGFibGVTbG90ICpzbG90LCBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvKQorewor CWJvb2wJaXNudWxsOworCWludDE2CWF0dG51bSA9IHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8t Pm5rZXlzIC0gMV07CisKKwlpZiAoYXR0bnVtID09IEludmFsaWRPaWQpCisJCS8qIEJ1aWxkIGEg cmFuZ2UgZnJvbSB0aGUgUEVSSU9EIHN0YXJ0IGFuZCBlbmQgY29sdW1ucyAqLworCQlyZXR1cm4g YnVpbGRfcGVyaW9kX3JhbmdlKHJpaW5mbywgc2xvdCwgdHJ1ZSk7CisJZWxzZQorCQkvKiBHZXQg dGhlIHJhbmdlIGZyb20gdGhlIHJhbmdlIGNvbHVtbiAqLworCQlyZXR1cm4gc2xvdF9nZXRhdHRy KHNsb3QsIGF0dG51bSwgJmlzbnVsbCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5k ZXggMzhhYjMxMDEyMy4uMWYwZDdiNGE5NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpA QCAtMzMzLDcgKzMzMyw3IEBAIHN0YXRpYyBjaGFyICpwZ19nZXRfdmlld2RlZl93b3JrZXIoT2lk IHZpZXdvaWQsCiAJCQkJCQkJCSAgIGludCBwcmV0dHlGbGFncywgaW50IHdyYXBDb2x1bW4pOwog c3RhdGljIGNoYXIgKnBnX2dldF90cmlnZ2VyZGVmX3dvcmtlcihPaWQgdHJpZ2lkLCBib29sIHBy ZXR0eSk7CiBzdGF0aWMgaW50CWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0gY29s dW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsIE9pZCBpbmRleElkLAotCQkJCQkJCQkJCSBib29s IHdpdGhvdXRPdmVybGFwcywgT2lkIHBlcmlvZGlkLCBTdHJpbmdJbmZvIGJ1Zik7CisJCQkJCQkJ CQkJIGJvb2wgd2l0aG91dE92ZXJsYXBzLCBib29sIHdpdGhQZXJpb2QsIE9pZCBwZXJpb2RpZCwg U3RyaW5nSW5mbyBidWYpOwogc3RhdGljIGNoYXIgKnBnX2dldF9ydWxlZGVmX3dvcmtlcihPaWQg cnVsZW9pZCwgaW50IHByZXR0eUZsYWdzKTsKIHN0YXRpYyBjaGFyICpwZ19nZXRfaW5kZXhkZWZf d29ya2VyKE9pZCBpbmRleHJlbGlkLCBpbnQgY29sbm8sCiAJCQkJCQkJCQljb25zdCBPaWQgKmV4 Y2x1ZGVPcHMsCkBAIC0yMTk0LDcgKzIxOTQsMTIgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29y a2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJCWVsb2coRVJST1Is ICJudWxsIGNvbmtleSBmb3IgY29uc3RyYWludCAldSIsCiAJCQkJCQkgY29uc3RyYWludElkKTsK IAotCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxp ZCwgY29uRm9ybS0+Y29uaW5kaWQsIGZhbHNlLCBJbnZhbGlkT2lkLCAmYnVmKTsKKwkJCQkvKgor CQkJCSAqIElmIGl0IGlzIGEgdGVtcG9yYWwgZm9yZWlnbiBrZXkKKwkJCQkgKiB0aGVuIGl0IHVz ZXMgUEVSSU9EICh3aGljaCBtYXkgYmUgYSByZWFsIHJhbmdlIGNvbHVtbgorCQkJCSAqIG9yIG1h eSBiZSBhIHBlcmlvZCkuCisJCQkJICovCisJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJh eSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCBjb25Gb3JtLT5jb25pbmRpZCwgZmFsc2UsIGNvbkZv cm0tPmNvbnRlbXBvcmFsLCBjb25Gb3JtLT5jb25wZXJpb2QsICZidWYpOwogCiAJCQkJLyogYWRk IGZvcmVpZ24gcmVsYXRpb24gbmFtZSAqLwogCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIikg UkVGRVJFTkNFUyAlcygiLApAQCAtMjIwOCw3ICsyMjEzLDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRk ZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJCWVsb2co RVJST1IsICJudWxsIGNvbmZrZXkgZm9yIGNvbnN0cmFpbnQgJXUiLAogCQkJCQkJIGNvbnN0cmFp bnRJZCk7CiAKLQkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+ Y29uZnJlbGlkLCBjb25Gb3JtLT5jb25pbmRpZCwgZmFsc2UsIEludmFsaWRPaWQsICZidWYpOwor CQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25mcmVsaWQs IGNvbkZvcm0tPmNvbmluZGlkLCBmYWxzZSwgY29uRm9ybS0+Y29udGVtcG9yYWwsIGNvbkZvcm0t PmNvbmZwZXJpb2QsICZidWYpOwogCiAJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJykn KTsKIApAQCAtMjMxNiw3ICsyMzIxLDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9p ZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJaW5kZXhJZCA9IGNvbkZvcm0t PmNvbmluZGlkOwogCQkJCVN5c0NhY2hlR2V0QXR0cihDT05TVFJPSUQsIHR1cCwKIAkJCQkJCSAg QW51bV9wZ19jb25zdHJhaW50X2NvbmV4Y2xvcCwgJmlzbnVsbCk7Ci0JCQkJa2V5YXR0cyA9IGRl Y29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgaW5kZXhJ ZCwgIWlzbnVsbCwgSW52YWxpZE9pZCwgJmJ1Zik7CisJCQkJa2V5YXR0cyA9IGRlY29tcGlsZV9j b2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgaW5kZXhJZCwgIWlzbnVs bCwgZmFsc2UsIEludmFsaWRPaWQsICZidWYpOwogCiAJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIo JmJ1ZiwgJyknKTsKIApAQCAtMjUxNiw3ICsyNTIxLDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZf d29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAgKi8KIHN0YXRpYyBp bnQKIGRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0gY29sdW1uX2luZGV4X2FycmF5 LCBPaWQgcmVsSWQsIE9pZCBpbmRleElkLAotCQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywg T2lkIHBlcmlvZGlkLCBTdHJpbmdJbmZvIGJ1ZikKKwkJCQkJCQkgYm9vbCB3aXRob3V0T3Zlcmxh cHMsIGJvb2wgd2l0aFBlcmlvZCwgT2lkIHBlcmlvZGlkLCBTdHJpbmdJbmZvIGJ1ZikKIHsKIAlE YXR1bQkgICAqa2V5czsKIAlpbnQJCQluS2V5czsKQEAgLTI1NjUsNiArMjU3MCw4IEBAIGRlY29t cGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0gY29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVs SWQsIE9pZCBpbmRleElkLAogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHF1b3RlX2lk ZW50aWZpZXIoY29sTmFtZSkpOwogCQllbHNlIGlmICh3aXRob3V0T3ZlcmxhcHMgJiYgaiA9PSBu S2V5cyAtIDEpCiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwgJXMgV0lUSE9VVCBPVkVSTEFQ UyIsIHF1b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOworCQllbHNlIGlmICh3aXRoUGVyaW9kICYm IGogPT0gbktleXMgLSAxKQorCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsIFBFUklPRCAlcyIs IHF1b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOwogCQllbHNlCiAJCQlhcHBlbmRTdHJpbmdJbmZv KGJ1ZiwgIiwgJXMiLCBxdW90ZV9pZGVudGlmaWVyKGNvbE5hbWUpKTsKIAl9CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfY29uc3RyYWludC5oCmluZGV4IDZjNjY3NWIwZjcuLjJiYWJlNDI3MTMgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfY29uc3RyYWludC5oCkBAIC0xMTQsNiArMTE0LDcgQEAgQ0FUQUxPRyhwZ19j b25zdHJhaW50LDI2MDYsQ29uc3RyYWludFJlbGF0aW9uSWQpCiAJYm9vbAkJY29udGVtcG9yYWw7 CiAKIAlPaWQJCQljb25wZXJpb2Q7CQkvKiBsb2NhbCBQRVJJT0QgdXNlZCBpbiBQSy9GSyBjb25z dHJhaW50ICovCisJT2lkCQkJY29uZnBlcmlvZDsJCS8qIHJlZmVyZW5jZWQgZm9yZWlnbiBQRVJJ T0QgKi8KIAogI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxk cyBzdGFydCBoZXJlICovCiAKQEAgLTEyOSwxOSArMTMwLDE5IEBAIENBVEFMT0cocGdfY29uc3Ry YWludCwyNjA2LENvbnN0cmFpbnRSZWxhdGlvbklkKQogCWludDE2CQljb25ma2V5WzFdOwogCiAJ LyoKLQkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUgUEsgPSBGSyBlcXVhbGl0 eSBvcGVyYXRvcnMgZm9yIGVhY2gKKwkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0 aGUgUEsgPSBGSyBjb21wYXJpc29uIG9wZXJhdG9ycyBmb3IgZWFjaAogCSAqIGNvbHVtbiBvZiB0 aGUgY29uc3RyYWludAogCSAqLwogCU9pZAkJCWNvbnBmZXFvcFsxXSBCS0lfTE9PS1VQKHBnX29w ZXJhdG9yKTsKIAogCS8qCi0JICogSWYgYSBmb3JlaWduIGtleSwgdGhlIE9JRHMgb2YgdGhlIFBL ID0gUEsgZXF1YWxpdHkgb3BlcmF0b3JzIGZvciBlYWNoCisJICogSWYgYSBmb3JlaWduIGtleSwg dGhlIE9JRHMgb2YgdGhlIFBLID0gUEsgY29tcGFyaXNvbiBvcGVyYXRvcnMgZm9yIGVhY2gKIAkg KiBjb2x1bW4gb2YgdGhlIGNvbnN0cmFpbnQgKGkuZS4sIGVxdWFsaXR5IGZvciB0aGUgcmVmZXJl bmNlZCBjb2x1bW5zKQogCSAqLwogCU9pZAkJCWNvbnBwZXFvcFsxXSBCS0lfTE9PS1VQKHBnX29w ZXJhdG9yKTsKIAogCS8qCi0JICogSWYgYSBmb3JlaWduIGtleSwgdGhlIE9JRHMgb2YgdGhlIEZL ID0gRksgZXF1YWxpdHkgb3BlcmF0b3JzIGZvciBlYWNoCisJICogSWYgYSBmb3JlaWduIGtleSwg dGhlIE9JRHMgb2YgdGhlIEZLID0gRksgY29tcGFyaXNvbiBvcGVyYXRvcnMgZm9yIGVhY2gKIAkg KiBjb2x1bW4gb2YgdGhlIGNvbnN0cmFpbnQgKGkuZS4sIGVxdWFsaXR5IGZvciB0aGUgcmVmZXJl bmNpbmcgY29sdW1ucykKIAkgKi8KIAlPaWQJCQljb25mZmVxb3BbMV0gQktJX0xPT0tVUChwZ19v cGVyYXRvcik7CkBAIC0xNzYsNyArMTc3LDcgQEAgREVDTEFSRV9JTkRFWChwZ19jb25zdHJhaW50 X2NvbnBhcmVudGlkX2luZGV4LCAyNTc5LCBDb25zdHJhaW50UGFyZW50SW5kZXhJZCwgb24KIAog LyogY29ua2V5IGNhbiBjb250YWluIHplcm8gKEludmFsaWRBdHRyTnVtYmVyKSBpZiBhIHdob2xl LXJvdyBWYXIgaXMgdXNlZCAqLwogREVDTEFSRV9BUlJBWV9GT1JFSUdOX0tFWV9PUFQoKGNvbnJl bGlkLCBjb25rZXkpLCBwZ19hdHRyaWJ1dGUsIChhdHRyZWxpZCwgYXR0bnVtKSk7Ci1ERUNMQVJF X0FSUkFZX0ZPUkVJR05fS0VZKChjb25mcmVsaWQsIGNvbmZrZXkpLCBwZ19hdHRyaWJ1dGUsIChh dHRyZWxpZCwgYXR0bnVtKSk7CitERUNMQVJFX0FSUkFZX0ZPUkVJR05fS0VZX09QVCgoY29uZnJl bGlkLCBjb25ma2V5KSwgcGdfYXR0cmlidXRlLCAoYXR0cmVsaWQsIGF0dG51bSkpOwogCiAjaWZk ZWYgRVhQT1NFX1RPX0NMSUVOVF9DT0RFCiAKQEAgLTIzNyw2ICsyMzgsNyBAQCBleHRlcm4gT2lk CUNyZWF0ZUNvbnN0cmFpbnRFbnRyeShjb25zdCBjaGFyICpjb25zdHJhaW50TmFtZSwKIAkJCQkJ CQkJICBib29sIGNvbk5vSW5oZXJpdCwKIAkJCQkJCQkJICBib29sIGNvblRlbXBvcmFsLAogCQkJ CQkJCQkgIE9pZCBwZXJpb2QsCisJCQkJCQkJCSAgT2lkIGZwZXJpb2QsCiAJCQkJCQkJCSAgYm9v bCBpc19pbnRlcm5hbCk7CiAKIGV4dGVybiB2b2lkIFJlbW92ZUNvbnN0cmFpbnRCeUlkKE9pZCBj b25JZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA4MTVmNTY5NjQxLi44Y2E5MTBjYmRm IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTM4MTUsNiArMzgxNSw1MCBAQAogICBwcm9y ZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCiAgIHByb3NyYyA9PiAnUklf RktleV9ub2FjdGlvbl91cGQnIH0sCiAKKyMgVGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5 IGNvbnN0cmFpbnQgdHJpZ2dlcnMKK3sgb2lkID0+ICc2MTIyJywgZGVzY3IgPT4gJ3RlbXBvcmFs IHJlZmVyZW50aWFsIGludGVncml0eSBGT1JFSUdOIEtFWSAuLi4gUkVGRVJFTkNFUycsCisgIHBy b25hbWUgPT4gJ1RSSV9GS2V5X2NoZWNrX2lucycsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0 dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9G S2V5X2NoZWNrX2lucycgfSwKK3sgb2lkID0+ICc2MTIzJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJl ZmVyZW50aWFsIGludGVncml0eSBGT1JFSUdOIEtFWSAuLi4gUkVGRVJFTkNFUycsCisgIHByb25h bWUgPT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlw ZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5 X2NoZWNrX3VwZCcgfSwKK3sgb2lkID0+ICc2MTI0JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVy ZW50aWFsIGludGVncml0eSBPTiBERUxFVEUgQ0FTQ0FERScsCisgIHByb25hbWUgPT4gJ1RSSV9G S2V5X2Nhc2NhZGVfZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmln Z2VyJywKKyAgcHJvYXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAnVFJJX0ZLZXlfY2FzY2FkZV9k ZWwnIH0sCit7IG9pZCA9PiAnNjEyNScsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBp bnRlZ3JpdHkgT04gVVBEQVRFIENBU0NBREUnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9jYXNj YWRlX3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisg IHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2Nhc2NhZGVfdXBkJyB9LAor eyBvaWQgPT4gJzYxMjYnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5 IE9OIERFTEVURSBSRVNUUklDVCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X2Rl bCcsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2Fy Z3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X2RlbCcgfSwKK3sg b2lkID0+ICc2MTI3JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBP TiBVUERBVEUgUkVTVFJJQ1QnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9yZXN0cmljdF91cGQn LCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0 eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9yZXN0cmljdF91cGQnIH0sCit7IG9p ZCA9PiAnNjEyOCcsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04g REVMRVRFIFNFVCBOVUxMJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfc2V0bnVsbF9kZWwnLCBw cm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBl cyA9PiAnJywgcHJvc3JjID0+ICdUUklfRktleV9zZXRudWxsX2RlbCcgfSwKK3sgb2lkID0+ICc2 MTI5JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBVUERBVEUg U0VUIE5VTEwnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9zZXRudWxsX3VwZCcsIHByb3ZvbGF0 aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcn LCBwcm9zcmMgPT4gJ1RSSV9GS2V5X3NldG51bGxfdXBkJyB9LAoreyBvaWQgPT4gJzYxMzAnLCBk ZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIERFTEVURSBTRVQgREVG QVVMVCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3NldGRlZmF1bHRfZGVsJywgcHJvdm9sYXRp bGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycs CisgIHByb3NyYyA9PiAnVFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwnIH0sCit7IG9pZCA9PiAnNjEz MScsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gVVBEQVRFIFNF VCBERUZBVUxUJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQnLCBwcm92 b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9 PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9zZXRkZWZhdWx0X3VwZCcgfSwKK3sgb2lkID0+ ICc2MTMyJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxF VEUgTk8gQUNUSU9OJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfbm9hY3Rpb25fZGVsJywgcHJv dm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMg PT4gJycsCisgIHByb3NyYyA9PiAnVFJJX0ZLZXlfbm9hY3Rpb25fZGVsJyB9LAoreyBvaWQgPT4g JzYxMzMnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQREFU RSBOTyBBQ1RJT04nLAorICBwcm9uYW1lID0+ICdUUklfRktleV9ub2FjdGlvbl91cGQnLCBwcm92 b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9 PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9ub2FjdGlvbl91cGQnIH0sCisKICMgVGVtcG9y YWwgbGVmdG92ZXJzIHRyaWdnZXJzCiB7IG9pZCA9PiAnODE1NycsIGRlc2NyID0+ICd0ZW1wb3Jh bCBsZWZ0b3ZlcnMgdHJpZ2dlciBmdW5jdGlvbicsCiAgIHByb25hbWUgPT4gJ0ZQX2luc2VydF9s ZWZ0b3ZlcnMnLCBwcm92b2xhdGlsZSA9PiAndicsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXgg YTg3NGQ5NjlhZC4uYmY4Zjk0YjhmNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMjMyNCw3 ICsyMzI0LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29uc3RyYWludAogCS8qIEZpZWxkcyB1c2VkIGZv ciBGT1JFSUdOIEtFWSBjb25zdHJhaW50czogKi8KIAlSYW5nZVZhciAgICpwa3RhYmxlOwkJLyog UHJpbWFyeSBrZXkgdGFibGUgKi8KIAlMaXN0CSAgICpma19hdHRyczsJCS8qIEF0dHJpYnV0ZXMg b2YgZm9yZWlnbiBrZXkgKi8KKwlOb2RlCSAgICpma19wZXJpb2Q7CQkvKiBTdHJpbmcgbm9kZSBu YW1pbmcgUGVyaW9kIG9yIHJhbmdlIGNvbHVtbiAqLwogCUxpc3QJICAgKnBrX2F0dHJzOwkJLyog Q29ycmVzcG9uZGluZyBhdHRycyBpbiBQSyB0YWJsZSAqLworCU5vZGUJICAgKnBrX3BlcmlvZDsJ CS8qIFN0cmluZyBub2RlIG5hbWluZyBQZXJpb2Qgb3IgcmFuZ2UgY29sdW1uICovCiAJY2hhcgkJ ZmtfbWF0Y2h0eXBlOwkvKiBGVUxMLCBQQVJUSUFMLCBTSU1QTEUgKi8KIAljaGFyCQlma191cGRf YWN0aW9uOwkvKiBPTiBVUERBVEUgYWN0aW9uICovCiAJY2hhcgkJZmtfZGVsX2FjdGlvbjsJLyog T04gREVMRVRFIGFjdGlvbiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmFuZ2V0 eXBlcy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmFuZ2V0eXBlcy5oCmluZGV4IGQ4YzFmMTY1NmEu LmZhMTgyMThiYjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JhbmdldHlwZXMuaAor KysgYi9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmgKQEAgLTE1MCw1ICsxNTAsNiBAQCBl eHRlcm4gYm9vbCByYW5nZV9zcGxpdF9pbnRlcm5hbChUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUs IGNvbnN0IFJhbmdlVHlwZSAqcjEsCiBleHRlcm4gdm9pZCByYW5nZV9sZWZ0b3Zlcl9pbnRlcm5h bChUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsIGNvbnN0IFJhbmdlVHlwZSAqcjEsCiAJCQkJCQkJ CQljb25zdCBSYW5nZVR5cGUgKnIyLCBSYW5nZVR5cGUgKipvdXRwdXQxLAogCQkJCQkJCQkJUmFu Z2VUeXBlICoqb3V0cHV0Mik7CitleHRlcm4gY2hhciAqcmFuZ2VfYXNfc3RyaW5nKFJhbmdlVHlw ZSAqcik7CiAKICNlbmRpZgkJCQkJCQkvKiBSQU5HRVRZUEVTX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKaW5kZXggYzcwYmFhZDY4NS4uNTkwZDNm MGM4MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9v Zi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQK QEAgLTUwLDYgKzUwLDE1IEBAIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYt MDEnIFRPIE1BWFZBTFVFCiBTRVQgdmFsaWRfYXQgPSAnWzE5OTAtMDEtMDEsMTk5OS0wMS0wMSkn CiBXSEVSRSBpZCA9ICdbNSw2KSc7CiBFUlJPUjogIG11bHRpcGxlIGFzc2lnbm1lbnRzIHRvIHNh bWUgY29sdW1uICJ2YWxpZF9hdCIKKy0tIFRoZSB3cm9uZyB0eXBlIGZhaWxzCitVUERBVEUgZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAxIFRPIDQKK1NF VCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMyw0KSc7CitFUlJPUjogIGZ1bmN0aW9uIHBn X2NhdGFsb2cudHNyYW5nZShpbnRlZ2VyLCBpbnRlZ2VyKSBkb2VzIG5vdCBleGlzdAorTElORSAy OiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIDEgVE8gNAorICAgICAgICAgICAgICAgICAg ICAgICBeCitISU5UOiAgTm8gZnVuY3Rpb24gbWF0Y2hlcyB0aGUgZ2l2ZW4gbmFtZSBhbmQgYXJn dW1lbnQgdHlwZXMuIFlvdSBtaWdodCBuZWVkIHRvIGFkZCBleHBsaWNpdCB0eXBlIGNhc3RzLgog LS0gU2V0dGluZyB3aXRoIHRpbWVzdGFtcHMgcmV2ZXJzZWQgZmFpbHMKIFVQREFURSBmb3JfcG9y dGlvbl9vZl90ZXN0CiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBU TyAnMjAxOC0wMS0wMScKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2Fu aXR5X2NoZWNrLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2FuaXR5X2NoZWNrLm91 dAppbmRleCAyZmQ3MDhlMGY4Li5hODMzYzcyMTUyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3Nhbml0eV9jaGVjay5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9zYW5pdHlfY2hlY2sub3V0CkBAIC0xNzcsNiArMTc3LDcgQEAgcXVhZF9wb2x5X3RibHx0 CiByYWRpeF90ZXh0X3RibHx0CiByYW1wfGYKIHJlYWxfY2l0eXxmCityZWZlcmVuY2luZ19wZXJp b2RfdGVzdHx0CiByZXNlcnZhdGlvbnN8Zgogcm9hZHx0CiBzaGlnaHdheXx0CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dAppbmRleCA3MDhiNWQzNTI4 Li4wNWZkNjJmNGMzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhv dXRfb3ZlcmxhcHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9v dmVybGFwcy5vdXQKQEAgLTI4NCwzICsyODQsMTg0OSBAQCBBTFRFUiBUQUJMRSB3aXRob3V0X292 ZXJsYXBzX3Rlc3QyIEFMVEVSIENPTFVNTiB2YWxpZF9hdCBUWVBFIHRzdHpyYW5nZSBVU0lORyB0 cwogQUxURVIgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiBSRU5BTUUgQ09MVU1OIHZhbGlk X2F0IFRPIHZhbGlkX3RocnU7CiBBTFRFUiBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyIERS T1AgQ09MVU1OIHZhbGlkX3RocnU7CiBEUk9QIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDI7 CistLQorLS0gdGVzdCBGSyBkZXBlbmRlbmNpZXMKKy0tCistLSBjYW4ndCBkcm9wIGEgcmFuZ2Ug cmVmZXJlbmNlZCBieSBhbiBGSywgdW5sZXNzIHdpdGggQ0FTQ0FERQorQ1JFQVRFIFRBQkxFIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdDIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3Jhbmdl LAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxp ZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0NSRUFURSBUQUJMRSByZWZlcmVuY2luZ19wZXJp b2RfdGVzdDIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9p ZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2QyX3BrIFBSSU1BUlkg S0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCByZWZlcmVu Y2luZ19wZXJpb2QyX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK KwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QyIChpZCwgUEVSSU9EIHZhbGlkX2F0 KQorKTsKK0FMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgRFJPUCBDT0xVTU4gdmFs aWRfYXQ7CitFUlJPUjogIGNhbm5vdCBkcm9wIGNvbHVtbiB2YWxpZF9hdCBvZiB0YWJsZSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QyIGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RF VEFJTDogIGNvbnN0cmFpbnQgcmVmZXJlbmNpbmdfcGVyaW9kMl9mayBvbiB0YWJsZSByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdDIgZGVwZW5kcyBvbiBjb2x1bW4gdmFsaWRfYXQgb2YgdGFibGUgd2l0 aG91dF9vdmVybGFwc190ZXN0MgorSElOVDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3Ag dGhlIGRlcGVuZGVudCBvYmplY3RzIHRvby4KK0FMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdDIgRFJPUCBDT0xVTU4gdmFsaWRfYXQgQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2FzY2Fk ZXMgdG8gY29uc3RyYWludCByZWZlcmVuY2luZ19wZXJpb2QyX2ZrIG9uIHRhYmxlIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0MgorRFJPUCBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDI7CitE Uk9QIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDI7CistLSBjYW4ndCBkcm9wIGEgUEVSSU9E IHJlZmVyZW5jZWQgYnkgYW4gRkssIHVubGVzcyB3aXRoIENBU0NBREUKK0NSRUFURSBUQUJMRSB3 aXRob3V0X292ZXJsYXBzX3Rlc3QyICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSB0aW1l c3RhbXAsCisJdmFsaWRfdGlsIHRpbWVzdGFtcCwKKwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxp ZF9mcm9tLCB2YWxpZF90aWwpLAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwczJfcGsgUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0NSRUFURSBUQUJM RSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0 c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19w ZXJpb2QyX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJ Q09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2QyX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QyIChp ZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK0FMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dDIgRFJPUCBQRVJJT0QgRk9SIHZhbGlkX2F0OworRVJST1I6ICBjYW5ub3QgZHJvcCBwZXJpb2Qg dmFsaWRfYXQgb24gdGFibGUgd2l0aG91dF9vdmVybGFwc190ZXN0MiBiZWNhdXNlIG90aGVyIG9i amVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICBjb25zdHJhaW50IHJlZmVyZW5jaW5nX3Blcmlv ZDJfZmsgb24gdGFibGUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QyIGRlcGVuZHMgb24gcGVyaW9k IHZhbGlkX2F0IG9uIHRhYmxlIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIKK0hJTlQ6ICBVc2UgRFJP UCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCitBTFRFUiBU QUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyIERST1AgUEVSSU9EIEZPUiB2YWxpZF9hdCBDQVND QURFOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byBjb25zdHJhaW50IHJlZmVyZW5jaW5nX3Bl cmlvZDJfZmsgb24gdGFibGUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QyCitEUk9QIFRBQkxFIHJl ZmVyZW5jaW5nX3BlcmlvZF90ZXN0MjsKK0RST1AgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0 MjsKKy0tCistLSB0ZXN0IEZPUkVJR04gS0VZLCByYW5nZSByZWZlcmVuY2VzIHJhbmdlCistLQor LS0gQ2FuJ3QgY3JlYXRlIGEgRksgd2l0aCBhIG1pc21hdGNoZWQgcmFuZ2UgdHlwZQorQ1JFQVRF IFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0MiAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IGludDRyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgcmVmZXJl bmNpbmdfcGVyaW9kX3BrMiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrMiBGT1JFSUdOIEtFWSAocGFy ZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190 ZXN0IChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAicmVmZXJlbmNpbmdfcGVyaW9kX2ZrMiIgY2Fubm90IGJlIGltcGxlbWVudGVkCitERVRB SUw6ICBLZXkgY29sdW1ucyAidmFsaWRfYXQiIGFuZCAidmFsaWRfYXQiIGFyZSBvZiBpbmNvbXBh dGlibGUgdHlwZXM6IGludDRyYW5nZSBhbmQgdHNyYW5nZS4KK0NSRUFURSBUQUJMRSByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJ cGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9wayBQ UklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQg cmVmZXJlbmNpbmdfcGVyaW9kX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgKGlkLCBQRVJJT0QgdmFs aWRfYXQpCispOworRFJPUCBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDsKKy0tIHdpdGgg aW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGU6CitDUkVBVEUgVEFCTEUgcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAor CXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5U IHJlZmVyZW5jaW5nX3BlcmlvZF9mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0CispOworRFJPUCBUQUJM RSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDsKKy0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVw bGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSByZWZlcmVuY2luZ19wZXJp b2RfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lk IGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9wayBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNp bmdfcGVyaW9kX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJ CVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0IChpZCwgUEVSSU9EIGlkKQorKTsKK0VS Uk9SOiAgZm9yZWlnbiBrZXkgcmVmZXJlbmNlZC1jb2x1bW5zIGxpc3QgbXVzdCBub3QgY29udGFp biBkdXBsaWNhdGVzCistLQorLS0gdGVzdCBBTFRFUiBUQUJMRSBBREQgQ09OU1RSQUlOVAorLS0K K0NSRUFURSBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCAoCisJaWQgaW50NHJhbmdlLAor CXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJl ZmVyZW5jaW5nX3BlcmlvZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCispOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09O U1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgKGlkLCBQ RVJJT0QgdmFsaWRfYXQpOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlE Uk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrOworLS0gd2l0aCBpbmZlcnJlZCBQ SyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZToKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlHTiBL RVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVy bGFwc190ZXN0OworLS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNl ZCBjb2x1bW5zOgorQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09O U1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHBhcmVudF9pZCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoaWQs IFBFUklPRCBpZCk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0 IG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlcworLS0KKy0tIHRlc3Qgd2l0aCByb3dzIGFscmVh ZHkKKy0tCitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDsKK0FMVEVSIFRBQkxF IHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3Bl cmlvZF9mazsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sx LDFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAxJyksICdbMSwxXScpOworQUxU RVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVu Y2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp CisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7CitBTFRFUiBUQUJMRSByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZms7 CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMiwyXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBm YWlsOgorQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlO VCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7CitFUlJPUjogIGlu c2VydCBvciB1cGRhdGUgb24gdGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IiB2aW9sYXRl cyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJyZWZlcmVuY2luZ19wZXJpb2RfZmsiCitERVRBSUw6 ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMSwyKSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAw IDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4gdGFi bGUgIndpdGhvdXRfb3ZlcmxhcHNfdGVzdCIuCistLSBva2F5IGFnYWluOgorREVMRVRFIEZST00g cmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Q7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2Rf dGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdDsKKy0tCistLSB0ZXN0IHBnX2dldF9jb25zdHJhaW50ZGVmCistLQorU0VMRUNUIHBn X2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUg PSAncmVmZXJlbmNpbmdfcGVyaW9kX2ZrJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRk9S RUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKDEgcm93KQorCistLQorLS0gdGVz dCBGSyBjaGlsZCBpbnNlcnRzCistLQorSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rl c3QgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwg J1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0IFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAx JyksICdbMSwxXScpOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJyZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAicmVmZXJl bmNpbmdfcGVyaW9kX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oWzEs MiksIFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4 IikpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ3aXRob3V0X292ZXJsYXBzX3Rlc3QiLgorLS0g bm93IGl0IHNob3VsZCB3b3JrOgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZB TFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMi0wMycsICcyMDE4LTAzLTAzJykpOworSU5T RVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzIsMl0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLQorLS0gdGVzdCBGSyBj aGlsZCB1cGRhdGVzCistLQorVVBEQVRFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFNFVCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMy0wMScpIFdIRVJFIGlkID0gJ1sx LDFdJzsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFNF VCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNS0wMScpIFdIRVJFIGlk ID0gJ1sxLDFdJzsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAicmVmZXJlbmNp bmdfcGVyaW9kX3Rlc3QiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInJlZmVyZW5j aW5nX3BlcmlvZF9mayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFsxLDIp LCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIlR1ZSBNYXkgMDEgMDA6MDA6MDAgMjAxOCIp KSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAid2l0aG91dF9vdmVybGFwc190ZXN0Ii4KK1VQREFU RSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBTRVQgcGFyZW50X2lkID0gJ1s4LDhdJyBXSEVSRSBp ZCA9ICdbMSwxXSc7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJyZWZlcmVu Y2luZ19wZXJpb2RfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbOCw5 KSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgi KSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgIndpdGhvdXRfb3ZlcmxhcHNfdGVzdCIuCistLQor LS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04KKy0tCistLSBhIFBLIHVwZGF0ZSB0 aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lO U0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rl c3QgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykgV0hF UkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3Vn aCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0Ogor REVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lO U0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0w MScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1szLDNd JywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworVVBEQVRF IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAyLTAx JywgJzIwMTYtMDMtMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFu Z2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyB1cGRhdGUgdGhhdCBmYWls cyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190 ZXN0IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgIndpdGhvdXRf b3ZlcmxhcHNfdGVzdCIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAicmVmZXJlbmNp bmdfcGVyaW9kX2ZrIiBvbiB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiCitERVRBSUw6 ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFi bGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0Ii4KKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3Rp bmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6CitERUxFVEUgRlJP TSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgd2l0 aG91dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAn MjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHJl ZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUg RlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0KKy0tIHRl c3QgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJQ1QKKy0tCitBTFRFUiBUQUJMRSByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZms7CitB TFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVy ZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAorCU9OIERFTEVURSBSRVNUUklD VDsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBp c24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVF UyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRF IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAx JywgJzIwMTYtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0 IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVz ZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hF UkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVF UyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJU IElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAx OC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QgVkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAn KSwgJ1s1LDVdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9hdCA9 IHRzcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScg QU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBh IFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFU RSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0w MScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0 ZSBvbiB0YWJsZSAid2l0aG91dF9vdmVybGFwc190ZXN0IiB2aW9sYXRlcyBmb3JlaWduIGtleSBj b25zdHJhaW50ICJyZWZlcmVuY2luZ19wZXJpb2RfZmsiIG9uIHRhYmxlICJyZWZlcmVuY2luZ19w ZXJpb2RfdGVzdCIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxs IHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiLgorLS0gdGhl biBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBz dWNjZWVkczoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0g J1szLDNdJzsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFu IHVwOgorREVMRVRFIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgcGFyZW50X2lk ID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9 ICdbNSw1XSc7CistLQorLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJT04KKy0tCitB TFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZl cmVuY2luZ19wZXJpb2RfZms7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAor CUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dDsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBp c24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVF UyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworREVMRVRF IEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsg ZGVsZXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJl bmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScs IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScs ICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190 ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAx JywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3Ro IGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgt MDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAid2l0aG91dF9vdmVy bGFwc190ZXN0IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJyZWZlcmVuY2luZ19w ZXJpb2RfZmsiIG9uIHRhYmxlICJyZWZlcmVuY2luZ19wZXJpb2RfdGVzdCIKK0RFVEFJTDogIEtl eSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1 IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAi cmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBG SyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHJl ZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1szLDNdJzsKK0RFTEVURSBGUk9NIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLQorLS0gdGVzdCBGSyBwYXJlbnQg ZGVsZXRlcyBSRVNUUklDVAorLS0KK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazsKK0FMVEVSIFRBQkxFIHJl ZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9k X2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5D RVMgd2l0aG91dF9vdmVybGFwc190ZXN0CisJT04gREVMRVRFIFJFU1RSSUNUOworSU5TRVJUIElO VE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDE4LTAyLTAxJykpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0 IFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0 aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24n dDoKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAx OC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAo J1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOwor REVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsg ZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZS T00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQg PSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9y IGRlbGV0ZSBvbiB0YWJsZSAid2l0aG91dF9vdmVybGFwc190ZXN0IiB2aW9sYXRlcyBmb3JlaWdu IGtleSBjb25zdHJhaW50ICJyZWZlcmVuY2luZ19wZXJpb2RfZmsiIG9uIHRhYmxlICJyZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsi TW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlz IHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiLgor LS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRl bGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJF IGlkID0gJ1szLDNdJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBp ZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CistLQorLS0gdGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKKy0tCistLSB0ZXN0 IEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s0LDRdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworQUxURVIgVEFC TEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdf cGVyaW9kX2ZrLAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCQlGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91 dF9vdmVybGFwc190ZXN0CisJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOwor VVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9 ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlk ID0gJ1s0LDRdJzsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAg ICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor IFs0LDUpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjAiKSB8IFs3LDgpCisgWzQsNSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbNCw1KSB8IFsiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3KQorKDMgcm93 cykKKworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgaWQgPSAnWzcsN10nIFdIRVJF IGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hF UkUgaWQgPSAnWzQsNF0nOworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9h dCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tCisgWzQsNSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIpIHwgWzcsOCkKKyBbNCw1KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNyw4KQorIFs0LDUpIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs3LDgpCiso MyByb3dzKQorCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzE1 LDE1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAyMC0w MS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rl c3QgVkFMVUVTICgnWzEwLDEwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp LCAnWzE1LDE1XScpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgaWQgPSAnWzE2 LDE2XScgV0hFUkUgaWQgPSAnWzE1LDE1XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6 dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBp ZCA9ICdbMTAsMTBdJzsKKyAgIGlkICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9h dCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyBbMTAsMTEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAiKSB8IFsxNiwxNykKKyBbMTAsMTEpIHwgWyJXZWQgSmFuIDAxIDAwOjAw OjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsxNSwxNikKKygyIHJvd3Mp CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gd2l0aG91 dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVT ICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7 CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s4LDhdJzsK K1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0n OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAg ICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzUsNikgfCBb Ik1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwg WzgsOSkKKyBbNSw2KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAw MDowMDowMCAyMDIxIikgfCBbOCw5KQorKDIgcm93cykKKworREVMRVRFIEZST00gd2l0aG91dF9v dmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNp bmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworIGlkIHwgdmFsaWRfYXQgfCBwYXJl bnRfaWQgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKygwIHJvd3MpCisKK0lOU0VSVCBJ TlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTcsMTddJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190 ZXN0IFZBTFVFUyAoJ1sxNywxN10nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTEsMTFd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTcsMTddJyk7CitERUxF VEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzE3LDE3XScgQU5EIHZh bGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKKyAgIGlkICAgIHwgICAgICAg ICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTEsMTIpIHwgWyJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsxNywxOCkKKygxIHJv dykKKworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gd2l0 aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFM VUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s5LDld Jyk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlO VCByZWZlcmVuY2luZ19wZXJpb2RfZmssCisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVy aW9kX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVG RVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQ REFURSBTRVQgTlVMTDsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdb MTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s2LDZdJzsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLQorIFs2LDcpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFs2LDcpIHwgWyJNb24gSmFuIDAxIDAwOjAw OjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs5LDEwKQorIFs2LDcpIHwg WyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8 IFs5LDEwKQorKDMgcm93cykKKworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgaWQg PSAnWzEwLDEwXScgV0hFUkUgaWQgPSAnWzksOV0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNiw2XSc7CisgIGlkICAgfCAgICAgICAgICAgICAg ICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAor LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNiw3KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5 IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBbNiw3KSB8IFsiTW9uIEphbiAwMSAw MDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCAKKyBbNiw3KSB8IFsi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCAK KygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdb MTgsMThdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElO VE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxOCwxOF0nLCB0c3JhbmdlKCcyMDIw LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2Rf dGVzdCBWQUxVRVMgKCdbMTIsMTJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JyksICdbMTgsMThdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdb MTksMTldJyBXSEVSRSBpZCA9ICdbMTgsMThdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEn Ojp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJF IGlkID0gJ1sxMiwxMl0nOworICAgaWQgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlk X2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorIFsxMiwxMykgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIpIHwgCisgWzEyLDEzKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMTgsMTkpCisoMiByb3dzKQorCist LSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB3aXRob3V0X292 ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzExLDExXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAo J1s3LDddJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTEsMTFdJyk7 CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxMSwxMV0n OworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNyw3 XSc7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAg ICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNyw4KSB8 IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikg fCAKKyBbNyw4KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDow MDowMCAyMDE5IikgfCBbMTEsMTIpCisgWzcsOCkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy MCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzExLDEyKQorKDMgcm93cykKKworREVM RVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1sxMSwxMV0nOworU0VM RUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNyw3XSc7Cisg IGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAg ICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNyw4KSB8IFsiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBb Nyw4KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAy MDE5IikgfCAKKyBbNyw4KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAw MSAwMDowMDowMCAyMDIxIikgfCAKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBWQUxVRVMgKCdbMjAsMjBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIw LTAxLTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sy MCwyMF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTMsMTNdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjAsMjBdJyk7CitERUxFVEUgRlJPTSB3aXRob3V0 X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzIwLDIwXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5 LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVz dCBXSEVSRSBpZCA9ICdbMTMsMTNdJzsKKyAgIGlkICAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0KKyBbMTMsMTQpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFsxMywxNCkgfCBbIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzIwLDIxKQorKDIgcm93 cykKKworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8g d2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1stMSwtMV0nLCB0c3JhbmdlKG51bGwsIG51 bGwpKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTIsMTJd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1sxMiwxMl0nKTsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0CisgIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0n LAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmssCisJQUREIENPTlNUUkFJ TlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKwkJT04gREVM RVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKK1VQREFURSB3aXRob3V0X292 ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8g JzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NF TEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzgsOF0nOwor ICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAg ICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzgsOSkgfCBbIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0x LDApCisgWzgsOSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAxOSIpIHwgWzEyLDEzKQorIFs4LDkpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsxMiwxMykKKygzIHJvd3MpCisKK1VQ REFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0g J1sxMiwxMl0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBp ZCA9ICdbOCw4XSc7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KyBbOCw5KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCBbLTEsMCkKKyBbOCw5KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iiwi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbLTEsMCkKKyBbOCw5KSB8IFsiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbLTEsMCkKKygz IHJvd3MpCisKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMjIs MjJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8g d2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syMiwyMl0nLCB0c3JhbmdlKCcyMDIwLTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVz dCBWQUxVRVMgKCdbMTQsMTRdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyks ICdbMjIsMjJdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdbMjMs MjNdJyBXSEVSRSBpZCA9ICdbMjIsMjJdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0 aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlk ID0gJ1sxNCwxNF0nOworICAgaWQgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLQorIFsxNCwxNSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzE0LDE1KSB8IFsiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMjIsMjMpCisoMiByb3dzKQor CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5UTyB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzE0LDE0XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZB TFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTQs MTRdJyk7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sx NCwxNF0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9 ICdbOSw5XSc7CisgICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAg ICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor IFs5LDEwKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCBbLTEsMCkKKyBbOSwxMCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzE0LDE1KQorIFs5LDEwKSB8IFsiV2VkIEph biAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMTQsMTUp CisoMyByb3dzKQorCitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQg PSAnWzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJF IGlkID0gJ1s5LDldJzsKKyAgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tCisgWzksMTApIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjAiKSB8IFstMSwwKQorIFs5LDEwKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAy MDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbLTEsMCkKKyBbOSwxMCkgfCBbIldl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWy0x LDApCisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVT ICgnWzI0LDI0XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMjQsMjRdJywgdHNyYW5nZSgn MjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVy aW9kX3Rlc3QgVkFMVUVTICgnWzE1LDE1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpLCAnWzI0LDI0XScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdI RVJFIGlkID0gJ1syNCwyNF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFt cDsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzE1 LDE1XSc7CisgICBpZCAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAg ICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzE1LDE2KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCBbLTEsMCkKKyBbMTUsMTYpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAi LCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsyNCwyNSkKKygyIHJvd3MpCisKKy0tCist LSB0ZXN0IEZPUkVJR04gS0VZLCByYW5nZSByZWZlcmVuY2VzIFBFUklPRAorLS0KK0RST1AgVEFC TEUgd2l0aG91dF9vdmVybGFwc190ZXN0IENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVz IHRvIGNvbnN0cmFpbnQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrIG9uIHRhYmxlIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0CitDUkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0ICgKKwlpZCBp bnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSB0aW1lc3RhbXAsCisJdmFsaWRfdGlsIHRpbWVzdGFtcCwK KwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCUNPTlNUUkFJ TlQgd2l0aG91dF9vdmVybGFwc19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAo J1sxLDFdJywgJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMycpOworSU5TRVJUIElOVE8gd2l0aG91 dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxLDFdJywgJzIwMTgtMDMtMDMnLCAnMjAxOC0wNC0w NCcpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syLDJdJywg JzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFw c190ZXN0IFZBTFVFUyAoJ1szLDNdJywgJzIwMTgtMDEtMDEnLCBOVUxMKTsKKy0tIENhbid0IGNy ZWF0ZSBhIEZLIHdpdGggYSBtaXNtYXRjaGVkIHJhbmdlIHR5cGUKK0NSRUFURSBUQUJMRSByZWZl cmVuY2luZ19wZXJpb2RfdGVzdDIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBpbnQ0cmFu Z2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3Blcmlv ZF9wazIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05T VFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazIgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoaWQsIFBF UklPRCB2YWxpZF9hdCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInJlZmVy ZW5jaW5nX3BlcmlvZF9mazIiIGNhbm5vdCBiZSBpbXBsZW1lbnRlZAorREVUQUlMOiAgS2V5IGNv bHVtbnMgInZhbGlkX2F0IiBhbmQgInZhbGlkX2F0IiBhcmUgb2YgaW5jb21wYXRpYmxlIHR5cGVz OiBpbnQ0cmFuZ2UgYW5kIHRzcmFuZ2UuCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZl cmVuY2VkIHRhYmxlOgorRFJPUCBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDsKK0NSRUFU RSBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJlZmVyZW5j aW5nX3BlcmlvZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp LAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QK Kyk7CitEUk9QIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0OworLS0gc2hvdWxkIGZhaWwg YmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQ1JFQVRFIFRBQkxFIHJl ZmVyZW5jaW5nX3BlcmlvZF90ZXN0ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5n ZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9k X3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RS QUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHBhcmVudF9pZCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgKGlkLCBQRVJJ T0QgaWQpCispOworRVJST1I6ICBmb3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBt dXN0IG5vdCBjb250YWluIGR1cGxpY2F0ZXMKKy0tCistLSB0ZXN0IEFMVEVSIFRBQkxFIEFERCBD T05TVFJBSU5UCistLQorQ1JFQVRFIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0ICgKKwlp ZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAor CUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2Rf dGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCAoaWQsIFBFUklPRCB2YWxpZF9hdCk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZms7CistLSB3 aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQUxURVIgVEFCTEUgcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2Rf ZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNF UyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7CistLSBzaG91bGQgZmFpbCBiZWNhdXNlIG9mIGR1cGxp Y2F0ZSByZWZlcmVuY2VkIGNvbHVtbnM6CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2Rf dGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazIKKwlGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgcGFyZW50X2lkKQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVy bGFwc190ZXN0IChpZCwgUEVSSU9EIGlkKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgcmVmZXJlbmNl ZC1jb2x1bW5zIGxpc3QgbXVzdCBub3QgY29udGFpbiBkdXBsaWNhdGVzCistLQorLS0gdGVzdCB3 aXRoIHJvd3MgYWxyZWFkeQorLS0KK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 OworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQg cmVmZXJlbmNpbmdfcGVyaW9kX2ZrOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rl c3QgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwg J1sxLDFdJyk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05T VFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDsKK0FMVEVS IFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5j aW5nX3BlcmlvZF9mazsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVF UyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJyksICdbMSwxXScp OworLS0gc2hvdWxkIGZhaWw6CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAor CUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dDsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInJlZmVyZW5jaW5nX3Blcmlv ZF9mayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFsxLDIpLCBbIlR1ZSBK YW4gMDIgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBub3Qg cHJlc2VudCBpbiB0YWJsZSAid2l0aG91dF9vdmVybGFwc190ZXN0Ii4KKy0tIG9rYXkgYWdhaW46 CitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDsKK0FMVEVSIFRBQkxFIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2Zr CisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMg d2l0aG91dF9vdmVybGFwc190ZXN0OworLS0KKy0tIHRlc3QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYK Ky0tCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQg V0hFUkUgY29ubmFtZSA9ICdyZWZlcmVuY2luZ19wZXJpb2RfZmsnOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVS RU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0KGlkLCBQRVJJT0QgdmFsaWRfYXQpCisoMSByb3cp CisKKy0tCistLSB0ZXN0IEZLIGNoaWxkIGluc2VydHMKKy0tCitJTlNFUlQgSU5UTyByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAn MjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAy JywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24g dGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25z dHJhaW50ICJyZWZlcmVuY2luZ19wZXJpb2RfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwg dmFsaWRfYXQpPShbMSwyKSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAx IDAwOjAwOjAwIDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgIndpdGhvdXRfb3Zlcmxh cHNfdGVzdCIuCistLSBub3cgaXQgc2hvdWxkIHdvcms6CitJTlNFUlQgSU5UTyB3aXRob3V0X292 ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzEsMV0nLCAnMjAxOC0wMi0wMycsICcyMDE4LTAzLTAzJyk7 CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMiwyXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKKy0tCistLSB0ZXN0 IEZLIGNoaWxkIHVwZGF0ZXMKKy0tCitVUERBVEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgU0VU IHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAzLTAxJykgV0hFUkUgaWQg PSAnWzEsMV0nOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rl c3QgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA1LTAxJykgV0hF UkUgaWQgPSAnWzEsMV0nOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJyZWZl cmVuY2luZ19wZXJpb2RfdGVzdCIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAicmVm ZXJlbmNpbmdfcGVyaW9kX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0o WzEsMiksIFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiVHVlIE1heSAwMSAwMDowMDowMCAy MDE4IikpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ3aXRob3V0X292ZXJsYXBzX3Rlc3QiLgor VVBEQVRFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFNFVCBwYXJlbnRfaWQgPSAnWzgsOF0nIFdI RVJFIGlkID0gJ1sxLDFdJzsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAicmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInJl ZmVyZW5jaW5nX3BlcmlvZF9mayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9 KFs4LDkpLCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIlRodSBNYXIgMDEgMDA6MDA6MDAg MjAxOCIpKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAid2l0aG91dF9vdmVybGFwc190ZXN0Ii4K Ky0tCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIE5PIEFDVElPTgorLS0KKy0tIGEgUEsgdXBk YXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2Vk OgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBT RVQgdmFsaWRfZnJvbSA9ICcyMDE2LTAxLTAxJywgdmFsaWRfdGlsID0gJzIwMTYtMDItMDEnIFdI RVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91 Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoK K0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CitJ TlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0w MS0wMScsICcyMDE4LTAyLTAxJyk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg VkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CitJTlNFUlQgSU5U TyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgt MDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB3aXRob3V0X292ZXJsYXBz X3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMi0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAz LTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDItMDEnIEFO RCB2YWxpZF90aWwgPSAnMjAxOC0wMy0wMSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJl Y2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg U0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAyLTAxJwor V0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEnIEFORCB2YWxp ZF90aWwgPSAnMjAxOC0wMi0wMSc7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUg IndpdGhvdXRfb3ZlcmxhcHNfdGVzdCIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAi cmVmZXJlbmNpbmdfcGVyaW9kX2ZrIiBvbiB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Qi CitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9mcm9tLCB2YWxpZF90aWwpPShbNSw2KSwgTW9uIEph biAwMSAwMDowMDowMCAyMDE4LCBUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgpIGlzIHN0aWxsIHJl ZmVyZW5jZWQgZnJvbSB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiLgorLS0gdGhlbiBk ZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNj ZWVkczoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sz LDNdJzsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAx Ni0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAyLTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7 CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJF IHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg V0hFUkUgaWQgPSAnWzUsNV0nOworLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJ Q1QKKy0tCitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RS QUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZms7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJp b2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdAorCU9OIERFTEVURSBSRVNUUklDVDsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3Vj Y2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElO VE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgdmFsaWRfZnJv bSA9ICcyMDE2LTAxLTAxJywgdmFsaWRfdGlsID0gJzIwMTYtMDItMDEnIFdIRVJFIGlkID0gJ1s1 LDVdJzsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVy aWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0RFTEVURSBGUk9N IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMS0wMScsICcyMDE4 LTAyLTAxJyk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUs NV0nLCAnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAx OC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZh bGlkX2Zyb20gPSAnMjAxNi0wMi0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAzLTAxJworV0hFUkUg aWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDItMDEnIEFORCB2YWxpZF90aWwg PSAnMjAxOC0wMy0wMSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBh cmUgcmVmZXJlbmNlZDoKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2Zy b20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAyLTAxJworV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEnIEFORCB2YWxpZF90aWwgPSAnMjAx OC0wMi0wMSc7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgIndpdGhvdXRfb3Zl cmxhcHNfdGVzdCIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAicmVmZXJlbmNpbmdf cGVyaW9kX2ZrIiBvbiB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiCitERVRBSUw6ICBL ZXkgKGlkLCB2YWxpZF9mcm9tLCB2YWxpZF90aWwpPShbNSw2KSwgTW9uIEphbiAwMSAwMDowMDow MCAyMDE4LCBUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJv bSB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiLgorLS0gdGhlbiBkZWxldGUgdGhlIG9i amVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVU RSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1szLDNdJzsKK1VQREFU RSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZh bGlkX3RpbCA9ICcyMDE2LTAyLTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9t ID0gJzIwMTgtMDEtMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7CistLSBjbGVhbiB1 cDoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIHBhcmVudF9pZCA9 ICdbNSw1XSc7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAn WzUsNV0nOworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCistLQorQUxU RVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJl bmNpbmdfcGVyaW9kX2ZrOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlB REQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7 CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNu J3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMg KCdbNSw1XScsICcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0RFTEVURSBGUk9NIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0 IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVz ZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFM VUVTICgnWzUsNV0nLCAnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitJTlNFUlQgSU5UTyB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMi0wMScsICcyMDE4 LTAzLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdb MywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK0RF TEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2Zyb20gPSAnMjAxOC0wMi0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAzLTAxJzsKKy0t IGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVM RVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOworRVJS T1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ3aXRob3V0X292ZXJsYXBzX3Rlc3QiIHZp b2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInJlZmVyZW5jaW5nX3BlcmlvZF9mayIgb24g dGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRf ZnJvbSwgdmFsaWRfdGlsKT0oWzUsNiksIE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCwgVGh1IEZl YiAwMSAwMDowMDowMCAyMDE4KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0Ii4KKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVj b3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUgRlJPTSB3aXRob3V0 X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgt MDEtMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7CistLQorLS0gdGVzdCBGSyBwYXJl bnQgZGVsZXRlcyBSRVNUUklDVAorLS0KK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90 ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazsKK0FMVEVSIFRBQkxF IHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVy aW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVS RU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0CisJT04gREVMRVRFIFJFU1RSSUNUOworSU5TRVJU IElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJF IGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2gg dGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0lO U0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBW QUxVRVMgKCdbNSw1XScsICcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKK0lOU0VSVCBJTlRP IHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0w MS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVy bGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAyLTAx JyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDMtMDEnOworLS0gYSBQSyBkZWxldGUgdGhhdCBmYWls cyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJs YXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEn IEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUg b24gdGFibGUgIndpdGhvdXRfb3ZlcmxhcHNfdGVzdCIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAicmVmZXJlbmNpbmdfcGVyaW9kX2ZrIiBvbiB0YWJsZSAicmVmZXJlbmNpbmdfcGVy aW9kX3Rlc3QiCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9mcm9tLCB2YWxpZF90aWwpPShbNSw2 KSwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4LCBUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgpIGlz IHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiLgor LS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRl bGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJF IGlkID0gJ1szLDNdJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBp ZCA9ICdbNSw1XScgQU5EIHZhbGlkX2Zyb20gPSAnMjAxOC0wMS0wMScgQU5EIHZhbGlkX3RpbCA9 ICcyMDE4LTAyLTAxJzsKKy0tCistLSB0ZXN0IE9OIFVQREFURS9ERUxFVEUgb3B0aW9ucworLS0K Ky0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gd2l0aG91dF9v dmVybGFwc190ZXN0IFZBTFVFUyAoJ1s2LDZdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp OworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzQsNF0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CitBTFRFUiBUQUJM RSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19w ZXJpb2RfZmssCisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0 X292ZXJsYXBzX3Rlc3QKKwkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7CitV UERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0g J1s2LDZdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQg PSAnWzQsNF0nOworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAg ICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzQsNSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAg MjAyMCIpIHwgWzcsOCkKKyBbNCw1KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KQorIFs0LDUpIHwgWyJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcpCisoMyByb3dz KQorCitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdbNyw3XScgV0hFUkUg aWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVS RSBpZCA9ICdbNCw0XSc7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyBbNCw1KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIikgfCBbNyw4KQorIFs0LDUpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgi LCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs3LDgpCisgWzQsNSkgfCBbIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzcsOCkKKygz IHJvd3MpCisKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTUs MTVdJywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9v dmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxNSwxNV0nLCAnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAx Jyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTAsMTBd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTUsMTVdJyk7CitVUERB VEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdbMTYsMTZdJyBXSEVSRSBpZCA9ICdb MTUsMTVdJyBBTkQgdHNyYW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ICcyMDE5LTAxLTAx Jzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVS RSBpZCA9ICdbMTAsMTBdJzsKKyAgIGlkICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxp ZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0KKyBbMTAsMTEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiKSB8IFsxNiwxNykKKyBbMTAsMTEpIHwgWyJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsxNSwxNikKKygyIHJv d3MpCisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gd2l0 aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s4LDhdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzUs NV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxF VEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NFTEVD VCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworICBp ZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzUsNikgfCBbIk1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzgsOSkK KyBbNSw2KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDow MCAyMDIxIikgfCBbOCw5KQorKDIgcm93cykKKworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFw c190ZXN0IFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVy aW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworIGlkIHwgdmFsaWRfYXQgfCBwYXJlbnRfaWQg CistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKygwIHJvd3MpCisKK0lOU0VSVCBJTlRPIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTcsMTddJywgJzIwMTgtMDEtMDEnLCAnMjAy MC0wMS0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sx NywxN10nLCAnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTEsMTFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbMTcsMTddJyk7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBz X3Rlc3QgV0hFUkUgaWQgPSAnWzE3LDE3XScgQU5EIHRzcmFuZ2UodmFsaWRfZnJvbSwgdmFsaWRf dGlsKSBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNp bmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzExLDExXSc7CisgICBpZCAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRf aWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzExLDEyKSB8IFsiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMTcsMTgpCisoMSByb3cp CisKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbOSw5XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s2LDZd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOworQUxURVIg VEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNp bmdfcGVyaW9kX2ZrLAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCQlG T1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0 aG91dF9vdmVybGFwc190ZXN0CisJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5V TEw7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEwLDEwXScgV0hF UkUgaWQgPSAnWzksOV0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBX SEVSRSBpZCA9ICdbNiw2XSc7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlk X2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyBbNiw3KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIikgfCAKKyBbNiw3KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iiwi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbOSwxMCkKKyBbNiw3KSB8IFsiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbOSwxMCkKKygz IHJvd3MpCisKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlkID0gJ1sxMCwxMF0n IFdIRVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rl c3QgV0hFUkUgaWQgPSAnWzYsNl0nOworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgWzYsNykgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIpIHwgCisgWzYsNykgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAx OCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgCisgWzYsNykgfCBbIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgCisoMyByb3dzKQor CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzE4LDE4XScsICcy MDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBWQUxVRVMgKCdbMTgsMThdJywgJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5T RVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE4LDE4XScpOworVVBEQVRFIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBTRVQgaWQgPSAnWzE5LDE5XScgV0hFUkUgaWQgPSAnWzE4LDE4XScg QU5EIHRzcmFuZ2UodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSBAPiAnMjAxOS0wMS0wMSc6OnRpbWVz dGFtcDsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAn WzEyLDEyXSc7CisgICBpZCAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAg ICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgWzEyLDEzKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIikgfCAKKyBbMTIsMTMpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJG cmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsxOCwxOSkKKygyIHJvd3MpCisKKy0tIHRlc3Qg RksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBWQUxVRVMgKCdbMTEsMTFdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5T RVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzcsN10nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAx LTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9N IHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s3LDddJzsKKyAgaWQgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs3LDgpIHwgWyJUdWUgSmFuIDAxIDAw OjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFs3LDgpIHwgWyJN b24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFsx MSwxMikKKyBbNyw4KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAw MDowMDowMCAyMDIxIikgfCBbMTEsMTIpCisoMyByb3dzKQorCitERUxFVEUgRlJPTSB3aXRob3V0 X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s3LDddJzsKKyAgaWQgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRf aWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs3LDgpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAw IDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFs3LDgpIHwgWyJNb24gSmFu IDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IAorIFs3LDgp IHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEi KSB8IAorKDMgcm93cykKKworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVF UyAoJ1syMCwyMF0nLCAnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzIwLDIwXScsICcyMDIwLTAxLTAxJywgJzIw MjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAo J1sxMywxM10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1syMCwyMF0n KTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbMjAsMjBd JyBBTkQgdHNyYW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ICcyMDE5LTAxLTAxJzo6dGlt ZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9 ICdbMTMsMTNdJzsKKyAgIGlkICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAg ICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyBbMTMsMTQpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjAiKSB8IAorIFsxMywxNCkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIs IkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzIwLDIxKQorKDIgcm93cykKKworLS0gdGVz dCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVy bGFwc190ZXN0IFZBTFVFUyAoJ1stMSwtMV0nLCBudWxsLCBudWxsKTsKK0lOU0VSVCBJTlRPIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTIsMTJdJywgJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgn WzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMiwxMl0nKTsK K0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisgIEFMVEVSIENPTFVNTiBwYXJl bnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2lu Z19wZXJpb2RfZmssCisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJCUZP UkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRo b3V0X292ZXJsYXBzX3Rlc3QKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQg REVGQVVMVDsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbMTMsMTNd JyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QgV0hFUkUgaWQgPSAnWzgsOF0nOworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisgWzgsOSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzgsOSkgfCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzEyLDEzKQorIFs4LDkp IHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEi KSB8IFsxMiwxMykKKygzIHJvd3MpCisKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VU IGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSByZWZl cmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbOCw4XSc7CisgIGlkICAgfCAgICAgICAg ICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50 X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOCw5KSB8IFsiVHVlIEphbiAwMSAwMDowMDow MCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkKKyBbOCw5KSB8IFsi TW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBb LTEsMCkKKyBbOCw5KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAw MDowMDowMCAyMDIxIikgfCBbLTEsMCkKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMjIsMjJdJywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0w MScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syMiwyMl0n LCAnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTQsMTRdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJyksICdbMjIsMjJdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBp ZCA9ICdbMjMsMjNdJyBXSEVSRSBpZCA9ICdbMjIsMjJdJyBBTkQgdHNyYW5nZSh2YWxpZF9mcm9t LCB2YWxpZF90aWwpIEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKKyAgIGlkICAgIHwg ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8 IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTQsMTUpIHwgWyJNb24gSmFu IDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKQor IFsxNCwxNSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIpIHwgWzIyLDIzKQorKDIgcm93cykKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRl cyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAo J1sxNCwxNF0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyByZWZl cmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbOSw5XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpLCAnWzE0LDE0XScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFw c190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIw LTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdf cGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzksOV0nOworICAgaWQgICB8ICAgICAgICAgICAgICAg ICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOSwxMCkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAx OSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzksMTApIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFsxNCwx NSkKKyBbOSwxMCkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6 MDA6MDAgMjAyMSIpIHwgWzE0LDE1KQorKDMgcm93cykKKworREVMRVRFIEZST00gd2l0aG91dF9v dmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbOSw5XSc7CisgICBpZCAgIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9p ZCAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs5LDEwKSB8IFsiVHVlIEphbiAwMSAwMDowMDow MCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkKKyBbOSwxMCkgfCBb Ik1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwg Wy0xLDApCisgWzksMTApIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAx IDAwOjAwOjAwIDIwMjEiKSB8IFstMSwwKQorKDMgcm93cykKKworSU5TRVJUIElOVE8gd2l0aG91 dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syNCwyNF0nLCAnMjAxOC0wMS0wMScsICcyMDIwLTAx LTAxJyk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzI0LDI0 XScsICcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxNSwxNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSwgJ1syNCwyNF0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBXSEVSRSBpZCA9ICdbMjQsMjRdJyBBTkQgdHNyYW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwp IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMTUsMTVdJzsKKyAgIGlkICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAK Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTUsMTYpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKQorIFsxNSwxNikgfCBb IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwg WzI0LDI1KQorKDIgcm93cykKKworLS0KKy0tIHRlc3QgRk9SRUlHTiBLRVksIFBFUklPRCByZWZl cmVuY2VzIHJhbmdlCistLQorRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgQ0FTQ0FE RTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gY29uc3RyYWludCByZWZlcmVuY2luZ19wZXJp b2RfZmsgb24gdGFibGUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKK0NSRUFURSBUQUJMRSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAor CUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwc19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0 IFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAzJykpOwor SU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5n ZSgnMjAxOC0wMy0wMycsICcyMDE4LTA0LTA0JykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVy bGFwc190ZXN0IFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAx LTA1JykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1szLDNd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsIE5VTEwpKTsKKy0tIENhbid0IGNyZWF0ZSBhIEZLIHdp dGggYSBtaXNtYXRjaGVkIHJhbmdlIHR5cGUKK0NSRUFURSBUQUJMRSByZWZlcmVuY2luZ19wZXJp b2RfdGVzdDIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIGludDQsCisgIHZhbGlkX3Rp bCBpbnQ0LAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCisJ cGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9wazIg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5U IHJlZmVyZW5jaW5nX3BlcmlvZF9mazIgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoaWQsIFBFUklPRCB2 YWxpZF9hdCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInJlZmVyZW5jaW5n X3BlcmlvZF9mazIiIGNhbm5vdCBiZSBpbXBsZW1lbnRlZAorREVUQUlMOiAgS2V5IGNvbHVtbnMg InZhbGlkX2F0IiBhbmQgInZhbGlkX2F0IiBhcmUgb2YgaW5jb21wYXRpYmxlIHR5cGVzOiBpbnQ0 cmFuZ2UgYW5kIHRzcmFuZ2UuCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2Vk IHRhYmxlOgorRFJPUCBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDsKK0NSRUFURSBUQUJM RSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20g dGltZXN0YW1wLAorCXZhbGlkX3RpbCB0aW1lc3RhbXAsCisJUEVSSU9EIEZPUiB2YWxpZF9hdCAo dmFsaWRfZnJvbSwgdmFsaWRfdGlsKSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJ TlQgcmVmZXJlbmNpbmdfcGVyaW9kX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsgRk9SRUlHTiBL RVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdAorKTsKK0RST1AgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Q7CistLSBz aG91bGQgZmFpbCBiZWNhdXNlIG9mIGR1cGxpY2F0ZSByZWZlcmVuY2VkIGNvbHVtbnM6CitDUkVB VEUgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgKAorCWlkIGludDRyYW5nZSwKKwl2YWxp ZF9mcm9tIHRpbWVzdGFtcCwKKwl2YWxpZF90aWwgdGltZXN0YW1wLAorCVBFUklPRCBGT1IgdmFs aWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlD T05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrIEZP UkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJCVJFRkVSRU5DRVMgd2l0 aG91dF9vdmVybGFwc190ZXN0IChpZCwgUEVSSU9EIGlkKQorKTsKK0VSUk9SOiAgZm9yZWlnbiBr ZXkgcmVmZXJlbmNlZC1jb2x1bW5zIGxpc3QgbXVzdCBub3QgY29udGFpbiBkdXBsaWNhdGVzCist LQorLS0gdGVzdCBBTFRFUiBUQUJMRSBBREQgQ09OU1RSQUlOVAorLS0KK0NSRUFURSBUQUJMRSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gdGlt ZXN0YW1wLAorCXZhbGlkX3RpbCB0aW1lc3RhbXAsCisJUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFs aWRfZnJvbSwgdmFsaWRfdGlsKSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQg cmVmZXJlbmNpbmdfcGVyaW9kX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBD T05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoaWQs IFBFUklPRCB2YWxpZF9hdCk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAor CURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZms7CistLSB3aXRoIGluZmVycmVk IFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVy aW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdO IEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292 ZXJsYXBzX3Rlc3Q7CistLSBzaG91bGQgZmFpbCBiZWNhdXNlIG9mIGR1cGxpY2F0ZSByZWZlcmVu Y2VkIGNvbHVtbnM6CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBD T05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazIKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lk LCBQRVJJT0QgcGFyZW50X2lkKQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0IChp ZCwgUEVSSU9EIGlkKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgcmVmZXJlbmNlZC1jb2x1bW5zIGxp c3QgbXVzdCBub3QgY29udGFpbiBkdXBsaWNhdGVzCistLQorLS0gdGVzdCB3aXRoIHJvd3MgYWxy ZWFkeQorLS0KK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0OworQUxURVIgVEFC TEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdf cGVyaW9kX2ZrOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgn WzEsMV0nLCAnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAxJywgJ1sxLDFdJyk7CitBTFRFUiBUQUJM RSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3Bl cmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZF UkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazsKK0lOU0VS VCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1syLDJdJywgJzIwMTgtMDEt MDInLCAnMjAxOC0wNC0wMScsICdbMSwxXScpOworLS0gc2hvdWxkIGZhaWw6CitBTFRFUiBUQUJM RSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3Bl cmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZF UkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBv biB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNv bnN0cmFpbnQgInJlZmVyZW5jaW5nX3BlcmlvZF9mayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lk LCB2YWxpZF9mcm9tLCB2YWxpZF90aWwpPShbMSwyKSwgVHVlIEphbiAwMiAwMDowMDowMCAyMDE4 LCBTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ3aXRo b3V0X292ZXJsYXBzX3Rlc3QiLgorLS0gb2theSBhZ2FpbjoKK0RFTEVURSBGUk9NIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0OworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlB REQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7 CistLQorLS0gdGVzdCBwZ19nZXRfY29uc3RyYWludGRlZgorLS0KK1NFTEVDVCBwZ19nZXRfY29u c3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3JlZmVy ZW5jaW5nX3BlcmlvZF9mayc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkgUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBz X3Rlc3QoaWQsIFBFUklPRCB2YWxpZF9hdCkKKygxIHJvdykKKworLS0KKy0tIHRlc3QgRksgY2hp bGQgaW5zZXJ0cworLS0KK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVF UyAoJ1sxLDFdJywgJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScsICdbMSwxXScpOworLS0gc2hv dWxkIGZhaWw6CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdb MiwyXScsICcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnLCAnWzEsMV0nKTsKK0VSUk9SOiAgaW5z ZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiIHZpb2xhdGVz IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInJlZmVyZW5jaW5nX3BlcmlvZF9mayIKK0RFVEFJTDog IEtleSAocGFyZW50X2lkLCB2YWxpZF9mcm9tLCB2YWxpZF90aWwpPShbMSwyKSwgVHVlIEphbiAw MiAwMDowMDowMCAyMDE4LCBTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgpIGlzIG5vdCBwcmVzZW50 IGluIHRhYmxlICJ3aXRob3V0X292ZXJsYXBzX3Rlc3QiLgorLS0gbm93IGl0IHNob3VsZCB3b3Jr OgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxLDFdJywgdHNy YW5nZSgnMjAxOC0wMi0wMycsICcyMDE4LTAzLTAzJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNp bmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzIsMl0nLCAnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAx JywgJ1sxLDFdJyk7CistLQorLS0gdGVzdCBGSyBjaGlsZCB1cGRhdGVzCistLQorVVBEQVRFIHJl ZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFNFVCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDInLCB2YWxp ZF90aWwgPSAnMjAxOC0wMy0wMScgV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gc2hvdWxkIGZhaWw6 CitVUERBVEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxOC0w MS0wMicsIHZhbGlkX3RpbCA9ICcyMDE4LTA1LTAxJyBXSEVSRSBpZCA9ICdbMSwxXSc7CitFUlJP UjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IiB2 aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJyZWZlcmVuY2luZ19wZXJpb2RfZmsiCitE RVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfZnJvbSwgdmFsaWRfdGlsKT0oWzEsMiksIFR1 ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCwgVHVlIE1heSAwMSAwMDowMDowMCAyMDE4KSBpcyBub3Qg cHJlc2VudCBpbiB0YWJsZSAid2l0aG91dF9vdmVybGFwc190ZXN0Ii4KK1VQREFURSByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCBTRVQgcGFyZW50X2lkID0gJ1s4LDhdJyBXSEVSRSBpZCA9ICdbMSwx XSc7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJyZWZlcmVuY2luZ19wZXJp b2RfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfZnJvbSwgdmFsaWRfdGlsKT0o WzgsOSksIFR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCwgVGh1IE1hciAwMSAwMDowMDowMCAyMDE4 KSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAid2l0aG91dF9vdmVybGFwc190ZXN0Ii4KKy0tCist LSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIE5PIEFDVElPTgorLS0KKy0tIGEgUEsgdXBkYXRlIHRo YXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5T RVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBXSEVS RSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdo IHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitE RUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5T RVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFw c190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAx JykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzMsM10n LCAnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJywgJ1s1LDVdJyk7CitVUERBVEUgd2l0aG91dF9v dmVybGFwc190ZXN0IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0w My0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0w Mi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2Ug Ym90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywnMjAxOC0wMi0wMScp OworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ3aXRob3V0X292ZXJsYXBzX3Rl c3QiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInJlZmVyZW5jaW5nX3BlcmlvZF9m ayIgb24gdGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IgorREVUQUlMOiAgS2V5IChpZCwg dmFsaWRfYXQpPShbNSw2KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAx IDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJyZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29y ZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gcmVmZXJlbmNp bmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEn KQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdCBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gd2l0aG91 dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tCistLSB0ZXN0IEZLIHBhcmVu dCB1cGRhdGVzIFJFU1RSSUNUCistLQorQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rl c3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrOworQUxURVIgVEFCTEUg cmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJp b2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJF TkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CistLSBhIFBL IHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJl bmNlZDoKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK1VQREFURSB3aXRob3V0X292 ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAy LTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBl dmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdl IGlzbid0OgorREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1 LDVdJzsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAn MjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVF UyAoJ1szLDNdJywgJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcsICdbNSw1XScpOworVVBEQVRF IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAyLTAx JywgJzIwMTYtMDMtMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFu Z2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyB1cGRhdGUgdGhhdCBmYWls cyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190 ZXN0IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgIndpdGhvdXRf b3ZlcmxhcHNfdGVzdCIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAicmVmZXJlbmNp bmdfcGVyaW9kX2ZrIiBvbiB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiCitERVRBSUw6 ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFi bGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0Ii4KKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3Rp bmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6CitERUxFVEUgRlJP TSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgd2l0 aG91dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAn MjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHJl ZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUg RlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0KKy0tIHRl c3QgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCistLQorQUxURVIgVEFCTEUgcmVmZXJlbmNp bmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrOwor QUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZl cmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7CistLSBhIFBLIGRlbGV0ZSB0 aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lO U0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRz IGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFu Z2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUs NV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAx JywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBW QUxVRVMgKCdbMywzXScsICcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnLCAnWzUsNV0nKTsKK0RF TEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIGRl bGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK0RFTEVURSBGUk9N IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBk ZWxldGUgb24gdGFibGUgIndpdGhvdXRfb3ZlcmxhcHNfdGVzdCIgdmlvbGF0ZXMgZm9yZWlnbiBr ZXkgY29uc3RyYWludCAicmVmZXJlbmNpbmdfcGVyaW9kX2ZrIiBvbiB0YWJsZSAicmVmZXJlbmNp bmdfcGVyaW9kX3Rlc3QiCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBz dGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0Ii4KKy0t IHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxl dGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBp ZCA9ICdbMywzXSc7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpOworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCitBTFRFUiBU QUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2lu Z19wZXJpb2RfZms7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBD T05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAorCU9O IERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxV RVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVU RSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBL IGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVy ZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJs YXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0n LCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyByZWZl cmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMywzXScsICcyMDE4LTAxLTA1JywgJzIwMTgt MDEtMTAnLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4 LTAzLTAxJyk7CistLSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVm ZXJlbmNlZDoKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7 CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgIndpdGhvdXRfb3ZlcmxhcHNfdGVz dCIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAicmVmZXJlbmNpbmdfcGVyaW9kX2Zr IiBvbiB0YWJsZSAicmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QiCitERVRBSUw6ICBLZXkgKGlkLCB2 YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEg MDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0Ii4KKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3Jk IGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUgRlJPTSB3aXRob3V0X292 ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0KKy0tIHRlc3QgT04gVVBEQVRFL0RFTEVURSBv cHRpb25zCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCitJTlNFUlQgSU5U TyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVz dCBWQUxVRVMgKCdbNCw0XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzYsNl0nKTsK K0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJl ZmVyZW5jaW5nX3BlcmlvZF9maywKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2Rf ZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVO Q0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAorCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUg Q0FTQ0FERTsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScg V0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVz dCBXSEVSRSBpZCA9ICdbNCw0XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAg fCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgWzQsNSkgfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjAgfCBbNyw4KQorIFs0LDUpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgVHVlIEph biAwMSAwMDowMDowMCAyMDE5IHwgWzYsNykKKyBbNCw1KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAg MjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IFs2LDcpCisoMyByb3dzKQorCitVUERB VEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYs Nl0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdb NCw0XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRf dGlsICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzQsNSkgfCBUdWUg SmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBbNyw4KQor IFs0LDUpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgVHVlIEphbiAwMSAwMDowMDowMCAy MDE5IHwgWzcsOCkKKyBbNCw1KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4g MDEgMDA6MDA6MDAgMjAyMSB8IFs3LDgpCisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB3aXRob3V0 X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzE1LDE1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMg KCdbMTUsMTVdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzEwLDEwXScsICcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnLCAnWzE1LDE1XScpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBTRVQgaWQgPSAnWzE2LDE2XScgV0hFUkUgaWQgPSAnWzE1LDE1XScgQU5EIHZhbGlkX2F0 IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMTAsMTBdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlk X2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tCisgWzEwLDExKSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IFdl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFsxNiwxNykKKyBbMTAsMTEpIHwgV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIHwgWzE1LDE2KQorKDIgcm93 cykKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxV RVMgKCdbNSw1XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzgsOF0nKTsKK0RFTEVU RSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNU ICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CisgIGlk ICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAg fCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzUsNikgfCBNb24gSmFuIDAxIDAwOjAw OjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBbOCw5KQorIFs1LDYpIHwgV2Vk IEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIHwgWzgsOSkK KygyIHJvd3MpCisKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9 ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlk ID0gJ1s1LDVdJzsKKyBpZCB8IHZhbGlkX2Zyb20gfCB2YWxpZF90aWwgfCBwYXJlbnRfaWQgCist LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorKDAgcm93cykKKworSU5T RVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxNywxN10nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJs YXBzX3Rlc3QgVkFMVUVTICgnWzE3LDE3XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sx MSwxMV0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1sxNywxN10nKTsKK0RFTEVURSBG Uk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbMTcsMTddJyBBTkQgdmFsaWRf YXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sxMSwxMV0nOworICAgaWQgICAgfCAgICAgICAgdmFs aWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyBbMTEsMTIpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwg RnJpIEphbiAwMSAwMDowMDowMCAyMDIxIHwgWzE3LDE4KQorKDEgcm93KQorCistLSB0ZXN0IEZL IHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rl c3QgVkFMVUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbNiw2XScsICcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzksOV0nKTsKK0FMVEVSIFRBQkxFIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maywK KwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwkJRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdAorCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOworVVBEQVRFIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAx LTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5LDld JzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzYs Nl0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3Rp bCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs2LDcpIHwgVHVlIEph biAwMSAwMDowMDowMCAyMDE5IHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgCisgWzYsNykg fCBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBb OSwxMCkKKyBbNiw3KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6 MDA6MDAgMjAyMSB8IFs5LDEwKQorKDMgcm93cykKKworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAnWzksOV0nOworU0VMRUNUICogRlJP TSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNiw2XSc7CisgIGlkICAgfCAg ICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzYsNykgfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIw MTkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCAKKyBbNiw3KSB8IE1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IAorIFs2LDcpIHwgV2VkIEph biAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIHwgCisoMyByb3dz KQorCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzE4LDE4XScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTgsMThdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScs ICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFM VUVTICgnWzEyLDEyXScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzE4LDE4XScpOwor VVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgaWQgPSAnWzE5LDE5XScgV0hFUkUgaWQg PSAnWzE4LDE4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VM RUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMTIsMTJdJzsK KyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAg ICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEyLDEzKSB8IE1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IAorIFsxMiwx MykgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEg fCBbMTgsMTkpCisoMiByb3dzKQorCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxM CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzExLDExXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s3LDddJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScsICdbMTEsMTFdJyk7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJF IGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBX SEVSRSBpZCA9ICdbNyw3XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAg ICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzcsOCkgfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAgfCAKKyBbNyw4KSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IFR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAxOSB8IFsxMSwxMikKKyBbNyw4KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8 IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IFsxMSwxMikKKygzIHJvd3MpCisKK0RFTEVURSBG Uk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAq IEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzcsN10nOworICBpZCAg IHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwg cGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs3LDgpIHwgVHVlIEphbiAwMSAwMDowMDow MCAyMDE5IHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgCisgWzcsOCkgfCBNb24gSmFuIDAx IDAwOjAwOjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCAKKyBbNyw4KSB8IFdl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IAorKDMg cm93cykKKworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syMCwy MF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzIwLDIwXScsIHRzcmFuZ2UoJzIwMjAtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 IFZBTFVFUyAoJ1sxMywxM10nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1syMCwyMF0n KTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbMjAsMjBd JyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9N IHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sxMywxM10nOworICAgaWQgICAg fCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTMsMTQpIHwgTW9uIEphbiAwMSAwMDow MDowMCAyMDE4IHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgCisgWzEzLDE0KSB8IFdlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IFsyMCwyMSkK KygyIHJvd3MpCisKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKK0lOU0VS VCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbLTEsLTFdJywgdHNyYW5nZShu dWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgn WzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s4LDhdJywgJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScsICdbMTIsMTJdJyk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJp b2RfdGVzdAorICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywK KwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrLAorCUFERCBDT05TVFJBSU5U IHJlZmVyZW5jaW5nX3BlcmlvZF9maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0CisJCU9OIERFTEVU RSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CitVUERBVEUgd2l0aG91dF9vdmVy bGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcy MDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxF Q1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAg aWQgICB8ICAgICAgICB2YWxpZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAg ICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOCw5KSB8IFR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAxOSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFstMSwwKQorIFs4LDkpIHwg TW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IHwgWzEy LDEzKQorIFs4LDkpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDow MDowMCAyMDIxIHwgWzEyLDEzKQorKDMgcm93cykKKworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBG Uk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAgaWQgICB8 ICAgICAgICB2YWxpZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8IHBh cmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOCw5KSB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAxOSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFstMSwwKQorIFs4LDkpIHwgTW9uIEph biAwMSAwMDowMDowMCAyMDE4IHwgVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IHwgWy0xLDApCisg WzgsOSkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIw MjEgfCBbLTEsMCkKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBWQUxVRVMgKCdbMjIsMjJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykp OworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syMiwyMl0nLCB0 c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTQsMTRdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScsICdbMjIsMjJdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9 ICdbMjMsMjNdJyBXSEVSRSBpZCA9ICdbMjIsMjJdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEt MDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdI RVJFIGlkID0gJ1sxNCwxNF0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAg fCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyBbMTQsMTUpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIHwgWy0xLDApCisgWzE0LDE1KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8 IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IFsyMiwyMykKKygyIHJvd3MpCisKKy0tIHRlc3Qg RksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBWQUxVRVMgKCdbMTQsMTRdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzks OV0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1sxNCwxNF0nKTsKK0RFTEVURSBGUk9N IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzE0LDE0XSc7CitTRUxFQ1QgKiBG Uk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s5LDldJzsKKyAgIGlkICAg fCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs5LDEwKSB8IFR1ZSBKYW4gMDEgMDA6MDA6 MDAgMjAxOSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFstMSwwKQorIFs5LDEwKSB8IE1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IFsxNCwx NSkKKyBbOSwxMCkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAwOjAw OjAwIDIwMjEgfCBbMTQsMTUpCisoMyByb3dzKQorCitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJs YXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s5LDldJzsKKyAgIGlkICAgfCAgICAgICAgdmFsaWRf ZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLQorIFs5LDEwKSB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IFdlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCB8IFstMSwwKQorIFs5LDEwKSB8IE1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IFstMSwwKQorIFs5LDEwKSB8IFdl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IFstMSww KQorKDMgcm93cykKKworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAo J1syNCwyNF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQg SU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzI0LDI0XScsIHRzcmFuZ2UoJzIw MjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0IFZBTFVFUyAoJ1sxNSwxNV0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1sy NCwyNF0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdb MjQsMjRdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1Qg KiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sxNSwxNV0nOworICAg aWQgICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTUsMTYpIHwgTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgWy0xLDApCisgWzE1 LDE2KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAy MSB8IFsyNCwyNSkKKygyIHJvd3MpCisKKy0tCistLSB0ZXN0IEZPUkVJR04gS0VZLCBQRVJJT0Qg cmVmZXJlbmNlcyBQRVJJT0QKKy0tCitEUk9QIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBD QVNDQURFOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byBjb25zdHJhaW50IHJlZmVyZW5jaW5n X3BlcmlvZF9mayBvbiB0YWJsZSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorQ1JFQVRFIFRBQkxF IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gdGlt ZXN0YW1wLAorCXZhbGlkX3RpbCB0aW1lc3RhbXAsCisJUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFs aWRfZnJvbSwgdmFsaWRfdGlsKSwKKwlDT05TVFJBSU5UIHdpdGhvdXRfb3ZlcmxhcHNfcGsgUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRP IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMSwxXScsICcyMDE4LTAxLTAyJywgJzIw MTgtMDItMDMnKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdb MSwxXScsICcyMDE4LTAzLTAzJywgJzIwMTgtMDQtMDQnKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMiwyXScsICcyMDE4LTAxLTAxJywgJzIwMTgtMDEtMDUn KTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMywzXScsICcy MDE4LTAxLTAxJywgTlVMTCk7CistLSBDYW4ndCBjcmVhdGUgYSBGSyB3aXRoIGEgbWlzbWF0Y2hl ZCByYW5nZSB0eXBlCitDUkVBVEUgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QyICgKKwlp ZCBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSBpbnQ0LAorICB2YWxpZF90aWwgaW50NCwKKwlQRVJJ T0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCXBhcmVudF9pZCBpbnQ0 cmFuZ2UsCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfcGsyIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19w ZXJpb2RfZmsyIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVG RVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOwor RVJST1I6ICBmb3JlaWduIGtleSBjb25zdHJhaW50ICJyZWZlcmVuY2luZ19wZXJpb2RfZmsyIiBj YW5ub3QgYmUgaW1wbGVtZW50ZWQKK0RFVEFJTDogIEtleSBjb2x1bW5zICJ2YWxpZF9hdCIgYW5k ICJ2YWxpZF9hdCIgYXJlIG9mIGluY29tcGF0aWJsZSB0eXBlczogaW50NHJhbmdlIGFuZCB0c3Jh bmdlLgorLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZToKK0RST1Ag VEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Q7CitDUkVBVEUgVEFCTEUgcmVmZXJlbmNpbmdf cGVyaW9kX3Rlc3QgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIHRpbWVzdGFtcCwKKwl2 YWxpZF90aWwgdGltZXN0YW1wLAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZh bGlkX3RpbCksCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5n X3BlcmlvZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAor CUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKyk7 CitEUk9QIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0OworLS0gc2hvdWxkIGZhaWwgYmVj YXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQ1JFQVRFIFRBQkxFIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSB0aW1lc3Rh bXAsCisJdmFsaWRfdGlsIHRpbWVzdGFtcCwKKwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9m cm9tLCB2YWxpZF90aWwpLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCByZWZl cmVuY2luZ19wZXJpb2RfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mayBGT1JFSUdOIEtFWSAocGFy ZW50X2lkLCBQRVJJT0QgcGFyZW50X2lkKQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCAoaWQsIFBFUklPRCBpZCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHJlZmVyZW5jZWQt Y29sdW1ucyBsaXN0IG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlcworLS0KKy0tIHRlc3QgQUxU RVIgVEFCTEUgQUREIENPTlNUUkFJTlQKKy0tCitDUkVBVEUgVEFCTEUgcmVmZXJlbmNpbmdfcGVy aW9kX3Rlc3QgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIHRpbWVzdGFtcCwKKwl2YWxp ZF90aWwgdGltZXN0YW1wLAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlkX2Zyb20sIHZhbGlk X3RpbCksCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3Bl cmlvZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOwor QUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZl cmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgKGlkLCBQRVJJT0QgdmFsaWRf YXQpOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJ TlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrOworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVm ZXJlbmNlZCB0YWJsZToKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJQURE IENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0Owor LS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgor QUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZl cmVuY2luZ19wZXJpb2RfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBhcmVu dF9pZCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoaWQsIFBFUklPRCBpZCk7 CitFUlJPUjogIGZvcmVpZ24ga2V5IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qgbm90IGNv bnRhaW4gZHVwbGljYXRlcworLS0KKy0tIHRlc3Qgd2l0aCByb3dzIGFscmVhZHkKKy0tCitERUxF VEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazsKK0lO U0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxLDFdJywgJzIwMTgt MDEtMDInLCAnMjAxOC0wMi0wMScsICdbMSwxXScpOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdf cGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0 X292ZXJsYXBzX3Rlc3Q7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURS T1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZms7CitJTlNFUlQgSU5UTyByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMiwyXScsICcyMDE4LTAxLTAyJywgJzIwMTgtMDQt MDEnLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdf cGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0 X292ZXJsYXBzX3Rlc3Q7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJyZWZl cmVuY2luZ19wZXJpb2RfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfZnJvbSwg dmFsaWRfdGlsKT0oWzEsMiksIFR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCwgU3VuIEFwciAwMSAw MDowMDowMCAyMDE4KSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAid2l0aG91dF9vdmVybGFwc190 ZXN0Ii4KKy0tIG9rYXkgYWdhaW46CitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVz dDsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQg cmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0OworLS0KKy0tIHRlc3Qg cGdfZ2V0X2NvbnN0cmFpbnRkZWYKKy0tCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lk KSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICdyZWZlcmVuY2luZ19wZXJpb2Rf ZmsnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfY29uc3Ry YWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0KGlkLCBQRVJJ T0QgdmFsaWRfYXQpCisoMSByb3cpCisKKy0tCistLSB0ZXN0IEZLIGNoaWxkIGluc2VydHMKKy0t CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMSwxXScsICcy MDE4LTAxLTAyJywgJzIwMTgtMDItMDEnLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorSU5T RVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzIsMl0nLCAnMjAxOC0w MS0wMicsICcyMDE4LTA0LTAxJywgJ1sxLDFdJyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUg b24gdGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IiB2aW9sYXRlcyBmb3JlaWduIGtleSBj b25zdHJhaW50ICJyZWZlcmVuY2luZ19wZXJpb2RfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9p ZCwgdmFsaWRfZnJvbSwgdmFsaWRfdGlsKT0oWzEsMiksIFR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAx OCwgU3VuIEFwciAwMSAwMDowMDowMCAyMDE4KSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAid2l0 aG91dF9vdmVybGFwc190ZXN0Ii4KKy0tIG5vdyBpdCBzaG91bGQgd29yazoKK0lOU0VSVCBJTlRP IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMSwxXScsICcyMDE4LTAyLTAzJywgJzIw MTgtMDMtMDMnKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAo J1syLDJdJywgJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScsICdbMSwxXScpOworLS0KKy0tIHRl c3QgRksgY2hpbGQgdXBkYXRlcworLS0KK1VQREFURSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBT RVQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAyJywgdmFsaWRfdGlsID0gJzIwMTgtMDMtMDEnIFdI RVJFIGlkID0gJ1sxLDFdJzsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0IFNFVCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDInLCB2YWxpZF90aWwgPSAnMjAx OC0wNS0wMScgV0hFUkUgaWQgPSAnWzEsMV0nOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9u IHRhYmxlICJyZWZlcmVuY2luZ19wZXJpb2RfdGVzdCIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAicmVmZXJlbmNpbmdfcGVyaW9kX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQs IHZhbGlkX2Zyb20sIHZhbGlkX3RpbCk9KFsxLDIpLCBUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgs IFR1ZSBNYXkgMDEgMDA6MDA6MDAgMjAxOCkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgIndpdGhv dXRfb3ZlcmxhcHNfdGVzdCIuCitVUERBVEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgU0VUIHBh cmVudF9pZCA9ICdbOCw4XScgV0hFUkUgaWQgPSAnWzEsMV0nOworRVJST1I6ICBpbnNlcnQgb3Ig dXBkYXRlIG9uIHRhYmxlICJyZWZlcmVuY2luZ19wZXJpb2RfdGVzdCIgdmlvbGF0ZXMgZm9yZWln biBrZXkgY29uc3RyYWludCAicmVmZXJlbmNpbmdfcGVyaW9kX2ZrIgorREVUQUlMOiAgS2V5IChw YXJlbnRfaWQsIHZhbGlkX2Zyb20sIHZhbGlkX3RpbCk9KFs4LDkpLCBUdWUgSmFuIDAyIDAwOjAw OjAwIDIwMTgsIFRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCkgaXMgbm90IHByZXNlbnQgaW4gdGFi bGUgIndpdGhvdXRfb3ZlcmxhcHNfdGVzdCIuCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRl cyBOTyBBQ1RJT04KKy0tCistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhl IG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK1VQ REFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScs IHZhbGlkX3RpbCA9ICcyMDE2LTAyLTAxJyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVw ZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5j ZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBz X3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190 ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworSU5TRVJU IElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDItMDEn LCAnMjAxOC0wMy0wMScpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFM VUVTICgnWzMsM10nLCAnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJywgJ1s1LDVdJyk7CitVUERB VEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9mcm9tID0gJzIwMTYtMDItMDEnLCB2 YWxpZF90aWwgPSAnMjAxNi0wMy0wMScKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJv bSA9ICcyMDE4LTAyLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDMtMDEnOworLS0gYSBQSyB1 cGRhdGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgd2l0 aG91dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9mcm9tID0gJzIwMTYtMDEtMDEnLCB2YWxpZF90 aWwgPSAnMjAxNi0wMi0wMScKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcy MDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOworRVJST1I6ICB1cGRhdGUg b3IgZGVsZXRlIG9uIHRhYmxlICJ3aXRob3V0X292ZXJsYXBzX3Rlc3QiIHZpb2xhdGVzIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgInJlZmVyZW5jaW5nX3BlcmlvZF9mayIgb24gdGFibGUgInJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0IgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfZnJvbSwgdmFsaWRf dGlsKT0oWzUsNiksIE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCwgVGh1IEZlYiAwMSAwMDowMDow MCAyMDE4KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0Ii4KKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUg c2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2Rf dGVzdCBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNF VCB2YWxpZF9mcm9tID0gJzIwMTYtMDEtMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMi0wMScKK1dI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRf dGlsID0gJzIwMTgtMDItMDEnOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gd2l0 aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tCistLSB0ZXN0IEZLIHBh cmVudCB1cGRhdGVzIFJFU1RSSUNUCistLQorQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrOworQUxURVIgVEFC TEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19w ZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVG RVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CistLSBh IFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVm ZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1 XScsICcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK1VQREFURSB3aXRob3V0X292ZXJsYXBz X3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAy LTAxJyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2 ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2Ug aXNuJ3Q6CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUs NV0nOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywg JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFw c190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworSU5T RVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzMsM10nLCAnMjAxOC0w MS0wNScsICcyMDE4LTAxLTEwJywgJ1s1LDVdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190 ZXN0IFNFVCB2YWxpZF9mcm9tID0gJzIwMTYtMDItMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMy0w MScKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAyLTAxJyBBTkQg dmFsaWRfdGlsID0gJzIwMTgtMDMtMDEnOworLS0gYSBQSyB1cGRhdGUgdGhhdCBmYWlscyBiZWNh dXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNF VCB2YWxpZF9mcm9tID0gJzIwMTYtMDEtMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMi0wMScKK1dI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRf dGlsID0gJzIwMTgtMDItMDEnOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ3 aXRob3V0X292ZXJsYXBzX3Rlc3QiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInJl ZmVyZW5jaW5nX3BlcmlvZF9mayIgb24gdGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0Igor REVUQUlMOiAgS2V5IChpZCwgdmFsaWRfZnJvbSwgdmFsaWRfdGlsKT0oWzUsNiksIE1vbiBKYW4g MDEgMDA6MDA6MDAgMjAxOCwgVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4KSBpcyBzdGlsbCByZWZl cmVuY2VkIGZyb20gdGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0Ii4KKy0tIHRoZW4gZGVs ZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2Vl ZHM6CitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMywz XSc7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9mcm9tID0gJzIwMTYt MDEtMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMi0wMScKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOwor LS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBw YXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdI RVJFIGlkID0gJ1s1LDVdJzsKKy0tCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIE5PIEFDVElP TgorLS0KK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJRFJPUCBDT05TVFJB SU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlHTiBL RVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVy bGFwc190ZXN0OworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1l cmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rl c3QgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitERUxFVEUg RlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyBk ZWxldGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVu Y2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFw c190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworSU5T RVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Qg VkFMVUVTICgnWzMsM10nLCAnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJywgJ1s1LDVdJyk7CitE RUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2 YWxpZF9mcm9tID0gJzIwMTgtMDItMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMy0wMSc7Cist LSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK0RF TEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2Zyb20gPSAnMjAxOC0wMS0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAyLTAxJzsKK0VS Uk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAid2l0aG91dF9vdmVybGFwc190ZXN0IiB2 aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJyZWZlcmVuY2luZ19wZXJpb2RfZmsiIG9u IHRhYmxlICJyZWZlcmVuY2luZ19wZXJpb2RfdGVzdCIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlk X2Zyb20sIHZhbGlkX3RpbCk9KFs1LDYpLCBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgsIFRodSBG ZWIgMDEgMDA6MDA6MDAgMjAxOCkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJyZWZl cmVuY2luZ19wZXJpb2RfdGVzdCIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJl Y29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gd2l0aG91 dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4 LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOworLS0KKy0tIHRlc3QgRksgcGFy ZW50IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2Rf dGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZms7CitBTFRFUiBUQUJM RSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3Bl cmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZF UkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAorCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VS VCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVS RSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdo IHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJ TlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0w MS0wMScsICcyMDE4LTAyLTAxJyk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg VkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CitJTlNFUlQgSU5U TyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMywzXScsICcyMDE4LTAxLTA1Jywg JzIwMTgtMDEtMTAnLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2Zyb20gPSAnMjAxOC0wMi0wMScgQU5EIHZh bGlkX3RpbCA9ICcyMDE4LTAzLTAxJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVz ZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0 IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFs aWRfdGlsID0gJzIwMTgtMDItMDEnOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxl ICJ3aXRob3V0X292ZXJsYXBzX3Rlc3QiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg InJlZmVyZW5jaW5nX3BlcmlvZF9mayIgb24gdGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 IgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfZnJvbSwgdmFsaWRfdGlsKT0oWzUsNiksIE1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCwgVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4KSBpcyBzdGlsbCBy ZWZlcmVuY2VkIGZyb20gdGFibGUgInJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0Ii4KKy0tIHRoZW4g ZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3Vj Y2VlZHM6CitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdb MywzXSc7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUs NV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0w Mi0wMSc7CistLQorLS0gdGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKKy0tCistLSB0ZXN0 IEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBWQUxVRVMgKCdbNiw2XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VS VCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s0LDRdJywgJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScsICdbNiw2XScpOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVy aW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrLAorCUFERCBD T05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lk LCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0CisJ CU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworVVBEQVRFIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAn MjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1Qg KiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s0LDRdJzsKKyAgaWQg ICB8ICAgICAgICB2YWxpZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8 IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNCw1KSB8IFR1ZSBKYW4gMDEgMDA6MDA6 MDAgMjAxOSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFs3LDgpCisgWzQsNSkgfCBNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBbNiw3KQor IFs0LDUpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAy MDIxIHwgWzYsNykKKygzIHJvd3MpCisKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VU IGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s0LDRdJzsKKyAgaWQgICB8ICAgICAgICB2YWxp ZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8IHBhcmVudF9pZCAKKy0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0KKyBbNCw1KSB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IFdlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCB8IFs3LDgpCisgWzQsNSkgfCBNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBbNyw4KQorIFs0LDUpIHwgV2VkIEph biAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIHwgWzcsOCkKKygz IHJvd3MpCisKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTUs MTVdJywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9v dmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxNSwxNV0nLCAnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAx Jyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTAsMTBd JywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScsICdbMTUsMTVdJyk7CitVUERBVEUgd2l0aG91 dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdbMTYsMTZdJyBXSEVSRSBpZCA9ICdbMTUsMTVdJyBB TkQgdHNyYW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0 YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdb MTAsMTBdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZh bGlkX3RpbCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEwLDEx KSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8 IFsxNiwxNykKKyBbMTAsMTEpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAw MSAwMDowMDowMCAyMDIxIHwgWzE1LDE2KQorKDIgcm93cykKKworLS0gdGVzdCBGSyBwYXJlbnQg ZGVsZXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVT ICgnWzgsOF0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyByZWZl cmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hF UkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBX SEVSRSBpZCA9ICdbNSw1XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAg ICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzUsNikgfCBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIw MTkgfCBbOCw5KQorIFs1LDYpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAw MSAwMDowMDowMCAyMDIxIHwgWzgsOSkKKygyIHJvd3MpCisKK0RFTEVURSBGUk9NIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJzsKKyBpZCB8IHZhbGlkX2Zyb20gfCB2 YWxpZF90aWwgfCBwYXJlbnRfaWQgCistLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorKDAgcm93cykKKworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZB TFVFUyAoJ1sxNywxN10nLCAnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJyk7CitJTlNFUlQgSU5U TyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzE3LDE3XScsICcyMDIwLTAxLTAxJywg JzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVF UyAoJ1sxMSwxMV0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1sxNywxN10nKTsKK0RF TEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbMTcsMTddJyBBTkQg dHNyYW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1w OworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMTEs MTFdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlk X3RpbCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzExLDEyKSB8 IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IFsx NywxOCkKKygxIHJvdykKKworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorSU5T RVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s5LDldJywgJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Qg VkFMVUVTICgnWzYsNl0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1s5LDldJyk7CitB TFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZl cmVuY2luZ19wZXJpb2RfZmssCisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2Zr CisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNF UyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBT RVQgTlVMTDsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbMTAsMTBd JyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90 ZXN0IFdIRVJFIGlkID0gJ1s2LDZdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9mcm9tICAgICAg ICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyBbNiw3KSB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IFdlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCB8IAorIFs2LDcpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgVHVlIEphbiAw MSAwMDowMDowMCAyMDE5IHwgWzksMTApCisgWzYsNykgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEgfCBbOSwxMCkKKygzIHJvd3MpCisKK1VQREFU RSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5 LDldJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAn WzYsNl0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlk X3RpbCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs2LDcpIHwgVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgCisgWzYs NykgfCBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkg fCAKKyBbNiw3KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSB8IAorKDMgcm93cykKKworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0 IFZBTFVFUyAoJ1sxOCwxOF0nLCAnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJyk7CitJTlNFUlQg SU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzE4LDE4XScsICcyMDIwLTAxLTAx JywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZB TFVFUyAoJ1sxMiwxMl0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1sxOCwxOF0nKTsK K1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlkID0gJ1sxOSwxOV0nIFdIRVJFIGlk ID0gJ1sxOCwxOF0nIEFORCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkgQD4gJzIwMTkt MDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 IFdIRVJFIGlkID0gJ1sxMiwxMl0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAg ICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyBbMTIsMTMpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIHwgCisgWzEyLDEzKSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZy aSBKYW4gMDEgMDA6MDA6MDAgMjAyMSB8IFsxOCwxOSkKKygyIHJvd3MpCisKKy0tIHRlc3QgRksg cGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBWQUxVRVMgKCdbMTEsMTFdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJU IElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzcsN10nLCAnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJywgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAy MC0wMS0wMScgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s3LDddJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9m cm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0KKyBbNyw4KSB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IFdlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCB8IAorIFs3LDgpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwg VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IHwgWzExLDEyKQorIFs3LDgpIHwgV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIHwgWzExLDEyKQorKDMgcm93 cykKKworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1sxMSwx MV0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdb Nyw3XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRf dGlsICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzcsOCkgfCBUdWUg SmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCAKKyBbNyw4 KSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8 IAorIFs3LDgpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDow MCAyMDIxIHwgCisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg VkFMVUVTICgnWzIwLDIwXScsICcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKTsKK0lOU0VSVCBJ TlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMjAsMjBdJywgJzIwMjAtMDEtMDEn LCAnMjAyMS0wMS0wMScpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFM VUVTICgnWzEzLDEzXScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzIwLDIwXScpOwor REVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1syMCwyMF0nIEFO RCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3Rh bXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sx MywxM10nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFs aWRfdGlsICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTMsMTQp IHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwg CisgWzEzLDE0KSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IEZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSB8IFsyMCwyMSkKKygyIHJvd3MpCisKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMg U0VUIERFRkFVTFQKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdb LTEsLTFdJywgbnVsbCwgbnVsbCk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg VkFMVUVTICgnWzEyLDEyXScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJ TlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s4LDhdJywgJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScsICdbMTIsMTJdJyk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJp b2RfdGVzdAorICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywK KwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrLAorCUFERCBDT05TVFJBSU5U IHJlZmVyZW5jaW5nX3BlcmlvZF9maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0CisJCU9OIERFTEVU RSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CitVUERBVEUgd2l0aG91dF9vdmVy bGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcy MDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxF Q1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAg aWQgICB8ICAgICAgICB2YWxpZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAg ICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOCw5KSB8IFR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAxOSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFstMSwwKQorIFs4LDkpIHwg TW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IHwgWzEy LDEzKQorIFs4LDkpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDow MDowMCAyMDIxIHwgWzEyLDEzKQorKDMgcm93cykKKworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBG Uk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAgaWQgICB8 ICAgICAgICB2YWxpZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAgICB8IHBh cmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOCw5KSB8IFR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAxOSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IFstMSwwKQorIFs4LDkpIHwgTW9uIEph biAwMSAwMDowMDowMCAyMDE4IHwgVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IHwgWy0xLDApCisg WzgsOSkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIw MjEgfCBbLTEsMCkKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBWQUxVRVMgKCdbMjIsMjJdJywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOworSU5TRVJU IElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syMiwyMl0nLCAnMjAyMC0wMS0w MScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBW QUxVRVMgKCdbMTQsMTRdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScsICdbMjIsMjJdJyk7 CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdbMjMsMjNdJyBXSEVSRSBp ZCA9ICdbMjIsMjJdJyBBTkQgdHNyYW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ICcyMDE5 LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVz dCBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAg ICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tCisgWzE0LDE1KSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IFdlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCB8IFstMSwwKQorIFsxNCwxNSkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEgfCBbMjIsMjMpCisoMiByb3dzKQorCistLSB0 ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5UTyB3aXRob3V0X292 ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzE0LDE0XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s5LDldJywg JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScsICdbMTQsMTRdJyk7CitERUxFVEUgRlJPTSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0w MScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbOSw5XSc7CisgICBpZCAgIHwgICAg ICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwgcGFyZW50 X2lkIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOSwxMCkgfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIw MTkgfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBbLTEsMCkKKyBbOSwxMCkgfCBNb24gSmFu IDAxIDAwOjAwOjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBbMTQsMTUpCisg WzksMTApIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAy MDIxIHwgWzE0LDE1KQorKDMgcm93cykKKworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190 ZXN0IFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJp b2RfdGVzdCBXSEVSRSBpZCA9ICdbOSw5XSc7CisgICBpZCAgIHwgICAgICAgIHZhbGlkX2Zyb20g ICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0KKyBbOSwxMCkgfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAgfCBbLTEsMCkKKyBbOSwxMCkgfCBNb24gSmFuIDAxIDAwOjAwOjAwIDIw MTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBbLTEsMCkKKyBbOSwxMCkgfCBXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEgfCBbLTEsMCkKKygz IHJvd3MpCisKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMjQs MjRdJywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9v dmVybGFwc190ZXN0IFZBTFVFUyAoJ1syNCwyNF0nLCAnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAx Jyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTUsMTVd JywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScsICdbMjQsMjRdJyk7CitERUxFVEUgRlJPTSB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzI0LDI0XScgQU5EIHRzcmFuZ2UodmFs aWRfZnJvbSwgdmFsaWRfdGlsKSBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAq IEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzE1LDE1XSc7CisgICBp ZCAgICB8ICAgICAgICB2YWxpZF9mcm9tICAgICAgICB8ICAgICAgICB2YWxpZF90aWwgICAgICAg ICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxNSwxNikgfCBNb24gSmFuIDAx IDAwOjAwOjAwIDIwMTggfCBXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAgfCBbLTEsMCkKKyBbMTUs MTYpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgRnJpIEphbiAwMSAwMDowMDowMCAyMDIx IHwgWzI0LDI1KQorKDIgcm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv Zm9yX3BvcnRpb25fb2Yuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yu c3FsCmluZGV4IDNiNTc1NWJhMDAuLmI3NzNhYjdhMDggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9m b3JfcG9ydGlvbl9vZi5zcWwKQEAgLTQ4LDYgKzQ4LDEyIEBAIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIE1BWFZBTFVFCiBTRVQgdmFsaWRfYXQgPSAnWzE5OTAt MDEtMDEsMTk5OS0wMS0wMSknCiBXSEVSRSBpZCA9ICdbNSw2KSc7CiAKKy0tIFRoZSB3cm9uZyB0 eXBlIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAxIFRPIDQKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMyw0KSc7 CisKIC0tIFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIHJldmVyc2VkIGZhaWxzCiBVUERBVEUgZm9y X3BvcnRpb25fb2ZfdGVzdAogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0w MScgVE8gJzIwMTgtMDEtMDEnCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRo b3V0X292ZXJsYXBzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMu c3FsCmluZGV4IGU2NGVjNjlmMGIuLjVhZGUxYjgwNzkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBAIC0yOTMsMyArMjkzLDE0MDUgQEAgQUxURVIgVEFCTEUg d2l0aG91dF9vdmVybGFwc190ZXN0MiBBTFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSB0c3R6cmFu Z2UgVVNJTkcgdHMKIEFMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgUkVOQU1FIENP TFVNTiB2YWxpZF9hdCBUTyB2YWxpZF90aHJ1OwogQUxURVIgVEFCTEUgd2l0aG91dF9vdmVybGFw c190ZXN0MiBEUk9QIENPTFVNTiB2YWxpZF90aHJ1OwogRFJPUCBUQUJMRSB3aXRob3V0X292ZXJs YXBzX3Rlc3QyOworCistLQorLS0gdGVzdCBGSyBkZXBlbmRlbmNpZXMKKy0tCisKKy0tIGNhbid0 IGRyb3AgYSByYW5nZSByZWZlcmVuY2VkIGJ5IGFuIEZLLCB1bmxlc3Mgd2l0aCBDQVNDQURFCitD UkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiAoCisJaWQgaW50NHJhbmdlLAorCXZh bGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB3aXRob3V0X292ZXJsYXBzMl9wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQ1JFQVRFIFRBQkxFIHJl ZmVyZW5jaW5nX3BlcmlvZF90ZXN0MiAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFu Z2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3Blcmlv ZDJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05T VFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZDJfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIgKGlkLCBQ RVJJT0QgdmFsaWRfYXQpCispOworQUxURVIgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0MiBE Uk9QIENPTFVNTiB2YWxpZF9hdDsKK0FMVEVSIFRBQkxFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDIg RFJPUCBDT0xVTU4gdmFsaWRfYXQgQ0FTQ0FERTsKK0RST1AgVEFCTEUgcmVmZXJlbmNpbmdfcGVy aW9kX3Rlc3QyOworRFJPUCBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyOworCistLSBjYW4n dCBkcm9wIGEgUEVSSU9EIHJlZmVyZW5jZWQgYnkgYW4gRkssIHVubGVzcyB3aXRoIENBU0NBREUK K0NSRUFURSBUQUJMRSB3aXRob3V0X292ZXJsYXBzX3Rlc3QyICgKKwlpZCBpbnQ0cmFuZ2UsCisJ dmFsaWRfZnJvbSB0aW1lc3RhbXAsCisJdmFsaWRfdGlsIHRpbWVzdGFtcCwKKwlQRVJJT0QgRk9S IHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCUNPTlNUUkFJTlQgd2l0aG91dF9v dmVybGFwczJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQor KTsKK0NSRUFURSBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDIgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlO VCByZWZlcmVuY2luZ19wZXJpb2QyX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2QyX2ZrIEZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292 ZXJsYXBzX3Rlc3QyIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK0FMVEVSIFRBQkxFIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdDIgRFJPUCBQRVJJT0QgRk9SIHZhbGlkX2F0OworQUxURVIgVEFCTEUg d2l0aG91dF9vdmVybGFwc190ZXN0MiBEUk9QIFBFUklPRCBGT1IgdmFsaWRfYXQgQ0FTQ0FERTsK K0RST1AgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QyOworRFJPUCBUQUJMRSB3aXRob3V0 X292ZXJsYXBzX3Rlc3QyOworCistLQorLS0gdGVzdCBGT1JFSUdOIEtFWSwgcmFuZ2UgcmVmZXJl bmNlcyByYW5nZQorLS0KKworLS0gQ2FuJ3QgY3JlYXRlIGEgRksgd2l0aCBhIG1pc21hdGNoZWQg cmFuZ2UgdHlwZQorQ1JFQVRFIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0MiAoCisJaWQg aW50NHJhbmdlLAorCXZhbGlkX2F0IGludDRyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAor CUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX3BrMiBQUklNQVJZIEtFWSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2Zr MiBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMg d2l0aG91dF9vdmVybGFwc190ZXN0IChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKKworQ1JFQVRF IFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNp bmdfcGVyaW9kX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyks CisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAo aWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitEUk9QIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90 ZXN0OworCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQ1JF QVRFIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFs aWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgcmVmZXJl bmNpbmdfcGVyaW9kX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UyksCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsgRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dAorKTsKK0RST1AgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Q7CisKKy0tIHNob3VsZCBm YWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0NSRUFURSBUQUJM RSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRz cmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3Bl cmlvZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNP TlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCBwYXJlbnRfaWQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0IChpZCwg UEVSSU9EIGlkKQorKTsKKworLS0KKy0tIHRlc3QgQUxURVIgVEFCTEUgQUREIENPTlNUUkFJTlQK Ky0tCisKK0NSRUFURSBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCAoCisJaWQgaW50NHJh bmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJB SU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlB REQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg KGlkLCBQRVJJT0QgdmFsaWRfYXQpOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rl c3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrOworLS0gd2l0aCBpbmZl cnJlZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZToKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9S RUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91 dF9vdmVybGFwc190ZXN0OworCistLSBzaG91bGQgZmFpbCBiZWNhdXNlIG9mIGR1cGxpY2F0ZSBy ZWZlcmVuY2VkIGNvbHVtbnM6CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAor CUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazIKKwlGT1JFSUdOIEtFWSAocGFy ZW50X2lkLCBQRVJJT0QgcGFyZW50X2lkKQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190 ZXN0IChpZCwgUEVSSU9EIGlkKTsKKworLS0KKy0tIHRlc3Qgd2l0aCByb3dzIGFscmVhZHkKKy0t CisKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0OworQUxURVIgVEFCTEUgcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9k X2ZrOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzEsMV0n LCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwgJ1sxLDFdJyk7CitBTFRFUiBU QUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5n X3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlS RUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazsKK0lO U0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1syLDJdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJyksICdbMSwxXScpOworLS0gc2hvdWxkIGZhaWw6 CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJl ZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDsKKy0tIG9rYXkgYWdhaW46 CitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDsKK0FMVEVSIFRBQkxFIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2Zr CisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMg d2l0aG91dF9vdmVybGFwc190ZXN0OworCistLQorLS0gdGVzdCBwZ19nZXRfY29uc3RyYWludGRl ZgorLS0KKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJh aW50IFdIRVJFIGNvbm5hbWUgPSAncmVmZXJlbmNpbmdfcGVyaW9kX2ZrJzsKKworLS0KKy0tIHRl c3QgRksgY2hpbGQgaW5zZXJ0cworLS0KKworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEn KSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0IFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA0 LTAxJyksICdbMSwxXScpOworLS0gbm93IGl0IHNob3VsZCB3b3JrOgorSU5TRVJUIElOVE8gd2l0 aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMi0wMycs ICcyMDE4LTAzLTAzJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFM VUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFd Jyk7CisKKy0tCistLSB0ZXN0IEZLIGNoaWxkIHVwZGF0ZXMKKy0tCisKK1VQREFURSByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIw MTgtMDMtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBzaG91bGQgZmFpbDoKK1VQREFURSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAy JywgJzIwMTgtMDUtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUgcmVmZXJlbmNpbmdf cGVyaW9kX3Rlc3QgU0VUIHBhcmVudF9pZCA9ICdbOCw4XScgV0hFUkUgaWQgPSAnWzEsMV0nOwor CistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04KKy0tCisKKy0tIGEgUEsg dXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVu Y2VkOgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDIt MDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2 ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2Ug aXNuJ3Q6CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUs NV0nOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91 dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcy MDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVT ICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7 CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0 ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0ZSB0 aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB3aXRob3V0X292 ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAy LTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVj b3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgd2l0aG91dF9vdmVy bGFwc190ZXN0IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0w MScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0IFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworCistLQorLS0gdGVzdCBGSyBw YXJlbnQgdXBkYXRlcyBSRVNUUklDVAorLS0KKworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVy aW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrOworQUxURVIg VEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2lu Z19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJ UkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7Cist LSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3Qg cmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdb NSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK1VQREFURSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcy MDE2LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNj ZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhl IHJhbmdlIGlzbid0OgorREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlk ID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdb NSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRP IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 IFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdb NSw1XScpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2 YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyB1 cGRhdGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgd2l0 aG91dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAn MjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5n IEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00g cmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIw MTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSByZWZl cmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZS T00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tCistLSB0ZXN0 IEZLIHBhcmVudCBkZWxldGVzIE5PIEFDVElPTgorLS0KK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazsKK0FM VEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJl bmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0 KQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0OworLS0gYSBQSyBkZWxldGUgdGhh dCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNF UlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBz X3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBl dmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdl IGlzbid0OgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gd2l0 aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScs ICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFM VUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVd Jyk7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0g YSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitERUxF VEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gdGhlbiBkZWxl dGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVk czoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1szLDNd JzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScg QU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CisKKy0t CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCistLQorCitBTFRFUiBUQUJMRSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJp b2RfZms7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJB SU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAorCU9OIERFTEVU RSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdb NSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBGUk9N IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0 ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQg YmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rl c3QgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7 CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCB0c3Jh bmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAx OC0wMS0xMCcpLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcy MDE4LTAzLTAxJyk7CistLSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUg cmVmZXJlbmNlZDoKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx Jyk7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUg UEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Qg V0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MTgtMDItMDEnKTsKKworLS0KKy0tIHRlc3QgT04gVVBEQVRFL0RFTEVURSBvcHRpb25zCistLQor CistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAo J1s0LDRdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwor QUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVm ZXJlbmNpbmdfcGVyaW9kX2ZrLAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9m aworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5D RVMgd2l0aG91dF9vdmVybGFwc190ZXN0CisJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBD QVNDQURFOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBX SEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 IFdIRVJFIGlkID0gJ1s0LDRdJzsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlk ID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s0LDRdJzsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBWQUxVRVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIw LTAxLTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sx NSwxNV0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTAsMTBdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTUsMTVdJyk7CitVUERBVEUgd2l0aG91dF9vdmVy bGFwc190ZXN0IFNFVCBpZCA9ICdbMTYsMTZdJyBXSEVSRSBpZCA9ICdbMTUsMTVdJyBBTkQgdmFs aWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sxMCwxMF0nOworCistLSB0ZXN0IEZLIHBhcmVu dCBkZWxldGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxV RVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00gd2l0aG91 dF9vdmVybGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEn IFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTcsMTddJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVF UyAoJ1sxNywxN10nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTEsMTFdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTcsMTddJyk7CitERUxFVEUgRlJPTSB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzE3LDE3XScgQU5EIHZhbGlkX2F0IEA+ ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJp b2RfdGVzdCBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKKworCistLSB0ZXN0IEZLIHBhcmVudCB1cGRh dGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgn WzksOV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzksOV0nKTsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maywKKwlB REQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dAorCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOworVVBEQVRFIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAx JyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsK K1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzYsNl0n OworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUg aWQgPSAnWzksOV0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVS RSBpZCA9ICdbNiw2XSc7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVT ICgnWzE4LDE4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTgsMThdJywgdHNyYW5nZSgn MjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVy aW9kX3Rlc3QgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpLCAnWzE4LDE4XScpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgaWQg PSAnWzE5LDE5XScgV0hFUkUgaWQgPSAnWzE4LDE4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAx LTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBX SEVSRSBpZCA9ICdbMTIsMTJdJzsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVM TAorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxMSwxMV0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbNyw3XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzExLDExXScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190 ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAx LTAxJyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVy aW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzcsN10nOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFw c190ZXN0IFdIRVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19w ZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNyw3XSc7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJs YXBzX3Rlc3QgVkFMVUVTICgnWzIwLDIwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMjAs MjBdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8g cmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzEzLDEzXScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzIwLDIwXScpOworREVMRVRFIEZST00gd2l0aG91dF9v dmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1syMCwyMF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0w MS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Qg V0hFUkUgaWQgPSAnWzEzLDEzXSc7CisKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERF RkFVTFQKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbLTEsLTFd JywgdHNyYW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rl c3QgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s4LDhdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTIsMTJdJyk7CitBTFRFUiBU QUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNF VCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9k X2ZrLAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCQlGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVy bGFwc190ZXN0CisJCU9OIERFTEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7 CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUg aWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdI RVJFIGlkID0gJ1s4LDhdJzsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlkID0g J1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbOCw4XSc7CitJTlNFUlQgSU5UTyB3aXRob3V0X292 ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzIyLDIyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdb MjIsMjJdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElO VE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzE0LDE0XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzIyLDIyXScpOworVVBEQVRFIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBTRVQgaWQgPSAnWzIzLDIzXScgV0hFUkUgaWQgPSAnWzIyLDIyXScgQU5EIHZh bGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVu Y2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKKworLS0gdGVzdCBGSyBwYXJl bnQgZGVsZXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0 IFZBTFVFUyAoJ1sxNCwxNF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbOSw5XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE0LDE0XScpOworREVMRVRFIEZS T00gd2l0aG91dF9vdmVybGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAq IEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzksOV0nOworREVMRVRF IEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNU ICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbOSw5XSc7CitJTlNF UlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzI0LDI0XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBWQUxVRVMgKCdbMjQsMjRdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAx LTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzE1 LDE1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzI0LDI0XScpOwor REVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1syNCwyNF0nIEFO RCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzE1LDE1XSc7CisKKworCistLQorLS0g dGVzdCBGT1JFSUdOIEtFWSwgcmFuZ2UgcmVmZXJlbmNlcyBQRVJJT0QKKy0tCisKK0RST1AgVEFC TEUgd2l0aG91dF9vdmVybGFwc190ZXN0IENBU0NBREU7CitDUkVBVEUgVEFCTEUgd2l0aG91dF9v dmVybGFwc190ZXN0ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSB0aW1lc3RhbXAsCisJ dmFsaWRfdGlsIHRpbWVzdGFtcCwKKwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2 YWxpZF90aWwpLAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVybGFwc19wayBQUklNQVJZIEtFWSAo aWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gd2l0aG91dF9v dmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxLDFdJywgJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMycp OworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxLDFdJywgJzIw MTgtMDMtMDMnLCAnMjAxOC0wNC0wNCcpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190 ZXN0IFZBTFVFUyAoJ1syLDJdJywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpOworSU5TRVJU IElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1szLDNdJywgJzIwMTgtMDEtMDEn LCBOVUxMKTsKKworLS0gQ2FuJ3QgY3JlYXRlIGEgRksgd2l0aCBhIG1pc21hdGNoZWQgcmFuZ2Ug dHlwZQorQ1JFQVRFIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0MiAoCisJaWQgaW50NHJh bmdlLAorCXZhbGlkX2F0IGludDRyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNU UkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX3BrMiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrMiBGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91 dF9vdmVybGFwc190ZXN0IChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKKworLS0gd2l0aCBpbmZl cnJlZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZToKK0RST1AgVEFCTEUgcmVmZXJlbmNpbmdf cGVyaW9kX3Rlc3Q7CitDUkVBVEUgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgKAorCWlk IGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJ Q09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mayBG T1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0 aG91dF9vdmVybGFwc190ZXN0CispOworRFJPUCBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVz dDsKKworLS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1 bW5zOgorQ1JFQVRFIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0ICgKKwlpZCBpbnQ0cmFu Z2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJ TlQgcmVmZXJlbmNpbmdfcGVyaW9kX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsgRk9SRUlHTiBL RVkgKHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292 ZXJsYXBzX3Rlc3QgKGlkLCBQRVJJT0QgaWQpCispOworCistLQorLS0gdGVzdCBBTFRFUiBUQUJM RSBBREQgQ09OU1RSQUlOVAorLS0KKworQ1JFQVRFIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90 ZXN0ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50 NHJhbmdlLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZP UkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCAoaWQsIFBFUklPRCB2YWxpZF9hdCk7CitBTFRFUiBUQUJMRSByZWZl cmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2Rf Zms7CistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQUxURVIg VEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2lu Z19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJ UkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7CisKKy0tIHNob3VsZCBmYWlsIGJlY2F1 c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0FMVEVSIFRBQkxFIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrMgor CUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJUkVGRVJFTkNFUyB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgKGlkLCBQRVJJT0QgaWQpOworCistLQorLS0gdGVzdCB3aXRo IHJvd3MgYWxyZWFkeQorLS0KKworREVMRVRFIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Q7 CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCBy ZWZlcmVuY2luZ19wZXJpb2RfZms7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVz dCBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAn WzEsMV0nKTsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNU UkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0OworQUxURVIg VEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNp bmdfcGVyaW9kX2ZrOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVT ICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7 CistLSBzaG91bGQgZmFpbDoKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJ QUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0 OworLS0gb2theSBhZ2FpbjoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0Owor QUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZl cmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7CisKKy0tCistLSB0ZXN0IHBn X2dldF9jb25zdHJhaW50ZGVmCistLQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lk KSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICdyZWZlcmVuY2luZ19wZXJpb2Rf ZmsnOworCistLQorLS0gdGVzdCBGSyBjaGlsZCBpbnNlcnRzCistLQorCitJTlNFUlQgSU5UTyBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElO VE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLSBub3cgaXQgc2hvdWxkIHdvcms6 CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzEsMV0nLCAnMjAx OC0wMi0wMycsICcyMDE4LTAzLTAzJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2Rf dGVzdCBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScp LCAnWzEsMV0nKTsKKworLS0KKy0tIHRlc3QgRksgY2hpbGQgdXBkYXRlcworLS0KK1VQREFURSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAy JywgJzIwMTgtMDMtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBzaG91bGQgZmFpbDoKK1VQ REFURSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4 LTAxLTAyJywgJzIwMTgtMDUtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUgcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QgU0VUIHBhcmVudF9pZCA9ICdbOCw4XScgV0hFUkUgaWQgPSAnWzEs MV0nOworCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04KKy0tCisKKy0t IGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCBy ZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1 LDVdJywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworVVBEQVRFIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBTRVQgdmFsaWRfZnJvbSA9ICcyMDE2LTAxLTAxJywgdmFsaWRfdGlsID0gJzIwMTYt MDItMDEnIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMg ZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5n ZSBpc24ndDoKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdb NSw1XSc7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0n LCAnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJs YXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CitJ TlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMywzXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB3aXRob3V0 X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMi0wMScsIHZhbGlkX3RpbCA9 ICcyMDE2LTAzLTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgt MDItMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMy0wMSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0 IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB3aXRob3V0X292ZXJs YXBzX3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2 LTAyLTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEn IEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0 aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZS T00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgdmFsaWRfZnJvbSA9ICcyMDE2LTAxLTAxJywgdmFsaWRf dGlsID0gJzIwMTYtMDItMDEnCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2Zyb20gPSAn MjAxOC0wMS0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAyLTAxJzsKKy0tIGNsZWFuIHVwOgor REVMRVRFIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgcGFyZW50X2lkID0gJ1s1 LDVdJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1 XSc7CisKKy0tCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFJFU1RSSUNUCistLQorCitBTFRF UiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVu Y2luZ19wZXJpb2RfZms7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFE RCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAor CU9OIERFTEVURSBSRVNUUklDVDsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVz ZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gd2l0aG91dF9v dmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp OworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgdmFsaWRfZnJvbSA9ICcyMDE2LTAx LTAxJywgdmFsaWRfdGlsID0gJzIwMTYtMDItMDEnIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEg UEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVm ZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJs YXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitJ TlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0w Mi0wMScsICcyMDE4LTAzLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVz dCBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAn WzUsNV0nKTsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAn MjAxNi0wMi0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAzLTAxJworV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDItMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMy0w MSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNl ZDoKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0w MS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAyLTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2 YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7Cist LSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBk YXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUg aWQgPSAnWzMsM10nOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgdmFsaWRfZnJv bSA9ICcyMDE2LTAxLTAxJywgdmFsaWRfdGlsID0gJzIwMTYtMDItMDEnCitXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2Zyb20gPSAnMjAxOC0wMS0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4 LTAyLTAxJzsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rl c3QgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tCistLSB0ZXN0IEZLIHBhcmVudCBkZWxl dGVzIE5PIEFDVElPTgorLS0KKworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QK KwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrOworQUxURVIgVEFCTEUgcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2Rf ZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNF UyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGJl Y2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1 XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmlj IGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMS0wMScsICcyMDE4 LTAyLTAxJyk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUs NV0nLCAnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAx OC0wMS0xMCcpLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2Zyb20gPSAnMjAxOC0wMi0wMScgQU5EIHZhbGlk X3RpbCA9ICcyMDE4LTAzLTAxJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBi b3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRf dGlsID0gJzIwMTgtMDItMDEnOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNv cmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1szLDNdJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2Zyb20gPSAnMjAxOC0w MS0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAyLTAxJzsKKworLS0KKy0tIHRlc3QgRksgcGFy ZW50IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCisKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazsKK0FMVEVSIFRB QkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdf cGVyaW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJF RkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0CisJT04gREVMRVRFIFJFU1RSSUNUOworSU5T RVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdI RVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91 Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoK K0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsICcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKK0lOU0VSVCBJ TlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAx OC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gd2l0aG91dF9v dmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAy LTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDMtMDEnOworLS0gYSBQSyBkZWxldGUgdGhhdCBm YWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitERUxFVEUgRlJPTSB3aXRob3V0X292 ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEt MDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2Jq ZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRF IEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRF IEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRf ZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOworCistLQor LS0gdGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKKy0tCisKKy0tIHRlc3QgRksgcGFyZW50 IHVwZGF0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVF UyAoJ1s2LDZdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJUIElOVE8gcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzQsNF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJp b2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmssCisJQUREIENP TlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKwkJ T04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7CitVUERBVEUgd2l0aG91dF9vdmVy bGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcy MDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAq IEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzQsNF0nOworVVBEQVRF IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZd JzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzQs NF0nOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxNSwxNV0n LCAnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJs YXBzX3Rlc3QgVkFMVUVTICgnWzE1LDE1XScsICcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKTsK K0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxMCwxMF0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxNSwxNV0nKTsKK1VQREFURSB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlkID0gJ1sxNiwxNl0nIFdIRVJFIGlkID0gJ1sxNSwx NV0nIEFORCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkgQD4gJzIwMTktMDEtMDEnOjp0 aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlk ID0gJ1sxMCwxMF0nOworCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUKK0lOU0VS VCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbOCw4XScsICcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZB TFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4 XScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbOCw4 XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s1 LDVdJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbOCw4 XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s1 LDVdJzsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTcsMTdd JywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVy bGFwc190ZXN0IFZBTFVFUyAoJ1sxNywxN10nLCAnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJyk7 CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTEsMTFdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTcsMTddJyk7CitERUxFVEUg RlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzE3LDE3XScgQU5EIHRzcmFu Z2UodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NF TEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzExLDExXSc7 CisKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbOSw5XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s2LDZd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOworQUxURVIg VEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNp bmdfcGVyaW9kX2ZrLAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCQlG T1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0 aG91dF9vdmVybGFwc190ZXN0CisJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5V TEw7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEwLDEwXScgV0hF UkUgaWQgPSAnWzksOV0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBX SEVSRSBpZCA9ICdbNiw2XSc7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9 ICdbMTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s2LDZdJzsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBWQUxVRVMgKCdbMTgsMThdJywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScp OworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxOCwxOF0nLCAn MjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJp b2RfdGVzdCBWQUxVRVMgKCdbMTIsMTJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJyksICdbMTgsMThdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9 ICdbMTksMTldJyBXSEVSRSBpZCA9ICdbMTgsMThdJyBBTkQgdHNyYW5nZSh2YWxpZF9mcm9tLCB2 YWxpZF90aWwpIEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZl cmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKKworLS0gdGVzdCBGSyBw YXJlbnQgZGVsZXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0 IFZBTFVFUyAoJ1sxMSwxMV0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQg SU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbNyw3XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzExLDExXScpOworREVMRVRFIEZST00gd2l0aG91 dF9vdmVybGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEn IFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZST00gcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzcsN10nOworREVMRVRFIEZST00gd2l0 aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNyw3XSc7CitJTlNFUlQgSU5UTyB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzIwLDIwXScsICcyMDE4LTAxLTAxJywgJzIw MjAtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdb MjAsMjBdJywgJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJUIElOVE8gcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzEzLDEzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpLCAnWzIwLDIwXScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFw c190ZXN0IFdIRVJFIGlkID0gJ1syMCwyMF0nIEFORCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlk X3RpbCkgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sxMywxM10nOworCistLSB0ZXN0IEZLIHBhcmVu dCB1cGRhdGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg VkFMVUVTICgnWy0xLC0xXScsIG51bGwsIG51bGwpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVy bGFwc190ZXN0IFZBTFVFUyAoJ1sxMiwxMl0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyk7 CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbOCw4XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzEyLDEyXScpOworQUxURVIgVEFC TEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQg REVGQVVMVCAnWy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9m aywKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwkJRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdAorCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxUOwor VVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlk ID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVS RSBpZCA9ICdbOCw4XSc7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdb MTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdf cGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzgsOF0nOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVy bGFwc190ZXN0IFZBTFVFUyAoJ1syMiwyMl0nLCAnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJyk7 CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzIyLDIyXScsICcy MDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0IFZBTFVFUyAoJ1sxNCwxNF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1syMiwyMl0nKTsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlkID0g J1syMywyM10nIFdIRVJFIGlkID0gJ1syMiwyMl0nIEFORCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZh bGlkX3RpbCkgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sxNCwxNF0nOworCistLSB0ZXN0IEZLIHBh cmVudCBkZWxldGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rl c3QgVkFMVUVTICgnWzE0LDE0XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VS VCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTQsMTRdJyk7CitERUxFVEUgRlJPTSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0w MScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbOSw5XSc7CitERUxFVEUgRlJPTSB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9N IHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s5LDldJzsKK0lOU0VSVCBJTlRP IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMjQsMjRdJywgJzIwMTgtMDEtMDEnLCAn MjAyMC0wMS0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAo J1syNCwyNF0nLCAnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyByZWZl cmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbMjQsMjRdJyk7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJs YXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzI0LDI0XScgQU5EIHRzcmFuZ2UodmFsaWRfZnJvbSwgdmFs aWRfdGlsKSBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzE1LDE1XSc7CisKKworLS0KKy0tIHRlc3Qg Rk9SRUlHTiBLRVksIFBFUklPRCByZWZlcmVuY2VzIHJhbmdlCistLQorCitEUk9QIFRBQkxFIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBDQVNDQURFOworQ1JFQVRFIFRBQkxFIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlO VCB3aXRob3V0X292ZXJsYXBzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUykKKyk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgn WzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDMnKSk7CitJTlNFUlQgSU5U TyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAz LTAzJywgJzIwMTgtMDQtMDQnKSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg VkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDEtMDUnKSk7CitJ TlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzMsM10nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgTlVMTCkpOworCistLSBDYW4ndCBjcmVhdGUgYSBGSyB3aXRoIGEgbWlz bWF0Y2hlZCByYW5nZSB0eXBlCitDUkVBVEUgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Qy ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSBpbnQ0LAorICB2YWxpZF90aWwgaW50NCwK KwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCXBhcmVudF9p ZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfcGsyIFBSSU1BUlkg S0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCByZWZlcmVu Y2luZ19wZXJpb2RfZmsyIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK KwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgKGlkLCBQRVJJT0QgdmFsaWRfYXQp CispOworCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorRFJP UCBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdDsKK0NSRUFURSBUQUJMRSByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gdGltZXN0YW1wLAor CXZhbGlkX3RpbCB0aW1lc3RhbXAsCisJUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwg dmFsaWRfdGlsKSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNp bmdfcGVyaW9kX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyks CisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAor KTsKK0RST1AgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Q7CisKKy0tIHNob3VsZCBmYWls IGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gdGlt ZXN0YW1wLAorCXZhbGlkX3RpbCB0aW1lc3RhbXAsCisJUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFs aWRfZnJvbSwgdmFsaWRfdGlsKSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQg cmVmZXJlbmNpbmdfcGVyaW9kX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUyksCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsgRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJs YXBzX3Rlc3QgKGlkLCBQRVJJT0QgaWQpCispOworCistLQorLS0gdGVzdCBBTFRFUiBUQUJMRSBB REQgQ09OU1RSQUlOVAorLS0KKworQ1JFQVRFIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfZnJvbSB0aW1lc3RhbXAsCisJdmFsaWRfdGlsIHRp bWVzdGFtcCwKKwlQRVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAor CXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRB QkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdf cGVyaW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJF RkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0IChpZCwgUEVSSU9EIHZhbGlkX2F0KTsKK0FM VEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVy ZW5jaW5nX3BlcmlvZF9mazsKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQg dGFibGU6CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJB SU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDsKKworLS0gc2hv dWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQUxURVIg VEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2lu Z19wZXJpb2RfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9pZCkK KwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoaWQsIFBFUklPRCBpZCk7CisKKy0t CistLSB0ZXN0IHdpdGggcm93cyBhbHJlYWR5CistLQorCitERUxFVEUgRlJPTSByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdDsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJRFJP UCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazsKK0lOU0VSVCBJTlRPIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxLDFdJywgJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0w MScsICdbMSwxXScpOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQg Q09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lk LCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7CitB TFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZl cmVuY2luZ19wZXJpb2RfZms7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBW QUxVRVMgKCdbMiwyXScsICcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnLCAnWzEsMV0nKTsKKy0t IHNob3VsZCBmYWlsOgorQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQg Q09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lk LCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7Cist LSBva2F5IGFnYWluOgorREVMRVRFIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Q7CitBTFRF UiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5j aW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK KwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdDsKKworLS0KKy0tIHRlc3QgcGdfZ2V0 X2NvbnN0cmFpbnRkZWYKKy0tCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZS T00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3JlZmVyZW5jaW5nX3BlcmlvZF9mayc7 CisKKy0tCistLSB0ZXN0IEZLIGNoaWxkIGluc2VydHMKKy0tCisKK0lOU0VSVCBJTlRPIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxLDFdJywgJzIwMTgtMDEtMDInLCAnMjAxOC0w Mi0wMScsICdbMSwxXScpOworLS0gc2hvdWxkIGZhaWw6CitJTlNFUlQgSU5UTyByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMiwyXScsICcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEn LCAnWzEsMV0nKTsKKy0tIG5vdyBpdCBzaG91bGQgd29yazoKK0lOU0VSVCBJTlRPIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDItMDMnLCAnMjAx OC0wMy0wMycpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAo J1syLDJdJywgJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScsICdbMSwxXScpOworCistLQorLS0g dGVzdCBGSyBjaGlsZCB1cGRhdGVzCistLQorVVBEQVRFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 IFNFVCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDInLCB2YWxpZF90aWwgPSAnMjAxOC0wMy0wMScg V0hFUkUgaWQgPSAnWzEsMV0nOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgcmVmZXJlbmNpbmdf cGVyaW9kX3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxOC0wMS0wMicsIHZhbGlkX3RpbCA9ICcy MDE4LTA1LTAxJyBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUgcmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QgU0VUIHBhcmVudF9pZCA9ICdbOCw4XScgV0hFUkUgaWQgPSAnWzEsMV0nOworCistLQor LS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04KKy0tCisKKy0tIGEgUEsgdXBkYXRl IHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgor SU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNf dGVzdCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBX SEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhv dWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6 CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOwor SU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVy bGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAz LTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzMs M10nLCAnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJywgJ1s1LDVdJyk7CitVUERBVEUgd2l0aG91 dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAx Ni0wMy0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAx OC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1 c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VU IHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlk ID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywnMjAxOC0wMi0w MScpOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1l IFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 IFdIRVJFIGlkID0gJ1szLDNdJzsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEn KTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hF UkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFJF U1RSSUNUCistLQorCitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1Ag Q09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZms7CitBTFRFUiBUQUJMRSByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZP UkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdAorCU9OIERFTEVURSBSRVNUUklDVDsKKy0tIGEgUEsgdXBkYXRlIHRo YXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5T RVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBXSEVS RSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdo IHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitE RUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5T RVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFw c190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAx JykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzMsM10n LCAnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJywgJ1s1LDVdJyk7CitVUERBVEUgd2l0aG91dF9v dmVybGFwc190ZXN0IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0w My0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0w Mi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2Ug Ym90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEn KTsKKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQ SyB1cGRhdGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBX SEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7 CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJF IHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg V0hFUkUgaWQgPSAnWzUsNV0nOworCistLQorLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBB Q1RJT04KKy0tCisKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJRFJPUCBD T05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9mazsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9S RUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91 dF9vdmVybGFwc190ZXN0OworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRo ZSBudW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJs YXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKSk7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUs NV0nOworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJp YyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorSU5TRVJUIElOVE8g d2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZB TFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5T RVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzMsM10nLCAnMjAxOC0w MS0wNScsICcyMDE4LTAxLTEwJywgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJs YXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgt MDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNl IGJvdGggYXJlIHJlZmVyZW5jZWQ6CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg V0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5k IHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0IFdIRVJFIGlkID0gJ1szLDNdJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDE4LTAyLTAxJyk7CisKKy0tCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFJF U1RSSUNUCistLQorCitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1Ag Q09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZms7CitBTFRFUiBUQUJMRSByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZP UkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdAorCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBp ZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRo ZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNF UlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBz X3Rlc3QgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEn KSk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMywzXScs ICcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5n ZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxz IGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDE4LTAyLTAxJyk7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJl Y29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gd2l0aG91 dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKworLS0KKy0tIHRlc3QgT04gVVBEQVRFL0RF TEVURSBvcHRpb25zCistLQorCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0lO U0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0IFZBTFVFUyAoJ1s0LDRdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScsICdb Niw2XScpOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNU UkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrLAorCUFERCBDT05TVFJBSU5UIHJlZmVyZW5jaW5n X3BlcmlvZF9maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJ CVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0CisJCU9OIERFTEVURSBDQVNDQURFIE9O IFVQREFURSBDQVNDQURFOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0g J1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s0LDRdJzsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rl c3QgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHJl ZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s0LDRdJzsKK0lOU0VSVCBJTlRPIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZB TFVFUyAoJ1sxNSwxNV0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTAsMTBdJywgJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScsICdbMTUsMTVdJyk7CitVUERBVEUgd2l0aG91dF9vdmVy bGFwc190ZXN0IFNFVCBpZCA9ICdbMTYsMTZdJyBXSEVSRSBpZCA9ICdbMTUsMTVdJyBBTkQgdmFs aWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5j aW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sxMCwxMF0nOworCistLSB0ZXN0IEZLIHBhcmVu dCBkZWxldGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxV RVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScsICdbOCw4XScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFw c190ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIw LTAxLTAxJyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBWQUxVRVMgKCdbMTcsMTddJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAx LTAxJykpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxNywx N10nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTEsMTFdJywgJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScsICdbMTcsMTddJyk7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rl c3QgV0hFUkUgaWQgPSAnWzE3LDE3XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGlt ZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9 ICdbMTEsMTFdJzsKKworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorSU5TRVJU IElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QgVkFMVUVTICgnWzYsNl0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1s5LDld Jyk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlO VCByZWZlcmVuY2luZ19wZXJpb2RfZmssCisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVy aW9kX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVG RVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQ REFURSBTRVQgTlVMTDsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdb MTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s2LDZdJzsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rl c3QgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00g cmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzYsNl0nOworSU5TRVJUIElOVE8g d2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxOCwxOF0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3Qg VkFMVUVTICgnWzE4LDE4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxMiwxMl0nLCAn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1sxOCwxOF0nKTsKK1VQREFURSB3aXRob3V0X292 ZXJsYXBzX3Rlc3QgU0VUIGlkID0gJ1sxOSwxOV0nIFdIRVJFIGlkID0gJ1sxOCwxOF0nIEFORCB2 YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CisKKy0tIHRlc3QgRksgcGFy ZW50IGRlbGV0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBW QUxVRVMgKCdbMTEsMTFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwor SU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzcsN10nLCAnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBU TyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s3LDddJzsKK0RFTEVURSBGUk9NIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZST00gcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzcsN10nOworSU5TRVJUIElOVE8gd2l0 aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syMCwyMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFM VUVTICgnWzIwLDIwXScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxMywxM10nLCAnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1syMCwyMF0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbMjAsMjBdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTkt MDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 IFdIRVJFIGlkID0gJ1sxMywxM10nOworCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBE RUZBVUxUCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWy0xLC0x XScsIHRzcmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190 ZXN0IFZBTFVFUyAoJ1sxMiwxMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbOCw4XScs ICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzEyLDEyXScpOworQUxURVIgVEFCTEUgcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVM VCAnWy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maywKKwlB REQgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dAorCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxUOworVVBEQVRF IHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sx MiwxMl0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9 ICdbOCw4XSc7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdbMTMsMTNd JyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QgV0hFUkUgaWQgPSAnWzgsOF0nOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190 ZXN0IFZBTFVFUyAoJ1syMiwyMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzIyLDIyXScs IHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxNCwxNF0nLCAnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJywgJ1syMiwyMl0nKTsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlk ID0gJ1syMywyM10nIFdIRVJFIGlkID0gJ1syMiwyMl0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0w MS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Qg V0hFUkUgaWQgPSAnWzE0LDE0XSc7CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERF RkFVTFQKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTQsMTRd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzksOV0nLCAnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJywgJ1sxNCwxNF0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScg V0hFUkUgaWQgPSAnWzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90 ZXN0IFdIRVJFIGlkID0gJ1s5LDldJzsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QgV0hFUkUgaWQgPSAnWzksOV0nOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190 ZXN0IFZBTFVFUyAoJ1syNCwyNF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzI0LDI0XScs IHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxNSwxNV0nLCAnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJywgJ1syNCwyNF0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBX SEVSRSBpZCA9ICdbMjQsMjRdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3Rh bXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sx NSwxNV0nOworCisKKy0tCistLSB0ZXN0IEZPUkVJR04gS0VZLCBQRVJJT0QgcmVmZXJlbmNlcyBQ RVJJT0QKKy0tCisKK0RST1AgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0IENBU0NBREU7CitD UkVBVEUgVEFCTEUgd2l0aG91dF9vdmVybGFwc190ZXN0ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFs aWRfZnJvbSB0aW1lc3RhbXAsCisJdmFsaWRfdGlsIHRpbWVzdGFtcCwKKwlQRVJJT0QgRk9SIHZh bGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorCUNPTlNUUkFJTlQgd2l0aG91dF9vdmVy bGFwc19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOwor SU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxLDFdJywgJzIwMTgt MDEtMDInLCAnMjAxOC0wMi0wMycpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0 IFZBTFVFUyAoJ1sxLDFdJywgJzIwMTgtMDMtMDMnLCAnMjAxOC0wNC0wNCcpOworSU5TRVJUIElO VE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syLDJdJywgJzIwMTgtMDEtMDEnLCAn MjAxOC0wMS0wNScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAo J1szLDNdJywgJzIwMTgtMDEtMDEnLCBOVUxMKTsKKworLS0gQ2FuJ3QgY3JlYXRlIGEgRksgd2l0 aCBhIG1pc21hdGNoZWQgcmFuZ2UgdHlwZQorQ1JFQVRFIFRBQkxFIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0MiAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gaW50NCwKKyAgdmFsaWRfdGls IGludDQsCisJUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSwKKwlw YXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX3BrMiBQ UklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQg cmVmZXJlbmNpbmdfcGVyaW9kX2ZrMiBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0IChpZCwgUEVSSU9EIHZh bGlkX2F0KQorKTsKKworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJs ZToKK0RST1AgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3Q7CitDUkVBVEUgVEFCTEUgcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9mcm9tIHRpbWVz dGFtcCwKKwl2YWxpZF90aWwgdGltZXN0YW1wLAorCVBFUklPRCBGT1IgdmFsaWRfYXQgKHZhbGlk X2Zyb20sIHZhbGlkX3RpbCksCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHJl ZmVyZW5jaW5nX3BlcmlvZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrIEZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBz X3Rlc3QKKyk7CitEUk9QIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0OworCistLSBzaG91 bGQgZmFpbCBiZWNhdXNlIG9mIGR1cGxpY2F0ZSByZWZlcmVuY2VkIGNvbHVtbnM6CitDUkVBVEUg VEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9m cm9tIHRpbWVzdGFtcCwKKwl2YWxpZF90aWwgdGltZXN0YW1wLAorCVBFUklPRCBGT1IgdmFsaWRf YXQgKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCksCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05T VFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrIEZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJCVJFRkVSRU5DRVMgd2l0aG91 dF9vdmVybGFwc190ZXN0IChpZCwgUEVSSU9EIGlkKQorKTsKKworLS0KKy0tIHRlc3QgQUxURVIg VEFCTEUgQUREIENPTlNUUkFJTlQKKy0tCisKK0NSRUFURSBUQUJMRSByZWZlcmVuY2luZ19wZXJp b2RfdGVzdCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2Zyb20gdGltZXN0YW1wLAorCXZhbGlk X3RpbCB0aW1lc3RhbXAsCisJUEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRf dGlsKSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVy aW9kX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitB TFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJBSU5UIHJlZmVy ZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCAoaWQsIFBFUklPRCB2YWxpZF9h dCk7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlO VCByZWZlcmVuY2luZ19wZXJpb2RfZms7CistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZl cmVuY2VkIHRhYmxlOgorQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQg Q09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lk LCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7CisK Ky0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoK K0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNUUkFJTlQgcmVm ZXJlbmNpbmdfcGVyaW9kX2ZrMgorCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJl bnRfaWQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgKGlkLCBQRVJJT0QgaWQp OworCistLQorLS0gdGVzdCB3aXRoIHJvd3MgYWxyZWFkeQorLS0KKworREVMRVRFIEZST00gcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3Q7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVz dAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZms7CitJTlNFUlQgSU5UTyBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMSwxXScsICcyMDE4LTAxLTAyJywgJzIw MTgtMDItMDEnLCAnWzEsMV0nKTsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190 ZXN0OworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJ TlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QgVkFMVUVTICgnWzIsMl0nLCAnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJywgJ1sxLDFd Jyk7CistLSBzaG91bGQgZmFpbDoKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 CisJQUREIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190 ZXN0OworLS0gb2theSBhZ2FpbjoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0 OworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCBy ZWZlcmVuY2luZ19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3Q7CisKKy0tCistLSB0ZXN0 IHBnX2dldF9jb25zdHJhaW50ZGVmCistLQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYo b2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICdyZWZlcmVuY2luZ19wZXJp b2RfZmsnOworCistLQorLS0gdGVzdCBGSyBjaGlsZCBpbnNlcnRzCistLQorCitJTlNFUlQgSU5U TyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMSwxXScsICcyMDE4LTAxLTAyJywg JzIwMTgtMDItMDEnLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzIsMl0nLCAnMjAxOC0wMS0wMicsICcyMDE4 LTA0LTAxJywgJ1sxLDFdJyk7CistLSBub3cgaXQgc2hvdWxkIHdvcms6CitJTlNFUlQgSU5UTyB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzEsMV0nLCAnMjAxOC0wMi0wMycsICcyMDE4 LTAzLTAzJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdb MiwyXScsICcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnLCAnWzEsMV0nKTsKKworLS0KKy0tIHRl c3QgRksgY2hpbGQgdXBkYXRlcworLS0KK1VQREFURSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBT RVQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAyJywgdmFsaWRfdGlsID0gJzIwMTgtMDMtMDEnIFdI RVJFIGlkID0gJ1sxLDFdJzsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0IFNFVCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDInLCB2YWxpZF90aWwgPSAnMjAx OC0wNS0wMScgV0hFUkUgaWQgPSAnWzEsMV0nOworVVBEQVRFIHJlZmVyZW5jaW5nX3BlcmlvZF90 ZXN0IFNFVCBwYXJlbnRfaWQgPSAnWzgsOF0nIFdIRVJFIGlkID0gJ1sxLDFdJzsKKworLS0KKy0t IHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgTk8gQUNUSU9OCistLQorCistLSBhIFBLIHVwZGF0ZSB0 aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lO U0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbNSw1XScsICcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIHZh bGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAyLTAxJyBXSEVSRSBp ZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRo ZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxF VEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJU IElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVF UyAoJ1s1LDVdJywgJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworSU5TRVJUIElOVE8gcmVm ZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzMsM10nLCAnMjAxOC0wMS0wNScsICcyMDE4 LTAxLTEwJywgJ1s1LDVdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCB2YWxp ZF9mcm9tID0gJzIwMTYtMDItMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMy0wMScKK1dIRVJFIGlk ID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAyLTAxJyBBTkQgdmFsaWRfdGlsID0g JzIwMTgtMDMtMDEnOworLS0gYSBQSyB1cGRhdGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJl IHJlZmVyZW5jZWQ6CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCB2YWxpZF9mcm9t ID0gJzIwMTYtMDEtMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMi0wMScKK1dIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgt MDItMDEnOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBz YW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90 ZXN0IFdIRVJFIGlkID0gJ1szLDNdJzsKK1VQREFURSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VU IHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2LTAyLTAxJworV0hF UkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEtMDEnIEFORCB2YWxpZF90 aWwgPSAnMjAxOC0wMi0wMSc7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHJlZmVyZW5jaW5n X3BlcmlvZF90ZXN0IFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworCistLQorLS0gdGVzdCBGSyBw YXJlbnQgdXBkYXRlcyBSRVNUUklDVAorLS0KKworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVy aW9kX3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrOworQUxURVIg VEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVuY2lu Z19wZXJpb2RfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJ UkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7Cist LSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3Qg cmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdb NSw1XScsICcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK1VQREFURSB3aXRob3V0X292ZXJs YXBzX3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcyMDE2 LTAyLTAxJyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRz IGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFu Z2UgaXNuJ3Q6CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAn WzUsNV0nOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVd JywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVy bGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOwor SU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzMsM10nLCAnMjAx OC0wMS0wNScsICcyMDE4LTAxLTEwJywgJ1s1LDVdJyk7CitVUERBVEUgd2l0aG91dF9vdmVybGFw c190ZXN0IFNFVCB2YWxpZF9mcm9tID0gJzIwMTYtMDItMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0w My0wMScKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAyLTAxJyBB TkQgdmFsaWRfdGlsID0gJzIwMTgtMDMtMDEnOworLS0gYSBQSyB1cGRhdGUgdGhhdCBmYWlscyBi ZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgd2l0aG91dF9vdmVybGFwc190ZXN0 IFNFVCB2YWxpZF9mcm9tID0gJzIwMTYtMDEtMDEnLCB2YWxpZF90aWwgPSAnMjAxNi0wMi0wMScK K1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcyMDE4LTAxLTAxJyBBTkQgdmFs aWRfdGlsID0gJzIwMTgtMDItMDEnOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyBy ZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1szLDNdJzsKK1VQREFURSB3aXRob3V0X292 ZXJsYXBzX3Rlc3QgU0VUIHZhbGlkX2Zyb20gPSAnMjAxNi0wMS0wMScsIHZhbGlkX3RpbCA9ICcy MDE2LTAyLTAxJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgtMDEt MDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7CistLSBjbGVhbiB1cDoKK0RFTEVURSBG Uk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitE RUxFVEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworCist LQorLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJT04KKy0tCisKK0FMVEVSIFRBQkxF IHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJRFJPUCBDT05TVFJBSU5UIHJlZmVyZW5jaW5nX3Bl cmlvZF9mazsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJQUREIENPTlNU UkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0OworLS0gYSBQ SyBkZWxldGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlzbid0IHJlZmVy ZW5jZWQ6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0n LCAnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitERUxFVEUgRlJPTSB3aXRob3V0X292ZXJs YXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVk cyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJh bmdlIGlzbid0OgorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1 LDVdJywgJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9v dmVybGFwc190ZXN0IFZBTFVFUyAoJ1s1LDVdJywgJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScp OworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzMsM10nLCAn MjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJywgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB3aXRob3V0 X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9mcm9tID0gJzIwMTgt MDItMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMy0wMSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0 IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK0RFTEVURSBGUk9NIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2Zyb20gPSAnMjAxOC0w MS0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAyLTAxJzsKKy0tIHRoZW4gZGVsZXRlIHRoZSBv YmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CitERUxF VEUgRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxF VEUgRlJPTSB3aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9mcm9tID0gJzIwMTgtMDEtMDEnIEFORCB2YWxpZF90aWwgPSAnMjAxOC0wMi0wMSc7CisKKy0t CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCistLQorCitBTFRFUiBUQUJMRSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJp b2RfZms7CitBTFRFUiBUQUJMRSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdAorCUFERCBDT05TVFJB SU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAorCU9OIERFTEVU RSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdb NSw1XScsICcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1 Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0 aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVT ICgnWzUsNV0nLCAnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitJTlNFUlQgSU5UTyB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzUsNV0nLCAnMjAxOC0wMi0wMScsICcyMDE4LTAz LTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMywz XScsICcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2Zyb20gPSAn MjAxOC0wMi0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAzLTAxJzsKKy0tIGEgUEsgZGVsZXRl IHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gd2l0 aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfZnJvbSA9ICcy MDE4LTAxLTAxJyBBTkQgdmFsaWRfdGlsID0gJzIwMTgtMDItMDEnOworLS0gdGhlbiBkZWxldGUg dGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoK K0RFTEVURSBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1szLDNdJzsK K0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XScgQU5E IHZhbGlkX2Zyb20gPSAnMjAxOC0wMS0wMScgQU5EIHZhbGlkX3RpbCA9ICcyMDE4LTAyLTAxJzsK KworLS0KKy0tIHRlc3QgT04gVVBEQVRFL0RFTEVURSBvcHRpb25zCistLQorCistLSB0ZXN0IEZL IHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBWQUxVRVMgKCdbNiw2XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJ TlRPIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1s0LDRdJywgJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScsICdbNiw2XScpOworQUxURVIgVEFCTEUgcmVmZXJlbmNpbmdfcGVyaW9k X3Rlc3QKKwlEUk9QIENPTlNUUkFJTlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrLAorCUFERCBDT05T VFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgd2l0aG91dF9vdmVybGFwc190ZXN0CisJCU9O IERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworVVBEQVRFIHdpdGhvdXRfb3Zlcmxh cHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAy MC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBG Uk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s0LDRdJzsKK1VQREFURSB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7 CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s0LDRd JzsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMTUsMTVdJywg JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOworSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFw c190ZXN0IFZBTFVFUyAoJ1sxNSwxNV0nLCAnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJ TlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbMTAsMTBdJywgJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScsICdbMTUsMTVdJyk7CitVUERBVEUgd2l0aG91dF9vdmVy bGFwc190ZXN0IFNFVCBpZCA9ICdbMTYsMTZdJyBXSEVSRSBpZCA9ICdbMTUsMTVdJyBBTkQgdHNy YW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOwor U0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbMTAsMTBd JzsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB3aXRo b3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzgsOF0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbNSw1 XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAx LTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSBy ZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB3 aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzE3LDE3XScsICcyMDE4LTAxLTAxJywgJzIw MjAtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdb MTcsMTddJywgJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJUIElOVE8gcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzExLDExXScsICcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnLCAnWzE3LDE3XScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdI RVJFIGlkID0gJ1sxNywxN10nIEFORCB0c3JhbmdlKHZhbGlkX2Zyb20sIHZhbGlkX3RpbCkgQD4g JzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3Blcmlv ZF90ZXN0IFdIRVJFIGlkID0gJ1sxMSwxMV0nOworCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVz IFNFVCBOVUxMCitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzks OV0nLCAnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2lu Z19wZXJpb2RfdGVzdCBWQUxVRVMgKCdbNiw2XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn LCAnWzksOV0nKTsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0CisJRFJPUCBD T05TVFJBSU5UIHJlZmVyZW5jaW5nX3BlcmlvZF9maywKKwlBREQgQ09OU1RSQUlOVCByZWZlcmVu Y2luZ19wZXJpb2RfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0 KQorCQlSRUZFUkVOQ0VTIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdAorCQlPTiBERUxFVEUgU0VUIE5V TEwgT04gVVBEQVRFIFNFVCBOVUxMOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VU IGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gcmVmZXJl bmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzYsNl0nOworVVBEQVRFIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAnWzksOV0nOworU0VMRUNU ICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9ICdbNiw2XSc7CitJTlNF UlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzE4LDE4XScsICcyMDE4LTAx LTAxJywgJzIwMjAtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBW QUxVRVMgKCdbMTgsMThdJywgJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJUIElO VE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzEyLDEyXScsICcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnLCAnWzE4LDE4XScpOworVVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBTRVQgaWQgPSAnWzE5LDE5XScgV0hFUkUgaWQgPSAnWzE4LDE4XScgQU5EIHRzcmFuZ2UodmFs aWRfZnJvbSwgdmFsaWRfdGlsKSBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAq IEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CisKKy0t IHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3Zl cmxhcHNfdGVzdCBWQUxVRVMgKCdbMTEsMTFdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp OworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzcsN10nLCAn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJywgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHdpdGhv dXRfb3ZlcmxhcHNfdGVzdCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAx JyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHJl ZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1s3LDddJzsKK0RFTEVURSBGUk9NIHdp dGhvdXRfb3ZlcmxhcHNfdGVzdCBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZST00g cmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzcsN10nOworSU5TRVJUIElOVE8g d2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syMCwyMF0nLCAnMjAxOC0wMS0wMScsICcy MDIwLTAxLTAxJyk7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgn WzIwLDIwXScsICcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHJlZmVy ZW5jaW5nX3BlcmlvZF90ZXN0IFZBTFVFUyAoJ1sxMywxM10nLCAnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJywgJ1syMCwyMF0nKTsKK0RFTEVURSBGUk9NIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBX SEVSRSBpZCA9ICdbMjAsMjBdJyBBTkQgdHNyYW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJp b2RfdGVzdCBXSEVSRSBpZCA9ICdbMTMsMTNdJzsKKworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRl cyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAo J1stMSwtMV0nLCBudWxsLCBudWxsKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVz dCBWQUxVRVMgKCdbMTIsMTJdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpOworSU5TRVJU IElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzgsOF0nLCAnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJywgJ1sxMiwxMl0nKTsKK0FMVEVSIFRBQkxFIHJlZmVyZW5jaW5nX3Bl cmlvZF90ZXN0CisgIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0n LAorCURST1AgQ09OU1RSQUlOVCByZWZlcmVuY2luZ19wZXJpb2RfZmssCisJQUREIENPTlNUUkFJ TlQgcmVmZXJlbmNpbmdfcGVyaW9kX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB3aXRob3V0X292ZXJsYXBzX3Rlc3QKKwkJT04gREVM RVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKK1VQREFURSB3aXRob3V0X292 ZXJsYXBzX3Rlc3QgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8g JzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NF TEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAnWzgsOF0nOwor VVBEQVRFIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQg PSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJF IGlkID0gJ1s4LDhdJzsKK0lOU0VSVCBJTlRPIHdpdGhvdXRfb3ZlcmxhcHNfdGVzdCBWQUxVRVMg KCdbMjIsMjJdJywgJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpOworSU5TRVJUIElOVE8gd2l0 aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1syMiwyMl0nLCAnMjAyMC0wMS0wMScsICcyMDIx LTAxLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBWQUxVRVMgKCdb MTQsMTRdJywgJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScsICdbMjIsMjJdJyk7CitVUERBVEUg d2l0aG91dF9vdmVybGFwc190ZXN0IFNFVCBpZCA9ICdbMjMsMjNdJyBXSEVSRSBpZCA9ICdbMjIs MjJdJyBBTkQgdHNyYW5nZSh2YWxpZF9mcm9tLCB2YWxpZF90aWwpIEA+ICcyMDE5LTAxLTAxJzo6 dGltZXN0YW1wOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBp ZCA9ICdbMTQsMTRdJzsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAor SU5TRVJUIElOVE8gd2l0aG91dF9vdmVybGFwc190ZXN0IFZBTFVFUyAoJ1sxNCwxNF0nLCAnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyk7CitJTlNFUlQgSU5UTyByZWZlcmVuY2luZ19wZXJpb2Rf dGVzdCBWQUxVRVMgKCdbOSw5XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzE0LDE0 XScpOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQs MTRdJzsKK1NFTEVDVCAqIEZST00gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgV0hFUkUgaWQgPSAn WzksOV0nOworREVMRVRFIEZST00gd2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1sx NCwxNF0nOworU0VMRUNUICogRlJPTSByZWZlcmVuY2luZ19wZXJpb2RfdGVzdCBXSEVSRSBpZCA9 ICdbOSw5XSc7CitJTlNFUlQgSU5UTyB3aXRob3V0X292ZXJsYXBzX3Rlc3QgVkFMVUVTICgnWzI0 LDI0XScsICcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKTsKK0lOU0VSVCBJTlRPIHdpdGhvdXRf b3ZlcmxhcHNfdGVzdCBWQUxVRVMgKCdbMjQsMjRdJywgJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0w MScpOworSU5TRVJUIElOVE8gcmVmZXJlbmNpbmdfcGVyaW9kX3Rlc3QgVkFMVUVTICgnWzE1LDE1 XScsICcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnLCAnWzI0LDI0XScpOworREVMRVRFIEZST00g d2l0aG91dF9vdmVybGFwc190ZXN0IFdIRVJFIGlkID0gJ1syNCwyNF0nIEFORCB0c3JhbmdlKHZh bGlkX2Zyb20sIHZhbGlkX3RpbCkgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1Qg KiBGUk9NIHJlZmVyZW5jaW5nX3BlcmlvZF90ZXN0IFdIRVJFIGlkID0gJ1sxNSwxNV0nOwotLSAK Mi4yNi4yCgo= --00000000000029ba9305c63ba927 Content-Type: application/octet-stream; name="v6-0003-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v6-0003-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kqo20y3r2 RnJvbSA3M2U1M2ZmMzEyYTQ4ODcxMTI1OWM3MmU3ZmQxMzc2YzliZDVkZDU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWluYXRlZGNv bXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjUgSnVuIDIwMjEgMTg6NTQ6MzUgLTA3MDAKU3ViamVj dDogW1BBVENIIHY2IDMvNF0gQWRkIFVQREFURS9ERUxFVEUgRk9SIFBPUlRJT04gT0YKCi0gQWRk ZWQgYmlzb24gc3VwcG9ydCBmb3IgRk9SIFBPUlRJT04gT0Ygc3ludGF4LiBUaGUgYm91bmRzIG11 c3QgYmUKICBjb25zdGFudCwgc28gd2UgZm9yYmlkIGNvbHVtbiByZWZlcmVuY2VzLCBzdWJxdWVy aWVzLCBldGMuIEJ1dCB3ZQogIHBlcm1pdCB0aGUgbWFnaWMgTUlOVkFMVUUgYW5kIE1BWFZBTFVF IGtleXdvcmRzICh0byBtYXRjaCB0aGUgdGVybXMKICBmb3IgcGFydGl0aW9ucykgdG8gcGVyZm9y bSBhbiB1bmJvdW5kZWQgdXBkYXRlL2RlbGV0ZS4gV2UgYWxzbyBhY2NlcHQKICBmdW5jdGlvbnMg bGlrZSBOT1coKS4KLSBBZGRlZCBBRlRFUiBST1cgdHJpZ2dlcnMgdG8gaW5zZXJ0IG5ldyByb3dz IGZvciB0aGUgImxlZnRvdmVyIiBwYXJ0IG9mCiAgYSByZWNvcmQgdG91Y2hlZCBieSBhIEZPUiBQ T1JUSU9OIE9GIHF1ZXJ5LiBXZSBpbnN0YWxsIHRoZXNlIHRyaWdnZXJzCiAgb24gYW55IHRhYmxl IHdpdGggYSB0ZW1wb3JhbCBwcmltYXJ5IGtleS4KLSBBZGRlZCB0Z190ZW1wb3JhbCBkZXNjcmlw dG9yIHRvIHRoZSBUcmlnZ2VyRGF0YSBzdHJ1Y3QgdGhhdCB3ZSBwYXNzIHRvCiAgdHJpZ2dlciBm dW5jdGlvbnMuIE91ciB0cmlnZ2VycyB1c2UgdGhpcyB0byBsZWFybiB3aGF0IGJvdW5kcyB3ZXJl CiAgZ2l2ZW4gaW4gdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZS4KLSBEb2N1bWVudGVkIEZPUiBQ T1JUSU9OIE9GLgotIERvY3VtZW50ZWQgdGdfdGVtcG9yYWwgc3RydWN0LgotIEFkZGVkIHRlc3Rz LgotLS0KIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0 ICsKIGRvYy9zcmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwgICAgICAgICAgICAgICAgIHwgIDQ2ICsr CiBkb2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sICAgICAgICAgICAgICAgICB8ICA0NyArKwog ZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgNjAgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4X211bHRpLmMgIHwgIDI4ICstCiBzcmMv YmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAgICAgICB8ICAgNiArCiBzcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICB8ICA2NSArKwogc3JjL2JhY2tl bmQvY29tbWFuZHMvdHJpZ2dlci5jICAgICAgICAgICAgICAgfCAgNTUgKysKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgIHwgIDMzICsKIHNyYy9iYWNrZW5kL25vZGVz L2NvcHlmdW5jcy5jICAgICAgICAgICAgICAgIHwgIDQ3ICsrCiBzcmMvYmFja2VuZC9ub2Rlcy9l cXVhbGZ1bmNzLmMgICAgICAgICAgICAgICB8ICAzNSArCiBzcmMvYmFja2VuZC9ub2Rlcy9ub2Rl RnVuY3MuYyAgICAgICAgICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5j cy5jICAgICAgICAgICAgICAgICB8ICAyMyArCiBzcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3Mu YyAgICAgICAgICAgICAgICB8ICAyNSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVh dGVwbGFuLmMgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5l ci5jICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUu YyAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgICAgICAgICAg ICAgICAgIHwgMzgzICsrKysrKysrKystCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAg ICAgICAgICAgICAgICB8ICA0NyArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jICAg ICAgICAgICAgICAgfCAgMTAgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYyAg ICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAg ICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyAgICAgICAgICAg ICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jICAgICAgICAg fCAgMjQgKwogc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgICAgICAgICAgICAgICAgICAgfCAg IDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzLmMgICAgICAgICAgIHwgIDQyICsr CiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICB8ICAgNiArCiBz cmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaCAgICAgICAgICAgICB8ICAgMiArCiBzcmMv aW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmggICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAyMiArCiBzcmMvaW5jbHVk ZS9ub2Rlcy9ub2Rlcy5oICAgICAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICB8ICA0MyArLQogc3JjL2luY2x1ZGUvbm9k ZXMvcGF0aG5vZGVzLmggICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMv cGxhbm5vZGVzLmggICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvbm9kZXMvcHJp bW5vZGVzLmggICAgICAgICAgICAgICAgfCAgMjcgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Bh dGhub2RlLmggICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3Qu aCAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2Rl LmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3JhbmdldHlwZXMuaCAg ICAgICAgICAgICAgIHwgICAzICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRp b25fb2Yub3V0IHwgNjc0ICsrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc2FuaXR5X2NoZWNrLm91dCAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUgICAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3Jf cG9ydGlvbl9vZi5zcWwgICAgICB8IDU2MiArKysrKysrKysrKysrKysrCiA0NSBmaWxlcyBjaGFu Z2VkLCAyMzEzIGluc2VydGlvbnMoKyksIDU4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0CiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsCgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCmlu ZGV4IGI1ZjBjZmNjMGMuLmNkODI4ZTQ0NzkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9kZGwu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKQEAgLTExODgsNiArMTE4OCwxMCBAQCBD UkVBVEUgVEFCTEUgYmlsbGluZ19hZGRyZXNzZXMgKAogICAgIGFuZCBzZWNvbmQgYSBwZXJpb2Qg KG9yIHJhbmdlIGNvbHVtbikgdGhhdCBxdWFsaWZpZXMgd2hlbiB0aGUgcm93IGFwcGxpZXMuIFNv IGEgdGVtcG9yYWwgcHJpbWFyeSBwZXJtaXRzIG11bHRpcGxlIHJvd3Mgd2l0aCBlcXVhbCB2YWx1 ZXMgaW4gdGhlIG9yZGluYXJ5IGtleSBwYXJ0cywgYXMgbG9uZyBhcyB0aG9zZSByb3dzIGRvbid0 IGhhdmUgb3ZlcmxhcHBpbmcgcGVyaW9kcy4gRWFjaCByb3cgbWFrZXMgYSBzdGF0ZW1lbnQgYWJv dXQgdGhlIGVudGl0eSBpZGVudGlmaWVkIGJ5IHRoZSBvcmRpbmFyeSBrZXkgcGFydHMsIGJ1dCBh cHBseWluZyBvbmx5IHRvIHRoZSBzcGFuIGdpdmVuIGJ5IHRoZSBwZXJpb2QuCiAgICAgVGVtcG9y YWwgcHJpbWFyeSBrZXlzIGFyZSBlc3NlbnRpYWxseSA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRl dGFibGUtZXhjbHVkZSI+ZXhjbHVzaW9uIGNvbnN0cmFpbnRzPC9saW5rPiB3aGVyZSB0aGUgZmly c3Qga2V5IHBhcnRzIGFyZSBjb21wYXJlZCBmb3IgZXF1YWxpdHkgYW5kIHRoZSBsYXN0IHBhcnQg Zm9yIG92ZXJsYXBzLgogICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBBbnkgdGFibGUgd2l0 aCBhIHRlbXBvcmFsIHByaW1hcnkga2V5IHN1cHBvcnRzIHRlbXBvcmFsIDxsaXRlcmFsPlVQREFU RTwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPkRFTEVURTwvbGl0ZXJhbD4gdXNpbmcgPGxpdGVyYWw+ Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IHN5bnRheC4gU2VlIDx4cmVmIGxpbmtlbmQ9InNxbC11 cGRhdGUiLz4gYW5kIDx4cmVmIGxpbmtlbmQ9InNxbC1kZWxldGUiLz4gZm9yIGRldGFpbHMuCisg ICA8L3BhcmE+CiAgIDwvc2VjdDI+CiAKICAgPHNlY3QyIGlkPSJkZGwtcGVyaW9kcy1zeXN0ZW0t cGVyaW9kcyI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2RlbGV0ZS5zZ21sIGIvZG9j L3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbAppbmRleCAxYjgxYjRlN2Q3Li4yZjA1MmY4MGFlIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2RlbGV0ZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9yZWYvZGVsZXRlLnNnbWwKQEAgLTIzLDYgKzIzLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0 aW9uCiA8c3lub3BzaXM+CiBbIFdJVEggWyBSRUNVUlNJVkUgXSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+d2l0aF9xdWVyeTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXQogREVMRVRFIEZS T00gWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3Jl cGxhY2VhYmxlPiBbICogXSBbIFsgQVMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ YWxpYXM8L3JlcGxhY2VhYmxlPiBdCisgICAgWyBGT1IgUE9SVElPTiBPRiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiBGUk9N IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF90aW1lPC9yZXBsYWNlYWJsZT4g VE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVuZF90aW1lPC9yZXBsYWNlYWJsZT4g XQogICAgIFsgVVNJTkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmZyb21faXRlbTwv cmVwbGFjZWFibGU+IFssIC4uLl0gXQogICAgIFsgV0hFUkUgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbmRpdGlvbjwvcmVwbGFjZWFibGU+IHwgV0hFUkUgQ1VSUkVOVCBPRiA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y3Vyc29yX25hbWU8L3JlcGxhY2VhYmxlPiBdCiAg ICAgWyBSRVRVUk5JTkcgKiB8IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vdXRwdXRf ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IFsgWyBBUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5vdXRwdXRfbmFtZTwvcmVwbGFjZWFibGU+IF0gWywgLi4uXSBdCkBAIC01NCw2ICs1 NSwxNSBAQCBERUxFVEUgRlJPTSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKgogICAgY2lyY3Vtc3RhbmNlcy4KICAgPC9w YXJhPgogCisgIDxwYXJhPgorICAgSWYgdGhlIHRhYmxlIGhhcyBhIDxsaW5rIGxpbmtlbmQ9ImRk bC1wZXJpb2RzLWFwcGxpY2F0aW9uLXBlcmlvZHMiPnRlbXBvcmFsCisgICBwcmltYXJ5IGtleTwv bGluaz4sIHlvdSBtYXkgc3VwcGx5IGEgCisgICA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0 ZXJhbD4gY2xhdXNlLCBhbmQgeW91ciBkZWxldGUgd2lsbCBvbmx5IGFmZmVjdCByb3dzIAorICAg dGhhdCBvdmVybGFwIHRoZSBnaXZlbiBpbnRlcnZhbC4gRnVydGhlcm1vcmUsIGlmIGEgcm93J3Mg c3BhbiBleHRlbmRzIG91dHNpZGUgCisgICB0aGUgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xp dGVyYWw+IGJvdW5kcywgdGhlbiBuZXcgcm93cyBzcGFubmluZyB0aGUgImN1dCAKKyAgIG9mZiIg ZHVyYXRpb24gd2lsbCBiZSBpbnNlcnRlZCB0byBwcmVzZXJ2ZSB0aGUgb2xkIHZhbHVlcy4KKyAg PC9wYXJhPgorCiAgIDxwYXJhPgogICAgVGhlIG9wdGlvbmFsIDxsaXRlcmFsPlJFVFVSTklORzwv bGl0ZXJhbD4gY2xhdXNlIGNhdXNlcyA8Y29tbWFuZD5ERUxFVEU8L2NvbW1hbmQ+CiAgICB0byBj b21wdXRlIGFuZCByZXR1cm4gdmFsdWUocykgYmFzZWQgb24gZWFjaCByb3cgYWN0dWFsbHkgZGVs ZXRlZC4KQEAgLTExNiw2ICsxMjYsNDIgQEAgREVMRVRFIEZST00gWyBPTkxZIF0gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICoKICAgICA8 L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1l PC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAg IFRoZSByYW5nZSBjb2x1bW4gb3IgcGVyaW9kIHRvIHVzZSB3aGVuIHBlcmZvcm1pbmcgYSB0ZW1w b3JhbCBkZWxldGUuIFRoaXMgCisgICAgICBtdXN0IG1hdGNoIHRoZSByYW5nZSBvciBwZXJpb2Qg dXNlZCBpbiB0aGUgdGFibGUncyB0ZW1wb3JhbCBwcmltYXJ5IGtleS4gCisgICAgIDwvcGFyYT4K KyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+ CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN0YXJ0X3RpbWU8L3Jl cGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhl IGVhcmxpZXN0IHRpbWUgKGluY2x1c2l2ZSkgdG8gY2hhbmdlIGluIGEgdGVtcG9yYWwgZGVsZXRl LgorICAgICAgVGhpcyBtdXN0IGJlIGEgdmFsdWUgbWF0Y2hpbmcgdGhlIGJhc2UgdHlwZSBvZiB0 aGUgcmFuZ2Ugb3IgcGVyaW9kIGZyb20gCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPi4gSXQgbWF5IGFsc28gCisg ICAgICBiZSB0aGUgc3BlY2lhbCB2YWx1ZSA8bGl0ZXJhbD5NSU5WQUxVRTwvbGl0ZXJhbD4gdG8g aW5kaWNhdGUgYSBkZWxldGUgd2hvc2UgCisgICAgICBiZWdpbm5pbmcgaXMgdW5ib3VuZGVkLgor ICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8 dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5l bmRfdGltZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+ CisgICAgICBUaGUgbGF0ZXN0IHRpbWUgKGV4Y2x1c2l2ZSkgdG8gY2hhbmdlIGluIGEgdGVtcG9y YWwgZGVsZXRlLgorICAgICAgVGhpcyBtdXN0IGJlIGEgdmFsdWUgbWF0Y2hpbmcgdGhlIGJhc2Ug dHlwZSBvZiB0aGUgcmFuZ2Ugb3IgcGVyaW9kIGZyb20gCisgICAgICA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPi4gSXQgbWF5 IGFsc28gCisgICAgICBiZSB0aGUgc3BlY2lhbCB2YWx1ZSA8bGl0ZXJhbD5NQVhWQUxVRTwvbGl0 ZXJhbD4gdG8gaW5kaWNhdGUgYSBkZWxldGUgd2hvc2UgCisgICAgICBlbmQgaXMgdW5ib3VuZGVk LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAg ICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5mcm9tX2l0ZW08L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi91cGRh dGUuc2dtbAppbmRleCAzZmE1NGU1ZjcwLi44YmFhMTNkYWY5IDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvcmVmL3VwZGF0ZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvdXBkYXRlLnNnbWwK QEAgLTIzLDYgKzIzLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiA8c3lub3BzaXM+CiBb IFdJVEggWyBSRUNVUlNJVkUgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2l0aF9x dWVyeTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXQogVVBEQVRFIFsgT05MWSBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWyBbIEFT IF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFsaWFzPC9yZXBsYWNlYWJsZT4gXQor ICAgIFsgRk9SIFBPUlRJT04gT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdl X29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gRlJPTSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+c3RhcnRfdGltZTwvcmVwbGFjZWFibGU+IFRPIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5lbmRfdGltZTwvcmVwbGFjZWFibGU+IF0KICAgICBTRVQgeyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiA9IHsgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB8IERFRkFV TFQgfSB8CiAgICAgICAgICAgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1u X25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgPSBbIFJPVyBdICggeyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IFss IC4uLl0gKSB8CiAgICAgICAgICAgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29s dW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgPSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5zdWItU0VMRUNUPC9yZXBsYWNlYWJsZT4gKQpAQCAtNTEsNiArNTIsMTYgQEAg VVBEQVRFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4gWyAqIF0gWwogICAgY2lyY3Vtc3RhbmNlcy4KICAgPC9wYXJhPgogCisg IDxwYXJhPgorICAgSWYgdGhlIHRhYmxlIGhhcyBhIDxsaW5rIGxpbmtlbmQ9ImRkbC1wZXJpb2Rz LWFwcGxpY2F0aW9uLXBlcmlvZHMiPnRlbXBvcmFsCisgICBwcmltYXJ5IGtleTwvbGluaz4sIHlv dSBtYXkgc3VwcGx5IGEgCisgICA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gY2xh dXNlLCBhbmQgeW91ciB1cGRhdGUgd2lsbCBvbmx5IGFmZmVjdCByb3dzIAorICAgdGhhdCBvdmVy bGFwIHRoZSBnaXZlbiBpbnRlcnZhbC4gRnVydGhlcm1vcmUsIGlmIGEgcm93J3Mgc3BhbiBleHRl bmRzIG91dHNpZGUgCisgICB0aGUgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGJv dW5kcywgdGhlbiBpdCB3aWxsIGJlIHRydW5jYXRlZCB0byBmaXQgCisgICB3aXRoaW4gdGhlIGJv dW5kcywgYW5kIG5ldyByb3dzIHNwYW5uaW5nIHRoZSAiY3V0IG9mZiIgZHVyYXRpb24gd2lsbCBi ZSAKKyAgIGluc2VydGVkIHRvIHByZXNlcnZlIHRoZSBvbGQgdmFsdWVzLgorICA8L3BhcmE+CisK ICAgPHBhcmE+CiAgICBUaGUgb3B0aW9uYWwgPGxpdGVyYWw+UkVUVVJOSU5HPC9saXRlcmFsPiBj bGF1c2UgY2F1c2VzIDxjb21tYW5kPlVQREFURTwvY29tbWFuZD4KICAgIHRvIGNvbXB1dGUgYW5k IHJldHVybiB2YWx1ZShzKSBiYXNlZCBvbiBlYWNoIHJvdyBhY3R1YWxseSB1cGRhdGVkLgpAQCAt MTE0LDYgKzEyNSw0MiBAQCBVUERBVEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbCiAgICAgPC9saXN0aXRlbT4K ICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFi bGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgcmFuZ2Ug Y29sdW1uIG9yIHBlcmlvZCB0byB1c2Ugd2hlbiBwZXJmb3JtaW5nIGEgdGVtcG9yYWwgdXBkYXRl LiBUaGlzIAorICAgICAgbXVzdCBtYXRjaCB0aGUgcmFuZ2Ugb3IgcGVyaW9kIHVzZWQgaW4gdGhl IHRhYmxlJ3MgdGVtcG9yYWwgcHJpbWFyeSBrZXkuIAorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJt PjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF90aW1lPC9yZXBsYWNlYWJsZT48 L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBlYXJsaWVzdCB0 aW1lIChpbmNsdXNpdmUpIHRvIGNoYW5nZSBpbiBhIHRlbXBvcmFsIHVwZGF0ZS4KKyAgICAgIFRo aXMgbXVzdCBiZSBhIHZhbHVlIG1hdGNoaW5nIHRoZSBiYXNlIHR5cGUgb2YgdGhlIHJhbmdlIG9y IHBlcmlvZCBmcm9tIAorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdl X29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4uIEl0IG1heSBhbHNvIAorICAgICAgYmUgdGhl IHNwZWNpYWwgdmFsdWUgPGxpdGVyYWw+TUlOVkFMVUU8L2xpdGVyYWw+IHRvIGluZGljYXRlIGFu IHVwZGF0ZSB3aG9zZSAKKyAgICAgIGJlZ2lubmluZyBpcyB1bmJvdW5kZWQuCisgICAgIDwvcGFy YT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50 cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVuZF90aW1lPC9y ZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRo ZSBsYXRlc3QgdGltZSAoZXhjbHVzaXZlKSB0byBjaGFuZ2UgaW4gYSB0ZW1wb3JhbCB1cGRhdGUu CisgICAgICBUaGlzIG11c3QgYmUgYSB2YWx1ZSBtYXRjaGluZyB0aGUgYmFzZSB0eXBlIG9mIHRo ZSByYW5nZSBvciBwZXJpb2QgZnJvbSAKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+LiBJdCBtYXkgYWxzbyAKKyAg ICAgIGJlIHRoZSBzcGVjaWFsIHZhbHVlIDxsaXRlcmFsPk1BWFZBTFVFPC9saXRlcmFsPiB0byBp bmRpY2F0ZSBhbiB1cGRhdGUgd2hvc2UgCisgICAgICBlbmQgaXMgdW5ib3VuZGVkLgorICAgICA8 L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlz dGVudHJ5PgogICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC90cmlnZ2VyLnNnbWwgYi9kb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21sCmluZGV4 IGYxYTg0NWY3NTYuLjFiOGNmYjg5NGEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC90cmlnZ2Vy LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dtbApAQCAtNTA2LDE3ICs1MDYsMTgg QEAgQ0FMTEVEX0FTX1RSSUdHRVIoZmNpbmZvKQogPHByb2dyYW1saXN0aW5nPgogdHlwZWRlZiBz dHJ1Y3QgVHJpZ2dlckRhdGEKIHsKLSAgICBOb2RlVGFnICAgICAgICAgIHR5cGU7Ci0gICAgVHJp Z2dlckV2ZW50ICAgICB0Z19ldmVudDsKLSAgICBSZWxhdGlvbiAgICAgICAgIHRnX3JlbGF0aW9u OwotICAgIEhlYXBUdXBsZSAgICAgICAgdGdfdHJpZ3R1cGxlOwotICAgIEhlYXBUdXBsZSAgICAg ICAgdGdfbmV3dHVwbGU7Ci0gICAgVHJpZ2dlciAgICAgICAgICp0Z190cmlnZ2VyOwotICAgIFR1 cGxlVGFibGVTbG90ICAqdGdfdHJpZ3Nsb3Q7Ci0gICAgVHVwbGVUYWJsZVNsb3QgICp0Z19uZXdz bG90OwotICAgIFR1cGxlc3RvcmVzdGF0ZSAqdGdfb2xkdGFibGU7Ci0gICAgVHVwbGVzdG9yZXN0 YXRlICp0Z19uZXd0YWJsZTsKLSAgICBjb25zdCBCaXRtYXBzZXQgKnRnX3VwZGF0ZWRjb2xzOwor ICAgIE5vZGVUYWcgICAgICAgICAgICB0eXBlOworICAgIFRyaWdnZXJFdmVudCAgICAgICB0Z19l dmVudDsKKyAgICBSZWxhdGlvbiAgICAgICAgICAgdGdfcmVsYXRpb247CisgICAgSGVhcFR1cGxl ICAgICAgICAgIHRnX3RyaWd0dXBsZTsKKyAgICBIZWFwVHVwbGUgICAgICAgICAgdGdfbmV3dHVw bGU7CisgICAgVHJpZ2dlciAgICAgICAgICAgKnRnX3RyaWdnZXI7CisgICAgVHVwbGVUYWJsZVNs b3QgICAgKnRnX3RyaWdzbG90OworICAgIFR1cGxlVGFibGVTbG90ICAgICp0Z19uZXdzbG90Owor ICAgIFR1cGxlc3RvcmVzdGF0ZSAgICp0Z19vbGR0YWJsZTsKKyAgICBUdXBsZXN0b3Jlc3RhdGUg ICAqdGdfbmV3dGFibGU7CisgICAgY29uc3QgQml0bWFwc2V0ICAgKnRnX3VwZGF0ZWRjb2xzOwor ICAgIEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbDsKIH0gVHJpZ2dlckRhdGE7CiA8L3By b2dyYW1saXN0aW5nPgogCkBAIC03ODMsNiArNzg0LDQzIEBAIHR5cGVkZWYgc3RydWN0IFRyaWdn ZXIKICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRy eT4KKworICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PHN0cnVjdGZpZWxkPnRnX3Rl bXBvcmFsPC9zdHJ1Y3RmaWVsZD48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBh cmE+CisgICAgICAgIFNldCBmb3IgPGxpdGVyYWw+VVBEQVRFPC9saXRlcmFsPiBhbmQgPGxpdGVy YWw+REVMRVRFPC9saXRlcmFsPiBxdWVyaWVzCisgICAgICAgIHRoYXQgdXNlIDxsaXRlcmFsPkZP UiBQT1JUSU9OIE9GPC9saXRlcmFsPiwgb3RoZXJ3aXNlIDxzeW1ib2w+TlVMTDwvc3ltYm9sPi4K KyAgICAgICAgQ29udGFpbnMgYSBwb2ludGVyIHRvIGEgc3RydWN0dXJlIG9mIHR5cGUKKyAgICAg ICAgPHN0cnVjdG5hbWU+Rm9yUG9ydGlvbk9mU3RhdGU8L3N0cnVjdG5hbWU+LCBkZWZpbmVkIGlu CisgICAgICAgIDxmaWxlbmFtZT5ub2Rlcy9leGVjbm9kZXMuaDwvZmlsZW5hbWU+OgorCis8cHJv Z3JhbWxpc3Rpbmc+Cit0eXBlZGVmIHN0cnVjdCBGb3JQb3J0aW9uT2ZTdGF0ZQoreworICAgIE5v ZGVUYWcgdHlwZTsKKworICAgIGNoYXIgICAqZnBfcmFuZ2VOYW1lOyAgICAgICAvKiB0aGUgY29s dW1uL1BFUklPRCBuYW1lZCBpbiBGT1IgUE9SVElPTiBPRiAqLworICAgIE9pZCAgICAgZnBfcmFu Z2VUeXBlOyAgICAgICAvKiB0aGUgdHlwZSBvZiB0aGUgRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lv biAqLworICAgIGJvb2wgICAgZnBfaGFzUGVyaW9kOyAgICAgICAvKiB0cnVlIGlmZiB0aGlzIGlz IGEgUEVSSU9EIG5vdCBhIHJhbmdlICovCisgICAgY2hhciAgICpmcF9wZXJpb2RTdGFydE5hbWU7 IC8qIHRoZSBQRVJJT0QncyBzdGFydCBjb2x1bW4gKi8KKyAgICBjaGFyICAgKmZwX3BlcmlvZEVu ZE5hbWU7ICAgLyogdGhlIFBFUklPRCdzIGVuZCBjb2x1bW4gKi8KKyAgICBEYXR1bSAgIGZwX3Rh cmdldFJhbmdlOyAgICAgLyogdGhlIHJhbmdlIGZyb20gRk9SIFBPUlRJT04gT0YgKi8KK30gRm9y UG9ydGlvbk9mU3RhdGU7Cis8L3Byb2dyYW1saXN0aW5nPgorCisgICAgICAgd2hlcmUgPHN0cnVj dGZpZWxkPmZwX3JhbmdlTmFtZTwvc3RydWN0ZmllbGQ+IGlzIHRoZSBwZXJpb2Qgb3IgcmFuZ2UK KyAgICAgICBjb2x1bW4gbmFtZWQgaW4gdGhlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRl cmFsPiBjbGF1c2UsCisgICAgICAgPHN0cnVjdGZpZWxkPmZwX3JhbmdlVHlwZTwvc3RydWN0Zmll bGQ+IGlzIGl0cyByYW5nZSB0eXBlLAorICAgICAgIDxzdHJ1Y3RmaWVsZD5mcF9oYXNQZXJpb2Q8 L3N0cnVjdGZpZWxkPiBpbmRpY2F0ZXMgd2hldGhlciBhIHBlcmlvZCB3YXMgdXNlZAorICAgICAg IG9yIGEgcmFuZ2UgY29sdW1uLCA8c3RydWN0ZmllbGQ+ZnBfcGVyaW9kU3RhcnROYW1lPC9zdHJ1 Y3RmaWVsZD4gYW5kCisgICAgICAgPHN0cnVjdGZpZWxkPmZwX3BlcmlvZEVuZE5hbWU8L3N0cnVj dGZpZWxkPiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBwZXJpb2QncworICAgICAgIHN0YXJ0IGFuZCBl bmQgY29sdW1ucyAob3IgPHN5bWJvbD5OVUxMPC9zeW1ib2w+IGlmIGEgcmFuZ2UgY29sdW1uIHdh cyB1c2VkKSwKKyAgICAgICBhbmQgPHN0cnVjdGZpZWxkPmZwX3RhcmdldFJhbmdlPC9zdHJ1Y3Rm aWVsZD4gaXMgYSByYW5nZXR5cGUgdmFsdWUgY3JlYXRlZAorICAgICAgIGJ5IGV2YWx1YXRpbmcg dGhlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBib3VuZHMuCisgICAgICAgPC9w YXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgPC92YXJp YWJsZWxpc3Q+CiAgICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW5fbWlubWF4X211bHRpLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21p bm1heF9tdWx0aS5jCmluZGV4IGUzYzk4YzJmZmQuLjg0OTVhZDNmYWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4X211bHRpLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXhfbXVsdGkuYwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHR5 cGVkZWYgc3RydWN0IFJhbmdlcwogICogd2l0aCBiYXNpYyBtZXRhZGF0YSwgZm9sbG93ZWQgYnkg dGhlIGJvdW5kYXJ5IHZhbHVlcy4gSXQgaGFzIGEgdmFybGVuYQogICogaGVhZGVyLCBzbyBjYW4g YmUgdHJlYXRlZCBhcyB2YXJsZW5hIGRpcmVjdGx5LgogICoKLSAqIFNlZSByYW5nZV9zZXJpYWxp emUvcmFuZ2VfZGVzZXJpYWxpemUgZm9yIHNlcmlhbGl6YXRpb24gZGV0YWlscy4KKyAqIFNlZSBi cmluX3JhbmdlX3NlcmlhbGl6ZS9icmluX3JhbmdlX2Rlc2VyaWFsaXplIGZvciBzZXJpYWxpemF0 aW9uIGRldGFpbHMuCiAgKi8KIHR5cGVkZWYgc3RydWN0IFNlcmlhbGl6ZWRSYW5nZXMKIHsKQEAg LTIxNiw5ICsyMTYsOSBAQCB0eXBlZGVmIHN0cnVjdCBTZXJpYWxpemVkUmFuZ2VzCiAJY2hhcgkJ ZGF0YVtGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwogfSBTZXJpYWxpemVkUmFuZ2VzOwogCi1zdGF0 aWMgU2VyaWFsaXplZFJhbmdlcyAqcmFuZ2Vfc2VyaWFsaXplKFJhbmdlcyAqcmFuZ2UpOworc3Rh dGljIFNlcmlhbGl6ZWRSYW5nZXMgKmJyaW5fcmFuZ2Vfc2VyaWFsaXplKFJhbmdlcyAqcmFuZ2Up OwogCi1zdGF0aWMgUmFuZ2VzICpyYW5nZV9kZXNlcmlhbGl6ZShpbnQgbWF4dmFsdWVzLCBTZXJp YWxpemVkUmFuZ2VzICpyYW5nZSk7CitzdGF0aWMgUmFuZ2VzICpicmluX3JhbmdlX2Rlc2VyaWFs aXplKGludCBtYXh2YWx1ZXMsIFNlcmlhbGl6ZWRSYW5nZXMgKnJhbmdlKTsKIAogCiAvKgpAQCAt NTY1LDE0ICs1NjUsMTQgQEAgcmFuZ2VfZGVkdXBsaWNhdGVfdmFsdWVzKFJhbmdlcyAqcmFuZ2Up CiAKIAogLyoKLSAqIHJhbmdlX3NlcmlhbGl6ZQorICogYnJpbl9yYW5nZV9zZXJpYWxpemUKICAq CSAgU2VyaWFsaXplIHRoZSBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24gaW50byBhIGNvbXBhY3Qg dmFybGVuYSB2YWx1ZS4KICAqCiAgKiBTaW1wbHkgY29weSB0aGUgaGVhZGVyIGFuZCB0aGVuIGFs c28gdGhlIGluZGl2aWR1YWwgdmFsdWVzLCBhcyBzdG9yZWQKICAqIGluIHRoZSBpbi1tZW1vcnkg dmFsdWUgYXJyYXkuCiAgKi8KIHN0YXRpYyBTZXJpYWxpemVkUmFuZ2VzICoKLXJhbmdlX3Nlcmlh bGl6ZShSYW5nZXMgKnJhbmdlKQorYnJpbl9yYW5nZV9zZXJpYWxpemUoUmFuZ2VzICpyYW5nZSkK IHsKIAlTaXplCQlsZW47CiAJaW50CQkJbnZhbHVlczsKQEAgLTcxMSwxNCArNzExLDE0IEBAIHJh bmdlX3NlcmlhbGl6ZShSYW5nZXMgKnJhbmdlKQogfQogCiAvKgotICogcmFuZ2VfZGVzZXJpYWxp emUKKyAqIGJyaW5fcmFuZ2VfZGVzZXJpYWxpemUKICAqCSAgU2VyaWFsaXplIHRoZSBpbi1tZW1v cnkgcmVwcmVzZW50YXRpb24gaW50byBhIGNvbXBhY3QgdmFybGVuYSB2YWx1ZS4KICAqCiAgKiBT aW1wbHkgY29weSB0aGUgaGVhZGVyIGFuZCB0aGVuIGFsc28gdGhlIGluZGl2aWR1YWwgdmFsdWVz LCBhcyBzdG9yZWQKICAqIGluIHRoZSBpbi1tZW1vcnkgdmFsdWUgYXJyYXkuCiAgKi8KIHN0YXRp YyBSYW5nZXMgKgotcmFuZ2VfZGVzZXJpYWxpemUoaW50IG1heHZhbHVlcywgU2VyaWFsaXplZFJh bmdlcyAqc2VyaWFsaXplZCkKK2JyaW5fcmFuZ2VfZGVzZXJpYWxpemUoaW50IG1heHZhbHVlcywg U2VyaWFsaXplZFJhbmdlcyAqc2VyaWFsaXplZCkKIHsKIAlpbnQJCQlpLAogCQkJCW52YWx1ZXM7 CkBAIC0yMzg4LDcgKzIzODgsNyBAQCBicmluX21pbm1heF9tdWx0aV9zZXJpYWxpemUoQnJpbkRl c2MgKmJkZXNjLCBEYXR1bSBzcmMsIERhdHVtICpkc3QpCiAJLyogQXQgdGhpcyBwb2ludCBldmVy eXRoaW5nIGhhcyB0byBiZSBmdWxseSBzb3J0ZWQuICovCiAJQXNzZXJ0KHJhbmdlcy0+bnNvcnRl ZCA9PSByYW5nZXMtPm52YWx1ZXMpOwogCi0JcyA9IHJhbmdlX3NlcmlhbGl6ZShyYW5nZXMpOwor CXMgPSBicmluX3JhbmdlX3NlcmlhbGl6ZShyYW5nZXMpOwogCWRzdFswXSA9IFBvaW50ZXJHZXRE YXR1bShzKTsKIH0KIApAQCAtMjUxMSw3ICsyNTExLDcgQEAgYnJpbl9taW5tYXhfbXVsdGlfYWRk X3ZhbHVlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCW1heHZhbHVlcyA9IE1heChtYXh2YWx1ZXMsIE1J Tk1BWF9CVUZGRVJfTUlOKTsKIAkJbWF4dmFsdWVzID0gTWluKG1heHZhbHVlcywgTUlOTUFYX0JV RkZFUl9NQVgpOwogCi0JCXJhbmdlcyA9IHJhbmdlX2Rlc2VyaWFsaXplKG1heHZhbHVlcywgc2Vy aWFsaXplZCk7CisJCXJhbmdlcyA9IGJyaW5fcmFuZ2VfZGVzZXJpYWxpemUobWF4dmFsdWVzLCBz ZXJpYWxpemVkKTsKIAogCQlyYW5nZXMtPmF0dG5vID0gYXR0bm87CiAJCXJhbmdlcy0+Y29sbG9p ZCA9IGNvbGxvaWQ7CkBAIC0yNTY0LDcgKzI1NjQsNyBAQCBicmluX21pbm1heF9tdWx0aV9jb25z aXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJYXR0bm8gPSBjb2x1bW4tPmJ2X2F0dG5vOwogCiAJ c2VyaWFsaXplZCA9IChTZXJpYWxpemVkUmFuZ2VzICopIFBHX0RFVE9BU1RfREFUVU0oY29sdW1u LT5idl92YWx1ZXNbMF0pOwotCXJhbmdlcyA9IHJhbmdlX2Rlc2VyaWFsaXplKHNlcmlhbGl6ZWQt Pm1heHZhbHVlcywgc2VyaWFsaXplZCk7CisJcmFuZ2VzID0gYnJpbl9yYW5nZV9kZXNlcmlhbGl6 ZShzZXJpYWxpemVkLT5tYXh2YWx1ZXMsIHNlcmlhbGl6ZWQpOwogCiAJLyogaW5zcGVjdCB0aGUg cmFuZ2VzLCBhbmQgZm9yIGVhY2ggb25lIGV2YWx1YXRlIHRoZSBzY2FuIGtleXMgKi8KIAlmb3Ig KHJhbmdlbm8gPSAwOyByYW5nZW5vIDwgcmFuZ2VzLT5ucmFuZ2VzOyByYW5nZW5vKyspCkBAIC0y NzU5LDggKzI3NTksOCBAQCBicmluX21pbm1heF9tdWx0aV91bmlvbihQR19GVU5DVElPTl9BUkdT KQogCXNlcmlhbGl6ZWRfYSA9IChTZXJpYWxpemVkUmFuZ2VzICopIFBHX0RFVE9BU1RfREFUVU0o Y29sX2EtPmJ2X3ZhbHVlc1swXSk7CiAJc2VyaWFsaXplZF9iID0gKFNlcmlhbGl6ZWRSYW5nZXMg KikgUEdfREVUT0FTVF9EQVRVTShjb2xfYi0+YnZfdmFsdWVzWzBdKTsKIAotCXJhbmdlc19hID0g cmFuZ2VfZGVzZXJpYWxpemUoc2VyaWFsaXplZF9hLT5tYXh2YWx1ZXMsIHNlcmlhbGl6ZWRfYSk7 Ci0JcmFuZ2VzX2IgPSByYW5nZV9kZXNlcmlhbGl6ZShzZXJpYWxpemVkX2ItPm1heHZhbHVlcywg c2VyaWFsaXplZF9iKTsKKwlyYW5nZXNfYSA9IGJyaW5fcmFuZ2VfZGVzZXJpYWxpemUoc2VyaWFs aXplZF9hLT5tYXh2YWx1ZXMsIHNlcmlhbGl6ZWRfYSk7CisJcmFuZ2VzX2IgPSBicmluX3Jhbmdl X2Rlc2VyaWFsaXplKHNlcmlhbGl6ZWRfYi0+bWF4dmFsdWVzLCBzZXJpYWxpemVkX2IpOwogCiAJ LyogbWFrZSBzdXJlIG5laXRoZXIgb2YgdGhlIHJhbmdlcyBpcyBOVUxMICovCiAJQXNzZXJ0KHJh bmdlc19hICYmIHJhbmdlc19iKTsKQEAgLTI4NDIsNyArMjg0Miw3IEBAIGJyaW5fbWlubWF4X211 bHRpX3VuaW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkvKiBjbGVhbnVwIGFuZCB1cGRhdGUgdGhl IHNlcmlhbGl6ZWQgdmFsdWUgKi8KIAlwZnJlZShzZXJpYWxpemVkX2EpOwotCWNvbF9hLT5idl92 YWx1ZXNbMF0gPSBQb2ludGVyR2V0RGF0dW0ocmFuZ2Vfc2VyaWFsaXplKHJhbmdlc19hKSk7CisJ Y29sX2EtPmJ2X3ZhbHVlc1swXSA9IFBvaW50ZXJHZXREYXR1bShicmluX3JhbmdlX3NlcmlhbGl6 ZShyYW5nZXNfYSkpOwogCiAJUEdfUkVUVVJOX1ZPSUQoKTsKIH0KQEAgLTMwMjQsNyArMzAyNCw3 IEBAIGJyaW5fbWlubWF4X211bHRpX3N1bW1hcnlfb3V0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJZm1n cl9pbmZvKG91dGZ1bmMsICZmbWdyaW5mbyk7CiAKIAkvKiBkZXNlcmlhbGl6ZSB0aGUgcmFuZ2Ug aW5mbyBlYXN5LXRvLXByb2Nlc3MgcGllY2VzICovCi0JcmFuZ2VzX2Rlc2VyaWFsaXplZCA9IHJh bmdlX2Rlc2VyaWFsaXplKHJhbmdlcy0+bWF4dmFsdWVzLCByYW5nZXMpOworCXJhbmdlc19kZXNl cmlhbGl6ZWQgPSBicmluX3JhbmdlX2Rlc2VyaWFsaXplKHJhbmdlcy0+bWF4dmFsdWVzLCByYW5n ZXMpOwogCiAJYXBwZW5kU3RyaW5nSW5mbygmc3RyLCAibnJhbmdlczogJXUgIG52YWx1ZXM6ICV1 ICBtYXh2YWx1ZXM6ICV1IiwKIAkJCQkJIHJhbmdlc19kZXNlcmlhbGl6ZWQtPm5yYW5nZXMsCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IGIzMjJhZDIzNTUuLmU2NDYwNzZlNTAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xMTcxLDYgKzExNzEsMTIgQEAgRGVmaW5lSW5kZXgo T2lkIHJlbGF0aW9uSWQsCiAKIAlPYmplY3RBZGRyZXNzU2V0KGFkZHJlc3MsIFJlbGF0aW9uUmVs YXRpb25JZCwgaW5kZXhSZWxhdGlvbklkKTsKIAorCS8qCisJICogSWYgd2UgY3JlYXRlZCBhIHRl bXBvcmFsIFBLLCBjcmVhdGUgdHJpZ2dlcnMgZm9yIEZPUiBQT1JUSU9OIE9GIHF1ZXJpZXMuCisJ ICovCisJaWYgKHN0bXQtPnByaW1hcnkgJiYgc3RtdC0+aXN0ZW1wb3JhbCkKKwkJQ3JlYXRlVGVt cG9yYWxQcmltYXJ5S2V5VHJpZ2dlcnMocmVsLCBjcmVhdGVkQ29uc3RyYWludElkLCBpbmRleFJl bGF0aW9uSWQpOworCiAJLyoKIAkgKiBSZXZlcnQgdG8gb3JpZ2luYWwgZGVmYXVsdF90YWJsZXNw YWNlLiAgTXVzdCBkbyB0aGlzIGJlZm9yZSBhbnkgcmV0dXJuCiAJICogZnJvbSB0aGlzIGZ1bmN0 aW9uLCBidXQgYWZ0ZXIgaW5kZXhfY3JlYXRlLCBzbyB0aGlzIGlzIGEgZ29vZCB0aW1lLgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA0MWFiN2RjMmVhLi5iODk0ZjZhMmVjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNDIxOCw2ICs0MjE4LDY3IEBAIEFsdGVyVGFibGVJbnRl cm5hbChPaWQgcmVsaWQsIExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSwgQWx0ZXJUYWJsZVV0aWxp dHlDb250ZXh0CiAJQVRDb250cm9sbGVyKE5VTEwsIHJlbCwgY21kcywgcmVjdXJzZSwgbG9ja21v ZGUsIGNvbnRleHQpOwogfQogCisvKgorICogQ3JlYXRlVGVtcG9yYWxQcmltYXJ5S2V5VHJpZ2dl cnMKKyAqCQlDcmVhdGUgdGhlIHRyaWdnZXJzIHRvIHBlcmZvcm0gaW1wbGljaXQgSU5TRVJUcyBp biBGT1IgUE9SVElPTiBPRgorICoJCXF1ZXJpZXMuCisgKi8KK3ZvaWQKK0NyZWF0ZVRlbXBvcmFs UHJpbWFyeUtleVRyaWdnZXJzKFJlbGF0aW9uIHJlbCwgT2lkIGNvbnN0cmFpbnRPaWQsIE9pZCBp bmRleE9pZCkKK3sKKwlDcmVhdGVUcmlnU3RtdCAqcGtfdHJpZ2dlcjsKKworCS8qCisJICogQnVp bGQgYW5kIGV4ZWN1dGUgYSBDUkVBVEUgVFJJR0dFUiBzdGF0ZW1lbnQgQUZURVIgVVBEQVRFLgor CSAqLworCXBrX3RyaWdnZXIgPSBtYWtlTm9kZShDcmVhdGVUcmlnU3RtdCk7CisJcGtfdHJpZ2dl ci0+dHJpZ25hbWUgPSAiUEtfVGVtcG9yYWxUcmlnZ2VyIjsKKwlwa190cmlnZ2VyLT5yZWxhdGlv biA9IE5VTEw7CisJcGtfdHJpZ2dlci0+cm93ID0gdHJ1ZTsKKwlwa190cmlnZ2VyLT50aW1pbmcg PSBUUklHR0VSX1RZUEVfQUZURVI7CisJcGtfdHJpZ2dlci0+ZXZlbnRzID0gVFJJR0dFUl9UWVBF X1VQREFURTsKKwlwa190cmlnZ2VyLT5jb2x1bW5zID0gTklMOworCXBrX3RyaWdnZXItPnRyYW5z aXRpb25SZWxzID0gTklMOworCXBrX3RyaWdnZXItPndoZW5DbGF1c2UgPSBOVUxMOworCXBrX3Ry aWdnZXItPmlzY29uc3RyYWludCA9IGZhbHNlOworCXBrX3RyaWdnZXItPmNvbnN0cnJlbCA9IE5V TEw7CisJcGtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCXBrX3RyaWdnZXItPmluaXRk ZWZlcnJlZCA9IGZhbHNlOworCXBrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUo IkZQX2luc2VydF9sZWZ0b3ZlcnMiKTsKKwlwa190cmlnZ2VyLT5hcmdzID0gTklMOworCisJKHZv aWQpIENyZWF0ZVRyaWdnZXIocGtfdHJpZ2dlciwgTlVMTCwgUmVsYXRpb25HZXRSZWxpZChyZWwp LCBJbnZhbGlkT2lkLAorCQkJCQkJIGNvbnN0cmFpbnRPaWQsCisJCQkJCQkgaW5kZXhPaWQsIElu dmFsaWRPaWQsIEludmFsaWRPaWQsIE5VTEwsIHRydWUsIGZhbHNlKTsKKworCS8qIE1ha2UgY2hh bmdlcy1zby1mYXIgdmlzaWJsZSAqLworCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisKKwkv KgorCSAqIEJ1aWxkIGFuZCBleGVjdXRlIGEgQ1JFQVRFIFRSSUdHRVIgc3RhdGVtZW50IEFGVEVS IERFTEVURS4KKwkgKi8KKwlwa190cmlnZ2VyID0gbWFrZU5vZGUoQ3JlYXRlVHJpZ1N0bXQpOwor CXBrX3RyaWdnZXItPnRyaWduYW1lID0gIlBLX1RlbXBvcmFsVHJpZ2dlciI7CisJcGtfdHJpZ2dl ci0+cmVsYXRpb24gPSBOVUxMOworCXBrX3RyaWdnZXItPnJvdyA9IHRydWU7CisJcGtfdHJpZ2dl ci0+dGltaW5nID0gVFJJR0dFUl9UWVBFX0FGVEVSOworCXBrX3RyaWdnZXItPmV2ZW50cyA9IFRS SUdHRVJfVFlQRV9ERUxFVEU7CisJcGtfdHJpZ2dlci0+Y29sdW1ucyA9IE5JTDsKKwlwa190cmln Z2VyLT50cmFuc2l0aW9uUmVscyA9IE5JTDsKKwlwa190cmlnZ2VyLT53aGVuQ2xhdXNlID0gTlVM TDsKKwlwa190cmlnZ2VyLT5pc2NvbnN0cmFpbnQgPSBmYWxzZTsKKwlwa190cmlnZ2VyLT5jb25z dHJyZWwgPSBOVUxMOworCXBrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwlwa190cmln Z2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwlwa190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3Rl bUZ1bmNOYW1lKCJGUF9pbnNlcnRfbGVmdG92ZXJzIik7CisJcGtfdHJpZ2dlci0+YXJncyA9IE5J TDsKKworCSh2b2lkKSBDcmVhdGVUcmlnZ2VyKHBrX3RyaWdnZXIsIE5VTEwsIFJlbGF0aW9uR2V0 UmVsaWQocmVsKSwgSW52YWxpZE9pZCwKKwkJCQkJCSBjb25zdHJhaW50T2lkLAorCQkJCQkJIGlu ZGV4T2lkLCBJbnZhbGlkT2lkLCBJbnZhbGlkT2lkLCBOVUxMLCB0cnVlLCBmYWxzZSk7CisKK30K KwogLyoKICAqIEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwKICAqCkBAIC05MDQxLDYgKzkxMDIsOSBA QCBBVEV4ZWNBZGRJbmRleENvbnN0cmFpbnQoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlv biByZWwsCiAJCQkJCQkJCQkgIGFsbG93U3lzdGVtVGFibGVNb2RzLAogCQkJCQkJCQkJICBmYWxz ZSk7CS8qIGlzX2ludGVybmFsICovCiAKKwlpZiAoc3RtdC0+cHJpbWFyeSAmJiBzdG10LT5pc3Rl bXBvcmFsKQorCQlDcmVhdGVUZW1wb3JhbFByaW1hcnlLZXlUcmlnZ2VycyhyZWwsIGFkZHJlc3Mu b2JqZWN0SWQsIGluZGV4X29pZCk7CisKIAlpbmRleF9jbG9zZShpbmRleFJlbCwgTm9Mb2NrKTsK IAogCXJldHVybiBhZGRyZXNzOwpAQCAtMTE1NzcsNiArMTE2NDEsNyBAQCB2YWxpZGF0ZUZvcmVp Z25LZXlDb25zdHJhaW50KGNoYXIgKmNvbm5hbWUsCiAJCXRyaWdkYXRhLnRnX3RyaWd0dXBsZSA9 IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdCwgZmFsc2UsIE5VTEwpOwogCQl0cmlnZGF0YS50 Z190cmlnc2xvdCA9IHNsb3Q7CiAJCXRyaWdkYXRhLnRnX3RyaWdnZXIgPSAmdHJpZzsKKwkJdHJp Z2RhdGEudGdfdGVtcG9yYWwgPSBOVUxMOwogCiAJCWZjaW5mby0+Y29udGV4dCA9IChOb2RlICop ICZ0cmlnZGF0YTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCmluZGV4IDQ5OTEzNDgwMGIuLjM5NWZk OTE1YWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRl ICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0 aWxzL2J5dGVhLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9m bWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5 c2NhY2hlLmgiCkBAIC0yNDA5LDYgKzI0MTAsNyBAQCBFeGVjQlNEZWxldGVUcmlnZ2VycyhFU3Rh dGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbykKIAlMb2NUcmlnZ2VyRGF0YS50Z19l dmVudCA9IFRSSUdHRVJfRVZFTlRfREVMRVRFIHwKIAkJVFJJR0dFUl9FVkVOVF9CRUZPUkU7CiAJ TG9jVHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2M7CisJ TG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7CiAJ Zm9yIChpID0gMDsgaSA8IHRyaWdkZXNjLT5udW10cmlnZ2VyczsgaSsrKQogCXsKIAkJVHJpZ2dl ciAgICAqdHJpZ2dlciA9ICZ0cmlnZGVzYy0+dHJpZ2dlcnNbaV07CkBAIC0yNTA0LDYgKzI1MDYs NyBAQCBFeGVjQlJEZWxldGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgRVBRU3RhdGUgKmVwcXN0 YXRlLAogCQlUUklHR0VSX0VWRU5UX1JPVyB8CiAJCVRSSUdHRVJfRVZFTlRfQkVGT1JFOwogCUxv Y1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOworCUxv Y1RyaWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVsaW5mby0+cmlfZm9yUG9ydGlvbk9mOwogCWZv ciAoaSA9IDA7IGkgPCB0cmlnZGVzYy0+bnVtdHJpZ2dlcnM7IGkrKykKIAl7CiAJCUhlYXBUdXBs ZQluZXd0dXBsZTsKQEAgLTI1ODUsNiArMjU4OCw3IEBAIEV4ZWNJUkRlbGV0ZVRyaWdnZXJzKEVT dGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQlUUklHR0VSX0VWRU5UX1JP VyB8CiAJCVRSSUdHRVJfRVZFTlRfSU5TVEVBRDsKIAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlv biA9IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3Jh bCA9IHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZjsKIAogCUV4ZWNGb3JjZVN0b3JlSGVhcFR1cGxl KHRyaWd0dXBsZSwgc2xvdCwgZmFsc2UpOwogCkBAIC0yNjQ4LDYgKzI2NTIsNyBAQCBFeGVjQlNV cGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbykKIAkJ VFJJR0dFUl9FVkVOVF9CRUZPUkU7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxp bmZvLT5yaV9SZWxhdGlvbkRlc2M7CiAJTG9jVHJpZ2dlckRhdGEudGdfdXBkYXRlZGNvbHMgPSB1 cGRhdGVkQ29sczsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2Zv clBvcnRpb25PZjsKIAlmb3IgKGkgPSAwOyBpIDwgdHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBpKysp CiAJewogCQlUcmlnZ2VyICAgICp0cmlnZ2VyID0gJnRyaWdkZXNjLT50cmlnZ2Vyc1tpXTsKQEAg LTI3NjAsNiArMjc2NSw3IEBAIEV4ZWNCUlVwZGF0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBF UFFTdGF0ZSAqZXBxc3RhdGUsCiAJCVRSSUdHRVJfRVZFTlRfUk9XIHwKIAkJVFJJR0dFUl9FVkVO VF9CRUZPUkU7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5yaV9SZWxh dGlvbkRlc2M7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQ b3J0aW9uT2Y7CiAJdXBkYXRlZENvbHMgPSBFeGVjR2V0QWxsVXBkYXRlZENvbHMocmVsaW5mbywg ZXN0YXRlKTsKIAlMb2NUcmlnZ2VyRGF0YS50Z191cGRhdGVkY29scyA9IHVwZGF0ZWRDb2xzOwog CWZvciAoaSA9IDA7IGkgPCB0cmlnZGVzYy0+bnVtdHJpZ2dlcnM7IGkrKykKQEAgLTI4ODMsNiAr Mjg4OSw3IEBAIEV4ZWNJUlVwZGF0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJ bmZvICpyZWxpbmZvLAogCQlUUklHR0VSX0VWRU5UX1JPVyB8CiAJCVRSSUdHRVJfRVZFTlRfSU5T VEVBRDsKIAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0aW9u RGVzYzsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2ZvclBvcnRp b25PZjsKIAogCUV4ZWNGb3JjZVN0b3JlSGVhcFR1cGxlKHRyaWd0dXBsZSwgb2xkc2xvdCwgZmFs c2UpOwogCkBAIC0zMzIxLDYgKzMzMjgsNyBAQCB0eXBlZGVmIHN0cnVjdCBBZnRlclRyaWdnZXJT aGFyZWREYXRhCiAJT2lkCQkJYXRzX3Rnb2lkOwkJLyogdGhlIHRyaWdnZXIncyBJRCAqLwogCU9p ZAkJCWF0c19yZWxpZDsJCS8qIHRoZSByZWxhdGlvbiBpdCdzIG9uICovCiAJQ29tbWFuZElkCWF0 c19maXJpbmdfaWQ7CS8qIElEIGZvciBmaXJpbmcgY3ljbGUgKi8KKwlGb3JQb3J0aW9uT2ZTdGF0 ZSAqZm9yX3BvcnRpb25fb2Y7CS8qIHRoZSBGT1IgUE9SVElPTiBPRiBjbGF1c2UgKi8KIAlzdHJ1 Y3QgQWZ0ZXJUcmlnZ2Vyc1RhYmxlRGF0YSAqYXRzX3RhYmxlOwkvKiB0cmFuc2l0aW9uIHRhYmxl IGFjY2VzcyAqLwogCUJpdG1hcHNldCAgKmF0c19tb2RpZmllZGNvbHM7CS8qIG1vZGlmaWVkIGNv bHVtbnMgKi8KIH0gQWZ0ZXJUcmlnZ2VyU2hhcmVkRGF0YTsKQEAgLTM1NDksNiArMzU1Nyw3IEBA IHN0YXRpYyBTZXRDb25zdHJhaW50U3RhdGUgU2V0Q29uc3RyYWludFN0YXRlQ3JlYXRlKGludCBu dW1hbGxvYyk7CiBzdGF0aWMgU2V0Q29uc3RyYWludFN0YXRlIFNldENvbnN0cmFpbnRTdGF0ZUNv cHkoU2V0Q29uc3RyYWludFN0YXRlIHN0YXRlKTsKIHN0YXRpYyBTZXRDb25zdHJhaW50U3RhdGUg U2V0Q29uc3RyYWludFN0YXRlQWRkSXRlbShTZXRDb25zdHJhaW50U3RhdGUgc3RhdGUsCiAJCQkJ CQkJCQkJCQkJT2lkIHRnb2lkLCBib29sIHRnaXNkZWZlcnJlZCk7CitzdGF0aWMgRm9yUG9ydGlv bk9mU3RhdGUgKkNvcHlGb3JQb3J0aW9uT2ZTdGF0ZShGb3JQb3J0aW9uT2ZTdGF0ZSAqc3JjKTsK IHN0YXRpYyB2b2lkIGNhbmNlbF9wcmlvcl9zdG10X3RyaWdnZXJzKE9pZCByZWxpZCwgQ21kVHlw ZSBjbWRUeXBlLCBpbnQgdGdldmVudCk7CiAKIApAQCAtNDAyNiw2ICs0MDM1LDcgQEAgQWZ0ZXJU cmlnZ2VyRXhlY3V0ZShFU3RhdGUgKmVzdGF0ZSwKIAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlv biA9IHJlbDsKIAlpZiAoVFJJR0dFUl9GT1JfVVBEQVRFKExvY1RyaWdnZXJEYXRhLnRnX3RyaWdn ZXItPnRndHlwZSkpCiAJCUxvY1RyaWdnZXJEYXRhLnRnX3VwZGF0ZWRjb2xzID0gZXZ0c2hhcmVk LT5hdHNfbW9kaWZpZWRjb2xzOworCUxvY1RyaWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gZXZ0c2hh cmVkLT5mb3JfcG9ydGlvbl9vZjsKIAogCU1lbW9yeUNvbnRleHRSZXNldChwZXJfdHVwbGVfY29u dGV4dCk7CiAKQEAgLTU0MjIsNiArNTQzMiw1MCBAQCBBZnRlclRyaWdnZXJQZW5kaW5nT25SZWwo T2lkIHJlbGlkKQogCXJldHVybiBmYWxzZTsKIH0KIAorLyogLS0tLS0tLS0tLQorICogRm9yUG9y dGlvbk9mU3RhdGUoKQorICoKKyAqIENvcGllcyBhIEZvclBvcnRpb25PZlN0YXRlIGludG8gdGhl IGN1cnJlbnQgbWVtb3J5IGNvbnRleHQuCisgKi8KK3N0YXRpYyBGb3JQb3J0aW9uT2ZTdGF0ZSAq CitDb3B5Rm9yUG9ydGlvbk9mU3RhdGUoRm9yUG9ydGlvbk9mU3RhdGUgKnNyYykKK3sKKwlGb3JQ b3J0aW9uT2ZTdGF0ZSAqZHN0ID0gTlVMTDsKKwlpZiAoc3JjKSB7CisJCU1lbW9yeUNvbnRleHQg b2xkY3R4OworCQlSYW5nZVR5cGUgKnI7CisJCVR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZTsKKwor CQkvKgorCQkgKiBOZWVkIHRvIGxpZnQgdGhlIEZPUiBQT1JUSU9OIE9GIGRldGFpbHMgaW50byBh IGhpZ2hlciBtZW1vcnkgY29udGV4dAorCQkgKiBiZWNhdXNlIGNhc2NhZGluZyBmb3JlaWduIGtl eSB1cGRhdGUvZGVsZXRlcyBjYW4gY2F1c2UgdHJpZ2dlcnMgdG8gZmlyZQorCQkgKiB0cmlnZ2Vy cyAoYm90aCBvdGhlciBUUkkgdHJpZ2dlcnMgYW5kIHRoZSBpbnNlcnRfbGVmdG92ZXJzIHRyaWdn ZXIpLAorCQkgKiBhbmQgdGhlIEFmdGVyVHJpZ2dlckV2ZW50cyB3aWxsIG91dGxpdmUgdGhlIEZQ TyBkZXRhaWxzIG9mIHRoZSBvcmlnaW5hbAorCQkgKiBxdWVyeS4KKwkJICovCisJCW9sZGN0eCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BUcmFuc2FjdGlvbkNvbnRleHQpOworCQlkc3QgPSBt YWtlTm9kZShGb3JQb3J0aW9uT2ZTdGF0ZSk7CisJCWRzdC0+ZnBfcmFuZ2VOYW1lID0gcHN0cmR1 cChzcmMtPmZwX3JhbmdlTmFtZSk7CisJCWRzdC0+ZnBfcmFuZ2VUeXBlID0gc3JjLT5mcF9yYW5n ZVR5cGU7CisJCWRzdC0+ZnBfaGFzUGVyaW9kID0gc3JjLT5mcF9oYXNQZXJpb2Q7CisKKwkJaWYg KHNyYy0+ZnBfcGVyaW9kU3RhcnROYW1lKQorCQkJZHN0LT5mcF9wZXJpb2RTdGFydE5hbWUgPSBw c3RyZHVwKHNyYy0+ZnBfcGVyaW9kU3RhcnROYW1lKTsKKwkJZWxzZQorCQkJZHN0LT5mcF9wZXJp b2RTdGFydE5hbWUgPSBOVUxMOworCisJCWlmIChzcmMtPmZwX3BlcmlvZEVuZE5hbWUpCisJCQlk c3QtPmZwX3BlcmlvZEVuZE5hbWUgPSBwc3RyZHVwKHNyYy0+ZnBfcGVyaW9kRW5kTmFtZSk7CisJ CWVsc2UKKwkJCWRzdC0+ZnBfcGVyaW9kRW5kTmFtZSA9IE5VTEw7CisKKwkJciA9IERhdHVtR2V0 UmFuZ2VUeXBlUChzcmMtPmZwX3RhcmdldFJhbmdlKTsKKwkJdHlwY2FjaGUgPSBsb29rdXBfdHlw ZV9jYWNoZShSYW5nZVR5cGVHZXRPaWQociksIFRZUEVDQUNIRV9SQU5HRV9JTkZPKTsKKwkJZHN0 LT5mcF90YXJnZXRSYW5nZSA9IGRhdHVtQ29weShzcmMtPmZwX3RhcmdldFJhbmdlLCB0eXBjYWNo ZS0+dHlwYnl2YWwsIHR5cGNhY2hlLT50eXBsZW4pOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY3R4KTsKKwl9CisJcmV0dXJuIGRzdDsKK30KIAogLyogLS0tLS0tLS0tLQogICogQWZ0ZXJU cmlnZ2VyU2F2ZUV2ZW50KCkKQEAgLTU3NDEsNiArNTc5NSw3IEBAIEFmdGVyVHJpZ2dlclNhdmVF dmVudChFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJZWxzZQogCQkJ bmV3X3NoYXJlZC5hdHNfdGFibGUgPSBOVUxMOwogCQluZXdfc2hhcmVkLmF0c19tb2RpZmllZGNv bHMgPSBtb2RpZmllZENvbHM7CisJCW5ld19zaGFyZWQuZm9yX3BvcnRpb25fb2YgPSBDb3B5Rm9y UG9ydGlvbk9mU3RhdGUocmVsaW5mby0+cmlfZm9yUG9ydGlvbk9mKTsKIAogCQlhZnRlclRyaWdn ZXJBZGRFdmVudCgmYWZ0ZXJUcmlnZ2Vycy5xdWVyeV9zdGFja1thZnRlclRyaWdnZXJzLnF1ZXJ5 X2RlcHRoXS5ldmVudHMsCiAJCQkJCQkJICZuZXdfZXZlbnQsICZuZXdfc2hhcmVkKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjTWFpbi5jCmluZGV4IGIzY2U0YmFlNTMuLjgwYTNjZGZjMjIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYwpAQCAtMTI0MCw2ICsxMjQwLDcgQEAgSW5pdFJlc3VsdFJlbEluZm8oUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAlyZXN1bHRSZWxJbmZvLT5yaV9wcm9qZWN0UmV0 dXJuaW5nID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4 ZXMgPSBOSUw7CiAJcmVzdWx0UmVsSW5mby0+cmlfb25Db25mbGljdCA9IE5VTEw7CisJcmVzdWx0 UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9SZXR1 cm5pbmdTbG90ID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnT2xkU2xvdCA9IE5VTEw7 CiAJcmVzdWx0UmVsSW5mby0+cmlfVHJpZ05ld1Nsb3QgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCBjMjQ2ODRhYTZmLi45MzBmZWVhMjE0IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1 ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRl ICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3JhbmdldHlwZXMuaCIKKyNpbmNs dWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKIAogCkBAIC0z MDQ2LDYgKzMwNDgsMzcgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCX0KIAl9CiAKKwkvKgorCSAqIElmIG5lZWRl ZCwgaW5pdGlhbGl6ZSB0aGUgdGFyZ2V0IHJhbmdlIGZvciBGT1IgUE9SVElPTiBPRi4KKwkgKi8K KwlpZiAobm9kZS0+Zm9yUG9ydGlvbk9mKQorCXsKKwkJRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9y dGlvbk9mID0gKEZvclBvcnRpb25PZkV4cHIgKikgbm9kZS0+Zm9yUG9ydGlvbk9mOworCQlEYXR1 bQl0YXJnZXRSYW5nZTsKKwkJYm9vbAlpc051bGw7CisJCUV4cHJDb250ZXh0ICplY29udGV4dDsK KwkJRXhwclN0YXRlICpleHByU3RhdGU7CisKKwkJLyogRXZhbCB0aGUgRk9SIFBPUlRJT04gT0Yg dGFyZ2V0ICovCisJCWlmIChtdHN0YXRlLT5wcy5wc19FeHByQ29udGV4dCA9PSBOVUxMKQorCQkJ RXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwgJm10c3RhdGUtPnBzKTsKKwkJZWNvbnRleHQg PSBtdHN0YXRlLT5wcy5wc19FeHByQ29udGV4dDsKKworCQlleHByU3RhdGUgPSBFeGVjUHJlcGFy ZUV4cHIoKEV4cHIgKikgZm9yUG9ydGlvbk9mLT50YXJnZXRSYW5nZSwgZXN0YXRlKTsKKwkJdGFy Z2V0UmFuZ2UgPSBFeGVjRXZhbEV4cHIoZXhwclN0YXRlLCBlY29udGV4dCwgJmlzTnVsbCk7CisK KwkJaWYgKGlzTnVsbCkgZWxvZyhFUlJPUiwgIkdvdCBhIE5VTEwgRk9SIFBPUlRJT04gT0YgdGFy Z2V0IHJhbmdlIik7CisKKwkJcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mID0gbWFrZU5v ZGUoRm9yUG9ydGlvbk9mU3RhdGUpOworCQlyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2Yt PmZwX3JhbmdlTmFtZSA9IGZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZTsKKwkJcmVzdWx0UmVsSW5m by0+cmlfZm9yUG9ydGlvbk9mLT5mcF9wZXJpb2RTdGFydE5hbWUgPSBmb3JQb3J0aW9uT2YtPnBl cmlvZF9zdGFydF9uYW1lOworCQlyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YtPmZwX3Bl cmlvZEVuZE5hbWUgPSBmb3JQb3J0aW9uT2YtPnBlcmlvZF9lbmRfbmFtZTsKKwkJcmVzdWx0UmVs SW5mby0+cmlfZm9yUG9ydGlvbk9mLT5mcF90YXJnZXRSYW5nZSA9IHRhcmdldFJhbmdlOworCQly ZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YtPmZwX3JhbmdlVHlwZSA9IGZvclBvcnRpb25P Zi0+cmFuZ2VUeXBlOworCisJCS8qIERvbid0IGZyZWUgdGhlIEV4cHJDb250ZXh0IGhlcmUgYmVj YXVzZSB0aGUgcmVzdWx0IG11c3QgbGFzdCBmb3IgdGhlIHdob2xlIHF1ZXJ5ICovCisJfQorCiAJ LyoKIAkgKiBJZiB3ZSBoYXZlIGFueSBzZWNvbmRhcnkgcmVsYXRpb25zIGluIGFuIFVQREFURSBv ciBERUxFVEUsIHRoZXkgbmVlZCB0bwogCSAqIGJlIHRyZWF0ZWQgbGlrZSBub24tbG9ja2VkIHJl bGF0aW9ucyBpbiBTRUxFQ1QgRk9SIFVQREFURSwgaWUsIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwpp bmRleCA3MTA3MGFhMTE3Li44NjMwZWY5YTc3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rl cy9jb3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwpAQCAtMjE1 LDYgKzIxNSw3IEBAIF9jb3B5TW9kaWZ5VGFibGUoY29uc3QgTW9kaWZ5VGFibGUgKmZyb20pCiAJ Q09QWV9OT0RFX0ZJRUxEKHJvd01hcmtzKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChlcHFQYXJhbSk7 CiAJQ09QWV9TQ0FMQVJfRklFTEQob25Db25mbGljdEFjdGlvbik7CisJQ09QWV9OT0RFX0ZJRUxE KGZvclBvcnRpb25PZik7CiAJQ09QWV9OT0RFX0ZJRUxEKGFyYml0ZXJJbmRleGVzKTsKIAlDT1BZ X05PREVfRklFTEQob25Db25mbGljdFNldCk7CiAJQ09QWV9OT0RFX0ZJRUxEKG9uQ29uZmxpY3RD b2xzKTsKQEAgLTIzMDIsNiArMjMwMywzMyBAQCBfY29weU9uQ29uZmxpY3RFeHByKGNvbnN0IE9u Q29uZmxpY3RFeHByICpmcm9tKQogCXJldHVybiBuZXdub2RlOwogfQogCisvKgorICogX2NvcHlG b3JQb3J0aW9uT2ZFeHByCisgKi8KK3N0YXRpYyBGb3JQb3J0aW9uT2ZFeHByICoKK19jb3B5Rm9y UG9ydGlvbk9mRXhwcihjb25zdCBGb3JQb3J0aW9uT2ZFeHByICpmcm9tKQoreworCUZvclBvcnRp b25PZkV4cHIgKm5ld25vZGUgPSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZFeHByKTsKKworCUNPUFlf U0NBTEFSX0ZJRUxEKHJhbmdlX2F0dG5vKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChzdGFydF9hdHRu byk7CisJQ09QWV9TQ0FMQVJfRklFTEQoZW5kX2F0dG5vKTsKKwlDT1BZX1NUUklOR19GSUVMRChy YW5nZV9uYW1lKTsKKwlDT1BZX1NUUklOR19GSUVMRChwZXJpb2Rfc3RhcnRfbmFtZSk7CisJQ09Q WV9TVFJJTkdfRklFTEQocGVyaW9kX2VuZF9uYW1lKTsKKwlDT1BZX05PREVfRklFTEQocmFuZ2Up OworCUNPUFlfTk9ERV9GSUVMRChzdGFydENvbCk7CisJQ09QWV9OT0RFX0ZJRUxEKGVuZENvbCk7 CisJQ09QWV9OT0RFX0ZJRUxEKHRhcmdldFN0YXJ0KTsKKwlDT1BZX05PREVfRklFTEQodGFyZ2V0 RW5kKTsKKwlDT1BZX05PREVfRklFTEQodGFyZ2V0UmFuZ2UpOworCUNPUFlfU0NBTEFSX0ZJRUxE KHJhbmdlVHlwZSk7CisJQ09QWV9OT0RFX0ZJRUxEKG92ZXJsYXBzRXhwcik7CisJQ09QWV9OT0RF X0ZJRUxEKHJhbmdlU2V0KTsKKworCXJldHVybiBuZXdub2RlOworfQorCiAvKiAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAg KgkJCQkJCXBhdGhub2Rlcy5oIGNvcHkgZnVuY3Rpb25zCiAgKgpAQCAtMjY3Nyw2ICsyNzA1LDE5 IEBAIF9jb3B5Q1RFQ3ljbGVDbGF1c2UoY29uc3QgQ1RFQ3ljbGVDbGF1c2UgKmZyb20pCiAJcmV0 dXJuIG5ld25vZGU7CiB9CiAKK3N0YXRpYyBGb3JQb3J0aW9uT2ZDbGF1c2UgKgorX2NvcHlGb3JQ b3J0aW9uT2ZDbGF1c2UoY29uc3QgRm9yUG9ydGlvbk9mQ2xhdXNlICpmcm9tKQoreworCUZvclBv cnRpb25PZkNsYXVzZSAqbmV3bm9kZSA9IG1ha2VOb2RlKEZvclBvcnRpb25PZkNsYXVzZSk7CisK KwlDT1BZX1NUUklOR19GSUVMRChyYW5nZV9uYW1lKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChyYW5n ZV9uYW1lX2xvY2F0aW9uKTsKKwlDT1BZX05PREVfRklFTEQodGFyZ2V0X3N0YXJ0KTsKKwlDT1BZ X05PREVfRklFTEQodGFyZ2V0X2VuZCk7CisKKwlyZXR1cm4gbmV3bm9kZTsKK30KKwogc3RhdGlj IENvbW1vblRhYmxlRXhwciAqCiBfY29weUNvbW1vblRhYmxlRXhwcihjb25zdCBDb21tb25UYWJs ZUV4cHIgKmZyb20pCiB7CkBAIC01MzA3LDYgKzUzNDgsOSBAQCBjb3B5T2JqZWN0SW1wbChjb25z dCB2b2lkICpmcm9tKQogCQljYXNlIFRfT25Db25mbGljdEV4cHI6CiAJCQlyZXR2YWwgPSBfY29w eU9uQ29uZmxpY3RFeHByKGZyb20pOwogCQkJYnJlYWs7CisJCWNhc2UgVF9Gb3JQb3J0aW9uT2ZF eHByOgorCQkJcmV0dmFsID0gX2NvcHlGb3JQb3J0aW9uT2ZFeHByKGZyb20pOworCQkJYnJlYWs7 CiAKIAkJCS8qCiAJCQkgKiBSRUxBVElPTiBOT0RFUwpAQCAtNTg1Myw2ICs1ODk3LDkgQEAgY29w eU9iamVjdEltcGwoY29uc3Qgdm9pZCAqZnJvbSkKIAkJY2FzZSBUX0NURUN5Y2xlQ2xhdXNlOgog CQkJcmV0dmFsID0gX2NvcHlDVEVDeWNsZUNsYXVzZShmcm9tKTsKIAkJCWJyZWFrOworCQljYXNl IFRfRm9yUG9ydGlvbk9mQ2xhdXNlOgorCQkJcmV0dmFsID0gX2NvcHlGb3JQb3J0aW9uT2ZDbGF1 c2UoZnJvbSk7CisJCQlicmVhazsKIAkJY2FzZSBUX0NvbW1vblRhYmxlRXhwcjoKIAkJCXJldHZh bCA9IF9jb3B5Q29tbW9uVGFibGVFeHByKGZyb20pOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1 bmNzLmMKaW5kZXggZTM3MmZiZjg2Mi4uY2I4OTNmNTY2ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvbm9kZXMvZXF1YWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3Mu YwpAQCAtODI4LDYgKzgyOCwyNCBAQCBfZXF1YWxPbkNvbmZsaWN0RXhwcihjb25zdCBPbkNvbmZs aWN0RXhwciAqYSwgY29uc3QgT25Db25mbGljdEV4cHIgKmIpCiAJcmV0dXJuIHRydWU7CiB9CiAK K3N0YXRpYyBib29sCitfZXF1YWxGb3JQb3J0aW9uT2ZFeHByKGNvbnN0IEZvclBvcnRpb25PZkV4 cHIgKmEsIGNvbnN0IEZvclBvcnRpb25PZkV4cHIgKmIpCit7CisJQ09NUEFSRV9TQ0FMQVJfRklF TEQocmFuZ2VfYXR0bm8pOworCUNPTVBBUkVfU1RSSU5HX0ZJRUxEKHJhbmdlX25hbWUpOworCUNP TVBBUkVfTk9ERV9GSUVMRChyYW5nZSk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHN0YXJ0Q29sKTsK KwlDT01QQVJFX05PREVfRklFTEQoZW5kQ29sKTsKKwlDT01QQVJFX05PREVfRklFTEQodGFyZ2V0 U3RhcnQpOworCUNPTVBBUkVfTk9ERV9GSUVMRCh0YXJnZXRFbmQpOworCUNPTVBBUkVfTk9ERV9G SUVMRCh0YXJnZXRSYW5nZSk7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQocmFuZ2VUeXBlKTsKKwlD T01QQVJFX05PREVfRklFTEQob3ZlcmxhcHNFeHByKTsKKwlDT01QQVJFX05PREVfRklFTEQocmFu Z2VTZXQpOworCisJcmV0dXJuIHRydWU7Cit9CisKIC8qCiAgKiBTdHVmZiBmcm9tIHBhdGhub2Rl cy5oCiAgKi8KQEAgLTI5MjUsNiArMjk0MywxNyBAQCBfZXF1YWxDVEVDeWNsZUNsYXVzZShjb25z dCBDVEVDeWNsZUNsYXVzZSAqYSwgY29uc3QgQ1RFQ3ljbGVDbGF1c2UgKmIpCiAJcmV0dXJuIHRy dWU7CiB9CiAKK3N0YXRpYyBib29sCitfZXF1YWxGb3JQb3J0aW9uT2ZDbGF1c2UoY29uc3QgRm9y UG9ydGlvbk9mQ2xhdXNlICphLCBjb25zdCBGb3JQb3J0aW9uT2ZDbGF1c2UgKmIpCit7CisJQ09N UEFSRV9TVFJJTkdfRklFTEQocmFuZ2VfbmFtZSk7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQocmFu Z2VfbmFtZV9sb2NhdGlvbik7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHRhcmdldF9zdGFydCk7CisJ Q09NUEFSRV9OT0RFX0ZJRUxEKHRhcmdldF9lbmQpOworCisJcmV0dXJuIHRydWU7Cit9CisKIHN0 YXRpYyBib29sCiBfZXF1YWxDb21tb25UYWJsZUV4cHIoY29uc3QgQ29tbW9uVGFibGVFeHByICph LCBjb25zdCBDb21tb25UYWJsZUV4cHIgKmIpCiB7CkBAIC0zMzA0LDYgKzMzMzMsOSBAQCBlcXVh bChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogCQljYXNlIFRfT25Db25mbGljdEV4cHI6 CiAJCQlyZXR2YWwgPSBfZXF1YWxPbkNvbmZsaWN0RXhwcihhLCBiKTsKIAkJCWJyZWFrOworCQlj YXNlIFRfRm9yUG9ydGlvbk9mRXhwcjoKKwkJCXJldHZhbCA9IF9lcXVhbEZvclBvcnRpb25PZkV4 cHIoYSwgYik7CisJCQlicmVhazsKIAkJY2FzZSBUX0pvaW5FeHByOgogCQkJcmV0dmFsID0gX2Vx dWFsSm9pbkV4cHIoYSwgYik7CiAJCQlicmVhazsKQEAgLTM4NDAsNiArMzg3Miw5IEBAIGVxdWFs KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCiAJCWNhc2UgVF9DVEVDeWNsZUNsYXVzZToK IAkJCXJldHZhbCA9IF9lcXVhbENURUN5Y2xlQ2xhdXNlKGEsIGIpOwogCQkJYnJlYWs7CisJCWNh c2UgVF9Gb3JQb3J0aW9uT2ZDbGF1c2U6CisJCQlyZXR2YWwgPSBfZXF1YWxGb3JQb3J0aW9uT2ZD bGF1c2UoYSwgYik7CisJCQlicmVhazsKIAkJY2FzZSBUX0NvbW1vblRhYmxlRXhwcjoKIAkJCXJl dHZhbCA9IF9lcXVhbENvbW1vblRhYmxlRXhwcihhLCBiKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2Rl RnVuY3MuYwppbmRleCBjZTZjMjUzNGY5Li5hYmQwOTJjZGQzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3Mu YwpAQCAtMjIzNyw2ICsyMjM3LDE0IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXIoTm9kZSAqbm9k ZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBUX0ZvclBvcnRp b25PZkV4cHI6CisJCQl7CisJCQkJRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mID0gKEZv clBvcnRpb25PZkV4cHIgKikgbm9kZTsKKworCQkJCWlmICh3YWxrZXIoKE5vZGUgKikgZm9yUG9y dGlvbk9mLT50YXJnZXRSYW5nZSwgY29udGV4dCkpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQor CQkJYnJlYWs7CiAJCWNhc2UgVF9QYXJ0aXRpb25QcnVuZVN0ZXBPcDoKIAkJCXsKIAkJCQlQYXJ0 aXRpb25QcnVuZVN0ZXBPcCAqb3BzdGVwID0gKFBhcnRpdGlvblBydW5lU3RlcE9wICopIG5vZGU7 CkBAIC0yMzczLDYgKzIzODEsOCBAQCBxdWVyeV90cmVlX3dhbGtlcihRdWVyeSAqcXVlcnksCiAJ CXJldHVybiB0cnVlOwogCWlmICh3YWxrZXIoKE5vZGUgKikgcXVlcnktPndpdGhDaGVja09wdGlv bnMsIGNvbnRleHQpKQogCQlyZXR1cm4gdHJ1ZTsKKwlpZiAod2Fsa2VyKChOb2RlICopIHF1ZXJ5 LT5mb3JQb3J0aW9uT2YsIGNvbnRleHQpKQorCQlyZXR1cm4gdHJ1ZTsKIAlpZiAod2Fsa2VyKChO b2RlICopIHF1ZXJ5LT5vbkNvbmZsaWN0LCBjb250ZXh0KSkKIAkJcmV0dXJuIHRydWU7CiAJaWYg KHdhbGtlcigoTm9kZSAqKSBxdWVyeS0+cmV0dXJuaW5nTGlzdCwgY29udGV4dCkpCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0 ZnVuY3MuYwppbmRleCA0ZTA0NjlhNTgwLi4wYmEwNzc1MTAwIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMK QEAgLTQxNiwxMCArNDE2LDEyIEBAIF9vdXRNb2RpZnlUYWJsZShTdHJpbmdJbmZvIHN0ciwgY29u c3QgTW9kaWZ5VGFibGUgKm5vZGUpCiAJV1JJVEVfTk9ERV9GSUVMRChyb3dNYXJrcyk7CiAJV1JJ VEVfSU5UX0ZJRUxEKGVwcVBhcmFtKTsKIAlXUklURV9FTlVNX0ZJRUxEKG9uQ29uZmxpY3RBY3Rp b24sIE9uQ29uZmxpY3RBY3Rpb24pOworCVdSSVRFX05PREVfRklFTEQoZm9yUG9ydGlvbk9mKTsK IAlXUklURV9OT0RFX0ZJRUxEKGFyYml0ZXJJbmRleGVzKTsKIAlXUklURV9OT0RFX0ZJRUxEKG9u Q29uZmxpY3RTZXQpOwogCVdSSVRFX05PREVfRklFTEQob25Db25mbGljdENvbHMpOwogCVdSSVRF X05PREVfRklFTEQob25Db25mbGljdFdoZXJlKTsKKwkvLyBUT0RPOiBhZGQgdGhpbmdzIGZvciBG b3JQb3J0aW9uT2YKIAlXUklURV9VSU5UX0ZJRUxEKGV4Y2xSZWxSVEkpOwogCVdSSVRFX05PREVf RklFTEQoZXhjbFJlbFRsaXN0KTsKIH0KQEAgLTE3NDAsNiArMTc0MiwyNCBAQCBfb3V0T25Db25m bGljdEV4cHIoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IE9uQ29uZmxpY3RFeHByICpub2RlKQogCVdS SVRFX05PREVfRklFTEQoZXhjbFJlbFRsaXN0KTsKIH0KIAorc3RhdGljIHZvaWQKK19vdXRGb3JQ b3J0aW9uT2ZFeHByKFN0cmluZ0luZm8gc3RyLCBjb25zdCBGb3JQb3J0aW9uT2ZFeHByICpub2Rl KQoreworCVdSSVRFX05PREVfVFlQRSgiRk9SUE9SVElPTk9GRVhQUiIpOworCisJV1JJVEVfSU5U X0ZJRUxEKHJhbmdlX2F0dG5vKTsKKwlXUklURV9TVFJJTkdfRklFTEQocmFuZ2VfbmFtZSk7CisJ V1JJVEVfTk9ERV9GSUVMRChyYW5nZSk7CisJV1JJVEVfTk9ERV9GSUVMRChzdGFydENvbCk7CisJ V1JJVEVfTk9ERV9GSUVMRChlbmRDb2wpOworCVdSSVRFX05PREVfRklFTEQodGFyZ2V0U3RhcnQp OworCVdSSVRFX05PREVfRklFTEQodGFyZ2V0RW5kKTsKKwlXUklURV9OT0RFX0ZJRUxEKHRhcmdl dFJhbmdlKTsKKwlXUklURV9PSURfRklFTEQocmFuZ2VUeXBlKTsKKwlXUklURV9OT0RFX0ZJRUxE KG92ZXJsYXBzRXhwcik7CisJV1JJVEVfTk9ERV9GSUVMRChyYW5nZVNldCk7Cit9CisKIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgogICoKICAqCVN0dWZmIGZyb20gcGF0aG5vZGVzLmguCkBAIC00MTk0 LDYgKzQyMTQsOSBAQCBvdXROb2RlKFN0cmluZ0luZm8gc3RyLCBjb25zdCB2b2lkICpvYmopCiAJ CQljYXNlIFRfT25Db25mbGljdEV4cHI6CiAJCQkJX291dE9uQ29uZmxpY3RFeHByKHN0ciwgb2Jq KTsKIAkJCQlicmVhazsKKwkJCWNhc2UgVF9Gb3JQb3J0aW9uT2ZFeHByOgorCQkJCV9vdXRGb3JQ b3J0aW9uT2ZFeHByKHN0ciwgb2JqKTsKKwkJCQlicmVhazsKIAkJCWNhc2UgVF9QYXRoOgogCQkJ CV9vdXRQYXRoKHN0ciwgb2JqKTsKIAkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L25vZGVzL3JlYWRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKaW5kZXgg ZjBiMzRlY2ZhYy4uODI5YTFkN2JmNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVh ZGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTE0MjEsNiAr MTQyMSwyOCBAQCBfcmVhZEFwcGVuZFJlbEluZm8odm9pZCkKICAqCVN0dWZmIGZyb20gcGFyc2Vu b2Rlcy5oLgogICovCiAKKy8qCisgKiBfcmVhZEZvclBvcnRpb25PZkV4cHIKKyAqLworc3RhdGlj IEZvclBvcnRpb25PZkV4cHIgKgorX3JlYWRGb3JQb3J0aW9uT2ZFeHByKHZvaWQpCit7CisJUkVB RF9MT0NBTFMoRm9yUG9ydGlvbk9mRXhwcik7CisKKwlSRUFEX0lOVF9GSUVMRChyYW5nZV9hdHRu byk7CisJUkVBRF9TVFJJTkdfRklFTEQocmFuZ2VfbmFtZSk7CisJUkVBRF9OT0RFX0ZJRUxEKHJh bmdlKTsKKwlSRUFEX05PREVfRklFTEQoc3RhcnRDb2wpOworCVJFQURfTk9ERV9GSUVMRChlbmRD b2wpOworCVJFQURfTk9ERV9GSUVMRCh0YXJnZXRTdGFydCk7CisJUkVBRF9OT0RFX0ZJRUxEKHRh cmdldEVuZCk7CisJUkVBRF9OT0RFX0ZJRUxEKHRhcmdldFJhbmdlKTsKKwlSRUFEX09JRF9GSUVM RChyYW5nZVR5cGUpOworCVJFQURfTk9ERV9GSUVMRChvdmVybGFwc0V4cHIpOworCVJFQURfTk9E RV9GSUVMRChyYW5nZVNldCk7CisJUkVBRF9ET05FKCk7Cit9CisKIC8qCiAgKiBfcmVhZFJhbmdl VGJsRW50cnkKICAqLwpAQCAtMTY5NSw2ICsxNzE3LDcgQEAgX3JlYWRNb2RpZnlUYWJsZSh2b2lk KQogCVJFQURfTk9ERV9GSUVMRChyb3dNYXJrcyk7CiAJUkVBRF9JTlRfRklFTEQoZXBxUGFyYW0p OwogCVJFQURfRU5VTV9GSUVMRChvbkNvbmZsaWN0QWN0aW9uLCBPbkNvbmZsaWN0QWN0aW9uKTsK KwlSRUFEX05PREVfRklFTEQoZm9yUG9ydGlvbk9mKTsKIAlSRUFEX05PREVfRklFTEQoYXJiaXRl ckluZGV4ZXMpOwogCVJFQURfTk9ERV9GSUVMRChvbkNvbmZsaWN0U2V0KTsKIAlSRUFEX05PREVf RklFTEQob25Db25mbGljdENvbHMpOwpAQCAtMjg0NCw2ICsyODY3LDggQEAgcGFyc2VOb2RlU3Ry aW5nKHZvaWQpCiAJCXJldHVybl92YWx1ZSA9IF9yZWFkT25Db25mbGljdEV4cHIoKTsKIAllbHNl IGlmIChNQVRDSCgiQVBQRU5EUkVMSU5GTyIsIDEzKSkKIAkJcmV0dXJuX3ZhbHVlID0gX3JlYWRB cHBlbmRSZWxJbmZvKCk7CisJZWxzZSBpZiAoTUFUQ0goIkZPUlBPUlRJT05PRkVYUFIiLCAxNikp CisJCXJldHVybl92YWx1ZSA9IF9yZWFkRm9yUG9ydGlvbk9mRXhwcigpOwogCWVsc2UgaWYgKE1B VENIKCJSVEUiLCAzKSkKIAkJcmV0dXJuX3ZhbHVlID0gX3JlYWRSYW5nZVRibEVudHJ5KCk7CiAJ ZWxzZSBpZiAoTUFUQ0goIlJBTkdFVEJMRlVOQ1RJT04iLCAxNikpCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggNDM5ZTZiNjQyNi4uMTZhYWIxNWZmNiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCisrKyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMzExLDcgKzMxMSw4IEBAIHN0 YXRpYyBNb2RpZnlUYWJsZSAqbWFrZV9tb2RpZnl0YWJsZShQbGFubmVySW5mbyAqcm9vdCwgUGxh biAqc3VicGxhbiwKIAkJCQkJCQkJCSBMaXN0ICpyZXN1bHRSZWxhdGlvbnMsCiAJCQkJCQkJCQkg TGlzdCAqdXBkYXRlQ29sbm9zTGlzdHMsCiAJCQkJCQkJCQkgTGlzdCAqd2l0aENoZWNrT3B0aW9u TGlzdHMsIExpc3QgKnJldHVybmluZ0xpc3RzLAotCQkJCQkJCQkJIExpc3QgKnJvd01hcmtzLCBP bkNvbmZsaWN0RXhwciAqb25jb25mbGljdCwgaW50IGVwcVBhcmFtKTsKKwkJCQkJCQkJCSBMaXN0 ICpyb3dNYXJrcywgT25Db25mbGljdEV4cHIgKm9uY29uZmxpY3QsCisJCQkJCQkJCQkgRm9yUG9y dGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mLCBpbnQgZXBxUGFyYW0pOwogc3RhdGljIEdhdGhlck1l cmdlICpjcmVhdGVfZ2F0aGVyX21lcmdlX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJ CQkJCSBHYXRoZXJNZXJnZVBhdGggKmJlc3RfcGF0aCk7CiAKQEAgLTI3NTYsNiArMjc1Nyw3IEBA IGNyZWF0ZV9tb2RpZnl0YWJsZV9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNb2RpZnlUYWJsZVBh dGggKmJlc3RfcGF0aCkKIAkJCQkJCQliZXN0X3BhdGgtPnJldHVybmluZ0xpc3RzLAogCQkJCQkJ CWJlc3RfcGF0aC0+cm93TWFya3MsCiAJCQkJCQkJYmVzdF9wYXRoLT5vbmNvbmZsaWN0LAorCQkJ CQkJCWJlc3RfcGF0aC0+Zm9yUG9ydGlvbk9mLAogCQkJCQkJCWJlc3RfcGF0aC0+ZXBxUGFyYW0p OwogCiAJY29weV9nZW5lcmljX3BhdGhfaW5mbygmcGxhbi0+cGxhbiwgJmJlc3RfcGF0aC0+cGF0 aCk7CkBAIC02ODc5LDcgKzY4ODEsOCBAQCBtYWtlX21vZGlmeXRhYmxlKFBsYW5uZXJJbmZvICpy b290LCBQbGFuICpzdWJwbGFuLAogCQkJCSBMaXN0ICpyZXN1bHRSZWxhdGlvbnMsCiAJCQkJIExp c3QgKnVwZGF0ZUNvbG5vc0xpc3RzLAogCQkJCSBMaXN0ICp3aXRoQ2hlY2tPcHRpb25MaXN0cywg TGlzdCAqcmV0dXJuaW5nTGlzdHMsCi0JCQkJIExpc3QgKnJvd01hcmtzLCBPbkNvbmZsaWN0RXhw ciAqb25jb25mbGljdCwgaW50IGVwcVBhcmFtKQorCQkJCSBMaXN0ICpyb3dNYXJrcywgT25Db25m bGljdEV4cHIgKm9uY29uZmxpY3QsCisJCQkJIEZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25P ZiwgaW50IGVwcVBhcmFtKQogewogCU1vZGlmeVRhYmxlICpub2RlID0gbWFrZU5vZGUoTW9kaWZ5 VGFibGUpOwogCUxpc3QJICAgKmZkd19wcml2YXRlX2xpc3Q7CkBAIC02OTQ0LDYgKzY5NDcsNyBA QCBtYWtlX21vZGlmeXRhYmxlKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpzdWJwbGFuLAogCQlu b2RlLT5leGNsUmVsVGxpc3QgPSBvbmNvbmZsaWN0LT5leGNsUmVsVGxpc3Q7CiAJfQogCW5vZGUt PnVwZGF0ZUNvbG5vc0xpc3RzID0gdXBkYXRlQ29sbm9zTGlzdHM7CisJbm9kZS0+Zm9yUG9ydGlv bk9mID0gKE5vZGUgKikgZm9yUG9ydGlvbk9mOwogCW5vZGUtPndpdGhDaGVja09wdGlvbkxpc3Rz ID0gd2l0aENoZWNrT3B0aW9uTGlzdHM7CiAJbm9kZS0+cmV0dXJuaW5nTGlzdHMgPSByZXR1cm5p bmdMaXN0czsKIAlub2RlLT5yb3dNYXJrcyA9IHJvd01hcmtzOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vcGxhbm5lci5jCmluZGV4IDE4NjhjNGVmZjQuLmU1ODYwODNjOGYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTE4NTEsNiArMTg1MSw3IEBAIGdyb3VwaW5nX3BsYW5u ZXIoUGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSB0dXBsZV9mcmFjdGlvbikKIAkJCQkJCQkJCQly ZXR1cm5pbmdMaXN0cywKIAkJCQkJCQkJCQlyb3dNYXJrcywKIAkJCQkJCQkJCQlwYXJzZS0+b25D b25mbGljdCwKKwkJCQkJCQkJCQlwYXJzZS0+Zm9yUG9ydGlvbk9mLAogCQkJCQkJCQkJCWFzc2ln bl9zcGVjaWFsX2V4ZWNfcGFyYW0ocm9vdCkpOwogCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9wYXRobm9kZS5jCmluZGV4IDljZTVmOTVlM2IuLmVkNTczYjVmNDMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3V0aWwvcGF0aG5vZGUuYwpAQCAtMzYzMyw3ICszNjMzLDcgQEAgY3JlYXRlX21vZGlm eXRhYmxlX3BhdGgoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCUxp c3QgKnVwZGF0ZUNvbG5vc0xpc3RzLAogCQkJCQkJTGlzdCAqd2l0aENoZWNrT3B0aW9uTGlzdHMs IExpc3QgKnJldHVybmluZ0xpc3RzLAogCQkJCQkJTGlzdCAqcm93TWFya3MsIE9uQ29uZmxpY3RF eHByICpvbmNvbmZsaWN0LAotCQkJCQkJaW50IGVwcVBhcmFtKQorCQkJCQkJRm9yUG9ydGlvbk9m RXhwciAqZm9yUG9ydGlvbk9mLCBpbnQgZXBxUGFyYW0pCiB7CiAJTW9kaWZ5VGFibGVQYXRoICpw YXRobm9kZSA9IG1ha2VOb2RlKE1vZGlmeVRhYmxlUGF0aCk7CiAKQEAgLTM2OTgsNiArMzY5OCw3 IEBAIGNyZWF0ZV9tb2RpZnl0YWJsZV9wYXRoKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpyZWwsCiAJcGF0aG5vZGUtPnJldHVybmluZ0xpc3RzID0gcmV0dXJuaW5nTGlzdHM7CiAJcGF0 aG5vZGUtPnJvd01hcmtzID0gcm93TWFya3M7CiAJcGF0aG5vZGUtPm9uY29uZmxpY3QgPSBvbmNv bmZsaWN0OworCXBhdGhub2RlLT5mb3JQb3J0aW9uT2YgPSBmb3JQb3J0aW9uT2Y7CiAJcGF0aG5v ZGUtPmVwcVBhcmFtID0gZXBxUGFyYW07CiAKIAlyZXR1cm4gcGF0aG5vZGU7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5 emUuYwppbmRleCA0MzhiMDc3MDA0Li45NDYzMGU4MzMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKQEAg LTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNz L3N5c2F0dHIuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgpAQCAtNDQsMTIgKzQ1LDE0IEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNl X3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3RhcmdldC5oIgogI2luY2x1ZGUg InBhcnNlci9wYXJzZV90eXBlLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlci5oIgogI2luY2x1 ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5o IgogI2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVp bHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9xdWVyeWp1 bWJsZS5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3Jl bC5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAKQEAgLTY1LDYgKzY4LDEwIEBAIHN0 YXRpYyBMaXN0ICp0cmFuc2Zvcm1JbnNlcnRSb3coUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpl eHBybGlzdCwKIAkJCQkJCQkJYm9vbCBzdHJpcF9pbmRpcmVjdGlvbik7CiBzdGF0aWMgT25Db25m bGljdEV4cHIgKnRyYW5zZm9ybU9uQ29uZmxpY3RDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLAog CQkJCQkJCQkJCQkJIE9uQ29uZmxpY3RDbGF1c2UgKm9uQ29uZmxpY3RDbGF1c2UpOworc3RhdGlj IE5vZGUgKnRyYW5zZm9ybUZvclBvcnRpb25PZkJvdW5kKE5vZGUgKm4sIGJvb2wgaXNMb3dlckJv dW5kKTsKK3N0YXRpYyBGb3JQb3J0aW9uT2ZFeHByICp0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZDbGF1 c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJCQkJCQkJCQkJCSBpbnQgcnRpbmRleCwKKwkJCQkJ CQkJCQkJCQkgRm9yUG9ydGlvbk9mQ2xhdXNlICpmb3JQb3J0aW9uT2ZDbGF1c2UpOwogc3RhdGlj IGludAljb3VudF9yb3dleHByX2NvbHVtbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHBy KTsKIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtU2VsZWN0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUs IFNlbGVjdFN0bXQgKnN0bXQpOwogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1WYWx1ZXNDbGF1c2Uo UGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpzdG10KTsKQEAgLTc3LDcgKzg0LDggQEAg c3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1SZXR1cm5TdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmV0 dXJuU3RtdCAqc3RtdCk7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybVVwZGF0ZVN0bXQoUGFyc2VT dGF0ZSAqcHN0YXRlLCBVcGRhdGVTdG10ICpzdG10KTsKIHN0YXRpYyBMaXN0ICp0cmFuc2Zvcm1S ZXR1cm5pbmdMaXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqcmV0dXJuaW5nTGlzdCk7CiBz dGF0aWMgTGlzdCAqdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3RhdGUs Ci0JCQkJCQkJCQkgICBMaXN0ICp0YXJnZXRMaXN0KTsKKwkJCQkJCQkJCSAgIExpc3QgKnRhcmdl dExpc3QsCisJCQkJCQkJCQkgICBGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2YpOwogc3Rh dGljIFF1ZXJ5ICp0cmFuc2Zvcm1QTEFzc2lnblN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJ CQkJCQkJUExBc3NpZ25TdG10ICpzdG10KTsKIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtRGVjbGFy ZUN1cnNvclN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLApAQCAtNDMwLDYgKzQzOCw3IEBAIHRyYW5z Zm9ybURlbGV0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWxldGVTdG10ICpzdG10KQogewog CVF1ZXJ5CSAgICpxcnkgPSBtYWtlTm9kZShRdWVyeSk7CiAJUGFyc2VOYW1lc3BhY2VJdGVtICpu c2l0ZW07CisJTm9kZQkgICAqd2hlcmVDbGF1c2U7CiAJTm9kZQkgICAqcXVhbDsKIAogCXFyeS0+ Y29tbWFuZFR5cGUgPSBDTURfREVMRVRFOwpAQCAtNDY4LDcgKzQ3NywyMCBAQCB0cmFuc2Zvcm1E ZWxldGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVsZXRlU3RtdCAqc3RtdCkKIAluc2l0ZW0t PnBfbGF0ZXJhbF9vbmx5ID0gZmFsc2U7CiAJbnNpdGVtLT5wX2xhdGVyYWxfb2sgPSB0cnVlOwog Ci0JcXVhbCA9IHRyYW5zZm9ybVdoZXJlQ2xhdXNlKHBzdGF0ZSwgc3RtdC0+d2hlcmVDbGF1c2Us CisJaWYgKHN0bXQtPmZvclBvcnRpb25PZikKKwkJcXJ5LT5mb3JQb3J0aW9uT2YgPSB0cmFuc2Zv cm1Gb3JQb3J0aW9uT2ZDbGF1c2UocHN0YXRlLCBxcnktPnJlc3VsdFJlbGF0aW9uLCBzdG10LT5m b3JQb3J0aW9uT2YpOworCisJLy8gVE9ETzogRFJZIHdpdGggVVBEQVRFCisJaWYgKHN0bXQtPmZv clBvcnRpb25PZikKKwl7CisJCWlmIChzdG10LT53aGVyZUNsYXVzZSkKKwkJCXdoZXJlQ2xhdXNl ID0gKE5vZGUgKikgbWFrZUJvb2xFeHByKEFORF9FWFBSLCBsaXN0X21ha2UyKHFyeS0+Zm9yUG9y dGlvbk9mLT5vdmVybGFwc0V4cHIsIHN0bXQtPndoZXJlQ2xhdXNlKSwgLTEpOworCQllbHNlCisJ CQl3aGVyZUNsYXVzZSA9IHFyeS0+Zm9yUG9ydGlvbk9mLT5vdmVybGFwc0V4cHI7CisJfQorCWVs c2UKKwkJd2hlcmVDbGF1c2UgPSBzdG10LT53aGVyZUNsYXVzZTsKKwlxdWFsID0gdHJhbnNmb3Jt V2hlcmVDbGF1c2UocHN0YXRlLCB3aGVyZUNsYXVzZSwKIAkJCQkJCQkJRVhQUl9LSU5EX1dIRVJF LCAiV0hFUkUiKTsKIAogCXFyeS0+cmV0dXJuaW5nTGlzdCA9IHRyYW5zZm9ybVJldHVybmluZ0xp c3QocHN0YXRlLCBzdG10LT5yZXR1cm5pbmdMaXN0KTsKQEAgLTEwODUsNyArMTEwNyw3IEBAIHRy YW5zZm9ybU9uQ29uZmxpY3RDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkgKiBOb3cgdHJh bnNmb3JtIHRoZSBVUERBVEUgc3ViZXhwcmVzc2lvbnMuCiAJCSAqLwogCQlvbkNvbmZsaWN0U2V0 ID0KLQkJCXRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QocHN0YXRlLCBvbkNvbmZsaWN0Q2xhdXNl LT50YXJnZXRMaXN0KTsKKwkJCXRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QocHN0YXRlLCBvbkNv bmZsaWN0Q2xhdXNlLT50YXJnZXRMaXN0LCBOVUxMKTsKIAogCQlvbkNvbmZsaWN0V2hlcmUgPSB0 cmFuc2Zvcm1XaGVyZUNsYXVzZShwc3RhdGUsCiAJCQkJCQkJCQkJCSAgIG9uQ29uZmxpY3RDbGF1 c2UtPndoZXJlQ2xhdXNlLApAQCAtMTExNSw2ICsxMTM3LDMzOCBAQCB0cmFuc2Zvcm1PbkNvbmZs aWN0Q2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgor ICogdHJhbnNmb3JtRm9yUG9ydGlvbk9mQm91bmQKKyAqICAgIHRyYW5zZm9ybXMgTUlOVkFMVUUg YW5kIE1BWFZBTFVFIHBzZXVkby1jb2x1bW4gcmVmZXJlbmNlcyB0byBOVUxMCisgKiAgICAod2hp Y2ggcmVwcmVzZW50ICJ1bmJvdW5kZWQiIGluIGEgcmFuZ2UgdHlwZSwgb3RoZXJ3aXNlIHJldHVy bnMKKyAqICAgIGl0cyBpbnB1dCB1bmNoYW5nZWQuCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5z Zm9ybUZvclBvcnRpb25PZkJvdW5kKE5vZGUgKm4sIGJvb2wgaXNMb3dlckJvdW5kKQoreworCWlm IChub2RlVGFnKG4pID09IFRfQ29sdW1uUmVmKQorCXsKKwkJQ29sdW1uUmVmICAqY3JlZiA9IChD b2x1bW5SZWYgKikgbjsKKwkJY2hhcgkgICAqY25hbWUgPSAiIjsKKworCQlpZiAobGlzdF9sZW5n dGgoY3JlZi0+ZmllbGRzKSA9PSAxICYmCisJCQlJc0EobGluaXRpYWwoY3JlZi0+ZmllbGRzKSwg U3RyaW5nKSkKKwkJCWNuYW1lID0gc3RyVmFsKGxpbml0aWFsKGNyZWYtPmZpZWxkcykpOworCisJ CWlmIChzdHJjbXAoIm1pbnZhbHVlIiwgY25hbWUpID09IDApCisJCXsKKwkJCWlmICghaXNMb3dl ckJvdW5kKQorCQkJCWVyZXBvcnQoRVJST1IsIChlcnJtc2coIk1JTlZBTFVFIGNhbiBvbmx5IGJl IHVzZWQgZm9yIHRoZSBsb3dlciBib3VuZCIpKSk7CisJCX0KKwkJZWxzZSBpZiAoc3RyY21wKCJt YXh2YWx1ZSIsIGNuYW1lKSA9PSAwKQorCQl7CisJCQlpZiAoaXNMb3dlckJvdW5kKQorCQkJCWVy ZXBvcnQoRVJST1IsIChlcnJtc2coIk1BWFZBTFVFIGNhbiBvbmx5IGJlIHVzZWQgZm9yIHRoZSB1 cHBlciBib3VuZCIpKSk7CisJCX0KKwkJZWxzZQorCQkJcmV0dXJuIG47CisKKwkJQV9Db25zdCAg ICAqbjIgPSBtYWtlTm9kZShBX0NvbnN0KTsKKwkJbjItPnZhbC50eXBlID0gVF9OdWxsOworCQlu Mi0+bG9jYXRpb24gPSAoKENvbHVtblJlZiAqKW4pLT5sb2NhdGlvbjsKKworCQlyZXR1cm4gKE5v ZGUgKiluMjsKKwl9CisJZWxzZQorCQlyZXR1cm4gbjsKK30KKworLyoKKyAqIHRyYW5zZm9ybUZv clBvcnRpb25PZkNsYXVzZQorICoJICB0cmFuc2Zvcm1zIGEgRm9yUG9ydGlvbk9mQ2xhdXNlIGlu IGFuIFVQREFURS9ERUxFVEUgc3RhdGVtZW50CisgKi8KK3N0YXRpYyBGb3JQb3J0aW9uT2ZFeHBy ICoKK3RyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCisJCQkJ CQkJaW50IHJ0aW5kZXgsCisJCQkJCQkJRm9yUG9ydGlvbk9mQ2xhdXNlICpmb3JQb3J0aW9uT2Yp Cit7CisJUmVsYXRpb24gdGFyZ2V0cmVsID0gcHN0YXRlLT5wX3RhcmdldF9yZWxhdGlvbjsKKwlS YW5nZVRibEVudHJ5ICp0YXJnZXRfcnRlID0gcHN0YXRlLT5wX3RhcmdldF9uc2l0ZW0tPnBfcnRl OworCWNoYXIgKnJhbmdlX25hbWUgPSBmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWU7CisJY2hhciAq cmFuZ2VfdHlwZV9uYW1lOworCWludCByYW5nZV9hdHRubyA9IEludmFsaWRPaWQ7CisJaW50IHN0 YXJ0X2F0dG5vID0gSW52YWxpZE9pZDsKKwlpbnQgZW5kX2F0dG5vID0gSW52YWxpZE9pZDsKKwlj aGFyICpzdGFydGNvbG5hbWUgPSBOVUxMOworCWNoYXIgKmVuZGNvbG5hbWUgPSBOVUxMOworCUZv clBvcnRpb25PZkV4cHIgKnJlc3VsdDsKKwlMaXN0ICp0YXJnZXRMaXN0OworCU9pZCBwa29pZDsK KwlIZWFwVHVwbGUgaW5kZXhUdXBsZTsKKwlGb3JtX3BnX2luZGV4IHBrOworCU5vZGUgKnRhcmdl dF9zdGFydCwgKnRhcmdldF9lbmQ7CisJRnVuY0NhbGwgKmZjOworCisJcmVzdWx0ID0gbWFrZU5v ZGUoRm9yUG9ydGlvbk9mRXhwcik7CisJcmVzdWx0LT5yYW5nZSA9IE5VTEw7CisKKwkvKiBNYWtl IHN1cmUgdGhlIHRhYmxlIGhhcyBhIHByaW1hcnkga2V5ICovCisJcGtvaWQgPSBSZWxhdGlvbkdl dFByaW1hcnlLZXlJbmRleCh0YXJnZXRyZWwpOworCWlmIChwa29pZCA9PSBJbnZhbGlkT2lkKQor CQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9DT0xVTU5fUkVG RVJFTkNFKSwKKwkJCQkgZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgaGF2ZSBhIHRl bXBvcmFsIHByaW1hcnkga2V5IiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBzdGF0 ZS0+cF90YXJnZXRfcmVsYXRpb24pKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwg Zm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uKSkpOworCisJLyogTWFrZSBzdXJlIHRo ZSBwcmltYXJ5IGtleSBpcyBhIHRlbXBvcmFsIGtleSAqLworCS8vIFRPRE86IG5lZWQgYSBsb2Nr IGhlcmU/CisJaW5kZXhUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMShJTkRFWFJFTElELCBPYmplY3RJ ZEdldERhdHVtKHBrb2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGluZGV4VHVwbGUpKQkv KiBzaG91bGQgbm90IGhhcHBlbiAqLworCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxl ZCBmb3IgaW5kZXggJXUiLCBwa29pZCk7CisJcGsgPSAoRm9ybV9wZ19pbmRleCkgR0VUU1RSVUNU KGluZGV4VHVwbGUpOworCisJLyoKKwkgKiBPbmx5IHRlbXBvcmFsIHBrZXkgaW5kZXhlcyBoYXZl IGJvdGggaXNwcmltYXJ5IGFuZCBpc2V4Y2x1c2lvbi4KKwkgKiBDaGVja2luZyB0aG9zZSBzYXZl cyB1cyBmcm9tIHNjYW5uaW5nIHBnX2NvbnN0cmFpbnQKKwkgKiBsaWtlIGluIFJlbGF0aW9uR2V0 RXhjbHVzaW9uSW5mby4KKwkgKi8KKwlpZiAoIShway0+aW5kaXNwcmltYXJ5ICYmIHBrLT5pbmRp c2V4Y2x1c2lvbikpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZB TElEX0NPTFVNTl9SRUZFUkVOQ0UpLAorCQkJCSBlcnJtc2coInJlbGF0aW9uIFwiJXNcIiBkb2Vz IG5vdCBoYXZlIGEgdGVtcG9yYWwgcHJpbWFyeSBrZXkiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocHN0YXRlLT5wX3RhcmdldF9yZWxhdGlvbikpLAorCQkJCSBwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWVfbG9jYXRpb24pKSk7CisKKwkv KgorCSAqIEZpcnN0IGxvb2sgZm9yIGEgcmFuZ2UgY29sdW1uLCB0aGVuIGxvb2sgZm9yIGEgcGVy aW9kLgorCSAqLworCXJhbmdlX2F0dG5vID0gYXR0bmFtZUF0dE51bSh0YXJnZXRyZWwsIHJhbmdl X25hbWUsIGZhbHNlKTsKKwlpZiAocmFuZ2VfYXR0bm8gIT0gSW52YWxpZEF0dHJOdW1iZXIpCisJ eworCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0cih0YXJnZXRyZWwtPnJk X2F0dCwgcmFuZ2VfYXR0bm8gLSAxKTsKKwkJVmFyICp2OworCisJCS8vIFRPRE86IGNoZWNrIGF0 dHItPmF0dGlzZHJvcHBlZCA/CisKKwkJLyogTWFrZSBzdXJlIGl0J3MgYSByYW5nZSBjb2x1bW4g Ki8KKwkJaWYgKCF0eXBlX2lzX3JhbmdlKGF0dHItPmF0dHR5cGlkKSkKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9DT0xVTU5fUkVGRVJFTkNFKSwKKwkJ CQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgaXMgbm90IGEgcmFu Z2UgdHlwZSIsCisJCQkJCQkJcmFuZ2VfbmFtZSwKKwkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShwc3RhdGUtPnBfdGFyZ2V0X3JlbGF0aW9uKSksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRp b24ocHN0YXRlLCBmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWVfbG9jYXRpb24pKSk7CisKKwkJLyog TWFrZSBzdXJlIHRoZSByYW5nZSBhdHRyaWJ1dGUgaXMgdGhlIGxhc3QgcGFydCBvZiB0aGUgcGtl eS4gKi8KKwkJaWYgKHJhbmdlX2F0dG5vICE9IHBrLT5pbmRrZXkudmFsdWVzW3BrLT5pbmRua2V5 YXR0cyAtIDFdKQorCQl7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfQ09MVU1OX1JFRkVSRU5DRSksCisJCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIg aXMgbm90IHRoZSB0ZW1wb3JhbCBwYXJ0IG9mIHRoZSBwcmltYXJ5IGtleSBmb3IgcmVsYXRpb24g XCIlc1wiIiwKKwkJCQkJCQlyYW5nZV9uYW1lLAorCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHBzdGF0ZS0+cF90YXJnZXRfcmVsYXRpb24pKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlv bihwc3RhdGUsIGZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZV9sb2NhdGlvbikpKTsKKwkJfQorCisJ CXYgPSBtYWtlVmFyKAorCQkJCXJ0aW5kZXgsCisJCQkJcmFuZ2VfYXR0bm8sCisJCQkJYXR0ci0+ YXR0dHlwaWQsCisJCQkJYXR0ci0+YXR0dHlwbW9kLAorCQkJCWF0dHItPmF0dGNvbGxhdGlvbiwK KwkJCQkwKTsKKwkJdi0+bG9jYXRpb24gPSBmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWVfbG9jYXRp b247CisJCXJlc3VsdC0+cmFuZ2UgPSAoRXhwciAqKSB2OworCQlyZXN1bHQtPnJhbmdlVHlwZSA9 IGF0dHItPmF0dHR5cGlkOworCQlyYW5nZV90eXBlX25hbWUgPSBnZXRfdHlwbmFtZShhdHRyLT5h dHR0eXBpZCk7CisKKwl9IGVsc2UgeworCQlPaWQgcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHRh cmdldHJlbCk7CisJCUhlYXBUdXBsZSBwZXJUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMihQRVJJT0RO QU1FLAorCQkJCU9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCVBvaW50ZXJHZXREYXR1bShy YW5nZV9uYW1lKSk7CisJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHBlclR1cGxlKSkKKwkJeworCQkJ Rm9ybV9wZ19wZXJpb2QgcGVyID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QocGVyVHVwbGUp OworCQkJRm9ybV9wZ19hdHRyaWJ1dGUgc3RhcnRhdHRyLCBlbmRhdHRyOworCQkJYm9vbCBwa2V5 SW5jbHVkZXNQZXJpb2QgPSBmYWxzZTsKKwkJCVZhciAqc3RhcnR2YXIsICplbmR2YXI7CisJCQlG dW5jQ2FsbCAqcGVyaW9kUmFuZ2U7CisKKwkJCVR5cGUgcm5ndHlwZSA9IHR5cGVpZFR5cGUocGVy LT5wZXJybmd0eXBlKTsKKwkJCXJhbmdlX3R5cGVfbmFtZSA9IHR5cGVUeXBlTmFtZShybmd0eXBl KTsKKwkJCVJlbGVhc2VTeXNDYWNoZShybmd0eXBlKTsKKwkJCXN0YXJ0X2F0dG5vID0gcGVyLT5w ZXJzdGFydDsKKwkJCWVuZF9hdHRubyA9IHBlci0+cGVyZW5kOworCisJCQlzdGFydGF0dHIgPSBU dXBsZURlc2NBdHRyKHRhcmdldHJlbC0+cmRfYXR0LCBzdGFydF9hdHRubyAtIDEpOworCQkJZW5k YXR0ciA9IFR1cGxlRGVzY0F0dHIodGFyZ2V0cmVsLT5yZF9hdHQsIGVuZF9hdHRubyAtIDEpOwor CisJCQlzdGFydGNvbG5hbWUgPSBOYW1lU3RyKHN0YXJ0YXR0ci0+YXR0bmFtZSk7CisJCQllbmRj b2xuYW1lID0gTmFtZVN0cihlbmRhdHRyLT5hdHRuYW1lKTsKKwkJCXJlc3VsdC0+cGVyaW9kX3N0 YXJ0X25hbWUgPSBzdGFydGNvbG5hbWU7CisJCQlyZXN1bHQtPnBlcmlvZF9lbmRfbmFtZSA9IGVu ZGNvbG5hbWU7CisKKwkJCS8qIE1ha2Ugc3VyZSB0aGUgcGVyaW9kIGlzIHRoZSBsYXN0IHBhcnQg b2YgdGhlIHBrZXkuICovCisJCQlpZiAocGstPmluZGtleS52YWx1ZXNbcGstPmluZG5rZXlhdHRz IC0gMV0gPT0gSW52YWxpZE9pZCkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFRoZSBQSyBlbmRzIHdp dGggYW4gZXhwcmVzc2lvbi4gTWFrZSBzdXJlIGl0J3MgZm9yIG91ciBwZXJpb2QuCisJCQkJICog VGhlcmUgc2hvdWxkIGJlIG9ubHkgb25lIGVudHJ5IGluIGluZGV4cHJzLCBhbmQgaXQgc2hvdWxk IGJlIG91cnMuCisJCQkJICovCisJCQkJcGtleUluY2x1ZGVzUGVyaW9kID0gcGstPmluZHBlcmlv ZCA9PSBwZXItPm9pZDsKKwkJCX0KKworCQkJaWYgKCFwa2V5SW5jbHVkZXNQZXJpb2QpCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9DT0xVTU5fUkVG RVJFTkNFKSwKKwkJCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgaXMgbm90IHRoZSB0ZW1wb3Jh bCBwYXJ0IG9mIHRoZSBwcmltYXJ5IGtleSBmb3IgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJCQkJ cmFuZ2VfbmFtZSwKKwkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocHN0YXRlLT5wX3Rh cmdldF9yZWxhdGlvbikpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGZvclBv cnRpb25PZi0+cmFuZ2VfbmFtZV9sb2NhdGlvbikpKTsKKworCQkJc3RhcnR2YXIgPSBtYWtlVmFy KAorCQkJCQlydGluZGV4LAorCQkJCQlwZXItPnBlcnN0YXJ0LAorCQkJCQlzdGFydGF0dHItPmF0 dHR5cGlkLAorCQkJCQlzdGFydGF0dHItPmF0dHR5cG1vZCwKKwkJCQkJc3RhcnRhdHRyLT5hdHRj b2xsYXRpb24sCisJCQkJCTApOworCQkJc3RhcnR2YXItPmxvY2F0aW9uID0gZm9yUG9ydGlvbk9m LT5yYW5nZV9uYW1lX2xvY2F0aW9uOworCisJCQllbmR2YXIgPSBtYWtlVmFyKAorCQkJCQlydGlu ZGV4LAorCQkJCQlwZXItPnBlcmVuZCwKKwkJCQkJZW5kYXR0ci0+YXR0dHlwaWQsCisJCQkJCWVu ZGF0dHItPmF0dHR5cG1vZCwKKwkJCQkJZW5kYXR0ci0+YXR0Y29sbGF0aW9uLAorCQkJCQkwKTsK KwkJCWVuZHZhci0+bG9jYXRpb24gPSBmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWVfbG9jYXRpb247 CisKKwkJCVJlbGVhc2VTeXNDYWNoZShwZXJUdXBsZSk7CisKKwkJCXBlcmlvZFJhbmdlID0gbWFr ZUZ1bmNDYWxsKFN5c3RlbUZ1bmNOYW1lKHJhbmdlX3R5cGVfbmFtZSksCisJCQkJCQkJCWxpc3Rf bWFrZTIoc3RhcnR2YXIsIGVuZHZhciksCisJCQkJCQkJCUNPRVJDRV9FWFBMSUNJVF9DQUxMLAor CQkJCQkJCQlmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWVfbG9jYXRpb24pOworCQkJcmVzdWx0LT5y YW5nZSA9IChFeHByICopIHBlcmlvZFJhbmdlOworCQkJcmVzdWx0LT5yYW5nZVR5cGUgPSB0eXBl bmFtZVR5cGVJZChwc3RhdGUsIHR5cGVTdHJpbmdUb1R5cGVOYW1lKHJhbmdlX3R5cGVfbmFtZSkp OworCQl9CisJfQorCVJlbGVhc2VTeXNDYWNoZShpbmRleFR1cGxlKTsKKworCWlmIChyZXN1bHQt PnJhbmdlID09IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9V TkRFRklORURfQ09MVU1OKSwKKwkJCQkgZXJybXNnKCJjb2x1bW4gb3IgcGVyaW9kIFwiJXNcIiBv ZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJcmFuZ2VfbmFtZSwKKwkJ CQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBzdGF0ZS0+cF90YXJnZXRfcmVsYXRpb24pKSwK KwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1l X2xvY2F0aW9uKSkpOworCisJLyoKKwkgKiBCdWlsZCBhIHJhbmdlIGZyb20gdGhlIEZST00gLi4u IFRPIC4uLi4gYm91bmRzLgorCSAqIFRoaXMgc2hvdWxkIGdpdmUgYSBjb25zdGFudCByZXN1bHQs IHNvIHdlIGFjY2VwdCBmdW5jdGlvbnMgbGlrZSBOT1coKQorCSAqIGJ1dCBub3QgY29sdW1uIHJl ZmVyZW5jZXMsIHN1YnF1ZXJpZXMsIGV0Yy4KKwkgKgorCSAqIEl0IGFsc28gcGVybWl0cyBNSU5W QUxVRSBhbmQgTUFYVkFMVUUgbGlrZSBkZWNsYXJhdGl2ZSBwYXJ0aXRpb25zLgorCSAqLworCXRh cmdldF9zdGFydCA9IHRyYW5zZm9ybUZvclBvcnRpb25PZkJvdW5kKGZvclBvcnRpb25PZi0+dGFy Z2V0X3N0YXJ0LCB0cnVlKTsKKwl0YXJnZXRfZW5kICAgPSB0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZC b3VuZChmb3JQb3J0aW9uT2YtPnRhcmdldF9lbmQsIGZhbHNlKTsKKwlmYyA9IG1ha2VGdW5jQ2Fs bChTeXN0ZW1GdW5jTmFtZShyYW5nZV90eXBlX25hbWUpLAorCQkJCQkJCQlsaXN0X21ha2UyKHRh cmdldF9zdGFydCwgdGFyZ2V0X2VuZCksCisJCQkJCQkJCUNPRVJDRV9FWFBMSUNJVF9DQUxMLAor CQkJCQkJCQlmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWVfbG9jYXRpb24pOworCXJlc3VsdC0+dGFy Z2V0UmFuZ2UgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgKE5vZGUgKikgZmMsIEVYUFJfS0lORF9V UERBVEVfUE9SVElPTik7CisKKwkvKiBvdmVybGFwc0V4cHIgaXMgc29tZXRoaW5nIHdlIGNhbiBh ZGQgdG8gdGhlIHdoZXJlQ2xhdXNlICovCisJcmVzdWx0LT5vdmVybGFwc0V4cHIgPSAoTm9kZSAq KSBtYWtlU2ltcGxlQV9FeHByKEFFWFBSX09QLCAiJiYiLAorCQkJLy8gVE9ETzogTWF5YmUgbmVl ZCBhIGNvcHkgaGVyZT86CisJCQkoTm9kZSAqKSByZXN1bHQtPnJhbmdlLCAoTm9kZSAqKSBmYywK KwkJCWZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZV9sb2NhdGlvbik7CisKKwkvKgorCSAqIE5vdyBt YWtlIHN1cmUgd2UgdXBkYXRlIHRoZSBzdGFydC9lbmQgdGltZSBvZiB0aGUgcmVjb3JkLgorCSAq IEZvciBhIHJhbmdlIGNvbCAocikgdGhpcyBpcyBgciA9IHIgKiB0YXJnZXRSYW5nZWAuCisJICog Rm9yIGEgUEVSSU9EIHdpdGggY29scyAocywgZSkgdGhpcyBpcyBgcyA9IGxvd2VyKHRzcmFuZ2Uo cywgZSkgKiB0YXJnZXRSYW5nZSlgCisJICogYW5kIGBlID0gdXBwZXIodHNyYW5nZShzLCBlKSAq IHRhcmdldFJhbmdlYCAob2YgY291cnNlIG5vdCBuZWNlc3NhcmlseSB3aXRoCisJICogdHNyYW5n ZSwgYnV0IHdpdGggd2hhdGV2ZXIgcmFuZ2UgdHlwZSBpcyB1c2VkIHRoZXJlKSkuCisJICoKKwkg KiBXZSBhbHNvIGNvbXB1dGUgdGhlIHBvc3NpYmxlIGxlZnQtYmVoaW5kIGJpdHMgYXQgdGhlIHN0 YXJ0IGFuZCBlbmQgb2YgdGhlIHR1cGxlLAorCSAqIHNvIHRoYXQgd2UgY2FuIElOU0VSVCB0aGVt IGlmIG5lY2Vzc2FyeS4KKwkgKi8KKwkvLyBUT0RPOiBPbmx5IGRvIHRoaXMgZm9yIFVQREFURSwg bm90IERFTEVURToKKwl0YXJnZXRMaXN0ID0gTklMOworCWlmIChyYW5nZV9hdHRubyAhPSBJbnZh bGlkQXR0ck51bWJlcikKKwl7CisJCUV4cHIgKnJhbmdlU2V0RXhwciA9IChFeHByICopIG1ha2VT aW1wbGVBX0V4cHIoQUVYUFJfT1AsICIqIiwKKwkJCQkvLyBUT0RPOiBNYXliZSBuZWVkIGEgY29w eSBoZXJlPzoKKwkJCQkoTm9kZSAqKSByZXN1bHQtPnJhbmdlLCAoTm9kZSAqKSBmYywKKwkJCQlm b3JQb3J0aW9uT2YtPnJhbmdlX25hbWVfbG9jYXRpb24pOworCQlUYXJnZXRFbnRyeSAqdGxlOwor CisJCXJhbmdlU2V0RXhwciA9IChFeHByICopIHRyYW5zZm9ybUV4cHIocHN0YXRlLCAoTm9kZSAq KSByYW5nZVNldEV4cHIsIEVYUFJfS0lORF9VUERBVEVfUE9SVElPTik7CisJCXRsZSA9IG1ha2VU YXJnZXRFbnRyeShyYW5nZVNldEV4cHIsCisJCQkJCQkJICByYW5nZV9hdHRubywKKwkJCQkJCQkg IHJhbmdlX25hbWUsCisJCQkJCQkJICBmYWxzZSk7CisKKwkJdGFyZ2V0TGlzdCA9IGxhcHBlbmQo dGFyZ2V0TGlzdCwgdGxlKTsKKworCQkvKiBNYXJrIHRoZSByYW5nZSBjb2x1bW4gYXMgcmVxdWly aW5nIHVwZGF0ZSBwZXJtaXNzaW9ucyAqLworCQl0YXJnZXRfcnRlLT51cGRhdGVkQ29scyA9IGJt c19hZGRfbWVtYmVyKHRhcmdldF9ydGUtPnVwZGF0ZWRDb2xzLAorCQkJCQkJCQkJCQkJIHJhbmdl X2F0dG5vIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisKKwl9IGVsc2Ug eworCQlFeHByICppbnRlcnNlY3RFeHByOworCQlFeHByICpib3VuZFNldEV4cHI7CisJCVRhcmdl dEVudHJ5ICp0bGU7CisKKwkJLyogU2V0IHVwIHRhcmdldExpc3QgZm9yIHRoZSBQRVJJT0Qgc3Rh cnQgY29sdW1uICovCisKKwkJaW50ZXJzZWN0RXhwciA9IChFeHByICopIG1ha2VTaW1wbGVBX0V4 cHIoQUVYUFJfT1AsICIqIiwKKwkJCQkvLyBUT0RPOiBjb3B5PworCQkJCShOb2RlICopIHJlc3Vs dC0+cmFuZ2UsIChOb2RlICopIGZjLAorCQkJCWZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZV9sb2Nh dGlvbik7CisKKwkJYm91bmRTZXRFeHByID0gKEV4cHIgKikgbWFrZUZ1bmNDYWxsKFN5c3RlbUZ1 bmNOYW1lKCJsb3dlciIpLAorCQkJCQkJCQlsaXN0X21ha2UxKGludGVyc2VjdEV4cHIpLAorCQkJ CQkJCQlDT0VSQ0VfRVhQTElDSVRfQ0FMTCwKKwkJCQkJCQkJZm9yUG9ydGlvbk9mLT5yYW5nZV9u YW1lX2xvY2F0aW9uKTsKKwkJYm91bmRTZXRFeHByID0gKEV4cHIgKikgdHJhbnNmb3JtRXhwcihw c3RhdGUsIChOb2RlICopIGJvdW5kU2V0RXhwciwgRVhQUl9LSU5EX1VQREFURV9QT1JUSU9OKTsK KworCQl0bGUgPSBtYWtlVGFyZ2V0RW50cnkoYm91bmRTZXRFeHByLAorCQkJCQkJCSAgc3RhcnRf YXR0bm8sCisJCQkJCQkJICBzdGFydGNvbG5hbWUsCisJCQkJCQkJICBmYWxzZSk7CisKKwkJdGFy Z2V0TGlzdCA9IGxhcHBlbmQodGFyZ2V0TGlzdCwgdGxlKTsKKworCQkvKiBTZXQgdXAgdGFyZ2V0 TGlzdCBmb3IgdGhlIFBFUklPRCBlbmQgY29sdW1uICovCisKKwkJYm91bmRTZXRFeHByID0gKEV4 cHIgKikgbWFrZUZ1bmNDYWxsKFN5c3RlbUZ1bmNOYW1lKCJ1cHBlciIpLAorCQkJCQkJCQlsaXN0 X21ha2UxKGludGVyc2VjdEV4cHIpLAorCQkJCQkJCQlDT0VSQ0VfRVhQTElDSVRfQ0FMTCwKKwkJ CQkJCQkJZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uKTsKKwkJYm91bmRTZXRFeHBy ID0gKEV4cHIgKikgdHJhbnNmb3JtRXhwcihwc3RhdGUsIChOb2RlICopIGJvdW5kU2V0RXhwciwg RVhQUl9LSU5EX1VQREFURV9QT1JUSU9OKTsKKworCQl0bGUgPSBtYWtlVGFyZ2V0RW50cnkoYm91 bmRTZXRFeHByLAorCQkJCQkJCSAgZW5kX2F0dG5vLAorCQkJCQkJCSAgZW5kY29sbmFtZSwKKwkJ CQkJCQkgIGZhbHNlKTsKKworCQl0YXJnZXRMaXN0ID0gbGFwcGVuZCh0YXJnZXRMaXN0LCB0bGUp OworCisJCS8qIE1hcmsgdGhlIGJvdW5kIGNvbHVtbnMgYXMgcmVxdWlyaW5nIHVwZGF0ZSBwZXJt aXNzaW9ucyAqLworCQl0YXJnZXRfcnRlLT51cGRhdGVkQ29scyA9IGJtc19hZGRfbWVtYmVyKHRh cmdldF9ydGUtPnVwZGF0ZWRDb2xzLAorCQkJCQkJCQkJCQkJIHN0YXJ0X2F0dG5vIC0gRmlyc3RM b3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJCXRhcmdldF9ydGUtPnVwZGF0ZWRDb2xz ID0gYm1zX2FkZF9tZW1iZXIodGFyZ2V0X3J0ZS0+dXBkYXRlZENvbHMsCisJCQkJCQkJCQkJCQkg ZW5kX2F0dG5vIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJfQorCisJ cmVzdWx0LT5yYW5nZVNldCA9IHRhcmdldExpc3Q7CisJcmVzdWx0LT5yYW5nZV9uYW1lID0gcmFu Z2VfbmFtZTsKKwlyZXN1bHQtPnJhbmdlX2F0dG5vID0gcmFuZ2VfYXR0bm87CisJcmVzdWx0LT5z dGFydF9hdHRubyA9IHN0YXJ0X2F0dG5vOworCXJlc3VsdC0+ZW5kX2F0dG5vID0gZW5kX2F0dG5v OworCisJcmV0dXJuIHJlc3VsdDsKK30KIAogLyoKICAqIEJ1aWxkT25Db25mbGljdEV4Y2x1ZGVk VGFyZ2V0bGlzdApAQCAtMjMwNyw2ICsyNjYxLDcgQEAgdHJhbnNmb3JtVXBkYXRlU3RtdChQYXJz ZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiB7CiAJUXVlcnkJICAgKnFyeSA9IG1h a2VOb2RlKFF1ZXJ5KTsKIAlQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbTsKKwlOb2RlCSAgICp3 aGVyZUNsYXVzZTsKIAlOb2RlCSAgICpxdWFsOwogCiAJcXJ5LT5jb21tYW5kVHlwZSA9IENNRF9V UERBVEU7CkBAIC0yMzI0LDYgKzI2NzksMTAgQEAgdHJhbnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0 YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAJCQkJCQkJCQkJIHN0bXQtPnJlbGF0aW9u LT5pbmgsCiAJCQkJCQkJCQkJIHRydWUsCiAJCQkJCQkJCQkJIEFDTF9VUERBVEUpOworCisJaWYg KHN0bXQtPmZvclBvcnRpb25PZikKKwkJcXJ5LT5mb3JQb3J0aW9uT2YgPSB0cmFuc2Zvcm1Gb3JQ b3J0aW9uT2ZDbGF1c2UocHN0YXRlLCBxcnktPnJlc3VsdFJlbGF0aW9uLCBzdG10LT5mb3JQb3J0 aW9uT2YpOworCiAJbnNpdGVtID0gcHN0YXRlLT5wX3RhcmdldF9uc2l0ZW07CiAKIAkvKiBzdWJx dWVyaWVzIGluIEZST00gY2Fubm90IGFjY2VzcyB0aGUgcmVzdWx0IHJlbGF0aW9uICovCkBAIC0y MzQwLDcgKzI2OTksMTYgQEAgdHJhbnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUs IFVwZGF0ZVN0bXQgKnN0bXQpCiAJbnNpdGVtLT5wX2xhdGVyYWxfb25seSA9IGZhbHNlOwogCW5z aXRlbS0+cF9sYXRlcmFsX29rID0gdHJ1ZTsKIAotCXF1YWwgPSB0cmFuc2Zvcm1XaGVyZUNsYXVz ZShwc3RhdGUsIHN0bXQtPndoZXJlQ2xhdXNlLAorCWlmIChzdG10LT5mb3JQb3J0aW9uT2YpCisJ eworCQlpZiAoc3RtdC0+d2hlcmVDbGF1c2UpCisJCQl3aGVyZUNsYXVzZSA9IChOb2RlICopIG1h a2VCb29sRXhwcihBTkRfRVhQUiwgbGlzdF9tYWtlMihxcnktPmZvclBvcnRpb25PZi0+b3Zlcmxh cHNFeHByLCBzdG10LT53aGVyZUNsYXVzZSksIC0xKTsKKwkJZWxzZQorCQkJd2hlcmVDbGF1c2Ug PSBxcnktPmZvclBvcnRpb25PZi0+b3ZlcmxhcHNFeHByOworCX0KKwllbHNlCisJCXdoZXJlQ2xh dXNlID0gc3RtdC0+d2hlcmVDbGF1c2U7CisJcXVhbCA9IHRyYW5zZm9ybVdoZXJlQ2xhdXNlKHBz dGF0ZSwgd2hlcmVDbGF1c2UsCiAJCQkJCQkJCUVYUFJfS0lORF9XSEVSRSwgIldIRVJFIik7CiAK IAlxcnktPnJldHVybmluZ0xpc3QgPSB0cmFuc2Zvcm1SZXR1cm5pbmdMaXN0KHBzdGF0ZSwgc3Rt dC0+cmV0dXJuaW5nTGlzdCk7CkBAIC0yMzQ5LDcgKzI3MTcsNyBAQCB0cmFuc2Zvcm1VcGRhdGVT dG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCkKIAkgKiBOb3cgd2UgYXJl IGRvbmUgd2l0aCBTRUxFQ1QtbGlrZSBwcm9jZXNzaW5nLCBhbmQgY2FuIGdldCBvbiB3aXRoCiAJ ICogdHJhbnNmb3JtaW5nIHRoZSB0YXJnZXQgbGlzdCB0byBtYXRjaCB0aGUgVVBEQVRFIHRhcmdl dCBjb2x1bW5zLgogCSAqLwotCXFyeS0+dGFyZ2V0TGlzdCA9IHRyYW5zZm9ybVVwZGF0ZVRhcmdl dExpc3QocHN0YXRlLCBzdG10LT50YXJnZXRMaXN0KTsKKwlxcnktPnRhcmdldExpc3QgPSB0cmFu c2Zvcm1VcGRhdGVUYXJnZXRMaXN0KHBzdGF0ZSwgc3RtdC0+dGFyZ2V0TGlzdCwgcXJ5LT5mb3JQ b3J0aW9uT2YpOwogCiAJcXJ5LT5ydGFibGUgPSBwc3RhdGUtPnBfcnRhYmxlOwogCXFyeS0+am9p bnRyZWUgPSBtYWtlRnJvbUV4cHIocHN0YXRlLT5wX2pvaW5saXN0LCBxdWFsKTsKQEAgLTIzNjcs NyArMjczNSw3IEBAIHRyYW5zZm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBVcGRh dGVTdG10ICpzdG10KQogICoJaGFuZGxlIFNFVCBjbGF1c2UgaW4gVVBEQVRFL0lOU0VSVCAuLi4g T04gQ09ORkxJQ1QgVVBEQVRFCiAgKi8KIHN0YXRpYyBMaXN0ICoKLXRyYW5zZm9ybVVwZGF0ZVRh cmdldExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcmlnVGxpc3QpCit0cmFuc2Zvcm1V cGRhdGVUYXJnZXRMaXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqb3JpZ1RsaXN0LCBGb3JQ b3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2YpCiB7CiAJTGlzdAkgICAqdGxpc3QgPSBOSUw7CiAJ UmFuZ2VUYmxFbnRyeSAqdGFyZ2V0X3J0ZTsKQEAgLTI0MTcsNiArMjc4NSw5IEBAIHRyYW5zZm9y bVVwZGF0ZVRhcmdldExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcmlnVGxpc3QpCiAJ CQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocHN0YXRlLT5wX3RhcmdldF9yZWxhdGlvbikp LAogCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3JpZ1RhcmdldC0+bG9jYXRpb24p KSk7CiAKKwkJLyogVE9ETzogTWFrZSBzdXJlIHVzZXIgaXNuJ3QgdHJ5aW5nIHRvIFNFVCB0aGUg cmFuZ2UgYXR0cmlidXRlIGRpcmVjdGx5IC0tLSBUT0RPIG9yIHBlcm1pdCBpdD8/ICovCisKKwog CQl1cGRhdGVUYXJnZXRMaXN0RW50cnkocHN0YXRlLCB0bGUsIG9yaWdUYXJnZXQtPm5hbWUsCiAJ CQkJCQkJICBhdHRybm8sCiAJCQkJCQkJICBvcmlnVGFyZ2V0LT5pbmRpcmVjdGlvbiwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55CmluZGV4IDkwZmZmMDc0MDUuLmRiYzViMzhkMDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMjQ0LDYg KzI0NCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxu YW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJUmFuZ2VWYXIJCQkqcmFuZ2U7CiAJ SW50b0NsYXVzZQkJCSppbnRvOwogCVdpdGhDbGF1c2UJCQkqd2l0aDsKKwlGb3JQb3J0aW9uT2ZD bGF1c2UJKmZvcnBvcnRpb25vZjsKIAlJbmZlckNsYXVzZQkJCSppbmZlcjsKIAlPbkNvbmZsaWN0 Q2xhdXNlCSpvbmNvbmZsaWN0OwogCUFfSW5kaWNlcwkJCSphaW5kOwpAQCAtNTIwLDYgKzUyMSw3 IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBM aXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8amV4cHI+CWpvaW5lZF90YWJsZQog JXR5cGUgPHJhbmdlPglyZWxhdGlvbl9leHByCiAldHlwZSA8cmFuZ2U+CXJlbGF0aW9uX2V4cHJf b3B0X2FsaWFzCisldHlwZSA8Zm9ycG9ydGlvbm9mPiBmb3JfcG9ydGlvbl9vZl9jbGF1c2UKICV0 eXBlIDxub2RlPgl0YWJsZXNhbXBsZV9jbGF1c2Ugb3B0X3JlcGVhdGFibGVfY2xhdXNlCiAldHlw ZSA8dGFyZ2V0Pgl0YXJnZXRfZWwgc2V0X3RhcmdldCBpbnNlcnRfY29sdW1uX2l0ZW0KIApAQCAt Njk0LDcgKzY5Niw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFy ICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJT1ZFUiBPVkVSTEFQUyBP VkVSTEFZIE9WRVJSSURJTkcgT1dORUQgT1dORVIKIAogCVBBUkFMTEVMIFBBUlNFUiBQQVJUSUFM IFBBUlRJVElPTiBQQVNTSU5HIFBBU1NXT1JEIFBFUklPRCBQTEFDSU5HIFBMQU5TIFBPTElDWQot CVBPU0lUSU9OIFBSRUNFRElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJFUEFSRSBQUkVQQVJFRCBQ UklNQVJZCisJUE9SVElPTiBQT1NJVElPTiBQUkVDRURJTkcgUFJFQ0lTSU9OIFBSRVNFUlZFIFBS RVBBUkUgUFJFUEFSRUQgUFJJTUFSWQogCVBSSU9SIFBSSVZJTEVHRVMgUFJPQ0VEVVJBTCBQUk9D RURVUkUgUFJPQ0VEVVJFUyBQUk9HUkFNIFBVQkxJQ0FUSU9OCiAKIAlRVU9URQpAQCAtNzY3LDYg Kzc2OSwxNiBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVs bmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJW5vbmFzc29jCSc8JyAnPicgJz0n IExFU1NfRVFVQUxTIEdSRUFURVJfRVFVQUxTIE5PVF9FUVVBTFMKICVub25hc3NvYwlCRVRXRUVO IElOX1AgTElLRSBJTElLRSBTSU1JTEFSIE5PVF9MQQogJW5vbmFzc29jCUVTQ0FQRQkJCS8qIEVT Q0FQRSBtdXN0IGJlIGp1c3QgYWJvdmUgTElLRS9JTElLRS9TSU1JTEFSICovCisvKgorICogV2Ug bmVlZCB0byBoYW5kbGUgdGhpcyBzaGlmdC9yZWR1Y2UgY29uZmxpY3Q6CisgKiBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NIElOVEVSVkFMIFlFQVIgVE8gTU9OVEggVE8gZm9vLgorICogVGhp cyBpcyBiYXNpY2FsbHkgdGhlIGNsYXNzaWMgImRhbmdsaW5nIGVsc2UiIHByb2JsZW0sIGFuZCB3 ZSB3YW50IGEKKyAqIHNpbWlsYXIgcmVzb2x1dGlvbjogdHJlYXQgdGhlIFRPIGFzIHBhcnQgb2Yg dGhlIElOVEVSVkFMLCBub3QgYXMgcGFydCBvZgorICogdGhlIEZST00gLi4uIFRPIC4uLi4gVXNl cnMgY2FuIGFkZCBwYXJlbnRoZXNlcyBpZiB0aGF0J3MgYSBwcm9ibGVtLgorICogVE8ganVzdCBu ZWVkcyB0byBiZSBoaWdoZXIgcHJlY2VkZW5jZSB0aGFuIFlFQVJfUCBldGMuCisgKi8KKyVub25h c3NvYyBZRUFSX1AgTU9OVEhfUCBEQVlfUCBIT1VSX1AgTUlOVVRFX1AKKyVub25hc3NvYyBUTwog LyoKICAqIFRvIHN1cHBvcnQgdGFyZ2V0X2VsIHdpdGhvdXQgQVMsIGl0IHVzZWQgdG8gYmUgbmVj ZXNzYXJ5IHRvIGFzc2lnbiBJREVOVCBhbgogICogZXhwbGljaXQgcHJlY2VkZW5jZSBqdXN0IGxl c3MgdGhhbiBPcC4gIFdoaWxlIHRoYXQncyBub3QgcmVhbGx5IG5lY2Vzc2FyeQpAQCAtMTExNjEs MTMgKzExMTczLDE1IEBAIHJldHVybmluZ19jbGF1c2U6CiAgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CiAKIERlbGV0ZVN0bXQ6IG9wdF93aXRoX2NsYXVzZSBERUxFVEVfUCBGUk9NIHJlbGF0aW9uX2V4 cHJfb3B0X2FsaWFzCisJCQlmb3JfcG9ydGlvbl9vZl9jbGF1c2UKIAkJCXVzaW5nX2NsYXVzZSB3 aGVyZV9vcl9jdXJyZW50X2NsYXVzZSByZXR1cm5pbmdfY2xhdXNlCiAJCQkJewogCQkJCQlEZWxl dGVTdG10ICpuID0gbWFrZU5vZGUoRGVsZXRlU3RtdCk7CiAJCQkJCW4tPnJlbGF0aW9uID0gJDQ7 Ci0JCQkJCW4tPnVzaW5nQ2xhdXNlID0gJDU7Ci0JCQkJCW4tPndoZXJlQ2xhdXNlID0gJDY7Ci0J CQkJCW4tPnJldHVybmluZ0xpc3QgPSAkNzsKKwkJCQkJbi0+Zm9yUG9ydGlvbk9mID0gJDU7CisJ CQkJCW4tPnVzaW5nQ2xhdXNlID0gJDY7CisJCQkJCW4tPndoZXJlQ2xhdXNlID0gJDc7CisJCQkJ CW4tPnJldHVybmluZ0xpc3QgPSAkODsKIAkJCQkJbi0+d2l0aENsYXVzZSA9ICQxOwogCQkJCQkk JCA9IChOb2RlICopbjsKIAkJCQl9CkBAIC0xMTIzMCw2ICsxMTI0NCw3IEBAIG9wdF9ub3dhaXRf b3Jfc2tpcDoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogVXBkYXRlU3RtdDogb3B0X3dpdGhf Y2xhdXNlIFVQREFURSByZWxhdGlvbl9leHByX29wdF9hbGlhcworCQkJZm9yX3BvcnRpb25fb2Zf Y2xhdXNlCiAJCQlTRVQgc2V0X2NsYXVzZV9saXN0CiAJCQlmcm9tX2NsYXVzZQogCQkJd2hlcmVf b3JfY3VycmVudF9jbGF1c2UKQEAgLTExMjM3LDEwICsxMTI1MiwxMSBAQCBVcGRhdGVTdG10OiBv cHRfd2l0aF9jbGF1c2UgVVBEQVRFIHJlbGF0aW9uX2V4cHJfb3B0X2FsaWFzCiAJCQkJewogCQkJ CQlVcGRhdGVTdG10ICpuID0gbWFrZU5vZGUoVXBkYXRlU3RtdCk7CiAJCQkJCW4tPnJlbGF0aW9u ID0gJDM7Ci0JCQkJCW4tPnRhcmdldExpc3QgPSAkNTsKLQkJCQkJbi0+ZnJvbUNsYXVzZSA9ICQ2 OwotCQkJCQluLT53aGVyZUNsYXVzZSA9ICQ3OwotCQkJCQluLT5yZXR1cm5pbmdMaXN0ID0gJDg7 CisJCQkJCW4tPmZvclBvcnRpb25PZiA9ICQ0OworCQkJCQluLT50YXJnZXRMaXN0ID0gJDY7CisJ CQkJCW4tPmZyb21DbGF1c2UgPSAkNzsKKwkJCQkJbi0+d2hlcmVDbGF1c2UgPSAkODsKKwkJCQkJ bi0+cmV0dXJuaW5nTGlzdCA9ICQ5OwogCQkJCQluLT53aXRoQ2xhdXNlID0gJDE7CiAJCQkJCSQk ID0gKE5vZGUgKiluOwogCQkJCX0KQEAgLTEyNTE4LDYgKzEyNTM0LDE5IEBAIHJlbGF0aW9uX2V4 cHJfb3B0X2FsaWFzOiByZWxhdGlvbl9leHByCQkJCQklcHJlYyBVTUlOVVMKIAkJCQl9CiAJCTsK IAorZm9yX3BvcnRpb25fb2ZfY2xhdXNlOgorCQkJRk9SIFBPUlRJT04gT0YgQ29sSWQgRlJPTSBh X2V4cHIgVE8gYV9leHByCisJCQkJeworCQkJCQlGb3JQb3J0aW9uT2ZDbGF1c2UgKm4gPSBtYWtl Tm9kZShGb3JQb3J0aW9uT2ZDbGF1c2UpOworCQkJCQluLT5yYW5nZV9uYW1lID0gJDQ7CisJCQkJ CW4tPnJhbmdlX25hbWVfbG9jYXRpb24gPSBANDsKKwkJCQkJbi0+dGFyZ2V0X3N0YXJ0ID0gJDY7 CisJCQkJCW4tPnRhcmdldF9lbmQgPSAkODsKKwkJCQkJJCQgPSBuOworCQkJCX0KKwkJCXwgLypF TVBUWSovCQkJCQl7ICQkID0gTlVMTDsgfQorCQk7CisKIC8qCiAgKiBUQUJMRVNBTVBMRSBkZWNv cmF0aW9uIGluIGEgRlJPTSBpdGVtCiAgKi8KQEAgLTE1NzA2LDYgKzE1NzM1LDcgQEAgdW5yZXNl cnZlZF9rZXl3b3JkOgogCQkJfCBQQVNTV09SRAogCQkJfCBQTEFOUwogCQkJfCBQT0xJQ1kKKwkJ CXwgUE9SVElPTgogCQkJfCBQUkVDRURJTkcKIAkJCXwgUFJFUEFSRQogCQkJfCBQUkVQQVJFRApA QCAtMTYyODcsNiArMTYzMTcsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFBMQUNJTkcK IAkJCXwgUExBTlMKIAkJCXwgUE9MSUNZCisJCQl8IFBPUlRJT04KIAkJCXwgUE9TSVRJT04KIAkJ CXwgUFJFQ0VESU5HCiAJCQl8IFBSRVBBUkUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9hZ2cuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYwppbmRleCBhMjVm OGQ1Yjk4Li44MGI5NTFlYzI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf YWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCkBAIC01NTUsNiArNTU1 LDEzIEBAIGNoZWNrX2FnZ2xldmVsc19hbmRfY29uc3RyYWludHMoUGFyc2VTdGF0ZSAqcHN0YXRl LCBOb2RlICpleHByKQogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgogCQkJZXJya2luZCA9 IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT046CisJCQlp ZiAoaXNBZ2cpCisJCQkJZXJyID0gXygiYWdncmVnYXRlIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93 ZWQgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbnMiKTsKKwkJCWVsc2UKKwkJCQllcnIgPSBf KCJncm91cGluZyBvcGVyYXRpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBGT1IgUE9SVElPTiBPRiBl eHByZXNzaW9ucyIpOworCisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVu dGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpAQCAtOTUwLDYgKzk1 Nyw5IEBAIHRyYW5zZm9ybVdpbmRvd0Z1bmNDYWxsKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93 RnVuYyAqd2Z1bmMsCiAJCWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01BUks6CiAJCQllcnJraW5kID0g dHJ1ZTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9VUERBVEVfUE9SVElPTjoKKwkJCWVy ciA9IF8oIndpbmRvdyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIEZPUiBQT1JUSU9OIE9G IGV4cHJlc3Npb25zIik7CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVu dGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9jb2xsYXRlLmMKaW5kZXggNDEzMzUyNmYwNC4uOTk5MWRhM2IzZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYworKysgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfY29sbGF0ZS5jCkBAIC00ODQsNiArNDg0LDcgQEAgYXNzaWduX2NvbGxhdGlvbnNf d2Fsa2VyKE5vZGUgKm5vZGUsIGFzc2lnbl9jb2xsYXRpb25zX2NvbnRleHQgKmNvbnRleHQpCiAJ CWNhc2UgVF9Kb2luRXhwcjoKIAkJY2FzZSBUX0Zyb21FeHByOgogCQljYXNlIFRfT25Db25mbGlj dEV4cHI6CisJCWNhc2UgVF9Gb3JQb3J0aW9uT2ZFeHByOgogCQljYXNlIFRfU29ydEdyb3VwQ2xh dXNlOgogCQkJKHZvaWQpIGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwKIAkJCQkJCQkJCQkg IGFzc2lnbl9jb2xsYXRpb25zX3dhbGtlciwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IGY5 MjhjMzIzMTEuLjU2NWUxMDA1MjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtNTE4LDYg KzUxOCw5IEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJl ZiAqY3JlZikKIAkJY2FzZSBFWFBSX0tJTkRfUEFSVElUSU9OX0JPVU5EOgogCQkJZXJyID0gXygi Y2Fubm90IHVzZSBjb2x1bW4gcmVmZXJlbmNlIGluIHBhcnRpdGlvbiBib3VuZCBleHByZXNzaW9u Iik7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT046CisJCQllcnIg PSBfKCJjYW5ub3QgdXNlIGNvbHVtbiByZWZlcmVuY2UgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVz c2lvbiIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5 IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKQEAgLTE3NjksNiArMTc3Miw5IEBA IHRyYW5zZm9ybVN1YkxpbmsoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTdWJMaW5rICpzdWJsaW5rKQog CQljYXNlIEVYUFJfS0lORF9HRU5FUkFURURfQ09MVU1OOgogCQkJZXJyID0gXygiY2Fubm90IHVz ZSBzdWJxdWVyeSBpbiBjb2x1bW4gZ2VuZXJhdGlvbiBleHByZXNzaW9uIik7CiAJCQlicmVhazsK KwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT046CisJCQllcnIgPSBfKCJjYW5ub3QgdXNl IHN1YnF1ZXJ5IGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb24iKTsKKwkJCWJyZWFrOwogCiAJ CQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUs IHNvIHRoYXQgdGhlCkBAIC0zMDQ0LDYgKzMwNTAsOCBAQCBQYXJzZUV4cHJLaW5kTmFtZShQYXJz ZUV4cHJLaW5kIGV4cHJLaW5kKQogCQljYXNlIEVYUFJfS0lORF9VUERBVEVfU09VUkNFOgogCQlj YXNlIEVYUFJfS0lORF9VUERBVEVfVEFSR0VUOgogCQkJcmV0dXJuICJVUERBVEUiOworCQljYXNl IEVYUFJfS0lORF9VUERBVEVfUE9SVElPTjoKKwkJCXJldHVybiAiRk9SIFBPUlRJT04gT0YiOwog CQljYXNlIEVYUFJfS0lORF9HUk9VUF9CWToKIAkJCXJldHVybiAiR1JPVVAgQlkiOwogCQljYXNl IEVYUFJfS0lORF9PUkRFUl9CWToKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9mdW5jLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCmluZGV4IDNjZWM4ZGU3 ZGEuLjljZTg1YzNiYzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5j LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwpAQCAtMjY1NSw2ICsyNjU1 LDkgQEAgY2hlY2tfc3JmX2NhbGxfcGxhY2VtZW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAq bGFzdF9zcmYsIGludCBsb2NhdGlvbikKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKIAkJ CWVycmtpbmQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1VQREFURV9QT1JU SU9OOgorCQkJZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2Vk IGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb25zIik7CisJCQlicmVhazsKIAogCQkJLyoKIAkJ CSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0 IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jIGIv c3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCmluZGV4IDg4YTllOTVlMzMuLjIw NDA2MjY3MWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIu YworKysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKQEAgLTE1NjgsNiAr MTU2OCw3IEBAIHJld3JpdGVWYWx1ZXNSVEUoUXVlcnkgKnBhcnNldHJlZSwgUmFuZ2VUYmxFbnRy eSAqcnRlLCBpbnQgcnRpLAogLyoKICAqIFJlY29yZCBpbiB0YXJnZXRfcnRlLT5leHRyYVVwZGF0 ZWRDb2xzIHRoZSBpbmRleGVzIG9mIGFueSBnZW5lcmF0ZWQgY29sdW1ucwogICogdGhhdCBkZXBl bmQgb24gYW55IGNvbHVtbnMgbWVudGlvbmVkIGluIHRhcmdldF9ydGUtPnVwZGF0ZWRDb2xzLgor ICogSWYgdGhlIHVwZGF0ZSB1c2VzIEZPUiBQT1JUSU9OIE9GLCBpbmNsdWRlIHRoZSBQSyByYW5n ZS4KICAqLwogdm9pZAogZmlsbF9leHRyYVVwZGF0ZWRDb2xzKFJhbmdlVGJsRW50cnkgKnRhcmdl dF9ydGUsIFJlbGF0aW9uIHRhcmdldF9yZWxhdGlvbikKQEAgLTMwOTksNiArMzEwMCwxOSBAQCBy ZXdyaXRlVGFyZ2V0VmlldyhRdWVyeSAqcGFyc2V0cmVlLCBSZWxhdGlvbiB2aWV3KQogCQkJfQog CQl9CiAKKwkJLy8gVE9ETzogVGhpcyBkb2Vzbid0IGxvb2sgbGlrZSBpdCdzIGdldHRpbmcgdXNl ZDoKKwkJaWYgKHBhcnNldHJlZS0+Zm9yUG9ydGlvbk9mKQorCQl7CisJCQlmb3JlYWNoKGxjLCBw YXJzZXRyZWUtPmZvclBvcnRpb25PZi0+cmFuZ2VTZXQpCisJCQl7CisJCQkJVGFyZ2V0RW50cnkg KnRsZSA9IChUYXJnZXRFbnRyeSAqKSBsZmlyc3QobGMpOworCisJCQkJaWYgKCF0bGUtPnJlc2p1 bmspCisJCQkJCW1vZGlmaWVkX2NvbHMgPSBibXNfYWRkX21lbWJlcihtb2RpZmllZF9jb2xzLAor CQkJCQkJCQkJCQkJICAgdGxlLT5yZXNubyAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVO dW1iZXIpOworCQkJfQorCQl9CisKIAkJYXV0b191cGRhdGVfZGV0YWlsID0gdmlld19jb2xzX2Fy ZV9hdXRvX3VwZGF0YWJsZSh2aWV3cXVlcnksCiAJCQkJCQkJCQkJCQkJCSAgbW9kaWZpZWRfY29s cywKIAkJCQkJCQkJCQkJCQkJICBOVUxMLApAQCAtMzcyNyw2ICszNzQxLDE2IEBAIFJld3JpdGVR dWVyeShRdWVyeSAqcGFyc2V0cmVlLCBMaXN0ICpyZXdyaXRlX2V2ZW50cykKIAkJfQogCQllbHNl IGlmIChldmVudCA9PSBDTURfVVBEQVRFKQogCQl7CisJCQkvKiBVcGRhdGUgRk9SIFBPUlRJT04g T0YgY29sdW1uKHMpIGF1dG9tYXRpY2FsbHkgKi8KKwkJCWlmIChwYXJzZXRyZWUtPmZvclBvcnRp b25PZikKKwkJCXsKKwkJCQlMaXN0Q2VsbCAqdGw7CisJCQkJZm9yZWFjaCh0bCwgcGFyc2V0cmVl LT5mb3JQb3J0aW9uT2YtPnJhbmdlU2V0KQorCQkJCXsKKwkJCQkJVGFyZ2V0RW50cnkgKnRsZSA9 IChUYXJnZXRFbnRyeSAqKSBsZmlyc3QodGwpOworCQkJCQlwYXJzZXRyZWUtPnRhcmdldExpc3Qg PSBsYXBwZW5kKHBhcnNldHJlZS0+dGFyZ2V0TGlzdCwgdGxlKTsKKwkJCQl9CisJCQl9CiAJCQlw YXJzZXRyZWUtPnRhcmdldExpc3QgPQogCQkJCXJld3JpdGVUYXJnZXRMaXN0SVUocGFyc2V0cmVl LT50YXJnZXRMaXN0LAogCQkJCQkJCQkJcGFyc2V0cmVlLT5jb21tYW5kVHlwZSwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5 LmMKaW5kZXggN2EyZGE5ZGFiNC4uNmE0Y2UzODFmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dGNvcC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTE1MjQs NyArMTUyNCw3IEBAIFByb2Nlc3NVdGlsaXR5U2xvdyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJ CQkJCQl0cnVlLAkvKiBjaGVja19yaWdodHMgKi8KIAkJCQkJCQkJCXRydWUsCS8qIGNoZWNrX25v dF9pbl91c2UgKi8KIAkJCQkJCQkJCWZhbHNlLAkvKiBza2lwX2J1aWxkICovCi0JCQkJCQkJCQlm YWxzZSk7IC8qIHF1aWV0ICovCisJCQkJCQkJCQlmYWxzZSk7CS8qIHF1aWV0ICovCiAKIAkJCQkJ LyoKIAkJCQkJICogQWRkIHRoZSBDUkVBVEUgSU5ERVggbm9kZSBpdHNlbGYgdG8gc3Rhc2ggcmln aHQgYXdheTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZSBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZQppbmRleCA0MWI0ODZiY2VmLi5kYzc0MWYyZmM5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvTWFrZWZpbGUKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L01ha2VmaWxlCkBAIC0zOCw2ICszOCw3IEBAIE9CSlMgPSBcCiAJZmxv YXQubyBcCiAJZm9ybWF0X3R5cGUubyBcCiAJZm9ybWF0dGluZy5vIFwKKwlmcF90cmlnZ2Vycy5v IFwKIAlnZW5maWxlLm8gXAogCWdlb19vcHMubyBcCiAJZ2VvX3NlbGZ1bmNzLm8gXApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9yYW5nZXR5cGVzLmMKaW5kZXggODE1MTc1YTY1NC4uNWEzODE3ODQ4NSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jCkBAIC0xMTk1LDYgKzExOTUsNDggQEAgcmFuZ2Vfc3Bs aXRfaW50ZXJuYWwoVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlLCBjb25zdCBSYW5nZVR5cGUgKnIx LCBjb25zdCBSYW5nZVQKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKiByYW5nZV9sZWZ0b3Zl cl9pbnRlcm5hbCAtIFNldHMgb3V0cHV0MSBhbmQgb3V0cHV0MiB0byB0aGUgcmVtYWluaW5nIHBh cnRzIG9mIHIxCisgKiBhZnRlciBzdWJ0cmFjdGluZyByMiwgb3IgaWYgbm90aGluZyBpcyBsZWZ0 IHRoZW4gdG8gdGhlIGVtcHR5IHJhbmdlLgorICogb3V0cHV0MSB3aWxsIGFsd2F5cyBiZSAiYmVm b3JlIiByMiBhbmQgb3V0cHV0MiAiYWZ0ZXIiLgorICovCit2b2lkCityYW5nZV9sZWZ0b3Zlcl9p bnRlcm5hbChUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsIGNvbnN0IFJhbmdlVHlwZSAqcjEsCisJ CQkJCQljb25zdCBSYW5nZVR5cGUgKnIyLCBSYW5nZVR5cGUgKipvdXRwdXQxLCBSYW5nZVR5cGUg KipvdXRwdXQyKQoreworCVJhbmdlQm91bmQJbG93ZXIxLAorCQkJCWxvd2VyMjsKKwlSYW5nZUJv dW5kCXVwcGVyMSwKKwkJCQl1cHBlcjI7CisJYm9vbAkJZW1wdHkxLAorCQkJCWVtcHR5MjsKKwor CXJhbmdlX2Rlc2VyaWFsaXplKHR5cGNhY2hlLCByMSwgJmxvd2VyMSwgJnVwcGVyMSwgJmVtcHR5 MSk7CisJcmFuZ2VfZGVzZXJpYWxpemUodHlwY2FjaGUsIHIyLCAmbG93ZXIyLCAmdXBwZXIyLCAm ZW1wdHkyKTsKKworCWlmIChyYW5nZV9jbXBfYm91bmRzKHR5cGNhY2hlLCAmbG93ZXIxLCAmbG93 ZXIyKSA8IDApCisJeworCQlsb3dlcjIuaW5jbHVzaXZlID0gIWxvd2VyMi5pbmNsdXNpdmU7CisJ CWxvd2VyMi5sb3dlciA9IGZhbHNlOworCQkqb3V0cHV0MSA9IG1ha2VfcmFuZ2UodHlwY2FjaGUs ICZsb3dlcjEsICZsb3dlcjIsIGZhbHNlKTsKKwl9CisJZWxzZQorCXsKKwkJKm91dHB1dDEgPSBt YWtlX2VtcHR5X3JhbmdlKHR5cGNhY2hlKTsKKwl9CisKKwlpZiAocmFuZ2VfY21wX2JvdW5kcyh0 eXBjYWNoZSwgJnVwcGVyMSwgJnVwcGVyMikgPiAwKQorCXsKKwkJdXBwZXIyLmluY2x1c2l2ZSA9 ICF1cHBlcjIuaW5jbHVzaXZlOworCQl1cHBlcjIubG93ZXIgPSB0cnVlOworCQkqb3V0cHV0MiA9 IG1ha2VfcmFuZ2UodHlwY2FjaGUsICZ1cHBlcjIsICZ1cHBlcjEsIGZhbHNlKTsKKwl9CisJZWxz ZQorCXsKKwkJKm91dHB1dDIgPSBtYWtlX2VtcHR5X3JhbmdlKHR5cGNhY2hlKTsKKwl9Cit9CisK IC8qIHJhbmdlIC0+IHJhbmdlIGFnZ3JlZ2F0ZSBmdW5jdGlvbnMgKi8KIAogRGF0dW0KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CmluZGV4IGZkZTI1MWZhNGYuLjgxNWY1Njk2NDEgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdApAQCAtMzgxNSw2ICszODE1LDEyIEBACiAgIHByb3JldHR5cGUgPT4gJ3Ry aWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKICAgcHJvc3JjID0+ICdSSV9GS2V5X25vYWN0aW9u X3VwZCcgfSwKIAorIyBUZW1wb3JhbCBsZWZ0b3ZlcnMgdHJpZ2dlcnMKK3sgb2lkID0+ICc4MTU3 JywgZGVzY3IgPT4gJ3RlbXBvcmFsIGxlZnRvdmVycyB0cmlnZ2VyIGZ1bmN0aW9uJywKKyAgcHJv bmFtZSA9PiAnRlBfaW5zZXJ0X2xlZnRvdmVycycsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJv cmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ0ZQ X2luc2VydF9sZWZ0b3ZlcnMnIH0sCisKIHsgb2lkID0+ICcxNjY2JywKICAgcHJvbmFtZSA9PiAn dmFyYml0ZXEnLCBwcm9sZWFrcHJvb2YgPT4gJ3QnLCBwcm9yZXR0eXBlID0+ICdib29sJywKICAg cHJvYXJndHlwZXMgPT4gJ3ZhcmJpdCB2YXJiaXQnLCBwcm9zcmMgPT4gJ2JpdGVxJyB9LApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmggYi9zcmMvaW5jbHVkZS9j b21tYW5kcy90YWJsZWNtZHMuaAppbmRleCA2YTUxNDI2MDU2Li5kMmYyZjEwNjFlIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaAorKysgYi9zcmMvaW5jbHVkZS9j b21tYW5kcy90YWJsZWNtZHMuaApAQCAtNDEsNiArNDEsOCBAQCBleHRlcm4gdm9pZCBBVEV4ZWND aGFuZ2VPd25lcihPaWQgcmVsYXRpb25PaWQsIE9pZCBuZXdPd25lcklkLCBib29sIHJlY3Vyc2lu ZywgTAogZXh0ZXJuIHZvaWQgQWx0ZXJUYWJsZUludGVybmFsKE9pZCByZWxpZCwgTGlzdCAqY21k cywgYm9vbCByZWN1cnNlLAogCQkJCQkJCSAgIHN0cnVjdCBBbHRlclRhYmxlVXRpbGl0eUNvbnRl eHQgKmNvbnRleHQpOwogCitleHRlcm4gdm9pZCBDcmVhdGVUZW1wb3JhbFByaW1hcnlLZXlUcmln Z2VycyhSZWxhdGlvbiByZWwsIE9pZCBjb25zdHJhaW50T2lkLCBPaWQgaW5kZXhPaWQpOworCiBl eHRlcm4gT2lkCUFsdGVyVGFibGVNb3ZlQWxsKEFsdGVyVGFibGVNb3ZlQWxsU3RtdCAqc3RtdCk7 CiAKIGV4dGVybiBPYmplY3RBZGRyZXNzIEFsdGVyVGFibGVOYW1lc3BhY2UoQWx0ZXJPYmplY3RT Y2hlbWFTdG10ICpzdG10LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dl ci5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCmluZGV4IDllNTU3Y2ZiY2UuLjUy NGY5NGViMmEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaAorKysg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKQEAgLTQwLDYgKzQwLDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgVHJpZ2dlckRhdGEKIAlUdXBsZXN0b3Jlc3RhdGUgKnRnX29sZHRhYmxlOwogCVR1 cGxlc3RvcmVzdGF0ZSAqdGdfbmV3dGFibGU7CiAJY29uc3QgQml0bWFwc2V0ICp0Z191cGRhdGVk Y29sczsKKwlGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWw7CiB9IFRyaWdnZXJEYXRhOwog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA0OTE5ZTVjZTI1Li5hMjFiNWM5ZjQxIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaApAQCAtMjYsMTIgKzI2LDE0IEBACiAjaW5jbHVkZSAic3RvcmFnZS9j b25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVk ZSAidXRpbHMvcXVlcnllbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgInV0aWxzL3JhbmdldHlwZXMu aCIKICNpbmNsdWRlICJ1dGlscy9yZWx0cmlnZ2VyLmgiCiAjaW5jbHVkZSAidXRpbHMvc2hhcmVk dHVwbGVzdG9yZS5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBzaG90LmgiCiAjaW5jbHVkZSAidXRp bHMvc29ydHN1cHBvcnQuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXNvcnQuaCIKICNpbmNsdWRl ICJ1dGlscy90dXBsZXN0b3JlLmgiCisjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKIAogc3Ry dWN0IFBsYW5TdGF0ZTsJCQkJLyogZm9yd2FyZCByZWZlcmVuY2VzIGluIHRoaXMgZmlsZSAqLwog c3RydWN0IFBhcmFsbGVsSGFzaEpvaW5TdGF0ZTsKQEAgLTM4Nyw2ICszODksMjMgQEAgdHlwZWRl ZiBzdHJ1Y3QgT25Db25mbGljdFNldFN0YXRlCiAJRXhwclN0YXRlICAqb2NfV2hlcmVDbGF1c2U7 IC8qIHN0YXRlIGZvciB0aGUgV0hFUkUgY2xhdXNlICovCiB9IE9uQ29uZmxpY3RTZXRTdGF0ZTsK IAorLyoKKyAqIEZvclBvcnRpb25PZlN0YXRlCisgKgorICogRXhlY3V0b3Igc3RhdGUgb2YgYSBG T1IgUE9SVElPTiBPRiBvcGVyYXRpb24uCisgKi8KK3R5cGVkZWYgc3RydWN0IEZvclBvcnRpb25P ZlN0YXRlCit7CisJTm9kZVRhZwkJdHlwZTsKKworCWNoYXIgICAqZnBfcmFuZ2VOYW1lOwkJLyog dGhlIGNvbHVtbi9QRVJJT0QgbmFtZWQgaW4gRk9SIFBPUlRJT04gT0YgKi8KKwlPaWQJCWZwX3Jh bmdlVHlwZTsJCS8qIHRoZSB0eXBlIG9mIHRoZSBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9uICov CisJYm9vbAlmcF9oYXNQZXJpb2Q7CQkvKiB0cnVlIGlmZiB0aGlzIGlzIGEgUEVSSU9EIG5vdCBh IHJhbmdlICovCisJY2hhciAgICpmcF9wZXJpb2RTdGFydE5hbWU7CS8qIHRoZSBQRVJJT0QncyBz dGFydCBjb2x1bW4gKi8KKwljaGFyICAgKmZwX3BlcmlvZEVuZE5hbWU7CS8qIHRoZSBQRVJJT0Qn cyBlbmQgY29sdW1uICovCisJRGF0dW0JZnBfdGFyZ2V0UmFuZ2U7CQkvKiB0aGUgcmFuZ2UgZnJv bSBGT1IgUE9SVElPTiBPRiAqLworfSBGb3JQb3J0aW9uT2ZTdGF0ZTsKKwogLyoKICAqIFJlc3Vs dFJlbEluZm8KICAqCkBAIC00OTgsNiArNTE3LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVzdWx0UmVs SW5mbwogCS8qIE9OIENPTkZMSUNUIGV2YWx1YXRpb24gc3RhdGUgKi8KIAlPbkNvbmZsaWN0U2V0 U3RhdGUgKnJpX29uQ29uZmxpY3Q7CiAKKwkvKiBGT1IgUE9SVElPTiBPRiBldmFsdWF0aW9uIHN0 YXRlICovCisJRm9yUG9ydGlvbk9mU3RhdGUgKnJpX2ZvclBvcnRpb25PZjsKKwogCS8qIHBhcnRp dGlvbiBjaGVjayBleHByZXNzaW9uIHN0YXRlIChOVUxMIGlmIG5vdCBzZXQgdXAgeWV0KSAqLwog CUV4cHJTdGF0ZSAgKnJpX1BhcnRpdGlvbkNoZWNrRXhwcjsKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKaW5kZXggNGIx MmE4ZDM2NS4uMWQzNDBiNTMyMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCkBAIC0zNSw2ICszNSw3IEBAIHR5cGVk ZWYgZW51bSBOb2RlVGFnCiAJVF9Qcm9qZWN0aW9uSW5mbywKIAlUX0p1bmtGaWx0ZXIsCiAJVF9P bkNvbmZsaWN0U2V0U3RhdGUsCisJVF9Gb3JQb3J0aW9uT2ZTdGF0ZSwKIAlUX1Jlc3VsdFJlbElu Zm8sCiAJVF9FU3RhdGUsCiAJVF9UdXBsZVRhYmxlU2xvdCwKQEAgLTIwMSw2ICsyMDIsNyBAQCB0 eXBlZGVmIGVudW0gTm9kZVRhZwogCVRfSm9pbkV4cHIsCiAJVF9Gcm9tRXhwciwKIAlUX09uQ29u ZmxpY3RFeHByLAorCVRfRm9yUG9ydGlvbk9mRXhwciwKIAlUX0ludG9DbGF1c2UsCiAKIAkvKgpA QCAtNDgzLDYgKzQ4NSw3IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9PbkNvbmZsaWN0Q2xh dXNlLAogCVRfQ1RFU2VhcmNoQ2xhdXNlLAogCVRfQ1RFQ3ljbGVDbGF1c2UsCisJVF9Gb3JQb3J0 aW9uT2ZDbGF1c2UsCiAJVF9Db21tb25UYWJsZUV4cHIsCiAJVF9Sb2xlU3BlYywKIAlUX1RyaWdn ZXJUcmFuc2l0aW9uLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o IGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDJmOTFmZmQyNjkuLmE4NzRk OTY5YWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTEzMCw2ICsxMzAsOCBAQCB0eXBlZGVm IHN0cnVjdCBRdWVyeQogCWludAkJCXJlc3VsdFJlbGF0aW9uOyAvKiBydGFibGUgaW5kZXggb2Yg dGFyZ2V0IHJlbGF0aW9uIGZvcgogCQkJCQkJCQkgKiBJTlNFUlQvVVBEQVRFL0RFTEVURTsgMCBm b3IgU0VMRUNUICovCiAKKwlGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2Y7CS8qIEZPUiBQ T1JUSU9OIE9GIGNsYXVzZSBmb3IgVVBEQVRFL0RFTEVURSAqLworCiAJYm9vbAkJaGFzQWdnczsJ CS8qIGhhcyBhZ2dyZWdhdGVzIGluIHRsaXN0IG9yIGhhdmluZ1F1YWwgKi8KIAlib29sCQloYXNX aW5kb3dGdW5jczsgLyogaGFzIHdpbmRvdyBmdW5jdGlvbnMgaW4gdGxpc3QgKi8KIAlib29sCQlo YXNUYXJnZXRTUkZzOwkvKiBoYXMgc2V0LXJldHVybmluZyBmdW5jdGlvbnMgaW4gdGxpc3QgKi8K QEAgLTE0MTEsNiArMTQxMywxOSBAQCB0eXBlZGVmIHN0cnVjdCBSb3dNYXJrQ2xhdXNlCiAJYm9v bAkJcHVzaGVkRG93bjsJCS8qIHB1c2hlZCBkb3duIGZyb20gaGlnaGVyIHF1ZXJ5IGxldmVsPyAq LwogfSBSb3dNYXJrQ2xhdXNlOwogCisvKgorICogRm9yUG9ydGlvbk9mQ2xhdXNlCisgKgkJcmVw cmVzZW50YXRpb24gb2YgRk9SIFBPUlRJT04gT0YgPHBlcmlvZC1uYW1lPiBGUk9NIDx0MT4gVE8g PHQyPgorICovCit0eXBlZGVmIHN0cnVjdCBGb3JQb3J0aW9uT2ZDbGF1c2UKK3sKKwlOb2RlVGFn CQl0eXBlOworCWNoYXIJICAgKnJhbmdlX25hbWU7CisJaW50CQkJcmFuZ2VfbmFtZV9sb2NhdGlv bjsKKwlOb2RlCSAgICp0YXJnZXRfc3RhcnQ7CisJTm9kZQkgICAqdGFyZ2V0X2VuZDsKK30gRm9y UG9ydGlvbk9mQ2xhdXNlOworCiAvKgogICogV2l0aENsYXVzZSAtCiAgKgkgICByZXByZXNlbnRh dGlvbiBvZiBXSVRIIGNsYXVzZQpAQCAtMTU5MiwxMiArMTYwNywxMyBAQCB0eXBlZGVmIHN0cnVj dCBJbnNlcnRTdG10CiAgKi8KIHR5cGVkZWYgc3RydWN0IERlbGV0ZVN0bXQKIHsKLQlOb2RlVGFn CQl0eXBlOwotCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJLyogcmVsYXRpb24gdG8gZGVsZXRlIGZy b20gKi8KLQlMaXN0CSAgICp1c2luZ0NsYXVzZTsJLyogb3B0aW9uYWwgdXNpbmcgY2xhdXNlIGZv ciBtb3JlIHRhYmxlcyAqLwotCU5vZGUJICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFsaWZpY2F0aW9u cyAqLwotCUxpc3QJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8g cmV0dXJuICovCi0JV2l0aENsYXVzZSAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCisJ Tm9kZVRhZwkJCQl0eXBlOworCVJhbmdlVmFyCQkgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0 byBkZWxldGUgZnJvbSAqLworCUZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mOwkvKiBG T1IgUE9SVElPTiBPRiBjbGF1c2UgKi8KKwlMaXN0CQkJICAgKnVzaW5nQ2xhdXNlOwkvKiBvcHRp b25hbCB1c2luZyBjbGF1c2UgZm9yIG1vcmUgdGFibGVzICovCisJTm9kZQkJCSAgICp3aGVyZUNs YXVzZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8KKwlMaXN0CQkJICAgKnJldHVybmluZ0xpc3Q7CS8q IGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCisJV2l0aENsYXVzZQkJICAgKndpdGhD bGF1c2U7CQkvKiBXSVRIIGNsYXVzZSAqLwogfSBEZWxldGVTdG10OwogCiAvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tCkBAIC0xNjA2LDEzICsxNjIyLDE0IEBAIHR5cGVkZWYgc3RydWN0IERlbGV0 ZVN0bXQKICAqLwogdHlwZWRlZiBzdHJ1Y3QgVXBkYXRlU3RtdAogewotCU5vZGVUYWcJCXR5cGU7 Ci0JUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byB1cGRhdGUgKi8KLQlMaXN0 CSAgICp0YXJnZXRMaXN0OwkJLyogdGhlIHRhcmdldCBsaXN0IChvZiBSZXNUYXJnZXQpICovCi0J Tm9kZQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRpb25zICovCi0JTGlzdAkgICAqZnJv bUNsYXVzZTsJCS8qIG9wdGlvbmFsIGZyb20gY2xhdXNlIGZvciBtb3JlIHRhYmxlcyAqLwotCUxp c3QJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICov Ci0JV2l0aENsYXVzZSAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCisJTm9kZVRhZwkJ CQl0eXBlOworCVJhbmdlVmFyCQkgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byB1cGRhdGUg Ki8KKwlGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRpb25PZjsJLyogRk9SIFBPUlRJT04gT0Yg Y2xhdXNlICovCisJTGlzdAkJCSAgICp0YXJnZXRMaXN0OwkJLyogdGhlIHRhcmdldCBsaXN0IChv ZiBSZXNUYXJnZXQpICovCisJTm9kZQkJCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlv bnMgKi8KKwlMaXN0CQkJICAgKmZyb21DbGF1c2U7CQkvKiBvcHRpb25hbCBmcm9tIGNsYXVzZSBm b3IgbW9yZSB0YWJsZXMgKi8KKwlMaXN0CQkJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qgb2Yg ZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCisJV2l0aENsYXVzZQkJICAgKndpdGhDbGF1c2U7CQkv KiBXSVRIIGNsYXVzZSAqLwogfSBVcGRhdGVTdG10OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IGI3YjI4MTdhNWQuLjQyZWU2NThkYzMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhdGhub2Rlcy5oCkBAIC0xODgyLDYgKzE4ODIsNyBAQCB0eXBlZGVmIHN0cnVjdCBNb2Rp ZnlUYWJsZVBhdGgKIAlMaXN0CSAgICpyZXR1cm5pbmdMaXN0czsgLyogcGVyLXRhcmdldC10YWJs ZSBSRVRVUk5JTkcgdGxpc3RzICovCiAJTGlzdAkgICAqcm93TWFya3M7CQkvKiBQbGFuUm93TWFy a3MgKG5vbi1sb2NraW5nIG9ubHkpICovCiAJT25Db25mbGljdEV4cHIgKm9uY29uZmxpY3Q7IC8q IE9OIENPTkZMSUNUIGNsYXVzZSwgb3IgTlVMTCAqLworCUZvclBvcnRpb25PZkV4cHIgKmZvclBv cnRpb25PZjsJLyogRk9SIFBPUlRJT04gT0YgY2xhdXNlIGZvciBVUERBVEUvREVMRVRFICovCiAJ aW50CQkJZXBxUGFyYW07CQkvKiBJRCBvZiBQYXJhbSBmb3IgRXZhbFBsYW5RdWFsIHJlLWV2YWwg Ki8KIH0gTW9kaWZ5VGFibGVQYXRoOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w bGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IGFhYTNiNjVk MDQuLjdkNjAzMjk1Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC0yMzEsNiArMjMxLDggQEAg dHlwZWRlZiBzdHJ1Y3QgTW9kaWZ5VGFibGUKIAlMaXN0CSAgICpyb3dNYXJrczsJCS8qIFBsYW5S b3dNYXJrcyAobm9uLWxvY2tpbmcgb25seSkgKi8KIAlpbnQJCQllcHFQYXJhbTsJCS8qIElEIG9m IFBhcmFtIGZvciBFdmFsUGxhblF1YWwgcmUtZXZhbCAqLwogCU9uQ29uZmxpY3RBY3Rpb24gb25D b25mbGljdEFjdGlvbjsJLyogT04gQ09ORkxJQ1QgYWN0aW9uICovCisJLy8gVE9ETzogSW5zdGVh ZCBvZiByZS11c2luZyBFeHByIGhlcmUsIGJyZWFrIGl0IGludG8gcGllY2VzIGxpa2Ugb25Db25m bGljdHtBY3Rpb24sU2V0LFdoZXJlfT8KKwlOb2RlCSAgICpmb3JQb3J0aW9uT2Y7CS8qIEZPUiBQ T1JUSU9OIE9GIGNsYXVzZSBmb3IgVVBEQVRFL0RFTEVURSAqLwogCUxpc3QJICAgKmFyYml0ZXJJ bmRleGVzOyAvKiBMaXN0IG9mIE9OIENPTkZMSUNUIGFyYml0ZXIgaW5kZXggT0lEcyAgKi8KIAlM aXN0CSAgICpvbkNvbmZsaWN0U2V0OwkvKiBJTlNFUlQgT04gQ09ORkxJQ1QgRE8gVVBEQVRFIHRh cmdldGxpc3QgKi8KIAlMaXN0CSAgICpvbkNvbmZsaWN0Q29sczsgLyogdGFyZ2V0IGNvbHVtbiBu dW1iZXJzIGZvciBvbkNvbmZsaWN0U2V0ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9wcmltbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IDlhZTg1 MWQ4NDcuLjVlZjkzODQ1ZGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBAIC0xNTgxLDQgKzE1ODEs MzEgQEAgdHlwZWRlZiBzdHJ1Y3QgT25Db25mbGljdEV4cHIKIAlMaXN0CSAgICpleGNsUmVsVGxp c3Q7CS8qIHRsaXN0IG9mIHRoZSBFWENMVURFRCBwc2V1ZG8gcmVsYXRpb24gKi8KIH0gT25Db25m bGljdEV4cHI7CiAKKy8qLS0tLS0tLS0tLQorICogRm9yUG9ydGlvbk9mRXhwciAtIHJlcHJlc2Vu dHMgYSBGT1IgUE9SVElPTiBPRiAuLi4gZXhwcmVzc2lvbgorICoKKyAqIFRPRE86IG1vcmUgbm90 ZXMgYXMgbmVlZGVkCisgKi0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBzdHJ1Y3QgRm9yUG9ydGlv bk9mRXhwcgoreworCU5vZGVUYWcJCXR5cGU7CisJaW50CQkJcmFuZ2VfYXR0bm87CQkvKiBSYW5n ZSBjb2x1bW4gbnVtYmVyICovCisJaW50CQkJc3RhcnRfYXR0bm87CQkvKiBQRVJJT0Qgc3RhcnQg Y29sdW1uIG51bWJlciAqLworCWludAkJCWVuZF9hdHRubzsJCQkvKiBQRVJJT0QgZW5kIGNvbHVt biBudW1iZXIgKi8KKwljaGFyCSAgICpyYW5nZV9uYW1lOwkJCS8qIFJhbmdlIG5hbWUgKi8KKwlj aGFyCSAgICpwZXJpb2Rfc3RhcnRfbmFtZTsJLyogUEVSSU9EIHN0YXJ0IGNvbHVtbiBuYW1lICov CisJY2hhcgkgICAqcGVyaW9kX2VuZF9uYW1lOwkvKiBQRVJJT0QgZW5kIGNvbHVtbiBuYW1lICov CisJRXhwcgkgICAqcmFuZ2U7CQkJCS8qIFJhbmdlIGNvbHVtbiBvciBleHByZXNzaW9uICovCisJ Ly8gVE9ETzogSSBkbyByZWFsbHkgdXNlIGFsbCB0aGVzZSBmaWVsZHM/OgorCU5vZGUJICAgKnN0 YXJ0Q29sOwkJCS8qIFN0YXJ0IGNvbHVtbiBpZiB1c2luZyBhIFBFUklPRCAqLworCU5vZGUJICAg KmVuZENvbDsJCQkJLyogRW5kIGNvbHVtbiBpZiB1c2luZyBhIFBFUklPRCAqLworCU5vZGUJICAg KnRhcmdldFN0YXJ0OwkJLyogU2FtZSB0eXBlIGFzIHRoZSByYW5nZSdzIGVsZW1lbnRzICovCisJ Tm9kZQkgICAqdGFyZ2V0RW5kOwkJCS8qIFNhbWUgdHlwZSBhcyB0aGUgcmFuZ2UncyBlbGVtZW50 cyAqLworCU5vZGUJICAgKnRhcmdldFJhbmdlOwkJLyogQSByYW5nZSBmcm9tIHRhcmdldFN0YXJ0 IHRvIHRhcmdldEVuZCAqLworCU9pZAkJCXJhbmdlVHlwZTsJCQkvKiB0eXBlIG9mIHRhcmdldFJh bmdlICovCisJTm9kZQkgICAqb3ZlcmxhcHNFeHByOwkJLyogcmFuZ2UgJiYgdGFyZ2V0UmFuZ2Ug Ki8KKwlMaXN0CSAgICpyYW5nZVNldDsJCQkvKiBMaXN0IG9mIFRhcmdldEVudHJ5cyB0byBzZXQg dGhlIHRpbWUgY29sdW1uKHMpICovCit9IEZvclBvcnRpb25PZkV4cHI7CisKICNlbmRpZgkJCQkJ CQkvKiBQUklNTk9ERVNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Bh dGhub2RlLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaAppbmRleCA1MzI2MWVl OTFmLi44OGEzMGM2ZDA3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5v ZGUuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaApAQCAtMjc1LDcgKzI3 NSw3IEBAIGV4dGVybiBNb2RpZnlUYWJsZVBhdGggKmNyZWF0ZV9tb2RpZnl0YWJsZV9wYXRoKFBs YW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkJTGlzdCAqdXBkYXRlQ29sbm9zTGlzdHMsCiAJ CQkJCQkJCQkJCQlMaXN0ICp3aXRoQ2hlY2tPcHRpb25MaXN0cywgTGlzdCAqcmV0dXJuaW5nTGlz dHMsCiAJCQkJCQkJCQkJCQlMaXN0ICpyb3dNYXJrcywgT25Db25mbGljdEV4cHIgKm9uY29uZmxp Y3QsCi0JCQkJCQkJCQkJCQlpbnQgZXBxUGFyYW0pOworCQkJCQkJCQkJCQkJRm9yUG9ydGlvbk9m RXhwciAqZm9yUG9ydGlvbk9mLCBpbnQgZXBxUGFyYW0pOwogZXh0ZXJuIExpbWl0UGF0aCAqY3Jl YXRlX2xpbWl0X3BhdGgoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJ CQkJCVBhdGggKnN1YnBhdGgsCiAJCQkJCQkJCQlOb2RlICpsaW1pdE9mZnNldCwgTm9kZSAqbGlt aXRDb3VudCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9p bmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCA0M2ZjNTYxMDc1Li43NTQ1MDM4YTlhIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFy c2VyL2t3bGlzdC5oCkBAIC0zMTYsNiArMzE2LDcgQEAgUEdfS0VZV09SRCgicGVyaW9kIiwgUEVS SU9ELCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGxhY2luZyIs IFBMQUNJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwbGFu cyIsIFBMQU5TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJw b2xpY3kiLCBQT0xJQ1ksIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdP UkQoInBvcnRpb24iLCBQT1JUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJwb3NpdGlvbiIsIFBPU0lUSU9OLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgicHJlY2VkaW5nIiwgUFJFQ0VESU5HLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwcmVjaXNpb24iLCBQUkVDSVNJT04sIENPTF9O QU1FX0tFWVdPUkQsIEFTX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3Bh cnNlX25vZGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKaW5kZXggMTUwMGRl MmRkMC4uOWY4NThhMjRhYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25v ZGUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCkBAIC01NSw2ICs1NSw3 IEBAIHR5cGVkZWYgZW51bSBQYXJzZUV4cHJLaW5kCiAJRVhQUl9LSU5EX0lOU0VSVF9UQVJHRVQs CS8qIElOU0VSVCB0YXJnZXQgbGlzdCBpdGVtICovCiAJRVhQUl9LSU5EX1VQREFURV9TT1VSQ0Us CS8qIFVQREFURSBhc3NpZ25tZW50IHNvdXJjZSBpdGVtICovCiAJRVhQUl9LSU5EX1VQREFURV9U QVJHRVQsCS8qIFVQREFURSBhc3NpZ25tZW50IHRhcmdldCBpdGVtICovCisJRVhQUl9LSU5EX1VQ REFURV9QT1JUSU9OLAkvKiBVUERBVEUgRk9SIFBPUlRJT04gT0YgaXRlbSAqLwogCUVYUFJfS0lO RF9HUk9VUF9CWSwJCQkvKiBHUk9VUCBCWSAqLwogCUVYUFJfS0lORF9PUkRFUl9CWSwJCQkvKiBP UkRFUiBCWSAqLwogCUVYUFJfS0lORF9ESVNUSU5DVF9PTiwJCS8qIERJU1RJTkNUIE9OICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmggYi9zcmMvaW5jbHVkZS91 dGlscy9yYW5nZXR5cGVzLmgKaW5kZXggMDRjMzAyYzYxOS4uZDhjMWYxNjU2YSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmFuZ2V0eXBlcy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxz L3JhbmdldHlwZXMuaApAQCAtMTQ3LDUgKzE0Nyw4IEBAIGV4dGVybiBSYW5nZVR5cGUgKm1ha2Vf ZW1wdHlfcmFuZ2UoVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlKTsKIGV4dGVybiBib29sIHJhbmdl X3NwbGl0X2ludGVybmFsKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwgY29uc3QgUmFuZ2VUeXBl ICpyMSwKIAkJCQkJCQkJIGNvbnN0IFJhbmdlVHlwZSAqcjIsIFJhbmdlVHlwZSAqKm91dHB1dDEs CiAJCQkJCQkJCSBSYW5nZVR5cGUgKipvdXRwdXQyKTsKK2V4dGVybiB2b2lkIHJhbmdlX2xlZnRv dmVyX2ludGVybmFsKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwgY29uc3QgUmFuZ2VUeXBlICpy MSwKKwkJCQkJCQkJCWNvbnN0IFJhbmdlVHlwZSAqcjIsIFJhbmdlVHlwZSAqKm91dHB1dDEsCisJ CQkJCQkJCQlSYW5nZVR5cGUgKipvdXRwdXQyKTsKIAogI2VuZGlmCQkJCQkJCS8qIFJBTkdFVFlQ RVNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlv bl9vZi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jNzBiYWFkNjg1Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQK QEAgLTAsMCArMSw2NzQgQEAKKy0tIFRlc3RzIGZvciBVUERBVEUvREVMRVRFIEZPUiBQT1JUSU9O IE9GCistLSBGYWlscyBvbiB0YWJsZXMgd2l0aG91dCBhIHRlbXBvcmFsIFBLOgorQ1JFQVRFIFRB QkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UgUFJJTUFSWSBLRVksCisg IHZhbGlkX2F0IHRzcmFuZ2UgTk9UIE5VTEwsCisgIG5hbWUgdGV4dCBOT1QgTlVMTAorKTsKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE4LTAxLTE1JyBUTyBNQVhWQUxVRQorU0VUIG5hbWUgPSAnZm9vJzsKK0VSUk9SOiAgcmVsYXRp b24gImZvcl9wb3J0aW9uX29mX3Rlc3QiIGRvZXMgbm90IGhhdmUgYSB0ZW1wb3JhbCBwcmltYXJ5 IGtleQorTElORSAyOiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBU TyBNQVhWQUxVRQorICAgICAgICAgICAgICAgICAgICAgICBeCitERUxFVEUgRlJPTSBmb3JfcG9y dGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBU TyBNQVhWQUxVRTsKK0VSUk9SOiAgcmVsYXRpb24gImZvcl9wb3J0aW9uX29mX3Rlc3QiIGRvZXMg bm90IGhhdmUgYSB0ZW1wb3JhbCBwcmltYXJ5IGtleQorTElORSAyOiBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyBNQVhWQUxVRTsKKyAgICAgICAgICAgICAgICAg ICAgICAgXgorRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRFIFRBQkxFIGZv cl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsCisgIHZhbGlkX2F0 IHRzcmFuZ2UgTk9UIE5VTEwsCisgIG5hbWUgdGV4dCBOT1QgTlVMTCwKKwlDT05TVFJBSU5UIGZv cl9wb3J0aW9uX29mX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0CitWQUxVRVMKKygnWzEsMikn LCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0wMyknLCAnb25lJyksCisoJ1sxLDIpJywgJ1syMDE4LTAy LTAzLDIwMTgtMDMtMDMpJywgJ29uZScpLAorKCdbMSwyKScsICdbMjAxOC0wMy0wMywyMDE4LTA0 LTA0KScsICdvbmUnKSwKKygnWzIsMyknLCAnWzIwMTgtMDEtMDEsMjAxOC0wMS0wNSknLCAndHdv JyksCisoJ1szLDQpJywgJ1syMDE4LTAxLTAxLCknLCAndGhyZWUnKSwKKygnWzQsNSknLCAnKCwy MDE4LTA0LTAxKScsICdmb3VyJyksCisoJ1s1LDYpJywgJygsKScsICdmaXZlJykKKzsKKy0tCist LSBVUERBVEUgdGVzdHMKKy0tCistLSBTZXR0aW5nIHdpdGggYSBtaXNzaW5nIGNvbHVtbiBmYWls cworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQg RlJPTSAnMjAxOC0wNi0wMScgVE8gTUFYVkFMVUUKK1NFVCBuYW1lID0gJ2ZvbycKK1dIRVJFIGlk ID0gJ1s1LDYpJzsKK0VSUk9SOiAgY29sdW1uIG9yIHBlcmlvZCAiaW52YWxpZF9hdCIgb2YgcmVs YXRpb24gImZvcl9wb3J0aW9uX29mX3Rlc3QiIGRvZXMgbm90IGV4aXN0CitMSU5FIDI6IEZPUiBQ T1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTUFYVkFMVUUKKyAgICAg ICAgICAgICAgICAgICAgICAgXgorLS0gU2V0dGluZyB0aGUgcmFuZ2UgZmFpbHMKK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2 LTAxJyBUTyBNQVhWQUxVRQorU0VUIHZhbGlkX2F0ID0gJ1sxOTkwLTAxLTAxLDE5OTktMDEtMDEp JworV0hFUkUgaWQgPSAnWzUsNiknOworRVJST1I6ICBtdWx0aXBsZSBhc3NpZ25tZW50cyB0byBz YW1lIGNvbHVtbiAidmFsaWRfYXQiCistLSBTZXR0aW5nIHdpdGggdGltZXN0YW1wcyByZXZlcnNl ZCBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTgtMDYtMDEnIFRPICcyMDE4LTAxLTAxJworU0VUIG5hbWUgPSAndGhyZWVe MScKK1dIRVJFIGlkID0gJ1szLDQpJzsKK0VSUk9SOiAgcmFuZ2UgbG93ZXIgYm91bmQgbXVzdCBi ZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcmFuZ2UgdXBwZXIgYm91bmQKKy0tIFNldHRpbmcgd2l0 aCBNQVhWQUxVRSBsb3dlciBib3VuZCBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTUFYVkFMVUUgVE8gTlVMTAorU0VUIG5hbWUg PSAnbm9wZScKK1dIRVJFIGlkID0gJ1szLDQpJzsKK0VSUk9SOiAgTUFYVkFMVUUgY2FuIG9ubHkg YmUgdXNlZCBmb3IgdGhlIHVwcGVyIGJvdW5kCistLSBTZXR0aW5nIHdpdGggTUlOVkFMVUUgdXBw ZXIgYm91bmQgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gTUlOVkFMVUUKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVS RSBpZCA9ICdbMyw0KSc7CitFUlJPUjogIE1JTlZBTFVFIGNhbiBvbmx5IGJlIHVzZWQgZm9yIHRo ZSBsb3dlciBib3VuZAorLS0gU2V0dGluZyB3aXRoIGEgc3VicXVlcnkgZmFpbHMKK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIChTRUxFQ1Qg JzIwMTgtMDEtMDEnKSBUTyAnMjAxOC0wNi0wMScKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBp ZCA9ICdbMyw0KSc7CitFUlJPUjogIGNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gRk9SIFBPUlRJT04g T0YgZXhwcmVzc2lvbgorTElORSAyOiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIChTRUxF Q1QgJzIwMTgtMDEtMDEnKSBUTyAnMjAxOC0uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCistLSBTZXR0aW5nIHdpdGggYSBjb2x1bW4gZmFpbHMKK1VQREFURSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIGxvd2VyKHZhbGlk X2F0KSBUTyBNQVhWQUxVRQorU0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0gJ1szLDQpJzsK K0VSUk9SOiAgY2Fubm90IHVzZSBjb2x1bW4gcmVmZXJlbmNlIGluIEZPUiBQT1JUSU9OIE9GIGV4 cHJlc3Npb24KK0xJTkUgMjogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBsb3dlcih2YWxp ZF9hdCkgVE8gTUFYVkFMVUUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCistLSBTZXR0aW5nIHdpdGggdGltZXN0YW1wcyBlcXVhbCBkb2VzIG5vdGhpbmcKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE4LTA0LTAxJyBUTyAnMjAxOC0wNC0wMScKK1NFVCBuYW1lID0gJ3RocmVlXjAnCitXSEVSRSBp ZCA9ICdbMyw0KSc7CistLSBVcGRhdGluZyBhIGZpbml0ZS9vcGVuIHBvcnRpb24gd2l0aCBhIGZp bml0ZS9vcGVuIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIE1BWFZBTFVFCitTRVQgbmFtZSA9ICd0 aHJlZV4xJworV0hFUkUgaWQgPSAnWzMsNCknOworLS0gVXBkYXRpbmcgYSBmaW5pdGUvb3BlbiBw b3J0aW9uIHdpdGggYW4gb3Blbi9maW5pdGUgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBNSU5WQUxVRSBUTyAnMjAxOC0wMy0w MScKK1NFVCBuYW1lID0gJ3RocmVlXjInCitXSEVSRSBpZCA9ICdbMyw0KSc7CistLSBVcGRhdGlu ZyBhbiBvcGVuL2Zpbml0ZSBwb3J0aW9uIHdpdGggYW4gb3Blbi9maW5pdGUgdGFyZ2V0CitVUERB VEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBNSU5W QUxVRSBUTyAnMjAxOC0wMi0wMScKK1NFVCBuYW1lID0gJ2ZvdXJeMScKK1dIRVJFIGlkID0gJ1s0 LDUpJzsKKy0tIFVwZGF0aW5nIGFuIG9wZW4vZmluaXRlIHBvcnRpb24gd2l0aCBhIGZpbml0ZS9v cGVuIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTctMDEtMDEnIFRPIE1BWFZBTFVFCitTRVQgbmFtZSA9ICdmb3VyXjIn CitXSEVSRSBpZCA9ICdbNCw1KSc7CistLSBVcGRhdGluZyBhIGZpbml0ZS9maW5pdGUgcG9ydGlv biB3aXRoIGFuIGV4YWN0IGZpdAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTctMDEtMDEnIFRPICcyMDE4LTAyLTAxJworU0VUIG5h bWUgPSAnZm91cl4zJworV0hFUkUgaWQgPSAnWzQsNSknOworLS0gVXBkYXRpbmcgYW4gZW5jbG9z ZWQgc3BhbgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gTUlOVkFMVUUgVE8gTUFYVkFMVUUKK1NFVCBuYW1lID0gJ3R3b14yJworV0hFUkUg aWQgPSAnWzIsMyknOworLS0gVXBkYXRpbmcgYW4gb3Blbi9vcGVuIHBvcnRpb24gd2l0aCBhIGZp bml0ZS9maW5pdGUgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMScgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFt ZSA9ICdmaXZlXjInCitXSEVSRSBpZCA9ICdbNSw2KSc7CistLSBVcGRhdGluZyBhbiBlbmNsb3Nl ZCBzcGFuIHdpdGggc2VwYXJhdGUgcHJvdHJ1ZGluZyBzcGFucworVVBEQVRFIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTctMDEtMDEnIFRPICcy MDIwLTAxLTAxJworU0VUIG5hbWUgPSAnZml2ZV4zJworV0hFUkUgaWQgPSAnWzUsNiknOworLS0g VXBkYXRpbmcgbXVsdGlwbGUgZW5jbG9zZWQgc3BhbnMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVMTAorU0VUIG5hbWUg PSAnb25lXjInCitXSEVSRSBpZCA9ICdbMSwyKSc7CistLSBVcGRhdGluZyB3aXRoIGEgc2hpZnQv cmVkdWNlIGNvbmZsaWN0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQKKyAgRlJPTSAnMjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcx JyBIT1VSIFRPIE1JTlVURQorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV4zJwor V0hFUkUgaWQgPSAnWzEsMiknOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRFUlZB TCAnMicgSE9VUgorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV40JworV0hFUkUg aWQgPSAnWzEsMiknOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiJzIwMTktMDEt MDEnIgorTElORSA0OiAgIFRPICcyMDE5LTAxLTAxJworICAgICAgICAgICAgIF4KK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICgnMjAx OC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcyJyBIT1VSKQorICBUTyAnMjAxOS0wMS0w MScKK1NFVCBuYW1lID0gJ29uZV40JworV0hFUkUgaWQgPSAnWzEsMiknOworLS0gVXBkYXRpbmcg dGhlIG5vbi1yYW5nZSBwYXJ0IG9mIHRoZSBQSzoKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAyLTE1JyBUTyBOVUxMCitTRVQg aWQgPSAnWzYsNyknCitXSEVSRSBpZCA9ICdbMSwyKSc7CistLSBVUERBVEUgd2l0aCBubyBXSEVS RSBjbGF1c2UKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDMwLTAxLTAxJyBUTyBOVUxMCitTRVQgbmFtZSA9IG5hbWUgfHwgJyonOwor U0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsK KyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIG5hbWUgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBbMSwyKSB8IFsiVHVl IEphbiAwMiAwMDowMDowMCAyMDE4IiwiU2F0IEZlYiAwMyAwMDowMDowMCAyMDE4IikgfCBvbmVe MgorIFsxLDIpIHwgWyJTYXQgRmViIDAzIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDE1IDAwOjAw OjAwIDIwMTgiKSB8IG9uZV4yCisgWzIsMykgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIpIHwgdHdvXjIKKyBbMyw0KSB8IFsiTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZV4yCisg WzMsNCkgfCBbIlRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKdW4gMDEgMDA6MDA6MDAg MjAxOCIpIHwgdGhyZWUKKyBbMyw0KSB8IFsiRnJpIEp1biAwMSAwMDowMDowMCAyMDE4IiwiVHVl IEphbiAwMSAwMDowMDowMCAyMDMwIikgfCB0aHJlZV4xCisgWzMsNCkgfCBbIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAzMCIsKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhyZWVeMSoKKyBb NCw1KSB8ICgsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIpICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBmb3VyXjEKKyBbNCw1KSB8IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IiwiVGh1 IEZlYiAwMSAwMDowMDowMCAyMDE4IikgfCBmb3VyXjMKKyBbNCw1KSB8IFsiVGh1IEZlYiAwMSAw MDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4IikgfCBmb3VyXjIKKyBbNSw2 KSB8ICgsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIpICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBmaXZlCisgWzUsNikgfCBbIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIsIk1vbiBKYW4g MDEgMDA6MDA6MDAgMjAxOCIpIHwgZml2ZV4zCisgWzUsNikgfCBbIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgZml2ZV4zCisgWzUsNikgfCBb IlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg Zml2ZV4zCisgWzUsNikgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAzMCIpIHwgZml2ZQorIFs1LDYpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIw MzAiLCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZpdmUqCisgWzYsNykgfCBbIlRodSBG ZWIgMTUgMDA6MDA6MDAgMjAxOCIsIlRodSBNYXIgMDEgMDg6MDE6MDAgMjAxOCIpIHwgb25lXjIK KyBbNiw3KSB8IFsiVGh1IE1hciAwMSAwODowMTowMCAyMDE4IiwiVGh1IE1hciAwMSAxMDowMDow MCAyMDE4IikgfCBvbmVeMworIFs2LDcpIHwgWyJUaHUgTWFyIDAxIDEwOjAwOjAwIDIwMTgiLCJT YXQgTWFyIDAzIDAwOjAwOjAwIDIwMTgiKSB8IG9uZV40CisgWzYsNykgfCBbIlNhdCBNYXIgMDMg MDA6MDA6MDAgMjAxOCIsIldlZCBBcHIgMDQgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjQKKygyMCBy b3dzKQorCistLQorLS0gREVMRVRFIHRlc3RzCistLQorLS0gRGVsZXRpbmcgd2l0aCBhIG1pc3Np bmcgY29sdW1uIGZhaWxzCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiBpbnZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIE5VTEwKK1dIRVJFIGlkID0g J1s1LDYpJzsKK0VSUk9SOiAgY29sdW1uIG9yIHBlcmlvZCAiaW52YWxpZF9hdCIgb2YgcmVsYXRp b24gImZvcl9wb3J0aW9uX29mX3Rlc3QiIGRvZXMgbm90IGV4aXN0CitMSU5FIDI6IEZPUiBQT1JU SU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAorICAgICAgICAgICAg ICAgICAgICAgICBeCistLSBEZWxldGluZyB3aXRoIHRpbWVzdGFtcHMgcmV2ZXJzZWQgZmFpbHMK K0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTgtMDYtMDEnIFRPICcyMDE4LTAxLTAxJworV0hFUkUgaWQgPSAnWzMsNCknOwor RVJST1I6ICByYW5nZSBsb3dlciBib3VuZCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBy YW5nZSB1cHBlciBib3VuZAorLS0gRGVsZXRpbmcgd2l0aCB0aW1lc3RhbXBzIGVxdWFsIGRvZXMg bm90aGluZworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gJzIwMTgtMDQtMDEnCitXSEVSRSBpZCA9ICdb Myw0KSc7CistLSBEZWxldGluZyB3aXRoIGEgY2xvc2VkL2Nsb3NlZCB0YXJnZXQKK0RFTEVURSBG Uk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTgtMDYtMDEnIFRPICcyMDIwLTA2LTAxJworV0hFUkUgaWQgPSAnWzUsNiknOworLS0gRGVsZXRp bmcgd2l0aCBhIGNsb3NlZC9vcGVuIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gTlVMTAor V0hFUkUgaWQgPSAnWzMsNCknOworLS0gRGVsZXRpbmcgd2l0aCBhbiBvcGVuL2Nsb3NlZCB0YXJn ZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gTlVMTCBUTyAnMjAxOC0wMi0wOCcKK1dIRVJFIGlkID0gJ1sxLDIpJzsKKy0tIERl bGV0aW5nIHdpdGggYW4gb3Blbi9vcGVuIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1dIRVJF IGlkID0gJ1s2LDcpJzsKKy0tIERFTEVURSB3aXRoIG5vIFdIRVJFIGNsYXVzZQorREVMRVRFIEZS T00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAy NS0wMS0wMScgVE8gTlVMTDsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRF UiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlk X2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIG5hbWUgICAKKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LQorIFsxLDIpIHwgWyJUaHUgRmViIDA4IDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDE1IDAwOjAw OjAwIDIwMTgiKSB8IG9uZV4yCisgWzIsMykgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIpIHwgdHdvXjIKKyBbMyw0KSB8IFsiTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZV4yCisg WzMsNCkgfCBbIlRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAg MjAxOCIpIHwgdGhyZWUKKyBbNCw1KSB8ICgsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIpICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCBmb3VyXjEKKyBbNCw1KSB8IFsiU3VuIEphbiAwMSAw MDowMDowMCAyMDE3IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikgfCBmb3VyXjMKKyBbNCw1 KSB8IFsiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4 IikgfCBmb3VyXjIKKyBbNSw2KSB8ICgsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIpICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCBmaXZlCisgWzUsNikgfCBbIlN1biBKYW4gMDEgMDA6MDA6 MDAgMjAxNyIsIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIpIHwgZml2ZV4zCisgWzUsNikgfCBb Ik1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKdW4gMDEgMDA6MDA6MDAgMjAxOCIpIHwg Zml2ZV4zCisgWzUsNikgfCBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyNSIpIHwgZml2ZQorKDExIHJvd3MpCisKKy0tIFVQREFURSAuLi4gUkVUVVJO SU5HIHJldHVybnMgb25seSB0aGUgdXBkYXRlZCB2YWx1ZXMgKG5vdCB0aGUgaW5zZXJ0ZWQgc2lk ZSB2YWx1ZXMpCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOC0wMi0wMScgVE8gJzIwMTgtMDItMTUnCitTRVQgbmFtZSA9ICd0aHJl ZV4zJworV0hFUkUgaWQgPSAnWzMsNCknCitSRVRVUk5JTkcgKjsKKyAgaWQgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbmFtZSAg IAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tCisgWzMsNCkgfCBbIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAx OCIsIlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVeMworKDEgcm93KQorCistLSB0 ZXN0IHRoYXQgd2UgcnVuIHRyaWdnZXJzIG9uIHRoZSBVUERBVEUvREVMRVRFZCByb3cgYW5kIHRo ZSBJTlNFUlRlZCByb3dzCitDUkVBVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigp CitSRVRVUk5TIHRyaWdnZXIKK0FTCiskJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICclICUgJSBv ZiAlJywgVEdfV0hFTiwgVEdfT1AsIE5FVy52YWxpZF9hdCwgT0xELnZhbGlkX2F0OworICBJRiBU R19PUCA9ICdERUxFVEUnIFRIRU4KKyAgICBSRVRVUk4gT0xEOworICBFTFNFCisgICAgUkVUVVJO IE5FVzsKKyAgRU5EIElGOworRU5EOworJCQKK0xBTkdVQUdFIHBscGdzcWw7CitDUkVBVEUgVFJJ R0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVmb3JlX2luc2VydAorICBCRUZPUkUgSU5TRVJUIE9O IGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04g Zm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9u X29mX2FmdGVyX2luc2VydAorICBBRlRFUiBJTlNFUlQgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAor ICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2Vy KCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVmb3JlX3VwZGF0ZQorICBC RUZPUkUgVVBEQVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVY RUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworQ1JFQVRFIFRSSUdHRVIg dHJnX2Zvcl9wb3J0aW9uX29mX2FmdGVyX3VwZGF0ZQorICBBRlRFUiBVUERBVEUgT04gZm9yX3Bv cnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9y dGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVm b3JlX2RlbGV0ZQorICBCRUZPUkUgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9S IEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOwor Q1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2FmdGVyX2RlbGV0ZQorICBBRlRFUiBE RUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBG VU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyMS0wMS0wMScgVE8gJzIwMjIt MDEtMDEnCitTRVQgbmFtZSA9ICdmaXZlXjQnCitXSEVSRSBpZCA9ICdbNSw2KSc7CitOT1RJQ0U6 ICBCRUZPUkUgVVBEQVRFIFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIiwiU2F0IEphbiAwMSAw MDowMDowMCAyMDIyIikgb2YgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjUiKQorTk9USUNFOiAgQkVGT1JFIElOU0VSVCBbIk1vbiBKdW4gMDEgMDA6 MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIG9mIDxOVUxMPgorTk9USUNF OiAgQkVGT1JFIElOU0VSVCBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyNSIpIG9mIDxOVUxMPgorTk9USUNFOiAgQUZURVIgSU5TRVJUIFsiTW9uIEp1 biAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgb2YgPE5VTEw+ CitOT1RJQ0U6ICBBRlRFUiBJTlNFUlQgWyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjUiKSBvZiA8TlVMTD4KK05PVElDRTogIEFGVEVSIFVQREFURSBb IkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIsIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIpIG9m IFsiTW9uIEp1biAwMSAwMDowMDowMCAyMDIwIiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikK K0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMjMtMDEtMDEnIFRPICcyMDI0LTAxLTAxJworV0hFUkUgaWQgPSAnWzUsNiknOwor Tk9USUNFOiAgQkVGT1JFIERFTEVURSA8TlVMTD4gb2YgWyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIw MjIiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKQorTk9USUNFOiAgQkVGT1JFIElOU0VSVCBb IlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAyMyIpIG9m IDxOVUxMPgorTk9USUNFOiAgQkVGT1JFIElOU0VSVCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAy NCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIG9mIDxOVUxMPgorTk9USUNFOiAgQUZURVIg SU5TRVJUIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiU3VuIEphbiAwMSAwMDowMDowMCAy MDIzIikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBJTlNFUlQgWyJNb24gSmFuIDAxIDAwOjAw OjAwIDIwMjQiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKSBvZiA8TlVMTD4KK05PVElDRTog IEFGVEVSIERFTEVURSA8TlVMTD4gb2YgWyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjUiKQorU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0 IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAg dmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbmFtZSAgIAorLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tCisgWzEsMikgfCBbIlRodSBGZWIgMDggMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMTUg MDA6MDA6MDAgMjAxOCIpIHwgb25lXjIKKyBbMiwzKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAy MDE4IiwiRnJpIEphbiAwNSAwMDowMDowMCAyMDE4IikgfCB0d29eMgorIFszLDQpIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSB8IHRocmVl XjIKKyBbMyw0KSB8IFsiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAxNSAwMDow MDowMCAyMDE4IikgfCB0aHJlZV4zCisgWzMsNCkgfCBbIlRodSBGZWIgMTUgMDA6MDA6MDAgMjAx OCIsIlRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVeMgorIFszLDQpIHwgWyJUaHUg TWFyIDAxIDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSB8IHRocmVl CisgWzQsNSkgfCAoLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciKSAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgZm91cl4xCisgWzQsNSkgfCBbIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIs IlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgZm91cl4zCisgWzQsNSkgfCBbIlRodSBGZWIg MDEgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgZm91cl4yCisg WzUsNikgfCAoLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciKSAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgZml2ZQorIFs1LDYpIHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciLCJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZpdmVeMworIFs1LDYpIHwgWyJNb24gSmFuIDAxIDAw OjAwOjAwIDIwMTgiLCJGcmkgSnVuIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZpdmVeMworIFs1LDYp IHwgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEi KSB8IGZpdmUKKyBbNSw2KSB8IFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIiwiU2F0IEphbiAw MSAwMDowMDowMCAyMDIyIikgfCBmaXZlXjQKKyBbNSw2KSB8IFsiU2F0IEphbiAwMSAwMDowMDow MCAyMDIyIiwiU3VuIEphbiAwMSAwMDowMDowMCAyMDIzIikgfCBmaXZlCisgWzUsNikgfCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAyNCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwgZml2 ZQorKDE2IHJvd3MpCisKKy0tCistLSBOb3cgcmUtcnVuIHRoZSBzYW1lIHRlc3RzIGJ1dCB3aXRo IGEgUEVSSU9EIGluc3RlYWQgb2YgYSByYW5nZToKKy0tCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9u X29mX3Rlc3Q7CistLSBGYWlscyBvbiB0YWJsZXMgd2l0aG91dCBhIHRlbXBvcmFsIFBLOgorQ1JF QVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UgUFJJTUFSWSBL RVksCisgIHZhbGlkX2Zyb20gdGltZXN0YW1wLAorICB2YWxpZF90aWwgdGltZXN0YW1wLAorICBQ RVJJT0QgRk9SIHZhbGlkX2F0ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorICBuYW1lIHRleHQg Tk9UIE5VTEwKKyk7CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gTUFYVkFMVUUKK1NFVCBuYW1lID0gJ2Zvbyc7 CitFUlJPUjogIHJlbGF0aW9uICJmb3JfcG9ydGlvbl9vZl90ZXN0IiBkb2VzIG5vdCBoYXZlIGEg dGVtcG9yYWwgcHJpbWFyeSBrZXkKK0xJTkUgMjogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOC0wMS0xNScgVE8gTUFYVkFMVUUKKyAgICAgICAgICAgICAgICAgICAgICAgXgorREVM RVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOC0wMS0xNScgVE8gTUFYVkFMVUU7CitFUlJPUjogIHJlbGF0aW9uICJmb3JfcG9ydGlv bl9vZl90ZXN0IiBkb2VzIG5vdCBoYXZlIGEgdGVtcG9yYWwgcHJpbWFyeSBrZXkKK0xJTkUgMjog Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gTUFYVkFMVUU7Cisg ICAgICAgICAgICAgICAgICAgICAgIF4KK0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDsK K0NSRUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdlIE5PVCBO VUxMLAorICB2YWxpZF9mcm9tIHRpbWVzdGFtcCwKKyAgdmFsaWRfdGlsIHRpbWVzdGFtcCwKKyAg UEVSSU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSwKKyAgbmFtZSB0ZXh0 IE5PVCBOVUxMLAorCUNPTlNUUkFJTlQgZm9yX3BvcnRpb25fb2ZfcGsgUFJJTUFSWSBLRVkgKGlk LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9u X29mX3Rlc3QKK1ZBTFVFUworKCdbMSwyKScsICcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDMnLCAn b25lJyksCisoJ1sxLDIpJywgJzIwMTgtMDItMDMnLCAnMjAxOC0wMy0wMycsICdvbmUnKSwKKygn WzEsMiknLCAnMjAxOC0wMy0wMycsICcyMDE4LTA0LTA0JywgJ29uZScpLAorKCdbMiwzKScsICcy MDE4LTAxLTAxJywgJzIwMTgtMDEtMDUnLCAndHdvJyksCisoJ1szLDQpJywgJzIwMTgtMDEtMDEn LCBudWxsLCAndGhyZWUnKSwKKygnWzQsNSknLCBudWxsLCAnMjAxOC0wNC0wMScsICdmb3VyJyks CisoJ1s1LDYpJywgbnVsbCwgbnVsbCwgJ2ZpdmUnKQorOworLS0KKy0tIFVQREFURSB0ZXN0cwor LS0KKy0tIFNldHRpbmcgd2l0aCBhIG1pc3NpbmcgY29sdW1uIGZhaWxzCitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAx JyBUTyBNQVhWQUxVRQorU0VUIG5hbWUgPSAnZm9vJworV0hFUkUgaWQgPSAnWzUsNiknOworRVJS T1I6ICBjb2x1bW4gb3IgcGVyaW9kICJpbnZhbGlkX2F0IiBvZiByZWxhdGlvbiAiZm9yX3BvcnRp b25fb2ZfdGVzdCIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMjogRk9SIFBPUlRJT04gT0YgaW52YWxp ZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBNQVhWQUxVRQorICAgICAgICAgICAgICAgICAgICAg ICBeCistLSBTZXR0aW5nIHRoZSBzdGFydCBjb2x1bW4gZmFpbHMKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBN QVhWQUxVRQorU0VUIHZhbGlkX2Zyb20gPSAnMTk5MC0wMS0wMScKK1dIRVJFIGlkID0gJ1s1LDYp JzsKK0VSUk9SOiAgbXVsdGlwbGUgYXNzaWdubWVudHMgdG8gc2FtZSBjb2x1bW4gInZhbGlkX2Zy b20iCistLSBTZXR0aW5nIHRoZSBlbmQgY29sdW1uIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTUFY VkFMVUUKK1NFVCB2YWxpZF90aWwgPSAnMTk5OS0wMS0wMScKK1dIRVJFIGlkID0gJ1s1LDYpJzsK K0VSUk9SOiAgbXVsdGlwbGUgYXNzaWdubWVudHMgdG8gc2FtZSBjb2x1bW4gInZhbGlkX3RpbCIK Ky0tIFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIHJldmVyc2VkIGZhaWxzCitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScg VE8gJzIwMTgtMDEtMDEnCitTRVQgbmFtZSA9ICd0aHJlZV4xJworV0hFUkUgaWQgPSAnWzMsNCkn OworRVJST1I6ICByYW5nZSBsb3dlciBib3VuZCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0 byByYW5nZSB1cHBlciBib3VuZAorLS0gU2V0dGluZyB3aXRoIGEgc3VicXVlcnkgZmFpbHMKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIChT RUxFQ1QgJzIwMTgtMDEtMDEnKSBUTyAnMjAxOC0wNi0wMScKK1NFVCBuYW1lID0gJ25vcGUnCitX SEVSRSBpZCA9ICdbMyw0KSc7CitFUlJPUjogIGNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gRk9SIFBP UlRJT04gT0YgZXhwcmVzc2lvbgorTElORSAyOiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N IChTRUxFQ1QgJzIwMTgtMDEtMDEnKSBUTyAnMjAxOC0uLi4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCistLSBTZXR0aW5nIHdpdGggYSBjb2x1bW4gZmFpbHMKK1VQREFU RSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIHZhbGlk X2Zyb20gVE8gTUFYVkFMVUUKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMyw0KSc7 CitFUlJPUjogIGNhbm5vdCB1c2UgY29sdW1uIHJlZmVyZW5jZSBpbiBGT1IgUE9SVElPTiBPRiBl eHByZXNzaW9uCitMSU5FIDI6IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gdmFsaWRfZnJv bSBUTyBNQVhWQUxVRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0t IFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIGVxdWFsIGRvZXMgbm90aGluZworVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEn IFRPICcyMDE4LTA0LTAxJworU0VUIG5hbWUgPSAndGhyZWVeMCcKK1dIRVJFIGlkID0gJ1szLDQp JzsKKy0tIFVwZGF0aW5nIGEgZmluaXRlL29wZW4gcG9ydGlvbiB3aXRoIGEgZmluaXRlL29wZW4g dGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTUFYVkFMVUUKK1NFVCBuYW1lID0gJ3RocmVlXjEnCitX SEVSRSBpZCA9ICdbMyw0KSc7CistLSBVcGRhdGluZyBhIGZpbml0ZS9vcGVuIHBvcnRpb24gd2l0 aCBhbiBvcGVuL2Zpbml0ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE1JTlZBTFVFIFRPICcyMDE4LTAzLTAxJworU0VUIG5h bWUgPSAndGhyZWVeMicKK1dIRVJFIGlkID0gJ1szLDQpJzsKKy0tIFVwZGF0aW5nIGFuIG9wZW4v ZmluaXRlIHBvcnRpb24gd2l0aCBhbiBvcGVuL2Zpbml0ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9y dGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE1JTlZBTFVFIFRPICcy MDE4LTAyLTAxJworU0VUIG5hbWUgPSAnZm91cl4xJworV0hFUkUgaWQgPSAnWzQsNSknOworLS0g VXBkYXRpbmcgYW4gb3Blbi9maW5pdGUgcG9ydGlvbiB3aXRoIGEgZmluaXRlL29wZW4gdGFyZ2V0 CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxNy0wMS0wMScgVE8gTUFYVkFMVUUKK1NFVCBuYW1lID0gJ2ZvdXJeMicKK1dIRVJFIGlk ID0gJ1s0LDUpJzsKKy0tIFVwZGF0aW5nIGEgZmluaXRlL2Zpbml0ZSBwb3J0aW9uIHdpdGggYW4g ZXhhY3QgZml0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gJzIwMTgtMDItMDEnCitTRVQgbmFtZSA9ICdmb3Vy XjMnCitXSEVSRSBpZCA9ICdbNCw1KSc7CistLSBVcGRhdGluZyBhbiBlbmNsb3NlZCBzcGFuCitV UERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBN SU5WQUxVRSBUTyBNQVhWQUxVRQorU0VUIG5hbWUgPSAndHdvXjInCitXSEVSRSBpZCA9ICdbMiwz KSc7CistLSBVcGRhdGluZyBhbiBvcGVuL29wZW4gcG9ydGlvbiB3aXRoIGEgZmluaXRlL2Zpbml0 ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE4LTAxLTAxJyBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVe MicKK1dIRVJFIGlkID0gJ1s1LDYpJzsKKy0tIFVwZGF0aW5nIGFuIGVuY2xvc2VkIHNwYW4gd2l0 aCBzZXBhcmF0ZSBwcm90cnVkaW5nIHNwYW5zCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gJzIwMjAtMDEtMDEn CitTRVQgbmFtZSA9ICdmaXZlXjMnCitXSEVSRSBpZCA9ICdbNSw2KSc7CistLSBVcGRhdGluZyBt dWx0aXBsZSBlbmNsb3NlZCBzcGFucworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitTRVQgbmFtZSA9ICdvbmVeMicK K1dIRVJFIGlkID0gJ1sxLDIpJzsKKy0tIFVwZGF0aW5nIHdpdGggYSBzaGlmdC9yZWR1Y2UgY29u ZmxpY3QKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dAorICBGUk9NICcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUgSU5URVJWQUwgJzEnIEhPVVIgVE8g TUlOVVRFCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnb25lXjMnCitXSEVSRSBpZCA9 ICdbMSwyKSc7CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQKKyAgRlJPTSAnMjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcyJyBIT1VS CisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnb25lXjQnCitXSEVSRSBpZCA9ICdbMSwy KSc7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICInMjAxOS0wMS0wMSciCitMSU5F IDQ6ICAgVE8gJzIwMTktMDEtMDEnCisgICAgICAgICAgICAgXgorVVBEQVRFIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0CisgIEZST00gKCcyMDE4LTAzLTAxJyBB VCBUSU1FIFpPTkUgSU5URVJWQUwgJzInIEhPVVIpCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5h bWUgPSAnb25lXjQnCitXSEVSRSBpZCA9ICdbMSwyKSc7CistLSBVcGRhdGluZyB0aGUgbm9uLXJh bmdlIHBhcnQgb2YgdGhlIFBLOgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDItMTUnIFRPIE5VTEwKK1NFVCBpZCA9ICdbNiw3 KScKK1dIRVJFIGlkID0gJ1sxLDIpJzsKKy0tIFVQREFURSB3aXRoIG5vIFdIRVJFIGNsYXVzZQor VVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMzAtMDEtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gbmFtZSB8fCAnKic7CistLSBUT0RPOiBV UERBVEUgd2l0aCBnZW5lcmF0ZWQgY29sdW1ucyB0b28KK1NFTEVDVCAqIEZST00gZm9yX3BvcnRp b25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfZnJvbSBOVUxMUyBGSVJTVCwgdmFsaWRfdGls OworICBpZCAgIHwgICAgICAgIHZhbGlkX2Zyb20gICAgICAgIHwgICAgICAgIHZhbGlkX3RpbCAg ICAgICAgIHwgICBuYW1lICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBbMSwyKSB8IFR1ZSBKYW4gMDIg MDA6MDA6MDAgMjAxOCB8IFNhdCBGZWIgMDMgMDA6MDA6MDAgMjAxOCB8IG9uZV4yCisgWzEsMikg fCBTYXQgRmViIDAzIDAwOjAwOjAwIDIwMTggfCBUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTggfCBv bmVeMgorIFsyLDMpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgRnJpIEphbiAwNSAwMDow MDowMCAyMDE4IHwgdHdvXjIKKyBbMyw0KSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IFRo dSBNYXIgMDEgMDA6MDA6MDAgMjAxOCB8IHRocmVlXjIKKyBbMyw0KSB8IFRodSBNYXIgMDEgMDA6 MDA6MDAgMjAxOCB8IEZyaSBKdW4gMDEgMDA6MDA6MDAgMjAxOCB8IHRocmVlCisgWzMsNCkgfCBG cmkgSnVuIDAxIDAwOjAwOjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAgfCB0aHJl ZV4xCisgWzMsNCkgfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAgfCAgICAgICAgICAgICAgICAg ICAgICAgICAgfCB0aHJlZV4xKgorIFs0LDUpIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwg U3VuIEphbiAwMSAwMDowMDowMCAyMDE3IHwgZm91cl4xCisgWzQsNSkgfCBTdW4gSmFuIDAxIDAw OjAwOjAwIDIwMTcgfCBUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTggfCBmb3VyXjMKKyBbNCw1KSB8 IFRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCB8IFN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCB8IGZv dXJeMgorIFs1LDYpIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU3VuIEphbiAwMSAwMDow MDowMCAyMDE3IHwgZml2ZQorIFs1LDYpIHwgU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IHwgTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IHwgZml2ZV4zCisgWzUsNikgfCBNb24gSmFuIDAxIDAwOjAw OjAwIDIwMTggfCBUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkgfCBmaXZlXjMKKyBbNSw2KSB8IFR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSB8IFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCB8IGZpdmVe MworIFs1LDYpIHwgV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIHwgVHVlIEphbiAwMSAwMDowMDow MCAyMDMwIHwgZml2ZQorIFs1LDYpIHwgVHVlIEphbiAwMSAwMDowMDowMCAyMDMwIHwgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgZml2ZSoKKyBbNiw3KSB8IFRodSBGZWIgMTUgMDA6MDA6MDAg MjAxOCB8IFRodSBNYXIgMDEgMDg6MDE6MDAgMjAxOCB8IG9uZV4yCisgWzYsNykgfCBUaHUgTWFy IDAxIDA4OjAxOjAwIDIwMTggfCBUaHUgTWFyIDAxIDEwOjAwOjAwIDIwMTggfCBvbmVeMworIFs2 LDcpIHwgVGh1IE1hciAwMSAxMDowMDowMCAyMDE4IHwgU2F0IE1hciAwMyAwMDowMDowMCAyMDE4 IHwgb25lXjQKKyBbNiw3KSB8IFNhdCBNYXIgMDMgMDA6MDA6MDAgMjAxOCB8IFdlZCBBcHIgMDQg MDA6MDA6MDAgMjAxOCB8IG9uZV40CisoMjAgcm93cykKKworLS0KKy0tIERFTEVURSB0ZXN0cwor LS0KKy0tIERlbGV0aW5nIHdpdGggYSBtaXNzaW5nIGNvbHVtbiBmYWlscworREVMRVRFIEZST00g Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4 LTA2LTAxJyBUTyBOVUxMCitXSEVSRSBpZCA9ICdbNSw2KSc7CitFUlJPUjogIGNvbHVtbiBvciBw ZXJpb2QgImludmFsaWRfYXQiIG9mIHJlbGF0aW9uICJmb3JfcG9ydGlvbl9vZl90ZXN0IiBkb2Vz IG5vdCBleGlzdAorTElORSAyOiBGT1IgUE9SVElPTiBPRiBpbnZhbGlkX2F0IEZST00gJzIwMTgt MDYtMDEnIFRPIE5VTEwKKyAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRGVsZXRpbmcgd2l0 aCB0aW1lc3RhbXBzIHJldmVyc2VkIGZhaWxzCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAxOC0w MS0wMScKK1dIRVJFIGlkID0gJ1szLDQpJzsKK0VSUk9SOiAgcmFuZ2UgbG93ZXIgYm91bmQgbXVz dCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcmFuZ2UgdXBwZXIgYm91bmQKKy0tIERlbGV0aW5n IHdpdGggdGltZXN0YW1wcyBlcXVhbCBkb2VzIG5vdGhpbmcKK0RFTEVURSBGUk9NIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRP ICcyMDE4LTA0LTAxJworV0hFUkUgaWQgPSAnWzMsNCknOworLS0gRGVsZXRpbmcgd2l0aCBhIGNs b3NlZC9jbG9zZWQgdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAyMC0wNi0wMScKK1dI RVJFIGlkID0gJ1s1LDYpJzsKKy0tIERlbGV0aW5nIHdpdGggYSBjbG9zZWQvb3BlbiB0YXJnZXQK K0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTgtMDQtMDEnIFRPIE5VTEwKK1dIRVJFIGlkID0gJ1szLDQpJzsKKy0tIERlbGV0 aW5nIHdpdGggYW4gb3Blbi9jbG9zZWQgdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9v Zl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gJzIwMTgtMDItMDgn CitXSEVSRSBpZCA9ICdbMSwyKSc7CistLSBEZWxldGluZyB3aXRoIGFuIG9wZW4vb3BlbiB0YXJn ZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gTlVMTCBUTyBOVUxMCitXSEVSRSBpZCA9ICdbNiw3KSc7CistLSBERUxFVEUgd2l0 aCBubyBXSEVSRSBjbGF1c2UKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjUtMDEtMDEnIFRPIE5VTEw7CitTRUxFQ1QgKiBG Uk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2Zyb20gTlVMTFMgRklS U1QsIHZhbGlkX3RpbDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9mcm9tICAgICAgICB8ICAgICAg ICB2YWxpZF90aWwgICAgICAgICB8ICBuYW1lICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQorIFsxLDIpIHwg VGh1IEZlYiAwOCAwMDowMDowMCAyMDE4IHwgVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IHwgb25l XjIKKyBbMiwzKSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCB8IEZyaSBKYW4gMDUgMDA6MDA6 MDAgMjAxOCB8IHR3b14yCisgWzMsNCkgfCBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTggfCBUaHUg TWFyIDAxIDAwOjAwOjAwIDIwMTggfCB0aHJlZV4yCisgWzMsNCkgfCBUaHUgTWFyIDAxIDAwOjAw OjAwIDIwMTggfCBTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTggfCB0aHJlZQorIFs0LDUpIHwgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IHwgZm91cl4x CisgWzQsNSkgfCBTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTcgfCBUaHUgRmViIDAxIDAwOjAwOjAw IDIwMTggfCBmb3VyXjMKKyBbNCw1KSB8IFRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCB8IFN1biBB cHIgMDEgMDA6MDA6MDAgMjAxOCB8IGZvdXJeMgorIFs1LDYpIHwgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IHwgZml2ZQorIFs1LDYpIHwgU3VuIEph biAwMSAwMDowMDowMCAyMDE3IHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgZml2ZV4zCisg WzUsNikgfCBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTggfCBGcmkgSnVuIDAxIDAwOjAwOjAwIDIw MTggfCBmaXZlXjMKKyBbNSw2KSB8IE1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCB8IFdlZCBKYW4g MDEgMDA6MDA6MDAgMjAyNSB8IGZpdmUKKygxMSByb3dzKQorCistLSBVUERBVEUgLi4uIFJFVFVS TklORyByZXR1cm5zIG9ubHkgdGhlIHVwZGF0ZWQgdmFsdWVzIChub3QgdGhlIGluc2VydGVkIHNp ZGUgdmFsdWVzKQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTgtMDItMDEnIFRPICcyMDE4LTAyLTE1JworU0VUIG5hbWUgPSAndGhy ZWVeMycKK1dIRVJFIGlkID0gJ1szLDQpJworUkVUVVJOSU5HICo7CisgIGlkICAgfCAgICAgICAg dmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRfdGlsICAgICAgICAgfCAgbmFtZSAgIAor LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0KKyBbMyw0KSB8IFRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCB8IFRodSBG ZWIgMTUgMDA6MDA6MDAgMjAxOCB8IHRocmVlXjMKKygxIHJvdykKKworLS0gdGVzdCB0aGF0IHdl IHJ1biB0cmlnZ2VycyBvbiB0aGUgVVBEQVRFL0RFTEVURWQgcm93IGFuZCB0aGUgSU5TRVJUZWQg cm93cworQ1JFQVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIyKCkKK1JFVFVSTlMg dHJpZ2dlcgorQVMKKyQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJyUgJSBbJSwlKSBvZiBbJSwl KScsIFRHX1dIRU4sIFRHX09QLCBORVcudmFsaWRfZnJvbSwgTkVXLnZhbGlkX3RpbCwgT0xELnZh bGlkX2Zyb20sIE9MRC52YWxpZF90aWw7CisgIElGIFRHX09QID0gJ0RFTEVURScgVEhFTgorICAg IFJFVFVSTiBPTEQ7CisgIEVMU0UKKyAgICBSRVRVUk4gTkVXOworICBFTkQgSUY7CitFTkQ7Cisk JAorTEFOR1VBR0UgcGxwZ3NxbDsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9i ZWZvcmVfaW5zZXJ0CisgIEJFRk9SRSBJTlNFUlQgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBG T1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyMigp OworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2FmdGVyX2luc2VydAorICBBRlRF UiBJTlNFUlQgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VU RSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyMigpOworQ1JFQVRFIFRSSUdHRVIgdHJn X2Zvcl9wb3J0aW9uX29mX2JlZm9yZV91cGRhdGUKKyAgQkVGT1JFIFVQREFURSBPTiBmb3JfcG9y dGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0 aW9uX29mX3RyaWdnZXIyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYWZ0 ZXJfdXBkYXRlCisgIEFGVEVSIFVQREFURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBF QUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIyKCk7CitD UkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVmb3JlX2RlbGV0ZQorICBCRUZPUkUg REVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUg RlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcjIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19m b3JfcG9ydGlvbl9vZl9hZnRlcl9kZWxldGUKKyAgQUZURVIgREVMRVRFIE9OIGZvcl9wb3J0aW9u X29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25f b2ZfdHJpZ2dlcjIoKTsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDIxLTAxLTAxJyBUTyAnMjAyMi0wMS0wMScKK1NFVCBuYW1lID0g J2ZpdmVeNCcKK1dIRVJFIGlkID0gJ1s1LDYpJzsKK05PVElDRTogIEJFRk9SRSBVUERBVEUgW0Zy aSBKYW4gMDEgMDA6MDA6MDAgMjAyMSxTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIpIG9mIFtNb24g SnVuIDAxIDAwOjAwOjAwIDIwMjAsV2VkIEphbiAwMSAwMDowMDowMCAyMDI1KQorTk9USUNFOiAg QkVGT1JFIElOU0VSVCBbTW9uIEp1biAwMSAwMDowMDowMCAyMDIwLEZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSkgb2YgWzxOVUxMPiw8TlVMTD4pCitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFtTYXQg SmFuIDAxIDAwOjAwOjAwIDIwMjIsV2VkIEphbiAwMSAwMDowMDowMCAyMDI1KSBvZiBbPE5VTEw+ LDxOVUxMPikKK05PVElDRTogIEFGVEVSIElOU0VSVCBbTW9uIEp1biAwMSAwMDowMDowMCAyMDIw LEZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSkgb2YgWzxOVUxMPiw8TlVMTD4pCitOT1RJQ0U6ICBB RlRFUiBJTlNFUlQgW1NhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMixXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjUpIG9mIFs8TlVMTD4sPE5VTEw+KQorTk9USUNFOiAgQUZURVIgVVBEQVRFIFtGcmkgSmFu IDAxIDAwOjAwOjAwIDIwMjEsU2F0IEphbiAwMSAwMDowMDowMCAyMDIyKSBvZiBbTW9uIEp1biAw MSAwMDowMDowMCAyMDIwLFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSkKK0RFTEVURSBGUk9NIGZv cl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjMtMDEt MDEnIFRPICcyMDI0LTAxLTAxJworV0hFUkUgaWQgPSAnWzUsNiknOworTk9USUNFOiAgQkVGT1JF IERFTEVURSBbPE5VTEw+LDxOVUxMPikgb2YgW1NhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMixXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjUpCitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFtTYXQgSmFuIDAx IDAwOjAwOjAwIDIwMjIsU3VuIEphbiAwMSAwMDowMDowMCAyMDIzKSBvZiBbPE5VTEw+LDxOVUxM PikKK05PVElDRTogIEJFRk9SRSBJTlNFUlQgW01vbiBKYW4gMDEgMDA6MDA6MDAgMjAyNCxXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjUpIG9mIFs8TlVMTD4sPE5VTEw+KQorTk9USUNFOiAgQUZURVIg SU5TRVJUIFtTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIsU3VuIEphbiAwMSAwMDowMDowMCAyMDIz KSBvZiBbPE5VTEw+LDxOVUxMPikKK05PVElDRTogIEFGVEVSIElOU0VSVCBbTW9uIEphbiAwMSAw MDowMDowMCAyMDI0LFdlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSkgb2YgWzxOVUxMPiw8TlVMTD4p CitOT1RJQ0U6ICBBRlRFUiBERUxFVEUgWzxOVUxMPiw8TlVMTD4pIG9mIFtTYXQgSmFuIDAxIDAw OjAwOjAwIDIwMjIsV2VkIEphbiAwMSAwMDowMDowMCAyMDI1KQorU0VMRUNUICogRlJPTSBmb3Jf cG9ydGlvbl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9mcm9tIE5VTExTIEZJUlNULCB2YWxp ZF90aWw7CisgIGlkICAgfCAgICAgICAgdmFsaWRfZnJvbSAgICAgICAgfCAgICAgICAgdmFsaWRf dGlsICAgICAgICAgfCAgbmFtZSAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBbMSwyKSB8IFRodSBGZWIg MDggMDA6MDA6MDAgMjAxOCB8IFRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCB8IG9uZV4yCisgWzIs MykgfCBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTggfCBGcmkgSmFuIDA1IDAwOjAwOjAwIDIwMTgg fCB0d29eMgorIFszLDQpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwgVGh1IEZlYiAwMSAw MDowMDowMCAyMDE4IHwgdGhyZWVeMgorIFszLDQpIHwgVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4 IHwgVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IHwgdGhyZWVeMworIFszLDQpIHwgVGh1IEZlYiAx NSAwMDowMDowMCAyMDE4IHwgVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IHwgdGhyZWVeMgorIFsz LDQpIHwgVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IHwgU3VuIEFwciAwMSAwMDowMDowMCAyMDE4 IHwgdGhyZWUKKyBbNCw1KSB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1biBKYW4gMDEg MDA6MDA6MDAgMjAxNyB8IGZvdXJeMQorIFs0LDUpIHwgU3VuIEphbiAwMSAwMDowMDowMCAyMDE3 IHwgVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IHwgZm91cl4zCisgWzQsNSkgfCBUaHUgRmViIDAx IDAwOjAwOjAwIDIwMTggfCBTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTggfCBmb3VyXjIKKyBbNSw2 KSB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyB8 IGZpdmUKKyBbNSw2KSB8IFN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyB8IE1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCB8IGZpdmVeMworIFs1LDYpIHwgTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IHwg RnJpIEp1biAwMSAwMDowMDowMCAyMDE4IHwgZml2ZV4zCisgWzUsNikgfCBNb24gSnVuIDAxIDAw OjAwOjAwIDIwMjAgfCBGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEgfCBmaXZlCisgWzUsNikgfCBG cmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEgfCBTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIgfCBmaXZl XjQKKyBbNSw2KSB8IFNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiB8IFN1biBKYW4gMDEgMDA6MDA6 MDAgMjAyMyB8IGZpdmUKKyBbNSw2KSB8IE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAyNCB8IFdlZCBK YW4gMDEgMDA6MDA6MDAgMjAyNSB8IGZpdmUKKygxNiByb3dzKQorCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nhbml0eV9jaGVjay5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3Nhbml0eV9jaGVjay5vdXQKaW5kZXggMWU2YjI4MjIxMi4uMmZkNzA4ZTBmOCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zYW5pdHlfY2hlY2sub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2FuaXR5X2NoZWNrLm91dApAQCAtNDgsNiAr NDgsNyBAQCBmX3N0YXJ8ZgogZmFzdF9lbXA0MDAwfHQKIGZsb2F0NF90Ymx8ZgogZmxvYXQ4X3Ri bHxmCitmb3JfcG9ydGlvbl9vZl90ZXN0fHQKIGZ1bmNfaW5kZXhfaGVhcHx0CiBoYXNoX2Y4X2hl YXB8dAogaGFzaF9pNF9oZWFwfHQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IGJj NGFhMWQ2MDUuLjg2Y2MxMzViYWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAt NTgsNyArNTgsNyBAQCB0ZXN0OiBjcmVhdGVfaW5kZXggY3JlYXRlX2luZGV4X3NwZ2lzdCBjcmVh dGVfdmlldyBpbmRleF9pbmNsdWRpbmcgaW5kZXhfaW5jbHVkaQogIyAtLS0tLS0tLS0tCiAjIEFu b3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMKICMgLS0tLS0tLS0tLQotdGVzdDogY3JlYXRl X2FnZ3JlZ2F0ZSBjcmVhdGVfZnVuY3Rpb25fMyBjcmVhdGVfY2FzdCBjb25zdHJhaW50cyB0cmln Z2VycyBzZWxlY3QgaW5oZXJpdCB0eXBlZF90YWJsZSBwZXJpb2RzIHZhY3V1bSBkcm9wX2lmX2V4 aXN0cyB1cGRhdGFibGVfdmlld3Mgcm9sZWF0dHJpYnV0ZXMgY3JlYXRlX2FtIGhhc2hfZnVuYyBl cnJvcnMgaW5maW5pdGVfcmVjdXJzZQordGVzdDogY3JlYXRlX2FnZ3JlZ2F0ZSBjcmVhdGVfZnVu Y3Rpb25fMyBjcmVhdGVfY2FzdCBjb25zdHJhaW50cyB0cmlnZ2VycyBzZWxlY3QgaW5oZXJpdCB0 eXBlZF90YWJsZSBwZXJpb2RzIHZhY3V1bSBkcm9wX2lmX2V4aXN0cyB1cGRhdGFibGVfdmlld3Mg cm9sZWF0dHJpYnV0ZXMgY3JlYXRlX2FtIGhhc2hfZnVuYyBlcnJvcnMgaW5maW5pdGVfcmVjdXJz ZSBmb3JfcG9ydGlvbl9vZgogCiAjIC0tLS0tLS0tLS0KICMgc2FuaXR5X2NoZWNrIGRvZXMgYSB2 YWN1dW0sIGFmZmVjdGluZyB0aGUgc29ydCBvcmRlciBvZiBTRUxFQ1QgKgpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLjNiNTc1NWJhMDAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9mb3JfcG9ydGlvbl9vZi5zcWwKQEAgLTAsMCArMSw1NjIgQEAKKy0tIFRlc3RzIGZvciBVUERB VEUvREVMRVRFIEZPUiBQT1JUSU9OIE9GCisKKy0tIEZhaWxzIG9uIHRhYmxlcyB3aXRob3V0IGEg dGVtcG9yYWwgUEs6CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGlu dDRyYW5nZSBQUklNQVJZIEtFWSwKKyAgdmFsaWRfYXQgdHNyYW5nZSBOT1QgTlVMTCwKKyAgbmFt ZSB0ZXh0IE5PVCBOVUxMCispOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gTUFYVkFMVUUKK1NFVCBuYW1l ID0gJ2Zvbyc7CisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPIE1BWFZBTFVFOworCitEUk9QIFRBQkxF IGZvcl9wb3J0aW9uX29mX3Rlc3Q7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAo CisgIGlkIGludDRyYW5nZSBOT1QgTlVMTCwKKyAgdmFsaWRfYXQgdHNyYW5nZSBOT1QgTlVMTCwK KyAgbmFtZSB0ZXh0IE5PVCBOVUxMLAorCUNPTlNUUkFJTlQgZm9yX3BvcnRpb25fb2ZfcGsgUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRP IGZvcl9wb3J0aW9uX29mX3Rlc3QKK1ZBTFVFUworKCdbMSwyKScsICdbMjAxOC0wMS0wMiwyMDE4 LTAyLTAzKScsICdvbmUnKSwKKygnWzEsMiknLCAnWzIwMTgtMDItMDMsMjAxOC0wMy0wMyknLCAn b25lJyksCisoJ1sxLDIpJywgJ1syMDE4LTAzLTAzLDIwMTgtMDQtMDQpJywgJ29uZScpLAorKCdb MiwzKScsICdbMjAxOC0wMS0wMSwyMDE4LTAxLTA1KScsICd0d28nKSwKKygnWzMsNCknLCAnWzIw MTgtMDEtMDEsKScsICd0aHJlZScpLAorKCdbNCw1KScsICcoLDIwMTgtMDQtMDEpJywgJ2ZvdXIn KSwKKygnWzUsNiknLCAnKCwpJywgJ2ZpdmUnKQorOworCistLQorLS0gVVBEQVRFIHRlc3RzCist LQorCistLSBTZXR0aW5nIHdpdGggYSBtaXNzaW5nIGNvbHVtbiBmYWlscworVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0w MScgVE8gTUFYVkFMVUUKK1NFVCBuYW1lID0gJ2ZvbycKK1dIRVJFIGlkID0gJ1s1LDYpJzsKKwor LS0gU2V0dGluZyB0aGUgcmFuZ2UgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBNQVhWQUxVRQorU0VU IHZhbGlkX2F0ID0gJ1sxOTkwLTAxLTAxLDE5OTktMDEtMDEpJworV0hFUkUgaWQgPSAnWzUsNikn OworCistLSBTZXR0aW5nIHdpdGggdGltZXN0YW1wcyByZXZlcnNlZCBmYWlscworVVBEQVRFIGZv cl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYt MDEnIFRPICcyMDE4LTAxLTAxJworU0VUIG5hbWUgPSAndGhyZWVeMScKK1dIRVJFIGlkID0gJ1sz LDQpJzsKKworLS0gU2V0dGluZyB3aXRoIE1BWFZBTFVFIGxvd2VyIGJvdW5kIGZhaWxzCitVUERB VEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBNQVhW QUxVRSBUTyBOVUxMCitTRVQgbmFtZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsNCknOworCist LSBTZXR0aW5nIHdpdGggTUlOVkFMVUUgdXBwZXIgYm91bmQgZmFpbHMKK1VQREFURSBmb3JfcG9y dGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gTUlOVkFM VUUKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMyw0KSc7CisKKy0tIFNldHRpbmcg d2l0aCBhIHN1YnF1ZXJ5IGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAoU0VMRUNUICcyMDE4LTAxLTAxJykgVE8gJzIwMTgtMDYt MDEnCitTRVQgbmFtZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsNCknOworCistLSBTZXR0aW5n IHdpdGggYSBjb2x1bW4gZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NIGxvd2VyKHZhbGlkX2F0KSBUTyBNQVhWQUxVRQorU0VUIG5h bWUgPSAnbm9wZScKK1dIRVJFIGlkID0gJ1szLDQpJzsKKworLS0gU2V0dGluZyB3aXRoIHRpbWVz dGFtcHMgZXF1YWwgZG9lcyBub3RoaW5nCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gJzIwMTgtMDQtMDEnCitT RVQgbmFtZSA9ICd0aHJlZV4wJworV0hFUkUgaWQgPSAnWzMsNCknOworCistLSBVcGRhdGluZyBh IGZpbml0ZS9vcGVuIHBvcnRpb24gd2l0aCBhIGZpbml0ZS9vcGVuIHRhcmdldAorVVBEQVRFIGZv cl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYt MDEnIFRPIE1BWFZBTFVFCitTRVQgbmFtZSA9ICd0aHJlZV4xJworV0hFUkUgaWQgPSAnWzMsNCkn OworCistLSBVcGRhdGluZyBhIGZpbml0ZS9vcGVuIHBvcnRpb24gd2l0aCBhbiBvcGVuL2Zpbml0 ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NIE1JTlZBTFVFIFRPICcyMDE4LTAzLTAxJworU0VUIG5hbWUgPSAndGhyZWVeMicK K1dIRVJFIGlkID0gJ1szLDQpJzsKKworLS0gVXBkYXRpbmcgYW4gb3Blbi9maW5pdGUgcG9ydGlv biB3aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTUlOVkFMVUUgVE8gJzIwMTgtMDItMDEnCitT RVQgbmFtZSA9ICdmb3VyXjEnCitXSEVSRSBpZCA9ICdbNCw1KSc7CisKKy0tIFVwZGF0aW5nIGFu IG9wZW4vZmluaXRlIHBvcnRpb24gd2l0aCBhIGZpbml0ZS9vcGVuIHRhcmdldAorVVBEQVRFIGZv cl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTctMDEt MDEnIFRPIE1BWFZBTFVFCitTRVQgbmFtZSA9ICdmb3VyXjInCitXSEVSRSBpZCA9ICdbNCw1KSc7 CisKKy0tIFVwZGF0aW5nIGEgZmluaXRlL2Zpbml0ZSBwb3J0aW9uIHdpdGggYW4gZXhhY3QgZml0 CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxNy0wMS0wMScgVE8gJzIwMTgtMDItMDEnCitTRVQgbmFtZSA9ICdmb3VyXjMnCitXSEVS RSBpZCA9ICdbNCw1KSc7CisKKy0tIFVwZGF0aW5nIGFuIGVuY2xvc2VkIHNwYW4KK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE1JTlZBTFVF IFRPIE1BWFZBTFVFCitTRVQgbmFtZSA9ICd0d29eMicKK1dIRVJFIGlkID0gJ1syLDMpJzsKKwor LS0gVXBkYXRpbmcgYW4gb3Blbi9vcGVuIHBvcnRpb24gd2l0aCBhIGZpbml0ZS9maW5pdGUgdGFy Z2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOC0wMS0wMScgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdmaXZlXjInCitX SEVSRSBpZCA9ICdbNSw2KSc7CisKKy0tIFVwZGF0aW5nIGFuIGVuY2xvc2VkIHNwYW4gd2l0aCBz ZXBhcmF0ZSBwcm90cnVkaW5nIHNwYW5zCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gJzIwMjAtMDEtMDEnCitT RVQgbmFtZSA9ICdmaXZlXjMnCitXSEVSRSBpZCA9ICdbNSw2KSc7CisKKy0tIFVwZGF0aW5nIG11 bHRpcGxlIGVuY2xvc2VkIHNwYW5zCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1NFVCBuYW1lID0gJ29uZV4yJwor V0hFUkUgaWQgPSAnWzEsMiknOworCistLSBVcGRhdGluZyB3aXRoIGEgc2hpZnQvcmVkdWNlIGNv bmZsaWN0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQKKyAgRlJPTSAnMjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcxJyBIT1VSIFRP IE1JTlVURQorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV4zJworV0hFUkUgaWQg PSAnWzEsMiknOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQKKyAgRlJPTSAnMjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcyJyBI T1VSCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnb25lXjQnCitXSEVSRSBpZCA9ICdb MSwyKSc7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdAorICBGUk9NICgnMjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcyJyBIT1VS KQorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV40JworV0hFUkUgaWQgPSAnWzEs MiknOworCistLSBVcGRhdGluZyB0aGUgbm9uLXJhbmdlIHBhcnQgb2YgdGhlIFBLOgorVVBEQVRF IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgt MDItMTUnIFRPIE5VTEwKK1NFVCBpZCA9ICdbNiw3KScKK1dIRVJFIGlkID0gJ1sxLDIpJzsKKwor LS0gVVBEQVRFIHdpdGggbm8gV0hFUkUgY2xhdXNlCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAzMC0wMS0wMScgVE8gTlVMTAorU0VU IG5hbWUgPSBuYW1lIHx8ICcqJzsKKworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0 IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKworLS0KKy0tIERFTEVURSB0ZXN0cworLS0KKworLS0g RGVsZXRpbmcgd2l0aCBhIG1pc3NpbmcgY29sdW1uIGZhaWxzCitERUxFVEUgRlJPTSBmb3JfcG9y dGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiBpbnZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEn IFRPIE5VTEwKK1dIRVJFIGlkID0gJ1s1LDYpJzsKKworLS0gRGVsZXRpbmcgd2l0aCB0aW1lc3Rh bXBzIHJldmVyc2VkIGZhaWxzCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAxOC0wMS0wMScKK1dI RVJFIGlkID0gJ1szLDQpJzsKKworLS0gRGVsZXRpbmcgd2l0aCB0aW1lc3RhbXBzIGVxdWFsIGRv ZXMgbm90aGluZworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gJzIwMTgtMDQtMDEnCitXSEVSRSBpZCA9 ICdbMyw0KSc7CisKKy0tIERlbGV0aW5nIHdpdGggYSBjbG9zZWQvY2xvc2VkIHRhcmdldAorREVM RVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOC0wNi0wMScgVE8gJzIwMjAtMDYtMDEnCitXSEVSRSBpZCA9ICdbNSw2KSc7CisKKy0t IERlbGV0aW5nIHdpdGggYSBjbG9zZWQvb3BlbiB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRP IE5VTEwKK1dIRVJFIGlkID0gJ1szLDQpJzsKKworLS0gRGVsZXRpbmcgd2l0aCBhbiBvcGVuL2Ns b3NlZCB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyAnMjAxOC0wMi0wOCcKK1dIRVJFIGlkID0gJ1sxLDIp JzsKKworLS0gRGVsZXRpbmcgd2l0aCBhbiBvcGVuL29wZW4gdGFyZ2V0CitERUxFVEUgRlJPTSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8g TlVMTAorV0hFUkUgaWQgPSAnWzYsNyknOworCistLSBERUxFVEUgd2l0aCBubyBXSEVSRSBjbGF1 c2UKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMjUtMDEtMDEnIFRPIE5VTEw7CisKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRp b25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisKKy0tIFVQREFURSAuLi4gUkVUVVJO SU5HIHJldHVybnMgb25seSB0aGUgdXBkYXRlZCB2YWx1ZXMgKG5vdCB0aGUgaW5zZXJ0ZWQgc2lk ZSB2YWx1ZXMpCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOC0wMi0wMScgVE8gJzIwMTgtMDItMTUnCitTRVQgbmFtZSA9ICd0aHJl ZV4zJworV0hFUkUgaWQgPSAnWzMsNCknCitSRVRVUk5JTkcgKjsKKworLS0gdGVzdCB0aGF0IHdl IHJ1biB0cmlnZ2VycyBvbiB0aGUgVVBEQVRFL0RFTEVURWQgcm93IGFuZCB0aGUgSU5TRVJUZWQg cm93cworCitDUkVBVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpCitSRVRVUk5T IHRyaWdnZXIKK0FTCiskJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICclICUgJSBvZiAlJywgVEdf V0hFTiwgVEdfT1AsIE5FVy52YWxpZF9hdCwgT0xELnZhbGlkX2F0OworICBJRiBUR19PUCA9ICdE RUxFVEUnIFRIRU4KKyAgICBSRVRVUk4gT0xEOworICBFTFNFCisgICAgUkVUVVJOIE5FVzsKKyAg RU5EIElGOworRU5EOworJCQKK0xBTkdVQUdFIHBscGdzcWw7CisKK0NSRUFURSBUUklHR0VSIHRy Z19mb3JfcG9ydGlvbl9vZl9iZWZvcmVfaW5zZXJ0CisgIEJFRk9SRSBJTlNFUlQgT04gZm9yX3Bv cnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9y dGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYWZ0 ZXJfaW5zZXJ0CisgIEFGVEVSIElOU0VSVCBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBF QUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKK0NS RUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmVfdXBkYXRlCisgIEJFRk9SRSBV UERBVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBG VU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9y X3BvcnRpb25fb2ZfYWZ0ZXJfdXBkYXRlCisgIEFGVEVSIFVQREFURSBPTiBmb3JfcG9ydGlvbl9v Zl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29m X3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmVfZGVs ZXRlCisgIEJFRk9SRSBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBS T1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUg VFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYWZ0ZXJfZGVsZXRlCisgIEFGVEVSIERFTEVURSBP TiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9O IGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjEtMDEtMDEnIFRPICcyMDIyLTAxLTAx JworU0VUIG5hbWUgPSAnZml2ZV40JworV0hFUkUgaWQgPSAnWzUsNiknOworCitERUxFVEUgRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDIz LTAxLTAxJyBUTyAnMjAyNC0wMS0wMScKK1dIRVJFIGlkID0gJ1s1LDYpJzsKKworU0VMRUNUICog RlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKworLS0KKy0t IE5vdyByZS1ydW4gdGhlIHNhbWUgdGVzdHMgYnV0IHdpdGggYSBQRVJJT0QgaW5zdGVhZCBvZiBh IHJhbmdlOgorLS0KKworRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworCistLSBGYWls cyBvbiB0YWJsZXMgd2l0aG91dCBhIHRlbXBvcmFsIFBLOgorQ1JFQVRFIFRBQkxFIGZvcl9wb3J0 aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UgUFJJTUFSWSBLRVksCisgIHZhbGlkX2Zyb20g dGltZXN0YW1wLAorICB2YWxpZF90aWwgdGltZXN0YW1wLAorICBQRVJJT0QgRk9SIHZhbGlkX2F0 ICh2YWxpZF9mcm9tLCB2YWxpZF90aWwpLAorICBuYW1lIHRleHQgTk9UIE5VTEwKKyk7CisKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE4LTAxLTE1JyBUTyBNQVhWQUxVRQorU0VUIG5hbWUgPSAnZm9vJzsKKworREVMRVRFIEZST00g Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0w MS0xNScgVE8gTUFYVkFMVUU7CisKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDsKK0NS RUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdlIE5PVCBOVUxM LAorICB2YWxpZF9mcm9tIHRpbWVzdGFtcCwKKyAgdmFsaWRfdGlsIHRpbWVzdGFtcCwKKyAgUEVS SU9EIEZPUiB2YWxpZF9hdCAodmFsaWRfZnJvbSwgdmFsaWRfdGlsKSwKKyAgbmFtZSB0ZXh0IE5P VCBOVUxMLAorCUNPTlNUUkFJTlQgZm9yX3BvcnRpb25fb2ZfcGsgUFJJTUFSWSBLRVkgKGlkLCB2 YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29m X3Rlc3QKK1ZBTFVFUworKCdbMSwyKScsICcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDMnLCAnb25l JyksCisoJ1sxLDIpJywgJzIwMTgtMDItMDMnLCAnMjAxOC0wMy0wMycsICdvbmUnKSwKKygnWzEs MiknLCAnMjAxOC0wMy0wMycsICcyMDE4LTA0LTA0JywgJ29uZScpLAorKCdbMiwzKScsICcyMDE4 LTAxLTAxJywgJzIwMTgtMDEtMDUnLCAndHdvJyksCisoJ1szLDQpJywgJzIwMTgtMDEtMDEnLCBu dWxsLCAndGhyZWUnKSwKKygnWzQsNSknLCBudWxsLCAnMjAxOC0wNC0wMScsICdmb3VyJyksCiso J1s1LDYpJywgbnVsbCwgbnVsbCwgJ2ZpdmUnKQorOworCistLQorLS0gVVBEQVRFIHRlc3RzCist LQorCistLSBTZXR0aW5nIHdpdGggYSBtaXNzaW5nIGNvbHVtbiBmYWlscworVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0w MScgVE8gTUFYVkFMVUUKK1NFVCBuYW1lID0gJ2ZvbycKK1dIRVJFIGlkID0gJ1s1LDYpJzsKKwor LS0gU2V0dGluZyB0aGUgc3RhcnQgY29sdW1uIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTUFYVkFM VUUKK1NFVCB2YWxpZF9mcm9tID0gJzE5OTAtMDEtMDEnCitXSEVSRSBpZCA9ICdbNSw2KSc7CisK Ky0tIFNldHRpbmcgdGhlIGVuZCBjb2x1bW4gZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBNQVhWQUxV RQorU0VUIHZhbGlkX3RpbCA9ICcxOTk5LTAxLTAxJworV0hFUkUgaWQgPSAnWzUsNiknOworCist LSBTZXR0aW5nIHdpdGggdGltZXN0YW1wcyByZXZlcnNlZCBmYWlscworVVBEQVRFIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRP ICcyMDE4LTAxLTAxJworU0VUIG5hbWUgPSAndGhyZWVeMScKK1dIRVJFIGlkID0gJ1szLDQpJzsK KworLS0gU2V0dGluZyB3aXRoIGEgc3VicXVlcnkgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9v Zl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIChTRUxFQ1QgJzIwMTgtMDEtMDEn KSBUTyAnMjAxOC0wNi0wMScKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMyw0KSc7 CisKKy0tIFNldHRpbmcgd2l0aCBhIGNvbHVtbiBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gdmFsaWRfZnJvbSBUTyBNQVhWQUxV RQorU0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0gJ1szLDQpJzsKKworLS0gU2V0dGluZyB3 aXRoIHRpbWVzdGFtcHMgZXF1YWwgZG9lcyBub3RoaW5nCitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gJzIwMTgt MDQtMDEnCitTRVQgbmFtZSA9ICd0aHJlZV4wJworV0hFUkUgaWQgPSAnWzMsNCknOworCistLSBV cGRhdGluZyBhIGZpbml0ZS9vcGVuIHBvcnRpb24gd2l0aCBhIGZpbml0ZS9vcGVuIHRhcmdldAor VVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTgtMDYtMDEnIFRPIE1BWFZBTFVFCitTRVQgbmFtZSA9ICd0aHJlZV4xJworV0hFUkUgaWQg PSAnWzMsNCknOworCistLSBVcGRhdGluZyBhIGZpbml0ZS9vcGVuIHBvcnRpb24gd2l0aCBhbiBv cGVuL2Zpbml0ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NIE1JTlZBTFVFIFRPICcyMDE4LTAzLTAxJworU0VUIG5hbWUgPSAn dGhyZWVeMicKK1dIRVJFIGlkID0gJ1szLDQpJzsKKworLS0gVXBkYXRpbmcgYW4gb3Blbi9maW5p dGUgcG9ydGlvbiB3aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTUlOVkFMVUUgVE8gJzIwMTgt MDItMDEnCitTRVQgbmFtZSA9ICdmb3VyXjEnCitXSEVSRSBpZCA9ICdbNCw1KSc7CisKKy0tIFVw ZGF0aW5nIGFuIG9wZW4vZmluaXRlIHBvcnRpb24gd2l0aCBhIGZpbml0ZS9vcGVuIHRhcmdldAor VVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTctMDEtMDEnIFRPIE1BWFZBTFVFCitTRVQgbmFtZSA9ICdmb3VyXjInCitXSEVSRSBpZCA9 ICdbNCw1KSc7CisKKy0tIFVwZGF0aW5nIGEgZmluaXRlL2Zpbml0ZSBwb3J0aW9uIHdpdGggYW4g ZXhhY3QgZml0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gJzIwMTgtMDItMDEnCitTRVQgbmFtZSA9ICdmb3Vy XjMnCitXSEVSRSBpZCA9ICdbNCw1KSc7CisKKy0tIFVwZGF0aW5nIGFuIGVuY2xvc2VkIHNwYW4K K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N IE1JTlZBTFVFIFRPIE1BWFZBTFVFCitTRVQgbmFtZSA9ICd0d29eMicKK1dIRVJFIGlkID0gJ1sy LDMpJzsKKworLS0gVXBkYXRpbmcgYW4gb3Blbi9vcGVuIHBvcnRpb24gd2l0aCBhIGZpbml0ZS9m aW5pdGUgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMScgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdm aXZlXjInCitXSEVSRSBpZCA9ICdbNSw2KSc7CisKKy0tIFVwZGF0aW5nIGFuIGVuY2xvc2VkIHNw YW4gd2l0aCBzZXBhcmF0ZSBwcm90cnVkaW5nIHNwYW5zCitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gJzIwMjAt MDEtMDEnCitTRVQgbmFtZSA9ICdmaXZlXjMnCitXSEVSRSBpZCA9ICdbNSw2KSc7CisKKy0tIFVw ZGF0aW5nIG11bHRpcGxlIGVuY2xvc2VkIHNwYW5zCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1NFVCBuYW1lID0g J29uZV4yJworV0hFUkUgaWQgPSAnWzEsMiknOworCistLSBVcGRhdGluZyB3aXRoIGEgc2hpZnQv cmVkdWNlIGNvbmZsaWN0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQKKyAgRlJPTSAnMjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcx JyBIT1VSIFRPIE1JTlVURQorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV4zJwor V0hFUkUgaWQgPSAnWzEsMiknOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAnMjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVS VkFMICcyJyBIT1VSCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnb25lXjQnCitXSEVS RSBpZCA9ICdbMSwyKSc7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdAorICBGUk9NICgnMjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFM ICcyJyBIT1VSKQorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV40JworV0hFUkUg aWQgPSAnWzEsMiknOworCistLSBVcGRhdGluZyB0aGUgbm9uLXJhbmdlIHBhcnQgb2YgdGhlIFBL OgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMTgtMDItMTUnIFRPIE5VTEwKK1NFVCBpZCA9ICdbNiw3KScKK1dIRVJFIGlkID0gJ1sx LDIpJzsKKworLS0gVVBEQVRFIHdpdGggbm8gV0hFUkUgY2xhdXNlCitVUERBVEUgZm9yX3BvcnRp b25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAzMC0wMS0wMScgVE8g TlVMTAorU0VUIG5hbWUgPSBuYW1lIHx8ICcqJzsKKworLS0gVE9ETzogVVBEQVRFIHdpdGggZ2Vu ZXJhdGVkIGNvbHVtbnMgdG9vCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JE RVIgQlkgaWQsIHZhbGlkX2Zyb20gTlVMTFMgRklSU1QsIHZhbGlkX3RpbDsKKworLS0KKy0tIERF TEVURSB0ZXN0cworLS0KKworLS0gRGVsZXRpbmcgd2l0aCBhIG1pc3NpbmcgY29sdW1uIGZhaWxz CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiBpbnZhbGlk X2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIE5VTEwKK1dIRVJFIGlkID0gJ1s1LDYpJzsKKworLS0g RGVsZXRpbmcgd2l0aCB0aW1lc3RhbXBzIHJldmVyc2VkIGZhaWxzCitERUxFVEUgRlJPTSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAx JyBUTyAnMjAxOC0wMS0wMScKK1dIRVJFIGlkID0gJ1szLDQpJzsKKworLS0gRGVsZXRpbmcgd2l0 aCB0aW1lc3RhbXBzIGVxdWFsIGRvZXMgbm90aGluZworREVMRVRFIEZST00gZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gJzIw MTgtMDQtMDEnCitXSEVSRSBpZCA9ICdbMyw0KSc7CisKKy0tIERlbGV0aW5nIHdpdGggYSBjbG9z ZWQvY2xvc2VkIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMjAtMDYtMDEnCitXSEVS RSBpZCA9ICdbNSw2KSc7CisKKy0tIERlbGV0aW5nIHdpdGggYSBjbG9zZWQvb3BlbiB0YXJnZXQK K0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTgtMDQtMDEnIFRPIE5VTEwKK1dIRVJFIGlkID0gJ1szLDQpJzsKKworLS0gRGVs ZXRpbmcgd2l0aCBhbiBvcGVuL2Nsb3NlZCB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyAnMjAxOC0wMi0w OCcKK1dIRVJFIGlkID0gJ1sxLDIpJzsKKworLS0gRGVsZXRpbmcgd2l0aCBhbiBvcGVuL29wZW4g dGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVMTAorV0hFUkUgaWQgPSAnWzYsNyknOworCistLSBERUxF VEUgd2l0aCBubyBXSEVSRSBjbGF1c2UKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjUtMDEtMDEnIFRPIE5VTEw7CisKK1NF TEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfZnJvbSBO VUxMUyBGSVJTVCwgdmFsaWRfdGlsOworCistLSBVUERBVEUgLi4uIFJFVFVSTklORyByZXR1cm5z IG9ubHkgdGhlIHVwZGF0ZWQgdmFsdWVzIChub3QgdGhlIGluc2VydGVkIHNpZGUgdmFsdWVzKQor VVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTgtMDItMDEnIFRPICcyMDE4LTAyLTE1JworU0VUIG5hbWUgPSAndGhyZWVeMycKK1dIRVJF IGlkID0gJ1szLDQpJworUkVUVVJOSU5HICo7CisKKy0tIHRlc3QgdGhhdCB3ZSBydW4gdHJpZ2dl cnMgb24gdGhlIFVQREFURS9ERUxFVEVkIHJvdyBhbmQgdGhlIElOU0VSVGVkIHJvd3MKKworQ1JF QVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIyKCkKK1JFVFVSTlMgdHJpZ2dlcgor QVMKKyQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJyUgJSBbJSwlKSBvZiBbJSwlKScsIFRHX1dI RU4sIFRHX09QLCBORVcudmFsaWRfZnJvbSwgTkVXLnZhbGlkX3RpbCwgT0xELnZhbGlkX2Zyb20s IE9MRC52YWxpZF90aWw7CisgIElGIFRHX09QID0gJ0RFTEVURScgVEhFTgorICAgIFJFVFVSTiBP TEQ7CisgIEVMU0UKKyAgICBSRVRVUk4gTkVXOworICBFTkQgSUY7CitFTkQ7CiskJAorTEFOR1VB R0UgcGxwZ3NxbDsKKworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2JlZm9yZV9p bnNlcnQKKyAgQkVGT1JFIElOU0VSVCBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNI IFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIyKCk7CitDUkVB VEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYWZ0ZXJfaW5zZXJ0CisgIEFGVEVSIElOU0VS VCBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNU SU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3Bv cnRpb25fb2ZfYmVmb3JlX3VwZGF0ZQorICBCRUZPUkUgVVBEQVRFIE9OIGZvcl9wb3J0aW9uX29m X3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2Zf dHJpZ2dlcjIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRlcl91cGRh dGUKKyAgQUZURVIgVVBEQVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9X CisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcjIoKTsKK0NSRUFURSBU UklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmVfZGVsZXRlCisgIEJFRk9SRSBERUxFVEUg T04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElP TiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyMigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0 aW9uX29mX2FmdGVyX2RlbGV0ZQorICBBRlRFUiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVz dAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmln Z2VyMigpOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAyMS0wMS0wMScgVE8gJzIwMjItMDEtMDEnCitTRVQgbmFtZSA9ICdmaXZl XjQnCitXSEVSRSBpZCA9ICdbNSw2KSc7CisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjMtMDEtMDEnIFRPICcyMDI0LTAx LTAxJworV0hFUkUgaWQgPSAnWzUsNiknOworCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29m X3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2Zyb20gTlVMTFMgRklSU1QsIHZhbGlkX3RpbDsKLS0g CjIuMjYuMgoK --00000000000029ba9305c63ba927--